1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var is_string_1 = require("./is-string");
|
4 | var to_string_1 = require("./to-string");
|
5 | var measure_text_width_1 = require("./measure-text-width");
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 | exports.default = (function (text, maxWidth, font, str) {
|
17 | if (str === void 0) { str = '...'; }
|
18 | var STEP = 16;
|
19 | var PLACEHOLDER_WIDTH = measure_text_width_1.default(str, font);
|
20 | var leftText = !is_string_1.default(text) ? to_string_1.default(text) : text;
|
21 | var leftWidth = maxWidth;
|
22 | var r = [];
|
23 | var currentText;
|
24 | var currentWidth;
|
25 | if (measure_text_width_1.default(text, font) <= maxWidth) {
|
26 | return text;
|
27 | }
|
28 |
|
29 |
|
30 | while (true) {
|
31 |
|
32 | currentText = leftText.substr(0, STEP);
|
33 |
|
34 | currentWidth = measure_text_width_1.default(currentText, font);
|
35 |
|
36 | if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {
|
37 | if (currentWidth > leftWidth) {
|
38 | break;
|
39 | }
|
40 | }
|
41 | r.push(currentText);
|
42 |
|
43 | leftWidth -= currentWidth;
|
44 | leftText = leftText.substr(STEP);
|
45 |
|
46 | if (!leftText) {
|
47 | return r.join('');
|
48 | }
|
49 | }
|
50 |
|
51 |
|
52 | while (true) {
|
53 |
|
54 | currentText = leftText.substr(0, 1);
|
55 |
|
56 | currentWidth = measure_text_width_1.default(currentText, font);
|
57 |
|
58 | if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {
|
59 | break;
|
60 | }
|
61 | r.push(currentText);
|
62 |
|
63 | leftWidth -= currentWidth;
|
64 | leftText = leftText.substr(1);
|
65 | if (!leftText) {
|
66 | return r.join('');
|
67 | }
|
68 | }
|
69 | return "" + r.join('') + str;
|
70 | });
|
71 |
|
\ | No newline at end of file |