zrender-nightly 5.6.1-dev.20241122 → 5.6.1-dev.20241124
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/dist/zrender.js +38 -12
- package/dist/zrender.js.map +1 -1
- package/dist/zrender.min.js +1 -1
- package/lib/graphic/Text.d.ts +1 -0
- package/lib/graphic/Text.js +2 -0
- package/lib/graphic/helper/parseText.d.ts +2 -0
- package/lib/graphic/helper/parseText.js +39 -10
- package/lib/zrender.d.ts +1 -1
- package/lib/zrender.js +1 -1
- package/package.json +1 -1
- package/src/graphic/Text.ts +10 -0
- package/src/graphic/helper/parseText.ts +61 -11
- package/src/zrender.ts +1 -1
package/lib/graphic/Text.d.ts
CHANGED
|
@@ -90,6 +90,7 @@ declare class ZRText extends Displayable<TextProps> implements GroupLike {
|
|
|
90
90
|
style: TextStyleProps;
|
|
91
91
|
overlap: 'hidden' | 'show' | 'blur';
|
|
92
92
|
innerTransformable: Transformable;
|
|
93
|
+
isTruncated: boolean;
|
|
93
94
|
private _children;
|
|
94
95
|
private _childCursor;
|
|
95
96
|
private _defaultStyle;
|
package/lib/graphic/Text.js
CHANGED
|
@@ -195,6 +195,7 @@ var ZRText = (function (_super) {
|
|
|
195
195
|
var textLines = contentBlock.lines;
|
|
196
196
|
var lineHeight = contentBlock.lineHeight;
|
|
197
197
|
var defaultStyle = this._defaultStyle;
|
|
198
|
+
this.isTruncated = !!contentBlock.isTruncated;
|
|
198
199
|
var baseX = style.x || 0;
|
|
199
200
|
var baseY = style.y || 0;
|
|
200
201
|
var textAlign = style.align || defaultStyle.align || 'left';
|
|
@@ -278,6 +279,7 @@ var ZRText = (function (_super) {
|
|
|
278
279
|
var defaultStyle = this._defaultStyle;
|
|
279
280
|
var textAlign = style.align || defaultStyle.align;
|
|
280
281
|
var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;
|
|
282
|
+
this.isTruncated = !!contentBlock.isTruncated;
|
|
281
283
|
var boxX = adjustTextX(baseX, outerWidth, textAlign);
|
|
282
284
|
var boxY = adjustTextY(baseY, outerHeight, verticalAlign);
|
|
283
285
|
var xLeft = boxX;
|
|
@@ -17,6 +17,7 @@ export interface PlainTextContentBlock {
|
|
|
17
17
|
outerWidth: number;
|
|
18
18
|
outerHeight: number;
|
|
19
19
|
lines: string[];
|
|
20
|
+
isTruncated: boolean;
|
|
20
21
|
}
|
|
21
22
|
export declare function parsePlainText(text: string, style?: TextStyleProps): PlainTextContentBlock;
|
|
22
23
|
declare class RichTextToken {
|
|
@@ -49,6 +50,7 @@ export declare class RichTextContentBlock {
|
|
|
49
50
|
outerWidth: number;
|
|
50
51
|
outerHeight: number;
|
|
51
52
|
lines: RichTextLine[];
|
|
53
|
+
isTruncated: boolean;
|
|
52
54
|
}
|
|
53
55
|
export declare function parseRichText(text: string, style: TextStyleProps): RichTextContentBlock;
|
|
54
56
|
export {};
|
|
@@ -3,15 +3,27 @@ import { extend, retrieve2, retrieve3, reduce } from '../../core/util.js';
|
|
|
3
3
|
import { getLineHeight, getWidth, parsePercent } from '../../contain/text.js';
|
|
4
4
|
var STYLE_REG = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;
|
|
5
5
|
export function truncateText(text, containerWidth, font, ellipsis, options) {
|
|
6
|
+
var out = {};
|
|
7
|
+
truncateText2(out, text, containerWidth, font, ellipsis, options);
|
|
8
|
+
return out.text;
|
|
9
|
+
}
|
|
10
|
+
function truncateText2(out, text, containerWidth, font, ellipsis, options) {
|
|
6
11
|
if (!containerWidth) {
|
|
7
|
-
|
|
12
|
+
out.text = '';
|
|
13
|
+
out.isTruncated = false;
|
|
14
|
+
return;
|
|
8
15
|
}
|
|
9
16
|
var textLines = (text + '').split('\n');
|
|
10
17
|
options = prepareTruncateOptions(containerWidth, font, ellipsis, options);
|
|
18
|
+
var isTruncated = false;
|
|
19
|
+
var truncateOut = {};
|
|
11
20
|
for (var i = 0, len = textLines.length; i < len; i++) {
|
|
12
|
-
|
|
21
|
+
truncateSingleLine(truncateOut, textLines[i], options);
|
|
22
|
+
textLines[i] = truncateOut.textLine;
|
|
23
|
+
isTruncated = isTruncated || truncateOut.isTruncated;
|
|
13
24
|
}
|
|
14
|
-
|
|
25
|
+
out.text = textLines.join('\n');
|
|
26
|
+
out.isTruncated = isTruncated;
|
|
15
27
|
}
|
|
16
28
|
function prepareTruncateOptions(containerWidth, font, ellipsis, options) {
|
|
17
29
|
options = options || {};
|
|
@@ -39,16 +51,20 @@ function prepareTruncateOptions(containerWidth, font, ellipsis, options) {
|
|
|
39
51
|
preparedOpts.containerWidth = containerWidth;
|
|
40
52
|
return preparedOpts;
|
|
41
53
|
}
|
|
42
|
-
function truncateSingleLine(textLine, options) {
|
|
54
|
+
function truncateSingleLine(out, textLine, options) {
|
|
43
55
|
var containerWidth = options.containerWidth;
|
|
44
56
|
var font = options.font;
|
|
45
57
|
var contentWidth = options.contentWidth;
|
|
46
58
|
if (!containerWidth) {
|
|
47
|
-
|
|
59
|
+
out.textLine = '';
|
|
60
|
+
out.isTruncated = false;
|
|
61
|
+
return;
|
|
48
62
|
}
|
|
49
63
|
var lineWidth = getWidth(textLine, font);
|
|
50
64
|
if (lineWidth <= containerWidth) {
|
|
51
|
-
|
|
65
|
+
out.textLine = textLine;
|
|
66
|
+
out.isTruncated = false;
|
|
67
|
+
return;
|
|
52
68
|
}
|
|
53
69
|
for (var j = 0;; j++) {
|
|
54
70
|
if (lineWidth <= contentWidth || j >= options.maxIterations) {
|
|
@@ -66,7 +82,8 @@ function truncateSingleLine(textLine, options) {
|
|
|
66
82
|
if (textLine === '') {
|
|
67
83
|
textLine = options.placeholder;
|
|
68
84
|
}
|
|
69
|
-
|
|
85
|
+
out.textLine = textLine;
|
|
86
|
+
out.isTruncated = true;
|
|
70
87
|
}
|
|
71
88
|
function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {
|
|
72
89
|
var width = 0;
|
|
@@ -87,6 +104,7 @@ export function parsePlainText(text, style) {
|
|
|
87
104
|
var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);
|
|
88
105
|
var bgColorDrawn = !!(style.backgroundColor);
|
|
89
106
|
var truncateLineOverflow = style.lineOverflow === 'truncate';
|
|
107
|
+
var isTruncated = false;
|
|
90
108
|
var width = style.width;
|
|
91
109
|
var lines;
|
|
92
110
|
if (width != null && (overflow === 'break' || overflow === 'breakAll')) {
|
|
@@ -99,6 +117,7 @@ export function parsePlainText(text, style) {
|
|
|
99
117
|
var height = retrieve2(style.height, contentHeight);
|
|
100
118
|
if (contentHeight > height && truncateLineOverflow) {
|
|
101
119
|
var lineCount = Math.floor(height / lineHeight);
|
|
120
|
+
isTruncated = isTruncated || (lines.length > lineCount);
|
|
102
121
|
lines = lines.slice(0, lineCount);
|
|
103
122
|
}
|
|
104
123
|
if (text && truncate && width != null) {
|
|
@@ -106,8 +125,11 @@ export function parsePlainText(text, style) {
|
|
|
106
125
|
minChar: style.truncateMinChar,
|
|
107
126
|
placeholder: style.placeholder
|
|
108
127
|
});
|
|
128
|
+
var singleOut = {};
|
|
109
129
|
for (var i = 0; i < lines.length; i++) {
|
|
110
|
-
|
|
130
|
+
truncateSingleLine(singleOut, lines[i], options);
|
|
131
|
+
lines[i] = singleOut.textLine;
|
|
132
|
+
isTruncated = isTruncated || singleOut.isTruncated;
|
|
111
133
|
}
|
|
112
134
|
}
|
|
113
135
|
var outerHeight = height;
|
|
@@ -136,7 +158,8 @@ export function parsePlainText(text, style) {
|
|
|
136
158
|
calculatedLineHeight: calculatedLineHeight,
|
|
137
159
|
contentWidth: contentWidth,
|
|
138
160
|
contentHeight: contentHeight,
|
|
139
|
-
width: width
|
|
161
|
+
width: width,
|
|
162
|
+
isTruncated: isTruncated
|
|
140
163
|
};
|
|
141
164
|
}
|
|
142
165
|
var RichTextToken = (function () {
|
|
@@ -162,6 +185,7 @@ var RichTextContentBlock = (function () {
|
|
|
162
185
|
this.outerWidth = 0;
|
|
163
186
|
this.outerHeight = 0;
|
|
164
187
|
this.lines = [];
|
|
188
|
+
this.isTruncated = false;
|
|
165
189
|
}
|
|
166
190
|
return RichTextContentBlock;
|
|
167
191
|
}());
|
|
@@ -197,6 +221,7 @@ export function parseRichText(text, style) {
|
|
|
197
221
|
var stlPadding = style.padding;
|
|
198
222
|
var truncate = overflow === 'truncate';
|
|
199
223
|
var truncateLine = style.lineOverflow === 'truncate';
|
|
224
|
+
var tmpTruncateOut = {};
|
|
200
225
|
function finishLine(line, lineWidth, lineHeight) {
|
|
201
226
|
line.width = lineWidth;
|
|
202
227
|
line.lineHeight = lineHeight;
|
|
@@ -222,6 +247,7 @@ export function parseRichText(text, style) {
|
|
|
222
247
|
token.align = tokenStyle && tokenStyle.align || style.align;
|
|
223
248
|
token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';
|
|
224
249
|
if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {
|
|
250
|
+
var originalLength = contentBlock.lines.length;
|
|
225
251
|
if (j > 0) {
|
|
226
252
|
line.tokens = line.tokens.slice(0, j);
|
|
227
253
|
finishLine(line, lineWidth, lineHeight);
|
|
@@ -230,6 +256,7 @@ export function parseRichText(text, style) {
|
|
|
230
256
|
else {
|
|
231
257
|
contentBlock.lines = contentBlock.lines.slice(0, i);
|
|
232
258
|
}
|
|
259
|
+
contentBlock.isTruncated = contentBlock.isTruncated || (contentBlock.lines.length < originalLength);
|
|
233
260
|
break outer;
|
|
234
261
|
}
|
|
235
262
|
var styleTokenWidth = tokenStyle.width;
|
|
@@ -258,7 +285,9 @@ export function parseRichText(text, style) {
|
|
|
258
285
|
token.width = token.contentWidth = 0;
|
|
259
286
|
}
|
|
260
287
|
else {
|
|
261
|
-
|
|
288
|
+
truncateText2(tmpTruncateOut, token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });
|
|
289
|
+
token.text = tmpTruncateOut.text;
|
|
290
|
+
contentBlock.isTruncated = contentBlock.isTruncated || tmpTruncateOut.isTruncated;
|
|
262
291
|
token.width = token.contentWidth = getWidth(token.text, font);
|
|
263
292
|
}
|
|
264
293
|
}
|
package/lib/zrender.d.ts
CHANGED
|
@@ -90,7 +90,7 @@ export declare type ElementSSRData = zrUtil.HashMap<unknown>;
|
|
|
90
90
|
export declare type ElementSSRDataGetter<T> = (el: Element) => zrUtil.HashMap<T>;
|
|
91
91
|
export declare function getElementSSRData(el: Element): ElementSSRData;
|
|
92
92
|
export declare function registerSSRDataGetter<T>(getter: ElementSSRDataGetter<T>): void;
|
|
93
|
-
export declare const version = "5.6.1-dev.
|
|
93
|
+
export declare const version = "5.6.1-dev.20241124";
|
|
94
94
|
export interface ZRenderType extends ZRender {
|
|
95
95
|
}
|
|
96
96
|
export {};
|
package/lib/zrender.js
CHANGED
package/package.json
CHANGED
package/src/graphic/Text.ts
CHANGED
|
@@ -275,6 +275,12 @@ class ZRText extends Displayable<TextProps> implements GroupLike {
|
|
|
275
275
|
*/
|
|
276
276
|
innerTransformable: Transformable
|
|
277
277
|
|
|
278
|
+
// Be `true` if and only if the result text is modified due to overflow, due to
|
|
279
|
+
// settings on either `overflow` or `lineOverflow`. Based on this the caller can
|
|
280
|
+
// take some action like showing the original text in a particular tip.
|
|
281
|
+
// Only take effect after rendering. So do not visit it before it.
|
|
282
|
+
isTruncated: boolean
|
|
283
|
+
|
|
278
284
|
private _children: (ZRImage | Rect | TSpan)[] = []
|
|
279
285
|
|
|
280
286
|
private _childCursor: 0
|
|
@@ -497,6 +503,8 @@ class ZRText extends Displayable<TextProps> implements GroupLike {
|
|
|
497
503
|
|
|
498
504
|
const defaultStyle = this._defaultStyle;
|
|
499
505
|
|
|
506
|
+
this.isTruncated = !!contentBlock.isTruncated;
|
|
507
|
+
|
|
500
508
|
const baseX = style.x || 0;
|
|
501
509
|
const baseY = style.y || 0;
|
|
502
510
|
const textAlign = style.align || defaultStyle.align || 'left';
|
|
@@ -635,6 +643,8 @@ class ZRText extends Displayable<TextProps> implements GroupLike {
|
|
|
635
643
|
const textAlign = style.align || defaultStyle.align;
|
|
636
644
|
const verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;
|
|
637
645
|
|
|
646
|
+
this.isTruncated = !!contentBlock.isTruncated;
|
|
647
|
+
|
|
638
648
|
const boxX = adjustTextX(baseX, outerWidth, textAlign);
|
|
639
649
|
const boxY = adjustTextY(baseY, outerHeight, verticalAlign);
|
|
640
650
|
let xLeft = boxX;
|
|
@@ -44,8 +44,25 @@ export function truncateText(
|
|
|
44
44
|
ellipsis?: string,
|
|
45
45
|
options?: InnerTruncateOption
|
|
46
46
|
): string {
|
|
47
|
+
const out = {} as Parameters<typeof truncateText2>[0];
|
|
48
|
+
truncateText2(out, text, containerWidth, font, ellipsis, options);
|
|
49
|
+
return out.text;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// PENDING: not sure whether `truncateText` is used outside zrender, since it has an `export`
|
|
53
|
+
// specifier. So keep it and perform the interface modification in `truncateText2`.
|
|
54
|
+
function truncateText2(
|
|
55
|
+
out: {text: string, isTruncated: boolean},
|
|
56
|
+
text: string,
|
|
57
|
+
containerWidth: number,
|
|
58
|
+
font: string,
|
|
59
|
+
ellipsis?: string,
|
|
60
|
+
options?: InnerTruncateOption
|
|
61
|
+
): void {
|
|
47
62
|
if (!containerWidth) {
|
|
48
|
-
|
|
63
|
+
out.text = '';
|
|
64
|
+
out.isTruncated = false;
|
|
65
|
+
return;
|
|
49
66
|
}
|
|
50
67
|
|
|
51
68
|
const textLines = (text + '').split('\n');
|
|
@@ -53,11 +70,16 @@ export function truncateText(
|
|
|
53
70
|
|
|
54
71
|
// FIXME
|
|
55
72
|
// It is not appropriate that every line has '...' when truncate multiple lines.
|
|
73
|
+
let isTruncated = false;
|
|
74
|
+
const truncateOut = {} as Parameters<typeof truncateSingleLine>[0];
|
|
56
75
|
for (let i = 0, len = textLines.length; i < len; i++) {
|
|
57
|
-
|
|
76
|
+
truncateSingleLine(truncateOut, textLines[i], options as InnerPreparedTruncateOption);
|
|
77
|
+
textLines[i] = truncateOut.textLine;
|
|
78
|
+
isTruncated = isTruncated || truncateOut.isTruncated;
|
|
58
79
|
}
|
|
59
80
|
|
|
60
|
-
|
|
81
|
+
out.text = textLines.join('\n');
|
|
82
|
+
out.isTruncated = isTruncated;
|
|
61
83
|
}
|
|
62
84
|
|
|
63
85
|
function prepareTruncateOptions(
|
|
@@ -104,19 +126,27 @@ function prepareTruncateOptions(
|
|
|
104
126
|
return preparedOpts;
|
|
105
127
|
}
|
|
106
128
|
|
|
107
|
-
function truncateSingleLine(
|
|
129
|
+
function truncateSingleLine(
|
|
130
|
+
out: {textLine: string, isTruncated: boolean},
|
|
131
|
+
textLine: string,
|
|
132
|
+
options: InnerPreparedTruncateOption
|
|
133
|
+
): void {
|
|
108
134
|
const containerWidth = options.containerWidth;
|
|
109
135
|
const font = options.font;
|
|
110
136
|
const contentWidth = options.contentWidth;
|
|
111
137
|
|
|
112
138
|
if (!containerWidth) {
|
|
113
|
-
|
|
139
|
+
out.textLine = '';
|
|
140
|
+
out.isTruncated = false;
|
|
141
|
+
return;
|
|
114
142
|
}
|
|
115
143
|
|
|
116
144
|
let lineWidth = getWidth(textLine, font);
|
|
117
145
|
|
|
118
146
|
if (lineWidth <= containerWidth) {
|
|
119
|
-
|
|
147
|
+
out.textLine = textLine;
|
|
148
|
+
out.isTruncated = false;
|
|
149
|
+
return;
|
|
120
150
|
}
|
|
121
151
|
|
|
122
152
|
for (let j = 0; ; j++) {
|
|
@@ -139,7 +169,8 @@ function truncateSingleLine(textLine: string, options: InnerPreparedTruncateOpti
|
|
|
139
169
|
textLine = options.placeholder;
|
|
140
170
|
}
|
|
141
171
|
|
|
142
|
-
|
|
172
|
+
out.textLine = textLine;
|
|
173
|
+
out.isTruncated = true;
|
|
143
174
|
}
|
|
144
175
|
|
|
145
176
|
function estimateLength(
|
|
@@ -174,6 +205,10 @@ export interface PlainTextContentBlock {
|
|
|
174
205
|
outerHeight: number
|
|
175
206
|
|
|
176
207
|
lines: string[]
|
|
208
|
+
|
|
209
|
+
// Be `true` if and only if the result text is modified due to overflow, due to
|
|
210
|
+
// settings on either `overflow` or `lineOverflow`
|
|
211
|
+
isTruncated: boolean
|
|
177
212
|
}
|
|
178
213
|
|
|
179
214
|
export function parsePlainText(
|
|
@@ -192,6 +227,7 @@ export function parsePlainText(
|
|
|
192
227
|
const bgColorDrawn = !!(style.backgroundColor);
|
|
193
228
|
|
|
194
229
|
const truncateLineOverflow = style.lineOverflow === 'truncate';
|
|
230
|
+
let isTruncated = false;
|
|
195
231
|
|
|
196
232
|
let width = style.width;
|
|
197
233
|
let lines: string[];
|
|
@@ -210,6 +246,7 @@ export function parsePlainText(
|
|
|
210
246
|
if (contentHeight > height && truncateLineOverflow) {
|
|
211
247
|
const lineCount = Math.floor(height / lineHeight);
|
|
212
248
|
|
|
249
|
+
isTruncated = isTruncated || (lines.length > lineCount);
|
|
213
250
|
lines = lines.slice(0, lineCount);
|
|
214
251
|
|
|
215
252
|
// TODO If show ellipse for line truncate
|
|
@@ -228,8 +265,11 @@ export function parsePlainText(
|
|
|
228
265
|
placeholder: style.placeholder
|
|
229
266
|
});
|
|
230
267
|
// Having every line has '...' when truncate multiple lines.
|
|
268
|
+
const singleOut = {} as Parameters<typeof truncateSingleLine>[0];
|
|
231
269
|
for (let i = 0; i < lines.length; i++) {
|
|
232
|
-
|
|
270
|
+
truncateSingleLine(singleOut, lines[i], options);
|
|
271
|
+
lines[i] = singleOut.textLine;
|
|
272
|
+
isTruncated = isTruncated || singleOut.isTruncated;
|
|
233
273
|
}
|
|
234
274
|
}
|
|
235
275
|
|
|
@@ -265,7 +305,8 @@ export function parsePlainText(
|
|
|
265
305
|
calculatedLineHeight: calculatedLineHeight,
|
|
266
306
|
contentWidth: contentWidth,
|
|
267
307
|
contentHeight: contentHeight,
|
|
268
|
-
width: width
|
|
308
|
+
width: width,
|
|
309
|
+
isTruncated: isTruncated
|
|
269
310
|
};
|
|
270
311
|
}
|
|
271
312
|
|
|
@@ -314,6 +355,9 @@ export class RichTextContentBlock {
|
|
|
314
355
|
outerWidth: number = 0
|
|
315
356
|
outerHeight: number = 0
|
|
316
357
|
lines: RichTextLine[] = []
|
|
358
|
+
// Be `true` if and only if the result text is modified due to overflow, due to
|
|
359
|
+
// settings on either `overflow` or `lineOverflow`
|
|
360
|
+
isTruncated: boolean = false
|
|
317
361
|
}
|
|
318
362
|
|
|
319
363
|
type WrapInfo = {
|
|
@@ -326,7 +370,7 @@ type WrapInfo = {
|
|
|
326
370
|
* Also consider 'bbbb{a|xxx\nzzz}xxxx\naaaa'.
|
|
327
371
|
* If styleName is undefined, it is plain text.
|
|
328
372
|
*/
|
|
329
|
-
export function parseRichText(text: string, style: TextStyleProps) {
|
|
373
|
+
export function parseRichText(text: string, style: TextStyleProps): RichTextContentBlock {
|
|
330
374
|
const contentBlock = new RichTextContentBlock();
|
|
331
375
|
|
|
332
376
|
text != null && (text += '');
|
|
@@ -366,6 +410,7 @@ export function parseRichText(text: string, style: TextStyleProps) {
|
|
|
366
410
|
|
|
367
411
|
const truncate = overflow === 'truncate';
|
|
368
412
|
const truncateLine = style.lineOverflow === 'truncate';
|
|
413
|
+
const tmpTruncateOut = {} as Parameters<typeof truncateText2>[0];
|
|
369
414
|
|
|
370
415
|
// let prevToken: RichTextToken;
|
|
371
416
|
|
|
@@ -412,6 +457,7 @@ export function parseRichText(text: string, style: TextStyleProps) {
|
|
|
412
457
|
if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {
|
|
413
458
|
// TODO Add ellipsis on the previous token.
|
|
414
459
|
// prevToken.text =
|
|
460
|
+
const originalLength = contentBlock.lines.length;
|
|
415
461
|
if (j > 0) {
|
|
416
462
|
line.tokens = line.tokens.slice(0, j);
|
|
417
463
|
finishLine(line, lineWidth, lineHeight);
|
|
@@ -420,6 +466,7 @@ export function parseRichText(text: string, style: TextStyleProps) {
|
|
|
420
466
|
else {
|
|
421
467
|
contentBlock.lines = contentBlock.lines.slice(0, i);
|
|
422
468
|
}
|
|
469
|
+
contentBlock.isTruncated = contentBlock.isTruncated || (contentBlock.lines.length < originalLength);
|
|
423
470
|
break outer;
|
|
424
471
|
}
|
|
425
472
|
|
|
@@ -461,10 +508,13 @@ export function parseRichText(text: string, style: TextStyleProps) {
|
|
|
461
508
|
token.width = token.contentWidth = 0;
|
|
462
509
|
}
|
|
463
510
|
else {
|
|
464
|
-
|
|
511
|
+
truncateText2(
|
|
512
|
+
tmpTruncateOut,
|
|
465
513
|
token.text, remainTruncWidth - paddingH, font, style.ellipsis,
|
|
466
514
|
{minChar: style.truncateMinChar}
|
|
467
515
|
);
|
|
516
|
+
token.text = tmpTruncateOut.text;
|
|
517
|
+
contentBlock.isTruncated = contentBlock.isTruncated || tmpTruncateOut.isTruncated;
|
|
468
518
|
token.width = token.contentWidth = getWidth(token.text, font);
|
|
469
519
|
}
|
|
470
520
|
}
|
package/src/zrender.ts
CHANGED
|
@@ -556,7 +556,7 @@ export function registerSSRDataGetter<T>(getter: ElementSSRDataGetter<T>) {
|
|
|
556
556
|
/**
|
|
557
557
|
* @type {string}
|
|
558
558
|
*/
|
|
559
|
-
export const version = '5.6.1-dev.
|
|
559
|
+
export const version = '5.6.1-dev.20241124';
|
|
560
560
|
|
|
561
561
|
|
|
562
562
|
export interface ZRenderType extends ZRender {};
|