@visactor/vchart-extension 2.1.0-alpha.24 → 2.1.0-alpha.25

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 (189) hide show
  1. package/build/index.js +99 -308
  2. package/build/index.min.js +1 -1
  3. package/cjs/charts/3d/plugin.js +1 -1
  4. package/cjs/charts/3d/pyramid-3d.js +1 -1
  5. package/cjs/charts/3d/rect-3d.js +1 -1
  6. package/cjs/charts/3d/util.js +1 -1
  7. package/cjs/charts/axis-3d/axis-3d-mixin.js +1 -1
  8. package/cjs/charts/axis-3d/band-axis.js +1 -1
  9. package/cjs/charts/axis-3d/index.js +1 -1
  10. package/cjs/charts/axis-3d/linear-axis.js +1 -1
  11. package/cjs/charts/axis-3d/log-axis.js +1 -1
  12. package/cjs/charts/axis-3d/symlog-axis.js +1 -1
  13. package/cjs/charts/axis-3d/theme.js +1 -1
  14. package/cjs/charts/axis-3d/time-axis.js +1 -1
  15. package/cjs/charts/axis-3d/util.js +1 -1
  16. package/cjs/charts/bar-3d/constant.js +2 -1
  17. package/cjs/charts/candlestick/candlestick.js +1 -2
  18. package/cjs/charts/combination-candlestick/combination-candlestick-transformer.js +1 -1
  19. package/cjs/charts/combination-candlestick/combination-candlestick.js +1 -1
  20. package/cjs/charts/combination-candlestick/constant.js +1 -1
  21. package/cjs/charts/combination-candlestick/index.js +1 -1
  22. package/cjs/charts/combination-candlestick/interface.js +1 -1
  23. package/cjs/charts/conversion-funnel/arrow-data-transform.js +1 -1
  24. package/cjs/charts/conversion-funnel/constants.js +1 -1
  25. package/cjs/charts/conversion-funnel/conversion-funnel-transformer.js +1 -1
  26. package/cjs/charts/conversion-funnel/conversion-funnel.js +1 -1
  27. package/cjs/charts/conversion-funnel/index.js +1 -1
  28. package/cjs/charts/conversion-funnel/interface.js +2 -1
  29. package/cjs/charts/conversion-funnel/util.js +1 -1
  30. package/cjs/charts/funnel-3d/chart.js +1 -1
  31. package/cjs/charts/funnel-3d/constant.js +1 -1
  32. package/cjs/charts/funnel-3d/index.js +1 -1
  33. package/cjs/charts/funnel-3d/interface.js +1 -1
  34. package/cjs/charts/funnel-3d/series-spec-transformer.js +1 -1
  35. package/cjs/charts/funnel-3d/series.js +2 -1
  36. package/cjs/charts/funnel-3d/theme.js +1 -1
  37. package/cjs/charts/pictogram/element-highlight-by-graphic-name.js +1 -1
  38. package/cjs/charts/storyline/interface.d.ts +2 -4
  39. package/cjs/charts/storyline/interface.js.map +1 -1
  40. package/cjs/charts/storyline/layout.d.ts +0 -1
  41. package/cjs/charts/storyline/layout.js +4 -27
  42. package/cjs/charts/storyline/layout.js.map +1 -1
  43. package/cjs/charts/storyline/layouts/arc.js +0 -1
  44. package/cjs/charts/storyline/layouts/arc.js.map +1 -1
  45. package/cjs/charts/storyline/layouts/clock.js +0 -1
  46. package/cjs/charts/storyline/layouts/clock.js.map +1 -1
  47. package/cjs/charts/storyline/layouts/common.d.ts +0 -2
  48. package/cjs/charts/storyline/layouts/common.js +6 -11
  49. package/cjs/charts/storyline/layouts/common.js.map +1 -1
  50. package/cjs/charts/storyline/layouts/default.js +0 -1
  51. package/cjs/charts/storyline/layouts/default.js.map +1 -1
  52. package/cjs/charts/storyline/layouts/landscape.js +4 -5
  53. package/cjs/charts/storyline/layouts/landscape.js.map +1 -1
  54. package/cjs/charts/storyline/layouts/portrait.js +0 -1
  55. package/cjs/charts/storyline/layouts/portrait.js.map +1 -1
  56. package/cjs/charts/storyline/layouts/wing.js +51 -10
  57. package/cjs/charts/storyline/layouts/wing.js.map +1 -1
  58. package/cjs/charts/storyline/storyline-transformer.js +6 -22
  59. package/cjs/charts/storyline/storyline-transformer.js.map +1 -1
  60. package/cjs/components/bar-link/bar-link.js +1 -1
  61. package/cjs/components/bar-link/constant.js +1 -1
  62. package/cjs/components/bar-link/index.js +1 -1
  63. package/cjs/components/bar-link/type.js +1 -1
  64. package/cjs/components/bar-link/util.js +1 -1
  65. package/cjs/components/bar-regression-line/index.js +1 -1
  66. package/cjs/components/bar-regression-line/type.js +1 -2
  67. package/cjs/components/extension-mark-sync-state/extension-mark-sync-state.js +1 -1
  68. package/cjs/components/extension-mark-sync-state/index.js +1 -1
  69. package/cjs/components/extension-mark-sync-state/type.js +1 -1
  70. package/cjs/components/histogram-regression-line/index.js +1 -1
  71. package/cjs/components/histogram-regression-line/type.js +1 -1
  72. package/cjs/components/map-label/index.js +1 -1
  73. package/cjs/components/map-label/layout.js +1 -1
  74. package/cjs/components/map-label/map-label-transformer.js +1 -1
  75. package/cjs/components/map-label/map-label.js +1 -1
  76. package/cjs/components/map-label/theme.js +1 -1
  77. package/cjs/components/map-label/type.js +1 -1
  78. package/cjs/components/regression-line/index.js +1 -1
  79. package/cjs/components/regression-line/regression-line.js +1 -1
  80. package/cjs/components/regression-line/type.js +1 -1
  81. package/cjs/components/scatter-regression-line/index.js +1 -1
  82. package/cjs/components/scatter-regression-line/type.js +1 -1
  83. package/cjs/components/series-break/constant.js +1 -1
  84. package/cjs/components/series-break/index.js +1 -1
  85. package/cjs/components/series-break/series-break.js +1 -1
  86. package/cjs/components/series-break/type.js +1 -1
  87. package/cjs/components/series-break/util.js +1 -1
  88. package/cjs/components/series-label/constant.js +1 -1
  89. package/cjs/components/series-label/index.js +1 -2
  90. package/cjs/components/series-label/series-label.js +1 -1
  91. package/cjs/components/series-label/type.js +1 -1
  92. package/cjs/components/series-label/util.js +1 -1
  93. package/esm/charts/3d/plugin.js +1 -1
  94. package/esm/charts/3d/pyramid-3d.js +1 -1
  95. package/esm/charts/3d/rect-3d.js +1 -1
  96. package/esm/charts/3d/util.js +1 -1
  97. package/esm/charts/axis-3d/axis-3d-mixin.js +1 -1
  98. package/esm/charts/axis-3d/band-axis.js +1 -1
  99. package/esm/charts/axis-3d/index.js +1 -1
  100. package/esm/charts/axis-3d/linear-axis.js +1 -1
  101. package/esm/charts/axis-3d/log-axis.js +1 -1
  102. package/esm/charts/axis-3d/symlog-axis.js +1 -1
  103. package/esm/charts/axis-3d/theme.js +1 -1
  104. package/esm/charts/axis-3d/time-axis.js +1 -1
  105. package/esm/charts/axis-3d/util.js +1 -1
  106. package/esm/charts/bar-3d/constant.js +2 -1
  107. package/esm/charts/candlestick/candlestick.js +1 -2
  108. package/esm/charts/combination-candlestick/combination-candlestick-transformer.js +1 -1
  109. package/esm/charts/combination-candlestick/combination-candlestick.js +1 -1
  110. package/esm/charts/combination-candlestick/constant.js +1 -1
  111. package/esm/charts/combination-candlestick/index.js +1 -1
  112. package/esm/charts/combination-candlestick/interface.js +1 -1
  113. package/esm/charts/conversion-funnel/arrow-data-transform.js +1 -1
  114. package/esm/charts/conversion-funnel/constants.js +1 -1
  115. package/esm/charts/conversion-funnel/conversion-funnel-transformer.js +1 -1
  116. package/esm/charts/conversion-funnel/conversion-funnel.js +1 -1
  117. package/esm/charts/conversion-funnel/index.js +1 -1
  118. package/esm/charts/conversion-funnel/interface.js +2 -1
  119. package/esm/charts/conversion-funnel/util.js +1 -1
  120. package/esm/charts/funnel-3d/chart.js +1 -1
  121. package/esm/charts/funnel-3d/constant.js +1 -1
  122. package/esm/charts/funnel-3d/index.js +1 -1
  123. package/esm/charts/funnel-3d/interface.js +1 -1
  124. package/esm/charts/funnel-3d/series-spec-transformer.js +1 -1
  125. package/esm/charts/funnel-3d/series.js +2 -1
  126. package/esm/charts/funnel-3d/theme.js +1 -1
  127. package/esm/charts/pictogram/element-highlight-by-graphic-name.js +1 -1
  128. package/esm/charts/storyline/interface.d.ts +2 -4
  129. package/esm/charts/storyline/interface.js.map +1 -1
  130. package/esm/charts/storyline/layout.d.ts +0 -1
  131. package/esm/charts/storyline/layout.js +4 -27
  132. package/esm/charts/storyline/layout.js.map +1 -1
  133. package/esm/charts/storyline/layouts/arc.js +0 -1
  134. package/esm/charts/storyline/layouts/arc.js.map +1 -1
  135. package/esm/charts/storyline/layouts/clock.js +0 -1
  136. package/esm/charts/storyline/layouts/clock.js.map +1 -1
  137. package/esm/charts/storyline/layouts/common.d.ts +0 -2
  138. package/esm/charts/storyline/layouts/common.js +3 -8
  139. package/esm/charts/storyline/layouts/common.js.map +1 -1
  140. package/esm/charts/storyline/layouts/default.js +0 -1
  141. package/esm/charts/storyline/layouts/default.js.map +1 -1
  142. package/esm/charts/storyline/layouts/landscape.js +4 -5
  143. package/esm/charts/storyline/layouts/landscape.js.map +1 -1
  144. package/esm/charts/storyline/layouts/portrait.js +0 -1
  145. package/esm/charts/storyline/layouts/portrait.js.map +1 -1
  146. package/esm/charts/storyline/layouts/wing.js +50 -9
  147. package/esm/charts/storyline/layouts/wing.js.map +1 -1
  148. package/esm/charts/storyline/storyline-transformer.js +6 -21
  149. package/esm/charts/storyline/storyline-transformer.js.map +1 -1
  150. package/esm/components/bar-link/bar-link.js +1 -1
  151. package/esm/components/bar-link/constant.js +1 -1
  152. package/esm/components/bar-link/index.js +1 -1
  153. package/esm/components/bar-link/type.js +1 -1
  154. package/esm/components/bar-link/util.js +1 -1
  155. package/esm/components/bar-regression-line/index.js +1 -1
  156. package/esm/components/bar-regression-line/type.js +1 -2
  157. package/esm/components/extension-mark-sync-state/extension-mark-sync-state.js +1 -1
  158. package/esm/components/extension-mark-sync-state/index.js +1 -1
  159. package/esm/components/extension-mark-sync-state/type.js +1 -1
  160. package/esm/components/histogram-regression-line/index.js +1 -1
  161. package/esm/components/histogram-regression-line/type.js +1 -1
  162. package/esm/components/map-label/index.js +1 -1
  163. package/esm/components/map-label/layout.js +1 -1
  164. package/esm/components/map-label/map-label-transformer.js +1 -1
  165. package/esm/components/map-label/map-label.js +1 -1
  166. package/esm/components/map-label/theme.js +1 -1
  167. package/esm/components/map-label/type.js +1 -1
  168. package/esm/components/regression-line/index.js +1 -1
  169. package/esm/components/regression-line/regression-line.js +1 -1
  170. package/esm/components/regression-line/type.js +1 -1
  171. package/esm/components/scatter-regression-line/index.js +1 -1
  172. package/esm/components/scatter-regression-line/type.js +1 -1
  173. package/esm/components/series-break/constant.js +1 -1
  174. package/esm/components/series-break/index.js +1 -1
  175. package/esm/components/series-break/series-break.js +1 -1
  176. package/esm/components/series-break/type.js +1 -1
  177. package/esm/components/series-break/util.js +1 -1
  178. package/esm/components/series-label/constant.js +1 -1
  179. package/esm/components/series-label/index.js +1 -2
  180. package/esm/components/series-label/series-label.js +1 -1
  181. package/esm/components/series-label/type.js +1 -1
  182. package/esm/components/series-label/util.js +1 -1
  183. package/package.json +2 -2
  184. package/cjs/charts/storyline/layouts/ladder.d.ts +0 -5
  185. package/cjs/charts/storyline/layouts/ladder.js +0 -230
  186. package/cjs/charts/storyline/layouts/ladder.js.map +0 -1
  187. package/esm/charts/storyline/layouts/ladder.d.ts +0 -5
  188. package/esm/charts/storyline/layouts/ladder.js +0 -217
  189. package/esm/charts/storyline/layouts/ladder.js.map +0 -1
@@ -32,4 +32,4 @@ const register3DPlugin = () => {
32
32
  };
33
33
 
34
34
  exports.register3DPlugin = register3DPlugin;
35
- //# sourceMappingURL=plugin.js.map
35
+ //# sourceMappingURL=plugin.js.map
@@ -27,4 +27,4 @@ const registerPyramid3dMark = () => {
27
27
  };
28
28
 
29
29
  exports.registerPyramid3dMark = registerPyramid3dMark;
30
- //# sourceMappingURL=pyramid-3d.js.map
30
+ //# sourceMappingURL=pyramid-3d.js.map
@@ -33,4 +33,4 @@ const registerRect3dMark = () => {
33
33
  };
34
34
 
35
35
  exports.registerRect3dMark = registerRect3dMark;
36
- //# sourceMappingURL=rect-3d.js.map
36
+ //# sourceMappingURL=rect-3d.js.map
@@ -16,4 +16,4 @@ const is3DChart = spec => !!spec && ((0, exports.is3DChartType)(spec.type) || (0
16
16
  exports.is3DAxisChart)(spec), !0);
17
17
 
18
18
  exports.is3DChart = is3DChart;
19
- //# sourceMappingURL=util.js.map
19
+ //# sourceMappingURL=util.js.map
@@ -63,4 +63,4 @@ class Axis3dMixin {
63
63
  }
64
64
 
65
65
  exports.Axis3dMixin = Axis3dMixin;
66
- //# sourceMappingURL=axis-3d-mixin.js.map
66
+ //# sourceMappingURL=axis-3d-mixin.js.map
@@ -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
@@ -11,4 +11,4 @@ const layout_1 = require("../3d/layout"), plugin_1 = require("../3d/plugin"), ba
11
11
  };
12
12
 
13
13
  exports.registerAxis3dPlugin = registerAxis3dPlugin;
14
- //# sourceMappingURL=index.js.map
14
+ //# sourceMappingURL=index.js.map
@@ -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
@@ -11,4 +11,5 @@ Object.defineProperty(exports, "__esModule", {
11
11
  name: "bar3d",
12
12
  type: "rect3d"
13
13
  }
14
- };
14
+ };
15
+ //# sourceMappingURL=constant.js.map
@@ -22,5 +22,4 @@ const registerCandlestickChart = () => {
22
22
  (0, candlestick_1.registerCandlestickSeries)(), vchart_1.Factory.registerChart(CandlestickChart.type, CandlestickChart);
23
23
  };
24
24
 
25
- exports.registerCandlestickChart = registerCandlestickChart;
26
- //# sourceMappingURL=candlestick.js.map
25
+ exports.registerCandlestickChart = registerCandlestickChart;
@@ -201,4 +201,4 @@ class CombinationCandlestickChartSpecTransformer extends vchart_1.CartesianChart
201
201
  }
202
202
 
203
203
  exports.CombinationCandlestickChartSpecTransformer = CombinationCandlestickChartSpecTransformer;
204
- //# sourceMappingURL=combination-candlestick-transformer.js.map
204
+ //# sourceMappingURL=combination-candlestick-transformer.js.map
@@ -28,4 +28,4 @@ const registerCombinationCandlestickChart = () => {
28
28
  };
29
29
 
30
30
  exports.registerCombinationCandlestickChart = registerCombinationCandlestickChart;
31
- //# sourceMappingURL=combination-candlestick.js.map
31
+ //# sourceMappingURL=combination-candlestick.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.CombinationCandlestickChart_TYPE = void 0, exports.CombinationCandlestickChart_TYPE = "combinationCandlestick";
6
- //# sourceMappingURL=constant.js.map
6
+ //# sourceMappingURL=constant.js.map
@@ -19,4 +19,4 @@ Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), __exportStar(require("./combination-candlestick"), exports), __exportStar(require("./interface"), exports),
21
21
  __exportStar(require("./constant"), exports);
22
- //# sourceMappingURL=index.js.map
22
+ //# 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
@@ -95,5 +95,5 @@ function computeIndex(arrow, totalArrows) {
95
95
  return index;
96
96
  }
97
97
 
98
+ exports.conversionArrowTransform = conversionArrowTransform;
98
99
  //# sourceMappingURL=arrow-data-transform.js.map
99
- exports.conversionArrowTransform = conversionArrowTransform;
@@ -21,4 +21,4 @@ exports.DEFAULT_ARROW_MARK_STYLE = {
21
21
  }, exports.DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE = {
22
22
  fill: "#eff1f9"
23
23
  };
24
- //# sourceMappingURL=constants.js.map
24
+ //# sourceMappingURL=constants.js.map
@@ -193,5 +193,5 @@ function addFunnelBackgroundMark(funnelBackground) {
193
193
  });
194
194
  }
195
195
 
196
+ exports.ConversionFunnelChartSpecTransformer = ConversionFunnelChartSpecTransformer;
196
197
  //# sourceMappingURL=conversion-funnel-transformer.js.map
197
- exports.ConversionFunnelChartSpecTransformer = ConversionFunnelChartSpecTransformer;
@@ -59,4 +59,4 @@ const registerConversionFunnelChart = option => {
59
59
  };
60
60
 
61
61
  exports.registerConversionFunnelChart = registerConversionFunnelChart;
62
- //# sourceMappingURL=conversion-funnel.js.map
62
+ //# sourceMappingURL=conversion-funnel.js.map
@@ -18,4 +18,4 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), __exportStar(require("./interface"), exports), __exportStar(require("./conversion-funnel"), exports);
21
- //# sourceMappingURL=index.js.map
21
+ //# sourceMappingURL=index.js.map
@@ -2,4 +2,5 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- });
5
+ });
6
+ //# sourceMappingURL=interface.js.map
@@ -14,4 +14,4 @@ Object.defineProperty(exports, "__esModule", {
14
14
  value: !0
15
15
  }), exports.isSameArrow = exports.isArrowCross = void 0, exports.isArrowCross = isArrowCross,
16
16
  exports.isSameArrow = isSameArrow;
17
- //# sourceMappingURL=util.js.map
17
+ //# sourceMappingURL=util.js.map
@@ -22,4 +22,4 @@ const registerFunnel3dChart = () => {
22
22
  };
23
23
 
24
24
  exports.registerFunnel3dChart = registerFunnel3dChart;
25
- //# sourceMappingURL=chart.js.map
25
+ //# sourceMappingURL=chart.js.map
@@ -28,4 +28,4 @@ exports.funnel3dSeriesMark = Object.assign(Object.assign({}, vchart_1.baseSeries
28
28
  type: "rule"
29
29
  }
30
30
  });
31
- //# sourceMappingURL=constant.js.map
31
+ //# sourceMappingURL=constant.js.map
@@ -19,4 +19,4 @@ Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), __exportStar(require("./chart"), exports), __exportStar(require("./series"), exports),
21
21
  __exportStar(require("./series-spec-transformer"), exports), __exportStar(require("./interface"), exports);
22
- //# sourceMappingURL=index.js.map
22
+ //# 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 Funnel3dSeriesSpecTransformer extends vchart_1.FunnelSeriesSpecTransformer
13
13
  }
14
14
 
15
15
  exports.Funnel3dSeriesSpecTransformer = Funnel3dSeriesSpecTransformer;
16
- //# sourceMappingURL=series-spec-transformer.js.map
16
+ //# sourceMappingURL=series-spec-transformer.js.map
@@ -79,4 +79,5 @@ const registerFunnel3dSeries = () => {
79
79
  vchart_1.registerRuleMark)(), vchart_1.Factory.registerSeries(Funnel3dSeries.type, Funnel3dSeries);
80
80
  };
81
81
 
82
- exports.registerFunnel3dSeries = registerFunnel3dSeries;
82
+ exports.registerFunnel3dSeries = registerFunnel3dSeries;
83
+ //# sourceMappingURL=series.js.map
@@ -7,4 +7,4 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const vchart_1 = require("@visactor/vchart");
8
8
 
9
9
  exports.funnel3d = (0, vchart_1.getFunnelTheme)(!0);
10
- //# sourceMappingURL=theme.js.map
10
+ //# sourceMappingURL=theme.js.map
@@ -50,4 +50,4 @@ const registerElementHighlightByGraphicName = () => {
50
50
  };
51
51
 
52
52
  exports.registerElementHighlightByGraphicName = registerElementHighlightByGraphicName;
53
- //# sourceMappingURL=element-highlight-by-graphic-name.js.map
53
+ //# sourceMappingURL=element-highlight-by-graphic-name.js.map
@@ -1,9 +1,8 @@
1
1
  import type { IChartSpec, IComposedTextMarkSpec, IImageMarkSpec, IMarkSpec, IPathMarkSpec, IRectMarkSpec, ITextMarkSpec, StringOrNumber } from '@visactor/vchart';
2
- export type StorylineLayoutType = 'clock' | 'arc' | 'wing' | 'landscape' | 'portrait' | 'ladder' | 'spiral';
2
+ export type StorylineLayoutType = 'clock' | 'arc' | 'wing' | 'landscape' | 'portrait';
3
3
  export type StorylineImagePosition = 'top' | 'left' | 'right' | 'bottom';
4
4
  export type StorylineLineType = 'line' | 'polyline' | 'curve';
5
5
  export type StorylineWingDirection = 'left' | 'right';
6
- export type StorylineLadderDirection = 'up' | 'down';
7
6
  export type StorylineArcDirection = 'up' | 'down';
8
7
  export interface IStorylineBlock {
9
8
  id?: StringOrNumber;
@@ -20,8 +19,7 @@ export interface IStorylineLayoutOptions {
20
19
  radiusRatio?: number;
21
20
  startAngle?: number;
22
21
  endAngle?: number;
23
- direction?: StorylineWingDirection | StorylineLadderDirection | StorylineArcDirection;
24
- headline?: string;
22
+ direction?: StorylineWingDirection | StorylineArcDirection;
25
23
  }
26
24
  export interface IStorylineBlockSpec {
27
25
  width?: number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/storyline/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type {\n IChartSpec,\n IComposedTextMarkSpec,\n IImageMarkSpec,\n IMarkSpec,\n IPathMarkSpec,\n IRectMarkSpec,\n ITextMarkSpec,\n StringOrNumber\n} from '@visactor/vchart';\n\n/**\n * Storyline 图表支持的布局类型。\n */\nexport type StorylineLayoutType = 'clock' | 'arc' | 'wing' | 'landscape' | 'portrait' | 'ladder' | 'spiral';\n\n/**\n * block 内图片相对文本内容的摆放位置。\n */\nexport type StorylineImagePosition = 'top' | 'left' | 'right' | 'bottom';\n/**\n * block 之间连线的绘制方式。\n */\nexport type StorylineLineType = 'line' | 'polyline' | 'curve';\n/**\n * wing 布局的展开方向。\n */\nexport type StorylineWingDirection = 'left' | 'right';\n/**\n * ladder 布局的对角线方向。\n */\nexport type StorylineLadderDirection = 'up' | 'down';\n/**\n * arc 布局的弧形方向。\n */\nexport type StorylineArcDirection = 'up' | 'down';\n\n/**\n * Storyline 中单个叙事节点的数据配置。\n */\nexport interface IStorylineBlock {\n /**\n * 节点唯一标识。未配置时使用数据索引作为内部标识。\n */\n id?: StringOrNumber;\n /**\n * 节点标题文本。\n */\n title?: string;\n /**\n * 节点正文内容。传入数组时会按段落拼接为富文本内容。\n */\n content?: string | string[];\n /**\n * 节点主图片,支持图片 URL、HTMLImageElement 或 HTMLCanvasElement。\n */\n image?: string | HTMLImageElement | HTMLCanvasElement;\n /**\n * 绘制在主 image 背后的装饰图(如 portrait 布局的错位 shadow image)。\n * 若未配置,则不会绘制装饰 image。\n */\n subImage?: string | HTMLImageElement | HTMLCanvasElement;\n /**\n * 时间节点文本(如 \"2012\")。\n * 仅 portrait 布局生效:在中轴 rect 上沿每个 block 的 center.y 处纵向绘制。\n * 配合 spec.marker 控制样式与显隐。\n */\n marker?: string;\n /**\n * 绑定到该节点的原始业务数据,供外部交互或扩展逻辑使用。\n */\n datum?: unknown;\n}\n\n/**\n * Storyline 布局参数配置。\n */\nexport interface IStorylineLayoutOptions {\n /**\n * 布局类型。\n */\n type: StorylineLayoutType;\n /**\n * 边缘留白,支持单值或 [top, right, bottom, left]。\n */\n padding?: number | [number, number, number, number];\n /**\n * 对 circular/arc 布局生效,控制半径占可用空间的比例。\n */\n radiusRatio?: number;\n /**\n * 对 circular/arc 布局生效,角度单位为度。\n */\n startAngle?: number;\n /**\n * 对 circular/arc 布局生效,角度单位为度。\n */\n endAngle?: number;\n /**\n * 方向控制:\n * - wing 布局:'left' | 'right',圆心锚位置;\n * - ladder 布局:'up' | 'down','up' 表示左下→右上对角线(默认),'down' 表示左上→右下对角线;\n * - arc 布局:'up' | 'down','up' 表示穹顶(titleImage 贴底,弧线在上方),'down' 表示碗形(titleImage 贴顶,弧线在下方)。\n */\n direction?: StorylineWingDirection | StorylineLadderDirection | StorylineArcDirection;\n /**\n * 对 ladder 布局生效:贯穿画布的倾斜大字 headline。\n * 缺省时使用占位文本。倾斜方向自动跟随对角线。\n */\n headline?: string;\n}\n\n/**\n * Storyline 节点 block 的尺寸、间距、背景和样式配置。\n */\nexport interface IStorylineBlockSpec {\n /**\n * block 的固定宽度。配置后优先级高于 widthRatio、minWidth、maxWidth。\n */\n width?: number;\n /**\n * block 宽度相对可用视图宽度的比例。\n */\n widthRatio?: number;\n /**\n * block 自适应宽度的最小值。\n */\n minWidth?: number;\n /**\n * block 自适应宽度的最大值。\n */\n maxWidth?: number;\n /**\n * block 的固定高度。\n */\n height?: number;\n /**\n * block 内边距,支持单值或 [top, right, bottom, left]。\n */\n padding?: number | [number, number, number, number];\n /**\n * block 之间的布局间距。\n */\n gap?: number;\n /**\n * 是否展示 block 背后的卡片背景 rect(白底 + 描边 + 阴影)。\n * ladder 等少数布局支持,默认 false(不展示)。\n */\n showBackground?: boolean;\n /**\n * block 背景 rect 的图形样式配置。\n */\n style?: Partial<IRectMarkSpec>;\n}\n\n/**\n * Storyline 节点主图片配置。\n */\nexport interface IStorylineImageSpec extends IMarkSpec<IImageMarkSpec> {\n /**\n * 节点主图片宽度。\n */\n width?: number;\n /**\n * 节点主图片高度。\n */\n height?: number;\n /**\n * 节点主图片相对标题和正文的位置。\n */\n position?: StorylineImagePosition;\n /**\n * 节点主图片与文本内容之间的间距。\n */\n gap?: number;\n /**\n * 是否展示 image 背后的白色背景 rect(白底 + 主题色描边)。\n * 所有布局支持。\n * portrait / landscape 默认 false(不展示),其他布局默认 true(展示)。\n * 注:不影响 subImage(错位装饰图元)的显隐。\n */\n showBackground?: boolean;\n}\n\n/**\n * Storyline 标题图片配置,用于在不同布局中放置主题图片或标题图。\n */\nexport interface IStorylineTitleImageSpec extends IMarkSpec<IImageMarkSpec> {\n /**\n * 标题图片宽度。未配置时由布局根据画布尺寸自适应计算。\n */\n width?: number;\n /**\n * 标题图片高度。未配置时由布局根据宽度和默认比例自适应计算。\n */\n height?: number;\n /**\n * 是否显示标题图片。\n */\n visible?: boolean;\n /**\n * 标题图片资源,支持图片 URL、HTMLImageElement 或 HTMLCanvasElement。\n */\n image?: string | HTMLImageElement | HTMLCanvasElement;\n}\n\n/**\n * Storyline 连接线配置。\n */\nexport interface IStorylineLineSpec extends IMarkSpec<IPathMarkSpec> {\n /**\n * 是否显示连接线或布局主轴线。\n */\n visible?: boolean;\n /**\n * 连接线类型。\n */\n type?: StorylineLineType;\n /**\n * 是否在线段末端显示箭头。\n */\n showArrow?: boolean;\n /**\n * 箭头尺寸。\n */\n arrowSize?: number;\n /**\n * 连接线和 block 边缘之间的距离。\n */\n distance?: number;\n}\n\n/**\n * Storyline 图表总配置。\n */\nexport interface IStorylineSpec extends Omit<IChartSpec, 'type' | 'data' | 'series' | 'title' | 'layout'> {\n /**\n * 图表类型,固定为 'storyline'。\n */\n type: 'storyline';\n /**\n * Storyline 节点数据数组。\n */\n data: IStorylineBlock[];\n /**\n * 布局类型或布局参数配置。\n */\n layout?: StorylineLayoutType | IStorylineLayoutOptions;\n /**\n * 节点 block 的尺寸、间距、背景和样式配置。\n */\n block?: IStorylineBlockSpec;\n /**\n * 节点标题文本 mark 配置。\n */\n title?: IMarkSpec<ITextMarkSpec>;\n /**\n * 图表标题图片配置。\n */\n titleImage?: IStorylineTitleImageSpec;\n /**\n * 节点正文富文本 mark 配置。\n */\n content?: IMarkSpec<IComposedTextMarkSpec>;\n /**\n * 节点主图片配置。\n */\n image?: IStorylineImageSpec;\n /**\n * 节点之间连接线或布局主轴线配置。\n */\n line?: IStorylineLineSpec;\n /**\n * 时间节点文本配置(仅 portrait 布局生效)。\n * 当 spec.data[i].marker 有值时,在中轴 rect 上沿垂直方向绘制每个 block 的时间节点文本。\n */\n marker?: IMarkSpec<ITextMarkSpec>;\n /**\n * Storyline 主题色,用于连接线、轴、图片背景和强调元素的默认颜色。\n */\n themeColor?: string;\n}\n"]}
1
+ {"version":3,"sources":["../src/charts/storyline/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type {\n IChartSpec,\n IComposedTextMarkSpec,\n IImageMarkSpec,\n IMarkSpec,\n IPathMarkSpec,\n IRectMarkSpec,\n ITextMarkSpec,\n StringOrNumber\n} from '@visactor/vchart';\n\n/**\n * Storyline 图表支持的布局类型。\n */\nexport type StorylineLayoutType = 'clock' | 'arc' | 'wing' | 'landscape' | 'portrait';\n\n/**\n * block 内图片相对文本内容的摆放位置。\n */\nexport type StorylineImagePosition = 'top' | 'left' | 'right' | 'bottom';\n/**\n * block 之间连线的绘制方式。\n */\nexport type StorylineLineType = 'line' | 'polyline' | 'curve';\n/**\n * wing 布局的展开方向。\n */\nexport type StorylineWingDirection = 'left' | 'right';\n/**\n * arc 布局的弧形方向。\n */\nexport type StorylineArcDirection = 'up' | 'down';\n\n/**\n * Storyline 中单个叙事节点的数据配置。\n */\nexport interface IStorylineBlock {\n /**\n * 节点唯一标识。未配置时使用数据索引作为内部标识。\n */\n id?: StringOrNumber;\n /**\n * 节点标题文本。\n */\n title?: string;\n /**\n * 节点正文内容。传入数组时会按段落拼接为富文本内容。\n */\n content?: string | string[];\n /**\n * 节点主图片,支持图片 URL、HTMLImageElement 或 HTMLCanvasElement。\n */\n image?: string | HTMLImageElement | HTMLCanvasElement;\n /**\n * 绘制在主 image 背后的装饰图(如 portrait 布局的错位 shadow image)。\n * 若未配置,则不会绘制装饰 image。\n */\n subImage?: string | HTMLImageElement | HTMLCanvasElement;\n /**\n * 时间节点文本(如 \"2012\")。\n * 仅 portrait 布局生效:在中轴 rect 上沿每个 block 的 center.y 处纵向绘制。\n * 配合 spec.marker 控制样式与显隐。\n */\n marker?: string;\n /**\n * 绑定到该节点的原始业务数据,供外部交互或扩展逻辑使用。\n */\n datum?: unknown;\n}\n\n/**\n * Storyline 布局参数配置。\n */\nexport interface IStorylineLayoutOptions {\n /**\n * 布局类型。\n */\n type: StorylineLayoutType;\n /**\n * 边缘留白,支持单值或 [top, right, bottom, left]。\n */\n padding?: number | [number, number, number, number];\n /**\n * 对 circular/arc 布局生效,控制半径占可用空间的比例。\n */\n radiusRatio?: number;\n /**\n * 对 circular/arc 布局生效,角度单位为度。\n */\n startAngle?: number;\n /**\n * 对 circular/arc 布局生效,角度单位为度。\n */\n endAngle?: number;\n /**\n * 方向控制:\n * - wing 布局:'left' | 'right',圆心锚位置;\n * - arc 布局:'up' | 'down','up' 表示穹顶(titleImage 贴底,弧线在上方),'down' 表示碗形(titleImage 贴顶,弧线在下方)。\n */\n direction?: StorylineWingDirection | StorylineArcDirection;\n}\n\n/**\n * Storyline 节点 block 的尺寸、间距、背景和样式配置。\n */\nexport interface IStorylineBlockSpec {\n /**\n * block 的固定宽度。配置后优先级高于 widthRatio、minWidth、maxWidth。\n */\n width?: number;\n /**\n * block 宽度相对可用视图宽度的比例。\n */\n widthRatio?: number;\n /**\n * block 自适应宽度的最小值。\n */\n minWidth?: number;\n /**\n * block 自适应宽度的最大值。\n */\n maxWidth?: number;\n /**\n * block 的固定高度。\n */\n height?: number;\n /**\n * block 内边距,支持单值或 [top, right, bottom, left]。\n */\n padding?: number | [number, number, number, number];\n /**\n * block 之间的布局间距。\n */\n gap?: number;\n /**\n * 是否展示 block 背后的卡片背景 rect(白底 + 描边 + 阴影)。\n * 默认 false(不展示)。\n */\n showBackground?: boolean;\n /**\n * block 背景 rect 的图形样式配置。\n */\n style?: Partial<IRectMarkSpec>;\n}\n\n/**\n * Storyline 节点主图片配置。\n */\nexport interface IStorylineImageSpec extends IMarkSpec<IImageMarkSpec> {\n /**\n * 节点主图片宽度。\n */\n width?: number;\n /**\n * 节点主图片高度。\n */\n height?: number;\n /**\n * 节点主图片相对标题和正文的位置。\n */\n position?: StorylineImagePosition;\n /**\n * 节点主图片与文本内容之间的间距。\n */\n gap?: number;\n /**\n * 是否展示 image 背后的白色背景 rect(白底 + 主题色描边)。\n * 所有布局支持。\n * portrait / landscape 默认 false(不展示),其他布局默认 true(展示)。\n * 注:不影响 subImage(错位装饰图元)的显隐。\n */\n showBackground?: boolean;\n}\n\n/**\n * Storyline 标题图片配置,用于在不同布局中放置主题图片或标题图。\n */\nexport interface IStorylineTitleImageSpec extends IMarkSpec<IImageMarkSpec> {\n /**\n * 标题图片宽度。未配置时由布局根据画布尺寸自适应计算。\n */\n width?: number;\n /**\n * 标题图片高度。未配置时由布局根据宽度和默认比例自适应计算。\n */\n height?: number;\n /**\n * 是否显示标题图片。\n */\n visible?: boolean;\n /**\n * 标题图片资源,支持图片 URL、HTMLImageElement 或 HTMLCanvasElement。\n */\n image?: string | HTMLImageElement | HTMLCanvasElement;\n}\n\n/**\n * Storyline 连接线配置。\n */\nexport interface IStorylineLineSpec extends IMarkSpec<IPathMarkSpec> {\n /**\n * 是否显示连接线或布局主轴线。\n */\n visible?: boolean;\n /**\n * 连接线类型。\n */\n type?: StorylineLineType;\n /**\n * 是否在线段末端显示箭头。\n */\n showArrow?: boolean;\n /**\n * 箭头尺寸。\n */\n arrowSize?: number;\n /**\n * 连接线和 block 边缘之间的距离。\n */\n distance?: number;\n}\n\n/**\n * Storyline 图表总配置。\n */\nexport interface IStorylineSpec extends Omit<IChartSpec, 'type' | 'data' | 'series' | 'title' | 'layout'> {\n /**\n * 图表类型,固定为 'storyline'。\n */\n type: 'storyline';\n /**\n * Storyline 节点数据数组。\n */\n data: IStorylineBlock[];\n /**\n * 布局类型或布局参数配置。\n */\n layout?: StorylineLayoutType | IStorylineLayoutOptions;\n /**\n * 节点 block 的尺寸、间距、背景和样式配置。\n */\n block?: IStorylineBlockSpec;\n /**\n * 节点标题文本 mark 配置。\n */\n title?: IMarkSpec<ITextMarkSpec>;\n /**\n * 图表标题图片配置。\n */\n titleImage?: IStorylineTitleImageSpec;\n /**\n * 节点正文富文本 mark 配置。\n */\n content?: IMarkSpec<IComposedTextMarkSpec>;\n /**\n * 节点主图片配置。\n */\n image?: IStorylineImageSpec;\n /**\n * 节点之间连接线或布局主轴线配置。\n */\n line?: IStorylineLineSpec;\n /**\n * 时间节点文本配置(仅 portrait 布局生效)。\n * 当 spec.data[i].marker 有值时,在中轴 rect 上沿垂直方向绘制每个 block 的时间节点文本。\n */\n marker?: IMarkSpec<ITextMarkSpec>;\n /**\n * Storyline 主题色,用于连接线、轴、图片背景和强调元素的默认颜色。\n */\n themeColor?: string;\n}\n"]}
@@ -39,7 +39,6 @@ export interface StorylineComputeOptions {
39
39
  layout: StorylineLayoutType | IStorylineLayoutOptions | undefined;
40
40
  viewBox: StorylineSize;
41
41
  block: StorylineSize;
42
- gap?: number;
43
42
  padding?: number | [number, number, number, number];
44
43
  lineDistance?: number;
45
44
  }
@@ -38,8 +38,8 @@ const normalizeLayout = layout => layout ? "string" == typeof layout ? {
38
38
  exports.normalizeLayout = normalizeLayout;
39
39
 
40
40
  const computeStorylineLayout = (data, options) => {
41
- var _a, _b, _c;
42
- const layout = (0, exports.normalizeLayout)(options.layout), padding = (0, exports.normalizePadding)(null !== (_a = layout.padding) && void 0 !== _a ? _a : options.padding), gap = null !== (_b = options.gap) && void 0 !== _b ? _b : 40, lineDistance = null !== (_c = options.lineDistance) && void 0 !== _c ? _c : 8, blocks = computeBlockPositions(data, layout, options.viewBox, options.block, padding, gap), circleGuide = "clock" === layout.type ? computeClockCircleGuide(options.viewBox, options.block, padding, layout) : void 0;
41
+ var _a, _b;
42
+ const layout = (0, exports.normalizeLayout)(options.layout), padding = (0, exports.normalizePadding)(null !== (_a = layout.padding) && void 0 !== _a ? _a : options.padding), lineDistance = null !== (_b = options.lineDistance) && void 0 !== _b ? _b : 8, blocks = computeBlockPositions(data, layout, options.viewBox, options.block, padding), circleGuide = "clock" === layout.type ? computeClockCircleGuide(options.viewBox, options.block, padding, layout) : void 0;
43
43
  return {
44
44
  blocks: blocks,
45
45
  links: computeLinks(blocks, lineDistance),
@@ -49,7 +49,7 @@ const computeStorylineLayout = (data, options) => {
49
49
 
50
50
  exports.computeStorylineLayout = computeStorylineLayout;
51
51
 
52
- const computeBlockPositions = (data, layout, viewBox, block, padding, gap) => {
52
+ const computeBlockPositions = (data, layout, viewBox, block, padding) => {
53
53
  const count = data.length;
54
54
  if (!count) return [];
55
55
  const inner = {
@@ -67,23 +67,6 @@ const computeBlockPositions = (data, layout, viewBox, block, padding, gap) => {
67
67
  centers = lineCenters(count, center.x, inner.y + block.height / 2, center.x, inner.y + inner.height - block.height / 2);
68
68
  break;
69
69
 
70
- case "ladder":
71
- {
72
- const isDown = "down" === layout.direction, x0 = inner.x + block.width / 2, x1 = inner.x + inner.width - block.width / 2, yTop = inner.y + block.height / 2, yBot = inner.y + inner.height - block.height / 2, y0 = isDown ? yTop : yBot, y1 = isDown ? yBot : yTop, anchors = lineCenters(count, x0, y0, x1, y1), dx = x1 - x0, dy = y1 - y0, len = Math.hypot(dx, dy) || 1, nx = -dy / len, ny = dx / len, offset = 1.2 * Math.max(80, Math.min(240, Math.round(.42 * inner.height)));
73
- centers = anchors.map(((p, i) => {
74
- const sign = i % 2 == 0 ? 1 : -1;
75
- return {
76
- x: p.x + nx * offset * sign,
77
- y: p.y + ny * offset * sign
78
- };
79
- }));
80
- break;
81
- }
82
-
83
- case "spiral":
84
- centers = alternatingVerticalCenters(count, inner, block, gap);
85
- break;
86
-
87
70
  case "clock":
88
71
  centers = circularCenters(count, viewBox, block, padding, layout);
89
72
  break;
@@ -129,13 +112,7 @@ const computeBlockPositions = (data, layout, viewBox, block, padding, gap) => {
129
112
  x: x0 + (x1 - x0) * t,
130
113
  y: y0 + (y1 - y0) * t
131
114
  };
132
- })), alternatingVerticalCenters = (count, inner, block, gap) => {
133
- const baseX = inner.x + inner.width / 2, offset = Math.min(Math.max(.65 * block.width + gap / 2, 0), Math.max((inner.width - block.width) / 2, 0));
134
- return lineCenters(count, baseX, inner.y + block.height / 2, baseX, inner.y + inner.height - block.height / 2).map(((point, index) => ({
135
- x: point.x + (index % 2 == 0 ? -offset : offset),
136
- y: point.y
137
- })));
138
- }, circularCenters = (count, viewBox, block, padding, layout) => {
115
+ })), circularCenters = (count, viewBox, block, padding, layout) => {
139
116
  var _a;
140
117
  const guide = computeClockCircleGuide(viewBox, block, padding, layout), startAngle = null !== (_a = layout.startAngle) && void 0 !== _a ? _a : -90;
141
118
  if (1 === count) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/storyline/layout.ts"],"names":[],"mappings":"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","file":"layout.js","sourcesContent":["import type { IStorylineBlock, IStorylineLayoutOptions, StorylineLayoutType } from './interface';\n\nexport interface StorylineSize {\n width: number;\n height: number;\n}\n\nexport interface StorylinePadding {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface StorylinePoint {\n x: number;\n y: number;\n}\n\nexport interface StorylineBlockPosition extends StorylinePoint, StorylineSize {\n id: string | number;\n index: number;\n datum: IStorylineBlock;\n center: StorylinePoint;\n}\n\nexport interface StorylineLinkPosition {\n from: StorylineBlockPosition;\n to: StorylineBlockPosition;\n start: StorylinePoint;\n end: StorylinePoint;\n points: StorylinePoint[];\n}\n\nexport interface StorylineCircleGuide {\n center: StorylinePoint;\n radius: number;\n}\n\nexport interface StorylineLayoutResult {\n blocks: StorylineBlockPosition[];\n links: StorylineLinkPosition[];\n circleGuide?: StorylineCircleGuide;\n}\n\nexport interface StorylineComputeOptions {\n layout: StorylineLayoutType | IStorylineLayoutOptions | undefined;\n viewBox: StorylineSize;\n block: StorylineSize;\n gap?: number;\n padding?: number | [number, number, number, number];\n lineDistance?: number;\n}\n\nconst DEFAULT_LAYOUT: StorylineLayoutType = 'landscape';\nconst DEFAULT_PADDING = 24;\n\nexport const normalizePadding = (\n padding?: number | [number, number, number, number] | { top?: number; right?: number; bottom?: number; left?: number }\n): StorylinePadding => {\n if (Array.isArray(padding)) {\n return {\n top: padding[0] ?? 0,\n right: padding[1] ?? 0,\n bottom: padding[2] ?? 0,\n left: padding[3] ?? 0\n };\n }\n if (padding && typeof padding === 'object' && 'top' in padding) {\n return {\n top: (padding as { top?: number }).top ?? 0,\n right: (padding as { right?: number }).right ?? 0,\n bottom: (padding as { bottom?: number }).bottom ?? 0,\n left: (padding as { left?: number }).left ?? 0\n };\n }\n const value = (padding as number | undefined) ?? DEFAULT_PADDING;\n return { top: value, right: value, bottom: value, left: value };\n};\n\nexport const normalizeLayout = (layout?: StorylineLayoutType | IStorylineLayoutOptions): IStorylineLayoutOptions => {\n if (!layout) {\n return { type: DEFAULT_LAYOUT };\n }\n if (typeof layout === 'string') {\n return { type: layout };\n }\n return layout;\n};\n\nexport const computeStorylineLayout = (\n data: IStorylineBlock[],\n options: StorylineComputeOptions\n): StorylineLayoutResult => {\n const layout = normalizeLayout(options.layout);\n const padding = normalizePadding(layout.padding ?? options.padding);\n const gap = options.gap ?? 40;\n const lineDistance = options.lineDistance ?? 8;\n const blocks = computeBlockPositions(data, layout, options.viewBox, options.block, padding, gap);\n const circleGuide =\n layout.type === 'clock' ? computeClockCircleGuide(options.viewBox, options.block, padding, layout) : undefined;\n return {\n blocks,\n links: computeLinks(blocks, lineDistance),\n circleGuide\n };\n};\n\nconst computeBlockPositions = (\n data: IStorylineBlock[],\n layout: IStorylineLayoutOptions,\n viewBox: StorylineSize,\n block: StorylineSize,\n padding: StorylinePadding,\n gap: number\n): StorylineBlockPosition[] => {\n const count = data.length;\n if (!count) {\n return [];\n }\n\n const inner = {\n x: padding.left,\n y: padding.top,\n width: Math.max(viewBox.width - padding.left - padding.right, block.width),\n height: Math.max(viewBox.height - padding.top - padding.bottom, block.height)\n };\n const center = {\n x: inner.x + inner.width / 2,\n y: inner.y + inner.height / 2\n };\n\n let centers: StorylinePoint[];\n switch (layout.type) {\n case 'portrait':\n centers = lineCenters(\n count,\n center.x,\n inner.y + block.height / 2,\n center.x,\n inner.y + inner.height - block.height / 2\n );\n break;\n case 'ladder': {\n // 沿对角线均匀采样 anchor 点,偶/奇 index 沿对角线\"法向\"做左/右偏移。\n // direction = 'up' (默认):左下 → 右上;direction = 'down':左上 → 右下。\n const isDown = layout.direction === 'down';\n const x0 = inner.x + block.width / 2;\n const x1 = inner.x + inner.width - block.width / 2;\n const yTop = inner.y + block.height / 2;\n const yBot = inner.y + inner.height - block.height / 2;\n const y0 = isDown ? yTop : yBot;\n const y1 = isDown ? yBot : yTop;\n const anchors = lineCenters(count, x0, y0, x1, y1);\n // 对角线方向向量\n const dx = x1 - x0;\n const dy = y1 - y0;\n const len = Math.hypot(dx, dy) || 1;\n // 法向单位向量\n const nx = -dy / len;\n const ny = dx / len;\n // 偏移量:与 headline fontSize 联动 —— 与 ladder.ts 中保持同一公式\n // headline fontSize = clamp(innerHeight * 0.42, 80, 240)\n // 偏移量 = headline fontSize * 1.2,让 block 与 headline 大字之间留出充足留白\n const headlineFontSize = Math.max(80, Math.min(240, Math.round(inner.height * 0.42)));\n const offset = headlineFontSize * 1.2;\n centers = anchors.map((p, i) => {\n // 偶数 index → 法向 +;奇数 index → 法向 -\n const sign = i % 2 === 0 ? 1 : -1;\n return {\n x: p.x + nx * offset * sign,\n y: p.y + ny * offset * sign\n };\n });\n break;\n }\n case 'spiral':\n centers = alternatingVerticalCenters(count, inner, block, gap);\n break;\n case 'clock':\n centers = circularCenters(count, viewBox, block, padding, layout);\n break;\n case 'arc': {\n // arc 布局:通过 direction 控制 dome(穹顶)/ bowl(碗形)方向\n // - 'up'(默认):弧线在上方(穹顶),等同原 dome\n // - 'down':弧线在下方(碗形),等同原 bowl\n const isDown = layout.direction === 'down';\n const [s, e] = isDown ? [20, 160] : [200, 340];\n centers = arcCenters(count, inner, block, layout, s, e);\n break;\n }\n case 'wing': {\n const direction = layout.direction === 'right' ? 'right' : 'left';\n const [s, e] = direction === 'right' ? [110, 250] : [-70, 70];\n centers = arcCenters(count, inner, block, layout, s, e);\n break;\n }\n case 'landscape':\n default:\n centers = lineCenters(\n count,\n inner.x + block.width / 2,\n center.y,\n inner.x + inner.width - block.width / 2,\n center.y\n );\n break;\n }\n\n return centers.map((point, index) => ({\n id: data[index]?.id ?? index,\n index,\n datum: data[index],\n width: block.width,\n height: block.height,\n x: point.x - block.width / 2,\n y: point.y - block.height / 2,\n center: point\n }));\n};\n\nconst lineCenters = (count: number, x0: number, y0: number, x1: number, y1: number): StorylinePoint[] => {\n if (count === 1) {\n return [{ x: (x0 + x1) / 2, y: (y0 + y1) / 2 }];\n }\n return Array.from({ length: count }, (_, index) => {\n const t = index / (count - 1);\n return {\n x: x0 + (x1 - x0) * t,\n y: y0 + (y1 - y0) * t\n };\n });\n};\n\nconst alternatingVerticalCenters = (\n count: number,\n inner: { x: number; y: number; width: number; height: number },\n block: StorylineSize,\n gap: number\n) => {\n const baseX = inner.x + inner.width / 2;\n const offset = Math.min(Math.max(block.width * 0.65 + gap / 2, 0), Math.max((inner.width - block.width) / 2, 0));\n const points = lineCenters(\n count,\n baseX,\n inner.y + block.height / 2,\n baseX,\n inner.y + inner.height - block.height / 2\n );\n return points.map((point, index) => ({\n x: point.x + (index % 2 === 0 ? -offset : offset),\n y: point.y\n }));\n};\n\nconst circularCenters = (\n count: number,\n viewBox: StorylineSize,\n block: StorylineSize,\n padding: StorylinePadding,\n layout: IStorylineLayoutOptions\n) => {\n const guide = computeClockCircleGuide(viewBox, block, padding, layout);\n const startAngle = layout.startAngle ?? -90;\n const delta = 360;\n\n if (count === 1) {\n const angle = degreeToRadian(startAngle);\n return [\n {\n x: guide.center.x + Math.cos(angle) * guide.radius,\n y: guide.center.y + Math.sin(angle) * guide.radius\n }\n ];\n }\n\n return Array.from({ length: count }, (_, index) => {\n const angle = degreeToRadian(startAngle + (delta * index) / count);\n return {\n x: guide.center.x + Math.cos(angle) * guide.radius,\n y: guide.center.y + Math.sin(angle) * guide.radius\n };\n });\n};\n\nconst computeClockCircleGuide = (\n viewBox: StorylineSize,\n block: StorylineSize,\n padding: StorylinePadding,\n layout: IStorylineLayoutOptions\n): StorylineCircleGuide => {\n const innerWidth = Math.max(viewBox.width - padding.left - padding.right, 1);\n const innerHeight = Math.max(viewBox.height - padding.top - padding.bottom, 1);\n const center = {\n x: padding.left + innerWidth / 2,\n y: padding.top + innerHeight / 2\n };\n const ratio = layout.radiusRatio ?? 0.7;\n const maxRadius = Math.max(Math.min(innerWidth - block.width, innerHeight - block.height) / 2, 1);\n\n return {\n center,\n radius: Math.max(1, maxRadius * ratio)\n };\n};\n\nconst arcCenters = (\n count: number,\n inner: { x: number; y: number; width: number; height: number },\n block: StorylineSize,\n layout: IStorylineLayoutOptions,\n fallbackStartAngle?: number,\n fallbackEndAngle?: number,\n defaultRatio = 0.88\n) => {\n const startAngle = layout.startAngle ?? fallbackStartAngle ?? -90;\n const endAngle = layout.endAngle ?? fallbackEndAngle ?? 270;\n const ratio = layout.radiusRatio ?? defaultRatio;\n const rx = Math.max((inner.width - block.width) / 2, 1) * ratio;\n const ry = Math.max((inner.height - block.height) / 2, 1) * ratio;\n const center = {\n x: inner.x + inner.width / 2,\n y: inner.y + inner.height / 2\n };\n\n if (count === 1) {\n const angle = degreeToRadian((startAngle + endAngle) / 2);\n return [{ x: center.x + Math.cos(angle) * rx, y: center.y + Math.sin(angle) * ry }];\n }\n\n return Array.from({ length: count }, (_, index) => {\n const t = index / (count - 1);\n const angle = degreeToRadian(startAngle + angleDelta(startAngle, endAngle) * t);\n return {\n x: center.x + Math.cos(angle) * rx,\n y: center.y + Math.sin(angle) * ry\n };\n });\n};\n\nconst angleDelta = (startAngle: number, endAngle: number) => {\n const delta = endAngle - startAngle;\n return Math.abs(delta) >= 360 ? 360 : delta;\n};\n\nconst degreeToRadian = (degree: number) => (degree / 180) * Math.PI;\n\nconst computeLinks = (blocks: StorylineBlockPosition[], distance: number): StorylineLinkPosition[] => {\n const links: StorylineLinkPosition[] = [];\n for (let i = 0; i < blocks.length - 1; i++) {\n const from = blocks[i];\n const to = blocks[i + 1];\n const start = pointOnBlockEdge(from, to.center, distance);\n const end = pointOnBlockEdge(to, from.center, distance);\n links.push({\n from,\n to,\n start,\n end,\n points: [start, end]\n });\n }\n return links;\n};\n\nconst pointOnBlockEdge = (block: StorylineBlockPosition, toward: StorylinePoint, distance: number): StorylinePoint => {\n const dx = toward.x - block.center.x;\n const dy = toward.y - block.center.y;\n if (dx === 0 && dy === 0) {\n return { x: block.center.x, y: block.center.y };\n }\n const scaleX = dx === 0 ? Number.POSITIVE_INFINITY : block.width / 2 / Math.abs(dx);\n const scaleY = dy === 0 ? Number.POSITIVE_INFINITY : block.height / 2 / Math.abs(dy);\n const scale = Math.min(scaleX, scaleY);\n const length = Math.sqrt(dx * dx + dy * dy) || 1;\n return {\n x: block.center.x + dx * scale + (dx / length) * distance,\n y: block.center.y + dy * scale + (dy / length) * distance\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/charts/storyline/layout.ts"],"names":[],"mappings":";;;AAqDA,MAAM,cAAc,GAAwB,WAAW,CAAC;AACxD,MAAM,eAAe,GAAG,EAAE,CAAC;AAEpB,MAAM,gBAAgB,GAAG,CAC9B,OAAsH,EACpG,EAAE;;IACpB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO;YACL,GAAG,EAAE,MAAA,OAAO,CAAC,CAAC,CAAC,mCAAI,CAAC;YACpB,KAAK,EAAE,MAAA,OAAO,CAAC,CAAC,CAAC,mCAAI,CAAC;YACtB,MAAM,EAAE,MAAA,OAAO,CAAC,CAAC,CAAC,mCAAI,CAAC;YACvB,IAAI,EAAE,MAAA,OAAO,CAAC,CAAC,CAAC,mCAAI,CAAC;SACtB,CAAC;KACH;IACD,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,IAAI,OAAO,EAAE;QAC9D,OAAO;YACL,GAAG,EAAE,MAAC,OAA4B,CAAC,GAAG,mCAAI,CAAC;YAC3C,KAAK,EAAE,MAAC,OAA8B,CAAC,KAAK,mCAAI,CAAC;YACjD,MAAM,EAAE,MAAC,OAA+B,CAAC,MAAM,mCAAI,CAAC;YACpD,IAAI,EAAE,MAAC,OAA6B,CAAC,IAAI,mCAAI,CAAC;SAC/C,CAAC;KACH;IACD,MAAM,KAAK,GAAG,MAAC,OAA8B,mCAAI,eAAe,CAAC;IACjE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAClE,CAAC,CAAC;AArBW,QAAA,gBAAgB,oBAqB3B;AAEK,MAAM,eAAe,GAAG,CAAC,MAAsD,EAA2B,EAAE;IACjH,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;KACjC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACzB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AARW,QAAA,eAAe,mBAQ1B;AAEK,MAAM,sBAAsB,GAAG,CACpC,IAAuB,EACvB,OAAgC,EACT,EAAE;;IACzB,MAAM,MAAM,GAAG,IAAA,uBAAe,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAA,wBAAgB,EAAC,MAAA,MAAM,CAAC,OAAO,mCAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,MAAA,OAAO,CAAC,YAAY,mCAAI,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5F,MAAM,WAAW,GACf,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjH,OAAO;QACL,MAAM;QACN,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC;QACzC,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,sBAAsB,0BAejC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,IAAuB,EACvB,MAA+B,EAC/B,OAAsB,EACtB,KAAoB,EACpB,OAAyB,EACC,EAAE;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,CAAC;KACX;IAED,MAAM,KAAK,GAAG;QACZ,CAAC,EAAE,OAAO,CAAC,IAAI;QACf,CAAC,EAAE,OAAO,CAAC,GAAG;QACd,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;QAC1E,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;KAC9E,CAAC;IACF,MAAM,MAAM,GAAG;QACb,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC;QAC5B,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;KAC9B,CAAC;IAEF,IAAI,OAAyB,CAAC;IAC9B,QAAQ,MAAM,CAAC,IAAI,EAAE;QACnB,KAAK,UAAU;YACb,OAAO,GAAG,WAAW,CACnB,KAAK,EACL,MAAM,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAC1B,MAAM,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAC1C,CAAC;YACF,MAAM;QACR,KAAK,OAAO;YACV,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM;QACR,KAAK,KAAK,CAAC,CAAC;YAIV,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC;YAC3C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM;SACP;QACD,KAAK,MAAM,CAAC,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAClE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9D,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM;SACP;QACD,KAAK,WAAW,CAAC;QACjB;YACE,OAAO,GAAG,WAAW,CACnB,KAAK,EACL,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,EACzB,MAAM,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,EACvC,MAAM,CAAC,CAAC,CACT,CAAC;YACF,MAAM;KACT;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;;QAAC,OAAA,CAAC;YACpC,EAAE,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,0CAAE,EAAE,mCAAI,KAAK;YAC5B,KAAK;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC;YAC5B,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;YAC7B,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;KAAA,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAoB,EAAE;IACtG,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACjD;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9B,OAAO;YACL,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;YACrB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,KAAa,EACb,OAAsB,EACtB,KAAoB,EACpB,OAAyB,EACzB,MAA+B,EAC/B,EAAE;;IACF,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,MAAA,MAAM,CAAC,UAAU,mCAAI,CAAC,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,GAAG,CAAC;IAElB,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,OAAO;YACL;gBACE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM;gBAClD,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM;aACnD;SACF,CAAC;KACH;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;QACnE,OAAO;YACL,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM;YAClD,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM;SACnD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAC9B,OAAsB,EACtB,KAAoB,EACpB,OAAyB,EACzB,MAA+B,EACT,EAAE;;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG;QACb,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,UAAU,GAAG,CAAC;QAChC,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,WAAW,GAAG,CAAC;KACjC,CAAC;IACF,MAAM,KAAK,GAAG,MAAA,MAAM,CAAC,WAAW,mCAAI,GAAG,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAElG,OAAO;QACL,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;KACvC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,KAAa,EACb,KAA8D,EAC9D,KAAoB,EACpB,MAA+B,EAC/B,kBAA2B,EAC3B,gBAAyB,EACzB,YAAY,GAAG,IAAI,EACnB,EAAE;;IACF,MAAM,UAAU,GAAG,MAAA,MAAA,MAAM,CAAC,UAAU,mCAAI,kBAAkB,mCAAI,CAAC,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAA,MAAA,MAAM,CAAC,QAAQ,mCAAI,gBAAgB,mCAAI,GAAG,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAA,MAAM,CAAC,WAAW,mCAAI,YAAY,CAAC;IACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAChE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAClE,MAAM,MAAM,GAAG;QACb,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC;QAC5B,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;KAC9B,CAAC;IAEF,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;KACrF;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,OAAO;YACL,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;YAClC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;SACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,QAAgB,EAAE,EAAE;IAC1D,MAAM,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IACpC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAEpE,MAAM,YAAY,GAAG,CAAC,MAAgC,EAAE,QAAgB,EAA2B,EAAE;IACnG,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,EAAE;YACF,KAAK;YACL,GAAG;YACH,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;SACrB,CAAC,CAAC;KACJ;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,KAA6B,EAAE,MAAsB,EAAE,QAAgB,EAAkB,EAAE;IACnH,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;QACxB,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;KACjD;IACD,MAAM,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO;QACL,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,QAAQ;QACzD,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,QAAQ;KAC1D,CAAC;AACJ,CAAC,CAAC","file":"layout.js","sourcesContent":["import type { IStorylineBlock, IStorylineLayoutOptions, StorylineLayoutType } from './interface';\n\nexport interface StorylineSize {\n width: number;\n height: number;\n}\n\nexport interface StorylinePadding {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface StorylinePoint {\n x: number;\n y: number;\n}\n\nexport interface StorylineBlockPosition extends StorylinePoint, StorylineSize {\n id: string | number;\n index: number;\n datum: IStorylineBlock;\n center: StorylinePoint;\n}\n\nexport interface StorylineLinkPosition {\n from: StorylineBlockPosition;\n to: StorylineBlockPosition;\n start: StorylinePoint;\n end: StorylinePoint;\n points: StorylinePoint[];\n}\n\nexport interface StorylineCircleGuide {\n center: StorylinePoint;\n radius: number;\n}\n\nexport interface StorylineLayoutResult {\n blocks: StorylineBlockPosition[];\n links: StorylineLinkPosition[];\n circleGuide?: StorylineCircleGuide;\n}\n\nexport interface StorylineComputeOptions {\n layout: StorylineLayoutType | IStorylineLayoutOptions | undefined;\n viewBox: StorylineSize;\n block: StorylineSize;\n padding?: number | [number, number, number, number];\n lineDistance?: number;\n}\n\nconst DEFAULT_LAYOUT: StorylineLayoutType = 'landscape';\nconst DEFAULT_PADDING = 24;\n\nexport const normalizePadding = (\n padding?: number | [number, number, number, number] | { top?: number; right?: number; bottom?: number; left?: number }\n): StorylinePadding => {\n if (Array.isArray(padding)) {\n return {\n top: padding[0] ?? 0,\n right: padding[1] ?? 0,\n bottom: padding[2] ?? 0,\n left: padding[3] ?? 0\n };\n }\n if (padding && typeof padding === 'object' && 'top' in padding) {\n return {\n top: (padding as { top?: number }).top ?? 0,\n right: (padding as { right?: number }).right ?? 0,\n bottom: (padding as { bottom?: number }).bottom ?? 0,\n left: (padding as { left?: number }).left ?? 0\n };\n }\n const value = (padding as number | undefined) ?? DEFAULT_PADDING;\n return { top: value, right: value, bottom: value, left: value };\n};\n\nexport const normalizeLayout = (layout?: StorylineLayoutType | IStorylineLayoutOptions): IStorylineLayoutOptions => {\n if (!layout) {\n return { type: DEFAULT_LAYOUT };\n }\n if (typeof layout === 'string') {\n return { type: layout };\n }\n return layout;\n};\n\nexport const computeStorylineLayout = (\n data: IStorylineBlock[],\n options: StorylineComputeOptions\n): StorylineLayoutResult => {\n const layout = normalizeLayout(options.layout);\n const padding = normalizePadding(layout.padding ?? options.padding);\n const lineDistance = options.lineDistance ?? 8;\n const blocks = computeBlockPositions(data, layout, options.viewBox, options.block, padding);\n const circleGuide =\n layout.type === 'clock' ? computeClockCircleGuide(options.viewBox, options.block, padding, layout) : undefined;\n return {\n blocks,\n links: computeLinks(blocks, lineDistance),\n circleGuide\n };\n};\n\nconst computeBlockPositions = (\n data: IStorylineBlock[],\n layout: IStorylineLayoutOptions,\n viewBox: StorylineSize,\n block: StorylineSize,\n padding: StorylinePadding\n): StorylineBlockPosition[] => {\n const count = data.length;\n if (!count) {\n return [];\n }\n\n const inner = {\n x: padding.left,\n y: padding.top,\n width: Math.max(viewBox.width - padding.left - padding.right, block.width),\n height: Math.max(viewBox.height - padding.top - padding.bottom, block.height)\n };\n const center = {\n x: inner.x + inner.width / 2,\n y: inner.y + inner.height / 2\n };\n\n let centers: StorylinePoint[];\n switch (layout.type) {\n case 'portrait':\n centers = lineCenters(\n count,\n center.x,\n inner.y + block.height / 2,\n center.x,\n inner.y + inner.height - block.height / 2\n );\n break;\n case 'clock':\n centers = circularCenters(count, viewBox, block, padding, layout);\n break;\n case 'arc': {\n // arc 布局:通过 direction 控制 dome(穹顶)/ bowl(碗形)方向\n // - 'up'(默认):弧线在上方(穹顶),等同原 dome\n // - 'down':弧线在下方(碗形),等同原 bowl\n const isDown = layout.direction === 'down';\n const [s, e] = isDown ? [20, 160] : [200, 340];\n centers = arcCenters(count, inner, block, layout, s, e);\n break;\n }\n case 'wing': {\n const direction = layout.direction === 'right' ? 'right' : 'left';\n const [s, e] = direction === 'right' ? [110, 250] : [-70, 70];\n centers = arcCenters(count, inner, block, layout, s, e);\n break;\n }\n case 'landscape':\n default:\n centers = lineCenters(\n count,\n inner.x + block.width / 2,\n center.y,\n inner.x + inner.width - block.width / 2,\n center.y\n );\n break;\n }\n\n return centers.map((point, index) => ({\n id: data[index]?.id ?? index,\n index,\n datum: data[index],\n width: block.width,\n height: block.height,\n x: point.x - block.width / 2,\n y: point.y - block.height / 2,\n center: point\n }));\n};\n\nconst lineCenters = (count: number, x0: number, y0: number, x1: number, y1: number): StorylinePoint[] => {\n if (count === 1) {\n return [{ x: (x0 + x1) / 2, y: (y0 + y1) / 2 }];\n }\n return Array.from({ length: count }, (_, index) => {\n const t = index / (count - 1);\n return {\n x: x0 + (x1 - x0) * t,\n y: y0 + (y1 - y0) * t\n };\n });\n};\n\nconst circularCenters = (\n count: number,\n viewBox: StorylineSize,\n block: StorylineSize,\n padding: StorylinePadding,\n layout: IStorylineLayoutOptions\n) => {\n const guide = computeClockCircleGuide(viewBox, block, padding, layout);\n const startAngle = layout.startAngle ?? -90;\n const delta = 360;\n\n if (count === 1) {\n const angle = degreeToRadian(startAngle);\n return [\n {\n x: guide.center.x + Math.cos(angle) * guide.radius,\n y: guide.center.y + Math.sin(angle) * guide.radius\n }\n ];\n }\n\n return Array.from({ length: count }, (_, index) => {\n const angle = degreeToRadian(startAngle + (delta * index) / count);\n return {\n x: guide.center.x + Math.cos(angle) * guide.radius,\n y: guide.center.y + Math.sin(angle) * guide.radius\n };\n });\n};\n\nconst computeClockCircleGuide = (\n viewBox: StorylineSize,\n block: StorylineSize,\n padding: StorylinePadding,\n layout: IStorylineLayoutOptions\n): StorylineCircleGuide => {\n const innerWidth = Math.max(viewBox.width - padding.left - padding.right, 1);\n const innerHeight = Math.max(viewBox.height - padding.top - padding.bottom, 1);\n const center = {\n x: padding.left + innerWidth / 2,\n y: padding.top + innerHeight / 2\n };\n const ratio = layout.radiusRatio ?? 0.7;\n const maxRadius = Math.max(Math.min(innerWidth - block.width, innerHeight - block.height) / 2, 1);\n\n return {\n center,\n radius: Math.max(1, maxRadius * ratio)\n };\n};\n\nconst arcCenters = (\n count: number,\n inner: { x: number; y: number; width: number; height: number },\n block: StorylineSize,\n layout: IStorylineLayoutOptions,\n fallbackStartAngle?: number,\n fallbackEndAngle?: number,\n defaultRatio = 0.88\n) => {\n const startAngle = layout.startAngle ?? fallbackStartAngle ?? -90;\n const endAngle = layout.endAngle ?? fallbackEndAngle ?? 270;\n const ratio = layout.radiusRatio ?? defaultRatio;\n const rx = Math.max((inner.width - block.width) / 2, 1) * ratio;\n const ry = Math.max((inner.height - block.height) / 2, 1) * ratio;\n const center = {\n x: inner.x + inner.width / 2,\n y: inner.y + inner.height / 2\n };\n\n if (count === 1) {\n const angle = degreeToRadian((startAngle + endAngle) / 2);\n return [{ x: center.x + Math.cos(angle) * rx, y: center.y + Math.sin(angle) * ry }];\n }\n\n return Array.from({ length: count }, (_, index) => {\n const t = index / (count - 1);\n const angle = degreeToRadian(startAngle + angleDelta(startAngle, endAngle) * t);\n return {\n x: center.x + Math.cos(angle) * rx,\n y: center.y + Math.sin(angle) * ry\n };\n });\n};\n\nconst angleDelta = (startAngle: number, endAngle: number) => {\n const delta = endAngle - startAngle;\n return Math.abs(delta) >= 360 ? 360 : delta;\n};\n\nconst degreeToRadian = (degree: number) => (degree / 180) * Math.PI;\n\nconst computeLinks = (blocks: StorylineBlockPosition[], distance: number): StorylineLinkPosition[] => {\n const links: StorylineLinkPosition[] = [];\n for (let i = 0; i < blocks.length - 1; i++) {\n const from = blocks[i];\n const to = blocks[i + 1];\n const start = pointOnBlockEdge(from, to.center, distance);\n const end = pointOnBlockEdge(to, from.center, distance);\n links.push({\n from,\n to,\n start,\n end,\n points: [start, end]\n });\n }\n return links;\n};\n\nconst pointOnBlockEdge = (block: StorylineBlockPosition, toward: StorylinePoint, distance: number): StorylinePoint => {\n const dx = toward.x - block.center.x;\n const dy = toward.y - block.center.y;\n if (dx === 0 && dy === 0) {\n return { x: block.center.x, y: block.center.y };\n }\n const scaleX = dx === 0 ? Number.POSITIVE_INFINITY : block.width / 2 / Math.abs(dx);\n const scaleY = dy === 0 ? Number.POSITIVE_INFINITY : block.height / 2 / Math.abs(dy);\n const scale = Math.min(scaleX, scaleY);\n const length = Math.sqrt(dx * dx + dy * dy) || 1;\n return {\n x: block.center.x + dx * scale + (dx / length) * distance,\n y: block.center.y + dy * scale + (dy / length) * distance\n };\n};\n"]}
@@ -269,7 +269,6 @@ const getArcBlockMetrics = (spec, index = 0, ctx) => {
269
269
  x: (_d, ctx) => getMetrics(ctx).textAnchorX,
270
270
  y: (_d, ctx) => getMetrics(ctx).textBox.y,
271
271
  text: block.title,
272
- maxLineWidth: (_d, ctx) => getMetrics(ctx).textBox.width,
273
272
  height: (_d, ctx) => getMetrics(ctx).titleLineHeight * common_1.BLOCK_TITLE_MAX_LINES,
274
273
  heightLimit: (_d, ctx) => getMetrics(ctx).titleLineHeight * common_1.BLOCK_TITLE_MAX_LINES,
275
274
  lineClamp: common_1.BLOCK_TITLE_MAX_LINES,