@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
@@ -1 +1 @@
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 {\n isArc,\n isClock,\n isLadder,\n isLandscape,\n isPortrait,\n isWing,\n normalizeLayout,\n resolveBlockWidth,\n DEFAULT_BLOCK_WIDTH,\n DEFAULT_IMAGE_GAP,\n buildTopTitleImageMark,\n getTitleImageReservedHeight\n} from './layouts/common';\nimport { buildClockArcMark, buildClockBlockMark } from './layouts/clock';\nimport { buildDefaultBlockMark, buildDefaultLineMark } from './layouts/default';\nimport { buildLandscapeBlockMark, buildLandscapeConnectingCurve } from './layouts/landscape';\nimport {\n buildPortraitAxisMark,\n buildPortraitBlockMark,\n PORTRAIT_CONTENT_HEIGHT_RATIO,\n PORTRAIT_IMAGE_HEIGHT_RATIO\n} from './layouts/portrait';\nimport { buildArcBlockMark, buildArcMark, buildArcTitleImageMark } from './layouts/arc';\nimport { buildWingArcMark, buildWingBlockMark, buildWingTitleImageMark } from './layouts/wing';\nimport { buildLadderBlockMark, buildLadderDiagonalMark, buildLadderHeadlineMark } from './layouts/ladder';\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 * - arc up(dome 穹顶):titleImage 贴底 + textBox 在弧线上方,所以默认底部留 100px、顶部留 280px 给 textBox + 弧线呼吸空间;\n * - arc down(bowl 碗形):titleImage 贴顶 + textBox 在弧线下方,所以默认顶部留 100px、底部留 280px 给 textBox + 弧线呼吸空间;\n * - portrait:textBox 在 image 下方,最后一个 block 的 content 容易超出 region。底部 padding 默认 = 单个 block 的 content 高度\n * (即 regionHeight / count * 0.6),保证最后一个 block 有完整的 content 展示空间;\n * - ladder:四周默认留出 content 文本宽度,避免 block 沿对角线\"挤\"到画布边缘;\n * 用户在 spec.padding 中显式指定的值会被保留;顶部 titleImage 会额外保证最小 top padding,避免覆盖 region 内容。\n */\nconst applyDefaultPadding = (spec: any) => {\n const LARGE = 100;\n const SMALL = 20;\n // 给 textBox(240px)+ 一定呼吸空间,避免内容超出画布\n const TEXT_RESERVE = 280;\n const arc = isArc(spec as IStorylineSpec);\n const arcDown = arc && normalizeLayout((spec as IStorylineSpec).layout).direction === 'down';\n const arcUp = arc && !arcDown;\n const portrait = isPortrait(spec as IStorylineSpec);\n const ladder = isLadder(spec as IStorylineSpec);\n const wing = isWing(spec as IStorylineSpec);\n const clock = isClock(spec as IStorylineSpec);\n const topTitleImageReserve = (() => {\n if (\n arc ||\n ladder ||\n !(spec as IStorylineSpec).titleImage?.image ||\n (spec as IStorylineSpec).titleImage?.visible === false\n ) {\n return 0;\n }\n return getTitleImageReservedHeight(\n spec as IStorylineSpec,\n Number((spec as IStorylineSpec).width ?? 1000),\n Number((spec as IStorylineSpec).height ?? 600)\n );\n })();\n // clock 辐射式布局:底部和顶部 blocks 的文字会向外延伸,需要在四周围留空间\n // portrait 底部 padding:精准预留最后一个 block 的 content 展示空间。\n // portrait 几何(layouts/portrait.ts):\n // - 每个 block center.y 等距放置\n // - image 中心 = block center;imageHeight ≈ slotHeight * PORTRAIT_IMAGE_HEIGHT_RATIO\n // - content 紧贴 image 下方:textY = image 底 + textGap;textHeight = titleLine + titleGap + contentHeight\n // - contentHeight ≈ slotHeight * PORTRAIT_CONTENT_HEIGHT_RATIO\n // 最后一个 block center 到 canvas 底部需要至少 imageH/2 + textGap + titleLine + titleGap + contentH。\n // transformSpec 阶段无法获得真实 region,使用 spec.height 估算 slotHeight;缺省回退到 LARGE。\n const portraitBottomReserve = (() => {\n if (!portrait) {\n return 0;\n }\n const count = (spec as IStorylineSpec).data?.length ?? 0;\n const canvasHeight = (spec as IStorylineSpec).height as number | undefined;\n if (!count || !canvasHeight) {\n return LARGE;\n }\n // 在 transformSpec 阶段还没经过 region 减去 padding 等步骤,\n // 这里直接用 canvasHeight / (count + 1) 作为 slotHeight 的近似上界,\n // 后续 layout 逻辑会基于真实 region 重新计算 imageH / contentH。\n const slotHeight = canvasHeight / (count + 1);\n const imageHeight = (spec as IStorylineSpec).image?.height ?? slotHeight * PORTRAIT_IMAGE_HEIGHT_RATIO;\n const contentHeight = slotHeight * PORTRAIT_CONTENT_HEIGHT_RATIO;\n const titleFontSize = Number((spec.title?.style as any)?.fontSize ?? 26);\n const titleLineHeight = Number((spec.title?.style as any)?.lineHeight ?? Math.round(titleFontSize * 1.35));\n const textGap = 8; // PORTRAIT_TEXT_GAP_FROM_IMAGE\n const titleToContentGap = 4; // PORTRAIT_TITLE_TO_CONTENT_GAP\n const breath = 16; // 额外呼吸空间\n return Math.max(\n LARGE,\n Math.round(imageHeight / 2 + textGap + titleLineHeight + titleToContentGap + contentHeight + breath)\n );\n })();\n // ladder:\n // - 左右 padding ≈ block content 宽度 × 2(保证两端 block 沿对角线水平有呼吸)\n // - 上下 padding ≈ block 高度 × 3(保证两端 block 沿对角线垂直留出充足画布留白)\n // 由于 transformSpec 阶段还无法获取真实 viewWidth,这里直接用 spec 中的估值。\n // 同时限制 padding 不超过 canvas 对应维度的 30%,否则 inner 区域会被挤压到不可见。\n const ladderHorizontalPadding = (() => {\n if (!ladder) {\n return 0;\n }\n const blockWidth = (spec as IStorylineSpec).block?.minWidth ?? resolveBlockWidth(spec as IStorylineSpec, 0);\n const imageWidth = (spec as IStorylineSpec).image?.width ?? 96; // UP_LADDER_BLOCK_IMAGE_SIZE\n const imageGap = (spec as IStorylineSpec).image?.gap ?? DEFAULT_IMAGE_GAP;\n const innerPadding = 12 * 2; // up-ladder 默认 block padding 12,左右共 24\n const contentWidth = Math.max(blockWidth - imageWidth - imageGap - innerPadding, DEFAULT_BLOCK_WIDTH * 0.5);\n const ideal = Math.round(contentWidth * 2);\n const canvasWidth = (spec as IStorylineSpec).width as number | undefined;\n const cap = canvasWidth ? Math.floor(canvasWidth * 0.3) : ideal;\n return Math.min(ideal, cap);\n })();\n const ladderVerticalPadding = (() => {\n if (!ladder) {\n return 0;\n }\n const blockHeight = (spec as IStorylineSpec).block?.height ?? 132;\n const ideal = Math.round(blockHeight * 3);\n const canvasHeight = (spec as IStorylineSpec).height as number | undefined;\n const cap = canvasHeight ? Math.floor(canvasHeight * 0.3) : ideal;\n return Math.min(ideal, cap);\n })();\n // arc up(dome): 顶部留给 textBox,底部紧贴(不要额外 padding)\n // arc down(bowl): 底部留给 textBox,顶部紧贴(不要额外 padding)\n // portrait: 底部留给最后一个 block 的 content\n // ladder: 四周均为 content 宽度\n // 其它:保持原默认 [SMALL, SMALL, LARGE, SMALL]\n const defaultTop = Math.max(\n topTitleImageReserve,\n clock ? 40 : ladder ? ladderVerticalPadding : arcDown ? 0 : arcUp ? TEXT_RESERVE : SMALL\n );\n const defaultBottom = clock\n ? 60\n : portrait\n ? portraitBottomReserve\n : wing\n ? 300\n : arcUp\n ? 100\n : arcDown\n ? TEXT_RESERVE\n : LARGE;\n // arc:左右 padding = content 宽度(canvasWidth / (count + 1)),保证内容沿弧线均匀分布\n const arcHorizontalPadding = (() => {\n if (!arc) {\n return SMALL;\n }\n const count = Math.max((spec as IStorylineSpec).data?.length ?? 0, 1);\n const canvasWidth = (spec as IStorylineSpec).width as number | undefined;\n if (!canvasWidth) {\n return SMALL;\n }\n return Math.round(canvasWidth / (count + 1));\n })();\n const defaultLeft = clock ? 40 : ladder ? ladderHorizontalPadding : arcHorizontalPadding;\n const defaultRight = clock ? 40 : ladder ? ladderHorizontalPadding : arcHorizontalPadding;\n\n const p = spec.padding;\n if (p == null) {\n spec.padding = [defaultTop, defaultRight, defaultBottom, defaultLeft];\n return;\n }\n if (typeof p === 'number') {\n spec.padding = [Math.max(p, topTitleImageReserve), p, p, p];\n return;\n }\n if (Array.isArray(p)) {\n const [t, r = defaultRight, b, l = defaultLeft] = p;\n spec.padding = [Math.max(t ?? defaultTop, topTitleImageReserve), r, b ?? defaultBottom, l];\n return;\n }\n if (typeof p === 'object') {\n spec.padding = {\n top: Math.max(p.top ?? defaultTop, topTitleImageReserve),\n right: p.right ?? defaultRight,\n bottom: p.bottom ?? defaultBottom,\n left: p.left ?? defaultLeft\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 const titleImageMark = buildTopTitleImageMark(spec);\n // landscape:连接曲线绘制在所有 block 之上,避免被 image 遮挡\n if (isLandscape(spec)) {\n return [titleImageMark, ...blockMarks, lineMark].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // portrait:lineMark 是中轴 rect,作为底层背景先绘制\n if (isPortrait(spec)) {\n return [lineMark, titleImageMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // arc:先绘制 titleImage(视觉锚点),再绘制贯穿 block 的弧线,最后绘制 block;\n // arc 不绘制 block 之间默认的连接线。direction = 'up' 时 titleImage 贴底(穹顶),\n // direction = 'down' 时 titleImage 贴顶(碗形)\n if (isArc(spec)) {\n const arcTitleImageMark = buildArcTitleImageMark(spec);\n const arcMark = buildArcMark(spec);\n return [arcTitleImageMark, arcMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // clock:辐射式信息盘 —— 圆环骨架 + 径向分隔线 + blocks(楔形 + 外圈文字)\n if (isClock(spec)) {\n const ringsMark = buildClockArcMark(spec);\n return [titleImageMark, ringsMark, ...blockMarks].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 const wingTitleImageMark = buildWingTitleImageMark(spec);\n return [arcMark, wingTitleImageMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // ladder:参考 Bauhaus 信息图 —— 对角线 + 沿对角线倾斜的 headline 大字 + 两侧错落 block\n if (isLadder(spec)) {\n const diagonalMark = buildLadderDiagonalMark(spec);\n const headlineMark = buildLadderHeadlineMark(spec);\n return [diagonalMark, headlineMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n return [titleImageMark, 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 (isArc(spec)) {\n return buildArcBlockMark(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 if (isLadder(spec)) {\n return buildLadderBlockMark(spec, block, index);\n }\n\n return buildDefaultBlockMark(spec, block, index);\n};\n"]}
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 {\n isArc,\n isClock,\n isLandscape,\n isPortrait,\n isWing,\n normalizeLayout,\n buildTopTitleImageMark,\n getTitleImageReservedHeight\n} from './layouts/common';\nimport { buildClockArcMark, buildClockBlockMark } from './layouts/clock';\nimport { buildDefaultBlockMark, buildDefaultLineMark } from './layouts/default';\nimport { buildLandscapeBlockMark, buildLandscapeConnectingCurve } from './layouts/landscape';\nimport {\n buildPortraitAxisMark,\n buildPortraitBlockMark,\n PORTRAIT_CONTENT_HEIGHT_RATIO,\n PORTRAIT_IMAGE_HEIGHT_RATIO\n} from './layouts/portrait';\nimport { buildArcBlockMark, buildArcMark, buildArcTitleImageMark } from './layouts/arc';\nimport { buildWingArcMark, buildWingBlockMark, buildWingTitleImageMark } 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 * - arc up(dome 穹顶):titleImage 贴底 + textBox 在弧线上方,所以默认底部留 100px、顶部留 280px 给 textBox + 弧线呼吸空间;\n * - arc down(bowl 碗形):titleImage 贴顶 + textBox 在弧线下方,所以默认顶部留 100px、底部留 280px 给 textBox + 弧线呼吸空间;\n * - portrait:textBox 在 image 下方,最后一个 block 的 content 容易超出 region。底部 padding 默认 = 单个 block 的 content 高度\n * (即 regionHeight / count * 0.6),保证最后一个 block 有完整的 content 展示空间;\n * 用户在 spec.padding 中显式指定的值会被保留;顶部 titleImage 会额外保证最小 top padding,避免覆盖 region 内容。\n */\nconst applyDefaultPadding = (spec: any) => {\n const LARGE = 100;\n const SMALL = 20;\n // 给 textBox(240px)+ 一定呼吸空间,避免内容超出画布\n const TEXT_RESERVE = 280;\n const arc = isArc(spec as IStorylineSpec);\n const arcDown = arc && normalizeLayout((spec as IStorylineSpec).layout).direction === 'down';\n const arcUp = arc && !arcDown;\n const portrait = isPortrait(spec as IStorylineSpec);\n const wing = isWing(spec as IStorylineSpec);\n const clock = isClock(spec as IStorylineSpec);\n const topTitleImageReserve = (() => {\n if (arc || !(spec as IStorylineSpec).titleImage?.image || (spec as IStorylineSpec).titleImage?.visible === false) {\n return 0;\n }\n return getTitleImageReservedHeight(\n spec as IStorylineSpec,\n Number((spec as IStorylineSpec).width ?? 1000),\n Number((spec as IStorylineSpec).height ?? 600)\n );\n })();\n // clock 辐射式布局:底部和顶部 blocks 的文字会向外延伸,需要在四周围留空间\n // portrait 底部 padding:精准预留最后一个 block 的 content 展示空间。\n // portrait 几何(layouts/portrait.ts):\n // - 每个 block center.y 等距放置\n // - image 中心 = block center;imageHeight ≈ slotHeight * PORTRAIT_IMAGE_HEIGHT_RATIO\n // - content 紧贴 image 下方:textY = image 底 + textGap;textHeight = titleLine + titleGap + contentHeight\n // - contentHeight ≈ slotHeight * PORTRAIT_CONTENT_HEIGHT_RATIO\n // 最后一个 block center 到 canvas 底部需要至少 imageH/2 + textGap + titleLine + titleGap + contentH。\n // transformSpec 阶段无法获得真实 region,使用 spec.height 估算 slotHeight;缺省回退到 LARGE。\n const portraitBottomReserve = (() => {\n if (!portrait) {\n return 0;\n }\n const count = (spec as IStorylineSpec).data?.length ?? 0;\n const canvasHeight = (spec as IStorylineSpec).height as number | undefined;\n if (!count || !canvasHeight) {\n return LARGE;\n }\n // 在 transformSpec 阶段还没经过 region 减去 padding 等步骤,\n // 这里直接用 canvasHeight / (count + 1) 作为 slotHeight 的近似上界,\n // 后续 layout 逻辑会基于真实 region 重新计算 imageH / contentH。\n const slotHeight = canvasHeight / (count + 1);\n const imageHeight = (spec as IStorylineSpec).image?.height ?? slotHeight * PORTRAIT_IMAGE_HEIGHT_RATIO;\n const contentHeight = slotHeight * PORTRAIT_CONTENT_HEIGHT_RATIO;\n const titleFontSize = Number((spec.title?.style as any)?.fontSize ?? 26);\n const titleLineHeight = Number((spec.title?.style as any)?.lineHeight ?? Math.round(titleFontSize * 1.35));\n const textGap = 8; // PORTRAIT_TEXT_GAP_FROM_IMAGE\n const titleToContentGap = 4; // PORTRAIT_TITLE_TO_CONTENT_GAP\n const breath = 16; // 额外呼吸空间\n return Math.max(\n LARGE,\n Math.round(imageHeight / 2 + textGap + titleLineHeight + titleToContentGap + contentHeight + breath)\n );\n })();\n // arc up(dome): 顶部留给 textBox,底部紧贴(不要额外 padding)\n // arc down(bowl): 底部留给 textBox,顶部紧贴(不要额外 padding)\n // portrait: 底部留给最后一个 block 的 content\n // 其它:保持原默认 [SMALL, SMALL, LARGE, SMALL]\n const defaultTop = Math.max(topTitleImageReserve, clock ? 40 : arcDown ? 0 : arcUp ? TEXT_RESERVE : SMALL);\n const defaultBottom = clock\n ? 60\n : portrait\n ? portraitBottomReserve\n : wing\n ? 300\n : arcUp\n ? 100\n : arcDown\n ? TEXT_RESERVE\n : LARGE;\n // arc:左右 padding = content 宽度(canvasWidth / (count + 1)),保证内容沿弧线均匀分布\n const arcHorizontalPadding = (() => {\n if (!arc) {\n return SMALL;\n }\n const count = Math.max((spec as IStorylineSpec).data?.length ?? 0, 1);\n const canvasWidth = (spec as IStorylineSpec).width as number | undefined;\n if (!canvasWidth) {\n return SMALL;\n }\n return Math.round(canvasWidth / (count + 1));\n })();\n const defaultLeft = clock ? 40 : arcHorizontalPadding;\n const defaultRight = clock ? 40 : arcHorizontalPadding;\n\n const p = spec.padding;\n if (p == null) {\n spec.padding = [defaultTop, defaultRight, defaultBottom, defaultLeft];\n return;\n }\n if (typeof p === 'number') {\n spec.padding = [Math.max(p, topTitleImageReserve), p, p, p];\n return;\n }\n if (Array.isArray(p)) {\n const [t, r = defaultRight, b, l = defaultLeft] = p;\n spec.padding = [Math.max(t ?? defaultTop, topTitleImageReserve), r, b ?? defaultBottom, l];\n return;\n }\n if (typeof p === 'object') {\n spec.padding = {\n top: Math.max(p.top ?? defaultTop, topTitleImageReserve),\n right: p.right ?? defaultRight,\n bottom: p.bottom ?? defaultBottom,\n left: p.left ?? defaultLeft\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 const titleImageMark = buildTopTitleImageMark(spec);\n // landscape:连接曲线绘制在所有 block 之上,避免被 image 遮挡\n if (isLandscape(spec)) {\n return [titleImageMark, ...blockMarks, lineMark].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // portrait:lineMark 是中轴 rect,作为底层背景先绘制\n if (isPortrait(spec)) {\n return [lineMark, titleImageMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // arc:先绘制 titleImage(视觉锚点),再绘制贯穿 block 的弧线,最后绘制 block;\n // arc 不绘制 block 之间默认的连接线。direction = 'up' 时 titleImage 贴底(穹顶),\n // direction = 'down' 时 titleImage 贴顶(碗形)\n if (isArc(spec)) {\n const arcTitleImageMark = buildArcTitleImageMark(spec);\n const arcMark = buildArcMark(spec);\n return [arcTitleImageMark, arcMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // clock:辐射式信息盘 —— 圆环骨架 + 径向分隔线 + blocks(楔形 + 外圈文字)\n if (isClock(spec)) {\n const ringsMark = buildClockArcMark(spec);\n return [titleImageMark, ringsMark, ...blockMarks].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 const wingTitleImageMark = buildWingTitleImageMark(spec);\n return [arcMark, wingTitleImageMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n return [titleImageMark, 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 (isArc(spec)) {\n return buildArcBlockMark(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 return buildDefaultBlockMark(spec, block, index);\n};\n"]}
@@ -84,4 +84,4 @@ const registerBarLink = () => {
84
84
  };
85
85
 
86
86
  exports.registerBarLink = registerBarLink;
87
- //# sourceMappingURL=bar-link.js.map
87
+ //# sourceMappingURL=bar-link.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.BAR_LINK = void 0, exports.BAR_LINK = "barLink";
6
- //# sourceMappingURL=constant.js.map
6
+ //# sourceMappingURL=constant.js.map
@@ -46,4 +46,4 @@ Object.defineProperty(exports, "getBarLinkConfig", {
46
46
  return util_1.appendBarLinkConfig;
47
47
  }
48
48
  }), __exportStar(require("./constant"), exports);
49
- //# sourceMappingURL=index.js.map
49
+ //# sourceMappingURL=index.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=type.js.map
6
+ //# sourceMappingURL=type.js.map
@@ -180,4 +180,4 @@ function appendBarLinkConfig(rawSpec, barLinkSpec) {
180
180
 
181
181
  exports.groupBarsByFields = groupBarsByFields, exports.getLinkData = getLinkData,
182
182
  exports.getBarLinkConfig = getBarLinkConfig, exports.appendBarLinkConfig = appendBarLinkConfig;
183
- //# sourceMappingURL=util.js.map
183
+ //# sourceMappingURL=util.js.map
@@ -84,4 +84,4 @@ function appendBarRegressionLineConfig(chartSpec, spec) {
84
84
  }
85
85
 
86
86
  exports.getBarRegressionLineConfig = getBarRegressionLineConfig, exports.appendBarRegressionLineConfig = appendBarRegressionLineConfig;
87
- //# sourceMappingURL=index.js.map
87
+ //# sourceMappingURL=index.js.map
@@ -2,5 +2,4 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- });
6
- //# sourceMappingURL=type.js.map
5
+ });
@@ -78,4 +78,4 @@ const registerExtensionMarkSyncStatePlugin = () => {
78
78
  };
79
79
 
80
80
  exports.registerExtensionMarkSyncStatePlugin = registerExtensionMarkSyncStatePlugin;
81
- //# sourceMappingURL=extension-mark-sync-state.js.map
81
+ //# sourceMappingURL=extension-mark-sync-state.js.map
@@ -32,4 +32,4 @@ Object.defineProperty(exports, "ExtensionMarkSyncStatePlugin", {
32
32
  return extension_mark_sync_state_1.registerExtensionMarkSyncStatePlugin;
33
33
  }
34
34
  }), __exportStar(require("./type"), exports);
35
- //# sourceMappingURL=index.js.map
35
+ //# sourceMappingURL=index.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=type.js.map
6
+ //# sourceMappingURL=type.js.map
@@ -76,4 +76,4 @@ function appendHistogramRegressionLineConfig(chartSpec, spec) {
76
76
  }
77
77
 
78
78
  exports.getHistogramRegressionLineConfig = getHistogramRegressionLineConfig, exports.appendHistogramRegressionLineConfig = appendHistogramRegressionLineConfig;
79
- //# sourceMappingURL=index.js.map
79
+ //# sourceMappingURL=index.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=type.js.map
6
+ //# sourceMappingURL=type.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("./map-label"), exports), __exportStar(require("./type"), exports);
21
- //# sourceMappingURL=index.js.map
21
+ //# sourceMappingURL=index.js.map
@@ -151,4 +151,4 @@ function candidatesByOrient(positions, anchor, rect, offset = 0) {
151
151
  exports.bound = bound, exports.layoutByPosition = layoutByPosition, exports.layoutOuter = layoutOuter,
152
152
  exports.layoutOuter2 = layoutOuter2, exports.placeRectByOrient = placeRectByOrient,
153
153
  exports.candidatesByOrient = candidatesByOrient;
154
- //# sourceMappingURL=layout.js.map
154
+ //# sourceMappingURL=layout.js.map
@@ -13,4 +13,4 @@ class MapLabelSpecTransformer extends vchart_1.BaseComponentSpecTransformer {
13
13
  }
14
14
 
15
15
  exports.MapLabelSpecTransformer = MapLabelSpecTransformer;
16
- //# sourceMappingURL=map-label-transformer.js.map
16
+ //# sourceMappingURL=map-label-transformer.js.map
@@ -263,4 +263,4 @@ const registerMapLabel = option => {
263
263
  };
264
264
 
265
265
  exports.registerMapLabel = registerMapLabel;
266
- //# sourceMappingURL=map-label.js.map
266
+ //# sourceMappingURL=map-label.js.map
@@ -60,4 +60,4 @@ exports.mapLabel = {
60
60
  }
61
61
  }
62
62
  };
63
- //# sourceMappingURL=theme.js.map
63
+ //# sourceMappingURL=theme.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=type.js.map
6
+ //# sourceMappingURL=type.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("./regression-line"), exports), __exportStar(require("./type"), exports);
21
- //# sourceMappingURL=index.js.map
21
+ //# sourceMappingURL=index.js.map
@@ -55,4 +55,4 @@ const registerRegressionLine = () => {
55
55
  };
56
56
 
57
57
  exports.registerRegressionLine = registerRegressionLine;
58
- //# sourceMappingURL=regression-line.js.map
58
+ //# sourceMappingURL=regression-line.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=type.js.map
6
+ //# sourceMappingURL=type.js.map
@@ -100,4 +100,4 @@ function appendScatterRegressionLineConfig(chartSpec, spec) {
100
100
  }
101
101
 
102
102
  exports.getScatterRegressionLineConfig = getScatterRegressionLineConfig, exports.appendScatterRegressionLineConfig = appendScatterRegressionLineConfig;
103
- //# sourceMappingURL=index.js.map
103
+ //# sourceMappingURL=index.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=type.js.map
6
+ //# sourceMappingURL=type.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.SERIES_BREAK = void 0, exports.SERIES_BREAK = "seriesBreak";
6
- //# sourceMappingURL=constant.js.map
6
+ //# sourceMappingURL=constant.js.map
@@ -46,4 +46,4 @@ Object.defineProperty(exports, "getSeriesBreakConfig", {
46
46
  return util_1.appendSeriesBreakConfig;
47
47
  }
48
48
  }), __exportStar(require("./type"), exports), __exportStar(require("./constant"), exports);
49
- //# sourceMappingURL=index.js.map
49
+ //# sourceMappingURL=index.js.map
@@ -115,4 +115,4 @@ const registerSeriesBreak = () => {
115
115
  };
116
116
 
117
117
  exports.registerSeriesBreak = registerSeriesBreak;
118
- //# sourceMappingURL=series-break.js.map
118
+ //# sourceMappingURL=series-break.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=type.js.map
6
+ //# sourceMappingURL=type.js.map
@@ -245,4 +245,4 @@ const appendSeriesBreakConfig = rawSpec => {
245
245
  };
246
246
 
247
247
  exports.appendSeriesBreakConfig = appendSeriesBreakConfig;
248
- //# sourceMappingURL=util.js.map
248
+ //# sourceMappingURL=util.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.SERIES_LABEL = void 0, exports.SERIES_LABEL = "seriesLabel";
6
- //# sourceMappingURL=constant.js.map
6
+ //# sourceMappingURL=constant.js.map
@@ -45,5 +45,4 @@ Object.defineProperty(exports, "getSeriesLabelConfig", {
45
45
  get: function() {
46
46
  return util_1.appendSeriesLabelConfig;
47
47
  }
48
- });
49
- //# sourceMappingURL=index.js.map
48
+ });
@@ -111,4 +111,4 @@ const registerSeriesLabel = () => {
111
111
  };
112
112
 
113
113
  exports.registerSeriesLabel = registerSeriesLabel;
114
- //# sourceMappingURL=series-label.js.map
114
+ //# sourceMappingURL=series-label.js.map
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=type.js.map
6
+ //# sourceMappingURL=type.js.map
@@ -149,4 +149,4 @@ function appendSeriesLabelConfig(rawSpec, seriesLabelSpec) {
149
149
 
150
150
  exports.dodge = dodge, exports.dodgeHorizontal = dodgeHorizontal, exports.getSeriesLabelConfig = getSeriesLabelConfig,
151
151
  exports.appendSeriesLabelConfig = appendSeriesLabelConfig;
152
- //# sourceMappingURL=util.js.map
152
+ //# sourceMappingURL=util.js.map
@@ -28,4 +28,4 @@ export const register3DPlugin = () => {
28
28
  registerChartPlugin(VChart3dPlugin), registerDirectionalLight(), registerOrthoCamera(),
29
29
  registerViewTransform3dPlugin();
30
30
  };
31
- //# sourceMappingURL=plugin.js.map
31
+ //# sourceMappingURL=plugin.js.map
@@ -21,4 +21,4 @@ export const registerPyramid3dMark = () => {
21
21
  Factory.registerMark(Pyramid3dMark.type, Pyramid3dMark), registerShadowRoot(), registerPyramid3d(),
22
22
  registerPolygonAnimation(), Factory.registerGraphicComponent("pyramid3d", createPyramid3d);
23
23
  };
24
- //# sourceMappingURL=pyramid-3d.js.map
24
+ //# sourceMappingURL=pyramid-3d.js.map
@@ -27,4 +27,4 @@ export const registerRect3dMark = () => {
27
27
  Factory.registerMark(Rect3dMark.type, Rect3dMark), registerShadowRoot(), registerRect3d(),
28
28
  registerRectAnimation(), Factory.registerGraphicComponent("rect3d", createRect3d);
29
29
  };
30
- //# sourceMappingURL=rect-3d.js.map
30
+ //# sourceMappingURL=rect-3d.js.map
@@ -7,4 +7,4 @@ export const is3DChart = spec => {
7
7
  !0);
8
8
  var type;
9
9
  };
10
- //# sourceMappingURL=util.js.map
10
+ //# sourceMappingURL=util.js.map
@@ -56,4 +56,4 @@ export class Axis3dMixin {
56
56
  return getUpdateAttributeOfZAxis(this, ignoreGrid);
57
57
  }
58
58
  }
59
- //# sourceMappingURL=axis-3d-mixin.js.map
59
+ //# sourceMappingURL=axis-3d-mixin.js.map
@@ -13,4 +13,4 @@ export const registerCartesianBandAxis3d = () => {
13
13
  axisZ: Object.assign(Object.assign({}, CartesianBandAxis.builtInTheme.axisX), axisZ)
14
14
  }), mixin(AxisCls, Axis3dMixin);
15
15
  };
16
- //# sourceMappingURL=band-axis.js.map
16
+ //# sourceMappingURL=band-axis.js.map
@@ -16,4 +16,4 @@ export const registerAxis3dPlugin = () => {
16
16
  register3DPlugin(), registerLayout3d(), registerCartesianBandAxis3d(), registerCartesianLinearAxis3d(),
17
17
  registerCartesianTimeAxis3d(), registerCartesianSymlogAxis3d(), registerCartesianLogAxis3d();
18
18
  };
19
- //# sourceMappingURL=index.js.map
19
+ //# sourceMappingURL=index.js.map
@@ -13,4 +13,4 @@ export const registerCartesianLinearAxis3d = () => {
13
13
  axisZ: Object.assign(Object.assign({}, CartesianLinearAxis.builtInTheme.axisX), axisZ)
14
14
  }), mixin(AxisCls, Axis3dMixin);
15
15
  };
16
- //# sourceMappingURL=linear-axis.js.map
16
+ //# sourceMappingURL=linear-axis.js.map
@@ -13,4 +13,4 @@ export const registerCartesianLogAxis3d = () => {
13
13
  axisZ: Object.assign(Object.assign({}, CartesianLogAxis.builtInTheme.axisX), axisZ)
14
14
  }), mixin(AxisCls, Axis3dMixin);
15
15
  };
16
- //# sourceMappingURL=log-axis.js.map
16
+ //# sourceMappingURL=log-axis.js.map
@@ -13,4 +13,4 @@ export const registerCartesianSymlogAxis3d = () => {
13
13
  axisZ: Object.assign(Object.assign({}, AxisCls.builtInTheme.axisX), axisZ)
14
14
  }), mixin(AxisCls, Axis3dMixin);
15
15
  };
16
- //# sourceMappingURL=symlog-axis.js.map
16
+ //# sourceMappingURL=symlog-axis.js.map
@@ -3,4 +3,4 @@ export const axisZ = {
3
3
  space: 0
4
4
  }
5
5
  };
6
- //# sourceMappingURL=theme.js.map
6
+ //# sourceMappingURL=theme.js.map
@@ -13,4 +13,4 @@ export const registerCartesianTimeAxis3d = () => {
13
13
  axisZ: Object.assign(Object.assign({}, AxisCls.builtInTheme.axisX), axisZ)
14
14
  }), mixin(AxisCls, Axis3dMixin);
15
15
  };
16
- //# sourceMappingURL=time-axis.js.map
16
+ //# sourceMappingURL=time-axis.js.map
@@ -37,4 +37,4 @@ export const getUpdateAttributeOfZAxis = (axis, ignoreGrid) => {
37
37
  anchor3d: anchor3d
38
38
  }), attrs;
39
39
  };
40
- //# sourceMappingURL=util.js.map
40
+ //# sourceMappingURL=util.js.map
@@ -7,4 +7,5 @@ export const bar3dSeriesMark = {
7
7
  name: "bar3d",
8
8
  type: "rect3d"
9
9
  }
10
- };
10
+ };
11
+ //# sourceMappingURL=constant.js.map
@@ -19,5 +19,4 @@ CandlestickChart.transformerConstructor = CandlestickChartSpecTransformer;
19
19
  export const registerCandlestickChart = () => {
20
20
  registerDimensionTooltipProcessor(), registerMarkTooltipProcessor(), registerDimensionEvents(),
21
21
  registerDimensionHover(), registerCandlestickSeries(), Factory.registerChart(CandlestickChart.type, CandlestickChart);
22
- };
23
- //# sourceMappingURL=candlestick.js.map
22
+ };
@@ -196,4 +196,4 @@ export class CombinationCandlestickChartSpecTransformer extends CartesianChartSp
196
196
  };
197
197
  }
198
198
  }
199
- //# sourceMappingURL=combination-candlestick-transformer.js.map
199
+ //# sourceMappingURL=combination-candlestick-transformer.js.map
@@ -26,4 +26,4 @@ mixin(CombinationCandlestickChart, StackChartMixin);
26
26
  export const registerCombinationCandlestickChart = () => {
27
27
  registerCandlestickSeries(), Factory.registerChart(CombinationCandlestickChart.type, CombinationCandlestickChart);
28
28
  };
29
- //# sourceMappingURL=combination-candlestick.js.map
29
+ //# sourceMappingURL=combination-candlestick.js.map
@@ -1,2 +1,2 @@
1
1
  export const CombinationCandlestickChart_TYPE = "combinationCandlestick";
2
- //# sourceMappingURL=constant.js.map
2
+ //# sourceMappingURL=constant.js.map
@@ -3,4 +3,4 @@ export * from "./combination-candlestick";
3
3
  export * from "./interface";
4
4
 
5
5
  export * from "./constant";
6
- //# sourceMappingURL=index.js.map
6
+ //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
1
  export { };
2
- //# sourceMappingURL=interface.js.map
2
+ //# sourceMappingURL=interface.js.map
@@ -91,4 +91,4 @@ function computeIndex(arrow, totalArrows) {
91
91
  }
92
92
  return index;
93
93
  }
94
- //# sourceMappingURL=arrow-data-transform.js.map
94
+ //# sourceMappingURL=arrow-data-transform.js.map
@@ -22,4 +22,4 @@ export const DEFAULT_ARROW_TEXT_MARK_STYLE = {
22
22
  export const DEFAULT_FUNNEL_BACKGROUND_MARK_STYLE = {
23
23
  fill: "#eff1f9"
24
24
  };
25
- //# sourceMappingURL=constants.js.map
25
+ //# sourceMappingURL=constants.js.map
@@ -190,4 +190,4 @@ function addFunnelBackgroundMark(funnelBackground) {
190
190
  })
191
191
  });
192
192
  }
193
- //# sourceMappingURL=conversion-funnel-transformer.js.map
193
+ //# sourceMappingURL=conversion-funnel-transformer.js.map
@@ -54,4 +54,4 @@ export const registerConversionFunnelChart = option => {
54
54
  const vchartConstructor = (null == option ? void 0 : option.VChart) || VChart;
55
55
  vchartConstructor && (vchartConstructor.useChart([ ConversionFunnelChart ]), vchartConstructor.useSeries([ ConversionFunnelSeries ]));
56
56
  };
57
- //# sourceMappingURL=conversion-funnel.js.map
57
+ //# sourceMappingURL=conversion-funnel.js.map
@@ -1,4 +1,4 @@
1
1
  export * from "./interface";
2
2
 
3
3
  export * from "./conversion-funnel";
4
- //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -1 +1,2 @@
1
- export { };
1
+ export { };
2
+ //# sourceMappingURL=interface.js.map
@@ -7,4 +7,4 @@ export function isSameArrow(arrow1, arrow2) {
7
7
  const {from: from1, to: to1} = arrow1, {from: from2, to: to2} = arrow2;
8
8
  return from1 === from2 && to1 === to2;
9
9
  }
10
- //# sourceMappingURL=util.js.map
10
+ //# sourceMappingURL=util.js.map
@@ -22,4 +22,4 @@ export const registerFunnel3dChart = () => {
22
22
  registerMarkTooltipProcessor(), register3DPlugin(), registerLayout3d(), registerFunnel3dSeries(),
23
23
  Factory.registerChart(Funnel3dChart.type, Funnel3dChart);
24
24
  };
25
- //# sourceMappingURL=chart.js.map
25
+ //# sourceMappingURL=chart.js.map
@@ -22,4 +22,4 @@ export const funnel3dSeriesMark = Object.assign(Object.assign({}, baseSeriesMark
22
22
  type: "rule"
23
23
  }
24
24
  });
25
- //# sourceMappingURL=constant.js.map
25
+ //# sourceMappingURL=constant.js.map
@@ -5,4 +5,4 @@ export * from "./series";
5
5
  export * from "./series-spec-transformer";
6
6
 
7
7
  export * from "./interface";
8
- //# sourceMappingURL=index.js.map
8
+ //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
1
  export { };
2
- //# sourceMappingURL=interface.js.map
2
+ //# sourceMappingURL=interface.js.map
@@ -5,4 +5,4 @@ export class Funnel3dSeriesSpecTransformer extends FunnelSeriesSpecTransformer {
5
5
  this._addMarkLabelSpec(spec, "funnel3d"), spec.isTransform && this._addMarkLabelSpec(spec, "transform3d", "transformLabel");
6
6
  }
7
7
  }
8
- //# sourceMappingURL=series-spec-transformer.js.map
8
+ //# sourceMappingURL=series-spec-transformer.js.map
@@ -80,4 +80,5 @@ Funnel3dSeries.builtInTheme = {
80
80
 
81
81
  export const registerFunnel3dSeries = () => {
82
82
  registerPyramid3dMark(), registerTextMark(), registerRuleMark(), Factory.registerSeries(Funnel3dSeries.type, Funnel3dSeries);
83
- };
83
+ };
84
+ //# sourceMappingURL=series.js.map
@@ -1,4 +1,4 @@
1
1
  import { getFunnelTheme } from "@visactor/vchart";
2
2
 
3
3
  export const funnel3d = getFunnelTheme(!0);
4
- //# sourceMappingURL=theme.js.map
4
+ //# sourceMappingURL=theme.js.map
@@ -46,4 +46,4 @@ ElementHighlightByGraphicName.type = type;
46
46
  export const registerElementHighlightByGraphicName = () => {
47
47
  Factory.registerInteractionTrigger(ElementHighlightByGraphicName.type, ElementHighlightByGraphicName);
48
48
  };
49
- //# sourceMappingURL=element-highlight-by-graphic-name.js.map
49
+ //# 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;