@visactor/vchart-extension 2.1.0-alpha.8 → 2.1.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.
Files changed (81) hide show
  1. package/build/index.js +124 -29
  2. package/build/index.min.js +2 -2
  3. package/cjs/charts/3d/layout.d.ts +2 -1
  4. package/cjs/charts/3d/layout.js.map +1 -1
  5. package/cjs/charts/axis-3d/band-axis.js +1 -1
  6. package/cjs/charts/axis-3d/index.js +1 -2
  7. package/cjs/charts/axis-3d/linear-axis.js +1 -1
  8. package/cjs/charts/axis-3d/log-axis.js +1 -1
  9. package/cjs/charts/axis-3d/symlog-axis.js +1 -1
  10. package/cjs/charts/axis-3d/theme.js +1 -1
  11. package/cjs/charts/axis-3d/time-axis.js +1 -1
  12. package/cjs/charts/axis-3d/util.js +1 -1
  13. package/cjs/charts/bar-3d/chart-spec-transformer.js +1 -1
  14. package/cjs/charts/bar-3d/chart.js +2 -1
  15. package/cjs/charts/bar-3d/constant.js +1 -1
  16. package/cjs/charts/bar-3d/index.js +1 -1
  17. package/cjs/charts/bar-3d/interface.js +1 -1
  18. package/cjs/charts/bar-3d/series-spec-transformer.js +1 -1
  19. package/cjs/charts/bar-3d/series.js +1 -1
  20. package/cjs/charts/bar-3d/theme.js +1 -1
  21. package/cjs/charts/image-cloud/series/image-cloud.d.ts +1 -1
  22. package/cjs/charts/pictogram/series/pictogram.d.ts +9 -2
  23. package/cjs/charts/pictogram/series/pictogram.js +55 -15
  24. package/cjs/charts/pictogram/series/pictogram.js.map +1 -1
  25. package/cjs/charts/pictogram/series/svg-source.d.ts +12 -2
  26. package/cjs/charts/pictogram/series/svg-source.js +27 -3
  27. package/cjs/charts/pictogram/series/svg-source.js.map +1 -1
  28. package/cjs/components/bar-regression-line/index.js +6 -3
  29. package/cjs/components/bar-regression-line/index.js.map +1 -1
  30. package/cjs/components/histogram-regression-line/index.js +6 -3
  31. package/cjs/components/histogram-regression-line/index.js.map +1 -1
  32. package/cjs/components/histogram-regression-line/type.js +1 -2
  33. package/cjs/components/map-label/layout.d.ts +2 -1
  34. package/cjs/components/map-label/layout.js +2 -1
  35. package/cjs/components/map-label/layout.js.map +1 -1
  36. package/cjs/components/map-label/map-label.d.ts +5 -4
  37. package/cjs/components/map-label/map-label.js.map +1 -1
  38. package/cjs/components/scatter-regression-line/index.js +6 -3
  39. package/cjs/components/scatter-regression-line/index.js.map +1 -1
  40. package/cjs/components/series-break/util.js +1 -2
  41. package/cjs/components/series-label/series-label.js +2 -1
  42. package/esm/charts/3d/layout.d.ts +2 -1
  43. package/esm/charts/3d/layout.js.map +1 -1
  44. package/esm/charts/axis-3d/band-axis.js +1 -1
  45. package/esm/charts/axis-3d/index.js +1 -2
  46. package/esm/charts/axis-3d/linear-axis.js +1 -1
  47. package/esm/charts/axis-3d/log-axis.js +1 -1
  48. package/esm/charts/axis-3d/symlog-axis.js +1 -1
  49. package/esm/charts/axis-3d/theme.js +1 -1
  50. package/esm/charts/axis-3d/time-axis.js +1 -1
  51. package/esm/charts/axis-3d/util.js +1 -1
  52. package/esm/charts/bar-3d/chart-spec-transformer.js +1 -1
  53. package/esm/charts/bar-3d/chart.js +2 -1
  54. package/esm/charts/bar-3d/constant.js +1 -1
  55. package/esm/charts/bar-3d/index.js +1 -1
  56. package/esm/charts/bar-3d/interface.js +1 -1
  57. package/esm/charts/bar-3d/series-spec-transformer.js +1 -1
  58. package/esm/charts/bar-3d/series.js +1 -1
  59. package/esm/charts/bar-3d/theme.js +1 -1
  60. package/esm/charts/image-cloud/series/image-cloud.d.ts +1 -1
  61. package/esm/charts/pictogram/series/pictogram.d.ts +9 -2
  62. package/esm/charts/pictogram/series/pictogram.js +57 -17
  63. package/esm/charts/pictogram/series/pictogram.js.map +1 -1
  64. package/esm/charts/pictogram/series/svg-source.d.ts +12 -2
  65. package/esm/charts/pictogram/series/svg-source.js +25 -1
  66. package/esm/charts/pictogram/series/svg-source.js.map +1 -1
  67. package/esm/components/bar-regression-line/index.js +5 -2
  68. package/esm/components/bar-regression-line/index.js.map +1 -1
  69. package/esm/components/histogram-regression-line/index.js +5 -2
  70. package/esm/components/histogram-regression-line/index.js.map +1 -1
  71. package/esm/components/histogram-regression-line/type.js +1 -2
  72. package/esm/components/map-label/layout.d.ts +2 -1
  73. package/esm/components/map-label/layout.js +2 -1
  74. package/esm/components/map-label/layout.js.map +1 -1
  75. package/esm/components/map-label/map-label.d.ts +5 -4
  76. package/esm/components/map-label/map-label.js.map +1 -1
  77. package/esm/components/scatter-regression-line/index.js +5 -2
  78. package/esm/components/scatter-regression-line/index.js.map +1 -1
  79. package/esm/components/series-break/util.js +1 -2
  80. package/esm/components/series-label/series-label.js +2 -1
  81. package/package.json +7 -7
@@ -1,6 +1,7 @@
1
- import type { IBaseLayout, IChart, ILayoutItem, IOffset, IRect } from '@visactor/vchart';
1
+ import type { IBaseLayout, IChart, ILayoutItem, IOffset } from '@visactor/vchart';
2
2
  import { Layout } from '@visactor/vchart';
3
3
  import type { IBoundsLike } from '@visactor/vchart';
4
+ import type { IRect } from '@visactor/vchart/src/typings/space';
4
5
  export declare class Layout3d extends Layout implements IBaseLayout {
5
6
  recomputeWidth: boolean;
6
7
  recomputeHeight: boolean;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/3d/layout.ts"],"names":[],"mappings":"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","file":"layout.js","sourcesContent":["import type { IAxis, IBaseLayout, IChart, ILayoutItem, IOffset, IRect, LayoutSideType } from '@visactor/vchart';\nimport { Factory, isXAxis, isYAxis, Layout } from '@visactor/vchart';\nimport type { IBoundsLike } from '@visactor/vchart';\n\nexport class Layout3d extends Layout implements IBaseLayout {\n declare recomputeWidth: boolean;\n declare recomputeHeight: boolean;\n static type = 'layout3d';\n\n layoutItems(_chart: IChart, items: ILayoutItem[], chartLayoutRect: IRect, chartViewBox: IBoundsLike): void {\n // 布局初始化\n this._layoutInit(_chart, items, chartLayoutRect, chartViewBox);\n\n const recompute = {\n recomputeWidth: this.recomputeWidth,\n recomputeHeight: this.recomputeHeight\n };\n // 先布局 normal 类型的元素\n this._layoutNormalItems(items, recompute);\n\n // 开始布局 region 相关元素\n // 为了锁紧先保存一下当前的布局空间\n const layoutTemp: LayoutSideType = {\n left: this.leftCurrent,\n top: this.topCurrent,\n right: this.rightCurrent,\n bottom: this.bottomCurrent\n };\n // 计算3d轴\n const absoluteItem = items.filter(x => x.layoutType === 'absolute');\n const zItems = absoluteItem.filter(i => {\n return i.layoutOrient === 'z';\n });\n\n // 计算z的宽高,让出一部分位置\n let extraWH = { width: 0, height: 0 };\n if (zItems.length) {\n const layoutRect = zItems[0].getLayoutRect();\n extraWH = layoutRect;\n }\n this.leftCurrent += extraWH.width / 8;\n this.rightCurrent -= extraWH.width / 8;\n this.topCurrent += extraWH.height / 8;\n this.bottomCurrent -= extraWH.height / 8;\n\n const { regionItems, relativeItems, relativeOverlapItems, allRelatives, overlapItems } = this._groupItems(items);\n // 有元素开启了自动缩进\n // TODO:目前只有普通占位布局下的 region-relative 元素支持\n // 主要考虑常规元素超出画布一般为用户个性设置,而且可以设置padding规避裁剪,不需要使用自动缩进\n this.layoutRegionItems(regionItems, relativeItems, relativeOverlapItems, overlapItems, recompute);\n\n // 缩进\n this._processAutoIndent(\n regionItems,\n relativeItems,\n relativeOverlapItems,\n overlapItems,\n allRelatives,\n layoutTemp,\n recompute\n );\n\n // z轴以外的绝对定位\n const absoluteItemExceptZAxis = absoluteItem.filter(i => i.layoutOrient !== 'z');\n this.layoutAbsoluteItems(absoluteItemExceptZAxis);\n\n // 找到x轴\n const xAxis = relativeItems.filter(item => {\n return item.model.specKey === 'axes' && isXAxis(item.layoutOrient);\n })[0];\n const yAxis = relativeItems.filter(item => {\n return item.model.specKey === 'axes' && isYAxis(item.layoutOrient);\n })[0];\n if (xAxis && zItems.length) {\n const sp = xAxis.getLayoutStartPoint();\n const lr = xAxis.getLayoutRect();\n const zRect = {\n x: yAxis.layoutOrient === 'left' ? sp.x + lr.width : sp.x,\n y: sp.y,\n width: this._chartLayoutRect.width,\n height: this._chartLayoutRect.height\n };\n (zItems[0].model as IAxis).directionStr = yAxis.layoutOrient === 'left' ? 'r2l' : 'l2r';\n // 将长宽高信息传给所有的轴\n const xRect = xAxis.getLayoutRect();\n const yRect = yAxis.getLayoutRect();\n // const zRect = zItems[0].getLayoutRect();\n const box3d = {\n length: zItems[0].getLayoutRect().width,\n width: xRect.width,\n height: yRect.height\n };\n\n (<any>xAxis.model).setLayout3dBox && (<any>xAxis.model).setLayout3dBox(box3d);\n (<any>yAxis.model).setLayout3dBox && (<any>yAxis.model).setLayout3dBox(box3d);\n (<any>zItems[0].model).setLayout3dBox && (<any>zItems[0].model).setLayout3dBox(box3d);\n\n this.layoutZAxisItems(zItems, zRect);\n }\n }\n\n /**\n * 对z轴进行布局\n * @param zItems\n */\n protected layoutZAxisItems(zItems: ILayoutItem[], zRect: IRect) {\n zItems.forEach(item => {\n // 设置盒子\n item.absoluteLayoutInRect(zRect);\n });\n }\n\n /**\n * 工具方法 根据item属性获取给item提供的布局空间\n * @param item\n */\n getItemComputeLayoutRect(item: ILayoutItem, extraOffset?: IOffset) {\n if (!extraOffset) {\n extraOffset = { offsetLeft: 0, offsetRight: 0, offsetTop: 0, offsetBottom: 0 };\n }\n const result = {\n width:\n this.rightCurrent -\n this.leftCurrent -\n item.layoutPaddingLeft -\n item.layoutPaddingRight -\n (extraOffset.offsetLeft + extraOffset.offsetRight),\n height:\n this.bottomCurrent -\n this.topCurrent -\n item.layoutPaddingTop -\n item.layoutPaddingBottom -\n (extraOffset.offsetTop + extraOffset.offsetBottom)\n };\n return result;\n }\n\n protected _checkAutoIndent(items: ILayoutItem[]) {\n const result = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n };\n const rightCurrent = this._chartViewBox.x2 - this._chartViewBox.x1 - this.rightCurrent;\n const bottomCurrent = this._chartViewBox.y2 - this._chartViewBox.y1 - this.bottomCurrent;\n items.forEach(i => {\n if (!i.getModelVisible() || !i.autoIndent) {\n return;\n }\n const vOrH = i.layoutOrient === 'left' || i.layoutOrient === 'right';\n const outer = i.getLastComputeOutBounds();\n if (vOrH) {\n result.top = Math.max(result.top, outer.y1 - this.topCurrent);\n result.bottom = Math.max(result.bottom, outer.y2 - bottomCurrent);\n } else {\n result.left = Math.max(result.left, outer.x1 - this.leftCurrent);\n result.right = Math.max(result.right, outer.x2 - rightCurrent);\n }\n });\n return result;\n }\n}\n\nexport const registerLayout3d = () => {\n Factory.registerLayout(Layout3d.type, Layout3d);\n};\n"]}
1
+ {"version":3,"sources":["../src/charts/3d/layout.ts"],"names":[],"mappings":"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","file":"layout.js","sourcesContent":["import type { IAxis, IBaseLayout, IChart, ILayoutItem, IOffset, LayoutSideType } from '@visactor/vchart';\nimport { Factory, isXAxis, isYAxis, Layout } from '@visactor/vchart';\nimport type { IBoundsLike } from '@visactor/vchart';\nimport type { IRect } from '@visactor/vchart/src/typings/space';\n\nexport class Layout3d extends Layout implements IBaseLayout {\n declare recomputeWidth: boolean;\n declare recomputeHeight: boolean;\n static type = 'layout3d';\n\n layoutItems(_chart: IChart, items: ILayoutItem[], chartLayoutRect: IRect, chartViewBox: IBoundsLike): void {\n // 布局初始化\n this._layoutInit(_chart, items, chartLayoutRect, chartViewBox);\n\n const recompute = {\n recomputeWidth: this.recomputeWidth,\n recomputeHeight: this.recomputeHeight\n };\n // 先布局 normal 类型的元素\n this._layoutNormalItems(items, recompute);\n\n // 开始布局 region 相关元素\n // 为了锁紧先保存一下当前的布局空间\n const layoutTemp: LayoutSideType = {\n left: this.leftCurrent,\n top: this.topCurrent,\n right: this.rightCurrent,\n bottom: this.bottomCurrent\n };\n // 计算3d轴\n const absoluteItem = items.filter(x => x.layoutType === 'absolute');\n const zItems = absoluteItem.filter(i => {\n return i.layoutOrient === 'z';\n });\n\n // 计算z的宽高,让出一部分位置\n let extraWH = { width: 0, height: 0 };\n if (zItems.length) {\n const layoutRect = zItems[0].getLayoutRect();\n extraWH = layoutRect;\n }\n this.leftCurrent += extraWH.width / 8;\n this.rightCurrent -= extraWH.width / 8;\n this.topCurrent += extraWH.height / 8;\n this.bottomCurrent -= extraWH.height / 8;\n\n const { regionItems, relativeItems, relativeOverlapItems, allRelatives, overlapItems } = this._groupItems(items);\n // 有元素开启了自动缩进\n // TODO:目前只有普通占位布局下的 region-relative 元素支持\n // 主要考虑常规元素超出画布一般为用户个性设置,而且可以设置padding规避裁剪,不需要使用自动缩进\n this.layoutRegionItems(regionItems, relativeItems, relativeOverlapItems, overlapItems, recompute);\n\n // 缩进\n this._processAutoIndent(\n regionItems,\n relativeItems,\n relativeOverlapItems,\n overlapItems,\n allRelatives,\n layoutTemp,\n recompute\n );\n\n // z轴以外的绝对定位\n const absoluteItemExceptZAxis = absoluteItem.filter(i => i.layoutOrient !== 'z');\n this.layoutAbsoluteItems(absoluteItemExceptZAxis);\n\n // 找到x轴\n const xAxis = relativeItems.filter(item => {\n return item.model.specKey === 'axes' && isXAxis(item.layoutOrient);\n })[0];\n const yAxis = relativeItems.filter(item => {\n return item.model.specKey === 'axes' && isYAxis(item.layoutOrient);\n })[0];\n if (xAxis && zItems.length) {\n const sp = xAxis.getLayoutStartPoint();\n const lr = xAxis.getLayoutRect();\n const zRect = {\n x: yAxis.layoutOrient === 'left' ? sp.x + lr.width : sp.x,\n y: sp.y,\n width: this._chartLayoutRect.width,\n height: this._chartLayoutRect.height\n };\n (zItems[0].model as IAxis).directionStr = yAxis.layoutOrient === 'left' ? 'r2l' : 'l2r';\n // 将长宽高信息传给所有的轴\n const xRect = xAxis.getLayoutRect();\n const yRect = yAxis.getLayoutRect();\n // const zRect = zItems[0].getLayoutRect();\n const box3d = {\n length: zItems[0].getLayoutRect().width,\n width: xRect.width,\n height: yRect.height\n };\n\n (<any>xAxis.model).setLayout3dBox && (<any>xAxis.model).setLayout3dBox(box3d);\n (<any>yAxis.model).setLayout3dBox && (<any>yAxis.model).setLayout3dBox(box3d);\n (<any>zItems[0].model).setLayout3dBox && (<any>zItems[0].model).setLayout3dBox(box3d);\n\n this.layoutZAxisItems(zItems, zRect);\n }\n }\n\n /**\n * 对z轴进行布局\n * @param zItems\n */\n protected layoutZAxisItems(zItems: ILayoutItem[], zRect: IRect) {\n zItems.forEach(item => {\n // 设置盒子\n item.absoluteLayoutInRect(zRect);\n });\n }\n\n /**\n * 工具方法 根据item属性获取给item提供的布局空间\n * @param item\n */\n getItemComputeLayoutRect(item: ILayoutItem, extraOffset?: IOffset) {\n if (!extraOffset) {\n extraOffset = { offsetLeft: 0, offsetRight: 0, offsetTop: 0, offsetBottom: 0 };\n }\n const result = {\n width:\n this.rightCurrent -\n this.leftCurrent -\n item.layoutPaddingLeft -\n item.layoutPaddingRight -\n (extraOffset.offsetLeft + extraOffset.offsetRight),\n height:\n this.bottomCurrent -\n this.topCurrent -\n item.layoutPaddingTop -\n item.layoutPaddingBottom -\n (extraOffset.offsetTop + extraOffset.offsetBottom)\n };\n return result;\n }\n\n protected _checkAutoIndent(items: ILayoutItem[]) {\n const result = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n };\n const rightCurrent = this._chartViewBox.x2 - this._chartViewBox.x1 - this.rightCurrent;\n const bottomCurrent = this._chartViewBox.y2 - this._chartViewBox.y1 - this.bottomCurrent;\n items.forEach(i => {\n if (!i.getModelVisible() || !i.autoIndent) {\n return;\n }\n const vOrH = i.layoutOrient === 'left' || i.layoutOrient === 'right';\n const outer = i.getLastComputeOutBounds();\n if (vOrH) {\n result.top = Math.max(result.top, outer.y1 - this.topCurrent);\n result.bottom = Math.max(result.bottom, outer.y2 - bottomCurrent);\n } else {\n result.left = Math.max(result.left, outer.x1 - this.leftCurrent);\n result.right = Math.max(result.right, outer.x2 - rightCurrent);\n }\n });\n return result;\n }\n}\n\nexport const registerLayout3d = () => {\n Factory.registerLayout(Layout3d.type, Layout3d);\n};\n"]}
@@ -13,4 +13,4 @@ const vchart_1 = require("@visactor/vchart"), theme_1 = require("./theme"), vcha
13
13
  };
14
14
 
15
15
  exports.registerCartesianBandAxis3d = registerCartesianBandAxis3d;
16
- //# sourceMappingURL=band-axis.js.map
16
+ //# sourceMappingURL=band-axis.js.map
@@ -10,5 +10,4 @@ const layout_1 = require("../3d/layout"), plugin_1 = require("../3d/plugin"), ba
10
10
  (0, symlog_axis_1.registerCartesianSymlogAxis3d)(), (0, log_axis_1.registerCartesianLogAxis3d)();
11
11
  };
12
12
 
13
- exports.registerAxis3dPlugin = registerAxis3dPlugin;
14
- //# sourceMappingURL=index.js.map
13
+ exports.registerAxis3dPlugin = registerAxis3dPlugin;
@@ -13,4 +13,4 @@ const vchart_1 = require("@visactor/vchart"), theme_1 = require("./theme"), vcha
13
13
  };
14
14
 
15
15
  exports.registerCartesianLinearAxis3d = registerCartesianLinearAxis3d;
16
- //# sourceMappingURL=linear-axis.js.map
16
+ //# sourceMappingURL=linear-axis.js.map
@@ -13,4 +13,4 @@ const vchart_1 = require("@visactor/vchart"), theme_1 = require("./theme"), vcha
13
13
  };
14
14
 
15
15
  exports.registerCartesianLogAxis3d = registerCartesianLogAxis3d;
16
- //# sourceMappingURL=log-axis.js.map
16
+ //# sourceMappingURL=log-axis.js.map
@@ -13,4 +13,4 @@ const vchart_1 = require("@visactor/vchart"), theme_1 = require("./theme"), vcha
13
13
  };
14
14
 
15
15
  exports.registerCartesianSymlogAxis3d = registerCartesianSymlogAxis3d;
16
- //# sourceMappingURL=symlog-axis.js.map
16
+ //# sourceMappingURL=symlog-axis.js.map
@@ -7,4 +7,4 @@ Object.defineProperty(exports, "__esModule", {
7
7
  space: 0
8
8
  }
9
9
  };
10
- //# sourceMappingURL=theme.js.map
10
+ //# sourceMappingURL=theme.js.map
@@ -13,4 +13,4 @@ const vchart_1 = require("@visactor/vchart"), theme_1 = require("./theme"), vcha
13
13
  };
14
14
 
15
15
  exports.registerCartesianTimeAxis3d = registerCartesianTimeAxis3d;
16
- //# sourceMappingURL=time-axis.js.map
16
+ //# sourceMappingURL=time-axis.js.map
@@ -43,4 +43,4 @@ const vchart_1 = require("@visactor/vchart"), getUpdateAttributeOfZAxis = (axis,
43
43
  };
44
44
 
45
45
  exports.getUpdateAttributeOfZAxis = getUpdateAttributeOfZAxis;
46
- //# sourceMappingURL=util.js.map
46
+ //# sourceMappingURL=util.js.map
@@ -16,4 +16,4 @@ class Bar3dChartSpecTransformer extends vchart_1.BarChartSpecTransformer {
16
16
  }
17
17
 
18
18
  exports.Bar3dChartSpecTransformer = Bar3dChartSpecTransformer;
19
- //# sourceMappingURL=chart-spec-transformer.js.map
19
+ //# sourceMappingURL=chart-spec-transformer.js.map
@@ -21,4 +21,5 @@ const registerBar3dChart = () => {
21
21
  vchart_1.Factory.registerChart(Bar3dChart.type, Bar3dChart);
22
22
  };
23
23
 
24
- exports.registerBar3dChart = registerBar3dChart;
24
+ exports.registerBar3dChart = registerBar3dChart;
25
+ //# sourceMappingURL=chart.js.map
@@ -12,4 +12,4 @@ Object.defineProperty(exports, "__esModule", {
12
12
  type: "rect3d"
13
13
  }
14
14
  };
15
- //# sourceMappingURL=constant.js.map
15
+ //# sourceMappingURL=constant.js.map
@@ -20,4 +20,4 @@ Object.defineProperty(exports, "__esModule", {
20
20
  }), __exportStar(require("./chart"), exports), __exportStar(require("./chart-spec-transformer"), exports),
21
21
  __exportStar(require("./interface"), exports), __exportStar(require("./series"), exports),
22
22
  __exportStar(require("./series-spec-transformer"), exports);
23
- //# sourceMappingURL=index.js.map
23
+ //# sourceMappingURL=index.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=interface.js.map
6
+ //# sourceMappingURL=interface.js.map
@@ -13,4 +13,4 @@ class Bar3dSeriesSpecTransformer extends vchart_1.BarSeriesSpecTransformer {
13
13
  }
14
14
 
15
15
  exports.Bar3dSeriesSpecTransformer = Bar3dSeriesSpecTransformer;
16
- //# sourceMappingURL=series-spec-transformer.js.map
16
+ //# sourceMappingURL=series-spec-transformer.js.map
@@ -25,4 +25,4 @@ const registerBar3dSeries = () => {
25
25
  };
26
26
 
27
27
  exports.registerBar3dSeries = registerBar3dSeries;
28
- //# sourceMappingURL=series.js.map
28
+ //# sourceMappingURL=series.js.map
@@ -16,4 +16,4 @@ Object.defineProperty(exports, "__esModule", {
16
16
  }
17
17
  }
18
18
  };
19
- //# sourceMappingURL=theme.js.map
19
+ //# sourceMappingURL=theme.js.map
@@ -112,7 +112,7 @@ export declare class ImageCloudSeries<T extends IImageCloudSeriesSpec> extends B
112
112
  style?: Partial<import("@visactor/vchart").IImageMarkSpec>;
113
113
  };
114
114
  layoutConfig: import("@visactor/vchart").LayoutConfigType;
115
- createCanvas: (params: import("@visactor/vrender-core").ICreateCanvasParams) => any;
115
+ createCanvas: (params: import("@visactor/vrender-core/es/interface").ICreateCanvasParams) => any;
116
116
  createImage: typeof createImage;
117
117
  onUpdateMaskCanvas: (inputImage?: HTMLCanvasElement, maskImage?: HTMLCanvasElement) => void;
118
118
  onLayoutFinished: () => void;
@@ -1,5 +1,6 @@
1
- import { type SVGParsedElement, type SVGParserResult } from '@visactor/vchart';
1
+ import { type SVGParsedElement } from '@visactor/vchart';
2
2
  import type { IPictogramSeriesSpec } from './interface';
3
+ import { type SVGParserResultWithViewport } from './svg-source';
3
4
  import { PictogramSeriesSpecTransformer } from './pictogram-transformer';
4
5
  import type { IMatrix, IPoint, IPointLike, GraphicEventType } from '@visactor/vchart';
5
6
  import { type IGroup } from '@visactor/vchart';
@@ -80,7 +81,7 @@ export declare class PictogramSeries<T extends IPictogramSeriesSpec = IPictogram
80
81
  static readonly transformerConstructor: typeof PictogramSeriesSpecTransformer;
81
82
  svg: string;
82
83
  protected _pictogramMark: IGroupMark;
83
- protected _parsedSvgResult: SVGParserResult;
84
+ protected _parsedSvgResult: SVGParserResultWithViewport;
84
85
  private _labelMark;
85
86
  private _idToMark;
86
87
  setAttrFromSpec(): void;
@@ -113,6 +114,12 @@ export declare class PictogramSeries<T extends IPictogramSeriesSpec = IPictogram
113
114
  coordToPosition(point: IPoint): IPoint | undefined;
114
115
  getRootMatrix(): IMatrix;
115
116
  getPictogramRootGraphic(): IGroup;
117
+ private _getSvgRootMatrix;
118
+ private _getSvgViewportRect;
119
+ private _getSvgRootBounds;
120
+ private _appendMatrixScale;
121
+ private _appendMatrixTranslate;
122
+ private _getFittedSvgRootMatrix;
116
123
  initData(): void;
117
124
  mapViewDataUpdate(): void;
118
125
  onLayoutEnd(): void;
@@ -110,13 +110,13 @@ class PictogramSeries extends vchart_4.GeoSeries {
110
110
  }, vchart_4.STATE_VALUE_ENUM.STATE_NORMAL, vchart_4.AttributeLevel.Series);
111
111
  }
112
112
  initMarkStyle() {
113
- const {root: root, viewBoxRect: viewBoxRect} = this._parsedSvgResult, elements = this._mapViewData.getDataView().latestData;
113
+ const {root: root} = this._parsedSvgResult, svgViewportRect = this._getSvgViewportRect(), elements = this._mapViewData.getDataView().latestData;
114
114
  root && (this.setMarkStyle(this._pictogramMark, transform_1.graphicAttributeTransform.group(root.attributes), "normal", vchart_4.AttributeLevel.Built_In),
115
- root.transform && this.setMarkStyle(this._pictogramMark, {
116
- postMatrix: () => root.transform
117
- }, "normal", vchart_4.AttributeLevel.Built_In), viewBoxRect && this._pictogramMark.setMarkConfig({
115
+ this.setMarkStyle(this._pictogramMark, {
116
+ postMatrix: () => this._getFittedSvgRootMatrix()
117
+ }, "normal", vchart_4.AttributeLevel.Built_In), svgViewportRect && this._pictogramMark.setMarkConfig({
118
118
  clip: !0,
119
- clipPath: [ (0, vchart_3.createRect)(Object.assign(Object.assign({}, viewBoxRect), {
119
+ clipPath: [ (0, vchart_3.createRect)(Object.assign(Object.assign({}, svgViewportRect), {
120
120
  fill: !0
121
121
  })) ]
122
122
  }));
@@ -179,6 +179,51 @@ class PictogramSeries extends vchart_4.GeoSeries {
179
179
  getPictogramRootGraphic() {
180
180
  return this._pictogramMark.getProduct();
181
181
  }
182
+ _getSvgRootMatrix() {
183
+ var _a, _b;
184
+ const transform = null === (_b = null === (_a = this._parsedSvgResult) || void 0 === _a ? void 0 : _a.root) || void 0 === _b ? void 0 : _b.transform;
185
+ return transform ? new vchart_2.Matrix(transform.a, transform.b, transform.c, transform.d, transform.e, transform.f) : new vchart_2.Matrix;
186
+ }
187
+ _getSvgViewportRect() {
188
+ var _a, _b, _c, _d;
189
+ const viewBoxRect = null === (_a = this._parsedSvgResult) || void 0 === _a ? void 0 : _a.viewBoxRect;
190
+ if (viewBoxRect) return viewBoxRect;
191
+ const {width: width, height: height} = null !== (_b = this._parsedSvgResult) && void 0 !== _b ? _b : {};
192
+ return Number.isFinite(width) && Number.isFinite(height) && width > 0 && height > 0 ? {
193
+ x: 0,
194
+ y: 0,
195
+ width: width,
196
+ height: height
197
+ } : null !== (_d = null === (_c = this._parsedSvgResult) || void 0 === _c ? void 0 : _c[svg_source_1.SVG_VIEWPORT_RECT_KEY]) && void 0 !== _d ? _d : null;
198
+ }
199
+ _getSvgRootBounds(rootMatrix) {
200
+ const viewBoxRect = this._getSvgViewportRect();
201
+ if (!viewBoxRect) return null;
202
+ const bounds = (new vchart_2.Bounds).setValue(viewBoxRect.x, viewBoxRect.y, viewBoxRect.x + viewBoxRect.width, viewBoxRect.y + viewBoxRect.height);
203
+ return bounds.transformWithMatrix(rootMatrix), bounds;
204
+ }
205
+ _appendMatrixScale(matrix, scale, center) {
206
+ const nextMatrix = new vchart_2.Matrix;
207
+ return nextMatrix.translate(center.x, center.y), nextMatrix.scale(scale, scale),
208
+ nextMatrix.translate(-center.x, -center.y), nextMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f),
209
+ nextMatrix;
210
+ }
211
+ _appendMatrixTranslate(matrix, dx, dy) {
212
+ const nextMatrix = new vchart_2.Matrix;
213
+ return nextMatrix.translate(dx, dy), nextMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f),
214
+ nextMatrix;
215
+ }
216
+ _getFittedSvgRootMatrix() {
217
+ const rootMatrix = this._getSvgRootMatrix(), bounds = this._getSvgRootBounds(rootMatrix);
218
+ if (!bounds) return rootMatrix;
219
+ const width = bounds.width(), height = bounds.height();
220
+ if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) return rootMatrix;
221
+ const {width: regionWidth, height: regionHeight} = this.getLayoutRect(), rootCenterX = (bounds.x1 + bounds.x2) / 2, rootCenterY = (bounds.y1 + bounds.y2) / 2, scale = Math.min(regionWidth / width, regionHeight / height), scaledMatrix = this._appendMatrixScale(rootMatrix, scale, {
222
+ x: rootCenterX,
223
+ y: rootCenterY
224
+ });
225
+ return this._appendMatrixTranslate(scaledMatrix, regionWidth / 2 - rootCenterX, regionHeight / 2 - rootCenterY);
226
+ }
182
227
  initData() {
183
228
  var _a, _b;
184
229
  super.initData();
@@ -224,19 +269,14 @@ class PictogramSeries extends vchart_4.GeoSeries {
224
269
  super.onLayoutEnd(), null === (_a = this._mapViewData) || void 0 === _a || _a.getDataView().reRunAllTransform();
225
270
  }
226
271
  updateSVGSize() {
227
- const {width: regionWidth, height: regionHeight} = this.getLayoutRect(), regionCenterX = regionWidth / 2, regionCenterY = regionHeight / 2, root = this.getPictogramRootGraphic();
228
- if (root) {
229
- const bounds = root.AABBBounds, {x1: x1, x2: x2, y1: y1, y2: y2} = root.AABBBounds, rootCenterX = (x1 + x2) / 2, rootCenterY = (y1 + y2) / 2, scaleX = regionWidth / bounds.width(), scaleY = regionHeight / bounds.height(), scale = Math.min(scaleX, scaleY);
230
- root.scale(scale, scale, {
231
- x: rootCenterX,
232
- y: rootCenterY
233
- }), root.translate(regionCenterX - rootCenterX, regionCenterY - rootCenterY);
234
- }
272
+ const root = this.getPictogramRootGraphic();
273
+ root && root.setAttributes({
274
+ postMatrix: this._getFittedSvgRootMatrix()
275
+ });
235
276
  }
236
277
  initEvent() {
237
278
  var _a;
238
- super.initEvent(), null === (_a = this._mapViewData.getDataView()) || void 0 === _a || _a.target.addListener("change", this.mapViewDataUpdate.bind(this)),
239
- this.event.on(vchart_4.ChartEvent.afterMarkLayoutEnd, this.updateSVGSize.bind(this));
279
+ super.initEvent(), null === (_a = this._mapViewData.getDataView()) || void 0 === _a || _a.target.addListener("change", this.mapViewDataUpdate.bind(this));
240
280
  }
241
281
  handleZoom(e) {
242
282
  const {scale: scale, scaleCenter: scaleCenter} = e;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/pictogram/series/pictogram.ts"],"names":[],"mappings":"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","file":"pictogram.js","sourcesContent":["import { DataView, type SVGParsedElement, type SVGParserResult } from '@visactor/vchart';\nimport type { IPictogramSeriesSpec } from './interface';\nimport {\n ELEMENT_HIGHLIGHT_BY_GRPHIC_NAME,\n ELEMENT_SELECT_BY_GRPHIC_NAME,\n PICTOGRAM_SERIES_TYPE,\n PictogramSeriesMark\n} from './constant';\nimport { getSVGSource, registerSVGSource, svgSourceMap, unregisterSVGSource } from './svg-source';\nimport { PictogramSeriesSpecTransformer } from './pictogram-transformer';\nimport type { IMatrix, IPoint, IPointLike, GraphicEventType } from '@visactor/vchart';\nimport { Bounds, Matrix, isValid, merge } from '@visactor/vchart';\nimport { createRect, type IGroup } from '@visactor/vchart';\nimport { PictogramSeriesTooltipHelper } from './tooltip-helper';\nimport type {\n Datum,\n IGroupMark,\n IHoverSpec,\n IMark,\n ISelectSpec,\n ISeriesSeriesInfo,\n ITextMark,\n PanEventParam,\n ZoomEventParam\n} from '@visactor/vchart';\nimport {\n AttributeLevel,\n ChartEvent,\n CompilableData,\n Factory,\n GeoSeries,\n lookup,\n registerDataSetInstanceTransform,\n shouldMarkDoMorph,\n STATE_VALUE_ENUM\n} from '@visactor/vchart';\nimport { registerElementHighlightByGraphicName } from '../element-highlight-by-graphic-name';\nimport { registerElementSelectByGraphicName } from '../element-select-by-graphic-name';\nimport { graphicAttributeTransform, pictogram } from './transform';\n\nexport interface SVGParsedElementExtend extends SVGParsedElement {\n _finalAttributes: Record<string, any>;\n _uniqueId: string; // 用于处理 svg 中 id 重复的情况\n}\n\nexport class PictogramSeries<T extends IPictogramSeriesSpec = IPictogramSeriesSpec> extends GeoSeries<T> {\n static readonly type: string = PICTOGRAM_SERIES_TYPE;\n type = PICTOGRAM_SERIES_TYPE;\n static readonly mark = PictogramSeriesMark;\n static readonly transformerConstructor = PictogramSeriesSpecTransformer;\n\n svg!: string;\n\n protected _pictogramMark: IGroupMark;\n protected _parsedSvgResult: SVGParserResult;\n private _labelMark: ITextMark;\n\n private _idToMark: Map<string, IMark> = new Map();\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this.svg = this._spec.svg;\n this._nameField = this._spec.nameField;\n this._valueField = this._spec.valueField;\n\n if (!this.svg) {\n this._option?.onError(`svg source is not specified !`);\n }\n this._parsedSvgResult = getSVGSource(this.svg)?.latestData;\n\n if (!this._parsedSvgResult) {\n this._option?.onError(`'${this.svg}' is not registered !`);\n }\n }\n\n getDatumCenter(datum: SVGParsedElementExtend): [number, number] {\n return [Number.NaN, Number.NaN];\n }\n\n getDatumName(datum: SVGParsedElementExtend): string {\n return datum.name || datum._nameFromParent;\n }\n\n getMarksWithoutRoot(): IMark[] {\n return this.getMarks().filter(\n m => m.name && !m.name.includes('seriesGroup') && !m.name.includes('root') && m !== this._pictogramMark\n );\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n this._markAttributeContext.getTransformMatrix = this.getRootMatrix.bind(this);\n this._markAttributeContext.coordToPosition = this.coordToPosition.bind(this);\n this._markAttributeContext.dataToPosition = this.dataToPosition.bind(this);\n }\n\n protected _defaultHoverConfig(finalHoverSpec: IHoverSpec) {\n return {\n type: ELEMENT_HIGHLIGHT_BY_GRPHIC_NAME,\n // trigger: finalHoverSpec.trigger as EventType,\n trigger: finalHoverSpec.trigger as GraphicEventType,\n triggerOff: 'pointerout' as GraphicEventType,\n blurState: STATE_VALUE_ENUM.STATE_HOVER_REVERSE,\n highlightState: STATE_VALUE_ENUM.STATE_HOVER\n };\n }\n\n protected _defaultSelectConfig(finalSelectSpec: ISelectSpec) {\n const isMultiple = finalSelectSpec.mode === 'multiple';\n const triggerOff = isValid(finalSelectSpec.triggerOff)\n ? finalSelectSpec.triggerOff\n : isMultiple\n ? ['empty', 'self']\n : ['empty', finalSelectSpec.trigger];\n\n return {\n type: ELEMENT_SELECT_BY_GRPHIC_NAME,\n trigger: finalSelectSpec.trigger as GraphicEventType,\n triggerOff: triggerOff as GraphicEventType,\n reverseState: STATE_VALUE_ENUM.STATE_SELECTED_REVERSE,\n state: STATE_VALUE_ENUM.STATE_SELECTED,\n isMultiple\n };\n }\n\n initMark() {\n this._pictogramMark = this._createMark(\n PictogramSeries.mark.pictogram,\n {\n groupKey: this.getDimensionField()[0],\n isSeriesMark: true,\n skipBeforeLayouted: true\n },\n {\n morph: shouldMarkDoMorph(this._spec, PictogramSeries.mark.pictogram.name)\n }\n ) as IGroupMark;\n\n if (!this._pictogramMark) {\n return;\n }\n this._pictogramMark.setData(this._mapViewData);\n this._pictogramMark.setUserId(PictogramSeries.mark.pictogram.name);\n for (const element of this._mapViewData.getDataView().latestData as SVGParserResult['elements']) {\n const { graphicType: type, name, parent, id, _nameFromParent, _uniqueId } = element;\n\n const mark = this._createMark(\n { type, name: name ?? _nameFromParent },\n {\n groupKey: _uniqueId,\n isSeriesMark: false,\n skipBeforeLayouted: true,\n parent: (this._idToMark.get(parent?._uniqueId) as IGroupMark) ?? this._pictogramMark\n },\n {\n morph: shouldMarkDoMorph(this._spec, PictogramSeries.mark.pictogram.name)\n }\n );\n\n if (mark) {\n mark.setData(this._mapViewData);\n mark.setUserId(_uniqueId); // id 必须唯一,但无法控制 svg 中元素有重复 id, 这里做一个保护\n this._idToMark.set(_uniqueId, mark);\n if (mark.type !== 'group') {\n mark.setMarkConfig({ graphicName: mark.name });\n }\n mark.setTransform([\n {\n type: 'filter',\n callback: (datum: SVGParsedElementExtend) => {\n return datum._uniqueId === _uniqueId;\n }\n }\n ]);\n }\n }\n this._initLabelMark();\n }\n\n private _initLabelMark() {\n // @ts-ignore\n if (this._spec.label.visible !== true) {\n return;\n }\n\n const labelMark = this._createMark(PictogramSeries.mark.label, {\n isSeriesMark: false,\n parent: this._pictogramMark,\n groupKey: '_uniqueId',\n skipBeforeLayouted: true\n }) as ITextMark;\n\n if (labelMark) {\n this._labelMark = labelMark;\n this._labelMark.setData(this._mapViewData);\n }\n }\n\n initLabelMarkStyle() {\n if (!this._labelMark) {\n return;\n }\n this.setMarkStyle(\n this._labelMark,\n {\n visible: (d: Datum) => !!this._validElement(d as SVGParsedElementExtend),\n x: (d: Datum) => this.dataToPosition(d, true)?.x,\n y: (d: Datum) => this.dataToPosition(d, true)?.y,\n text: (d: Datum) => d[this.nameField],\n textAlign: 'center',\n textBaseline: 'middle'\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n initMarkStyle() {\n const { root, viewBoxRect } = this._parsedSvgResult;\n const elements = this._mapViewData.getDataView().latestData as SVGParserResult['elements'];\n if (root) {\n this.setMarkStyle(\n this._pictogramMark,\n graphicAttributeTransform.group(root.attributes),\n 'normal',\n AttributeLevel.Built_In\n );\n if (root.transform) {\n this.setMarkStyle(\n this._pictogramMark,\n {\n postMatrix: () => root.transform\n },\n 'normal',\n AttributeLevel.Built_In\n );\n }\n if (viewBoxRect) {\n // fill should be true or content will be invisible\n this._pictogramMark.setMarkConfig({\n clip: true,\n clipPath: [createRect({ ...viewBoxRect, fill: true }) as any]\n });\n }\n }\n for (const element of elements) {\n const { _uniqueId, _finalAttributes: attributes } = element as SVGParsedElementExtend;\n const mark = this._idToMark.get(_uniqueId);\n const valid = this._validElement(element);\n if (mark) {\n // 描边粗细跟随缩放倍数\n this.setMarkStyle(mark, { keepStrokeScale: true }, 'normal', AttributeLevel.Built_In);\n if (valid) {\n this.initMarkStyleWithSpec(mark, merge({}, this._spec.pictogram, (this._spec as any)[mark.name]));\n this.setMarkStyle(mark, attributes, 'normal', AttributeLevel.Series);\n mark.setPostProcess('fill', (result, datum) => {\n return isValid(result) ? result : this._spec.defaultFillColor;\n });\n } else {\n // 对于没有设置 name 的元素,不支持响应事件、改变样式\n mark.setMarkConfig({ interactive: false });\n this.setMarkStyle(mark, attributes, 'normal', AttributeLevel.Built_In);\n }\n }\n }\n\n this.initLabelMarkStyle();\n }\n /** 在 svg 中使用 name attribute 标注了的图元*/\n protected _validElement(element: SVGParsedElement) {\n return element.name || element._nameFromParent;\n }\n\n protected initTooltip() {\n this._tooltipHelper = new PictogramSeriesTooltipHelper(this);\n this.getMarksWithoutRoot().forEach(mark => {\n if (mark && mark.name) {\n this._tooltipHelper.activeTriggerSet.mark.add(mark);\n }\n });\n }\n\n dataToPosition(datum: Datum, global = false): IPointLike {\n if (!datum) {\n return null;\n }\n const name = datum[this.nameField];\n if (!name) {\n return null;\n }\n\n const mark = this.getMarksWithoutRoot().filter(mark => mark.name === name);\n if (!mark || mark.length === 0) {\n return null;\n }\n let bounds = new Bounds();\n if (global) {\n mark.forEach(m => {\n bounds = bounds.union(m.getGraphics()[0].globalAABBBounds);\n });\n } else {\n mark.forEach(m => {\n bounds = bounds.union(m.getProduct().AABBBounds);\n });\n }\n\n const point = { x: (bounds.x1 + bounds.x2) / 2, y: (bounds.y1 + bounds.y2) / 2 };\n\n if (global) {\n const { x, y } = this.getLayoutStartPoint();\n point.x -= x;\n point.y -= y;\n }\n return point;\n }\n\n coordToPosition(point: IPoint): IPoint | undefined {\n if (!point) {\n return null;\n }\n const { x, y } = point;\n const matrix = this.getRootMatrix();\n if (!matrix) {\n return null;\n }\n const position = {};\n matrix.getInverse().transformPoint({ x, y }, position as IPoint);\n return position as IPoint;\n }\n\n getRootMatrix() {\n return this.getPictogramRootGraphic()?.transMatrix as IMatrix;\n }\n\n getPictogramRootGraphic(): IGroup {\n return this._pictogramMark.getProduct();\n }\n\n initData() {\n super.initData();\n const parsedSvg = svgSourceMap.get(this.svg);\n if (!parsedSvg) {\n this._option?.onError('no valid svg found!');\n }\n const svgData = new DataView(this._dataSet, { name: `pictogram_${this.id}_data` });\n registerDataSetInstanceTransform(this._dataSet, 'pictogram', pictogram);\n registerDataSetInstanceTransform(this._dataSet, 'lookup', lookup);\n svgData\n .parse([parsedSvg], {\n type: 'dataview'\n })\n .transform({ type: 'pictogram' })\n .transform({\n type: 'lookup',\n options: {\n from: () => this.getViewData().latestData,\n key: 'name',\n fields: this._nameField,\n set: (a: Datum, b: Datum) => {\n if (b) {\n a.data = b;\n }\n }\n }\n })\n .transform({\n type: 'lookup',\n options: {\n from: () => this.getViewData().latestData,\n key: '_nameFromParent',\n fields: this._nameField,\n set: (a: Datum, b: Datum) => {\n if (b) {\n a.data = b;\n }\n }\n }\n });\n this._data?.getDataView().target.addListener('change', svgData.reRunAllTransform);\n this._mapViewData = new CompilableData(this._option, svgData);\n }\n\n mapViewDataUpdate() {\n this._mapViewData.updateData();\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n this._mapViewData?.getDataView().reRunAllTransform();\n }\n\n updateSVGSize() {\n const { width: regionWidth, height: regionHeight } = this.getLayoutRect();\n const regionCenterX = regionWidth / 2;\n const regionCenterY = regionHeight / 2;\n const root = this.getPictogramRootGraphic();\n if (root) {\n const bounds = root.AABBBounds;\n const { x1, x2, y1, y2 } = root.AABBBounds;\n const width = bounds.width();\n const height = bounds.height();\n\n const rootCenterX = (x1 + x2) / 2;\n const rootCenterY = (y1 + y2) / 2;\n\n const scaleX = regionWidth / width;\n const scaleY = regionHeight / height;\n const scale = Math.min(scaleX, scaleY);\n\n root.scale(scale, scale, { x: rootCenterX, y: rootCenterY });\n root.translate(regionCenterX - rootCenterX, regionCenterY - rootCenterY);\n }\n }\n\n protected initEvent(): void {\n super.initEvent();\n this._mapViewData.getDataView()?.target.addListener('change', this.mapViewDataUpdate.bind(this));\n // 必须在有 vrender mark 的时机后更新\n this.event.on(ChartEvent.afterMarkLayoutEnd, this.updateSVGSize.bind(this));\n }\n\n handleZoom(e: ZoomEventParam) {\n const { scale, scaleCenter } = e;\n if (scale === 1) {\n return;\n }\n\n const root = this.getPictogramRootGraphic();\n if (root) {\n if (!root.attribute.postMatrix) {\n root.setAttributes({\n postMatrix: new Matrix()\n });\n }\n root.scale(scale, scale, scaleCenter);\n }\n }\n\n handlePan(e: PanEventParam) {\n const { delta } = e;\n if (delta[0] === 0 && delta[1] === 0) {\n return;\n }\n const root = this.getPictogramRootGraphic();\n if (root) {\n if (!root.attribute.postMatrix) {\n root.setAttributes({\n postMatrix: new Matrix()\n });\n }\n root.translate(delta[0], delta[1]);\n }\n }\n\n getMarkData(datum: Datum) {\n return datum.data ?? {};\n }\n\n getMeasureField(): string[] {\n return [this.valueField];\n }\n\n getDimensionField(): string[] {\n return [this.nameField];\n }\n protected _getSeriesInfo(field: string, keys: string[]) {\n const defaultShapeType = this.getDefaultShapeType();\n return keys.map(key => {\n return {\n key,\n originalKey: key,\n style: this.getSeriesStyle({\n data: {\n [field]: key\n }\n }),\n shapeType: defaultShapeType\n } as ISeriesSeriesInfo;\n });\n }\n\n release(): void {\n this._parsedSvgResult = null;\n this._idToMark.clear();\n this._idToMark = null;\n }\n}\n\nexport const registerPictogramSeries = () => {\n // 注册语法元素\n Factory.registerSeries(PictogramSeries.type, PictogramSeries);\n Factory.registerImplement('registerSVG', registerSVGSource);\n Factory.registerImplement('unregisterSVG', unregisterSVGSource);\n registerElementHighlightByGraphicName();\n registerElementSelectByGraphicName();\n};\n"]}
1
+ {"version":3,"sources":["../src/charts/pictogram/series/pictogram.ts"],"names":[],"mappings":"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","file":"pictogram.js","sourcesContent":["import { DataView, type SVGParsedElement, type SVGParserResult } from '@visactor/vchart';\nimport type { IPictogramSeriesSpec } from './interface';\nimport {\n ELEMENT_HIGHLIGHT_BY_GRPHIC_NAME,\n ELEMENT_SELECT_BY_GRPHIC_NAME,\n PICTOGRAM_SERIES_TYPE,\n PictogramSeriesMark\n} from './constant';\nimport {\n SVG_VIEWPORT_RECT_KEY,\n getSVGSource,\n registerSVGSource,\n svgSourceMap,\n unregisterSVGSource,\n type SVGParserResultWithViewport\n} from './svg-source';\nimport { PictogramSeriesSpecTransformer } from './pictogram-transformer';\nimport type { IMatrix, IPoint, IPointLike, GraphicEventType } from '@visactor/vchart';\nimport { Bounds, Matrix, isValid, merge } from '@visactor/vchart';\nimport { createRect, type IGroup } from '@visactor/vchart';\nimport { PictogramSeriesTooltipHelper } from './tooltip-helper';\nimport type {\n Datum,\n IGroupMark,\n IHoverSpec,\n IMark,\n ISelectSpec,\n ISeriesSeriesInfo,\n ITextMark,\n PanEventParam,\n ZoomEventParam\n} from '@visactor/vchart';\nimport {\n AttributeLevel,\n CompilableData,\n Factory,\n GeoSeries,\n lookup,\n registerDataSetInstanceTransform,\n shouldMarkDoMorph,\n STATE_VALUE_ENUM\n} from '@visactor/vchart';\nimport { registerElementHighlightByGraphicName } from '../element-highlight-by-graphic-name';\nimport { registerElementSelectByGraphicName } from '../element-select-by-graphic-name';\nimport { graphicAttributeTransform, pictogram } from './transform';\n\nexport interface SVGParsedElementExtend extends SVGParsedElement {\n _finalAttributes: Record<string, any>;\n _uniqueId: string; // 用于处理 svg 中 id 重复的情况\n}\n\nexport class PictogramSeries<T extends IPictogramSeriesSpec = IPictogramSeriesSpec> extends GeoSeries<T> {\n static readonly type: string = PICTOGRAM_SERIES_TYPE;\n type = PICTOGRAM_SERIES_TYPE;\n static readonly mark = PictogramSeriesMark;\n static readonly transformerConstructor = PictogramSeriesSpecTransformer;\n\n svg!: string;\n\n protected _pictogramMark: IGroupMark;\n protected _parsedSvgResult: SVGParserResultWithViewport;\n private _labelMark: ITextMark;\n\n private _idToMark: Map<string, IMark> = new Map();\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this.svg = this._spec.svg;\n this._nameField = this._spec.nameField;\n this._valueField = this._spec.valueField;\n\n if (!this.svg) {\n this._option?.onError(`svg source is not specified !`);\n }\n this._parsedSvgResult = getSVGSource(this.svg)?.latestData;\n\n if (!this._parsedSvgResult) {\n this._option?.onError(`'${this.svg}' is not registered !`);\n }\n }\n\n getDatumCenter(datum: SVGParsedElementExtend): [number, number] {\n return [Number.NaN, Number.NaN];\n }\n\n getDatumName(datum: SVGParsedElementExtend): string {\n return datum.name || datum._nameFromParent;\n }\n\n getMarksWithoutRoot(): IMark[] {\n return this.getMarks().filter(\n m => m.name && !m.name.includes('seriesGroup') && !m.name.includes('root') && m !== this._pictogramMark\n );\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n this._markAttributeContext.getTransformMatrix = this.getRootMatrix.bind(this);\n this._markAttributeContext.coordToPosition = this.coordToPosition.bind(this);\n this._markAttributeContext.dataToPosition = this.dataToPosition.bind(this);\n }\n\n protected _defaultHoverConfig(finalHoverSpec: IHoverSpec) {\n return {\n type: ELEMENT_HIGHLIGHT_BY_GRPHIC_NAME,\n // trigger: finalHoverSpec.trigger as EventType,\n trigger: finalHoverSpec.trigger as GraphicEventType,\n triggerOff: 'pointerout' as GraphicEventType,\n blurState: STATE_VALUE_ENUM.STATE_HOVER_REVERSE,\n highlightState: STATE_VALUE_ENUM.STATE_HOVER\n };\n }\n\n protected _defaultSelectConfig(finalSelectSpec: ISelectSpec) {\n const isMultiple = finalSelectSpec.mode === 'multiple';\n const triggerOff = isValid(finalSelectSpec.triggerOff)\n ? finalSelectSpec.triggerOff\n : isMultiple\n ? ['empty', 'self']\n : ['empty', finalSelectSpec.trigger];\n\n return {\n type: ELEMENT_SELECT_BY_GRPHIC_NAME,\n trigger: finalSelectSpec.trigger as GraphicEventType,\n triggerOff: triggerOff as GraphicEventType,\n reverseState: STATE_VALUE_ENUM.STATE_SELECTED_REVERSE,\n state: STATE_VALUE_ENUM.STATE_SELECTED,\n isMultiple\n };\n }\n\n initMark() {\n this._pictogramMark = this._createMark(\n PictogramSeries.mark.pictogram,\n {\n groupKey: this.getDimensionField()[0],\n isSeriesMark: true,\n skipBeforeLayouted: true\n },\n {\n morph: shouldMarkDoMorph(this._spec, PictogramSeries.mark.pictogram.name)\n }\n ) as IGroupMark;\n\n if (!this._pictogramMark) {\n return;\n }\n this._pictogramMark.setData(this._mapViewData);\n this._pictogramMark.setUserId(PictogramSeries.mark.pictogram.name);\n for (const element of this._mapViewData.getDataView().latestData as SVGParserResult['elements']) {\n const { graphicType: type, name, parent, id, _nameFromParent, _uniqueId } = element;\n\n const mark = this._createMark(\n { type, name: name ?? _nameFromParent },\n {\n groupKey: _uniqueId,\n isSeriesMark: false,\n skipBeforeLayouted: true,\n parent: (this._idToMark.get(parent?._uniqueId) as IGroupMark) ?? this._pictogramMark\n },\n {\n morph: shouldMarkDoMorph(this._spec, PictogramSeries.mark.pictogram.name)\n }\n );\n\n if (mark) {\n mark.setData(this._mapViewData);\n mark.setUserId(_uniqueId); // id 必须唯一,但无法控制 svg 中元素有重复 id, 这里做一个保护\n this._idToMark.set(_uniqueId, mark);\n if (mark.type !== 'group') {\n mark.setMarkConfig({ graphicName: mark.name });\n }\n mark.setTransform([\n {\n type: 'filter',\n callback: (datum: SVGParsedElementExtend) => {\n return datum._uniqueId === _uniqueId;\n }\n }\n ]);\n }\n }\n this._initLabelMark();\n }\n\n private _initLabelMark() {\n // @ts-ignore\n if (this._spec.label.visible !== true) {\n return;\n }\n\n const labelMark = this._createMark(PictogramSeries.mark.label, {\n isSeriesMark: false,\n parent: this._pictogramMark,\n groupKey: '_uniqueId',\n skipBeforeLayouted: true\n }) as ITextMark;\n\n if (labelMark) {\n this._labelMark = labelMark;\n this._labelMark.setData(this._mapViewData);\n }\n }\n\n initLabelMarkStyle() {\n if (!this._labelMark) {\n return;\n }\n this.setMarkStyle(\n this._labelMark,\n {\n visible: (d: Datum) => !!this._validElement(d as SVGParsedElementExtend),\n x: (d: Datum) => this.dataToPosition(d, true)?.x,\n y: (d: Datum) => this.dataToPosition(d, true)?.y,\n text: (d: Datum) => d[this.nameField],\n textAlign: 'center',\n textBaseline: 'middle'\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n initMarkStyle() {\n const { root } = this._parsedSvgResult;\n const svgViewportRect = this._getSvgViewportRect();\n const elements = this._mapViewData.getDataView().latestData as SVGParserResult['elements'];\n if (root) {\n this.setMarkStyle(\n this._pictogramMark,\n graphicAttributeTransform.group(root.attributes),\n 'normal',\n AttributeLevel.Built_In\n );\n this.setMarkStyle(\n this._pictogramMark,\n {\n postMatrix: () => this._getFittedSvgRootMatrix()\n },\n 'normal',\n AttributeLevel.Built_In\n );\n if (svgViewportRect) {\n // fill should be true or content will be invisible\n this._pictogramMark.setMarkConfig({\n clip: true,\n clipPath: [createRect({ ...svgViewportRect, fill: true }) as any]\n });\n }\n }\n for (const element of elements) {\n const { _uniqueId, _finalAttributes: attributes } = element as SVGParsedElementExtend;\n const mark = this._idToMark.get(_uniqueId);\n const valid = this._validElement(element);\n if (mark) {\n // 描边粗细跟随缩放倍数\n this.setMarkStyle(mark, { keepStrokeScale: true }, 'normal', AttributeLevel.Built_In);\n if (valid) {\n this.initMarkStyleWithSpec(mark, merge({}, this._spec.pictogram, (this._spec as any)[mark.name]));\n this.setMarkStyle(mark, attributes, 'normal', AttributeLevel.Series);\n mark.setPostProcess('fill', (result, datum) => {\n return isValid(result) ? result : this._spec.defaultFillColor;\n });\n } else {\n // 对于没有设置 name 的元素,不支持响应事件、改变样式\n mark.setMarkConfig({ interactive: false });\n this.setMarkStyle(mark, attributes, 'normal', AttributeLevel.Built_In);\n }\n }\n }\n\n this.initLabelMarkStyle();\n }\n /** 在 svg 中使用 name attribute 标注了的图元*/\n protected _validElement(element: SVGParsedElement) {\n return element.name || element._nameFromParent;\n }\n\n protected initTooltip() {\n this._tooltipHelper = new PictogramSeriesTooltipHelper(this);\n this.getMarksWithoutRoot().forEach(mark => {\n if (mark && mark.name) {\n this._tooltipHelper.activeTriggerSet.mark.add(mark);\n }\n });\n }\n\n dataToPosition(datum: Datum, global = false): IPointLike {\n if (!datum) {\n return null;\n }\n const name = datum[this.nameField];\n if (!name) {\n return null;\n }\n\n const mark = this.getMarksWithoutRoot().filter(mark => mark.name === name);\n if (!mark || mark.length === 0) {\n return null;\n }\n let bounds = new Bounds();\n if (global) {\n mark.forEach(m => {\n bounds = bounds.union(m.getGraphics()[0].globalAABBBounds);\n });\n } else {\n mark.forEach(m => {\n bounds = bounds.union(m.getProduct().AABBBounds);\n });\n }\n\n const point = { x: (bounds.x1 + bounds.x2) / 2, y: (bounds.y1 + bounds.y2) / 2 };\n\n if (global) {\n const { x, y } = this.getLayoutStartPoint();\n point.x -= x;\n point.y -= y;\n }\n return point;\n }\n\n coordToPosition(point: IPoint): IPoint | undefined {\n if (!point) {\n return null;\n }\n const { x, y } = point;\n const matrix = this.getRootMatrix();\n if (!matrix) {\n return null;\n }\n const position = {};\n matrix.getInverse().transformPoint({ x, y }, position as IPoint);\n return position as IPoint;\n }\n\n getRootMatrix() {\n return this.getPictogramRootGraphic()?.transMatrix as IMatrix;\n }\n\n getPictogramRootGraphic(): IGroup {\n return this._pictogramMark.getProduct();\n }\n\n private _getSvgRootMatrix() {\n const transform = this._parsedSvgResult?.root?.transform as IMatrix;\n return transform\n ? new Matrix(transform.a, transform.b, transform.c, transform.d, transform.e, transform.f)\n : new Matrix();\n }\n\n private _getSvgViewportRect() {\n const viewBoxRect = this._parsedSvgResult?.viewBoxRect;\n\n if (viewBoxRect) {\n return viewBoxRect;\n }\n\n const { width, height } = this._parsedSvgResult ?? {};\n if (Number.isFinite(width) && Number.isFinite(height) && width > 0 && height > 0) {\n return {\n x: 0,\n y: 0,\n width,\n height\n };\n }\n\n return this._parsedSvgResult?.[SVG_VIEWPORT_RECT_KEY] ?? null;\n }\n\n private _getSvgRootBounds(rootMatrix: Matrix) {\n const viewBoxRect = this._getSvgViewportRect();\n\n if (!viewBoxRect) {\n return null;\n }\n\n const bounds = new Bounds().setValue(\n viewBoxRect.x,\n viewBoxRect.y,\n viewBoxRect.x + viewBoxRect.width,\n viewBoxRect.y + viewBoxRect.height\n );\n bounds.transformWithMatrix(rootMatrix);\n\n return bounds;\n }\n\n private _appendMatrixScale(matrix: Matrix, scale: number, center: IPointLike) {\n const nextMatrix = new Matrix();\n\n nextMatrix.translate(center.x, center.y);\n nextMatrix.scale(scale, scale);\n nextMatrix.translate(-center.x, -center.y);\n nextMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n\n return nextMatrix;\n }\n\n private _appendMatrixTranslate(matrix: Matrix, dx: number, dy: number) {\n const nextMatrix = new Matrix();\n\n nextMatrix.translate(dx, dy);\n nextMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n\n return nextMatrix;\n }\n\n private _getFittedSvgRootMatrix() {\n const rootMatrix = this._getSvgRootMatrix();\n const bounds = this._getSvgRootBounds(rootMatrix);\n\n if (!bounds) {\n return rootMatrix;\n }\n\n const width = bounds.width();\n const height = bounds.height();\n if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {\n return rootMatrix;\n }\n\n const { width: regionWidth, height: regionHeight } = this.getLayoutRect();\n const rootCenterX = (bounds.x1 + bounds.x2) / 2;\n const rootCenterY = (bounds.y1 + bounds.y2) / 2;\n const scale = Math.min(regionWidth / width, regionHeight / height);\n const scaledMatrix = this._appendMatrixScale(rootMatrix, scale, { x: rootCenterX, y: rootCenterY });\n\n return this._appendMatrixTranslate(scaledMatrix, regionWidth / 2 - rootCenterX, regionHeight / 2 - rootCenterY);\n }\n\n initData() {\n super.initData();\n const parsedSvg = svgSourceMap.get(this.svg);\n if (!parsedSvg) {\n this._option?.onError('no valid svg found!');\n }\n const svgData = new DataView(this._dataSet, { name: `pictogram_${this.id}_data` });\n registerDataSetInstanceTransform(this._dataSet, 'pictogram', pictogram);\n registerDataSetInstanceTransform(this._dataSet, 'lookup', lookup);\n svgData\n .parse([parsedSvg], {\n type: 'dataview'\n })\n .transform({ type: 'pictogram' })\n .transform({\n type: 'lookup',\n options: {\n from: () => this.getViewData().latestData,\n key: 'name',\n fields: this._nameField,\n set: (a: Datum, b: Datum) => {\n if (b) {\n a.data = b;\n }\n }\n }\n })\n .transform({\n type: 'lookup',\n options: {\n from: () => this.getViewData().latestData,\n key: '_nameFromParent',\n fields: this._nameField,\n set: (a: Datum, b: Datum) => {\n if (b) {\n a.data = b;\n }\n }\n }\n });\n this._data?.getDataView().target.addListener('change', svgData.reRunAllTransform);\n this._mapViewData = new CompilableData(this._option, svgData);\n }\n\n mapViewDataUpdate() {\n this._mapViewData.updateData();\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n this._mapViewData?.getDataView().reRunAllTransform();\n }\n\n updateSVGSize() {\n const root = this.getPictogramRootGraphic();\n if (root) {\n root.setAttributes({ postMatrix: this._getFittedSvgRootMatrix() });\n }\n }\n\n protected initEvent(): void {\n super.initEvent();\n this._mapViewData.getDataView()?.target.addListener('change', this.mapViewDataUpdate.bind(this));\n }\n\n handleZoom(e: ZoomEventParam) {\n const { scale, scaleCenter } = e;\n if (scale === 1) {\n return;\n }\n\n const root = this.getPictogramRootGraphic();\n if (root) {\n if (!root.attribute.postMatrix) {\n root.setAttributes({\n postMatrix: new Matrix()\n });\n }\n root.scale(scale, scale, scaleCenter);\n }\n }\n\n handlePan(e: PanEventParam) {\n const { delta } = e;\n if (delta[0] === 0 && delta[1] === 0) {\n return;\n }\n const root = this.getPictogramRootGraphic();\n if (root) {\n if (!root.attribute.postMatrix) {\n root.setAttributes({\n postMatrix: new Matrix()\n });\n }\n root.translate(delta[0], delta[1]);\n }\n }\n\n getMarkData(datum: Datum) {\n return datum.data ?? {};\n }\n\n getMeasureField(): string[] {\n return [this.valueField];\n }\n\n getDimensionField(): string[] {\n return [this.nameField];\n }\n protected _getSeriesInfo(field: string, keys: string[]) {\n const defaultShapeType = this.getDefaultShapeType();\n return keys.map(key => {\n return {\n key,\n originalKey: key,\n style: this.getSeriesStyle({\n data: {\n [field]: key\n }\n }),\n shapeType: defaultShapeType\n } as ISeriesSeriesInfo;\n });\n }\n\n release(): void {\n this._parsedSvgResult = null;\n this._idToMark.clear();\n this._idToMark = null;\n }\n}\n\nexport const registerPictogramSeries = () => {\n // 注册语法元素\n Factory.registerSeries(PictogramSeries.type, PictogramSeries);\n Factory.registerImplement('registerSVG', registerSVGSource);\n Factory.registerImplement('unregisterSVG', unregisterSVGSource);\n registerElementHighlightByGraphicName();\n registerElementSelectByGraphicName();\n};\n"]}
@@ -1,6 +1,16 @@
1
- import { DataView, type ISVGSourceOption } from '@visactor/vchart';
1
+ import { DataView, type SVGParserResult } from '@visactor/vchart';
2
2
  export declare const svgSourceMap: Map<string, DataView>;
3
- export declare function registerSVGSource(key: string, source: ISVGSourceOption): void;
3
+ export declare const SVG_VIEWPORT_RECT_KEY: "_vchartViewportRect";
4
+ export interface SVGViewportRect {
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ }
10
+ export interface SVGParserResultWithViewport extends SVGParserResult {
11
+ [SVG_VIEWPORT_RECT_KEY]?: SVGViewportRect;
12
+ }
13
+ export declare function registerSVGSource(key: string, source: string): void;
4
14
  export declare function unregisterSVGSource(key: string): void;
5
15
  export declare function getSVGSource(type: string): DataView;
6
16
  export declare function clearSVGSource(): void;
@@ -2,23 +2,47 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.clearSVGSource = exports.getSVGSource = exports.unregisterSVGSource = exports.registerSVGSource = exports.svgSourceMap = void 0;
5
+ }), exports.clearSVGSource = exports.getSVGSource = exports.unregisterSVGSource = exports.registerSVGSource = exports.SVG_VIEWPORT_RECT_KEY = exports.svgSourceMap = void 0;
6
6
 
7
7
  const vchart_1 = require("@visactor/vchart"), vchart_2 = require("@visactor/vchart");
8
8
 
9
9
  let svgDataSet;
10
10
 
11
+ exports.svgSourceMap = new Map, exports.SVG_VIEWPORT_RECT_KEY = "_vchartViewportRect";
12
+
13
+ const numberReg = /-?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/gi;
14
+
11
15
  function initSVGDataSet() {
12
16
  svgDataSet || (svgDataSet = new vchart_2.DataSet, (0, vchart_1.registerDataSetInstanceParser)(svgDataSet, "svg", vchart_2.svgParser));
13
17
  }
14
18
 
19
+ function parseEnableBackgroundViewport(source) {
20
+ var _a, _b, _c, _d;
21
+ const svgStartTag = null === (_a = source.match(/<svg\b[\s\S]*?>/i)) || void 0 === _a ? void 0 : _a[0], enableBackground = null === (_b = null == svgStartTag ? void 0 : svgStartTag.match(/\benable-background\s*=\s*(['"])(.*?)\1/i)) || void 0 === _b ? void 0 : _b[2];
22
+ if (!enableBackground || !/^\s*new\b/i.test(enableBackground)) return null;
23
+ const values = null !== (_d = null === (_c = enableBackground.match(numberReg)) || void 0 === _c ? void 0 : _c.map(Number)) && void 0 !== _d ? _d : [], [x, y, width, height] = values;
24
+ return !Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0 ? null : {
25
+ x: x,
26
+ y: y,
27
+ width: width,
28
+ height: height
29
+ };
30
+ }
31
+
32
+ function hasValidSize(parsedSvg) {
33
+ return Number.isFinite(parsedSvg.width) && Number.isFinite(parsedSvg.height) && parsedSvg.width > 0 && parsedSvg.height > 0;
34
+ }
35
+
15
36
  function registerSVGSource(key, source) {
16
37
  exports.svgSourceMap.has(key) && (0, vchart_1.warn)(`svg source key of '${key}' already exists, will be overwritten.`),
17
38
  initSVGDataSet();
18
39
  const dataView = new vchart_2.DataView(svgDataSet);
19
40
  dataView.parse(source, {
20
41
  type: "svg"
21
- }), exports.svgSourceMap.set(key, dataView);
42
+ });
43
+ const parsedSvg = dataView.latestData, viewportRect = parseEnableBackgroundViewport(source);
44
+ parsedSvg && viewportRect && !parsedSvg.viewBoxRect && !hasValidSize(parsedSvg) && (parsedSvg[exports.SVG_VIEWPORT_RECT_KEY] = viewportRect),
45
+ exports.svgSourceMap.set(key, dataView);
22
46
  }
23
47
 
24
48
  function unregisterSVGSource(key) {
@@ -33,6 +57,6 @@ function clearSVGSource() {
33
57
  exports.svgSourceMap.clear(), svgDataSet = null;
34
58
  }
35
59
 
36
- exports.svgSourceMap = new Map, exports.registerSVGSource = registerSVGSource, exports.unregisterSVGSource = unregisterSVGSource,
60
+ exports.registerSVGSource = registerSVGSource, exports.unregisterSVGSource = unregisterSVGSource,
37
61
  exports.getSVGSource = getSVGSource, exports.clearSVGSource = clearSVGSource;
38
62
  //# sourceMappingURL=svg-source.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/pictogram/series/svg-source.ts"],"names":[],"mappings":";;;AAAA,6CAAuE;AACvE,6CAAuF;AAE1E,QAAA,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;AAExD,IAAI,UAA0B,CAAC;AAE/B,SAAS,cAAc;IACrB,IAAI,UAAU,EAAE;QACd,OAAO;KACR;IACD,UAAU,GAAG,IAAI,gBAAO,EAAE,CAAC;IAC3B,IAAA,sCAA6B,EAAC,UAAU,EAAE,KAAK,EAAE,kBAAS,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,iBAAiB,CAAC,GAAW,EAAE,MAAwB;IACrE,IAAI,oBAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACzB,IAAA,aAAI,EAAC,sBAAsB,GAAG,wCAAwC,CAAC,CAAC;KACzE;IACD,cAAc,EAAE,CAAC;IACjB,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAC,UAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IAEH,oBAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAXD,8CAWC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,IAAI,CAAC,oBAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC1B,IAAA,aAAI,EAAC,gBAAgB,GAAG,oBAAoB,CAAC,CAAC;QAC9C,OAAO;KACR;IACD,oBAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAND,kDAMC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,oBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,oCAEC;AAED,SAAgB,cAAc;IAC5B,oBAAY,CAAC,KAAK,EAAE,CAAC;IACrB,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAHD,wCAGC","file":"svg-source.js","sourcesContent":["import { registerDataSetInstanceParser, warn } from '@visactor/vchart';\nimport { DataSet, DataView, svgParser, type ISVGSourceOption } from '@visactor/vchart';\n\nexport const svgSourceMap = new Map<string, DataView>();\n\nlet svgDataSet: DataSet | null;\n\nfunction initSVGDataSet() {\n if (svgDataSet) {\n return;\n }\n svgDataSet = new DataSet();\n registerDataSetInstanceParser(svgDataSet, 'svg', svgParser);\n}\n\nexport function registerSVGSource(key: string, source: ISVGSourceOption) {\n if (svgSourceMap.has(key)) {\n warn(`svg source key of '${key}' already exists, will be overwritten.`);\n }\n initSVGDataSet();\n const dataView = new DataView(svgDataSet!);\n dataView.parse(source, {\n type: 'svg'\n });\n\n svgSourceMap.set(key, dataView);\n}\n\nexport function unregisterSVGSource(key: string) {\n if (!svgSourceMap.has(key)) {\n warn(`map type of '${key}' does not exists.`);\n return;\n }\n svgSourceMap.delete(key);\n}\n\nexport function getSVGSource(type: string) {\n return svgSourceMap.get(type);\n}\n\nexport function clearSVGSource() {\n svgSourceMap.clear();\n svgDataSet = null;\n}\n"]}
1
+ {"version":3,"sources":["../src/charts/pictogram/series/svg-source.ts"],"names":[],"mappings":"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","file":"svg-source.js","sourcesContent":["import { registerDataSetInstanceParser, warn } from '@visactor/vchart';\nimport { DataSet, DataView, svgParser, type SVGParserResult } from '@visactor/vchart';\n\nexport const svgSourceMap = new Map<string, DataView>();\nexport const SVG_VIEWPORT_RECT_KEY = '_vchartViewportRect' as const;\n\nexport interface SVGViewportRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface SVGParserResultWithViewport extends SVGParserResult {\n [SVG_VIEWPORT_RECT_KEY]?: SVGViewportRect;\n}\n\nlet svgDataSet: DataSet | null;\n\nconst numberReg = /-?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[-+]?\\d+)?/gi;\n\nfunction initSVGDataSet() {\n if (svgDataSet) {\n return;\n }\n svgDataSet = new DataSet();\n registerDataSetInstanceParser(svgDataSet, 'svg', svgParser);\n}\n\nfunction parseEnableBackgroundViewport(source: string): SVGViewportRect | null {\n const svgStartTag = source.match(/<svg\\b[\\s\\S]*?>/i)?.[0];\n const enableBackground = svgStartTag?.match(/\\benable-background\\s*=\\s*(['\"])(.*?)\\1/i)?.[2];\n\n if (!enableBackground || !/^\\s*new\\b/i.test(enableBackground)) {\n return null;\n }\n\n const values = enableBackground.match(numberReg)?.map(Number) ?? [];\n const [x, y, width, height] = values;\n\n if (\n !Number.isFinite(x) ||\n !Number.isFinite(y) ||\n !Number.isFinite(width) ||\n !Number.isFinite(height) ||\n width <= 0 ||\n height <= 0\n ) {\n return null;\n }\n\n return { x, y, width, height };\n}\n\nfunction hasValidSize(parsedSvg: SVGParserResultWithViewport) {\n return (\n Number.isFinite(parsedSvg.width) && Number.isFinite(parsedSvg.height) && parsedSvg.width > 0 && parsedSvg.height > 0\n );\n}\n\nexport function registerSVGSource(key: string, source: string) {\n if (svgSourceMap.has(key)) {\n warn(`svg source key of '${key}' already exists, will be overwritten.`);\n }\n initSVGDataSet();\n const dataView = new DataView(svgDataSet!);\n dataView.parse(source, {\n type: 'svg'\n });\n const parsedSvg = dataView.latestData as SVGParserResultWithViewport;\n const viewportRect = parseEnableBackgroundViewport(source);\n\n if (parsedSvg && viewportRect && !parsedSvg.viewBoxRect && !hasValidSize(parsedSvg)) {\n parsedSvg[SVG_VIEWPORT_RECT_KEY] = viewportRect;\n }\n\n svgSourceMap.set(key, dataView);\n}\n\nexport function unregisterSVGSource(key: string) {\n if (!svgSourceMap.has(key)) {\n warn(`map type of '${key}' does not exists.`);\n return;\n }\n svgSourceMap.delete(key);\n}\n\nexport function getSVGSource(type: string) {\n return svgSourceMap.get(type);\n}\n\nexport function clearSVGSource() {\n svgSourceMap.clear();\n svgDataSet = null;\n}\n"]}
@@ -71,9 +71,12 @@ function getBarRegressionLineConfig(config) {
71
71
  }
72
72
 
73
73
  function appendBarRegressionLineConfig(chartSpec, spec) {
74
- var _a, _b;
75
- spec || (spec = null !== (_a = (0, vchart_1.get)(chartSpec, regression_line_1.REGRESSION_LINE)) && void 0 !== _a ? _a : (0,
76
- vchart_1.get)(null === (_b = chartSpec.series) || void 0 === _b ? void 0 : _b.find((s => s.type === vchart_2.SeriesTypeEnum.bar)), regression_line_1.REGRESSION_LINE));
74
+ var _a;
75
+ if (!spec) {
76
+ const seriesSpecs = Array.isArray(chartSpec.series) ? chartSpec.series : chartSpec.series ? [ chartSpec.series ] : [];
77
+ spec = null !== (_a = (0, vchart_1.get)(chartSpec, regression_line_1.REGRESSION_LINE)) && void 0 !== _a ? _a : (0,
78
+ vchart_1.get)(seriesSpecs.find((s => s.type === vchart_2.SeriesTypeEnum.bar)), regression_line_1.REGRESSION_LINE);
79
+ }
77
80
  (0, vchart_1.array)(spec).forEach((s => {
78
81
  if (!1 !== s.visible) {
79
82
  chartSpec.customMark || (chartSpec.customMark = []);