@visactor/vchart-extension 2.1.3 → 2.1.4-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +17 -14
- package/build/index.min.js +1 -1
- package/cjs/charts/3d/enum.js +2 -1
- package/cjs/charts/axis-3d/band-axis.js +1 -2
- package/cjs/charts/conversion-funnel/conversion-funnel-transformer.js +15 -13
- package/cjs/charts/conversion-funnel/conversion-funnel-transformer.js.map +1 -1
- package/cjs/components/histogram-regression-line/type.js +1 -2
- package/cjs/components/map-label/type.js +2 -1
- package/cjs/components/series-break/index.js +2 -1
- package/cjs/components/series-break/util.js +1 -2
- package/esm/charts/3d/enum.js +2 -1
- package/esm/charts/axis-3d/band-axis.js +1 -2
- package/esm/charts/conversion-funnel/conversion-funnel-transformer.js +15 -13
- package/esm/charts/conversion-funnel/conversion-funnel-transformer.js.map +1 -1
- package/esm/components/histogram-regression-line/type.js +1 -2
- package/esm/components/map-label/type.js +2 -1
- package/esm/components/series-break/index.js +2 -1
- package/esm/components/series-break/util.js +1 -2
- package/package.json +4 -4
package/cjs/charts/3d/enum.js
CHANGED
|
@@ -24,4 +24,5 @@ function(SeriesType3dForThemeEnum) {
|
|
|
24
24
|
SeriesType3dForThemeEnum.bar3d_horizontal = "bar3d_horizontal", SeriesType3dForThemeEnum.bar3d_vertical = "bar3d_vertical",
|
|
25
25
|
SeriesType3dForThemeEnum.bar3d_stack = "bar3d_stack", SeriesType3dForThemeEnum.rangeColumn3d_horizontal = "rangeColumn3d_horizontal",
|
|
26
26
|
SeriesType3dForThemeEnum.rangeColumn3d_vertical = "rangeColumn3d_vertical";
|
|
27
|
-
}(SeriesType3dForThemeEnum = exports.SeriesType3dForThemeEnum || (exports.SeriesType3dForThemeEnum = {}));
|
|
27
|
+
}(SeriesType3dForThemeEnum = exports.SeriesType3dForThemeEnum || (exports.SeriesType3dForThemeEnum = {}));
|
|
28
|
+
//# sourceMappingURL=enum.js.map
|
|
@@ -12,5 +12,4 @@ const vchart_1 = require("@visactor/vchart"), theme_1 = require("./theme"), vcha
|
|
|
12
12
|
}), (0, vchart_2.mixin)(AxisCls, axis_3d_mixin_1.Axis3dMixin);
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
-
exports.registerCartesianBandAxis3d = registerCartesianBandAxis3d;
|
|
16
|
-
//# sourceMappingURL=band-axis.js.map
|
|
15
|
+
exports.registerCartesianBandAxis3d = registerCartesianBandAxis3d;
|
|
@@ -18,9 +18,10 @@ const vchart_1 = require("@visactor/vchart"), vchart_2 = require("@visactor/vcha
|
|
|
18
18
|
|
|
19
19
|
class ConversionFunnelChartSpecTransformer extends vchart_1.FunnelChartSpecTransformer {
|
|
20
20
|
transformSpec(spec) {
|
|
21
|
+
var _a, _b, _c;
|
|
21
22
|
const {conversionArrow: conversionArrow, extensionMark: extensionMark = [], funnelBackground: funnelBackground} = spec;
|
|
22
23
|
if (conversionArrow && conversionArrow.arrows && conversionArrow.arrows.length) {
|
|
23
|
-
const marks = addArrowMark(conversionArrow);
|
|
24
|
+
const marks = addArrowMark(conversionArrow, null === (_c = null === (_b = null === (_a = this._option) || void 0 === _a ? void 0 : _a.getTheme) || void 0 === _b ? void 0 : _b.call(_a, "series", "funnel")) || void 0 === _c ? void 0 : _c.conversionArrow);
|
|
24
25
|
marks && marks.length && extensionMark.push(...marks);
|
|
25
26
|
}
|
|
26
27
|
if (funnelBackground && funnelBackground.visible) {
|
|
@@ -36,27 +37,28 @@ class ConversionFunnelChartSpecTransformer extends vchart_1.FunnelChartSpecTrans
|
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
function addArrowMark(arrowSpec) {
|
|
40
|
-
const {arrows: arrows} = arrowSpec, style = __rest(arrowSpec, [ "arrows" ]), leftArrows = arrows.filter((arrow => "left" === arrow.position)), rightGroup = computeArrows(arrows.filter((arrow => "right" === arrow.position)), style), leftGroup = computeArrows(leftArrows, style), result = [];
|
|
40
|
+
function addArrowMark(arrowSpec, theme) {
|
|
41
|
+
const {arrows: arrows} = arrowSpec, style = __rest(arrowSpec, [ "arrows" ]), leftArrows = arrows.filter((arrow => "left" === arrow.position)), rightGroup = computeArrows(arrows.filter((arrow => "right" === arrow.position)), style, theme), leftGroup = computeArrows(leftArrows, style, theme), result = [];
|
|
41
42
|
return rightGroup && (rightGroup.name = "arrowRight", result.push(rightGroup)),
|
|
42
43
|
leftGroup && (leftGroup.name = "arrowLeft", result.push(leftGroup)), result;
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
function computeArrows(arrows, style) {
|
|
46
|
+
function computeArrows(arrows, style, theme) {
|
|
47
|
+
var _a, _b, _c;
|
|
46
48
|
if (0 === (null == arrows ? void 0 : arrows.length)) return null;
|
|
47
49
|
const {line: line, symbol: symbol, text: text, margin: margin} = style, result = [], rootGroup = {
|
|
48
50
|
type: "group",
|
|
49
51
|
zIndex: vchart_1.LayoutZIndex.Mark + 1,
|
|
50
52
|
children: []
|
|
51
|
-
}, lineMark = generateArrowLineSpec(line, margin);
|
|
53
|
+
}, lineMark = generateArrowLineSpec(line, margin, null === (_a = null == theme ? void 0 : theme.line) || void 0 === _a ? void 0 : _a.style);
|
|
52
54
|
lineMark && result.push(lineMark);
|
|
53
|
-
const arrowMark = generateArrowSymbolSpec(symbol, margin);
|
|
55
|
+
const arrowMark = generateArrowSymbolSpec(symbol, margin, null === (_b = null == theme ? void 0 : theme.symbol) || void 0 === _b ? void 0 : _b.style);
|
|
54
56
|
arrowMark && result.push(arrowMark);
|
|
55
|
-
const textMark = generateArrowTextSpec(text, margin);
|
|
57
|
+
const textMark = generateArrowTextSpec(text, margin, null === (_c = null == theme ? void 0 : theme.text) || void 0 === _c ? void 0 : _c.style);
|
|
56
58
|
return textMark && result.push(textMark), rootGroup.children = result, rootGroup;
|
|
57
59
|
}
|
|
58
60
|
|
|
59
|
-
function generateArrowLineSpec(line = {}, margin) {
|
|
61
|
+
function generateArrowLineSpec(line = {}, margin, themeStyle = {}) {
|
|
60
62
|
const {style: style = {}} = line, rest = __rest(line, [ "style" ]), renderable = (arrow, ctx) => {
|
|
61
63
|
var _a, _b;
|
|
62
64
|
const {from: from, to: to} = arrow, {vchart: vchart} = ctx, data = null === (_b = null === (_a = null == vchart ? void 0 : vchart.getChart()) || void 0 === _a ? void 0 : _a.getSeriesData()) || void 0 === _b ? void 0 : _b.latestData;
|
|
@@ -67,7 +69,7 @@ function generateArrowLineSpec(line = {}, margin) {
|
|
|
67
69
|
interactive: !1
|
|
68
70
|
}, rest), {
|
|
69
71
|
dataKey: arrow => `${arrow.id}`,
|
|
70
|
-
style: Object.assign(Object.assign(Object.assign({}, constants_1.DEFAULT_ARROW_MARK_STYLE), style), {
|
|
72
|
+
style: Object.assign(Object.assign(Object.assign(Object.assign({}, constants_1.DEFAULT_ARROW_MARK_STYLE), themeStyle), style), {
|
|
71
73
|
renderable: renderable,
|
|
72
74
|
points: (arrow, ctx) => {
|
|
73
75
|
if (!renderable(arrow, ctx)) return [];
|
|
@@ -78,14 +80,14 @@ function generateArrowLineSpec(line = {}, margin) {
|
|
|
78
80
|
});
|
|
79
81
|
}
|
|
80
82
|
|
|
81
|
-
function generateArrowSymbolSpec(symbol = {}, margin) {
|
|
83
|
+
function generateArrowSymbolSpec(symbol = {}, margin, themeStyle = {}) {
|
|
82
84
|
const {style: style = {}} = symbol, rest = __rest(symbol, [ "style" ]);
|
|
83
85
|
return Object.assign(Object.assign({
|
|
84
86
|
type: "symbol",
|
|
85
87
|
interactive: !1,
|
|
86
88
|
dataKey: arrow => `${arrow.id}`
|
|
87
89
|
}, rest), {
|
|
88
|
-
style: Object.assign(Object.assign(Object.assign({}, constants_1.DEFAULT_ARROW_SYMBOL_MARK_STYLE), style), {
|
|
90
|
+
style: Object.assign(Object.assign(Object.assign(Object.assign({}, constants_1.DEFAULT_ARROW_SYMBOL_MARK_STYLE), themeStyle), style), {
|
|
89
91
|
x: (arrow, ctx) => {
|
|
90
92
|
var _a, _b;
|
|
91
93
|
let points = arrow.layout.points;
|
|
@@ -101,7 +103,7 @@ function generateArrowSymbolSpec(symbol = {}, margin) {
|
|
|
101
103
|
});
|
|
102
104
|
}
|
|
103
105
|
|
|
104
|
-
function generateArrowTextSpec(text = {}, margin) {
|
|
106
|
+
function generateArrowTextSpec(text = {}, margin, themeStyle = {}) {
|
|
105
107
|
const {style: style = {}, formatMethod: formatMethod, textMargin: textMargin = 4} = text, rest = __rest(text, [ "style", "formatMethod", "textMargin" ]);
|
|
106
108
|
return Object.assign(Object.assign({
|
|
107
109
|
type: "text",
|
|
@@ -109,7 +111,7 @@ function generateArrowTextSpec(text = {}, margin) {
|
|
|
109
111
|
interactive: !1,
|
|
110
112
|
animation: !1
|
|
111
113
|
}, rest), {
|
|
112
|
-
style: Object.assign(Object.assign(Object.assign({}, constants_1.DEFAULT_ARROW_TEXT_MARK_STYLE), {
|
|
114
|
+
style: Object.assign(Object.assign(Object.assign(Object.assign({}, constants_1.DEFAULT_ARROW_TEXT_MARK_STYLE), themeStyle), {
|
|
113
115
|
text: (arrow, ctx) => {
|
|
114
116
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
115
117
|
const {text: textContent} = arrow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/charts/conversion-funnel/conversion-funnel-transformer.ts"],"names":[],"mappings":"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","file":"conversion-funnel-transformer.js","sourcesContent":["import type { IPointLike } from '@visactor/vchart';\nimport type { IExtensionGroupMarkSpec, IExtensionMarkSpec } from '@visactor/vchart';\nimport type { IConversionFunnelSpec, IConversionFunnelChartSpecBase, Arrow } from './interface';\nimport type { ParsedArrow } from './arrow-data-transform';\nimport { LayoutZIndex, FunnelChartSpecTransformer } from '@visactor/vchart';\nimport { isFunction } from '@visactor/vchart';\nimport {\n DEFAULT_ARROW_MARK_STYLE,\n DEFAULT_ARROW_SYMBOL_MARK_STYLE,\n DEFAULT_ARROW_TEXT_MARK_STYLE,\n DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE\n} from './constants';\n\nexport class ConversionFunnelChartSpecTransformer extends FunnelChartSpecTransformer<IConversionFunnelChartSpecBase> {\n transformSpec(spec: IConversionFunnelChartSpecBase): void {\n const { conversionArrow, extensionMark = [], funnelBackground } = spec;\n if (conversionArrow && conversionArrow.arrows && conversionArrow.arrows.length) {\n const marks = addArrowMark(conversionArrow);\n if (marks && marks.length) {\n extensionMark.push(...marks);\n }\n }\n if (funnelBackground && funnelBackground.visible) {\n const mark = addFunnelBackgroundMark(funnelBackground);\n if (mark) {\n extensionMark.push(mark);\n }\n }\n spec.extensionMark = extensionMark;\n super.transformSpec(spec);\n }\n\n _getDefaultSeriesSpec(spec: IConversionFunnelChartSpecBase) {\n const seriesSpec = super._getDefaultSeriesSpec(spec);\n (seriesSpec as IConversionFunnelChartSpecBase).conversionArrow = spec.conversionArrow;\n (seriesSpec as IConversionFunnelChartSpecBase).funnelBackground = spec.funnelBackground;\n return seriesSpec;\n }\n}\n\n/** Arrow Related */\nfunction addArrowMark(arrowSpec: IConversionFunnelSpec['conversionArrow']) {\n const { arrows, ...style } = arrowSpec;\n const leftArrows = arrows.filter(arrow => arrow.position === 'left');\n const rightArrows = arrows.filter(arrow => arrow.position === 'right');\n\n const rightGroup = computeArrows(rightArrows, style);\n const leftGroup = computeArrows(leftArrows, style);\n\n const result = [];\n if (rightGroup) {\n rightGroup.name = 'arrowRight';\n result.push(rightGroup);\n }\n if (leftGroup) {\n leftGroup.name = 'arrowLeft';\n result.push(leftGroup);\n }\n\n return result;\n}\n\nfunction computeArrows(arrows: Arrow[], style: Omit<IConversionFunnelSpec['conversionArrow'], 'arrows'>) {\n if (arrows?.length === 0) {\n return null;\n }\n\n const { line, symbol, text, margin } = style;\n\n const result: IExtensionMarkSpec<'polygon' | 'symbol' | 'text'>[] = [];\n\n const rootGroup: IExtensionGroupMarkSpec = {\n type: 'group' as any,\n zIndex: LayoutZIndex.Mark + 1,\n children: []\n };\n const lineMark = generateArrowLineSpec(line, margin);\n if (lineMark) {\n result.push(lineMark);\n }\n const arrowMark = generateArrowSymbolSpec(symbol, margin);\n if (arrowMark) {\n result.push(arrowMark);\n }\n const textMark = generateArrowTextSpec(text, margin);\n if (textMark) {\n result.push(textMark);\n }\n rootGroup.children = result;\n return rootGroup;\n}\n\nfunction generateArrowLineSpec(line: IConversionFunnelSpec['conversionArrow']['line'] = {}, margin?: number) {\n const { style = {}, ...rest } = line;\n const renderable = (arrow: any, ctx: any) => {\n const { from, to } = arrow;\n const { vchart } = ctx;\n const data = vchart?.getChart()?.getSeriesData()?.latestData;\n if (!data) {\n false;\n }\n if (to > data.length - 1 || from > data.length - 1) {\n return false;\n }\n return true;\n };\n\n return {\n type: 'polygon',\n interactive: false,\n ...rest,\n dataKey: arrow => `${arrow.id}`,\n style: {\n ...DEFAULT_ARROW_MARK_STYLE,\n ...style,\n renderable,\n points: (arrow: any, ctx: any) => {\n if (!renderable(arrow, ctx)) {\n return [];\n }\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points;\n }\n }\n } as IExtensionMarkSpec<'polygon'>;\n}\n\nfunction generateArrowSymbolSpec(symbol: IConversionFunnelSpec['conversionArrow']['symbol'] = {}, margin?: number) {\n const { style = {}, ...rest } = symbol;\n return {\n type: 'symbol',\n interactive: false,\n dataKey: arrow => `${arrow.id}`,\n ...rest,\n style: {\n ...DEFAULT_ARROW_SYMBOL_MARK_STYLE,\n ...style,\n\n x: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[points?.length - 1]?.x ?? NaN;\n },\n y: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[points?.length - 1]?.y ?? NaN;\n },\n angle: (arrow: any) => (arrow.position === 'left' ? 90 : -90)\n }\n } as IExtensionMarkSpec<'symbol'>;\n}\n\nfunction generateArrowTextSpec(text: IConversionFunnelSpec['conversionArrow']['text'] = {}, margin?: number) {\n const { style = {}, formatMethod, textMargin = 4, ...rest } = text;\n\n return {\n type: 'text',\n dataKey: arrow => `${arrow.id}`,\n interactive: false,\n animation: false,\n ...rest,\n style: {\n ...DEFAULT_ARROW_TEXT_MARK_STYLE,\n text: (arrow: any, ctx: any) => {\n const { text: textContent } = arrow;\n let displayTextContent: ReturnType<typeof formatMethod> = textContent;\n\n if (isFunction(formatMethod)) {\n const { vchart } = ctx;\n const { from, to } = arrow;\n const { field } = arrow.context;\n const rawData = vchart?.getChart()?.getSeriesData()?.latestData ?? [];\n const viewData = vchart?.getChart()?.getAllSeries()[0]?.getViewData()?.latestData ?? [];\n\n const fromData = viewData.find((datum: any) => datum[field] === rawData[from][field]);\n const toData = viewData.find((datum: any) => datum[field] === rawData[to][field]);\n\n displayTextContent = formatMethod(textContent, { arrow, from: fromData, to: toData });\n }\n return displayTextContent;\n },\n x: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[1]?.x + (arrow.position === 'left' ? -textMargin : textMargin) ?? NaN;\n },\n y: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return (points[1]?.y + points[2]?.y) / 2 ?? NaN;\n },\n textAlign: (arrow: any) => (arrow.position === 'left' ? 'right' : 'left'),\n textBaseline: 'middle',\n ...style\n }\n } as IExtensionMarkSpec<'text'>;\n}\n\nfunction prepareArrowPoints(arrow: ParsedArrow, ctx: any, margin?: number) {\n const { vchart } = ctx;\n const { from, to } = arrow;\n const { field } = arrow.context;\n const rawData = vchart?.getChart()?.getSeriesData()?.latestData;\n const viewData = vchart?.getChart()?.getAllSeries()[0]?.getViewData()?.latestData;\n\n let points: IPointLike[] = [];\n\n if (rawData && rawData.length) {\n const fromDatum = viewData.find((datum: any) => datum[field] === rawData[from][field]);\n const toDatum = viewData.find((datum: any) => datum[field] === rawData[to][field]);\n const firstDatum = viewData[0];\n\n if (fromDatum && toDatum && firstDatum) {\n const fromPoints = ctx.getPoints(fromDatum);\n const toPoints = ctx.getPoints(toDatum);\n const firstPoints = ctx.getPoints(firstDatum);\n points = computeArrowPoints(arrow, fromPoints, toPoints, firstPoints, margin);\n arrow.layout.points = points;\n }\n }\n return points;\n}\n\nfunction computeArrowPoints(\n arrow: ParsedArrow,\n fromPoints: IPointLike[],\n toPoints: IPointLike[],\n firstPoints: IPointLike[],\n margin = 12\n) {\n const { layout, distance, position } = arrow;\n const { level, fromIndex, toIndex, fromTotal, toTotal } = layout;\n\n const isRight = position === 'right';\n\n const fromTop = isRight ? fromPoints[1] : fromPoints[0];\n const fromBottom = isRight ? fromPoints[2] : fromPoints[3];\n\n const fromHeight = Math.abs(fromTop.y - fromBottom.y);\n\n const toTop = isRight ? toPoints[1] : toPoints[0];\n const toBottom = isRight ? toPoints[2] : toPoints[3];\n const toHeight = Math.abs(toTop.y - toBottom.y);\n\n const firstTop = isRight ? firstPoints[1] : firstPoints[0];\n\n const fromOffset = fromHeight / (fromTotal + 1);\n const toOffset = toHeight / (toTotal + 1);\n\n const fromY = fromTop.y + fromOffset * (fromIndex + 1);\n const toY = toTop.y + toOffset * (toIndex + 1);\n\n const sign = isRight ? -1 : 1;\n\n const points = [\n { x: fromTop.x - margin * sign, y: fromY },\n { x: firstTop.x - (margin + (level + 1) * distance) * sign, y: fromY },\n {\n x: firstTop.x - (margin + (level + 1) * distance) * sign,\n y: toY\n },\n {\n x: toTop.x - margin * sign,\n y: toY\n }\n ];\n return points;\n}\n\n/** Funnel Background Related */\nfunction addFunnelBackgroundMark(funnelBackground: IConversionFunnelSpec['funnelBackground']) {\n const { style = {}, ...rest } = funnelBackground;\n return {\n type: 'rect',\n ...rest,\n dataIndex: 0,\n zIndex: 0,\n style: {\n ...DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE,\n ...style,\n x: 0,\n y: (datum, ctx: any) => {\n const points = ctx.getPoints(datum);\n const tl = points[0];\n return tl.y;\n },\n width: (datum, ctx: any) => {\n const region = ctx.getRegion();\n const { width } = region.getLayoutRect();\n return width;\n },\n height: (datum, ctx: any) => {\n const points = ctx.getPoints(datum);\n const tl = points[0];\n const bl = points[3];\n return bl.y - tl.y;\n }\n }\n } as IExtensionMarkSpec<'rect'>;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/charts/conversion-funnel/conversion-funnel-transformer.ts"],"names":[],"mappings":"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","file":"conversion-funnel-transformer.js","sourcesContent":["import type { IPointLike } from '@visactor/vchart';\nimport type { IExtensionGroupMarkSpec, IExtensionMarkSpec } from '@visactor/vchart';\nimport type { IConversionFunnelSpec, IConversionFunnelChartSpecBase, Arrow } from './interface';\nimport type { ParsedArrow } from './arrow-data-transform';\nimport { LayoutZIndex, FunnelChartSpecTransformer } from '@visactor/vchart';\nimport { isFunction } from '@visactor/vchart';\nimport {\n DEFAULT_ARROW_MARK_STYLE,\n DEFAULT_ARROW_SYMBOL_MARK_STYLE,\n DEFAULT_ARROW_TEXT_MARK_STYLE,\n DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE\n} from './constants';\n\nexport class ConversionFunnelChartSpecTransformer extends FunnelChartSpecTransformer<IConversionFunnelChartSpecBase> {\n transformSpec(spec: IConversionFunnelChartSpecBase): void {\n const { conversionArrow, extensionMark = [], funnelBackground } = spec;\n if (conversionArrow && conversionArrow.arrows && conversionArrow.arrows.length) {\n const arrowTheme = (this._option?.getTheme?.('series', 'funnel') as any)?.conversionArrow;\n const marks = addArrowMark(conversionArrow, arrowTheme);\n if (marks && marks.length) {\n extensionMark.push(...marks);\n }\n }\n if (funnelBackground && funnelBackground.visible) {\n const mark = addFunnelBackgroundMark(funnelBackground);\n if (mark) {\n extensionMark.push(mark);\n }\n }\n spec.extensionMark = extensionMark;\n super.transformSpec(spec);\n }\n\n _getDefaultSeriesSpec(spec: IConversionFunnelChartSpecBase) {\n const seriesSpec = super._getDefaultSeriesSpec(spec);\n (seriesSpec as IConversionFunnelChartSpecBase).conversionArrow = spec.conversionArrow;\n (seriesSpec as IConversionFunnelChartSpecBase).funnelBackground = spec.funnelBackground;\n return seriesSpec;\n }\n}\n\n/** Arrow Related */\ninterface IArrowTheme {\n line?: { style?: Record<string, any> };\n symbol?: { style?: Record<string, any> };\n text?: { style?: Record<string, any> };\n}\n\nfunction addArrowMark(arrowSpec: IConversionFunnelSpec['conversionArrow'], theme?: IArrowTheme) {\n const { arrows, ...style } = arrowSpec;\n const leftArrows = arrows.filter(arrow => arrow.position === 'left');\n const rightArrows = arrows.filter(arrow => arrow.position === 'right');\n\n const rightGroup = computeArrows(rightArrows, style, theme);\n const leftGroup = computeArrows(leftArrows, style, theme);\n\n const result = [];\n if (rightGroup) {\n rightGroup.name = 'arrowRight';\n result.push(rightGroup);\n }\n if (leftGroup) {\n leftGroup.name = 'arrowLeft';\n result.push(leftGroup);\n }\n\n return result;\n}\n\nfunction computeArrows(\n arrows: Arrow[],\n style: Omit<IConversionFunnelSpec['conversionArrow'], 'arrows'>,\n theme?: IArrowTheme\n) {\n if (arrows?.length === 0) {\n return null;\n }\n\n const { line, symbol, text, margin } = style;\n\n const result: IExtensionMarkSpec<'polygon' | 'symbol' | 'text'>[] = [];\n\n const rootGroup: IExtensionGroupMarkSpec = {\n type: 'group' as any,\n zIndex: LayoutZIndex.Mark + 1,\n children: []\n };\n const lineMark = generateArrowLineSpec(line, margin, theme?.line?.style);\n if (lineMark) {\n result.push(lineMark);\n }\n const arrowMark = generateArrowSymbolSpec(symbol, margin, theme?.symbol?.style);\n if (arrowMark) {\n result.push(arrowMark);\n }\n const textMark = generateArrowTextSpec(text, margin, theme?.text?.style);\n if (textMark) {\n result.push(textMark);\n }\n rootGroup.children = result;\n return rootGroup;\n}\n\nfunction generateArrowLineSpec(\n line: IConversionFunnelSpec['conversionArrow']['line'] = {},\n margin?: number,\n themeStyle: Record<string, any> = {}\n) {\n const { style = {}, ...rest } = line;\n const renderable = (arrow: any, ctx: any) => {\n const { from, to } = arrow;\n const { vchart } = ctx;\n const data = vchart?.getChart()?.getSeriesData()?.latestData;\n if (!data) {\n false;\n }\n if (to > data.length - 1 || from > data.length - 1) {\n return false;\n }\n return true;\n };\n\n return {\n type: 'polygon',\n interactive: false,\n ...rest,\n dataKey: arrow => `${arrow.id}`,\n style: {\n ...DEFAULT_ARROW_MARK_STYLE,\n ...themeStyle,\n ...style,\n renderable,\n points: (arrow: any, ctx: any) => {\n if (!renderable(arrow, ctx)) {\n return [];\n }\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points;\n }\n }\n } as IExtensionMarkSpec<'polygon'>;\n}\n\nfunction generateArrowSymbolSpec(\n symbol: IConversionFunnelSpec['conversionArrow']['symbol'] = {},\n margin?: number,\n themeStyle: Record<string, any> = {}\n) {\n const { style = {}, ...rest } = symbol;\n return {\n type: 'symbol',\n interactive: false,\n dataKey: arrow => `${arrow.id}`,\n ...rest,\n style: {\n ...DEFAULT_ARROW_SYMBOL_MARK_STYLE,\n ...themeStyle,\n ...style,\n\n x: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[points?.length - 1]?.x ?? NaN;\n },\n y: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[points?.length - 1]?.y ?? NaN;\n },\n angle: (arrow: any) => (arrow.position === 'left' ? 90 : -90)\n }\n } as IExtensionMarkSpec<'symbol'>;\n}\n\nfunction generateArrowTextSpec(\n text: IConversionFunnelSpec['conversionArrow']['text'] = {},\n margin?: number,\n themeStyle: Record<string, any> = {}\n) {\n const { style = {}, formatMethod, textMargin = 4, ...rest } = text;\n\n return {\n type: 'text',\n dataKey: arrow => `${arrow.id}`,\n interactive: false,\n animation: false,\n ...rest,\n style: {\n ...DEFAULT_ARROW_TEXT_MARK_STYLE,\n ...themeStyle,\n text: (arrow: any, ctx: any) => {\n const { text: textContent } = arrow;\n let displayTextContent: ReturnType<typeof formatMethod> = textContent;\n\n if (isFunction(formatMethod)) {\n const { vchart } = ctx;\n const { from, to } = arrow;\n const { field } = arrow.context;\n const rawData = vchart?.getChart()?.getSeriesData()?.latestData ?? [];\n const viewData = vchart?.getChart()?.getAllSeries()[0]?.getViewData()?.latestData ?? [];\n\n const fromData = viewData.find((datum: any) => datum[field] === rawData[from][field]);\n const toData = viewData.find((datum: any) => datum[field] === rawData[to][field]);\n\n displayTextContent = formatMethod(textContent, { arrow, from: fromData, to: toData });\n }\n return displayTextContent;\n },\n x: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[1]?.x + (arrow.position === 'left' ? -textMargin : textMargin) ?? NaN;\n },\n y: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return (points[1]?.y + points[2]?.y) / 2 ?? NaN;\n },\n textAlign: (arrow: any) => (arrow.position === 'left' ? 'right' : 'left'),\n textBaseline: 'middle',\n ...style\n }\n } as IExtensionMarkSpec<'text'>;\n}\n\nfunction prepareArrowPoints(arrow: ParsedArrow, ctx: any, margin?: number) {\n const { vchart } = ctx;\n const { from, to } = arrow;\n const { field } = arrow.context;\n const rawData = vchart?.getChart()?.getSeriesData()?.latestData;\n const viewData = vchart?.getChart()?.getAllSeries()[0]?.getViewData()?.latestData;\n\n let points: IPointLike[] = [];\n\n if (rawData && rawData.length) {\n const fromDatum = viewData.find((datum: any) => datum[field] === rawData[from][field]);\n const toDatum = viewData.find((datum: any) => datum[field] === rawData[to][field]);\n const firstDatum = viewData[0];\n\n if (fromDatum && toDatum && firstDatum) {\n const fromPoints = ctx.getPoints(fromDatum);\n const toPoints = ctx.getPoints(toDatum);\n const firstPoints = ctx.getPoints(firstDatum);\n points = computeArrowPoints(arrow, fromPoints, toPoints, firstPoints, margin);\n arrow.layout.points = points;\n }\n }\n return points;\n}\n\nfunction computeArrowPoints(\n arrow: ParsedArrow,\n fromPoints: IPointLike[],\n toPoints: IPointLike[],\n firstPoints: IPointLike[],\n margin = 12\n) {\n const { layout, distance, position } = arrow;\n const { level, fromIndex, toIndex, fromTotal, toTotal } = layout;\n\n const isRight = position === 'right';\n\n const fromTop = isRight ? fromPoints[1] : fromPoints[0];\n const fromBottom = isRight ? fromPoints[2] : fromPoints[3];\n\n const fromHeight = Math.abs(fromTop.y - fromBottom.y);\n\n const toTop = isRight ? toPoints[1] : toPoints[0];\n const toBottom = isRight ? toPoints[2] : toPoints[3];\n const toHeight = Math.abs(toTop.y - toBottom.y);\n\n const firstTop = isRight ? firstPoints[1] : firstPoints[0];\n\n const fromOffset = fromHeight / (fromTotal + 1);\n const toOffset = toHeight / (toTotal + 1);\n\n const fromY = fromTop.y + fromOffset * (fromIndex + 1);\n const toY = toTop.y + toOffset * (toIndex + 1);\n\n const sign = isRight ? -1 : 1;\n\n const points = [\n { x: fromTop.x - margin * sign, y: fromY },\n { x: firstTop.x - (margin + (level + 1) * distance) * sign, y: fromY },\n {\n x: firstTop.x - (margin + (level + 1) * distance) * sign,\n y: toY\n },\n {\n x: toTop.x - margin * sign,\n y: toY\n }\n ];\n return points;\n}\n\n/** Funnel Background Related */\nfunction addFunnelBackgroundMark(funnelBackground: IConversionFunnelSpec['funnelBackground']) {\n const { style = {}, ...rest } = funnelBackground;\n return {\n type: 'rect',\n ...rest,\n dataIndex: 0,\n zIndex: 0,\n style: {\n ...DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE,\n ...style,\n x: 0,\n y: (datum, ctx: any) => {\n const points = ctx.getPoints(datum);\n const tl = points[0];\n return tl.y;\n },\n width: (datum, ctx: any) => {\n const region = ctx.getRegion();\n const { width } = region.getLayoutRect();\n return width;\n },\n height: (datum, ctx: any) => {\n const points = ctx.getPoints(datum);\n const tl = points[0];\n const bl = points[3];\n return bl.y - tl.y;\n }\n }\n } as IExtensionMarkSpec<'rect'>;\n}\n"]}
|
|
@@ -45,4 +45,5 @@ Object.defineProperty(exports, "getSeriesBreakConfig", {
|
|
|
45
45
|
get: function() {
|
|
46
46
|
return util_1.appendSeriesBreakConfig;
|
|
47
47
|
}
|
|
48
|
-
}), __exportStar(require("./type"), exports), __exportStar(require("./constant"), exports);
|
|
48
|
+
}), __exportStar(require("./type"), exports), __exportStar(require("./constant"), exports);
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
package/esm/charts/3d/enum.js
CHANGED
|
@@ -32,4 +32,5 @@ export var SeriesType3dForThemeEnum;
|
|
|
32
32
|
SeriesType3dForThemeEnum.bar3d_horizontal = "bar3d_horizontal", SeriesType3dForThemeEnum.bar3d_vertical = "bar3d_vertical",
|
|
33
33
|
SeriesType3dForThemeEnum.bar3d_stack = "bar3d_stack", SeriesType3dForThemeEnum.rangeColumn3d_horizontal = "rangeColumn3d_horizontal",
|
|
34
34
|
SeriesType3dForThemeEnum.rangeColumn3d_vertical = "rangeColumn3d_vertical";
|
|
35
|
-
}(SeriesType3dForThemeEnum || (SeriesType3dForThemeEnum = {}));
|
|
35
|
+
}(SeriesType3dForThemeEnum || (SeriesType3dForThemeEnum = {}));
|
|
36
|
+
//# sourceMappingURL=enum.js.map
|
|
@@ -12,5 +12,4 @@ export const registerCartesianBandAxis3d = () => {
|
|
|
12
12
|
AxisCls.builtInTheme = Object.assign(Object.assign({}, AxisCls.builtInTheme), {
|
|
13
13
|
axisZ: Object.assign(Object.assign({}, CartesianBandAxis.builtInTheme.axisX), axisZ)
|
|
14
14
|
}), mixin(AxisCls, Axis3dMixin);
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=band-axis.js.map
|
|
15
|
+
};
|
|
@@ -16,9 +16,10 @@ import { DEFAULT_ARROW_MARK_STYLE, DEFAULT_ARROW_SYMBOL_MARK_STYLE, DEFAULT_ARRO
|
|
|
16
16
|
|
|
17
17
|
export class ConversionFunnelChartSpecTransformer extends FunnelChartSpecTransformer {
|
|
18
18
|
transformSpec(spec) {
|
|
19
|
+
var _a, _b, _c;
|
|
19
20
|
const {conversionArrow: conversionArrow, extensionMark: extensionMark = [], funnelBackground: funnelBackground} = spec;
|
|
20
21
|
if (conversionArrow && conversionArrow.arrows && conversionArrow.arrows.length) {
|
|
21
|
-
const marks = addArrowMark(conversionArrow);
|
|
22
|
+
const marks = addArrowMark(conversionArrow, null === (_c = null === (_b = null === (_a = this._option) || void 0 === _a ? void 0 : _a.getTheme) || void 0 === _b ? void 0 : _b.call(_a, "series", "funnel")) || void 0 === _c ? void 0 : _c.conversionArrow);
|
|
22
23
|
marks && marks.length && extensionMark.push(...marks);
|
|
23
24
|
}
|
|
24
25
|
if (funnelBackground && funnelBackground.visible) {
|
|
@@ -34,27 +35,28 @@ export class ConversionFunnelChartSpecTransformer extends FunnelChartSpecTransfo
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
function addArrowMark(arrowSpec) {
|
|
38
|
-
const {arrows: arrows} = arrowSpec, style = __rest(arrowSpec, [ "arrows" ]), leftArrows = arrows.filter((arrow => "left" === arrow.position)), rightGroup = computeArrows(arrows.filter((arrow => "right" === arrow.position)), style), leftGroup = computeArrows(leftArrows, style), result = [];
|
|
38
|
+
function addArrowMark(arrowSpec, theme) {
|
|
39
|
+
const {arrows: arrows} = arrowSpec, style = __rest(arrowSpec, [ "arrows" ]), leftArrows = arrows.filter((arrow => "left" === arrow.position)), rightGroup = computeArrows(arrows.filter((arrow => "right" === arrow.position)), style, theme), leftGroup = computeArrows(leftArrows, style, theme), result = [];
|
|
39
40
|
return rightGroup && (rightGroup.name = "arrowRight", result.push(rightGroup)),
|
|
40
41
|
leftGroup && (leftGroup.name = "arrowLeft", result.push(leftGroup)), result;
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
function computeArrows(arrows, style) {
|
|
44
|
+
function computeArrows(arrows, style, theme) {
|
|
45
|
+
var _a, _b, _c;
|
|
44
46
|
if (0 === (null == arrows ? void 0 : arrows.length)) return null;
|
|
45
47
|
const {line: line, symbol: symbol, text: text, margin: margin} = style, result = [], rootGroup = {
|
|
46
48
|
type: "group",
|
|
47
49
|
zIndex: LayoutZIndex.Mark + 1,
|
|
48
50
|
children: []
|
|
49
|
-
}, lineMark = generateArrowLineSpec(line, margin);
|
|
51
|
+
}, lineMark = generateArrowLineSpec(line, margin, null === (_a = null == theme ? void 0 : theme.line) || void 0 === _a ? void 0 : _a.style);
|
|
50
52
|
lineMark && result.push(lineMark);
|
|
51
|
-
const arrowMark = generateArrowSymbolSpec(symbol, margin);
|
|
53
|
+
const arrowMark = generateArrowSymbolSpec(symbol, margin, null === (_b = null == theme ? void 0 : theme.symbol) || void 0 === _b ? void 0 : _b.style);
|
|
52
54
|
arrowMark && result.push(arrowMark);
|
|
53
|
-
const textMark = generateArrowTextSpec(text, margin);
|
|
55
|
+
const textMark = generateArrowTextSpec(text, margin, null === (_c = null == theme ? void 0 : theme.text) || void 0 === _c ? void 0 : _c.style);
|
|
54
56
|
return textMark && result.push(textMark), rootGroup.children = result, rootGroup;
|
|
55
57
|
}
|
|
56
58
|
|
|
57
|
-
function generateArrowLineSpec(line = {}, margin) {
|
|
59
|
+
function generateArrowLineSpec(line = {}, margin, themeStyle = {}) {
|
|
58
60
|
const {style: style = {}} = line, rest = __rest(line, [ "style" ]), renderable = (arrow, ctx) => {
|
|
59
61
|
var _a, _b;
|
|
60
62
|
const {from: from, to: to} = arrow, {vchart: vchart} = ctx, data = null === (_b = null === (_a = null == vchart ? void 0 : vchart.getChart()) || void 0 === _a ? void 0 : _a.getSeriesData()) || void 0 === _b ? void 0 : _b.latestData;
|
|
@@ -65,7 +67,7 @@ function generateArrowLineSpec(line = {}, margin) {
|
|
|
65
67
|
interactive: !1
|
|
66
68
|
}, rest), {
|
|
67
69
|
dataKey: arrow => `${arrow.id}`,
|
|
68
|
-
style: Object.assign(Object.assign(Object.assign({}, DEFAULT_ARROW_MARK_STYLE), style), {
|
|
70
|
+
style: Object.assign(Object.assign(Object.assign(Object.assign({}, DEFAULT_ARROW_MARK_STYLE), themeStyle), style), {
|
|
69
71
|
renderable: renderable,
|
|
70
72
|
points: (arrow, ctx) => {
|
|
71
73
|
if (!renderable(arrow, ctx)) return [];
|
|
@@ -76,14 +78,14 @@ function generateArrowLineSpec(line = {}, margin) {
|
|
|
76
78
|
});
|
|
77
79
|
}
|
|
78
80
|
|
|
79
|
-
function generateArrowSymbolSpec(symbol = {}, margin) {
|
|
81
|
+
function generateArrowSymbolSpec(symbol = {}, margin, themeStyle = {}) {
|
|
80
82
|
const {style: style = {}} = symbol, rest = __rest(symbol, [ "style" ]);
|
|
81
83
|
return Object.assign(Object.assign({
|
|
82
84
|
type: "symbol",
|
|
83
85
|
interactive: !1,
|
|
84
86
|
dataKey: arrow => `${arrow.id}`
|
|
85
87
|
}, rest), {
|
|
86
|
-
style: Object.assign(Object.assign(Object.assign({}, DEFAULT_ARROW_SYMBOL_MARK_STYLE), style), {
|
|
88
|
+
style: Object.assign(Object.assign(Object.assign(Object.assign({}, DEFAULT_ARROW_SYMBOL_MARK_STYLE), themeStyle), style), {
|
|
87
89
|
x: (arrow, ctx) => {
|
|
88
90
|
var _a, _b;
|
|
89
91
|
let points = arrow.layout.points;
|
|
@@ -99,7 +101,7 @@ function generateArrowSymbolSpec(symbol = {}, margin) {
|
|
|
99
101
|
});
|
|
100
102
|
}
|
|
101
103
|
|
|
102
|
-
function generateArrowTextSpec(text = {}, margin) {
|
|
104
|
+
function generateArrowTextSpec(text = {}, margin, themeStyle = {}) {
|
|
103
105
|
const {style: style = {}, formatMethod: formatMethod, textMargin: textMargin = 4} = text, rest = __rest(text, [ "style", "formatMethod", "textMargin" ]);
|
|
104
106
|
return Object.assign(Object.assign({
|
|
105
107
|
type: "text",
|
|
@@ -107,7 +109,7 @@ function generateArrowTextSpec(text = {}, margin) {
|
|
|
107
109
|
interactive: !1,
|
|
108
110
|
animation: !1
|
|
109
111
|
}, rest), {
|
|
110
|
-
style: Object.assign(Object.assign(Object.assign({}, DEFAULT_ARROW_TEXT_MARK_STYLE), {
|
|
112
|
+
style: Object.assign(Object.assign(Object.assign(Object.assign({}, DEFAULT_ARROW_TEXT_MARK_STYLE), themeStyle), {
|
|
111
113
|
text: (arrow, ctx) => {
|
|
112
114
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
113
115
|
const {text: textContent} = arrow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/charts/conversion-funnel/conversion-funnel-transformer.ts"],"names":[],"mappings":";;;;;;;;;;;AAIA,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,+BAA+B,EAC/B,6BAA6B,EAC7B,oCAAoC,EACrC,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,oCAAqC,SAAQ,0BAA0D;IAClH,aAAa,CAAC,IAAoC;QAChD,MAAM,EAAE,eAAe,EAAE,aAAa,GAAG,EAAE,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QACvE,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE;YAC9E,MAAM,KAAK,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;YAC5C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;gBACzB,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;aAC9B;SACF;QACD,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,OAAO,EAAE;YAChD,MAAM,IAAI,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;YACvD,IAAI,IAAI,EAAE;gBACR,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B;SACF;QACD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,qBAAqB,CAAC,IAAoC;QACxD,MAAM,UAAU,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACpD,UAA6C,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QACrF,UAA6C,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACxF,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAGD,SAAS,YAAY,CAAC,SAAmD;IACvE,MAAM,EAAE,MAAM,KAAe,SAAS,EAAnB,KAAK,UAAK,SAAS,EAAhC,UAAoB,CAAY,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,UAAU,EAAE;QACd,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACzB;IACD,IAAI,SAAS,EAAE;QACb,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACxB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,MAAe,EAAE,KAA+D;IACrG,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,MAAK,CAAC,EAAE;QACxB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAE7C,MAAM,MAAM,GAAwD,EAAE,CAAC;IAEvE,MAAM,SAAS,GAA4B;QACzC,IAAI,EAAE,OAAc;QACpB,MAAM,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC;QAC7B,QAAQ,EAAE,EAAE;KACb,CAAC;IACF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,QAAQ,EAAE;QACZ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvB;IACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,IAAI,SAAS,EAAE;QACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACxB;IACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,QAAQ,EAAE;QACZ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvB;IACD,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAyD,EAAE,EAAE,MAAe;IACzG,MAAM,EAAE,KAAK,GAAG,EAAE,KAAc,IAAI,EAAb,IAAI,UAAK,IAAI,EAA9B,SAAuB,CAAO,CAAC;IACrC,MAAM,UAAU,GAAG,CAAC,KAAU,EAAE,GAAQ,EAAE,EAAE;;QAC1C,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QACvB,MAAM,IAAI,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,0CAAE,aAAa,EAAE,0CAAE,UAAU,CAAC;QAC7D,IAAI,CAAC,IAAI,EAAE;YACT,KAAK,CAAC;SACP;QACD,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAClD,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,8BACL,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,KAAK,IACf,IAAI,KACP,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,EAC/B,KAAK,gDACA,wBAAwB,GACxB,KAAK,KACR,UAAU,EACV,MAAM,EAAE,CAAC,KAAU,EAAE,GAAQ,EAAE,EAAE;gBAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;oBAC3B,OAAO,EAAE,CAAC;iBACX;gBACD,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAChD,OAAO,MAAM,CAAC;YAChB,CAAC,MAE6B,CAAC;AACrC,CAAC;AAED,SAAS,uBAAuB,CAAC,SAA6D,EAAE,EAAE,MAAe;IAC/G,MAAM,EAAE,KAAK,GAAG,EAAE,KAAc,MAAM,EAAf,IAAI,UAAK,MAAM,EAAhC,SAAuB,CAAS,CAAC;IACvC,OAAO,8BACL,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,KAAK,EAClB,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,IAC5B,IAAI,KACP,KAAK,gDACA,+BAA+B,GAC/B,KAAK,KAER,CAAC,EAAE,CAAC,KAAU,EAAE,GAAQ,EAAE,EAAE;;gBAC1B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAChD,OAAO,MAAA,MAAA,MAAM,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,IAAG,CAAC,CAAC,0CAAE,CAAC,mCAAI,GAAG,CAAC;YAC9C,CAAC,EACD,CAAC,EAAE,CAAC,KAAU,EAAE,GAAQ,EAAE,EAAE;;gBAC1B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAChD,OAAO,MAAA,MAAA,MAAM,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,IAAG,CAAC,CAAC,0CAAE,CAAC,mCAAI,GAAG,CAAC;YAC9C,CAAC,EACD,KAAK,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAEhC,CAAC;AACpC,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAyD,EAAE,EAAE,MAAe;IACzG,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,YAAY,EAAE,UAAU,GAAG,CAAC,KAAc,IAAI,EAAb,IAAI,UAAK,IAAI,EAA5D,uCAAqD,CAAO,CAAC;IAEnE,OAAO,8BACL,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,EAC/B,WAAW,EAAE,KAAK,EAClB,SAAS,EAAE,KAAK,IACb,IAAI,KACP,KAAK,gDACA,6BAA6B,KAChC,IAAI,EAAE,CAAC,KAAU,EAAE,GAAQ,EAAE,EAAE;;gBAC7B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;gBACpC,IAAI,kBAAkB,GAAoC,WAAW,CAAC;gBAEtE,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE;oBAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;oBACvB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;oBAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;oBAChC,MAAM,OAAO,GAAG,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,0CAAE,aAAa,EAAE,0CAAE,UAAU,mCAAI,EAAE,CAAC;oBACtE,MAAM,QAAQ,GAAG,MAAA,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,0CAAE,YAAY,GAAG,CAAC,CAAC,0CAAE,WAAW,EAAE,0CAAE,UAAU,mCAAI,EAAE,CAAC;oBAExF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBAElF,kBAAkB,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;iBACvF;gBACD,OAAO,kBAAkB,CAAC;YAC5B,CAAC,EACD,CAAC,EAAE,CAAC,KAAU,EAAE,GAAQ,EAAE,EAAE;;gBAC1B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAChD,OAAO,MAAA,CAAA,MAAA,MAAM,CAAC,CAAC,CAAC,0CAAE,CAAC,IAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,mCAAI,GAAG,CAAC;YACtF,CAAC,EACD,CAAC,EAAE,CAAC,KAAU,EAAE,GAAQ,EAAE,EAAE;;gBAC1B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAChD,OAAO,MAAA,CAAC,CAAA,MAAA,MAAM,CAAC,CAAC,CAAC,0CAAE,CAAC,KAAG,MAAA,MAAM,CAAC,CAAC,CAAC,0CAAE,CAAC,CAAA,CAAC,GAAG,CAAC,mCAAI,GAAG,CAAC;YAClD,CAAC,EACD,SAAS,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EACzE,YAAY,EAAE,QAAQ,KACnB,KAAK,IAEmB,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAkB,EAAE,GAAQ,EAAE,MAAe;;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACvB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAChC,MAAM,OAAO,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,0CAAE,aAAa,EAAE,0CAAE,UAAU,CAAC;IAChE,MAAM,QAAQ,GAAG,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,0CAAE,YAAY,GAAG,CAAC,CAAC,0CAAE,WAAW,EAAE,0CAAE,UAAU,CAAC;IAElF,IAAI,MAAM,GAAiB,EAAE,CAAC;IAE9B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;QAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACvF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE/B,IAAI,SAAS,IAAI,OAAO,IAAI,UAAU,EAAE;YACtC,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAC9E,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;SAC9B;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAkB,EAClB,UAAwB,EACxB,QAAsB,EACtB,WAAyB,EACzB,MAAM,GAAG,EAAE;IAEX,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC7C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEjE,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO,CAAC;IAErC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAE1C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG;QACb,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE;QAC1C,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE;QACtE;YACE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI;YACxD,CAAC,EAAE,GAAG;SACP;QACD;YACE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI;YAC1B,CAAC,EAAE,GAAG;SACP;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD,SAAS,uBAAuB,CAAC,gBAA2D;IAC1F,MAAM,EAAE,KAAK,GAAG,EAAE,KAAc,gBAAgB,EAAzB,IAAI,UAAK,gBAAgB,EAA1C,SAAuB,CAAmB,CAAC;IACjD,OAAO,8BACL,IAAI,EAAE,MAAM,IACT,IAAI,KACP,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE,CAAC,EACT,KAAK,gDACA,oCAAoC,GACpC,KAAK,KACR,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAQ,EAAE,EAAE;gBACrB,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC,CAAC,CAAC;YACd,CAAC,EACD,KAAK,EAAE,CAAC,KAAK,EAAE,GAAQ,EAAE,EAAE;gBACzB,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;gBAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzC,OAAO,KAAK,CAAC;YACf,CAAC,EACD,MAAM,EAAE,CAAC,KAAK,EAAE,GAAQ,EAAE,EAAE;gBAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,CAAC,MAE0B,CAAC;AAClC,CAAC","file":"conversion-funnel-transformer.js","sourcesContent":["import type { IPointLike } from '@visactor/vchart';\nimport type { IExtensionGroupMarkSpec, IExtensionMarkSpec } from '@visactor/vchart';\nimport type { IConversionFunnelSpec, IConversionFunnelChartSpecBase, Arrow } from './interface';\nimport type { ParsedArrow } from './arrow-data-transform';\nimport { LayoutZIndex, FunnelChartSpecTransformer } from '@visactor/vchart';\nimport { isFunction } from '@visactor/vchart';\nimport {\n DEFAULT_ARROW_MARK_STYLE,\n DEFAULT_ARROW_SYMBOL_MARK_STYLE,\n DEFAULT_ARROW_TEXT_MARK_STYLE,\n DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE\n} from './constants';\n\nexport class ConversionFunnelChartSpecTransformer extends FunnelChartSpecTransformer<IConversionFunnelChartSpecBase> {\n transformSpec(spec: IConversionFunnelChartSpecBase): void {\n const { conversionArrow, extensionMark = [], funnelBackground } = spec;\n if (conversionArrow && conversionArrow.arrows && conversionArrow.arrows.length) {\n const marks = addArrowMark(conversionArrow);\n if (marks && marks.length) {\n extensionMark.push(...marks);\n }\n }\n if (funnelBackground && funnelBackground.visible) {\n const mark = addFunnelBackgroundMark(funnelBackground);\n if (mark) {\n extensionMark.push(mark);\n }\n }\n spec.extensionMark = extensionMark;\n super.transformSpec(spec);\n }\n\n _getDefaultSeriesSpec(spec: IConversionFunnelChartSpecBase) {\n const seriesSpec = super._getDefaultSeriesSpec(spec);\n (seriesSpec as IConversionFunnelChartSpecBase).conversionArrow = spec.conversionArrow;\n (seriesSpec as IConversionFunnelChartSpecBase).funnelBackground = spec.funnelBackground;\n return seriesSpec;\n }\n}\n\n/** Arrow Related */\nfunction addArrowMark(arrowSpec: IConversionFunnelSpec['conversionArrow']) {\n const { arrows, ...style } = arrowSpec;\n const leftArrows = arrows.filter(arrow => arrow.position === 'left');\n const rightArrows = arrows.filter(arrow => arrow.position === 'right');\n\n const rightGroup = computeArrows(rightArrows, style);\n const leftGroup = computeArrows(leftArrows, style);\n\n const result = [];\n if (rightGroup) {\n rightGroup.name = 'arrowRight';\n result.push(rightGroup);\n }\n if (leftGroup) {\n leftGroup.name = 'arrowLeft';\n result.push(leftGroup);\n }\n\n return result;\n}\n\nfunction computeArrows(arrows: Arrow[], style: Omit<IConversionFunnelSpec['conversionArrow'], 'arrows'>) {\n if (arrows?.length === 0) {\n return null;\n }\n\n const { line, symbol, text, margin } = style;\n\n const result: IExtensionMarkSpec<'polygon' | 'symbol' | 'text'>[] = [];\n\n const rootGroup: IExtensionGroupMarkSpec = {\n type: 'group' as any,\n zIndex: LayoutZIndex.Mark + 1,\n children: []\n };\n const lineMark = generateArrowLineSpec(line, margin);\n if (lineMark) {\n result.push(lineMark);\n }\n const arrowMark = generateArrowSymbolSpec(symbol, margin);\n if (arrowMark) {\n result.push(arrowMark);\n }\n const textMark = generateArrowTextSpec(text, margin);\n if (textMark) {\n result.push(textMark);\n }\n rootGroup.children = result;\n return rootGroup;\n}\n\nfunction generateArrowLineSpec(line: IConversionFunnelSpec['conversionArrow']['line'] = {}, margin?: number) {\n const { style = {}, ...rest } = line;\n const renderable = (arrow: any, ctx: any) => {\n const { from, to } = arrow;\n const { vchart } = ctx;\n const data = vchart?.getChart()?.getSeriesData()?.latestData;\n if (!data) {\n false;\n }\n if (to > data.length - 1 || from > data.length - 1) {\n return false;\n }\n return true;\n };\n\n return {\n type: 'polygon',\n interactive: false,\n ...rest,\n dataKey: arrow => `${arrow.id}`,\n style: {\n ...DEFAULT_ARROW_MARK_STYLE,\n ...style,\n renderable,\n points: (arrow: any, ctx: any) => {\n if (!renderable(arrow, ctx)) {\n return [];\n }\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points;\n }\n }\n } as IExtensionMarkSpec<'polygon'>;\n}\n\nfunction generateArrowSymbolSpec(symbol: IConversionFunnelSpec['conversionArrow']['symbol'] = {}, margin?: number) {\n const { style = {}, ...rest } = symbol;\n return {\n type: 'symbol',\n interactive: false,\n dataKey: arrow => `${arrow.id}`,\n ...rest,\n style: {\n ...DEFAULT_ARROW_SYMBOL_MARK_STYLE,\n ...style,\n\n x: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[points?.length - 1]?.x ?? NaN;\n },\n y: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[points?.length - 1]?.y ?? NaN;\n },\n angle: (arrow: any) => (arrow.position === 'left' ? 90 : -90)\n }\n } as IExtensionMarkSpec<'symbol'>;\n}\n\nfunction generateArrowTextSpec(text: IConversionFunnelSpec['conversionArrow']['text'] = {}, margin?: number) {\n const { style = {}, formatMethod, textMargin = 4, ...rest } = text;\n\n return {\n type: 'text',\n dataKey: arrow => `${arrow.id}`,\n interactive: false,\n animation: false,\n ...rest,\n style: {\n ...DEFAULT_ARROW_TEXT_MARK_STYLE,\n text: (arrow: any, ctx: any) => {\n const { text: textContent } = arrow;\n let displayTextContent: ReturnType<typeof formatMethod> = textContent;\n\n if (isFunction(formatMethod)) {\n const { vchart } = ctx;\n const { from, to } = arrow;\n const { field } = arrow.context;\n const rawData = vchart?.getChart()?.getSeriesData()?.latestData ?? [];\n const viewData = vchart?.getChart()?.getAllSeries()[0]?.getViewData()?.latestData ?? [];\n\n const fromData = viewData.find((datum: any) => datum[field] === rawData[from][field]);\n const toData = viewData.find((datum: any) => datum[field] === rawData[to][field]);\n\n displayTextContent = formatMethod(textContent, { arrow, from: fromData, to: toData });\n }\n return displayTextContent;\n },\n x: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[1]?.x + (arrow.position === 'left' ? -textMargin : textMargin) ?? NaN;\n },\n y: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return (points[1]?.y + points[2]?.y) / 2 ?? NaN;\n },\n textAlign: (arrow: any) => (arrow.position === 'left' ? 'right' : 'left'),\n textBaseline: 'middle',\n ...style\n }\n } as IExtensionMarkSpec<'text'>;\n}\n\nfunction prepareArrowPoints(arrow: ParsedArrow, ctx: any, margin?: number) {\n const { vchart } = ctx;\n const { from, to } = arrow;\n const { field } = arrow.context;\n const rawData = vchart?.getChart()?.getSeriesData()?.latestData;\n const viewData = vchart?.getChart()?.getAllSeries()[0]?.getViewData()?.latestData;\n\n let points: IPointLike[] = [];\n\n if (rawData && rawData.length) {\n const fromDatum = viewData.find((datum: any) => datum[field] === rawData[from][field]);\n const toDatum = viewData.find((datum: any) => datum[field] === rawData[to][field]);\n const firstDatum = viewData[0];\n\n if (fromDatum && toDatum && firstDatum) {\n const fromPoints = ctx.getPoints(fromDatum);\n const toPoints = ctx.getPoints(toDatum);\n const firstPoints = ctx.getPoints(firstDatum);\n points = computeArrowPoints(arrow, fromPoints, toPoints, firstPoints, margin);\n arrow.layout.points = points;\n }\n }\n return points;\n}\n\nfunction computeArrowPoints(\n arrow: ParsedArrow,\n fromPoints: IPointLike[],\n toPoints: IPointLike[],\n firstPoints: IPointLike[],\n margin = 12\n) {\n const { layout, distance, position } = arrow;\n const { level, fromIndex, toIndex, fromTotal, toTotal } = layout;\n\n const isRight = position === 'right';\n\n const fromTop = isRight ? fromPoints[1] : fromPoints[0];\n const fromBottom = isRight ? fromPoints[2] : fromPoints[3];\n\n const fromHeight = Math.abs(fromTop.y - fromBottom.y);\n\n const toTop = isRight ? toPoints[1] : toPoints[0];\n const toBottom = isRight ? toPoints[2] : toPoints[3];\n const toHeight = Math.abs(toTop.y - toBottom.y);\n\n const firstTop = isRight ? firstPoints[1] : firstPoints[0];\n\n const fromOffset = fromHeight / (fromTotal + 1);\n const toOffset = toHeight / (toTotal + 1);\n\n const fromY = fromTop.y + fromOffset * (fromIndex + 1);\n const toY = toTop.y + toOffset * (toIndex + 1);\n\n const sign = isRight ? -1 : 1;\n\n const points = [\n { x: fromTop.x - margin * sign, y: fromY },\n { x: firstTop.x - (margin + (level + 1) * distance) * sign, y: fromY },\n {\n x: firstTop.x - (margin + (level + 1) * distance) * sign,\n y: toY\n },\n {\n x: toTop.x - margin * sign,\n y: toY\n }\n ];\n return points;\n}\n\n/** Funnel Background Related */\nfunction addFunnelBackgroundMark(funnelBackground: IConversionFunnelSpec['funnelBackground']) {\n const { style = {}, ...rest } = funnelBackground;\n return {\n type: 'rect',\n ...rest,\n dataIndex: 0,\n zIndex: 0,\n style: {\n ...DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE,\n ...style,\n x: 0,\n y: (datum, ctx: any) => {\n const points = ctx.getPoints(datum);\n const tl = points[0];\n return tl.y;\n },\n width: (datum, ctx: any) => {\n const region = ctx.getRegion();\n const { width } = region.getLayoutRect();\n return width;\n },\n height: (datum, ctx: any) => {\n const points = ctx.getPoints(datum);\n const tl = points[0];\n const bl = points[3];\n return bl.y - tl.y;\n }\n }\n } as IExtensionMarkSpec<'rect'>;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/charts/conversion-funnel/conversion-funnel-transformer.ts"],"names":[],"mappings":"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","file":"conversion-funnel-transformer.js","sourcesContent":["import type { IPointLike } from '@visactor/vchart';\nimport type { IExtensionGroupMarkSpec, IExtensionMarkSpec } from '@visactor/vchart';\nimport type { IConversionFunnelSpec, IConversionFunnelChartSpecBase, Arrow } from './interface';\nimport type { ParsedArrow } from './arrow-data-transform';\nimport { LayoutZIndex, FunnelChartSpecTransformer } from '@visactor/vchart';\nimport { isFunction } from '@visactor/vchart';\nimport {\n DEFAULT_ARROW_MARK_STYLE,\n DEFAULT_ARROW_SYMBOL_MARK_STYLE,\n DEFAULT_ARROW_TEXT_MARK_STYLE,\n DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE\n} from './constants';\n\nexport class ConversionFunnelChartSpecTransformer extends FunnelChartSpecTransformer<IConversionFunnelChartSpecBase> {\n transformSpec(spec: IConversionFunnelChartSpecBase): void {\n const { conversionArrow, extensionMark = [], funnelBackground } = spec;\n if (conversionArrow && conversionArrow.arrows && conversionArrow.arrows.length) {\n const arrowTheme = (this._option?.getTheme?.('series', 'funnel') as any)?.conversionArrow;\n const marks = addArrowMark(conversionArrow, arrowTheme);\n if (marks && marks.length) {\n extensionMark.push(...marks);\n }\n }\n if (funnelBackground && funnelBackground.visible) {\n const mark = addFunnelBackgroundMark(funnelBackground);\n if (mark) {\n extensionMark.push(mark);\n }\n }\n spec.extensionMark = extensionMark;\n super.transformSpec(spec);\n }\n\n _getDefaultSeriesSpec(spec: IConversionFunnelChartSpecBase) {\n const seriesSpec = super._getDefaultSeriesSpec(spec);\n (seriesSpec as IConversionFunnelChartSpecBase).conversionArrow = spec.conversionArrow;\n (seriesSpec as IConversionFunnelChartSpecBase).funnelBackground = spec.funnelBackground;\n return seriesSpec;\n }\n}\n\n/** Arrow Related */\ninterface IArrowTheme {\n line?: { style?: Record<string, any> };\n symbol?: { style?: Record<string, any> };\n text?: { style?: Record<string, any> };\n}\n\nfunction addArrowMark(arrowSpec: IConversionFunnelSpec['conversionArrow'], theme?: IArrowTheme) {\n const { arrows, ...style } = arrowSpec;\n const leftArrows = arrows.filter(arrow => arrow.position === 'left');\n const rightArrows = arrows.filter(arrow => arrow.position === 'right');\n\n const rightGroup = computeArrows(rightArrows, style, theme);\n const leftGroup = computeArrows(leftArrows, style, theme);\n\n const result = [];\n if (rightGroup) {\n rightGroup.name = 'arrowRight';\n result.push(rightGroup);\n }\n if (leftGroup) {\n leftGroup.name = 'arrowLeft';\n result.push(leftGroup);\n }\n\n return result;\n}\n\nfunction computeArrows(\n arrows: Arrow[],\n style: Omit<IConversionFunnelSpec['conversionArrow'], 'arrows'>,\n theme?: IArrowTheme\n) {\n if (arrows?.length === 0) {\n return null;\n }\n\n const { line, symbol, text, margin } = style;\n\n const result: IExtensionMarkSpec<'polygon' | 'symbol' | 'text'>[] = [];\n\n const rootGroup: IExtensionGroupMarkSpec = {\n type: 'group' as any,\n zIndex: LayoutZIndex.Mark + 1,\n children: []\n };\n const lineMark = generateArrowLineSpec(line, margin, theme?.line?.style);\n if (lineMark) {\n result.push(lineMark);\n }\n const arrowMark = generateArrowSymbolSpec(symbol, margin, theme?.symbol?.style);\n if (arrowMark) {\n result.push(arrowMark);\n }\n const textMark = generateArrowTextSpec(text, margin, theme?.text?.style);\n if (textMark) {\n result.push(textMark);\n }\n rootGroup.children = result;\n return rootGroup;\n}\n\nfunction generateArrowLineSpec(\n line: IConversionFunnelSpec['conversionArrow']['line'] = {},\n margin?: number,\n themeStyle: Record<string, any> = {}\n) {\n const { style = {}, ...rest } = line;\n const renderable = (arrow: any, ctx: any) => {\n const { from, to } = arrow;\n const { vchart } = ctx;\n const data = vchart?.getChart()?.getSeriesData()?.latestData;\n if (!data) {\n false;\n }\n if (to > data.length - 1 || from > data.length - 1) {\n return false;\n }\n return true;\n };\n\n return {\n type: 'polygon',\n interactive: false,\n ...rest,\n dataKey: arrow => `${arrow.id}`,\n style: {\n ...DEFAULT_ARROW_MARK_STYLE,\n ...themeStyle,\n ...style,\n renderable,\n points: (arrow: any, ctx: any) => {\n if (!renderable(arrow, ctx)) {\n return [];\n }\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points;\n }\n }\n } as IExtensionMarkSpec<'polygon'>;\n}\n\nfunction generateArrowSymbolSpec(\n symbol: IConversionFunnelSpec['conversionArrow']['symbol'] = {},\n margin?: number,\n themeStyle: Record<string, any> = {}\n) {\n const { style = {}, ...rest } = symbol;\n return {\n type: 'symbol',\n interactive: false,\n dataKey: arrow => `${arrow.id}`,\n ...rest,\n style: {\n ...DEFAULT_ARROW_SYMBOL_MARK_STYLE,\n ...themeStyle,\n ...style,\n\n x: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[points?.length - 1]?.x ?? NaN;\n },\n y: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[points?.length - 1]?.y ?? NaN;\n },\n angle: (arrow: any) => (arrow.position === 'left' ? 90 : -90)\n }\n } as IExtensionMarkSpec<'symbol'>;\n}\n\nfunction generateArrowTextSpec(\n text: IConversionFunnelSpec['conversionArrow']['text'] = {},\n margin?: number,\n themeStyle: Record<string, any> = {}\n) {\n const { style = {}, formatMethod, textMargin = 4, ...rest } = text;\n\n return {\n type: 'text',\n dataKey: arrow => `${arrow.id}`,\n interactive: false,\n animation: false,\n ...rest,\n style: {\n ...DEFAULT_ARROW_TEXT_MARK_STYLE,\n ...themeStyle,\n text: (arrow: any, ctx: any) => {\n const { text: textContent } = arrow;\n let displayTextContent: ReturnType<typeof formatMethod> = textContent;\n\n if (isFunction(formatMethod)) {\n const { vchart } = ctx;\n const { from, to } = arrow;\n const { field } = arrow.context;\n const rawData = vchart?.getChart()?.getSeriesData()?.latestData ?? [];\n const viewData = vchart?.getChart()?.getAllSeries()[0]?.getViewData()?.latestData ?? [];\n\n const fromData = viewData.find((datum: any) => datum[field] === rawData[from][field]);\n const toData = viewData.find((datum: any) => datum[field] === rawData[to][field]);\n\n displayTextContent = formatMethod(textContent, { arrow, from: fromData, to: toData });\n }\n return displayTextContent;\n },\n x: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return points[1]?.x + (arrow.position === 'left' ? -textMargin : textMargin) ?? NaN;\n },\n y: (arrow: any, ctx: any) => {\n let points = arrow.layout.points;\n points = prepareArrowPoints(arrow, ctx, margin);\n return (points[1]?.y + points[2]?.y) / 2 ?? NaN;\n },\n textAlign: (arrow: any) => (arrow.position === 'left' ? 'right' : 'left'),\n textBaseline: 'middle',\n ...style\n }\n } as IExtensionMarkSpec<'text'>;\n}\n\nfunction prepareArrowPoints(arrow: ParsedArrow, ctx: any, margin?: number) {\n const { vchart } = ctx;\n const { from, to } = arrow;\n const { field } = arrow.context;\n const rawData = vchart?.getChart()?.getSeriesData()?.latestData;\n const viewData = vchart?.getChart()?.getAllSeries()[0]?.getViewData()?.latestData;\n\n let points: IPointLike[] = [];\n\n if (rawData && rawData.length) {\n const fromDatum = viewData.find((datum: any) => datum[field] === rawData[from][field]);\n const toDatum = viewData.find((datum: any) => datum[field] === rawData[to][field]);\n const firstDatum = viewData[0];\n\n if (fromDatum && toDatum && firstDatum) {\n const fromPoints = ctx.getPoints(fromDatum);\n const toPoints = ctx.getPoints(toDatum);\n const firstPoints = ctx.getPoints(firstDatum);\n points = computeArrowPoints(arrow, fromPoints, toPoints, firstPoints, margin);\n arrow.layout.points = points;\n }\n }\n return points;\n}\n\nfunction computeArrowPoints(\n arrow: ParsedArrow,\n fromPoints: IPointLike[],\n toPoints: IPointLike[],\n firstPoints: IPointLike[],\n margin = 12\n) {\n const { layout, distance, position } = arrow;\n const { level, fromIndex, toIndex, fromTotal, toTotal } = layout;\n\n const isRight = position === 'right';\n\n const fromTop = isRight ? fromPoints[1] : fromPoints[0];\n const fromBottom = isRight ? fromPoints[2] : fromPoints[3];\n\n const fromHeight = Math.abs(fromTop.y - fromBottom.y);\n\n const toTop = isRight ? toPoints[1] : toPoints[0];\n const toBottom = isRight ? toPoints[2] : toPoints[3];\n const toHeight = Math.abs(toTop.y - toBottom.y);\n\n const firstTop = isRight ? firstPoints[1] : firstPoints[0];\n\n const fromOffset = fromHeight / (fromTotal + 1);\n const toOffset = toHeight / (toTotal + 1);\n\n const fromY = fromTop.y + fromOffset * (fromIndex + 1);\n const toY = toTop.y + toOffset * (toIndex + 1);\n\n const sign = isRight ? -1 : 1;\n\n const points = [\n { x: fromTop.x - margin * sign, y: fromY },\n { x: firstTop.x - (margin + (level + 1) * distance) * sign, y: fromY },\n {\n x: firstTop.x - (margin + (level + 1) * distance) * sign,\n y: toY\n },\n {\n x: toTop.x - margin * sign,\n y: toY\n }\n ];\n return points;\n}\n\n/** Funnel Background Related */\nfunction addFunnelBackgroundMark(funnelBackground: IConversionFunnelSpec['funnelBackground']) {\n const { style = {}, ...rest } = funnelBackground;\n return {\n type: 'rect',\n ...rest,\n dataIndex: 0,\n zIndex: 0,\n style: {\n ...DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE,\n ...style,\n x: 0,\n y: (datum, ctx: any) => {\n const points = ctx.getPoints(datum);\n const tl = points[0];\n return tl.y;\n },\n width: (datum, ctx: any) => {\n const region = ctx.getRegion();\n const { width } = region.getLayoutRect();\n return width;\n },\n height: (datum, ctx: any) => {\n const points = ctx.getPoints(datum);\n const tl = points[0];\n const bl = points[3];\n return bl.y - tl.y;\n }\n }\n } as IExtensionMarkSpec<'rect'>;\n}\n"]}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export { };
|
|
2
|
-
//# sourceMappingURL=type.js.map
|
|
1
|
+
export { };
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { };
|
|
1
|
+
export { };
|
|
2
|
+
//# sourceMappingURL=type.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/vchart-extension",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.4-alpha.0",
|
|
4
4
|
"description": "vchart extension package, including extension plugins and components",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "cjs/index.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"@visactor/vrender-kits": "~1.1.4",
|
|
22
22
|
"@visactor/vrender-components": "~1.1.4",
|
|
23
23
|
"@visactor/vrender-animate": "~1.1.4",
|
|
24
|
-
"@visactor/vchart": "2.1.
|
|
24
|
+
"@visactor/vchart": "2.1.4-alpha.0",
|
|
25
25
|
"@visactor/vutils": "~1.0.23",
|
|
26
26
|
"@visactor/vdataset": "~1.0.23",
|
|
27
27
|
"@visactor/vlayouts": "~1.0.23"
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
"rollup-plugin-bundle-size": "1.0.3",
|
|
49
49
|
"rollup-plugin-sizes": "1.0.5",
|
|
50
50
|
"rollup": "3.20.5",
|
|
51
|
+
"@internal/eslint-config": "0.0.1",
|
|
51
52
|
"@internal/bundler": "0.0.1",
|
|
52
|
-
"@internal/ts-config": "0.0.1"
|
|
53
|
-
"@internal/eslint-config": "0.0.1"
|
|
53
|
+
"@internal/ts-config": "0.0.1"
|
|
54
54
|
},
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public",
|