@visactor/vchart-extension 2.1.0-alpha.15 → 2.1.0-alpha.17
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.
- package/build/index.js +551 -363
- package/build/index.min.js +2 -2
- package/cjs/charts/axis-3d/index.js +2 -1
- package/cjs/charts/axis-3d/linear-axis.js +1 -2
- package/cjs/charts/bar-3d/chart-spec-transformer.js +1 -1
- package/cjs/charts/bar-3d/chart.js +1 -1
- package/cjs/charts/bar-3d/constant.js +1 -1
- package/cjs/charts/bar-3d/index.js +1 -1
- package/cjs/charts/bar-3d/interface.js +1 -2
- package/cjs/charts/bar-3d/series-spec-transformer.js +1 -1
- package/cjs/charts/bar-3d/series.js +1 -1
- package/cjs/charts/bar-3d/theme.js +1 -1
- package/cjs/charts/candlestick/candlestick-transformer.js +1 -1
- package/cjs/charts/candlestick/candlestick.js +1 -1
- package/cjs/charts/candlestick/index.js +1 -1
- package/cjs/charts/candlestick/interface.js +1 -1
- package/cjs/charts/candlestick/util.js +1 -1
- package/cjs/charts/combination-candlestick/combination-candlestick-transformer.js +1 -1
- package/cjs/charts/combination-candlestick/combination-candlestick.js +1 -1
- package/cjs/charts/combination-candlestick/constant.js +1 -1
- package/cjs/charts/combination-candlestick/index.js +1 -1
- package/cjs/charts/combination-candlestick/interface.js +1 -1
- package/cjs/charts/conversion-funnel/arrow-data-transform.js +1 -2
- package/cjs/charts/conversion-funnel/constants.js +1 -1
- package/cjs/charts/conversion-funnel/conversion-funnel-transformer.js +1 -1
- package/cjs/charts/conversion-funnel/conversion-funnel.js +1 -1
- package/cjs/charts/conversion-funnel/index.js +1 -1
- package/cjs/charts/conversion-funnel/interface.js +1 -1
- package/cjs/charts/conversion-funnel/util.js +1 -1
- package/cjs/charts/funnel-3d/chart.js +1 -1
- package/cjs/charts/funnel-3d/constant.js +1 -1
- package/cjs/charts/funnel-3d/index.js +1 -1
- package/cjs/charts/funnel-3d/interface.js +1 -1
- package/cjs/charts/funnel-3d/series-spec-transformer.js +1 -1
- package/cjs/charts/funnel-3d/series.js +1 -1
- package/cjs/charts/funnel-3d/theme.js +1 -1
- package/cjs/charts/histogram-3d/chart.js +1 -1
- package/cjs/charts/storyline/interface.d.ts +9 -1
- package/cjs/charts/storyline/interface.js.map +1 -1
- package/cjs/charts/storyline/layout.js +25 -32
- package/cjs/charts/storyline/layout.js.map +1 -1
- package/cjs/charts/storyline/layouts/arc.d.ts +5 -0
- package/cjs/charts/storyline/layouts/{dome.js → arc.js} +69 -60
- package/cjs/charts/storyline/layouts/arc.js.map +1 -0
- package/cjs/charts/storyline/layouts/clock.js +23 -10
- package/cjs/charts/storyline/layouts/clock.js.map +1 -1
- package/cjs/charts/storyline/layouts/common.d.ts +4 -2
- package/cjs/charts/storyline/layouts/common.js +9 -5
- package/cjs/charts/storyline/layouts/common.js.map +1 -1
- package/cjs/charts/storyline/layouts/default.js +6 -4
- package/cjs/charts/storyline/layouts/default.js.map +1 -1
- package/cjs/charts/storyline/layouts/ladder.d.ts +5 -0
- package/cjs/charts/storyline/layouts/ladder.js +205 -0
- package/cjs/charts/storyline/layouts/ladder.js.map +1 -0
- package/cjs/charts/storyline/layouts/landscape.js +5 -3
- package/cjs/charts/storyline/layouts/landscape.js.map +1 -1
- package/cjs/charts/storyline/layouts/portrait.js +16 -42
- package/cjs/charts/storyline/layouts/portrait.js.map +1 -1
- package/cjs/charts/storyline/layouts/{bowl.d.ts → wing.d.ts} +2 -3
- package/cjs/charts/storyline/layouts/wing.js +215 -0
- package/cjs/charts/storyline/layouts/wing.js.map +1 -0
- package/cjs/charts/storyline/storyline-transformer.js +34 -18
- package/cjs/charts/storyline/storyline-transformer.js.map +1 -1
- package/cjs/components/bar-link/bar-link.js +1 -1
- package/cjs/components/bar-link/constant.js +1 -1
- package/cjs/components/bar-link/index.js +1 -1
- package/cjs/components/bar-link/type.js +1 -1
- package/cjs/components/bar-link/util.js +1 -1
- package/cjs/components/bar-regression-line/index.js +1 -1
- package/cjs/components/bar-regression-line/type.js +1 -1
- package/cjs/components/extension-mark-sync-state/extension-mark-sync-state.js +1 -1
- package/cjs/components/extension-mark-sync-state/index.js +1 -1
- package/cjs/components/extension-mark-sync-state/type.js +1 -1
- package/cjs/components/histogram-regression-line/index.js +1 -1
- package/cjs/components/histogram-regression-line/type.js +2 -1
- package/cjs/components/map-label/index.js +1 -1
- package/cjs/components/map-label/layout.js +1 -1
- package/cjs/components/map-label/map-label-transformer.js +1 -1
- package/cjs/components/map-label/map-label.js +1 -1
- package/cjs/components/map-label/theme.js +1 -1
- package/cjs/components/map-label/type.js +1 -1
- package/cjs/components/regression-line/index.js +1 -1
- package/cjs/components/regression-line/regression-line.js +1 -1
- package/cjs/components/regression-line/type.js +1 -1
- package/cjs/components/scatter-regression-line/index.js +1 -1
- package/cjs/components/scatter-regression-line/type.js +1 -1
- package/cjs/components/series-break/constant.js +1 -1
- package/cjs/components/series-break/index.js +1 -1
- package/cjs/components/series-break/series-break.js +1 -1
- package/cjs/components/series-break/type.js +1 -1
- package/cjs/components/series-break/util.js +2 -1
- package/cjs/components/series-label/constant.js +1 -1
- package/cjs/components/series-label/index.js +1 -1
- package/cjs/components/series-label/series-label.js +1 -1
- package/cjs/components/series-label/type.js +1 -1
- package/cjs/components/series-label/util.js +1 -1
- package/esm/charts/axis-3d/index.js +2 -1
- package/esm/charts/axis-3d/linear-axis.js +1 -2
- package/esm/charts/bar-3d/chart-spec-transformer.js +1 -1
- package/esm/charts/bar-3d/chart.js +1 -1
- package/esm/charts/bar-3d/constant.js +1 -1
- package/esm/charts/bar-3d/index.js +1 -1
- package/esm/charts/bar-3d/interface.js +1 -2
- package/esm/charts/bar-3d/series-spec-transformer.js +1 -1
- package/esm/charts/bar-3d/series.js +1 -1
- package/esm/charts/bar-3d/theme.js +1 -1
- package/esm/charts/candlestick/candlestick-transformer.js +1 -1
- package/esm/charts/candlestick/candlestick.js +1 -1
- package/esm/charts/candlestick/index.js +1 -1
- package/esm/charts/candlestick/interface.js +1 -1
- package/esm/charts/candlestick/util.js +1 -1
- package/esm/charts/combination-candlestick/combination-candlestick-transformer.js +1 -1
- package/esm/charts/combination-candlestick/combination-candlestick.js +1 -1
- package/esm/charts/combination-candlestick/constant.js +1 -1
- package/esm/charts/combination-candlestick/index.js +1 -1
- package/esm/charts/combination-candlestick/interface.js +1 -1
- package/esm/charts/conversion-funnel/arrow-data-transform.js +1 -2
- package/esm/charts/conversion-funnel/constants.js +1 -1
- package/esm/charts/conversion-funnel/conversion-funnel-transformer.js +1 -1
- package/esm/charts/conversion-funnel/conversion-funnel.js +1 -1
- package/esm/charts/conversion-funnel/index.js +1 -1
- package/esm/charts/conversion-funnel/interface.js +1 -1
- package/esm/charts/conversion-funnel/util.js +1 -1
- package/esm/charts/funnel-3d/chart.js +1 -1
- package/esm/charts/funnel-3d/constant.js +1 -1
- package/esm/charts/funnel-3d/index.js +1 -1
- package/esm/charts/funnel-3d/interface.js +1 -1
- package/esm/charts/funnel-3d/series-spec-transformer.js +1 -1
- package/esm/charts/funnel-3d/series.js +1 -1
- package/esm/charts/funnel-3d/theme.js +1 -1
- package/esm/charts/histogram-3d/chart.js +1 -1
- package/esm/charts/storyline/interface.d.ts +9 -1
- package/esm/charts/storyline/interface.js.map +1 -1
- package/esm/charts/storyline/layout.js +25 -32
- package/esm/charts/storyline/layout.js.map +1 -1
- package/esm/charts/storyline/layouts/arc.d.ts +5 -0
- package/esm/charts/storyline/layouts/{bowl.js → arc.js} +64 -56
- package/esm/charts/storyline/layouts/arc.js.map +1 -0
- package/esm/charts/storyline/layouts/clock.js +23 -10
- package/esm/charts/storyline/layouts/clock.js.map +1 -1
- package/esm/charts/storyline/layouts/common.d.ts +4 -2
- package/esm/charts/storyline/layouts/common.js +4 -2
- package/esm/charts/storyline/layouts/common.js.map +1 -1
- package/esm/charts/storyline/layouts/default.js +6 -4
- package/esm/charts/storyline/layouts/default.js.map +1 -1
- package/esm/charts/storyline/layouts/ladder.d.ts +5 -0
- package/esm/charts/storyline/layouts/ladder.js +196 -0
- package/esm/charts/storyline/layouts/ladder.js.map +1 -0
- package/esm/charts/storyline/layouts/landscape.js +5 -3
- package/esm/charts/storyline/layouts/landscape.js.map +1 -1
- package/esm/charts/storyline/layouts/portrait.js +16 -42
- package/esm/charts/storyline/layouts/portrait.js.map +1 -1
- package/esm/charts/storyline/layouts/{bowl.d.ts → wing.d.ts} +2 -3
- package/esm/charts/storyline/layouts/wing.js +210 -0
- package/esm/charts/storyline/layouts/wing.js.map +1 -0
- package/esm/charts/storyline/storyline-transformer.js +32 -17
- package/esm/charts/storyline/storyline-transformer.js.map +1 -1
- package/esm/components/bar-link/bar-link.js +1 -1
- package/esm/components/bar-link/constant.js +1 -1
- package/esm/components/bar-link/index.js +1 -1
- package/esm/components/bar-link/type.js +1 -1
- package/esm/components/bar-link/util.js +1 -1
- package/esm/components/bar-regression-line/index.js +1 -1
- package/esm/components/bar-regression-line/type.js +1 -1
- package/esm/components/extension-mark-sync-state/extension-mark-sync-state.js +1 -1
- package/esm/components/extension-mark-sync-state/index.js +1 -1
- package/esm/components/extension-mark-sync-state/type.js +1 -1
- package/esm/components/histogram-regression-line/index.js +1 -1
- package/esm/components/histogram-regression-line/type.js +2 -1
- package/esm/components/map-label/index.js +1 -1
- package/esm/components/map-label/layout.js +1 -1
- package/esm/components/map-label/map-label-transformer.js +1 -1
- package/esm/components/map-label/map-label.js +1 -1
- package/esm/components/map-label/theme.js +1 -1
- package/esm/components/map-label/type.js +1 -1
- package/esm/components/regression-line/index.js +1 -1
- package/esm/components/regression-line/regression-line.js +1 -1
- package/esm/components/regression-line/type.js +1 -1
- package/esm/components/scatter-regression-line/index.js +1 -1
- package/esm/components/scatter-regression-line/type.js +1 -1
- package/esm/components/series-break/constant.js +1 -1
- package/esm/components/series-break/index.js +1 -1
- package/esm/components/series-break/series-break.js +1 -1
- package/esm/components/series-break/type.js +1 -1
- package/esm/components/series-break/util.js +2 -1
- package/esm/components/series-label/constant.js +1 -1
- package/esm/components/series-label/index.js +1 -1
- package/esm/components/series-label/series-label.js +1 -1
- package/esm/components/series-label/type.js +1 -1
- package/esm/components/series-label/util.js +1 -1
- package/package.json +4 -4
- package/cjs/charts/storyline/layouts/bowl.js +0 -286
- package/cjs/charts/storyline/layouts/bowl.js.map +0 -1
- package/cjs/charts/storyline/layouts/dome.d.ts +0 -5
- package/cjs/charts/storyline/layouts/dome.js.map +0 -1
- package/esm/charts/storyline/layouts/bowl.js.map +0 -1
- package/esm/charts/storyline/layouts/dome.d.ts +0 -5
- package/esm/charts/storyline/layouts/dome.js +0 -278
- package/esm/charts/storyline/layouts/dome.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
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 = 30;\nconst WING_TITLE_FONT_SIZE = 22;\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 // image 背后的装饰图元(halo)默认不展示\n const showBackground = spec.image?.showBackground === true;\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 showBackground\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 : null,\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 repeatX: 'no-repeat',\n repeatY: 'no-repeat',\n imageMode: 'cover',\n imagePosition: 'center',\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 stroke: '#fff',\n lineWidth: 5,\n lineJoin: 'round',\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"]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.StorylineChartSpecTransformer = void 0;
|
|
6
6
|
|
|
7
|
-
const vchart_1 = require("@visactor/vchart"), common_1 = require("./layouts/common"), clock_1 = require("./layouts/clock"), default_1 = require("./layouts/default"), landscape_1 = require("./layouts/landscape"), portrait_1 = require("./layouts/portrait"),
|
|
7
|
+
const vchart_1 = require("@visactor/vchart"), common_1 = require("./layouts/common"), clock_1 = require("./layouts/clock"), default_1 = require("./layouts/default"), landscape_1 = require("./layouts/landscape"), portrait_1 = require("./layouts/portrait"), arc_1 = require("./layouts/arc"), wing_1 = require("./layouts/wing"), ladder_1 = require("./layouts/ladder");
|
|
8
8
|
|
|
9
9
|
class StorylineChartSpecTransformer extends vchart_1.CommonChartSpecTransformer {
|
|
10
10
|
transformSpec(spec) {
|
|
@@ -22,31 +22,46 @@ exports.StorylineChartSpecTransformer = StorylineChartSpecTransformer;
|
|
|
22
22
|
|
|
23
23
|
const applyDefaultPadding = spec => {
|
|
24
24
|
var _a, _b, _c, _d;
|
|
25
|
-
const
|
|
25
|
+
const arc = (0, common_1.isArc)(spec), arcDown = arc && "down" === (0, common_1.normalizeLayout)(spec.layout).direction, arcUp = arc && !arcDown, portrait = (0,
|
|
26
|
+
common_1.isPortrait)(spec), ladder = (0, common_1.isLadder)(spec), ladderHorizontalPadding = (() => {
|
|
27
|
+
var _a, _b, _c, _d, _e, _f;
|
|
28
|
+
if (!ladder) return 0;
|
|
29
|
+
const blockWidth = null !== (_b = null === (_a = spec.block) || void 0 === _a ? void 0 : _a.minWidth) && void 0 !== _b ? _b : (0,
|
|
30
|
+
common_1.resolveBlockWidth)(spec, 0), imageWidth = null !== (_d = null === (_c = spec.image) || void 0 === _c ? void 0 : _c.width) && void 0 !== _d ? _d : 96, imageGap = null !== (_f = null === (_e = spec.image) || void 0 === _e ? void 0 : _e.gap) && void 0 !== _f ? _f : common_1.DEFAULT_IMAGE_GAP, contentWidth = Math.max(blockWidth - imageWidth - imageGap - 24, .5 * common_1.DEFAULT_BLOCK_WIDTH);
|
|
31
|
+
return Math.round(2 * contentWidth);
|
|
32
|
+
})(), ladderVerticalPadding = (() => {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
if (!ladder) return 0;
|
|
35
|
+
const blockHeight = null !== (_b = null === (_a = spec.block) || void 0 === _a ? void 0 : _a.height) && void 0 !== _b ? _b : 132;
|
|
36
|
+
return Math.round(3 * blockHeight);
|
|
37
|
+
})(), defaultTop = ladder ? ladderVerticalPadding : arcDown ? 100 : arcUp ? 280 : 20, defaultBottom = ladder ? ladderVerticalPadding : arcDown ? 280 : portrait ? 160 : 100, defaultLeft = ladder ? ladderHorizontalPadding : 20, defaultRight = ladder ? ladderHorizontalPadding : 20, p = spec.padding;
|
|
26
38
|
if (null != p) if ("number" != typeof p) if (Array.isArray(p)) {
|
|
27
|
-
const [t
|
|
28
|
-
spec.padding = [ t, r, null != b ? b :
|
|
39
|
+
const [t, r = defaultRight, b, l = defaultLeft] = p;
|
|
40
|
+
spec.padding = [ null != t ? t : defaultTop, r, null != b ? b : defaultBottom, l ];
|
|
29
41
|
} else "object" == typeof p && (spec.padding = {
|
|
30
|
-
top: null !== (_a = p.top) && void 0 !== _a ? _a :
|
|
31
|
-
right: null !== (_b = p.right) && void 0 !== _b ? _b :
|
|
32
|
-
bottom: null !== (_c = p.bottom) && void 0 !== _c ? _c :
|
|
33
|
-
left: null !== (_d = p.left) && void 0 !== _d ? _d :
|
|
34
|
-
}); else spec.padding = [ p, p, Math.max(p,
|
|
42
|
+
top: null !== (_a = p.top) && void 0 !== _a ? _a : defaultTop,
|
|
43
|
+
right: null !== (_b = p.right) && void 0 !== _b ? _b : defaultRight,
|
|
44
|
+
bottom: null !== (_c = p.bottom) && void 0 !== _c ? _c : defaultBottom,
|
|
45
|
+
left: null !== (_d = p.left) && void 0 !== _d ? _d : defaultLeft
|
|
46
|
+
}); else spec.padding = [ Math.max(p, defaultTop), Math.max(p, defaultRight), Math.max(p, defaultBottom), Math.max(p, defaultLeft) ]; else spec.padding = [ defaultTop, defaultRight, defaultBottom, defaultLeft ];
|
|
35
47
|
}, buildStorylineMarks = spec => {
|
|
36
48
|
var _a;
|
|
37
49
|
const lineMark = buildLineMark(spec), blockMarks = (null !== (_a = spec.data) && void 0 !== _a ? _a : []).map(((block, index) => buildBlockMark(spec, block, index)));
|
|
38
50
|
if ((0, common_1.isLandscape)(spec)) return [ ...blockMarks, lineMark ].filter(Boolean);
|
|
39
51
|
if ((0, common_1.isPortrait)(spec)) return [ lineMark, ...blockMarks ].filter(Boolean);
|
|
40
|
-
if ((0, common_1.
|
|
41
|
-
return [ (0,
|
|
42
|
-
}
|
|
43
|
-
if ((0, common_1.isBowl)(spec)) {
|
|
44
|
-
return [ (0, bowl_1.buildBowlCenterImageMark)(spec), (0, bowl_1.buildBowlArcMark)(spec), ...blockMarks ].filter(Boolean);
|
|
52
|
+
if ((0, common_1.isArc)(spec)) {
|
|
53
|
+
return [ (0, arc_1.buildArcCenterImageMark)(spec), (0, arc_1.buildArcMark)(spec), ...blockMarks ].filter(Boolean);
|
|
45
54
|
}
|
|
46
55
|
if ((0, common_1.isClock)(spec)) {
|
|
47
56
|
const ringsMark = (0, clock_1.buildClockArcMark)(spec), centerImageMark = (0, clock_1.buildClockCenterImageMark)(spec);
|
|
48
57
|
return [ ringsMark, ...blockMarks, centerImageMark ].filter(Boolean);
|
|
49
58
|
}
|
|
59
|
+
if ((0, common_1.isWing)(spec)) {
|
|
60
|
+
return [ (0, wing_1.buildWingArcMark)(spec), ...blockMarks ].filter(Boolean);
|
|
61
|
+
}
|
|
62
|
+
if ((0, common_1.isLadder)(spec)) {
|
|
63
|
+
return [ (0, ladder_1.buildLadderDiagonalMark)(spec), (0, ladder_1.buildLadderHeadlineMark)(spec), ...blockMarks ].filter(Boolean);
|
|
64
|
+
}
|
|
50
65
|
return [ lineMark, ...blockMarks ].filter(Boolean);
|
|
51
66
|
}, buildLineMark = spec => {
|
|
52
67
|
var _a, _b, _c;
|
|
@@ -55,8 +70,9 @@ const applyDefaultPadding = spec => {
|
|
|
55
70
|
common_1.isPortrait)(spec) ? (0, portrait_1.buildPortraitAxisMark)(spec) : (0, default_1.buildDefaultLineMark)(spec);
|
|
56
71
|
}, buildBlockMark = (spec, block, index) => (0, common_1.isLandscape)(spec) ? (0,
|
|
57
72
|
landscape_1.buildLandscapeBlockMark)(spec, block, index) : (0, common_1.isPortrait)(spec) ? (0,
|
|
58
|
-
portrait_1.buildPortraitBlockMark)(spec, block, index) : (0, common_1.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
73
|
+
portrait_1.buildPortraitBlockMark)(spec, block, index) : (0, common_1.isArc)(spec) ? (0,
|
|
74
|
+
arc_1.buildArcBlockMark)(spec, block, index) : (0, common_1.isClock)(spec) ? (0,
|
|
75
|
+
clock_1.buildClockBlockMark)(spec, block, index) : (0, common_1.isWing)(spec) ? (0,
|
|
76
|
+
wing_1.buildWingBlockMark)(spec, block, index) : (0, common_1.isLadder)(spec) ? (0,
|
|
77
|
+
ladder_1.buildLadderBlockMark)(spec, block, index) : (0, default_1.buildDefaultBlockMark)(spec, block, index);
|
|
62
78
|
//# sourceMappingURL=storyline-transformer.js.map
|
|
@@ -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 { isBowl, isClock, isDome, isLandscape, isPortrait } 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';\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:所有 storyline 布局底部默认留 100px,\n * 给 dome 的 centerImage / 其它布局的引导线留出呼吸空间。\n * 用户在 spec.padding 中显式指定的值会被保留,仅在缺省时生效。\n */\nconst applyDefaultPadding = (spec: any) => {\n const DEFAULT_BOTTOM = 100;\n const DEFAULT_OTHER = 20;\n const p = spec.padding;\n if (p === undefined || p === null) {\n spec.padding = [DEFAULT_OTHER, DEFAULT_OTHER, DEFAULT_BOTTOM, DEFAULT_OTHER];\n return;\n }\n if (typeof p === 'number') {\n spec.padding = [p, p, Math.max(p, DEFAULT_BOTTOM), p];\n return;\n }\n if (Array.isArray(p)) {\n const [t = DEFAULT_OTHER, r = DEFAULT_OTHER, b, l = DEFAULT_OTHER] = p;\n spec.padding = [t, r, b ?? DEFAULT_BOTTOM, l];\n return;\n }\n if (typeof p === 'object') {\n spec.padding = {\n top: p.top ?? DEFAULT_OTHER,\n right: p.right ?? DEFAULT_OTHER,\n bottom: p.bottom ?? DEFAULT_BOTTOM,\n left: p.left ?? DEFAULT_OTHER\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 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\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 isLadder,\n isLandscape,\n isPortrait,\n isWing,\n normalizeLayout,\n resolveBlockWidth,\n DEFAULT_BLOCK_WIDTH,\n DEFAULT_IMAGE_GAP\n} 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 { buildArcBlockMark, buildArcCenterImageMark, buildArcMark } from './layouts/arc';\nimport { buildWingArcMark, buildWingBlockMark } 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 穹顶):centerImage 贴底 + textBox 在弧线上方,所以默认底部留 100px、顶部留 280px 给 textBox + 弧线呼吸空间;\n * - arc down(bowl 碗形):centerImage 贴顶 + textBox 在弧线下方,所以默认顶部留 100px、底部留 280px 给 textBox + 弧线呼吸空间;\n * - portrait:textBox 在 image 下方,最后一个 block 的 content 容易溢出,底部留 160px;\n * - ladder:四周默认留出 content 文本宽度,避免 block 沿对角线\"挤\"到画布边缘;\n * 用户在 spec.padding 中显式指定的值会被保留,仅在缺省时生效。\n */\nconst applyDefaultPadding = (spec: any) => {\n const LARGE = 100;\n const SMALL = 20;\n // 给 textBox(240px)+ 一定呼吸空间,避免内容超出画布\n const TEXT_RESERVE = 280;\n // portrait 最后一个 block 下方的 textBox 大约 60-80px,加 image 半高、间距,预留 160px\n const PORTRAIT_BOTTOM_RESERVE = 160;\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 // ladder:\n // - 左右 padding ≈ block content 宽度 × 2(保证两端 block 沿对角线水平有呼吸)\n // - 上下 padding ≈ block 高度 × 3(保证两端 block 沿对角线垂直留出充足画布留白)\n // 由于 transformSpec 阶段还无法获取真实 viewWidth,这里直接用 spec 中的估值\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 return Math.round(contentWidth * 2);\n })();\n const ladderVerticalPadding = (() => {\n if (!ladder) {\n return 0;\n }\n const blockHeight = (spec as IStorylineSpec).block?.height ?? 132;\n return Math.round(blockHeight * 3);\n })();\n // arc up(dome): 底部贴 centerImage(LARGE),顶部留给 textBox(TEXT_RESERVE)\n // arc down(bowl): 顶部贴 centerImage(LARGE),底部留给 textBox(TEXT_RESERVE)\n // portrait: 底部留给最后一个 block 的 textBox(PORTRAIT_BOTTOM_RESERVE)\n // ladder: 四周均为 content 宽度\n // 其它:保持原默认 [SMALL, SMALL, LARGE, SMALL]\n const defaultTop = ladder ? ladderVerticalPadding : arcDown ? LARGE : arcUp ? TEXT_RESERVE : SMALL;\n const defaultBottom = ladder\n ? ladderVerticalPadding\n : arcDown\n ? TEXT_RESERVE\n : portrait\n ? PORTRAIT_BOTTOM_RESERVE\n : LARGE;\n const defaultLeft = ladder ? ladderHorizontalPadding : SMALL;\n const defaultRight = ladder ? ladderHorizontalPadding : SMALL;\n const p = spec.padding;\n if (p === undefined || p === null) {\n spec.padding = [defaultTop, defaultRight, defaultBottom, defaultLeft];\n return;\n }\n if (typeof p === 'number') {\n spec.padding = [\n Math.max(p, defaultTop),\n Math.max(p, defaultRight),\n Math.max(p, defaultBottom),\n Math.max(p, defaultLeft)\n ];\n return;\n }\n if (Array.isArray(p)) {\n const [t, r = defaultRight, b, l = defaultLeft] = 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 ?? 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 // 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 // arc:先绘制 centerImage(最底层视觉锚点),再绘制贯穿 block 的弧线,最后绘制 block;\n // arc 不绘制 block 之间默认的连接线。direction = 'up' 时 centerImage 贴底(穹顶),\n // direction = 'down' 时 centerImage 贴顶(碗形)\n if (isArc(spec)) {\n const centerImageMark = buildArcCenterImageMark(spec);\n const arcMark = buildArcMark(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 // 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 [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"]}
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -15,4 +15,5 @@ import { registerCartesianTimeAxis3d } from "./time-axis";
|
|
|
15
15
|
export const registerAxis3dPlugin = () => {
|
|
16
16
|
register3DPlugin(), registerLayout3d(), registerCartesianBandAxis3d(), registerCartesianLinearAxis3d(),
|
|
17
17
|
registerCartesianTimeAxis3d(), registerCartesianSymlogAxis3d(), registerCartesianLogAxis3d();
|
|
18
|
-
};
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -12,5 +12,4 @@ export const registerCartesianLinearAxis3d = () => {
|
|
|
12
12
|
AxisCls.builtInTheme = Object.assign(Object.assign({}, AxisCls.builtInTheme), {
|
|
13
13
|
axisZ: Object.assign(Object.assign({}, CartesianLinearAxis.builtInTheme.axisX), axisZ)
|
|
14
14
|
}), mixin(AxisCls, Axis3dMixin);
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=linear-axis.js.map
|
|
15
|
+
};
|
|
@@ -22,4 +22,4 @@ Bar3dChart.type = "bar3d", Bar3dChart.seriesType = SeriesType3dEnum.bar3d, Bar3d
|
|
|
22
22
|
export const registerBar3dChart = () => {
|
|
23
23
|
register3DPlugin(), registerLayout3d(), registerBar3dSeries(), Factory.registerChart(Bar3dChart.type, Bar3dChart);
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=chart.js.map
|
|
25
|
+
//# sourceMappingURL=chart.js.map
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export { };
|
|
2
|
-
//# sourceMappingURL=interface.js.map
|
|
1
|
+
export { };
|
|
@@ -27,4 +27,4 @@ export const registerBar3dSeries = () => {
|
|
|
27
27
|
registerBar3dAnimation(), registerRect3dMark(), registerCartesianBandAxis(), registerCartesianLinearAxis(),
|
|
28
28
|
Factory.registerSeries(Bar3dSeries.type, Bar3dSeries);
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=series.js.map
|
|
30
|
+
//# sourceMappingURL=series.js.map
|
|
@@ -20,4 +20,4 @@ export const registerCandlestickChart = () => {
|
|
|
20
20
|
registerDimensionTooltipProcessor(), registerMarkTooltipProcessor(), registerDimensionEvents(),
|
|
21
21
|
registerDimensionHover(), registerCandlestickSeries(), Factory.registerChart(CandlestickChart.type, CandlestickChart);
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=candlestick.js.map
|
|
23
|
+
//# sourceMappingURL=candlestick.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { };
|
|
2
|
-
//# sourceMappingURL=interface.js.map
|
|
2
|
+
//# sourceMappingURL=interface.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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { };
|
|
2
|
-
//# sourceMappingURL=interface.js.map
|
|
2
|
+
//# sourceMappingURL=interface.js.map
|