@visactor/vchart-extension 2.1.0-alpha.20 → 2.1.0-alpha.22
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 +455 -419
- package/build/index.min.js +2 -2
- package/cjs/charts/storyline/interface.d.ts +2 -2
- package/cjs/charts/storyline/interface.js.map +1 -1
- package/cjs/charts/storyline/layouts/arc.d.ts +1 -1
- package/cjs/charts/storyline/layouts/arc.js +39 -102
- package/cjs/charts/storyline/layouts/arc.js.map +1 -1
- package/cjs/charts/storyline/layouts/clock.d.ts +1 -1
- package/cjs/charts/storyline/layouts/clock.js +40 -24
- package/cjs/charts/storyline/layouts/clock.js.map +1 -1
- package/cjs/charts/storyline/layouts/common.d.ts +54 -1
- package/cjs/charts/storyline/layouts/common.js +188 -23
- package/cjs/charts/storyline/layouts/common.js.map +1 -1
- package/cjs/charts/storyline/layouts/default.js +29 -14
- package/cjs/charts/storyline/layouts/default.js.map +1 -1
- package/cjs/charts/storyline/layouts/ladder.js +29 -13
- package/cjs/charts/storyline/layouts/ladder.js.map +1 -1
- package/cjs/charts/storyline/layouts/landscape.js +22 -23
- package/cjs/charts/storyline/layouts/landscape.js.map +1 -1
- package/cjs/charts/storyline/layouts/portrait.d.ts +1 -1
- package/cjs/charts/storyline/layouts/portrait.js +64 -56
- package/cjs/charts/storyline/layouts/portrait.js.map +1 -1
- package/cjs/charts/storyline/layouts/wing.d.ts +1 -0
- package/cjs/charts/storyline/layouts/wing.js +97 -55
- package/cjs/charts/storyline/layouts/wing.js.map +1 -1
- package/cjs/charts/storyline/storyline-transformer.js +18 -14
- package/cjs/charts/storyline/storyline-transformer.js.map +1 -1
- package/esm/charts/storyline/interface.d.ts +2 -2
- package/esm/charts/storyline/interface.js.map +1 -1
- package/esm/charts/storyline/layouts/arc.d.ts +1 -1
- package/esm/charts/storyline/layouts/arc.js +35 -100
- package/esm/charts/storyline/layouts/arc.js.map +1 -1
- package/esm/charts/storyline/layouts/clock.d.ts +1 -1
- package/esm/charts/storyline/layouts/clock.js +37 -23
- package/esm/charts/storyline/layouts/clock.js.map +1 -1
- package/esm/charts/storyline/layouts/common.d.ts +54 -1
- package/esm/charts/storyline/layouts/common.js +170 -20
- package/esm/charts/storyline/layouts/common.js.map +1 -1
- package/esm/charts/storyline/layouts/default.js +26 -13
- package/esm/charts/storyline/layouts/default.js.map +1 -1
- package/esm/charts/storyline/layouts/ladder.js +25 -12
- package/esm/charts/storyline/layouts/ladder.js.map +1 -1
- package/esm/charts/storyline/layouts/landscape.js +20 -23
- package/esm/charts/storyline/layouts/landscape.js.map +1 -1
- package/esm/charts/storyline/layouts/portrait.d.ts +1 -1
- package/esm/charts/storyline/layouts/portrait.js +61 -58
- package/esm/charts/storyline/layouts/portrait.js.map +1 -1
- package/esm/charts/storyline/layouts/wing.d.ts +1 -0
- package/esm/charts/storyline/layouts/wing.js +92 -55
- package/esm/charts/storyline/layouts/wing.js.map +1 -1
- package/esm/charts/storyline/storyline-transformer.js +20 -18
- package/esm/charts/storyline/storyline-transformer.js.map +1 -1
- package/package.json +4 -4
|
@@ -12,9 +12,9 @@ var __rest = this && this.__rest || function(s, e) {
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, "__esModule", {
|
|
14
14
|
value: !0
|
|
15
|
-
}), exports.normalizePadding = exports.normalizeLayout = exports.buildSmoothCurvePath = exports.getTextBox = exports.getImageBox = exports.omitImageLayoutSpec = exports.buildRichContent = exports.getLayout = exports.getRegionGeometry = exports.resolveBlockWidth = exports.withAlpha = exports.getThemeColor = exports.isLadder = exports.isWing = exports.isArc = exports.isClock = exports.isPortrait = exports.isLandscape = exports.DEFAULT_THEME_COLOR = exports.DEFAULT_IMAGE_GAP = exports.DEFAULT_IMAGE_HEIGHT = exports.DEFAULT_IMAGE_WIDTH = exports.DEFAULT_BLOCK_GAP = exports.DEFAULT_BLOCK_WIDTH_RATIO = exports.DEFAULT_BLOCK_HEIGHT = exports.DEFAULT_BLOCK_WIDTH = void 0;
|
|
15
|
+
}), exports.normalizePadding = exports.normalizeLayout = exports.buildSmoothCurvePath = exports.getTextBox = exports.getImageBox = exports.omitImageLayoutSpec = exports.buildRichContent = exports.getLayout = exports.getRegionGeometry = exports.resolveBlockWidth = exports.withAlpha = exports.buildTopTitleImageMark = exports.getChartGeometry = exports.getTitleImageReservedHeight = exports.getTitleImageSize = exports.getImageBackgroundStyle = exports.resolveMarkerFontSize = exports.resolveTitleFontSize = exports.resolveAdaptiveLineHeight = exports.shouldShowImageBackground = exports.getThemeColor = exports.isLadder = exports.isWing = exports.isArc = exports.isClock = exports.isPortrait = exports.isLandscape = exports.DEFAULT_THEME_COLOR = exports.DEFAULT_IMAGE_GAP = exports.DEFAULT_IMAGE_HEIGHT = exports.DEFAULT_IMAGE_WIDTH = exports.DEFAULT_BLOCK_GAP = exports.DEFAULT_BLOCK_WIDTH_RATIO = exports.DEFAULT_BLOCK_HEIGHT = exports.DEFAULT_BLOCK_WIDTH = void 0;
|
|
16
16
|
|
|
17
|
-
const layout_1 = require("../layout");
|
|
17
|
+
const vchart_1 = require("@visactor/vchart"), layout_1 = require("../layout");
|
|
18
18
|
|
|
19
19
|
Object.defineProperty(exports, "normalizeLayout", {
|
|
20
20
|
enumerable: !0,
|
|
@@ -30,7 +30,8 @@ Object.defineProperty(exports, "normalizeLayout", {
|
|
|
30
30
|
exports.DEFAULT_BLOCK_GAP = 36, exports.DEFAULT_IMAGE_WIDTH = 48, exports.DEFAULT_IMAGE_HEIGHT = 48,
|
|
31
31
|
exports.DEFAULT_IMAGE_GAP = 10, exports.DEFAULT_THEME_COLOR = "#e8543d";
|
|
32
32
|
|
|
33
|
-
const isLandscape = spec => "landscape" === (0,
|
|
33
|
+
const DEFAULT_TITLE_IMAGE_WIDTH_RATIO = .52, DEFAULT_TITLE_IMAGE_MAX_WIDTH = 720, DEFAULT_TITLE_IMAGE_HEIGHT_RATIO = .36, DEFAULT_TITLE_IMAGE_TOP = 12, DEFAULT_TITLE_IMAGE_BOTTOM = 24, isLandscape = spec => "landscape" === (0,
|
|
34
|
+
layout_1.normalizeLayout)(spec.layout).type;
|
|
34
35
|
|
|
35
36
|
exports.isLandscape = isLandscape;
|
|
36
37
|
|
|
@@ -61,6 +62,169 @@ const getThemeColor = spec => {
|
|
|
61
62
|
|
|
62
63
|
exports.getThemeColor = getThemeColor;
|
|
63
64
|
|
|
65
|
+
const shouldShowImageBackground = spec => {
|
|
66
|
+
var _a, _b;
|
|
67
|
+
return null !== (_b = null === (_a = spec.image) || void 0 === _a ? void 0 : _a.showBackground) && void 0 !== _b ? _b : !((0,
|
|
68
|
+
exports.isPortrait)(spec) || (0, exports.isLandscape)(spec));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
exports.shouldShowImageBackground = shouldShowImageBackground;
|
|
72
|
+
|
|
73
|
+
const TITLE_FONT_SCALE_ID = "storylineTitleFontSize", MARKER_FONT_SCALE_ID = "storylineMarkerFontSize", clamp = (value, min, max) => Math.max(min, Math.min(max, value)), getTextWeight = text => text ? Math.max(Array.from(text).reduce(((sum, char) => 0 === char.trim().length ? sum + .32 : sum + (char.charCodeAt(0) > 255 ? 1.05 : .62)), 0), 1) : 4, getScaleRange = (spec, scaleId, fallback) => {
|
|
74
|
+
var _a;
|
|
75
|
+
const scales = spec.scales, range = null === (_a = null == scales ? void 0 : scales.find((scale => scale.id === scaleId || scale.type === scaleId))) || void 0 === _a ? void 0 : _a.range;
|
|
76
|
+
return Array.isArray(range) && range.length >= 2 && "number" == typeof range[0] && "number" == typeof range[1] ? [ Math.min(range[0], range[1]), Math.max(range[0], range[1]) ] : fallback;
|
|
77
|
+
}, getSpecGeometry = (spec, ctx) => {
|
|
78
|
+
var _a, _b;
|
|
79
|
+
return ctx ? (0, exports.getRegionGeometry)(ctx, spec) : {
|
|
80
|
+
width: Math.max(Number(null !== (_a = spec.width) && void 0 !== _a ? _a : 0), 1),
|
|
81
|
+
height: Math.max(Number(null !== (_b = spec.height) && void 0 !== _b ? _b : 0), 1),
|
|
82
|
+
startX: 0,
|
|
83
|
+
startY: 0
|
|
84
|
+
};
|
|
85
|
+
}, resolveAdaptiveFontSize = (spec, ctx, text, options) => {
|
|
86
|
+
var _a;
|
|
87
|
+
const configuredFontSize = null === (_a = options.style) || void 0 === _a ? void 0 : _a.fontSize;
|
|
88
|
+
if (null != configuredFontSize) return Number(configuredFontSize);
|
|
89
|
+
const [minFontSize, maxFontSize] = getScaleRange(spec, options.scaleId, options.range), {width: width, height: height} = getSpecGeometry(spec, ctx), textWeight = getTextWeight(text), canvasSize = Math.sqrt(width * height) * options.canvasRatio, lengthFactor = Math.sqrt(8 / Math.max(textWeight, 4)), adaptiveSize = width <= 1 && height <= 1 ? options.fallback : canvasSize * lengthFactor, boxWidthLimit = options.boxWidth && options.boxWidth > 0 ? options.boxWidth / textWeight * .96 : Number.POSITIVE_INFINITY, boxHeightLimit = options.boxHeight && options.boxHeight > 0 ? options.boxHeight / Math.max(textWeight, 1) : Number.POSITIVE_INFINITY;
|
|
90
|
+
return Math.floor((value = Math.min(adaptiveSize, boxWidthLimit, boxHeightLimit),
|
|
91
|
+
min = minFontSize, max = maxFontSize, Math.max(min, Math.min(max, value))));
|
|
92
|
+
var value, min, max;
|
|
93
|
+
}, resolveAdaptiveLineHeight = (fontSize, style, fallback, ratio = 1.35) => {
|
|
94
|
+
var _a;
|
|
95
|
+
return Number(null !== (_a = null == style ? void 0 : style.lineHeight) && void 0 !== _a ? _a : Math.round((Number.isFinite(fontSize) ? fontSize : fallback) * ratio));
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
exports.resolveAdaptiveLineHeight = resolveAdaptiveLineHeight;
|
|
99
|
+
|
|
100
|
+
const resolveTitleFontSize = (spec, ctx, title, boxWidth, fallback, range = [ 16, 34 ]) => {
|
|
101
|
+
var _a;
|
|
102
|
+
return resolveAdaptiveFontSize(spec, ctx, title, {
|
|
103
|
+
style: null === (_a = spec.title) || void 0 === _a ? void 0 : _a.style,
|
|
104
|
+
scaleId: TITLE_FONT_SCALE_ID,
|
|
105
|
+
fallback: fallback,
|
|
106
|
+
range: range,
|
|
107
|
+
canvasRatio: .038,
|
|
108
|
+
boxWidth: boxWidth
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
exports.resolveTitleFontSize = resolveTitleFontSize;
|
|
113
|
+
|
|
114
|
+
const resolveMarkerFontSize = (spec, ctx, marker, boxHeight, fallback, range = [ 18, 46 ]) => {
|
|
115
|
+
var _a;
|
|
116
|
+
return resolveAdaptiveFontSize(spec, ctx, marker, {
|
|
117
|
+
style: null === (_a = spec.marker) || void 0 === _a ? void 0 : _a.style,
|
|
118
|
+
scaleId: MARKER_FONT_SCALE_ID,
|
|
119
|
+
fallback: fallback,
|
|
120
|
+
range: range,
|
|
121
|
+
canvasRatio: .052,
|
|
122
|
+
boxHeight: boxHeight
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
exports.resolveMarkerFontSize = resolveMarkerFontSize;
|
|
127
|
+
|
|
128
|
+
const getImageBackgroundStyle = spec => {
|
|
129
|
+
const themeColor = (0, exports.getThemeColor)(spec);
|
|
130
|
+
return {
|
|
131
|
+
fill: {
|
|
132
|
+
gradient: "linear",
|
|
133
|
+
x0: 0,
|
|
134
|
+
y0: 0,
|
|
135
|
+
x1: 1,
|
|
136
|
+
y1: 1,
|
|
137
|
+
stops: [ {
|
|
138
|
+
offset: 0,
|
|
139
|
+
color: "#ffffff"
|
|
140
|
+
}, {
|
|
141
|
+
offset: .58,
|
|
142
|
+
color: (0, exports.withAlpha)(themeColor, .12)
|
|
143
|
+
}, {
|
|
144
|
+
offset: 1,
|
|
145
|
+
color: (0, exports.withAlpha)(themeColor, .32)
|
|
146
|
+
} ]
|
|
147
|
+
},
|
|
148
|
+
stroke: (0, exports.withAlpha)(themeColor, .78),
|
|
149
|
+
lineWidth: 2,
|
|
150
|
+
shadowColor: (0, exports.withAlpha)(themeColor, .18),
|
|
151
|
+
shadowBlur: 10,
|
|
152
|
+
shadowOffsetX: 0,
|
|
153
|
+
shadowOffsetY: 4
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
exports.getImageBackgroundStyle = getImageBackgroundStyle;
|
|
158
|
+
|
|
159
|
+
const getTitleImageSize = (spec, width, height, options) => {
|
|
160
|
+
var _a, _b, _c, _e, _f, _g, _h;
|
|
161
|
+
const defaultWidth = Math.min(Math.max(width * (null !== (_a = null == options ? void 0 : options.widthRatio) && void 0 !== _a ? _a : .52), 1), null !== (_b = null == options ? void 0 : options.maxWidth) && void 0 !== _b ? _b : 720), imageWidth = Math.max(Number(null !== (_e = null === (_c = spec.titleImage) || void 0 === _c ? void 0 : _c.width) && void 0 !== _e ? _e : defaultWidth), 1);
|
|
162
|
+
return {
|
|
163
|
+
width: imageWidth,
|
|
164
|
+
height: Math.max(Number(null !== (_g = null === (_f = spec.titleImage) || void 0 === _f ? void 0 : _f.height) && void 0 !== _g ? _g : Math.min(height, imageWidth * (null !== (_h = null == options ? void 0 : options.heightRatio) && void 0 !== _h ? _h : .36))), 1)
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
exports.getTitleImageSize = getTitleImageSize;
|
|
169
|
+
|
|
170
|
+
const getTitleImageReservedHeight = (spec, width, height, options) => {
|
|
171
|
+
var _a, _b, _c;
|
|
172
|
+
if (!(null === (_a = spec.titleImage) || void 0 === _a ? void 0 : _a.image) || !1 === spec.titleImage.visible) return 0;
|
|
173
|
+
const size = (0, exports.getTitleImageSize)(spec, width, height, options);
|
|
174
|
+
return Math.ceil((null !== (_b = null == options ? void 0 : options.y) && void 0 !== _b ? _b : 12) + size.height + (null !== (_c = null == options ? void 0 : options.bottom) && void 0 !== _c ? _c : 24));
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
exports.getTitleImageReservedHeight = getTitleImageReservedHeight;
|
|
178
|
+
|
|
179
|
+
const getChartGeometry = (ctx, spec) => {
|
|
180
|
+
var _a, _b, _c, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
181
|
+
const chartRect = null === (_b = null === (_a = ctx.chart) || void 0 === _a ? void 0 : _a.getLayoutRect) || void 0 === _b ? void 0 : _b.call(_a), bounds = null === (_c = ctx.getLayoutBounds) || void 0 === _c ? void 0 : _c.call(ctx);
|
|
182
|
+
return {
|
|
183
|
+
width: Math.max(null !== (_h = null !== (_g = null !== (_e = null == chartRect ? void 0 : chartRect.width) && void 0 !== _e ? _e : null === (_f = null == bounds ? void 0 : bounds.width) || void 0 === _f ? void 0 : _f.call(bounds)) && void 0 !== _g ? _g : null == spec ? void 0 : spec.width) && void 0 !== _h ? _h : 0, 1),
|
|
184
|
+
height: Math.max(null !== (_m = null !== (_l = null !== (_j = null == chartRect ? void 0 : chartRect.height) && void 0 !== _j ? _j : null === (_k = null == bounds ? void 0 : bounds.height) || void 0 === _k ? void 0 : _k.call(bounds)) && void 0 !== _l ? _l : null == spec ? void 0 : spec.height) && void 0 !== _m ? _m : 0, 1),
|
|
185
|
+
startX: 0,
|
|
186
|
+
startY: 0
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
exports.getChartGeometry = getChartGeometry;
|
|
191
|
+
|
|
192
|
+
const buildTopTitleImageMark = (spec, options) => {
|
|
193
|
+
var _a;
|
|
194
|
+
return (null === (_a = spec.titleImage) || void 0 === _a ? void 0 : _a.image) && !1 !== spec.titleImage.visible ? Object.assign(Object.assign({
|
|
195
|
+
type: "image",
|
|
196
|
+
name: "storyline-title-image",
|
|
197
|
+
interactive: !1,
|
|
198
|
+
zIndex: vchart_1.LayoutZIndex.Mark + 8
|
|
199
|
+
}, spec.titleImage), {
|
|
200
|
+
style: Object.assign({
|
|
201
|
+
x: (_d, ctx) => {
|
|
202
|
+
const {width: width, height: height, startX: startX} = (0, exports.getChartGeometry)(ctx, spec);
|
|
203
|
+
return startX + (width - (0, exports.getTitleImageSize)(spec, width, height, options).width) / 2;
|
|
204
|
+
},
|
|
205
|
+
y: (_d, ctx) => {
|
|
206
|
+
var _a;
|
|
207
|
+
return (0, exports.getChartGeometry)(ctx, spec).startY + (null !== (_a = null == options ? void 0 : options.y) && void 0 !== _a ? _a : 12);
|
|
208
|
+
},
|
|
209
|
+
width: (_d, ctx) => {
|
|
210
|
+
const {width: width, height: height} = (0, exports.getChartGeometry)(ctx, spec);
|
|
211
|
+
return (0, exports.getTitleImageSize)(spec, width, height, options).width;
|
|
212
|
+
},
|
|
213
|
+
height: (_d, ctx) => {
|
|
214
|
+
const {width: width, height: height} = (0, exports.getChartGeometry)(ctx, spec);
|
|
215
|
+
return (0, exports.getTitleImageSize)(spec, width, height, options).height;
|
|
216
|
+
},
|
|
217
|
+
image: spec.titleImage.image,
|
|
218
|
+
repeatX: "no-repeat",
|
|
219
|
+
repeatY: "no-repeat",
|
|
220
|
+
imageMode: "contain",
|
|
221
|
+
imagePosition: "center"
|
|
222
|
+
}, spec.titleImage.style)
|
|
223
|
+
}) : null;
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
exports.buildTopTitleImageMark = buildTopTitleImageMark;
|
|
227
|
+
|
|
64
228
|
const withAlpha = (color, alpha) => {
|
|
65
229
|
const safeAlpha = Math.max(0, Math.min(1, alpha));
|
|
66
230
|
if (!color) return `rgba(0, 0, 0, ${safeAlpha})`;
|
|
@@ -79,47 +243,48 @@ const withAlpha = (color, alpha) => {
|
|
|
79
243
|
exports.withAlpha = withAlpha;
|
|
80
244
|
|
|
81
245
|
const resolveBlockWidth = (spec, viewWidth) => {
|
|
82
|
-
var _a, _b, _c,
|
|
246
|
+
var _a, _b, _c, _e, _f, _g, _h;
|
|
83
247
|
if (null === (_a = spec.block) || void 0 === _a ? void 0 : _a.width) return spec.block.width;
|
|
84
|
-
const ratio = null !== (_c = null === (_b = spec.block) || void 0 === _b ? void 0 : _b.widthRatio) && void 0 !== _c ? _c : exports.DEFAULT_BLOCK_WIDTH_RATIO, minWidth = null !== (
|
|
248
|
+
const ratio = null !== (_c = null === (_b = spec.block) || void 0 === _b ? void 0 : _b.widthRatio) && void 0 !== _c ? _c : exports.DEFAULT_BLOCK_WIDTH_RATIO, minWidth = null !== (_f = null === (_e = spec.block) || void 0 === _e ? void 0 : _e.minWidth) && void 0 !== _f ? _f : exports.DEFAULT_BLOCK_WIDTH, maxWidth = null !== (_h = null === (_g = spec.block) || void 0 === _g ? void 0 : _g.maxWidth) && void 0 !== _h ? _h : Math.max(minWidth, 320);
|
|
85
249
|
return Math.max(minWidth, Math.min(maxWidth, Math.round(viewWidth * ratio)));
|
|
86
250
|
};
|
|
87
251
|
|
|
88
252
|
exports.resolveBlockWidth = resolveBlockWidth;
|
|
89
253
|
|
|
90
254
|
const getRegionGeometry = (ctx, spec) => {
|
|
91
|
-
var _a, _b, _c,
|
|
92
|
-
const region = null === (_c = null === (_b = null === (_a = ctx.chart) || void 0 === _a ? void 0 : _a.getAllRegions) || void 0 === _b ? void 0 : _b.call(_a)) || void 0 === _c ? void 0 : _c[0], regionRect = null === (
|
|
255
|
+
var _a, _b, _c, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
256
|
+
const region = null === (_c = null === (_b = null === (_a = ctx.chart) || void 0 === _a ? void 0 : _a.getAllRegions) || void 0 === _b ? void 0 : _b.call(_a)) || void 0 === _c ? void 0 : _c[0], regionRect = null === (_e = null == region ? void 0 : region.getLayoutRect) || void 0 === _e ? void 0 : _e.call(region), regionStart = null === (_f = null == region ? void 0 : region.getLayoutStartPoint) || void 0 === _f ? void 0 : _f.call(region), chartRect = null === (_h = null === (_g = ctx.chart) || void 0 === _g ? void 0 : _g.getLayoutRect) || void 0 === _h ? void 0 : _h.call(_g), bounds = null === (_j = ctx.getLayoutBounds) || void 0 === _j ? void 0 : _j.call(ctx);
|
|
93
257
|
return {
|
|
94
|
-
width: Math.max(null !== (
|
|
95
|
-
height: Math.max(null !== (
|
|
96
|
-
startX: null !== (
|
|
97
|
-
startY: null !== (
|
|
258
|
+
width: Math.max(null !== (_p = null !== (_o = null !== (_l = null !== (_k = null == regionRect ? void 0 : regionRect.width) && void 0 !== _k ? _k : null == chartRect ? void 0 : chartRect.width) && void 0 !== _l ? _l : null === (_m = null == bounds ? void 0 : bounds.width) || void 0 === _m ? void 0 : _m.call(bounds)) && void 0 !== _o ? _o : null == spec ? void 0 : spec.width) && void 0 !== _p ? _p : 0, 1),
|
|
259
|
+
height: Math.max(null !== (_u = null !== (_t = null !== (_r = null !== (_q = null == regionRect ? void 0 : regionRect.height) && void 0 !== _q ? _q : null == chartRect ? void 0 : chartRect.height) && void 0 !== _r ? _r : null === (_s = null == bounds ? void 0 : bounds.height) || void 0 === _s ? void 0 : _s.call(bounds)) && void 0 !== _t ? _t : null == spec ? void 0 : spec.height) && void 0 !== _u ? _u : 0, 1),
|
|
260
|
+
startX: null !== (_v = null == regionStart ? void 0 : regionStart.x) && void 0 !== _v ? _v : 0,
|
|
261
|
+
startY: null !== (_w = null == regionStart ? void 0 : regionStart.y) && void 0 !== _w ? _w : 0
|
|
98
262
|
};
|
|
99
263
|
};
|
|
100
264
|
|
|
101
265
|
exports.getRegionGeometry = getRegionGeometry;
|
|
102
266
|
|
|
103
267
|
const getLayout = (spec, ctx) => {
|
|
104
|
-
var _a, _b, _c,
|
|
268
|
+
var _a, _b, _c, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
105
269
|
const {width: width, height: height, startX: startX, startY: startY} = (0, exports.getRegionGeometry)(ctx, spec);
|
|
106
270
|
let blockWidth = (0, exports.resolveBlockWidth)(spec, width), blockHeight = null !== (_b = null === (_a = spec.block) || void 0 === _a ? void 0 : _a.height) && void 0 !== _b ? _b : (0,
|
|
107
271
|
exports.isLandscape)(spec) ? 320 : exports.DEFAULT_BLOCK_HEIGHT;
|
|
108
272
|
if ((0, exports.isLandscape)(spec) && !(null === (_c = spec.block) || void 0 === _c ? void 0 : _c.width)) {
|
|
109
|
-
const count = null !== (
|
|
273
|
+
const count = null !== (_f = null === (_e = spec.data) || void 0 === _e ? void 0 : _e.length) && void 0 !== _f ? _f : 0;
|
|
110
274
|
if (count > 0) {
|
|
111
|
-
const padding = (0, layout_1.normalizePadding)(null === (
|
|
275
|
+
const padding = (0, layout_1.normalizePadding)(null === (_g = spec.block) || void 0 === _g ? void 0 : _g.padding), LANDSCAPE_IMAGE_MIN_WIDTH = 80, adaptive = (Math.max(width - padding.left - padding.right, 1) - 40 * Math.max(count - 1, 0)) / count;
|
|
112
276
|
blockWidth = Math.max(LANDSCAPE_IMAGE_MIN_WIDTH, Math.floor(adaptive));
|
|
113
277
|
}
|
|
114
278
|
}
|
|
115
|
-
if ((0, exports.isPortrait)(spec) && !(null === (
|
|
116
|
-
const count = null !== (
|
|
279
|
+
if ((0, exports.isPortrait)(spec) && !(null === (_h = spec.block) || void 0 === _h ? void 0 : _h.height)) {
|
|
280
|
+
const count = null !== (_k = null === (_j = spec.data) || void 0 === _j ? void 0 : _j.length) && void 0 !== _k ? _k : 0;
|
|
117
281
|
if (count > 0) {
|
|
118
|
-
const
|
|
282
|
+
const layoutPadding = "object" == typeof spec.layout ? spec.layout.padding : void 0, padding = (0,
|
|
283
|
+
layout_1.normalizePadding)(null != layoutPadding ? layoutPadding : null === (_l = spec.block) || void 0 === _l ? void 0 : _l.padding), innerHeight = Math.max(height - padding.top - padding.bottom, 1);
|
|
119
284
|
blockHeight = Math.max(120, Math.floor(innerHeight / (count + 1)));
|
|
120
285
|
}
|
|
121
286
|
}
|
|
122
|
-
const result = (0, layout_1.computeStorylineLayout)(null !== (
|
|
287
|
+
const result = (0, layout_1.computeStorylineLayout)(null !== (_m = spec.data) && void 0 !== _m ? _m : [], {
|
|
123
288
|
layout: spec.layout,
|
|
124
289
|
viewBox: {
|
|
125
290
|
width: width,
|
|
@@ -129,9 +294,9 @@ const getLayout = (spec, ctx) => {
|
|
|
129
294
|
width: blockWidth,
|
|
130
295
|
height: blockHeight
|
|
131
296
|
},
|
|
132
|
-
gap: null !== (
|
|
133
|
-
padding: null === (
|
|
134
|
-
lineDistance: null === (
|
|
297
|
+
gap: null !== (_p = null === (_o = spec.block) || void 0 === _o ? void 0 : _o.gap) && void 0 !== _p ? _p : exports.DEFAULT_BLOCK_GAP,
|
|
298
|
+
padding: null === (_q = spec.block) || void 0 === _q ? void 0 : _q.padding,
|
|
299
|
+
lineDistance: null === (_r = spec.line) || void 0 === _r ? void 0 : _r.distance
|
|
135
300
|
});
|
|
136
301
|
return startX || startY ? Object.assign(Object.assign({}, result), {
|
|
137
302
|
blocks: result.blocks.map((block => Object.assign(Object.assign({}, block), {
|
|
@@ -162,8 +327,8 @@ const getLayout = (spec, ctx) => {
|
|
|
162
327
|
exports.getLayout = getLayout;
|
|
163
328
|
|
|
164
329
|
const buildRichContent = (contentText, spec, overrides) => {
|
|
165
|
-
var _a, _b, _c,
|
|
166
|
-
const fontSize = Number(null !== (
|
|
330
|
+
var _a, _b, _c, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
331
|
+
const fontSize = Number(null !== (_e = null !== (_a = null == overrides ? void 0 : overrides.fontSize) && void 0 !== _a ? _a : null === (_c = null === (_b = spec.content) || void 0 === _b ? void 0 : _b.style) || void 0 === _c ? void 0 : _c.fontSize) && void 0 !== _e ? _e : 18), lineHeight = Number(null !== (_j = null !== (_f = null == overrides ? void 0 : overrides.lineHeight) && void 0 !== _f ? _f : null === (_h = null === (_g = spec.content) || void 0 === _g ? void 0 : _g.style) || void 0 === _h ? void 0 : _h.lineHeight) && void 0 !== _j ? _j : 26), fill = null !== (_o = null !== (_k = null == overrides ? void 0 : overrides.fill) && void 0 !== _k ? _k : null === (_m = null === (_l = spec.content) || void 0 === _l ? void 0 : _l.style) || void 0 === _m ? void 0 : _m.fill) && void 0 !== _o ? _o : "#596173", align = null !== (_p = null == overrides ? void 0 : overrides.align) && void 0 !== _p ? _p : "left";
|
|
167
332
|
return {
|
|
168
333
|
type: "rich",
|
|
169
334
|
text: contentText.reduce(((result, paragraph, index) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/charts/storyline/layouts/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["import type { ICustomMarkSpec } from '@visactor/vchart';\nimport type { IStorylineBlock, IStorylineSpec, StorylineImagePosition } from '../interface';\nimport {\n computeStorylineLayout,\n normalizeLayout,\n normalizePadding,\n type StorylineLayoutResult,\n type StorylinePoint\n} from '../layout';\n\n// ===== 布局通用类型 =====\n\nexport type LayoutContext = {\n chart?: {\n getAllRegions?: () => {\n getLayoutRect?: () => { width?: number; height?: number };\n getLayoutStartPoint?: () => { x?: number; y?: number };\n }[];\n getLayoutRect?: () => { width?: number; height?: number };\n };\n getLayoutBounds?: () => { width?: () => number; height?: () => number };\n};\n\n// ===== 通用默认值 =====\n\nexport const DEFAULT_BLOCK_WIDTH = 180;\nexport const DEFAULT_BLOCK_HEIGHT = 400;\nexport const DEFAULT_BLOCK_WIDTH_RATIO = 0.24;\nexport const DEFAULT_BLOCK_GAP = 36;\nexport const DEFAULT_IMAGE_WIDTH = 48;\nexport const DEFAULT_IMAGE_HEIGHT = 48;\nexport const DEFAULT_IMAGE_GAP = 10;\nexport const DEFAULT_THEME_COLOR = '#e8543d';\n\n// ===== 布局判定 =====\n\nexport const isLandscape = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'landscape';\nexport const isPortrait = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'portrait';\nexport const isClock = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'clock';\nexport const isArc = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'arc';\nexport const isWing = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'wing';\nexport const isLadder = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'ladder';\n\nexport const getThemeColor = (spec: IStorylineSpec) => spec.themeColor ?? DEFAULT_THEME_COLOR;\n\n// ===== 颜色工具 =====\n\n/**\n * 给颜色(#hex / rgb / rgba / hsl / 颜色关键字)追加/替换 alpha 通道,返回 rgba(...) 字符串\n */\nexport const withAlpha = (color: string, alpha: number): string => {\n const safeAlpha = Math.max(0, Math.min(1, alpha));\n if (!color) {\n return `rgba(0, 0, 0, ${safeAlpha})`;\n }\n const trimmed = color.trim();\n if (trimmed.startsWith('#')) {\n let hex = trimmed.slice(1);\n if (hex.length === 3 || hex.length === 4) {\n hex = hex\n .split('')\n .map(ch => ch + ch)\n .join('');\n }\n if (hex.length === 6 || hex.length === 8) {\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${safeAlpha})`;\n }\n }\n const rgbMatch = trimmed.match(/^rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)/i);\n if (rgbMatch) {\n return `rgba(${rgbMatch[1]}, ${rgbMatch[2]}, ${rgbMatch[3]}, ${safeAlpha})`;\n }\n return trimmed;\n};\n\n// ===== 块宽度解析 =====\n\nexport const resolveBlockWidth = (spec: IStorylineSpec, viewWidth: number) => {\n if (spec.block?.width) {\n return spec.block.width;\n }\n const ratio = spec.block?.widthRatio ?? DEFAULT_BLOCK_WIDTH_RATIO;\n const minWidth = spec.block?.minWidth ?? DEFAULT_BLOCK_WIDTH;\n const maxWidth = spec.block?.maxWidth ?? Math.max(minWidth, 320);\n return Math.max(minWidth, Math.min(maxWidth, Math.round(viewWidth * ratio)));\n};\n\n// ===== 容器几何信息(chart region rect)=====\n\nexport const getRegionGeometry = (ctx: LayoutContext, spec?: { width?: number; height?: number }) => {\n const region = ctx.chart?.getAllRegions?.()?.[0];\n const regionRect = region?.getLayoutRect?.();\n const regionStart = region?.getLayoutStartPoint?.();\n const chartRect = ctx.chart?.getLayoutRect?.();\n const bounds = ctx.getLayoutBounds?.();\n const width = Math.max(regionRect?.width ?? chartRect?.width ?? bounds?.width?.() ?? spec?.width ?? 0, 1);\n const height = Math.max(regionRect?.height ?? chartRect?.height ?? bounds?.height?.() ?? spec?.height ?? 0, 1);\n return {\n width,\n height,\n startX: regionStart?.x ?? 0,\n startY: regionStart?.y ?? 0\n };\n};\n\n// ===== 布局计算(layout.ts 的封装,附加 startX/startY 平移)=====\n\nexport const getLayout = (spec: IStorylineSpec, ctx: LayoutContext): StorylineLayoutResult => {\n const { width, height, startX, startY } = getRegionGeometry(ctx, spec);\n let blockWidth = resolveBlockWidth(spec, width);\n let blockHeight = spec.block?.height ?? (isLandscape(spec) ? 320 : DEFAULT_BLOCK_HEIGHT);\n // landscape:图片间距固定 40,根据 block 数量自适应单个 image 宽度\n if (isLandscape(spec) && !spec.block?.width) {\n const count = spec.data?.length ?? 0;\n if (count > 0) {\n const padding = normalizePadding(spec.block?.padding);\n const innerWidth = Math.max(width - padding.left - padding.right, 1);\n const LANDSCAPE_IMAGE_GAP = 40;\n const LANDSCAPE_IMAGE_MIN_WIDTH = 80;\n const totalGap = LANDSCAPE_IMAGE_GAP * Math.max(count - 1, 0);\n const adaptive = (innerWidth - totalGap) / count;\n blockWidth = Math.max(LANDSCAPE_IMAGE_MIN_WIDTH, Math.floor(adaptive));\n }\n }\n // portrait:每个 block 在垂直方向需要容纳 image + text,整体根据 region 高度均分\n // blockHeight = regionHeight / (count + 1)(即每个 block 的\"槽位\"高度),后续 portrait.ts 中:\n // imageHeight = blockHeight * 0.6\n // contentHeight = blockHeight\n if (isPortrait(spec) && !spec.block?.height) {\n const count = spec.data?.length ?? 0;\n if (count > 0) {\n const padding = normalizePadding(spec.layout?.padding ?? spec.block?.padding);\n const innerHeight = Math.max(height - padding.top - padding.bottom, 1);\n blockHeight = Math.max(120, Math.floor(innerHeight / (count + 1)));\n }\n }\n const result = computeStorylineLayout(spec.data ?? [], {\n layout: spec.layout,\n viewBox: { width, height },\n block: {\n width: blockWidth,\n height: blockHeight\n },\n gap: spec.block?.gap ?? DEFAULT_BLOCK_GAP,\n padding: spec.block?.padding,\n lineDistance: spec.line?.distance\n });\n if (!startX && !startY) {\n return result;\n }\n return {\n ...result,\n blocks: result.blocks.map(block => ({\n ...block,\n x: block.x + startX,\n y: block.y + startY,\n center: {\n x: block.center.x + startX,\n y: block.center.y + startY\n }\n })),\n links: result.links.map(link => ({\n ...link,\n start: { x: link.start.x + startX, y: link.start.y + startY },\n end: { x: link.end.x + startX, y: link.end.y + startY },\n points: link.points.map(point => ({ x: point.x + startX, y: point.y + startY }))\n }))\n };\n};\n\n// ===== 文本 / 图像通用工具 =====\n\nexport const buildRichContent = (\n contentText: string[],\n spec: IStorylineSpec,\n overrides?: { fontSize?: number; lineHeight?: number; fill?: string; align?: 'left' | 'center' | 'right' }\n) => {\n const fontSize = Number(overrides?.fontSize ?? (spec.content?.style as any)?.fontSize ?? 18);\n const lineHeight = Number(overrides?.lineHeight ?? (spec.content?.style as any)?.lineHeight ?? 26);\n const fill = overrides?.fill ?? (spec.content?.style as any)?.fill ?? '#596173';\n const align = overrides?.align ?? 'left';\n\n return {\n type: 'rich' as const,\n text: contentText.reduce<{ text: string; fontSize: number; lineHeight: number; fill: string; align: string }[]>(\n (result, paragraph, index) => {\n const suffix = index === contentText.length - 1 ? '' : '\\n';\n result.push({\n text: `${paragraph}${suffix}`,\n fontSize,\n lineHeight,\n fill,\n align\n });\n return result;\n },\n []\n )\n };\n};\n\nexport const omitImageLayoutSpec = (imageSpec: IStorylineSpec['image']) => {\n if (!imageSpec) {\n return {};\n }\n const { width: _width, height: _height, position: _position, gap: _gap, ...rest } = imageSpec;\n return rest;\n};\n\n// ===== 默认 image / text 盒计算(用于通用 block)=====\n\nexport const getImageBox = (\n position: StorylineImagePosition,\n blockWidth: number,\n blockHeight: number,\n padding: ReturnType<typeof normalizePadding>,\n width: number,\n height: number,\n _gap: number,\n visible: boolean\n) => {\n if (!visible) {\n return { x: padding.left, y: padding.top, width: 0, height: 0 };\n }\n switch (position) {\n case 'left':\n return { x: padding.left, y: (blockHeight - height) / 2, width, height };\n case 'right':\n return { x: blockWidth - padding.right - width, y: (blockHeight - height) / 2, width, height };\n case 'bottom':\n return { x: (blockWidth - width) / 2, y: blockHeight - padding.bottom - height, width, height };\n case 'top':\n default:\n return { x: (blockWidth - width) / 2, y: padding.top, width, height };\n }\n};\n\nexport const getTextBox = (\n position: StorylineImagePosition,\n blockWidth: number,\n blockHeight: number,\n padding: ReturnType<typeof normalizePadding>,\n imageWidth: number,\n imageHeight: number,\n imageGap: number,\n hasImage: boolean\n) => {\n if (!hasImage) {\n return {\n x: padding.left,\n y: padding.top,\n width: blockWidth - padding.left - padding.right,\n height: blockHeight - padding.top - padding.bottom\n };\n }\n switch (position) {\n case 'left':\n return {\n x: padding.left + imageWidth + imageGap,\n y: padding.top,\n width: blockWidth - padding.left - padding.right - imageWidth - imageGap,\n height: blockHeight - padding.top - padding.bottom\n };\n case 'right':\n return {\n x: padding.left,\n y: padding.top,\n width: blockWidth - padding.left - padding.right - imageWidth - imageGap,\n height: blockHeight - padding.top - padding.bottom\n };\n case 'bottom':\n return {\n x: padding.left,\n y: padding.top,\n width: blockWidth - padding.left - padding.right,\n height: blockHeight - padding.top - padding.bottom - imageHeight - imageGap\n };\n case 'top':\n default:\n return {\n x: padding.left,\n y: padding.top + imageHeight + imageGap,\n width: blockWidth - padding.left - padding.right,\n height: blockHeight - padding.top - padding.bottom - imageHeight - imageGap\n };\n }\n};\n\n// ===== Catmull-Rom 平滑曲线 =====\n\n/**\n * 用 Catmull-Rom 转 cubic Bezier 生成平滑曲线 path(贯穿所有点)。\n */\nexport const buildSmoothCurvePath = (points: StorylinePoint[]): string => {\n if (points.length < 2) {\n return '';\n }\n if (points.length === 2) {\n return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`;\n }\n let d = `M ${points[0].x} ${points[0].y}`;\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[i - 1] ?? points[i];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[i + 2] ?? p2;\n const c1x = p1.x + (p2.x - p0.x) / 6;\n const c1y = p1.y + (p2.y - p0.y) / 6;\n const c2x = p2.x - (p3.x - p1.x) / 6;\n const c2y = p2.y - (p3.y - p1.y) / 6;\n d += ` C ${c1x} ${c1y}, ${c2x} ${c2y}, ${p2.x} ${p2.y}`;\n }\n return d;\n};\n\n// 重导出常用的 layout helper(避免外部再 import layout.ts)\nexport { normalizeLayout, normalizePadding };\nexport type { IStorylineBlock, ICustomMarkSpec, StorylinePoint };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/charts/storyline/layouts/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["import { LayoutZIndex, type ICustomMarkSpec } from '@visactor/vchart';\nimport type { IStorylineBlock, IStorylineSpec, StorylineImagePosition } from '../interface';\nimport {\n computeStorylineLayout,\n normalizeLayout,\n normalizePadding,\n type StorylineLayoutResult,\n type StorylinePoint\n} from '../layout';\n\n// ===== 布局通用类型 =====\n\nexport type LayoutContext = {\n chart?: {\n getAllRegions?: () => {\n getLayoutRect?: () => { width?: number; height?: number };\n getLayoutStartPoint?: () => { x?: number; y?: number };\n }[];\n getLayoutRect?: () => { width?: number; height?: number };\n };\n getLayoutBounds?: () => { width?: () => number; height?: () => number };\n};\n\n// ===== 通用默认值 =====\n\nexport const DEFAULT_BLOCK_WIDTH = 180;\nexport const DEFAULT_BLOCK_HEIGHT = 400;\nexport const DEFAULT_BLOCK_WIDTH_RATIO = 0.24;\nexport const DEFAULT_BLOCK_GAP = 36;\nexport const DEFAULT_IMAGE_WIDTH = 48;\nexport const DEFAULT_IMAGE_HEIGHT = 48;\nexport const DEFAULT_IMAGE_GAP = 10;\nexport const DEFAULT_THEME_COLOR = '#e8543d';\nconst DEFAULT_TITLE_IMAGE_WIDTH_RATIO = 0.52;\nconst DEFAULT_TITLE_IMAGE_MAX_WIDTH = 720;\nconst DEFAULT_TITLE_IMAGE_HEIGHT_RATIO = 0.36;\nconst DEFAULT_TITLE_IMAGE_TOP = 12;\nconst DEFAULT_TITLE_IMAGE_BOTTOM = 24;\n\n// ===== 布局判定 =====\n\nexport const isLandscape = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'landscape';\nexport const isPortrait = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'portrait';\nexport const isClock = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'clock';\nexport const isArc = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'arc';\nexport const isWing = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'wing';\nexport const isLadder = (spec: IStorylineSpec) => normalizeLayout(spec.layout).type === 'ladder';\n\nexport const getThemeColor = (spec: IStorylineSpec) => spec.themeColor ?? DEFAULT_THEME_COLOR;\n\nexport const shouldShowImageBackground = (spec: IStorylineSpec) =>\n spec.image?.showBackground ?? !(isPortrait(spec) || isLandscape(spec));\n\n// ===== 默认样式工具 =====\n\nconst TITLE_FONT_SCALE_ID = 'storylineTitleFontSize';\nconst MARKER_FONT_SCALE_ID = 'storylineMarkerFontSize';\n\nconst clamp = (value: number, min: number, max: number) => Math.max(min, Math.min(max, value));\n\nconst getTextWeight = (text?: string) => {\n if (!text) {\n return 4;\n }\n return Math.max(\n Array.from(text).reduce((sum, char) => {\n if (char.trim().length === 0) {\n return sum + 0.32;\n }\n return sum + (char.charCodeAt(0) > 255 ? 1.05 : 0.62);\n }, 0),\n 1\n );\n};\n\nconst getScaleRange = (spec: IStorylineSpec, scaleId: string, fallback: [number, number]) => {\n const scales = (spec as { scales?: { id?: string; type?: string; range?: unknown }[] }).scales;\n const range = scales?.find(scale => scale.id === scaleId || scale.type === scaleId)?.range;\n if (Array.isArray(range) && range.length >= 2 && typeof range[0] === 'number' && typeof range[1] === 'number') {\n return [Math.min(range[0], range[1]), Math.max(range[0], range[1])] as [number, number];\n }\n return fallback;\n};\n\nconst getSpecGeometry = (spec: IStorylineSpec, ctx?: LayoutContext) => {\n if (ctx) {\n return getRegionGeometry(ctx, spec);\n }\n return {\n width: Math.max(Number(spec.width ?? 0), 1),\n height: Math.max(Number(spec.height ?? 0), 1),\n startX: 0,\n startY: 0\n };\n};\n\nconst resolveAdaptiveFontSize = (\n spec: IStorylineSpec,\n ctx: LayoutContext | undefined,\n text: string | undefined,\n options: {\n style?: Record<string, unknown>;\n scaleId: string;\n fallback: number;\n range: [number, number];\n canvasRatio: number;\n boxWidth?: number;\n boxHeight?: number;\n }\n) => {\n const configuredFontSize = options.style?.fontSize;\n if (configuredFontSize != null) {\n return Number(configuredFontSize);\n }\n const [minFontSize, maxFontSize] = getScaleRange(spec, options.scaleId, options.range);\n const { width, height } = getSpecGeometry(spec, ctx);\n const textWeight = getTextWeight(text);\n const canvasSize = Math.sqrt(width * height) * options.canvasRatio;\n const lengthFactor = Math.sqrt(8 / Math.max(textWeight, 4));\n const adaptiveSize = width <= 1 && height <= 1 ? options.fallback : canvasSize * lengthFactor;\n const boxWidthLimit =\n options.boxWidth && options.boxWidth > 0 ? (options.boxWidth / textWeight) * 0.96 : Number.POSITIVE_INFINITY;\n const boxHeightLimit =\n options.boxHeight && options.boxHeight > 0 ? options.boxHeight / Math.max(textWeight, 1) : Number.POSITIVE_INFINITY;\n return Math.floor(clamp(Math.min(adaptiveSize, boxWidthLimit, boxHeightLimit), minFontSize, maxFontSize));\n};\n\nexport const resolveAdaptiveLineHeight = (\n fontSize: number,\n style: Record<string, unknown> | undefined,\n fallback: number,\n ratio = 1.35\n) => Number(style?.lineHeight ?? Math.round((Number.isFinite(fontSize) ? fontSize : fallback) * ratio));\n\nexport const resolveTitleFontSize = (\n spec: IStorylineSpec,\n ctx: LayoutContext | undefined,\n title: string | undefined,\n boxWidth: number | undefined,\n fallback: number,\n range: [number, number] = [16, 34]\n) =>\n resolveAdaptiveFontSize(spec, ctx, title, {\n style: spec.title?.style as Record<string, unknown> | undefined,\n scaleId: TITLE_FONT_SCALE_ID,\n fallback,\n range,\n canvasRatio: 0.038,\n boxWidth\n });\n\nexport const resolveMarkerFontSize = (\n spec: IStorylineSpec,\n ctx: LayoutContext,\n marker: string | undefined,\n boxHeight: number | undefined,\n fallback: number,\n range: [number, number] = [18, 46]\n) =>\n resolveAdaptiveFontSize(spec, ctx, marker, {\n style: spec.marker?.style as Record<string, unknown> | undefined,\n scaleId: MARKER_FONT_SCALE_ID,\n fallback,\n range,\n canvasRatio: 0.052,\n boxHeight\n });\n\nexport const getImageBackgroundStyle = (spec: IStorylineSpec) => {\n const themeColor = getThemeColor(spec);\n return {\n fill: {\n gradient: 'linear',\n x0: 0,\n y0: 0,\n x1: 1,\n y1: 1,\n stops: [\n { offset: 0, color: '#ffffff' },\n { offset: 0.58, color: withAlpha(themeColor, 0.12) },\n { offset: 1, color: withAlpha(themeColor, 0.32) }\n ]\n },\n stroke: withAlpha(themeColor, 0.78),\n lineWidth: 2,\n shadowColor: withAlpha(themeColor, 0.18),\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowOffsetY: 4\n };\n};\n\nexport const getTitleImageSize = (\n spec: IStorylineSpec,\n width: number,\n height: number,\n options?: { widthRatio?: number; maxWidth?: number; heightRatio?: number }\n) => {\n const defaultWidth = Math.min(\n Math.max(width * (options?.widthRatio ?? DEFAULT_TITLE_IMAGE_WIDTH_RATIO), 1),\n options?.maxWidth ?? DEFAULT_TITLE_IMAGE_MAX_WIDTH\n );\n const imageWidth = Math.max(Number(spec.titleImage?.width ?? defaultWidth), 1);\n const imageHeight = Math.max(\n Number(\n spec.titleImage?.height ??\n Math.min(height, imageWidth * (options?.heightRatio ?? DEFAULT_TITLE_IMAGE_HEIGHT_RATIO))\n ),\n 1\n );\n return { width: imageWidth, height: imageHeight };\n};\n\nexport const getTitleImageReservedHeight = (\n spec: IStorylineSpec,\n width: number,\n height: number,\n options?: { y?: number; widthRatio?: number; maxWidth?: number; heightRatio?: number; bottom?: number }\n) => {\n if (!spec.titleImage?.image || spec.titleImage.visible === false) {\n return 0;\n }\n const size = getTitleImageSize(spec, width, height, options);\n return Math.ceil(\n (options?.y ?? DEFAULT_TITLE_IMAGE_TOP) + size.height + (options?.bottom ?? DEFAULT_TITLE_IMAGE_BOTTOM)\n );\n};\n\nexport const getChartGeometry = (ctx: LayoutContext, spec?: { width?: number; height?: number }) => {\n const chartRect = ctx.chart?.getLayoutRect?.();\n const bounds = ctx.getLayoutBounds?.();\n const width = Math.max(chartRect?.width ?? bounds?.width?.() ?? spec?.width ?? 0, 1);\n const height = Math.max(chartRect?.height ?? bounds?.height?.() ?? spec?.height ?? 0, 1);\n return { width, height, startX: 0, startY: 0 };\n};\n\nexport const buildTopTitleImageMark = (\n spec: IStorylineSpec,\n options?: { y?: number; widthRatio?: number; maxWidth?: number; heightRatio?: number }\n): ICustomMarkSpec<'image'> | null => {\n if (!spec.titleImage?.image || spec.titleImage.visible === false) {\n return null;\n }\n return {\n type: 'image',\n name: 'storyline-title-image',\n interactive: false,\n zIndex: LayoutZIndex.Mark + 8,\n ...spec.titleImage,\n style: {\n x: (_d: unknown, ctx: LayoutContext) => {\n const { width, height, startX } = getChartGeometry(ctx, spec);\n const size = getTitleImageSize(spec, width, height, options);\n return startX + (width - size.width) / 2;\n },\n y: (_d: unknown, ctx: LayoutContext) =>\n getChartGeometry(ctx, spec).startY + (options?.y ?? DEFAULT_TITLE_IMAGE_TOP),\n width: (_d: unknown, ctx: LayoutContext) => {\n const { width, height } = getChartGeometry(ctx, spec);\n return getTitleImageSize(spec, width, height, options).width;\n },\n height: (_d: unknown, ctx: LayoutContext) => {\n const { width, height } = getChartGeometry(ctx, spec);\n return getTitleImageSize(spec, width, height, options).height;\n },\n image: spec.titleImage.image,\n repeatX: 'no-repeat',\n repeatY: 'no-repeat',\n imageMode: 'contain',\n imagePosition: 'center',\n ...spec.titleImage.style\n }\n } as ICustomMarkSpec<'image'>;\n};\n\n// ===== 颜色工具 =====\n\n/**\n * 给颜色(#hex / rgb / rgba / hsl / 颜色关键字)追加/替换 alpha 通道,返回 rgba(...) 字符串\n */\nexport const withAlpha = (color: string, alpha: number): string => {\n const safeAlpha = Math.max(0, Math.min(1, alpha));\n if (!color) {\n return `rgba(0, 0, 0, ${safeAlpha})`;\n }\n const trimmed = color.trim();\n if (trimmed.startsWith('#')) {\n let hex = trimmed.slice(1);\n if (hex.length === 3 || hex.length === 4) {\n hex = hex\n .split('')\n .map(ch => ch + ch)\n .join('');\n }\n if (hex.length === 6 || hex.length === 8) {\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${safeAlpha})`;\n }\n }\n const rgbMatch = trimmed.match(/^rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)/i);\n if (rgbMatch) {\n return `rgba(${rgbMatch[1]}, ${rgbMatch[2]}, ${rgbMatch[3]}, ${safeAlpha})`;\n }\n return trimmed;\n};\n\n// ===== 块宽度解析 =====\n\nexport const resolveBlockWidth = (spec: IStorylineSpec, viewWidth: number) => {\n if (spec.block?.width) {\n return spec.block.width;\n }\n const ratio = spec.block?.widthRatio ?? DEFAULT_BLOCK_WIDTH_RATIO;\n const minWidth = spec.block?.minWidth ?? DEFAULT_BLOCK_WIDTH;\n const maxWidth = spec.block?.maxWidth ?? Math.max(minWidth, 320);\n return Math.max(minWidth, Math.min(maxWidth, Math.round(viewWidth * ratio)));\n};\n\n// ===== 容器几何信息(chart region rect)=====\n\nexport const getRegionGeometry = (ctx: LayoutContext, spec?: { width?: number; height?: number }) => {\n const region = ctx.chart?.getAllRegions?.()?.[0];\n const regionRect = region?.getLayoutRect?.();\n const regionStart = region?.getLayoutStartPoint?.();\n const chartRect = ctx.chart?.getLayoutRect?.();\n const bounds = ctx.getLayoutBounds?.();\n const width = Math.max(regionRect?.width ?? chartRect?.width ?? bounds?.width?.() ?? spec?.width ?? 0, 1);\n const height = Math.max(regionRect?.height ?? chartRect?.height ?? bounds?.height?.() ?? spec?.height ?? 0, 1);\n return {\n width,\n height,\n startX: regionStart?.x ?? 0,\n startY: regionStart?.y ?? 0\n };\n};\n\n// ===== 布局计算(layout.ts 的封装,附加 startX/startY 平移)=====\n\nexport const getLayout = (spec: IStorylineSpec, ctx: LayoutContext): StorylineLayoutResult => {\n const { width, height, startX, startY } = getRegionGeometry(ctx, spec);\n let blockWidth = resolveBlockWidth(spec, width);\n let blockHeight = spec.block?.height ?? (isLandscape(spec) ? 320 : DEFAULT_BLOCK_HEIGHT);\n // landscape:图片间距固定 40,根据 block 数量自适应单个 image 宽度\n if (isLandscape(spec) && !spec.block?.width) {\n const count = spec.data?.length ?? 0;\n if (count > 0) {\n const padding = normalizePadding(spec.block?.padding);\n const innerWidth = Math.max(width - padding.left - padding.right, 1);\n const LANDSCAPE_IMAGE_GAP = 40;\n const LANDSCAPE_IMAGE_MIN_WIDTH = 80;\n const totalGap = LANDSCAPE_IMAGE_GAP * Math.max(count - 1, 0);\n const adaptive = (innerWidth - totalGap) / count;\n blockWidth = Math.max(LANDSCAPE_IMAGE_MIN_WIDTH, Math.floor(adaptive));\n }\n }\n // portrait:每个 block 在垂直方向需要容纳 image + text,整体根据 region 高度均分\n // blockHeight = regionHeight / (count + 1)(即每个 block 的\"槽位\"高度),后续 portrait.ts 中:\n // imageHeight = blockHeight * 0.6\n // contentHeight = blockHeight\n if (isPortrait(spec) && !spec.block?.height) {\n const count = spec.data?.length ?? 0;\n if (count > 0) {\n const layoutPadding = typeof spec.layout === 'object' ? spec.layout.padding : undefined;\n const padding = normalizePadding(layoutPadding ?? spec.block?.padding);\n const innerHeight = Math.max(height - padding.top - padding.bottom, 1);\n blockHeight = Math.max(120, Math.floor(innerHeight / (count + 1)));\n }\n }\n const result = computeStorylineLayout(spec.data ?? [], {\n layout: spec.layout,\n viewBox: { width, height },\n block: {\n width: blockWidth,\n height: blockHeight\n },\n gap: spec.block?.gap ?? DEFAULT_BLOCK_GAP,\n padding: spec.block?.padding,\n lineDistance: spec.line?.distance\n });\n if (!startX && !startY) {\n return result;\n }\n return {\n ...result,\n blocks: result.blocks.map(block => ({\n ...block,\n x: block.x + startX,\n y: block.y + startY,\n center: {\n x: block.center.x + startX,\n y: block.center.y + startY\n }\n })),\n links: result.links.map(link => ({\n ...link,\n start: { x: link.start.x + startX, y: link.start.y + startY },\n end: { x: link.end.x + startX, y: link.end.y + startY },\n points: link.points.map(point => ({ x: point.x + startX, y: point.y + startY }))\n }))\n };\n};\n\n// ===== 文本 / 图像通用工具 =====\n\nexport const buildRichContent = (\n contentText: string[],\n spec: IStorylineSpec,\n overrides?: { fontSize?: number; lineHeight?: number; fill?: string; align?: 'left' | 'center' | 'right' }\n) => {\n const fontSize = Number(overrides?.fontSize ?? (spec.content?.style as any)?.fontSize ?? 18);\n const lineHeight = Number(overrides?.lineHeight ?? (spec.content?.style as any)?.lineHeight ?? 26);\n const fill = overrides?.fill ?? (spec.content?.style as any)?.fill ?? '#596173';\n const align = overrides?.align ?? 'left';\n\n return {\n type: 'rich' as const,\n text: contentText.reduce<{ text: string; fontSize: number; lineHeight: number; fill: string; align: string }[]>(\n (result, paragraph, index) => {\n const suffix = index === contentText.length - 1 ? '' : '\\n';\n result.push({\n text: `${paragraph}${suffix}`,\n fontSize,\n lineHeight,\n fill,\n align\n });\n return result;\n },\n []\n )\n };\n};\n\nexport const omitImageLayoutSpec = (imageSpec: IStorylineSpec['image']) => {\n if (!imageSpec) {\n return {};\n }\n const { width: _width, height: _height, position: _position, gap: _gap, ...rest } = imageSpec;\n return rest;\n};\n\n// ===== 默认 image / text 盒计算(用于通用 block)=====\n\nexport const getImageBox = (\n position: StorylineImagePosition,\n blockWidth: number,\n blockHeight: number,\n padding: ReturnType<typeof normalizePadding>,\n width: number,\n height: number,\n _gap: number,\n visible: boolean\n) => {\n if (!visible) {\n return { x: padding.left, y: padding.top, width: 0, height: 0 };\n }\n switch (position) {\n case 'left':\n return { x: padding.left, y: (blockHeight - height) / 2, width, height };\n case 'right':\n return { x: blockWidth - padding.right - width, y: (blockHeight - height) / 2, width, height };\n case 'bottom':\n return { x: (blockWidth - width) / 2, y: blockHeight - padding.bottom - height, width, height };\n case 'top':\n default:\n return { x: (blockWidth - width) / 2, y: padding.top, width, height };\n }\n};\n\nexport const getTextBox = (\n position: StorylineImagePosition,\n blockWidth: number,\n blockHeight: number,\n padding: ReturnType<typeof normalizePadding>,\n imageWidth: number,\n imageHeight: number,\n imageGap: number,\n hasImage: boolean\n) => {\n if (!hasImage) {\n return {\n x: padding.left,\n y: padding.top,\n width: blockWidth - padding.left - padding.right,\n height: blockHeight - padding.top - padding.bottom\n };\n }\n switch (position) {\n case 'left':\n return {\n x: padding.left + imageWidth + imageGap,\n y: padding.top,\n width: blockWidth - padding.left - padding.right - imageWidth - imageGap,\n height: blockHeight - padding.top - padding.bottom\n };\n case 'right':\n return {\n x: padding.left,\n y: padding.top,\n width: blockWidth - padding.left - padding.right - imageWidth - imageGap,\n height: blockHeight - padding.top - padding.bottom\n };\n case 'bottom':\n return {\n x: padding.left,\n y: padding.top,\n width: blockWidth - padding.left - padding.right,\n height: blockHeight - padding.top - padding.bottom - imageHeight - imageGap\n };\n case 'top':\n default:\n return {\n x: padding.left,\n y: padding.top + imageHeight + imageGap,\n width: blockWidth - padding.left - padding.right,\n height: blockHeight - padding.top - padding.bottom - imageHeight - imageGap\n };\n }\n};\n\n// ===== Catmull-Rom 平滑曲线 =====\n\n/**\n * 用 Catmull-Rom 转 cubic Bezier 生成平滑曲线 path(贯穿所有点)。\n */\nexport const buildSmoothCurvePath = (points: StorylinePoint[]): string => {\n if (points.length < 2) {\n return '';\n }\n if (points.length === 2) {\n return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`;\n }\n let d = `M ${points[0].x} ${points[0].y}`;\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[i - 1] ?? points[i];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[i + 2] ?? p2;\n const c1x = p1.x + (p2.x - p0.x) / 6;\n const c1y = p1.y + (p2.y - p0.y) / 6;\n const c2x = p2.x - (p3.x - p1.x) / 6;\n const c2y = p2.y - (p3.y - p1.y) / 6;\n d += ` C ${c1x} ${c1y}, ${c2x} ${c2y}, ${p2.x} ${p2.y}`;\n }\n return d;\n};\n\n// 重导出常用的 layout helper(避免外部再 import layout.ts)\nexport { normalizeLayout, normalizePadding };\nexport type { IStorylineBlock, ICustomMarkSpec, StorylinePoint };\n"]}
|
|
@@ -47,16 +47,20 @@ const vchart_1 = require("@visactor/vchart"), common_1 = require("./common"), bu
|
|
|
47
47
|
exports.buildDefaultLineMark = buildDefaultLineMark;
|
|
48
48
|
|
|
49
49
|
const getDefaultBlockMetrics = (spec, ctx, index) => {
|
|
50
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y
|
|
51
|
-
const block = (0, common_1.getLayout)(spec, ctx).blocks[index], padding = (0, common_1.normalizePadding)(null !== (_b = null === (_a = spec.block) || void 0 === _a ? void 0 : _a.padding) && void 0 !== _b ? _b : 12), imagePosition = null !== (_d = null === (_c = spec.image) || void 0 === _c ? void 0 : _c.position) && void 0 !== _d ? _d : "top", imageWidth = null !== (_f = null === (_e = spec.image) || void 0 === _e ? void 0 : _e.width) && void 0 !== _f ? _f : common_1.DEFAULT_IMAGE_WIDTH, imageHeight = null !== (_h = null === (_g = spec.image) || void 0 === _g ? void 0 : _g.height) && void 0 !== _h ? _h : common_1.DEFAULT_IMAGE_HEIGHT, imageGap = null !== (_k = null === (_j = spec.image) || void 0 === _j ? void 0 : _j.gap) && void 0 !== _k ? _k : common_1.DEFAULT_IMAGE_GAP, hasImage = !!(null === (_m = null === (_l = spec.data) || void 0 === _l ? void 0 : _l[index]) || void 0 === _m ? void 0 : _m.image),
|
|
52
|
-
common_1.resolveBlockWidth)(spec, 0), blockHeight = null !== (
|
|
50
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
|
|
51
|
+
const block = (0, common_1.getLayout)(spec, ctx).blocks[index], padding = (0, common_1.normalizePadding)(null !== (_b = null === (_a = spec.block) || void 0 === _a ? void 0 : _a.padding) && void 0 !== _b ? _b : 12), imagePosition = null !== (_d = null === (_c = spec.image) || void 0 === _c ? void 0 : _c.position) && void 0 !== _d ? _d : "top", imageWidth = null !== (_f = null === (_e = spec.image) || void 0 === _e ? void 0 : _e.width) && void 0 !== _f ? _f : common_1.DEFAULT_IMAGE_WIDTH, imageHeight = null !== (_h = null === (_g = spec.image) || void 0 === _g ? void 0 : _g.height) && void 0 !== _h ? _h : common_1.DEFAULT_IMAGE_HEIGHT, imageGap = null !== (_k = null === (_j = spec.image) || void 0 === _j ? void 0 : _j.gap) && void 0 !== _k ? _k : common_1.DEFAULT_IMAGE_GAP, hasImage = !!(null === (_m = null === (_l = spec.data) || void 0 === _l ? void 0 : _l[index]) || void 0 === _m ? void 0 : _m.image), blockWidth = null !== (_o = null == block ? void 0 : block.width) && void 0 !== _o ? _o : (0,
|
|
52
|
+
common_1.resolveBlockWidth)(spec, 0), blockHeight = null !== (_r = null !== (_p = null == block ? void 0 : block.height) && void 0 !== _p ? _p : null === (_q = spec.block) || void 0 === _q ? void 0 : _q.height) && void 0 !== _r ? _r : common_1.DEFAULT_BLOCK_HEIGHT, imageBox = (0,
|
|
53
53
|
common_1.getImageBox)(imagePosition, blockWidth, blockHeight, padding, imageWidth, imageHeight, imageGap, hasImage), textBox = (0,
|
|
54
|
-
common_1.getTextBox)(imagePosition, blockWidth, blockHeight, padding, imageWidth, imageHeight, imageGap, hasImage),
|
|
54
|
+
common_1.getTextBox)(imagePosition, blockWidth, blockHeight, padding, imageWidth, imageHeight, imageGap, hasImage), titleFontSize = (0,
|
|
55
|
+
common_1.resolveTitleFontSize)(spec, ctx, null === (_t = null === (_s = spec.data) || void 0 === _s ? void 0 : _s[index]) || void 0 === _t ? void 0 : _t.title, textBox.width, 18, [ 8, 28 ]), titleLineHeight = (0,
|
|
56
|
+
common_1.resolveAdaptiveLineHeight)(titleFontSize, null === (_u = spec.title) || void 0 === _u ? void 0 : _u.style, Math.round(24.3)), titleHeight = (null === (_w = null === (_v = spec.data) || void 0 === _v ? void 0 : _v[index]) || void 0 === _w ? void 0 : _w.title) ? titleLineHeight : 0, contentGap = (null === (_y = null === (_x = spec.data) || void 0 === _x ? void 0 : _x[index]) || void 0 === _y ? void 0 : _y.title) ? 8 : 0;
|
|
55
57
|
return {
|
|
56
58
|
block: {
|
|
57
59
|
width: blockWidth,
|
|
58
60
|
height: blockHeight
|
|
59
61
|
},
|
|
62
|
+
titleFontSize: titleFontSize,
|
|
63
|
+
titleLineHeight: titleLineHeight,
|
|
60
64
|
imageBox: imageBox,
|
|
61
65
|
textBox: textBox,
|
|
62
66
|
contentBox: {
|
|
@@ -65,11 +69,11 @@ const getDefaultBlockMetrics = (spec, ctx, index) => {
|
|
|
65
69
|
}
|
|
66
70
|
};
|
|
67
71
|
}, buildDefaultBlockMark = (spec, block, index) => {
|
|
68
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
69
|
-
const hasImage = !!block.image, contentText = Array.isArray(block.content) ? block.content : block.content ? [ block.content ] : []
|
|
72
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
73
|
+
const hasImage = !!block.image, contentText = Array.isArray(block.content) ? block.content : block.content ? [ block.content ] : [];
|
|
70
74
|
return {
|
|
71
75
|
type: "group",
|
|
72
|
-
id: `storyline-block-${null !== (
|
|
76
|
+
id: `storyline-block-${null !== (_a = block.id) && void 0 !== _a ? _a : index}`,
|
|
73
77
|
name: `storyline-block-${index}`,
|
|
74
78
|
zIndex: vchart_1.LayoutZIndex.Mark + 1,
|
|
75
79
|
style: {
|
|
@@ -84,7 +88,7 @@ const getDefaultBlockMetrics = (spec, ctx, index) => {
|
|
|
84
88
|
width: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).block.width,
|
|
85
89
|
height: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).block.height
|
|
86
90
|
},
|
|
87
|
-
children: [ !0 === (null === (
|
|
91
|
+
children: [ !0 === (null === (_b = spec.block) || void 0 === _b ? void 0 : _b.showBackground) ? {
|
|
88
92
|
type: "rect",
|
|
89
93
|
name: `storyline-block-bg-${index}`,
|
|
90
94
|
interactive: !1,
|
|
@@ -99,7 +103,18 @@ const getDefaultBlockMetrics = (spec, ctx, index) => {
|
|
|
99
103
|
lineWidth: 1,
|
|
100
104
|
shadowBlur: 6,
|
|
101
105
|
shadowColor: "rgba(0, 0, 0, 0.08)"
|
|
102
|
-
}, null === (
|
|
106
|
+
}, null === (_c = spec.block) || void 0 === _c ? void 0 : _c.style)
|
|
107
|
+
} : null, (0, common_1.shouldShowImageBackground)(spec) ? {
|
|
108
|
+
type: "rect",
|
|
109
|
+
name: `storyline-block-image-bg-${index}`,
|
|
110
|
+
interactive: !1,
|
|
111
|
+
style: Object.assign(Object.assign({
|
|
112
|
+
x: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).imageBox.x,
|
|
113
|
+
y: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).imageBox.y,
|
|
114
|
+
width: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).imageBox.width,
|
|
115
|
+
height: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).imageBox.height,
|
|
116
|
+
cornerRadius: 8
|
|
117
|
+
}, (0, common_1.getImageBackgroundStyle)(spec)), null === (_d = spec.block) || void 0 === _d ? void 0 : _d.style)
|
|
103
118
|
} : null, hasImage ? Object.assign(Object.assign({
|
|
104
119
|
type: "image",
|
|
105
120
|
name: `storyline-block-image-${index}`,
|
|
@@ -111,7 +126,7 @@ const getDefaultBlockMetrics = (spec, ctx, index) => {
|
|
|
111
126
|
width: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).imageBox.width,
|
|
112
127
|
height: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).imageBox.height,
|
|
113
128
|
image: block.image
|
|
114
|
-
}, null === (
|
|
129
|
+
}, null === (_e = spec.image) || void 0 === _e ? void 0 : _e.style)
|
|
115
130
|
}) : null, block.title ? Object.assign(Object.assign({
|
|
116
131
|
type: "text",
|
|
117
132
|
name: `storyline-block-title-${index}`,
|
|
@@ -122,8 +137,8 @@ const getDefaultBlockMetrics = (spec, ctx, index) => {
|
|
|
122
137
|
y: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).textBox.y,
|
|
123
138
|
text: block.title,
|
|
124
139
|
maxLineWidth: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).textBox.width,
|
|
125
|
-
fontSize: titleFontSize,
|
|
126
|
-
lineHeight: titleLineHeight,
|
|
140
|
+
fontSize: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).titleFontSize,
|
|
141
|
+
lineHeight: (_datum, ctx) => getDefaultBlockMetrics(spec, ctx, index).titleLineHeight,
|
|
127
142
|
fontWeight: "bold",
|
|
128
143
|
fill: "#1f2430",
|
|
129
144
|
stroke: "#fff",
|
|
@@ -131,7 +146,7 @@ const getDefaultBlockMetrics = (spec, ctx, index) => {
|
|
|
131
146
|
lineJoin: "round",
|
|
132
147
|
textAlign: "left",
|
|
133
148
|
textBaseline: "top"
|
|
134
|
-
}, null === (
|
|
149
|
+
}, null === (_f = spec.title) || void 0 === _f ? void 0 : _f.style)
|
|
135
150
|
}) : null, contentText.length ? Object.assign(Object.assign({
|
|
136
151
|
type: "text",
|
|
137
152
|
name: `storyline-block-content-${index}`,
|
|
@@ -154,7 +169,7 @@ const getDefaultBlockMetrics = (spec, ctx, index) => {
|
|
|
154
169
|
wordBreak: "break-word",
|
|
155
170
|
ellipsis: "...",
|
|
156
171
|
fill: "#596173"
|
|
157
|
-
}, null === (
|
|
172
|
+
}, null === (_g = spec.content) || void 0 === _g ? void 0 : _g.style)
|
|
158
173
|
}) : null ].filter(Boolean)
|
|
159
174
|
};
|
|
160
175
|
};
|