@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.
@@ -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"]}
@@ -2,5 +2,4 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- });
6
- //# sourceMappingURL=type.js.map
5
+ });
@@ -2,4 +2,5 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- });
5
+ });
6
+ //# sourceMappingURL=type.js.map
@@ -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
@@ -244,5 +244,4 @@ const appendSeriesBreakConfig = rawSpec => {
244
244
  return !1;
245
245
  };
246
246
 
247
- exports.appendSeriesBreakConfig = appendSeriesBreakConfig;
248
- //# sourceMappingURL=util.js.map
247
+ exports.appendSeriesBreakConfig = appendSeriesBreakConfig;
@@ -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":"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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"]}
@@ -1,2 +1 @@
1
- export { };
2
- //# sourceMappingURL=type.js.map
1
+ export { };
@@ -1 +1,2 @@
1
- export { };
1
+ export { };
2
+ //# sourceMappingURL=type.js.map
@@ -4,4 +4,5 @@ export { getSeriesBreakConfig, appendSeriesBreakConfig } from "./util";
4
4
 
5
5
  export * from "./type";
6
6
 
7
- export * from "./constant";
7
+ export * from "./constant";
8
+ //# sourceMappingURL=index.js.map
@@ -240,5 +240,4 @@ export const appendSeriesBreakConfig = rawSpec => {
240
240
  !0;
241
241
  }
242
242
  return !1;
243
- };
244
- //# sourceMappingURL=util.js.map
243
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vchart-extension",
3
- "version": "2.1.3",
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.3",
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",