@visactor/vchart-extension 2.1.0-alpha.16 → 2.1.0-alpha.18

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 (227) hide show
  1. package/build/index.js +0 -2216
  2. package/build/index.min.js +2 -2
  3. package/cjs/charts/axis-3d/index.js +1 -2
  4. package/cjs/charts/axis-3d/linear-axis.js +2 -1
  5. package/cjs/charts/bar-3d/chart-spec-transformer.js +1 -1
  6. package/cjs/charts/bar-3d/chart.js +1 -1
  7. package/cjs/charts/bar-3d/constant.js +1 -1
  8. package/cjs/charts/bar-3d/index.js +1 -1
  9. package/cjs/charts/bar-3d/interface.js +1 -1
  10. package/cjs/charts/bar-3d/series-spec-transformer.js +1 -1
  11. package/cjs/charts/bar-3d/series.js +1 -1
  12. package/cjs/charts/bar-3d/theme.js +1 -1
  13. package/cjs/charts/candlestick/candlestick-transformer.js +1 -1
  14. package/cjs/charts/candlestick/candlestick.js +2 -1
  15. package/cjs/charts/candlestick/index.js +1 -1
  16. package/cjs/charts/candlestick/interface.js +1 -1
  17. package/cjs/charts/candlestick/util.js +1 -1
  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 +1 -1
  29. package/cjs/charts/conversion-funnel/util.js +1 -1
  30. package/cjs/charts/histogram-3d/chart.js +2 -1
  31. package/cjs/charts/histogram-3d/index.js +1 -1
  32. package/cjs/charts/histogram-3d/interface.js +1 -1
  33. package/cjs/charts/image-cloud/image-cloud-transformer.js +1 -1
  34. package/cjs/charts/image-cloud/image-cloud.js +1 -1
  35. package/cjs/charts/image-cloud/index.js +1 -1
  36. package/cjs/charts/image-cloud/interface.js +1 -1
  37. package/cjs/charts/image-cloud/series/image-cloud.d.ts +1 -1
  38. package/cjs/charts/pictogram/element-highlight-by-graphic-name.js +1 -1
  39. package/cjs/components/bar-link/bar-link.js +1 -1
  40. package/cjs/components/bar-link/constant.js +1 -1
  41. package/cjs/components/bar-link/index.js +1 -1
  42. package/cjs/components/bar-link/type.js +1 -1
  43. package/cjs/components/bar-link/util.js +1 -1
  44. package/cjs/components/bar-regression-line/index.js +1 -1
  45. package/cjs/components/bar-regression-line/type.js +1 -1
  46. package/cjs/components/extension-mark-sync-state/extension-mark-sync-state.js +1 -1
  47. package/cjs/components/extension-mark-sync-state/index.js +1 -1
  48. package/cjs/components/extension-mark-sync-state/type.js +1 -1
  49. package/cjs/components/histogram-regression-line/index.js +1 -1
  50. package/cjs/components/histogram-regression-line/type.js +1 -1
  51. package/cjs/components/map-label/index.js +1 -1
  52. package/cjs/components/map-label/layout.js +1 -1
  53. package/cjs/components/map-label/map-label-transformer.js +1 -2
  54. package/cjs/components/map-label/map-label.d.ts +1 -1
  55. package/cjs/components/map-label/map-label.js +1 -1
  56. package/cjs/components/map-label/theme.js +1 -1
  57. package/cjs/components/map-label/type.js +1 -1
  58. package/cjs/components/regression-line/index.js +1 -1
  59. package/cjs/components/regression-line/regression-line.js +1 -1
  60. package/cjs/components/regression-line/type.js +1 -1
  61. package/cjs/components/scatter-regression-line/index.js +1 -1
  62. package/cjs/components/scatter-regression-line/type.js +1 -1
  63. package/cjs/components/series-break/constant.js +1 -1
  64. package/cjs/components/series-break/index.js +1 -1
  65. package/cjs/components/series-break/series-break.js +1 -1
  66. package/cjs/components/series-break/type.js +1 -1
  67. package/cjs/components/series-break/util.js +1 -2
  68. package/cjs/components/series-label/constant.js +1 -1
  69. package/cjs/components/series-label/index.js +1 -1
  70. package/cjs/components/series-label/series-label.js +1 -1
  71. package/cjs/components/series-label/type.js +1 -1
  72. package/cjs/components/series-label/util.js +1 -1
  73. package/cjs/index.d.ts +0 -1
  74. package/cjs/index.js +5 -5
  75. package/cjs/index.js.map +1 -1
  76. package/esm/charts/axis-3d/index.js +1 -2
  77. package/esm/charts/axis-3d/linear-axis.js +2 -1
  78. package/esm/charts/bar-3d/chart-spec-transformer.js +1 -1
  79. package/esm/charts/bar-3d/chart.js +1 -1
  80. package/esm/charts/bar-3d/constant.js +1 -1
  81. package/esm/charts/bar-3d/index.js +1 -1
  82. package/esm/charts/bar-3d/interface.js +1 -1
  83. package/esm/charts/bar-3d/series-spec-transformer.js +1 -1
  84. package/esm/charts/bar-3d/series.js +1 -1
  85. package/esm/charts/bar-3d/theme.js +1 -1
  86. package/esm/charts/candlestick/candlestick-transformer.js +1 -1
  87. package/esm/charts/candlestick/candlestick.js +2 -1
  88. package/esm/charts/candlestick/index.js +1 -1
  89. package/esm/charts/candlestick/interface.js +1 -1
  90. package/esm/charts/candlestick/util.js +1 -1
  91. package/esm/charts/combination-candlestick/combination-candlestick-transformer.js +1 -1
  92. package/esm/charts/combination-candlestick/combination-candlestick.js +1 -1
  93. package/esm/charts/combination-candlestick/constant.js +1 -1
  94. package/esm/charts/combination-candlestick/index.js +1 -1
  95. package/esm/charts/combination-candlestick/interface.js +1 -1
  96. package/esm/charts/conversion-funnel/arrow-data-transform.js +1 -1
  97. package/esm/charts/conversion-funnel/constants.js +1 -1
  98. package/esm/charts/conversion-funnel/conversion-funnel-transformer.js +1 -1
  99. package/esm/charts/conversion-funnel/conversion-funnel.js +1 -1
  100. package/esm/charts/conversion-funnel/index.js +1 -1
  101. package/esm/charts/conversion-funnel/interface.js +1 -1
  102. package/esm/charts/conversion-funnel/util.js +1 -1
  103. package/esm/charts/histogram-3d/chart.js +2 -1
  104. package/esm/charts/histogram-3d/index.js +1 -1
  105. package/esm/charts/histogram-3d/interface.js +1 -1
  106. package/esm/charts/image-cloud/image-cloud-transformer.js +1 -1
  107. package/esm/charts/image-cloud/image-cloud.js +1 -1
  108. package/esm/charts/image-cloud/index.js +1 -1
  109. package/esm/charts/image-cloud/interface.js +1 -1
  110. package/esm/charts/image-cloud/series/image-cloud.d.ts +1 -1
  111. package/esm/charts/pictogram/element-highlight-by-graphic-name.js +1 -1
  112. package/esm/components/bar-link/bar-link.js +1 -1
  113. package/esm/components/bar-link/constant.js +1 -1
  114. package/esm/components/bar-link/index.js +1 -1
  115. package/esm/components/bar-link/type.js +1 -1
  116. package/esm/components/bar-link/util.js +1 -1
  117. package/esm/components/bar-regression-line/index.js +1 -1
  118. package/esm/components/bar-regression-line/type.js +1 -1
  119. package/esm/components/extension-mark-sync-state/extension-mark-sync-state.js +1 -1
  120. package/esm/components/extension-mark-sync-state/index.js +1 -1
  121. package/esm/components/extension-mark-sync-state/type.js +1 -1
  122. package/esm/components/histogram-regression-line/index.js +1 -1
  123. package/esm/components/histogram-regression-line/type.js +1 -1
  124. package/esm/components/map-label/index.js +1 -1
  125. package/esm/components/map-label/layout.js +1 -1
  126. package/esm/components/map-label/map-label-transformer.js +1 -2
  127. package/esm/components/map-label/map-label.d.ts +1 -1
  128. package/esm/components/map-label/map-label.js +1 -1
  129. package/esm/components/map-label/theme.js +1 -1
  130. package/esm/components/map-label/type.js +1 -1
  131. package/esm/components/regression-line/index.js +1 -1
  132. package/esm/components/regression-line/regression-line.js +1 -1
  133. package/esm/components/regression-line/type.js +1 -1
  134. package/esm/components/scatter-regression-line/index.js +1 -1
  135. package/esm/components/scatter-regression-line/type.js +1 -1
  136. package/esm/components/series-break/constant.js +1 -1
  137. package/esm/components/series-break/index.js +1 -1
  138. package/esm/components/series-break/series-break.js +1 -1
  139. package/esm/components/series-break/type.js +1 -1
  140. package/esm/components/series-break/util.js +1 -2
  141. package/esm/components/series-label/constant.js +1 -1
  142. package/esm/components/series-label/index.js +1 -1
  143. package/esm/components/series-label/series-label.js +1 -1
  144. package/esm/components/series-label/type.js +1 -1
  145. package/esm/components/series-label/util.js +1 -1
  146. package/esm/index.d.ts +0 -1
  147. package/esm/index.js +0 -2
  148. package/esm/index.js.map +1 -1
  149. package/package.json +7 -7
  150. package/cjs/charts/storyline/index.d.ts +0 -4
  151. package/cjs/charts/storyline/index.js +0 -22
  152. package/cjs/charts/storyline/index.js.map +0 -1
  153. package/cjs/charts/storyline/interface.d.ts +0 -61
  154. package/cjs/charts/storyline/interface.js +0 -6
  155. package/cjs/charts/storyline/interface.js.map +0 -1
  156. package/cjs/charts/storyline/layout.d.ts +0 -53
  157. package/cjs/charts/storyline/layout.js +0 -214
  158. package/cjs/charts/storyline/layout.js.map +0 -1
  159. package/cjs/charts/storyline/layouts/bowl.d.ts +0 -5
  160. package/cjs/charts/storyline/layouts/bowl.js +0 -285
  161. package/cjs/charts/storyline/layouts/bowl.js.map +0 -1
  162. package/cjs/charts/storyline/layouts/clock.d.ts +0 -5
  163. package/cjs/charts/storyline/layouts/clock.js +0 -247
  164. package/cjs/charts/storyline/layouts/clock.js.map +0 -1
  165. package/cjs/charts/storyline/layouts/common.d.ts +0 -88
  166. package/cjs/charts/storyline/layouts/common.js +0 -291
  167. package/cjs/charts/storyline/layouts/common.js.map +0 -1
  168. package/cjs/charts/storyline/layouts/default.d.ts +0 -4
  169. package/cjs/charts/storyline/layouts/default.js +0 -179
  170. package/cjs/charts/storyline/layouts/default.js.map +0 -1
  171. package/cjs/charts/storyline/layouts/dome.d.ts +0 -5
  172. package/cjs/charts/storyline/layouts/dome.js +0 -300
  173. package/cjs/charts/storyline/layouts/dome.js.map +0 -1
  174. package/cjs/charts/storyline/layouts/landscape.d.ts +0 -4
  175. package/cjs/charts/storyline/layouts/landscape.js +0 -254
  176. package/cjs/charts/storyline/layouts/landscape.js.map +0 -1
  177. package/cjs/charts/storyline/layouts/portrait.d.ts +0 -4
  178. package/cjs/charts/storyline/layouts/portrait.js +0 -241
  179. package/cjs/charts/storyline/layouts/portrait.js.map +0 -1
  180. package/cjs/charts/storyline/layouts/wing.d.ts +0 -4
  181. package/cjs/charts/storyline/layouts/wing.js +0 -215
  182. package/cjs/charts/storyline/layouts/wing.js.map +0 -1
  183. package/cjs/charts/storyline/storyline-transformer.d.ts +0 -4
  184. package/cjs/charts/storyline/storyline-transformer.js +0 -66
  185. package/cjs/charts/storyline/storyline-transformer.js.map +0 -1
  186. package/cjs/charts/storyline/storyline.d.ts +0 -16
  187. package/cjs/charts/storyline/storyline.js +0 -36
  188. package/cjs/charts/storyline/storyline.js.map +0 -1
  189. package/esm/charts/storyline/index.d.ts +0 -4
  190. package/esm/charts/storyline/index.js +0 -8
  191. package/esm/charts/storyline/index.js.map +0 -1
  192. package/esm/charts/storyline/interface.d.ts +0 -61
  193. package/esm/charts/storyline/interface.js +0 -2
  194. package/esm/charts/storyline/interface.js.map +0 -1
  195. package/esm/charts/storyline/layout.d.ts +0 -53
  196. package/esm/charts/storyline/layout.js +0 -204
  197. package/esm/charts/storyline/layout.js.map +0 -1
  198. package/esm/charts/storyline/layouts/bowl.d.ts +0 -5
  199. package/esm/charts/storyline/layouts/bowl.js +0 -277
  200. package/esm/charts/storyline/layouts/bowl.js.map +0 -1
  201. package/esm/charts/storyline/layouts/clock.d.ts +0 -5
  202. package/esm/charts/storyline/layouts/clock.js +0 -241
  203. package/esm/charts/storyline/layouts/clock.js.map +0 -1
  204. package/esm/charts/storyline/layouts/common.d.ts +0 -88
  205. package/esm/charts/storyline/layouts/common.js +0 -257
  206. package/esm/charts/storyline/layouts/common.js.map +0 -1
  207. package/esm/charts/storyline/layouts/default.d.ts +0 -4
  208. package/esm/charts/storyline/layouts/default.js +0 -172
  209. package/esm/charts/storyline/layouts/default.js.map +0 -1
  210. package/esm/charts/storyline/layouts/dome.d.ts +0 -5
  211. package/esm/charts/storyline/layouts/dome.js +0 -292
  212. package/esm/charts/storyline/layouts/dome.js.map +0 -1
  213. package/esm/charts/storyline/layouts/landscape.d.ts +0 -4
  214. package/esm/charts/storyline/layouts/landscape.js +0 -250
  215. package/esm/charts/storyline/layouts/landscape.js.map +0 -1
  216. package/esm/charts/storyline/layouts/portrait.d.ts +0 -4
  217. package/esm/charts/storyline/layouts/portrait.js +0 -238
  218. package/esm/charts/storyline/layouts/portrait.js.map +0 -1
  219. package/esm/charts/storyline/layouts/wing.d.ts +0 -4
  220. package/esm/charts/storyline/layouts/wing.js +0 -210
  221. package/esm/charts/storyline/layouts/wing.js.map +0 -1
  222. package/esm/charts/storyline/storyline-transformer.d.ts +0 -4
  223. package/esm/charts/storyline/storyline-transformer.js +0 -66
  224. package/esm/charts/storyline/storyline-transformer.js.map +0 -1
  225. package/esm/charts/storyline/storyline.d.ts +0 -16
  226. package/esm/charts/storyline/storyline.js +0 -29
  227. package/esm/charts/storyline/storyline.js.map +0 -1
@@ -1,210 +0,0 @@
1
- import { LayoutZIndex } from "@visactor/vchart";
2
-
3
- import { buildRichContent, getRegionGeometry, getThemeColor, normalizeLayout, normalizePadding, omitImageLayoutSpec, withAlpha } from "./common";
4
-
5
- const WING_BLOCK_IMAGE_SIZE = 96, WING_TEXT_GAP_FROM_IMAGE = 14, WING_TITLE_LINE_HEIGHT = 26, WING_TITLE_FONT_SIZE = 20, WING_CONTENT_LINE_HEIGHT = 17, WING_CONTENT_FONT_SIZE = 12, WING_TEXT_BOX_WIDTH = 240, WING_TEXT_BOX_HEIGHT = 110, WING_TITLE_TO_CONTENT_GAP = 4, getWingDirection = spec => {
6
- var _a;
7
- return null !== (_a = normalizeLayout(spec.layout).direction) && void 0 !== _a ? _a : "left";
8
- }, getWingArcGeometry = (spec, ctx) => {
9
- var _a, _b, _c, _e;
10
- const {width: width, height: height, startX: startX, startY: startY} = getRegionGeometry(ctx), padding = normalizePadding(null === (_a = spec.block) || void 0 === _a ? void 0 : _a.padding), innerWidth = Math.max(width - padding.left - padding.right, 1), innerHeight = Math.max(height - padding.top - padding.bottom, 1), layoutOpt = normalizeLayout(spec.layout), direction = getWingDirection(spec), defaultStart = "right" === direction ? 110 : -70, defaultEnd = "right" === direction ? 250 : 70, startAngle = null !== (_b = layoutOpt.startAngle) && void 0 !== _b ? _b : defaultStart, endAngle = null !== (_c = layoutOpt.endAngle) && void 0 !== _c ? _c : defaultEnd, ratio = null !== (_e = layoutOpt.radiusRatio) && void 0 !== _e ? _e : .92, ry = innerHeight / 2 * ratio, rx = .6 * innerWidth * ratio;
11
- return {
12
- cx: "right" === direction ? startX + padding.left + innerWidth - .1 * rx : startX + padding.left + .1 * rx,
13
- cy: startY + padding.top + innerHeight / 2,
14
- rx: rx,
15
- ry: ry,
16
- startAngle: startAngle,
17
- endAngle: endAngle
18
- };
19
- }, getWingBlockCenter = (spec, ctx, index) => {
20
- var _a, _b;
21
- const arc = getWingArcGeometry(spec, ctx), count = null !== (_b = null === (_a = spec.data) || void 0 === _a ? void 0 : _a.length) && void 0 !== _b ? _b : 0;
22
- if (count <= 0) return {
23
- x: arc.cx,
24
- y: arc.cy
25
- };
26
- const t = 1 === count ? .5 : index / (count - 1), angle = (arc.startAngle + (arc.endAngle - arc.startAngle) * t) / 180 * Math.PI;
27
- return {
28
- x: arc.cx + Math.cos(angle) * arc.rx,
29
- y: arc.cy + Math.sin(angle) * arc.ry
30
- };
31
- }, isTextOnLeft = (spec, index) => "right" === getWingDirection(spec) ? index % 2 == 1 : index % 2 == 0;
32
-
33
- export const buildWingArcMark = spec => {
34
- var _a, _b, _c, _e, _f, _g, _h, _j;
35
- if (!1 === (null === (_a = spec.line) || void 0 === _a ? void 0 : _a.visible)) return null;
36
- const themeColor = getThemeColor(spec), lineStyle = null !== (_c = null === (_b = spec.line) || void 0 === _b ? void 0 : _b.style) && void 0 !== _c ? _c : {}, startWidth = Math.max(Number(null !== (_e = lineStyle.startWidth) && void 0 !== _e ? _e : 2), .5), endWidth = Math.max(Number(null !== (_g = null !== (_f = lineStyle.endWidth) && void 0 !== _f ? _f : lineStyle.lineWidth) && void 0 !== _g ? _g : 18), startWidth);
37
- return {
38
- type: "group",
39
- name: "storyline-wing-arc",
40
- zIndex: LayoutZIndex.Mark,
41
- children: [ {
42
- type: "path",
43
- name: "storyline-wing-arc-path",
44
- interactive: !1,
45
- style: {
46
- stroke: !1,
47
- lineWidth: 0,
48
- fill: null !== (_j = null !== (_h = lineStyle.fill) && void 0 !== _h ? _h : lineStyle.stroke) && void 0 !== _j ? _j : themeColor,
49
- opacity: .95,
50
- path: (_d, ctx) => {
51
- const arc = getWingArcGeometry(spec, ctx), span = arc.endAngle - arc.startAngle, pts = [];
52
- for (let i = 0; i <= 96; i++) {
53
- const t = i / 96, angle = (arc.startAngle + span * t) / 180 * Math.PI, cx = arc.cx + Math.cos(angle) * arc.rx, cy = arc.cy + Math.sin(angle) * arc.ry, nxRaw = Math.cos(angle) / arc.rx, nyRaw = Math.sin(angle) / arc.ry, nLen = Math.hypot(nxRaw, nyRaw) || 1;
54
- pts.push({
55
- x: cx,
56
- y: cy,
57
- nx: nxRaw / nLen,
58
- ny: nyRaw / nLen,
59
- w: startWidth + (endWidth - startWidth) * t
60
- });
61
- }
62
- const segments = [];
63
- for (let i = 0; i < pts.length; i++) {
64
- const p = pts[i], x = p.x + p.nx * (p.w / 2), y = p.y + p.ny * (p.w / 2);
65
- segments.push(`${0 === i ? "M" : "L"} ${x.toFixed(2)} ${y.toFixed(2)}`);
66
- }
67
- for (let i = pts.length - 1; i >= 0; i--) {
68
- const p = pts[i], x = p.x - p.nx * (p.w / 2), y = p.y - p.ny * (p.w / 2);
69
- segments.push(`L ${x.toFixed(2)} ${y.toFixed(2)}`);
70
- }
71
- return segments.push("Z"), segments.join(" ");
72
- }
73
- }
74
- } ]
75
- };
76
- };
77
-
78
- const getWingBlockMetrics = (spec, index) => {
79
- var _a, _b, _c, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
80
- const titleFontSize = Number(null !== (_c = null === (_b = null === (_a = spec.title) || void 0 === _a ? void 0 : _a.style) || void 0 === _b ? void 0 : _b.fontSize) && void 0 !== _c ? _c : 20), titleLineHeight = Number(null !== (_g = null === (_f = null === (_e = spec.title) || void 0 === _e ? void 0 : _e.style) || void 0 === _f ? void 0 : _f.lineHeight) && void 0 !== _g ? _g : Math.max(26, Math.round(1.3 * titleFontSize))), contentFontSize = Number(null !== (_k = null === (_j = null === (_h = spec.content) || void 0 === _h ? void 0 : _h.style) || void 0 === _j ? void 0 : _j.fontSize) && void 0 !== _k ? _k : 12), contentLineHeight = Number(null !== (_o = null === (_m = null === (_l = spec.content) || void 0 === _l ? void 0 : _l.style) || void 0 === _m ? void 0 : _m.lineHeight) && void 0 !== _o ? _o : 17), contentHeight = Math.max(110 - titleLineHeight - 4, contentLineHeight), imageWidth = null !== (_q = null === (_p = spec.image) || void 0 === _p ? void 0 : _p.width) && void 0 !== _q ? _q : 96, imageHeight = null !== (_s = null === (_r = spec.image) || void 0 === _r ? void 0 : _r.height) && void 0 !== _s ? _s : 96, imageBox = {
81
- x: -imageWidth / 2,
82
- y: -imageHeight / 2,
83
- width: imageWidth,
84
- height: imageHeight
85
- }, onLeft = isTextOnLeft(spec, index), textX = onLeft ? -imageWidth / 2 - 14 - 240 : imageWidth / 2 + 14;
86
- return {
87
- onLeft: onLeft,
88
- titleFontSize: titleFontSize,
89
- titleLineHeight: titleLineHeight,
90
- contentFontSize: contentFontSize,
91
- contentLineHeight: contentLineHeight,
92
- imageBox: imageBox,
93
- textBox: {
94
- x: textX,
95
- y: -55,
96
- width: 240,
97
- height: 110
98
- },
99
- contentBox: {
100
- x: textX,
101
- y: -55 + titleLineHeight + 4,
102
- width: 240,
103
- height: contentHeight
104
- }
105
- };
106
- };
107
-
108
- export const buildWingBlockMark = (spec, block, index) => {
109
- var _a, _b, _c, _e;
110
- const hasImage = !!block.image, contentText = Array.isArray(block.content) ? block.content : block.content ? [ block.content ] : [], themeColor = getThemeColor(spec), metrics = getWingBlockMetrics(spec, index);
111
- return {
112
- type: "group",
113
- id: `storyline-block-${null !== (_a = block.id) && void 0 !== _a ? _a : index}`,
114
- name: `storyline-block-${index}`,
115
- zIndex: LayoutZIndex.Mark + 1,
116
- style: {
117
- x: (_d, ctx) => getWingBlockCenter(spec, ctx, index).x,
118
- y: (_d, ctx) => getWingBlockCenter(spec, ctx, index).y
119
- },
120
- children: [ {
121
- type: "symbol",
122
- name: `storyline-block-image-halo-${index}`,
123
- interactive: !1,
124
- style: {
125
- x: 0,
126
- y: 0,
127
- size: Math.max(metrics.imageBox.width, metrics.imageBox.height) + 12,
128
- symbolType: "circle",
129
- fill: withAlpha(themeColor, .18),
130
- stroke: themeColor,
131
- lineWidth: 1.5
132
- }
133
- }, hasImage ? Object.assign(Object.assign({
134
- type: "image",
135
- name: `storyline-block-image-${index}`,
136
- interactive: !1
137
- }, omitImageLayoutSpec(spec.image)), {
138
- style: Object.assign({
139
- x: metrics.imageBox.x,
140
- y: metrics.imageBox.y,
141
- width: metrics.imageBox.width,
142
- height: metrics.imageBox.height,
143
- image: block.image,
144
- cornerRadius: Math.min(metrics.imageBox.width, metrics.imageBox.height) / 2,
145
- repeatX: "no-repeat",
146
- repeatY: "no-repeat",
147
- imageMode: "cover",
148
- imagePosition: "center",
149
- stroke: "#ffffff",
150
- lineWidth: 3
151
- }, null === (_b = spec.image) || void 0 === _b ? void 0 : _b.style)
152
- }) : {
153
- type: "rect",
154
- name: `storyline-block-image-bg-${index}`,
155
- interactive: !1,
156
- style: {
157
- x: metrics.imageBox.x,
158
- y: metrics.imageBox.y,
159
- width: metrics.imageBox.width,
160
- height: metrics.imageBox.height,
161
- cornerRadius: Math.min(metrics.imageBox.width, metrics.imageBox.height) / 2,
162
- fill: "#ffffff",
163
- stroke: themeColor,
164
- lineWidth: 2
165
- }
166
- }, block.title ? Object.assign(Object.assign({
167
- type: "text",
168
- name: `storyline-block-title-${index}`,
169
- interactive: !1,
170
- zIndex: LayoutZIndex.Mark + 10
171
- }, spec.title), {
172
- style: Object.assign({
173
- x: metrics.onLeft ? metrics.textBox.x + metrics.textBox.width : metrics.textBox.x,
174
- y: metrics.textBox.y,
175
- text: block.title,
176
- maxLineWidth: metrics.textBox.width,
177
- fontSize: metrics.titleFontSize,
178
- lineHeight: metrics.titleLineHeight,
179
- fontWeight: "bold",
180
- fill: themeColor,
181
- textAlign: metrics.onLeft ? "right" : "left",
182
- textBaseline: "top"
183
- }, null === (_c = spec.title) || void 0 === _c ? void 0 : _c.style)
184
- }) : null, contentText.length ? Object.assign(Object.assign({
185
- type: "text",
186
- name: `storyline-block-content-${index}`,
187
- interactive: !1,
188
- zIndex: LayoutZIndex.Mark + 10
189
- }, spec.content), {
190
- textType: "rich",
191
- style: Object.assign({
192
- x: metrics.onLeft ? metrics.contentBox.x + metrics.contentBox.width : metrics.contentBox.x,
193
- y: metrics.contentBox.y,
194
- width: metrics.contentBox.width,
195
- height: metrics.contentBox.height,
196
- maxLineWidth: metrics.contentBox.width,
197
- heightLimit: metrics.contentBox.height,
198
- text: buildRichContent(contentText, spec),
199
- fontSize: 12,
200
- lineHeight: 17,
201
- textAlign: metrics.onLeft ? "right" : "left",
202
- textBaseline: "top",
203
- wordBreak: "break-word",
204
- ellipsis: "...",
205
- fill: "#1f2430"
206
- }, null === (_e = spec.content) || void 0 === _e ? void 0 : _e.style)
207
- }) : null ].filter(Boolean)
208
- };
209
- };
210
- //# sourceMappingURL=wing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/charts/storyline/layouts/wing.ts"],"names":[],"mappings":"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","file":"wing.js","sourcesContent":["import type { IExtensionGroupMarkSpec } from '@visactor/vchart';\nimport { LayoutZIndex } from '@visactor/vchart';\nimport type { IStorylineBlock, IStorylineSpec, StorylineWingDirection } from '../interface';\nimport {\n type ICustomMarkSpec,\n type LayoutContext,\n type StorylinePoint,\n buildRichContent,\n getRegionGeometry,\n getThemeColor,\n normalizeLayout,\n normalizePadding,\n omitImageLayoutSpec,\n withAlpha\n} from './common';\n\n// wing 布局:参考残奥时间线信息图\n// - 主脉络为椭圆弧的「翅膀」造型,可通过 direction 配置左右朝向\n// - direction: 'left' → 圆心锚在画布左侧,弧凸向右展开(默认)\n// - direction: 'right' → 圆心锚在画布右侧,弧凸向左展开\n// - 圆形 image 嵌在弧线上(中心位于弧线)\n// - title(年份感大字 + 主题色) + content 在 image 一侧水平展开\n// - 左右交替(弧线左侧 / 右侧)让节点错落\nconst WING_BLOCK_IMAGE_SIZE = 96;\nconst WING_TEXT_GAP_FROM_IMAGE = 14;\nconst WING_TITLE_LINE_HEIGHT = 26;\nconst WING_TITLE_FONT_SIZE = 20;\nconst WING_CONTENT_LINE_HEIGHT = 17;\nconst WING_CONTENT_FONT_SIZE = 12;\n// title + content 区域宽度\nconst WING_TEXT_BOX_WIDTH = 240;\n// title + content 区域总高度\nconst WING_TEXT_BOX_HEIGHT = 110;\nconst WING_TITLE_TO_CONTENT_GAP = 4;\n\nconst getWingDirection = (spec: IStorylineSpec): StorylineWingDirection => {\n return normalizeLayout(spec.layout).direction ?? 'left';\n};\n\n/**\n * 计算 wing 弧线的几何参数:\n * - direction='left':圆心位于 inner 左侧,采样区间 -70°→70°(cos>0),弧线点位于圆心右侧;\n * - direction='right':圆心位于 inner 右侧,采样区间 110°→250°(cos<0),弧线点位于圆心左侧。\n */\nconst getWingArcGeometry = (spec: IStorylineSpec, ctx: LayoutContext) => {\n const { width, height, startX, startY } = getRegionGeometry(ctx);\n const padding = normalizePadding(spec.block?.padding);\n const innerWidth = Math.max(width - padding.left - padding.right, 1);\n const innerHeight = Math.max(height - padding.top - padding.bottom, 1);\n const layoutOpt = normalizeLayout(spec.layout);\n const direction = getWingDirection(spec);\n const defaultStart = direction === 'right' ? 110 : -70;\n const defaultEnd = direction === 'right' ? 250 : 70;\n const startAngle = layoutOpt.startAngle ?? defaultStart;\n const endAngle = layoutOpt.endAngle ?? defaultEnd;\n const ratio = layoutOpt.radiusRatio ?? 0.92;\n const ry = (innerHeight / 2) * ratio;\n const rx = innerWidth * 0.6 * ratio;\n // 左翅膀锚画布左侧,右翅膀锚画布右侧\n const cx = direction === 'right' ? startX + padding.left + innerWidth - rx * 0.1 : startX + padding.left + rx * 0.1;\n const cy = startY + padding.top + innerHeight / 2;\n return { cx, cy, rx, ry, startAngle, endAngle };\n};\n\n/**\n * 沿弧采样 block 中心 —— image 的圆心直接在弧线上,与时间线视觉对齐。\n */\nconst getWingBlockCenter = (spec: IStorylineSpec, ctx: LayoutContext, index: number): StorylinePoint => {\n const arc = getWingArcGeometry(spec, ctx);\n const count = spec.data?.length ?? 0;\n if (count <= 0) {\n return { x: arc.cx, y: arc.cy };\n }\n const t = count === 1 ? 0.5 : index / (count - 1);\n const angle = ((arc.startAngle + (arc.endAngle - arc.startAngle) * t) / 180) * Math.PI;\n return {\n x: arc.cx + Math.cos(angle) * arc.rx,\n y: arc.cy + Math.sin(angle) * arc.ry\n };\n};\n\n/**\n * 节点文字侧向:\n * - 左翅膀(弧凸向右):偶数节点的文字排在弧线左侧;\n * - 右翅膀(弧凸向左):偶数节点的文字排在弧线右侧(即镜像)。\n */\nconst isTextOnLeft = (spec: IStorylineSpec, index: number) => {\n const direction = getWingDirection(spec);\n return direction === 'right' ? index % 2 === 1 : index % 2 === 0;\n};\n\n/**\n * 主脉络曲线 mark:贯穿所有 block 的椭圆弧。\n * 用变宽的 filled path 模拟\"丝带\"——起点窄、终点宽,与信息图视觉一致。\n * 默认展示;用户可通过 spec.line.visible = false 关闭。\n */\nexport const buildWingArcMark = (spec: IStorylineSpec): IExtensionGroupMarkSpec | null => {\n if (spec.line?.visible === false) {\n return null;\n }\n const themeColor = getThemeColor(spec);\n const lineStyle = (spec.line?.style ?? {}) as Record<string, unknown>;\n const startWidth = Math.max(Number(lineStyle.startWidth ?? 2), 0.5);\n const endWidth = Math.max(Number(lineStyle.endWidth ?? lineStyle.lineWidth ?? 18), startWidth);\n return {\n type: 'group' as any,\n name: 'storyline-wing-arc',\n zIndex: LayoutZIndex.Mark,\n children: [\n {\n type: 'path',\n name: 'storyline-wing-arc-path',\n interactive: false,\n style: {\n stroke: false,\n lineWidth: 0,\n fill: (lineStyle.fill as string) ?? (lineStyle.stroke as string) ?? themeColor,\n opacity: 0.95,\n path: (_d: unknown, ctx: LayoutContext) => {\n const arc = getWingArcGeometry(spec, ctx);\n const span = arc.endAngle - arc.startAngle;\n const samples = 96;\n const pts: { x: number; y: number; nx: number; ny: number; w: number }[] = [];\n for (let i = 0; i <= samples; i++) {\n const t = i / samples;\n const angle = ((arc.startAngle + span * t) / 180) * Math.PI;\n const cx = arc.cx + Math.cos(angle) * arc.rx;\n const cy = arc.cy + Math.sin(angle) * arc.ry;\n const nxRaw = Math.cos(angle) / arc.rx;\n const nyRaw = Math.sin(angle) / arc.ry;\n const nLen = Math.hypot(nxRaw, nyRaw) || 1;\n pts.push({\n x: cx,\n y: cy,\n nx: nxRaw / nLen,\n ny: nyRaw / nLen,\n w: startWidth + (endWidth - startWidth) * t\n });\n }\n const segments: string[] = [];\n for (let i = 0; i < pts.length; i++) {\n const p = pts[i];\n const x = p.x + p.nx * (p.w / 2);\n const y = p.y + p.ny * (p.w / 2);\n segments.push(`${i === 0 ? 'M' : 'L'} ${x.toFixed(2)} ${y.toFixed(2)}`);\n }\n for (let i = pts.length - 1; i >= 0; i--) {\n const p = pts[i];\n const x = p.x - p.nx * (p.w / 2);\n const y = p.y - p.ny * (p.w / 2);\n segments.push(`L ${x.toFixed(2)} ${y.toFixed(2)}`);\n }\n segments.push('Z');\n return segments.join(' ');\n }\n }\n } as ICustomMarkSpec<'path'>\n ]\n };\n};\n\nconst getWingBlockMetrics = (spec: IStorylineSpec, index: number) => {\n const titleFontSize = Number((spec.title?.style as Record<string, unknown>)?.fontSize ?? WING_TITLE_FONT_SIZE);\n const titleLineHeight = Number(\n (spec.title?.style as Record<string, unknown>)?.lineHeight ??\n Math.max(WING_TITLE_LINE_HEIGHT, Math.round(titleFontSize * 1.3))\n );\n const contentFontSize = Number((spec.content?.style as Record<string, unknown>)?.fontSize ?? WING_CONTENT_FONT_SIZE);\n const contentLineHeight = Number(\n (spec.content?.style as Record<string, unknown>)?.lineHeight ?? WING_CONTENT_LINE_HEIGHT\n );\n const titleToContentGap = WING_TITLE_TO_CONTENT_GAP;\n const textHeight = WING_TEXT_BOX_HEIGHT;\n const contentHeight = Math.max(textHeight - titleLineHeight - titleToContentGap, contentLineHeight);\n\n const imageWidth = spec.image?.width ?? WING_BLOCK_IMAGE_SIZE;\n const imageHeight = spec.image?.height ?? WING_BLOCK_IMAGE_SIZE;\n const imageBox = {\n x: -imageWidth / 2,\n y: -imageHeight / 2,\n width: imageWidth,\n height: imageHeight\n };\n\n const onLeft = isTextOnLeft(spec, index);\n const textWidth = WING_TEXT_BOX_WIDTH;\n const textX = onLeft\n ? -imageWidth / 2 - WING_TEXT_GAP_FROM_IMAGE - textWidth\n : imageWidth / 2 + WING_TEXT_GAP_FROM_IMAGE;\n const textY = -textHeight / 2;\n const textBox = { x: textX, y: textY, width: textWidth, height: textHeight };\n const contentBox = {\n x: textX,\n y: textY + titleLineHeight + titleToContentGap,\n width: textWidth,\n height: contentHeight\n };\n return {\n onLeft,\n titleFontSize,\n titleLineHeight,\n contentFontSize,\n contentLineHeight,\n imageBox,\n textBox,\n contentBox\n };\n};\n\nexport const buildWingBlockMark = (\n spec: IStorylineSpec,\n block: IStorylineBlock,\n index: number\n): IExtensionGroupMarkSpec => {\n const hasImage = !!block.image;\n const contentText = Array.isArray(block.content) ? block.content : block.content ? [block.content] : [];\n const themeColor = getThemeColor(spec);\n const metrics = getWingBlockMetrics(spec, index);\n\n return {\n type: 'group' as any,\n id: `storyline-block-${block.id ?? index}`,\n name: `storyline-block-${index}`,\n zIndex: LayoutZIndex.Mark + 1,\n style: {\n x: (_d: unknown, ctx: LayoutContext) => getWingBlockCenter(spec, ctx, index).x,\n y: (_d: unknown, ctx: LayoutContext) => getWingBlockCenter(spec, ctx, index).y\n },\n children: [\n {\n type: 'symbol',\n name: `storyline-block-image-halo-${index}`,\n interactive: false,\n style: {\n x: 0,\n y: 0,\n size: Math.max(metrics.imageBox.width, metrics.imageBox.height) + 12,\n symbolType: 'circle',\n fill: withAlpha(themeColor, 0.18),\n stroke: themeColor,\n lineWidth: 1.5\n }\n } as ICustomMarkSpec<'symbol'>,\n hasImage\n ? ({\n type: 'image',\n name: `storyline-block-image-${index}`,\n interactive: false,\n ...omitImageLayoutSpec(spec.image),\n style: {\n x: metrics.imageBox.x,\n y: metrics.imageBox.y,\n width: metrics.imageBox.width,\n height: metrics.imageBox.height,\n image: block.image,\n cornerRadius: Math.min(metrics.imageBox.width, metrics.imageBox.height) / 2,\n repeatX: 'no-repeat',\n repeatY: 'no-repeat',\n imageMode: 'cover',\n imagePosition: 'center',\n stroke: '#ffffff',\n lineWidth: 3,\n ...spec.image?.style\n }\n } as ICustomMarkSpec<'image'>)\n : ({\n type: 'rect',\n name: `storyline-block-image-bg-${index}`,\n interactive: false,\n style: {\n x: metrics.imageBox.x,\n y: metrics.imageBox.y,\n width: metrics.imageBox.width,\n height: metrics.imageBox.height,\n cornerRadius: Math.min(metrics.imageBox.width, metrics.imageBox.height) / 2,\n fill: '#ffffff',\n stroke: themeColor,\n lineWidth: 2\n }\n } as ICustomMarkSpec<'rect'>),\n block.title\n ? ({\n type: 'text',\n name: `storyline-block-title-${index}`,\n interactive: false,\n zIndex: LayoutZIndex.Mark + 10,\n ...spec.title,\n style: {\n x: metrics.onLeft ? metrics.textBox.x + metrics.textBox.width : metrics.textBox.x,\n y: metrics.textBox.y,\n text: block.title,\n maxLineWidth: metrics.textBox.width,\n fontSize: metrics.titleFontSize,\n lineHeight: metrics.titleLineHeight,\n fontWeight: 'bold',\n fill: themeColor,\n textAlign: metrics.onLeft ? 'right' : 'left',\n textBaseline: 'top',\n ...spec.title?.style\n }\n } as ICustomMarkSpec<'text'>)\n : null,\n contentText.length\n ? ({\n type: 'text',\n name: `storyline-block-content-${index}`,\n interactive: false,\n zIndex: LayoutZIndex.Mark + 10,\n ...spec.content,\n textType: 'rich',\n style: {\n x: metrics.onLeft ? metrics.contentBox.x + metrics.contentBox.width : metrics.contentBox.x,\n y: metrics.contentBox.y,\n width: metrics.contentBox.width,\n height: metrics.contentBox.height,\n maxLineWidth: metrics.contentBox.width,\n heightLimit: metrics.contentBox.height,\n text: buildRichContent(contentText, spec),\n fontSize: WING_CONTENT_FONT_SIZE,\n lineHeight: WING_CONTENT_LINE_HEIGHT,\n textAlign: metrics.onLeft ? 'right' : 'left',\n textBaseline: 'top',\n wordBreak: 'break-word',\n ellipsis: '...',\n fill: '#1f2430',\n ...spec.content?.style\n }\n } as ICustomMarkSpec<'text'>)\n : null\n ].filter(Boolean) as ICustomMarkSpec<any>[]\n };\n};\n"]}
@@ -1,4 +0,0 @@
1
- import { CommonChartSpecTransformer } from '@visactor/vchart';
2
- export declare class StorylineChartSpecTransformer extends CommonChartSpecTransformer<any> {
3
- transformSpec(spec: any): void;
4
- }
@@ -1,66 +0,0 @@
1
- import { CommonChartSpecTransformer } from "@visactor/vchart";
2
-
3
- import { isBowl, isClock, isDome, isLandscape, isPortrait, isWing } from "./layouts/common";
4
-
5
- import { buildClockArcMark, buildClockBlockMark, buildClockCenterImageMark } from "./layouts/clock";
6
-
7
- import { buildDefaultBlockMark, buildDefaultLineMark } from "./layouts/default";
8
-
9
- import { buildLandscapeBlockMark, buildLandscapeConnectingCurve } from "./layouts/landscape";
10
-
11
- import { buildPortraitAxisMark, buildPortraitBlockMark } from "./layouts/portrait";
12
-
13
- import { buildDomeArcMark, buildDomeBlockMark, buildDomeCenterImageMark } from "./layouts/dome";
14
-
15
- import { buildBowlArcMark, buildBowlBlockMark, buildBowlCenterImageMark } from "./layouts/bowl";
16
-
17
- import { buildWingArcMark, buildWingBlockMark } from "./layouts/wing";
18
-
19
- export class StorylineChartSpecTransformer extends CommonChartSpecTransformer {
20
- transformSpec(spec) {
21
- var _a;
22
- applyDefaultPadding(spec);
23
- const storylineSpec = Object.assign(Object.assign({}, spec), {
24
- data: [ ...null !== (_a = spec.data) && void 0 !== _a ? _a : [] ]
25
- });
26
- spec.type = "common", spec.data = [], spec.series = [], spec.axes = [], spec.customMark = buildStorylineMarks(storylineSpec),
27
- delete spec.layout, delete spec.title, super.transformSpec(spec);
28
- }
29
- }
30
-
31
- const applyDefaultPadding = spec => {
32
- var _a, _b, _c, _d;
33
- const SMALL = 20, bowl = isBowl(spec), defaultTop = bowl ? 100 : SMALL, defaultBottom = bowl ? SMALL : 100, p = spec.padding;
34
- if (null != p) if ("number" != typeof p) if (Array.isArray(p)) {
35
- const [t, r = SMALL, b, l = SMALL] = p;
36
- spec.padding = [ null != t ? t : defaultTop, r, null != b ? b : defaultBottom, l ];
37
- } else "object" == typeof p && (spec.padding = {
38
- top: null !== (_a = p.top) && void 0 !== _a ? _a : defaultTop,
39
- right: null !== (_b = p.right) && void 0 !== _b ? _b : SMALL,
40
- bottom: null !== (_c = p.bottom) && void 0 !== _c ? _c : defaultBottom,
41
- left: null !== (_d = p.left) && void 0 !== _d ? _d : SMALL
42
- }); else spec.padding = bowl ? [ Math.max(p, 100), p, p, p ] : [ p, p, Math.max(p, 100), p ]; else spec.padding = [ defaultTop, SMALL, defaultBottom, SMALL ];
43
- }, buildStorylineMarks = spec => {
44
- var _a;
45
- const lineMark = buildLineMark(spec), blockMarks = (null !== (_a = spec.data) && void 0 !== _a ? _a : []).map(((block, index) => buildBlockMark(spec, block, index)));
46
- if (isLandscape(spec)) return [ ...blockMarks, lineMark ].filter(Boolean);
47
- if (isPortrait(spec)) return [ lineMark, ...blockMarks ].filter(Boolean);
48
- if (isDome(spec)) {
49
- return [ buildDomeCenterImageMark(spec), buildDomeArcMark(spec), ...blockMarks ].filter(Boolean);
50
- }
51
- if (isBowl(spec)) {
52
- return [ buildBowlCenterImageMark(spec), buildBowlArcMark(spec), ...blockMarks ].filter(Boolean);
53
- }
54
- if (isClock(spec)) {
55
- const ringsMark = buildClockArcMark(spec), centerImageMark = buildClockCenterImageMark(spec);
56
- return [ ringsMark, ...blockMarks, centerImageMark ].filter(Boolean);
57
- }
58
- if (isWing(spec)) {
59
- return [ buildWingArcMark(spec), ...blockMarks ].filter(Boolean);
60
- }
61
- return [ lineMark, ...blockMarks ].filter(Boolean);
62
- }, buildLineMark = spec => {
63
- var _a, _b, _c;
64
- return !1 === (null === (_a = spec.line) || void 0 === _a ? void 0 : _a.visible) || (null !== (_c = null === (_b = spec.data) || void 0 === _b ? void 0 : _b.length) && void 0 !== _c ? _c : 0) <= 1 ? null : isLandscape(spec) ? buildLandscapeConnectingCurve(spec) : isPortrait(spec) ? buildPortraitAxisMark(spec) : buildDefaultLineMark(spec);
65
- }, buildBlockMark = (spec, block, index) => isLandscape(spec) ? buildLandscapeBlockMark(spec, block, index) : isPortrait(spec) ? buildPortraitBlockMark(spec, block, index) : isDome(spec) ? buildDomeBlockMark(spec, block, index) : isBowl(spec) ? buildBowlBlockMark(spec, block, index) : isClock(spec) ? buildClockBlockMark(spec, block, index) : isWing(spec) ? buildWingBlockMark(spec, block, index) : buildDefaultBlockMark(spec, block, index);
66
- //# sourceMappingURL=storyline-transformer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/charts/storyline/storyline-transformer.ts"],"names":[],"mappings":"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","file":"storyline-transformer.js","sourcesContent":["import { CommonChartSpecTransformer, type IExtensionGroupMarkSpec } from '@visactor/vchart';\nimport type { IStorylineBlock, IStorylineSpec } from './interface';\nimport { isBowl, isClock, isDome, isLandscape, isPortrait, isWing } from './layouts/common';\nimport { buildClockArcMark, buildClockBlockMark, buildClockCenterImageMark } from './layouts/clock';\nimport { buildDefaultBlockMark, buildDefaultLineMark } from './layouts/default';\nimport { buildLandscapeBlockMark, buildLandscapeConnectingCurve } from './layouts/landscape';\nimport { buildPortraitAxisMark, buildPortraitBlockMark } from './layouts/portrait';\nimport { buildDomeArcMark, buildDomeBlockMark, buildDomeCenterImageMark } from './layouts/dome';\nimport { buildBowlArcMark, buildBowlBlockMark, buildBowlCenterImageMark } from './layouts/bowl';\nimport { buildWingArcMark, buildWingBlockMark } from './layouts/wing';\n\nexport class StorylineChartSpecTransformer extends CommonChartSpecTransformer<any> {\n transformSpec(spec: any): void {\n applyDefaultPadding(spec);\n const storylineSpec = {\n ...spec,\n data: [...(spec.data ?? [])]\n } as IStorylineSpec;\n\n spec.type = 'common' as any;\n spec.data = [];\n spec.series = [];\n spec.axes = [];\n spec.customMark = buildStorylineMarks(storylineSpec);\n delete spec.layout;\n delete spec.title;\n super.transformSpec(spec as any);\n }\n}\n\n/**\n * 图表默认 padding:\n * - dome 等大多数布局底部留 100px,给 centerImage / 引导线留呼吸空间;\n * - bowl 是 dome 的上下镜像,centerImage 贴顶,所以默认顶部留 100px、底部 20px;\n * 用户在 spec.padding 中显式指定的值会被保留,仅在缺省时生效。\n */\nconst applyDefaultPadding = (spec: any) => {\n const LARGE = 100;\n const SMALL = 20;\n const bowl = isBowl(spec as IStorylineSpec);\n const defaultTop = bowl ? LARGE : SMALL;\n const defaultBottom = bowl ? SMALL : LARGE;\n const p = spec.padding;\n if (p === undefined || p === null) {\n spec.padding = [defaultTop, SMALL, defaultBottom, SMALL];\n return;\n }\n if (typeof p === 'number') {\n spec.padding = bowl ? [Math.max(p, LARGE), p, p, p] : [p, p, Math.max(p, LARGE), p];\n return;\n }\n if (Array.isArray(p)) {\n const [t, r = SMALL, b, l = SMALL] = p;\n spec.padding = [t ?? defaultTop, r, b ?? defaultBottom, l];\n return;\n }\n if (typeof p === 'object') {\n spec.padding = {\n top: p.top ?? defaultTop,\n right: p.right ?? SMALL,\n bottom: p.bottom ?? defaultBottom,\n left: p.left ?? SMALL\n };\n }\n};\n\nconst buildStorylineMarks = (spec: IStorylineSpec) => {\n const lineMark = buildLineMark(spec);\n const blockMarks = (spec.data ?? []).map((block, index) => buildBlockMark(spec, block, index));\n // landscape:连接曲线绘制在所有 block 之上,避免被 image 遮挡\n if (isLandscape(spec)) {\n return [...blockMarks, lineMark].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // portrait:lineMark 是中轴 rect,作为底层背景先绘制\n if (isPortrait(spec)) {\n return [lineMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // dome:先绘制 centerImage(最底层视觉锚点),再绘制贯穿 block 的弧线,最后绘制 block;\n // dome 不绘制 block 之间默认的连接线\n if (isDome(spec)) {\n const centerImageMark = buildDomeCenterImageMark(spec);\n const arcMark = buildDomeArcMark(spec);\n return [centerImageMark, arcMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // bowl:dome 的上下镜像 —— centerImage 贴顶,弧线 + block 在下方\n if (isBowl(spec)) {\n const centerImageMark = buildBowlCenterImageMark(spec);\n const arcMark = buildBowlArcMark(spec);\n return [centerImageMark, arcMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // clock:辐射式信息盘 —— 圆环骨架 + 径向分隔线 → centerImage(盘心)→ blocks(楔形 + 外圈文字)\n if (isClock(spec)) {\n const ringsMark = buildClockArcMark(spec);\n const centerImageMark = buildClockCenterImageMark(spec);\n return [ringsMark, ...blockMarks, centerImageMark].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // wing:椭圆弧脉络 + 弧线上的圆形 image + 左右交替排列的 title/content;\n // 通过 layout.direction 控制翅膀朝向('left' | 'right')\n if (isWing(spec)) {\n const arcMark = buildWingArcMark(spec);\n return [arcMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n return [lineMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n};\n\nconst buildLineMark = (spec: IStorylineSpec): IExtensionGroupMarkSpec | null => {\n if (spec.line?.visible === false || (spec.data?.length ?? 0) <= 1) {\n return null;\n }\n if (isLandscape(spec)) {\n return buildLandscapeConnectingCurve(spec);\n }\n if (isPortrait(spec)) {\n return buildPortraitAxisMark(spec);\n }\n return buildDefaultLineMark(spec);\n};\n\nconst buildBlockMark = (spec: IStorylineSpec, block: IStorylineBlock, index: number): IExtensionGroupMarkSpec => {\n if (isLandscape(spec)) {\n return buildLandscapeBlockMark(spec, block, index);\n }\n if (isPortrait(spec)) {\n return buildPortraitBlockMark(spec, block, index);\n }\n if (isDome(spec)) {\n return buildDomeBlockMark(spec, block, index);\n }\n if (isBowl(spec)) {\n return buildBowlBlockMark(spec, block, index);\n }\n if (isClock(spec)) {\n return buildClockBlockMark(spec, block, index);\n }\n if (isWing(spec)) {\n return buildWingBlockMark(spec, block, index);\n }\n\n return buildDefaultBlockMark(spec, block, index);\n};\n"]}
@@ -1,16 +0,0 @@
1
- import { BaseChart, VChart } from '@visactor/vchart';
2
- import type { IStorylineSpec } from './interface';
3
- import { StorylineChartSpecTransformer } from './storyline-transformer';
4
- export declare class StorylineChart<T extends IStorylineSpec = IStorylineSpec> extends BaseChart<Omit<T, 'data' | 'title' | 'layout'>> {
5
- type: string;
6
- static type: string;
7
- static readonly view: string;
8
- _spec: T;
9
- static readonly transformerConstructor: typeof StorylineChartSpecTransformer;
10
- readonly transformerConstructor: typeof StorylineChartSpecTransformer;
11
- init(): void;
12
- protected isValid(): boolean;
13
- }
14
- export declare const registerStorylineChart: (option?: {
15
- VChart?: typeof VChart;
16
- }) => void;
@@ -1,29 +0,0 @@
1
- import { BaseChart, VChart, registerArcMark, registerCommonChart, registerCustomMark, registerGroupMark, registerImageMark, registerLineMark, registerPathMark, registerRectMark, registerTextMark } from "@visactor/vchart";
2
-
3
- import { StorylineChartSpecTransformer } from "./storyline-transformer";
4
-
5
- export class StorylineChart extends BaseChart {
6
- constructor() {
7
- super(...arguments), this.type = "storyline", this.transformerConstructor = StorylineChartSpecTransformer;
8
- }
9
- init() {
10
- this.isValid() && super.init();
11
- }
12
- isValid() {
13
- var _a, _b;
14
- const {data: data} = this._spec;
15
- return !!Array.isArray(data) || (null === (_b = (_a = this._option).onError) || void 0 === _b || _b.call(_a, "Data is required and should be an array for storyline chart"),
16
- !1);
17
- }
18
- }
19
-
20
- StorylineChart.type = "storyline", StorylineChart.view = "singleDefault", StorylineChart.transformerConstructor = StorylineChartSpecTransformer;
21
-
22
- export const registerStorylineChart = option => {
23
- registerCommonChart(), registerCustomMark(), registerGroupMark(), registerRectMark(),
24
- registerTextMark(), registerImageMark(), registerLineMark(), registerPathMark(),
25
- registerArcMark();
26
- const vchartConstructor = (null == option ? void 0 : option.VChart) || VChart;
27
- vchartConstructor && vchartConstructor.useChart([ StorylineChart ]);
28
- };
29
- //# sourceMappingURL=storyline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/charts/storyline/storyline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,MAAM,EACN,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,OAAO,cAA0D,SAAQ,SAE9E;IAFD;;QAGE,SAAI,GAAG,WAAW,CAAC;QAOV,2BAAsB,GAAG,6BAA6B,CAAC;IAiBlE,CAAC;IAfC,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,OAAO;SACR;QACD,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;IAES,OAAO;;QACf,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,OAAO,mDAAG,6DAA6D,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;;AAtBM,mBAAI,GAAG,WAAW,CAAC;AACV,mBAAI,GAAW,eAAe,CAAC;AAI/B,qCAAsB,GAAG,6BAA6B,CAAC;AAoBzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAmC,EAAE,EAAE;IAC5E,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,CAAC;IACnB,gBAAgB,EAAE,CAAC;IACnB,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,CAAC;IACnB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,CAAC;IAElB,MAAM,iBAAiB,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,MAAM,CAAC;IACnD,IAAI,iBAAiB,EAAE;QACrB,iBAAiB,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;KAC9C;AACH,CAAC,CAAC","file":"storyline.js","sourcesContent":["import {\n BaseChart,\n VChart,\n registerArcMark,\n registerCommonChart,\n registerCustomMark,\n registerGroupMark,\n registerImageMark,\n registerLineMark,\n registerPathMark,\n registerRectMark,\n registerTextMark\n} from '@visactor/vchart';\nimport type { IStorylineSpec } from './interface';\nimport { StorylineChartSpecTransformer } from './storyline-transformer';\n\nexport class StorylineChart<T extends IStorylineSpec = IStorylineSpec> extends BaseChart<\n Omit<T, 'data' | 'title' | 'layout'>\n> {\n type = 'storyline';\n static type = 'storyline';\n static readonly view: string = 'singleDefault';\n\n declare _spec: T;\n\n static readonly transformerConstructor = StorylineChartSpecTransformer;\n readonly transformerConstructor = StorylineChartSpecTransformer;\n\n init() {\n if (!this.isValid()) {\n return;\n }\n super.init();\n }\n\n protected isValid() {\n const { data } = this._spec;\n if (!Array.isArray(data)) {\n this._option.onError?.('Data is required and should be an array for storyline chart');\n return false;\n }\n return true;\n }\n}\n\nexport const registerStorylineChart = (option?: { VChart?: typeof VChart }) => {\n registerCommonChart();\n registerCustomMark();\n registerGroupMark();\n registerRectMark();\n registerTextMark();\n registerImageMark();\n registerLineMark();\n registerPathMark();\n registerArcMark();\n\n const vchartConstructor = option?.VChart || VChart;\n if (vchartConstructor) {\n vchartConstructor.useChart([StorylineChart]);\n }\n};\n"]}