@ghchinoy/lit-audio-ui 0.5.1 → 0.6.0
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/custom-elements.json +134 -60
- package/dist/components/atoms/ui-audio-next-button.js +9 -13
- package/dist/components/atoms/ui-audio-play-button.js +10 -14
- package/dist/components/atoms/ui-audio-player-error.js +10 -14
- package/dist/components/atoms/ui-audio-prev-button.js +9 -13
- package/dist/components/atoms/ui-audio-progress-slider.js +16 -20
- package/dist/components/atoms/ui-audio-time-display.js +15 -19
- package/dist/components/atoms/ui-audio-volume-slider.js +17 -21
- package/dist/components/atoms/ui-speech-cancel-button.js +5 -5
- package/dist/components/atoms/ui-speech-record-button.js +5 -5
- package/dist/components/atoms/ui-timed-text.js +14 -18
- package/dist/components/atoms/ui-voice-waveform.js +15 -19
- package/dist/components/molecules/ui-live-waveform.js +33 -32
- package/dist/components/molecules/ui-mic-selector.js +14 -18
- package/dist/components/molecules/ui-playlist.js +15 -19
- package/dist/components/molecules/ui-scrolling-waveform.js +30 -29
- package/dist/components/molecules/ui-spectrum-visualizer.js +23 -25
- package/dist/components/molecules/ui-speech-preview.js +16 -20
- package/dist/components/molecules/ui-voice-button.js +25 -29
- package/dist/components/molecules/ui-voice-picker.js +21 -25
- package/dist/components/molecules/ui-voice-pill.js +5 -5
- package/dist/components/molecules/ui-waveform.js +46 -36
- package/dist/components/organisms/ui-audio-player.js +7 -11
- package/dist/components/providers/ui-audio-provider.js +17 -22
- package/dist/components/providers/ui-speech-provider.js +13 -17
- package/dist/index.js +36 -36
- package/dist/node_modules/@chenglou/pretext/dist/analysis.js +456 -0
- package/dist/node_modules/@chenglou/pretext/dist/bidi.js +62 -0
- package/dist/node_modules/@chenglou/pretext/dist/layout.js +190 -0
- package/dist/node_modules/@chenglou/pretext/dist/line-break.js +234 -0
- package/dist/node_modules/@chenglou/pretext/dist/measurement.js +106 -0
- package/dist/scream-audio-ui.umd.js +45 -42
- package/dist/src/components/molecules/ui-waveform.d.ts +7 -1
- package/dist/src/components/providers/ui-audio-provider.d.ts +2 -1
- package/dist/src/utils/audio-context.d.ts +0 -1
- package/dist/src/utils/audio-utils.d.ts +8 -0
- package/dist/standalone/scream-audio-ui.standalone.js +2626 -1655
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/audio-utils.js +27 -16
- package/package.json +7 -4
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
var e = /[ \t\n\r\f]+/g, t = /[\t\n\r\f]| {2,}|^ | $/;
|
|
2
|
+
function n(e) {
|
|
3
|
+
let t = e ?? "normal";
|
|
4
|
+
return t === "pre-wrap" ? {
|
|
5
|
+
mode: t,
|
|
6
|
+
preserveOrdinarySpaces: !0,
|
|
7
|
+
preserveHardBreaks: !0
|
|
8
|
+
} : {
|
|
9
|
+
mode: t,
|
|
10
|
+
preserveOrdinarySpaces: !1,
|
|
11
|
+
preserveHardBreaks: !1
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function r(n) {
|
|
15
|
+
if (!t.test(n)) return n;
|
|
16
|
+
let r = n.replace(e, " ");
|
|
17
|
+
return r.charCodeAt(0) === 32 && (r = r.slice(1)), r.length > 0 && r.charCodeAt(r.length - 1) === 32 && (r = r.slice(0, -1)), r;
|
|
18
|
+
}
|
|
19
|
+
function i(e) {
|
|
20
|
+
return /[\r\f]/.test(e) ? e.replace(/\r\n/g, "\n").replace(/[\r\f]/g, "\n") : e.replace(/\r\n/g, "\n");
|
|
21
|
+
}
|
|
22
|
+
var a = null, o;
|
|
23
|
+
function s() {
|
|
24
|
+
return a === null && (a = new Intl.Segmenter(o, { granularity: "word" })), a;
|
|
25
|
+
}
|
|
26
|
+
function c() {
|
|
27
|
+
a = null;
|
|
28
|
+
}
|
|
29
|
+
var l = /\p{Script=Arabic}/u, u = /\p{M}/u, d = /\p{Nd}/u;
|
|
30
|
+
function f(e) {
|
|
31
|
+
return l.test(e);
|
|
32
|
+
}
|
|
33
|
+
function p(e) {
|
|
34
|
+
for (let t of e) {
|
|
35
|
+
let e = t.codePointAt(0);
|
|
36
|
+
if (e >= 19968 && e <= 40959 || e >= 13312 && e <= 19903 || e >= 131072 && e <= 173791 || e >= 173824 && e <= 177983 || e >= 177984 && e <= 178207 || e >= 178208 && e <= 183983 || e >= 183984 && e <= 191471 || e >= 196608 && e <= 201551 || e >= 63744 && e <= 64255 || e >= 194560 && e <= 195103 || e >= 12288 && e <= 12351 || e >= 12352 && e <= 12447 || e >= 12448 && e <= 12543 || e >= 44032 && e <= 55215 || e >= 65280 && e <= 65519) return !0;
|
|
37
|
+
}
|
|
38
|
+
return !1;
|
|
39
|
+
}
|
|
40
|
+
const m = new Set(/* @__PURE__ */ ",...!.:.;.?.、.。.・.).〕.〉.》.」.』.】.〗.〙.〛.ー.々.〻.ゝ.ゞ.ヽ.ヾ".split(".")), h = new Set([
|
|
41
|
+
"\"",
|
|
42
|
+
"(",
|
|
43
|
+
"[",
|
|
44
|
+
"{",
|
|
45
|
+
"“",
|
|
46
|
+
"‘",
|
|
47
|
+
"«",
|
|
48
|
+
"‹",
|
|
49
|
+
"(",
|
|
50
|
+
"〔",
|
|
51
|
+
"〈",
|
|
52
|
+
"《",
|
|
53
|
+
"「",
|
|
54
|
+
"『",
|
|
55
|
+
"【",
|
|
56
|
+
"〖",
|
|
57
|
+
"〘",
|
|
58
|
+
"〚"
|
|
59
|
+
]);
|
|
60
|
+
var g = new Set(["'", "’"]);
|
|
61
|
+
const _ = new Set(/* @__PURE__ */ ".(,(!(?(:(;(،(؛(؟(।(॥(၊(။(၌(၍(၏()(](}(%(\"(”(’(»(›(…".split("("));
|
|
62
|
+
var v = new Set([
|
|
63
|
+
":",
|
|
64
|
+
".",
|
|
65
|
+
"،",
|
|
66
|
+
"؛"
|
|
67
|
+
]), y = new Set(["၏"]), b = new Set([
|
|
68
|
+
"”",
|
|
69
|
+
"’",
|
|
70
|
+
"»",
|
|
71
|
+
"›",
|
|
72
|
+
"」",
|
|
73
|
+
"』",
|
|
74
|
+
"】",
|
|
75
|
+
"》",
|
|
76
|
+
"〉",
|
|
77
|
+
"〕",
|
|
78
|
+
")"
|
|
79
|
+
]);
|
|
80
|
+
function x(e) {
|
|
81
|
+
if (w(e)) return !0;
|
|
82
|
+
let t = !1;
|
|
83
|
+
for (let n of e) {
|
|
84
|
+
if (_.has(n)) {
|
|
85
|
+
t = !0;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (!(t && u.test(n))) return !1;
|
|
89
|
+
}
|
|
90
|
+
return t;
|
|
91
|
+
}
|
|
92
|
+
function S(e) {
|
|
93
|
+
for (let t of e) if (!m.has(t) && !_.has(t)) return !1;
|
|
94
|
+
return e.length > 0;
|
|
95
|
+
}
|
|
96
|
+
function C(e) {
|
|
97
|
+
if (w(e)) return !0;
|
|
98
|
+
for (let t of e) if (!h.has(t) && !g.has(t) && !u.test(t)) return !1;
|
|
99
|
+
return e.length > 0;
|
|
100
|
+
}
|
|
101
|
+
function w(e) {
|
|
102
|
+
let t = !1;
|
|
103
|
+
for (let n of e) if (!(n === "\\" || u.test(n))) {
|
|
104
|
+
if (h.has(n) || _.has(n) || g.has(n)) {
|
|
105
|
+
t = !0;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
return !1;
|
|
109
|
+
}
|
|
110
|
+
return t;
|
|
111
|
+
}
|
|
112
|
+
function T(e) {
|
|
113
|
+
let t = Array.from(e), n = t.length;
|
|
114
|
+
for (; n > 0;) {
|
|
115
|
+
let e = t[n - 1];
|
|
116
|
+
if (u.test(e)) {
|
|
117
|
+
n--;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (h.has(e) || g.has(e)) {
|
|
121
|
+
n--;
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
return n <= 0 || n === t.length ? null : {
|
|
127
|
+
head: t.slice(0, n).join(""),
|
|
128
|
+
tail: t.slice(n).join("")
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function E(e, t) {
|
|
132
|
+
if (e.length === 0) return !1;
|
|
133
|
+
for (let n of e) if (n !== t) return !1;
|
|
134
|
+
return !0;
|
|
135
|
+
}
|
|
136
|
+
function D(e) {
|
|
137
|
+
return !f(e) || e.length === 0 ? !1 : v.has(e[e.length - 1]);
|
|
138
|
+
}
|
|
139
|
+
function O(e) {
|
|
140
|
+
return e.length === 0 ? !1 : y.has(e[e.length - 1]);
|
|
141
|
+
}
|
|
142
|
+
function k(e) {
|
|
143
|
+
if (e.length < 2 || e[0] !== " ") return null;
|
|
144
|
+
let t = e.slice(1);
|
|
145
|
+
return /^\p{M}+$/u.test(t) ? {
|
|
146
|
+
space: " ",
|
|
147
|
+
marks: t
|
|
148
|
+
} : null;
|
|
149
|
+
}
|
|
150
|
+
function A(e) {
|
|
151
|
+
for (let t = e.length - 1; t >= 0; t--) {
|
|
152
|
+
let n = e[t];
|
|
153
|
+
if (b.has(n)) return !0;
|
|
154
|
+
if (!_.has(n)) return !1;
|
|
155
|
+
}
|
|
156
|
+
return !1;
|
|
157
|
+
}
|
|
158
|
+
function j(e, t) {
|
|
159
|
+
if (t.preserveOrdinarySpaces || t.preserveHardBreaks) {
|
|
160
|
+
if (e === " ") return "preserved-space";
|
|
161
|
+
if (e === " ") return "tab";
|
|
162
|
+
if (t.preserveHardBreaks && e === "\n") return "hard-break";
|
|
163
|
+
}
|
|
164
|
+
return e === " " ? "space" : e === "\xA0" || e === " " || e === "" || e === "" ? "glue" : e === "" ? "zero-width-break" : e === "" ? "soft-hyphen" : "text";
|
|
165
|
+
}
|
|
166
|
+
function M(e) {
|
|
167
|
+
return e.length === 1 ? e[0] : e.join("");
|
|
168
|
+
}
|
|
169
|
+
function N(e, t, n, r) {
|
|
170
|
+
let i = [], a = null, o = [], s = n, c = !1, l = 0;
|
|
171
|
+
for (let u of e) {
|
|
172
|
+
let e = j(u, r), d = e === "text" && t;
|
|
173
|
+
if (a !== null && e === a && d === c) {
|
|
174
|
+
o.push(u), l += u.length;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
a !== null && i.push({
|
|
178
|
+
text: M(o),
|
|
179
|
+
isWordLike: c,
|
|
180
|
+
kind: a,
|
|
181
|
+
start: s
|
|
182
|
+
}), a = e, o = [u], s = n + l, c = d, l += u.length;
|
|
183
|
+
}
|
|
184
|
+
return a !== null && i.push({
|
|
185
|
+
text: M(o),
|
|
186
|
+
isWordLike: c,
|
|
187
|
+
kind: a,
|
|
188
|
+
start: s
|
|
189
|
+
}), i;
|
|
190
|
+
}
|
|
191
|
+
function P(e) {
|
|
192
|
+
return e === "space" || e === "preserved-space" || e === "zero-width-break" || e === "hard-break";
|
|
193
|
+
}
|
|
194
|
+
var F = /^[A-Za-z][A-Za-z0-9+.-]*:$/;
|
|
195
|
+
function I(e, t) {
|
|
196
|
+
let n = e.texts[t];
|
|
197
|
+
return n.startsWith("www.") ? !0 : F.test(n) && t + 1 < e.len && e.kinds[t + 1] === "text" && e.texts[t + 1] === "//";
|
|
198
|
+
}
|
|
199
|
+
function L(e) {
|
|
200
|
+
return e.includes("?") && (e.includes("://") || e.startsWith("www."));
|
|
201
|
+
}
|
|
202
|
+
function R(e) {
|
|
203
|
+
let t = e.texts.slice(), n = e.isWordLike.slice(), r = e.kinds.slice(), i = e.starts.slice();
|
|
204
|
+
for (let i = 0; i < e.len; i++) {
|
|
205
|
+
if (r[i] !== "text" || !I(e, i)) continue;
|
|
206
|
+
let a = [t[i]], o = i + 1;
|
|
207
|
+
for (; o < e.len && !P(r[o]);) {
|
|
208
|
+
a.push(t[o]), n[i] = !0;
|
|
209
|
+
let e = t[o].includes("?");
|
|
210
|
+
if (r[o] = "text", t[o] = "", o++, e) break;
|
|
211
|
+
}
|
|
212
|
+
t[i] = M(a);
|
|
213
|
+
}
|
|
214
|
+
let a = 0;
|
|
215
|
+
for (let e = 0; e < t.length; e++) {
|
|
216
|
+
let o = t[e];
|
|
217
|
+
o.length !== 0 && (a !== e && (t[a] = o, n[a] = n[e], r[a] = r[e], i[a] = i[e]), a++);
|
|
218
|
+
}
|
|
219
|
+
return t.length = a, n.length = a, r.length = a, i.length = a, {
|
|
220
|
+
len: a,
|
|
221
|
+
texts: t,
|
|
222
|
+
isWordLike: n,
|
|
223
|
+
kinds: r,
|
|
224
|
+
starts: i
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function z(e) {
|
|
228
|
+
let t = [], n = [], r = [], i = [];
|
|
229
|
+
for (let a = 0; a < e.len; a++) {
|
|
230
|
+
let o = e.texts[a];
|
|
231
|
+
if (t.push(o), n.push(e.isWordLike[a]), r.push(e.kinds[a]), i.push(e.starts[a]), !L(o)) continue;
|
|
232
|
+
let s = a + 1;
|
|
233
|
+
if (s >= e.len || P(e.kinds[s])) continue;
|
|
234
|
+
let c = [], l = e.starts[s], u = s;
|
|
235
|
+
for (; u < e.len && !P(e.kinds[u]);) c.push(e.texts[u]), u++;
|
|
236
|
+
c.length > 0 && (t.push(M(c)), n.push(!0), r.push("text"), i.push(l), a = u - 1);
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
len: t.length,
|
|
240
|
+
texts: t,
|
|
241
|
+
isWordLike: n,
|
|
242
|
+
kinds: r,
|
|
243
|
+
starts: i
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
var B = new Set([
|
|
247
|
+
":",
|
|
248
|
+
"-",
|
|
249
|
+
"/",
|
|
250
|
+
"×",
|
|
251
|
+
",",
|
|
252
|
+
".",
|
|
253
|
+
"+",
|
|
254
|
+
"–",
|
|
255
|
+
"—"
|
|
256
|
+
]), V = /^[A-Za-z0-9_]+[,:;]*$/, H = /[,:;]+$/;
|
|
257
|
+
function U(e) {
|
|
258
|
+
for (let t of e) if (d.test(t)) return !0;
|
|
259
|
+
return !1;
|
|
260
|
+
}
|
|
261
|
+
function W(e) {
|
|
262
|
+
if (e.length === 0) return !1;
|
|
263
|
+
for (let t of e) if (!(d.test(t) || B.has(t))) return !1;
|
|
264
|
+
return !0;
|
|
265
|
+
}
|
|
266
|
+
function G(e) {
|
|
267
|
+
let t = [], n = [], r = [], i = [];
|
|
268
|
+
for (let a = 0; a < e.len; a++) {
|
|
269
|
+
let o = e.texts[a], s = e.kinds[a];
|
|
270
|
+
if (s === "text" && W(o) && U(o)) {
|
|
271
|
+
let s = [o], c = a + 1;
|
|
272
|
+
for (; c < e.len && e.kinds[c] === "text" && W(e.texts[c]);) s.push(e.texts[c]), c++;
|
|
273
|
+
t.push(M(s)), n.push(!0), r.push("text"), i.push(e.starts[a]), a = c - 1;
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
t.push(o), n.push(e.isWordLike[a]), r.push(s), i.push(e.starts[a]);
|
|
277
|
+
}
|
|
278
|
+
return {
|
|
279
|
+
len: t.length,
|
|
280
|
+
texts: t,
|
|
281
|
+
isWordLike: n,
|
|
282
|
+
kinds: r,
|
|
283
|
+
starts: i
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
function K(e) {
|
|
287
|
+
let t = [], n = [], r = [], i = [];
|
|
288
|
+
for (let a = 0; a < e.len; a++) {
|
|
289
|
+
let o = e.texts[a], s = e.kinds[a], c = e.isWordLike[a];
|
|
290
|
+
if (s === "text" && c && V.test(o)) {
|
|
291
|
+
let s = [o], c = H.test(o), l = a + 1;
|
|
292
|
+
for (; c && l < e.len && e.kinds[l] === "text" && e.isWordLike[l] && V.test(e.texts[l]);) {
|
|
293
|
+
let t = e.texts[l];
|
|
294
|
+
s.push(t), c = H.test(t), l++;
|
|
295
|
+
}
|
|
296
|
+
t.push(M(s)), n.push(!0), r.push("text"), i.push(e.starts[a]), a = l - 1;
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
t.push(o), n.push(c), r.push(s), i.push(e.starts[a]);
|
|
300
|
+
}
|
|
301
|
+
return {
|
|
302
|
+
len: t.length,
|
|
303
|
+
texts: t,
|
|
304
|
+
isWordLike: n,
|
|
305
|
+
kinds: r,
|
|
306
|
+
starts: i
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
function q(e) {
|
|
310
|
+
let t = [], n = [], r = [], i = [];
|
|
311
|
+
for (let a = 0; a < e.len; a++) {
|
|
312
|
+
let o = e.texts[a];
|
|
313
|
+
if (e.kinds[a] === "text" && o.includes("-")) {
|
|
314
|
+
let s = o.split("-"), c = s.length > 1;
|
|
315
|
+
for (let e = 0; e < s.length; e++) {
|
|
316
|
+
let t = s[e];
|
|
317
|
+
if (!c) break;
|
|
318
|
+
(t.length === 0 || !U(t) || !W(t)) && (c = !1);
|
|
319
|
+
}
|
|
320
|
+
if (c) {
|
|
321
|
+
let o = 0;
|
|
322
|
+
for (let c = 0; c < s.length; c++) {
|
|
323
|
+
let l = s[c], u = c < s.length - 1 ? `${l}-` : l;
|
|
324
|
+
t.push(u), n.push(!0), r.push("text"), i.push(e.starts[a] + o), o += u.length;
|
|
325
|
+
}
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
t.push(o), n.push(e.isWordLike[a]), r.push(e.kinds[a]), i.push(e.starts[a]);
|
|
330
|
+
}
|
|
331
|
+
return {
|
|
332
|
+
len: t.length,
|
|
333
|
+
texts: t,
|
|
334
|
+
isWordLike: n,
|
|
335
|
+
kinds: r,
|
|
336
|
+
starts: i
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
function J(e) {
|
|
340
|
+
let t = [], n = [], r = [], i = [], a = 0;
|
|
341
|
+
for (; a < e.len;) {
|
|
342
|
+
let o = [e.texts[a]], s = e.isWordLike[a], c = e.kinds[a], l = e.starts[a];
|
|
343
|
+
if (c === "glue") {
|
|
344
|
+
let u = [o[0]], d = l;
|
|
345
|
+
for (a++; a < e.len && e.kinds[a] === "glue";) u.push(e.texts[a]), a++;
|
|
346
|
+
let f = M(u);
|
|
347
|
+
if (a < e.len && e.kinds[a] === "text") o[0] = f, o.push(e.texts[a]), s = e.isWordLike[a], c = "text", l = d, a++;
|
|
348
|
+
else {
|
|
349
|
+
t.push(f), n.push(!1), r.push("glue"), i.push(d);
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
} else a++;
|
|
353
|
+
if (c === "text") for (; a < e.len && e.kinds[a] === "glue";) {
|
|
354
|
+
let t = [];
|
|
355
|
+
for (; a < e.len && e.kinds[a] === "glue";) t.push(e.texts[a]), a++;
|
|
356
|
+
let n = M(t);
|
|
357
|
+
if (a < e.len && e.kinds[a] === "text") {
|
|
358
|
+
o.push(n, e.texts[a]), s ||= e.isWordLike[a], a++;
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
o.push(n);
|
|
362
|
+
}
|
|
363
|
+
t.push(M(o)), n.push(s), r.push(c), i.push(l);
|
|
364
|
+
}
|
|
365
|
+
return {
|
|
366
|
+
len: t.length,
|
|
367
|
+
texts: t,
|
|
368
|
+
isWordLike: n,
|
|
369
|
+
kinds: r,
|
|
370
|
+
starts: i
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
function Y(e) {
|
|
374
|
+
let t = e.texts.slice(), n = e.isWordLike.slice(), r = e.kinds.slice(), i = e.starts.slice();
|
|
375
|
+
for (let e = 0; e < t.length - 1; e++) {
|
|
376
|
+
if (r[e] !== "text" || r[e + 1] !== "text" || !p(t[e]) || !p(t[e + 1])) continue;
|
|
377
|
+
let n = T(t[e]);
|
|
378
|
+
n !== null && (t[e] = n.head, t[e + 1] = n.tail + t[e + 1], i[e + 1] = i[e] + n.head.length);
|
|
379
|
+
}
|
|
380
|
+
return {
|
|
381
|
+
len: t.length,
|
|
382
|
+
texts: t,
|
|
383
|
+
isWordLike: n,
|
|
384
|
+
kinds: r,
|
|
385
|
+
starts: i
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
function X(e, t, n) {
|
|
389
|
+
let r = s(), i = 0, a = [], o = [], c = [], l = [];
|
|
390
|
+
for (let s of r.segment(e)) for (let e of N(s.segment, s.isWordLike ?? !1, s.index, n)) {
|
|
391
|
+
let n = e.kind === "text";
|
|
392
|
+
t.carryCJKAfterClosingQuote && n && i > 0 && c[i - 1] === "text" && p(e.text) && p(a[i - 1]) && A(a[i - 1]) || n && i > 0 && c[i - 1] === "text" && S(e.text) && p(a[i - 1]) || n && i > 0 && c[i - 1] === "text" && O(a[i - 1]) ? (a[i - 1] += e.text, o[i - 1] = o[i - 1] || e.isWordLike) : n && i > 0 && c[i - 1] === "text" && e.isWordLike && f(e.text) && D(a[i - 1]) ? (a[i - 1] += e.text, o[i - 1] = !0) : n && !e.isWordLike && i > 0 && c[i - 1] === "text" && e.text.length === 1 && e.text !== "-" && e.text !== "—" && E(a[i - 1], e.text) || n && !e.isWordLike && i > 0 && c[i - 1] === "text" && (x(e.text) || e.text === "-" && o[i - 1]) ? a[i - 1] += e.text : (a[i] = e.text, o[i] = e.isWordLike, c[i] = e.kind, l[i] = e.start, i++);
|
|
393
|
+
}
|
|
394
|
+
for (let e = 1; e < i; e++) c[e] === "text" && !o[e] && w(a[e]) && c[e - 1] === "text" && (a[e - 1] += a[e], o[e - 1] = o[e - 1] || o[e], a[e] = "");
|
|
395
|
+
for (let e = i - 2; e >= 0; e--) if (c[e] === "text" && !o[e] && C(a[e])) {
|
|
396
|
+
let t = e + 1;
|
|
397
|
+
for (; t < i && a[t] === "";) t++;
|
|
398
|
+
t < i && c[t] === "text" && (a[t] = a[e] + a[t], l[t] = l[e], a[e] = "");
|
|
399
|
+
}
|
|
400
|
+
let u = 0;
|
|
401
|
+
for (let e = 0; e < i; e++) {
|
|
402
|
+
let t = a[e];
|
|
403
|
+
t.length !== 0 && (u !== e && (a[u] = t, o[u] = o[e], c[u] = c[e], l[u] = l[e]), u++);
|
|
404
|
+
}
|
|
405
|
+
a.length = u, o.length = u, c.length = u, l.length = u;
|
|
406
|
+
let d = Y(K(q(G(z(R(J({
|
|
407
|
+
len: u,
|
|
408
|
+
texts: a,
|
|
409
|
+
isWordLike: o,
|
|
410
|
+
kinds: c,
|
|
411
|
+
starts: l
|
|
412
|
+
})))))));
|
|
413
|
+
for (let e = 0; e < d.len - 1; e++) {
|
|
414
|
+
let t = k(d.texts[e]);
|
|
415
|
+
t !== null && (d.kinds[e] !== "space" && d.kinds[e] !== "preserved-space" || d.kinds[e + 1] !== "text" || !f(d.texts[e + 1]) || (d.texts[e] = t.space, d.isWordLike[e] = !1, d.kinds[e] = d.kinds[e] === "preserved-space" ? "preserved-space" : "space", d.texts[e + 1] = t.marks + d.texts[e + 1], d.starts[e + 1] = d.starts[e] + t.space.length));
|
|
416
|
+
}
|
|
417
|
+
return d;
|
|
418
|
+
}
|
|
419
|
+
function Z(e, t) {
|
|
420
|
+
if (e.len === 0) return [];
|
|
421
|
+
if (!t.preserveHardBreaks) return [{
|
|
422
|
+
startSegmentIndex: 0,
|
|
423
|
+
endSegmentIndex: e.len,
|
|
424
|
+
consumedEndSegmentIndex: e.len
|
|
425
|
+
}];
|
|
426
|
+
let n = [], r = 0;
|
|
427
|
+
for (let t = 0; t < e.len; t++) e.kinds[t] === "hard-break" && (n.push({
|
|
428
|
+
startSegmentIndex: r,
|
|
429
|
+
endSegmentIndex: t,
|
|
430
|
+
consumedEndSegmentIndex: t + 1
|
|
431
|
+
}), r = t + 1);
|
|
432
|
+
return r < e.len && n.push({
|
|
433
|
+
startSegmentIndex: r,
|
|
434
|
+
endSegmentIndex: e.len,
|
|
435
|
+
consumedEndSegmentIndex: e.len
|
|
436
|
+
}), n;
|
|
437
|
+
}
|
|
438
|
+
function Q(e, t, a = "normal") {
|
|
439
|
+
let o = n(a), s = o.mode === "pre-wrap" ? i(e) : r(e);
|
|
440
|
+
if (s.length === 0) return {
|
|
441
|
+
normalized: s,
|
|
442
|
+
chunks: [],
|
|
443
|
+
len: 0,
|
|
444
|
+
texts: [],
|
|
445
|
+
isWordLike: [],
|
|
446
|
+
kinds: [],
|
|
447
|
+
starts: []
|
|
448
|
+
};
|
|
449
|
+
let c = X(s, t, o);
|
|
450
|
+
return {
|
|
451
|
+
normalized: s,
|
|
452
|
+
chunks: Z(c, o),
|
|
453
|
+
...c
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
export { Q as analyzeText, c as clearAnalysisCaches, A as endsWithClosingQuote, p as isCJK, h as kinsokuEnd, m as kinsokuStart, _ as leftStickyPunctuation };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var e = /* @__PURE__ */ "BN.BN.BN.BN.BN.BN.BN.BN.BN.S.B.S.WS.B.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.B.B.B.S.WS.ON.ON.ET.ET.ET.ON.ON.ON.ON.ON.ON.CS.ON.CS.ON.EN.EN.EN.EN.EN.EN.EN.EN.EN.EN.ON.ON.ON.ON.ON.ON.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.ON.ON.ON.ON.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.ON.ON.ON.BN.BN.BN.BN.BN.BN.B.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.CS.ON.ET.ET.ET.ET.ON.ON.ON.ON.L.ON.ON.ON.ON.ON.ET.ET.EN.EN.ON.L.ON.ON.ON.EN.L.ON.ON.ON.ON.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.L.L.L.L.L.L.L.L".split("."), t = /* @__PURE__ */ "AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.CS.AL.ON.ON.NSM.NSM.NSM.NSM.NSM.NSM.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.AL.AL.AL.AL.AL.AL.AL.AN.AN.AN.AN.AN.AN.AN.AN.AN.AN.ET.AN.AN.AL.AL.AL.NSM.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.NSM.ON.NSM.NSM.NSM.NSM.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL.AL".split(".");
|
|
2
|
+
function n(n) {
|
|
3
|
+
return n <= 255 ? e[n] : 1424 <= n && n <= 1524 ? "R" : 1536 <= n && n <= 1791 ? t[n & 255] : 1792 <= n && n <= 2220 ? "AL" : "L";
|
|
4
|
+
}
|
|
5
|
+
function r(e) {
|
|
6
|
+
let t = e.length;
|
|
7
|
+
if (t === 0) return null;
|
|
8
|
+
let r = Array(t), i = 0;
|
|
9
|
+
for (let a = 0; a < t; a++) {
|
|
10
|
+
let t = n(e.charCodeAt(a));
|
|
11
|
+
(t === "R" || t === "AL" || t === "AN") && i++, r[a] = t;
|
|
12
|
+
}
|
|
13
|
+
if (i === 0) return null;
|
|
14
|
+
let a = t / i < .3 ? 0 : 1, o = new Int8Array(t);
|
|
15
|
+
for (let e = 0; e < t; e++) o[e] = a;
|
|
16
|
+
let s = a & 1 ? "R" : "L", c = s, l = c;
|
|
17
|
+
for (let e = 0; e < t; e++) r[e] === "NSM" ? r[e] = l : l = r[e];
|
|
18
|
+
l = c;
|
|
19
|
+
for (let e = 0; e < t; e++) {
|
|
20
|
+
let t = r[e];
|
|
21
|
+
t === "EN" ? r[e] = l === "AL" ? "AN" : "EN" : (t === "R" || t === "L" || t === "AL") && (l = t);
|
|
22
|
+
}
|
|
23
|
+
for (let e = 0; e < t; e++) r[e] === "AL" && (r[e] = "R");
|
|
24
|
+
for (let e = 1; e < t - 1; e++) r[e] === "ES" && r[e - 1] === "EN" && r[e + 1] === "EN" && (r[e] = "EN"), r[e] === "CS" && (r[e - 1] === "EN" || r[e - 1] === "AN") && r[e + 1] === r[e - 1] && (r[e] = r[e - 1]);
|
|
25
|
+
for (let e = 0; e < t; e++) {
|
|
26
|
+
if (r[e] !== "EN") continue;
|
|
27
|
+
let n;
|
|
28
|
+
for (n = e - 1; n >= 0 && r[n] === "ET"; n--) r[n] = "EN";
|
|
29
|
+
for (n = e + 1; n < t && r[n] === "ET"; n++) r[n] = "EN";
|
|
30
|
+
}
|
|
31
|
+
for (let e = 0; e < t; e++) {
|
|
32
|
+
let t = r[e];
|
|
33
|
+
(t === "WS" || t === "ES" || t === "ET" || t === "CS") && (r[e] = "ON");
|
|
34
|
+
}
|
|
35
|
+
l = c;
|
|
36
|
+
for (let e = 0; e < t; e++) {
|
|
37
|
+
let t = r[e];
|
|
38
|
+
t === "EN" ? r[e] = l === "L" ? "L" : "EN" : (t === "R" || t === "L") && (l = t);
|
|
39
|
+
}
|
|
40
|
+
for (let e = 0; e < t; e++) {
|
|
41
|
+
if (r[e] !== "ON") continue;
|
|
42
|
+
let n = e + 1;
|
|
43
|
+
for (; n < t && r[n] === "ON";) n++;
|
|
44
|
+
let i = e > 0 ? r[e - 1] : c, a = n < t ? r[n] : c, o = i === "L" ? "L" : "R";
|
|
45
|
+
if (o === (a === "L" ? "L" : "R")) for (let t = e; t < n; t++) r[t] = o;
|
|
46
|
+
e = n - 1;
|
|
47
|
+
}
|
|
48
|
+
for (let e = 0; e < t; e++) r[e] === "ON" && (r[e] = s);
|
|
49
|
+
for (let e = 0; e < t; e++) {
|
|
50
|
+
let t = r[e];
|
|
51
|
+
o[e] & 1 ? (t === "L" || t === "AN" || t === "EN") && o[e]++ : t === "R" ? o[e]++ : (t === "AN" || t === "EN") && (o[e] += 2);
|
|
52
|
+
}
|
|
53
|
+
return o;
|
|
54
|
+
}
|
|
55
|
+
function i(e, t) {
|
|
56
|
+
let n = r(e);
|
|
57
|
+
if (n === null) return null;
|
|
58
|
+
let i = new Int8Array(t.length);
|
|
59
|
+
for (let e = 0; e < t.length; e++) i[e] = n[t[e]];
|
|
60
|
+
return i;
|
|
61
|
+
}
|
|
62
|
+
export { i as computeSegmentLevels };
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { computeSegmentLevels as e } from "./bidi.js";
|
|
2
|
+
import { analyzeText as t, clearAnalysisCaches as n, endsWithClosingQuote as r, isCJK as i, kinsokuEnd as a, kinsokuStart as o, leftStickyPunctuation as s } from "./analysis.js";
|
|
3
|
+
import { clearMeasurementCaches as c, getCorrectedSegmentWidth as l, getEngineProfile as u, getFontMeasurementState as d, getSegmentGraphemePrefixWidths as f, getSegmentGraphemeWidths as p, getSegmentMetrics as m, textMayContainEmoji as h } from "./measurement.js";
|
|
4
|
+
import { walkPreparedLines as g } from "./line-break.js";
|
|
5
|
+
var _ = null, v = /* @__PURE__ */ new WeakMap();
|
|
6
|
+
function y() {
|
|
7
|
+
return _ === null && (_ = new Intl.Segmenter(void 0, { granularity: "grapheme" })), _;
|
|
8
|
+
}
|
|
9
|
+
function b(e) {
|
|
10
|
+
return e ? {
|
|
11
|
+
widths: [],
|
|
12
|
+
lineEndFitAdvances: [],
|
|
13
|
+
lineEndPaintAdvances: [],
|
|
14
|
+
kinds: [],
|
|
15
|
+
simpleLineWalkFastPath: !0,
|
|
16
|
+
segLevels: null,
|
|
17
|
+
breakableWidths: [],
|
|
18
|
+
breakablePrefixWidths: [],
|
|
19
|
+
discretionaryHyphenWidth: 0,
|
|
20
|
+
tabStopAdvance: 0,
|
|
21
|
+
chunks: [],
|
|
22
|
+
segments: []
|
|
23
|
+
} : {
|
|
24
|
+
widths: [],
|
|
25
|
+
lineEndFitAdvances: [],
|
|
26
|
+
lineEndPaintAdvances: [],
|
|
27
|
+
kinds: [],
|
|
28
|
+
simpleLineWalkFastPath: !0,
|
|
29
|
+
segLevels: null,
|
|
30
|
+
breakableWidths: [],
|
|
31
|
+
breakablePrefixWidths: [],
|
|
32
|
+
discretionaryHyphenWidth: 0,
|
|
33
|
+
tabStopAdvance: 0,
|
|
34
|
+
chunks: []
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function x(t, n, c) {
|
|
38
|
+
let g = y(), _ = u(), { cache: v, emojiCorrection: x } = d(n, h(t.normalized)), C = l("-", m("-", v), x), w = l(" ", m(" ", v), x) * 8;
|
|
39
|
+
if (t.len === 0) return b(c);
|
|
40
|
+
let T = [], E = [], D = [], O = [], k = t.chunks.length <= 1, A = c ? [] : null, j = [], M = [], N = c ? [] : null, P = Array.from({ length: t.len }), F = Array.from({ length: t.len });
|
|
41
|
+
function I(e, t, n, r, i, a, o, s) {
|
|
42
|
+
i !== "text" && i !== "space" && i !== "zero-width-break" && (k = !1), T.push(t), E.push(n), D.push(r), O.push(i), A?.push(a), j.push(o), M.push(s), N !== null && N.push(e);
|
|
43
|
+
}
|
|
44
|
+
for (let e = 0; e < t.len; e++) {
|
|
45
|
+
P[e] = T.length;
|
|
46
|
+
let n = t.texts[e], c = t.isWordLike[e], u = t.kinds[e], d = t.starts[e];
|
|
47
|
+
if (u === "soft-hyphen") {
|
|
48
|
+
I(n, 0, C, C, u, d, null, null), F[e] = T.length;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (u === "hard-break") {
|
|
52
|
+
I(n, 0, 0, 0, u, d, null, null), F[e] = T.length;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (u === "tab") {
|
|
56
|
+
I(n, 0, 0, 0, u, d, null, null), F[e] = T.length;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
let h = m(n, v);
|
|
60
|
+
if (u === "text" && h.containsCJK) {
|
|
61
|
+
let t = "", c = 0;
|
|
62
|
+
for (let e of g.segment(n)) {
|
|
63
|
+
let n = e.segment;
|
|
64
|
+
if (t.length === 0) {
|
|
65
|
+
t = n, c = e.index;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (a.has(t) || o.has(n) || s.has(n) || _.carryCJKAfterClosingQuote && i(n) && r(t)) {
|
|
69
|
+
t += n;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
let u = m(t, v), f = l(t, u, x);
|
|
73
|
+
I(t, f, f, f, "text", d + c, null, null), t = n, c = e.index;
|
|
74
|
+
}
|
|
75
|
+
if (t.length > 0) {
|
|
76
|
+
let e = m(t, v), n = l(t, e, x);
|
|
77
|
+
I(t, n, n, n, "text", d + c, null, null);
|
|
78
|
+
}
|
|
79
|
+
F[e] = T.length;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
let y = l(n, h, x), b = u === "space" || u === "preserved-space" || u === "zero-width-break" ? 0 : y, S = u === "space" || u === "zero-width-break" ? 0 : y;
|
|
83
|
+
c && n.length > 1 ? I(n, y, b, S, u, d, p(n, h, v, x), _.preferPrefixWidthsForBreakableRuns ? f(n, h, v, x) : null) : I(n, y, b, S, u, d, null, null), F[e] = T.length;
|
|
84
|
+
}
|
|
85
|
+
let L = S(t.chunks, P, F), R = A === null ? null : e(t.normalized, A);
|
|
86
|
+
return N === null ? {
|
|
87
|
+
widths: T,
|
|
88
|
+
lineEndFitAdvances: E,
|
|
89
|
+
lineEndPaintAdvances: D,
|
|
90
|
+
kinds: O,
|
|
91
|
+
simpleLineWalkFastPath: k,
|
|
92
|
+
segLevels: R,
|
|
93
|
+
breakableWidths: j,
|
|
94
|
+
breakablePrefixWidths: M,
|
|
95
|
+
discretionaryHyphenWidth: C,
|
|
96
|
+
tabStopAdvance: w,
|
|
97
|
+
chunks: L
|
|
98
|
+
} : {
|
|
99
|
+
widths: T,
|
|
100
|
+
lineEndFitAdvances: E,
|
|
101
|
+
lineEndPaintAdvances: D,
|
|
102
|
+
kinds: O,
|
|
103
|
+
simpleLineWalkFastPath: k,
|
|
104
|
+
segLevels: R,
|
|
105
|
+
breakableWidths: j,
|
|
106
|
+
breakablePrefixWidths: M,
|
|
107
|
+
discretionaryHyphenWidth: C,
|
|
108
|
+
tabStopAdvance: w,
|
|
109
|
+
chunks: L,
|
|
110
|
+
segments: N
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function S(e, t, n) {
|
|
114
|
+
let r = [];
|
|
115
|
+
for (let i = 0; i < e.length; i++) {
|
|
116
|
+
let a = e[i], o = a.startSegmentIndex < t.length ? t[a.startSegmentIndex] : n[n.length - 1] ?? 0, s = a.endSegmentIndex < t.length ? t[a.endSegmentIndex] : n[n.length - 1] ?? 0, c = a.consumedEndSegmentIndex < t.length ? t[a.consumedEndSegmentIndex] : n[n.length - 1] ?? 0;
|
|
117
|
+
r.push({
|
|
118
|
+
startSegmentIndex: o,
|
|
119
|
+
endSegmentIndex: s,
|
|
120
|
+
consumedEndSegmentIndex: c
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return r;
|
|
124
|
+
}
|
|
125
|
+
function C(e, n, r, i) {
|
|
126
|
+
return x(t(e, u(), i?.whiteSpace), n, r);
|
|
127
|
+
}
|
|
128
|
+
function w(e, t, n) {
|
|
129
|
+
return C(e, t, !0, n);
|
|
130
|
+
}
|
|
131
|
+
function T(e) {
|
|
132
|
+
return e;
|
|
133
|
+
}
|
|
134
|
+
function E(e, t, n) {
|
|
135
|
+
let r = n.get(e);
|
|
136
|
+
if (r !== void 0) return r;
|
|
137
|
+
r = [];
|
|
138
|
+
let i = y();
|
|
139
|
+
for (let n of i.segment(t[e])) r.push(n.segment);
|
|
140
|
+
return n.set(e, r), r;
|
|
141
|
+
}
|
|
142
|
+
function D(e) {
|
|
143
|
+
let t = v.get(e);
|
|
144
|
+
return t === void 0 ? (t = /* @__PURE__ */ new Map(), v.set(e, t), t) : t;
|
|
145
|
+
}
|
|
146
|
+
function O(e, t, n, r) {
|
|
147
|
+
return r > 0 && e[r - 1] === "soft-hyphen" && !(t === r && n > 0);
|
|
148
|
+
}
|
|
149
|
+
function k(e, t, n, r, i, a, o) {
|
|
150
|
+
let s = "", c = O(t, r, i, a);
|
|
151
|
+
for (let o = r; o < a; o++) t[o] === "soft-hyphen" || t[o] === "hard-break" || (o === r && i > 0 ? s += E(o, e, n).slice(i).join("") : s += e[o]);
|
|
152
|
+
return o > 0 ? (c && (s += "-"), s += E(a, e, n).slice(r === a ? i : 0, o).join("")) : c && (s += "-"), s;
|
|
153
|
+
}
|
|
154
|
+
function A(e, t, n, r, i, a, o) {
|
|
155
|
+
return {
|
|
156
|
+
text: k(e.segments, e.kinds, t, r, i, a, o),
|
|
157
|
+
width: n,
|
|
158
|
+
start: {
|
|
159
|
+
segmentIndex: r,
|
|
160
|
+
graphemeIndex: i
|
|
161
|
+
},
|
|
162
|
+
end: {
|
|
163
|
+
segmentIndex: a,
|
|
164
|
+
graphemeIndex: o
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function j(e, t, n) {
|
|
169
|
+
return A(e, t, n.width, n.startSegmentIndex, n.startGraphemeIndex, n.endSegmentIndex, n.endGraphemeIndex);
|
|
170
|
+
}
|
|
171
|
+
function M(e, t, n) {
|
|
172
|
+
let r = [];
|
|
173
|
+
if (e.widths.length === 0) return {
|
|
174
|
+
lineCount: 0,
|
|
175
|
+
height: 0,
|
|
176
|
+
lines: r
|
|
177
|
+
};
|
|
178
|
+
let i = D(e), a = g(T(e), t, (t) => {
|
|
179
|
+
r.push(j(e, i, t));
|
|
180
|
+
});
|
|
181
|
+
return {
|
|
182
|
+
lineCount: a,
|
|
183
|
+
height: a * n,
|
|
184
|
+
lines: r
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function N() {
|
|
188
|
+
n(), _ = null, v = /* @__PURE__ */ new WeakMap(), c();
|
|
189
|
+
}
|
|
190
|
+
export { N as clearCache, M as layoutWithLines, w as prepareWithSegments };
|