@silurus/ooxml 0.74.5 → 0.75.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/README.md +105 -6
- package/dist/bounded-raw-part-cache-BTfZD_Sz.js +1248 -0
- package/dist/{docx-DftZMp7R.js → document-pull-client-H80_E10V.js} +11165 -11517
- package/dist/docx-BX0mJqS1.js +1274 -0
- package/dist/docx.mjs +6 -3
- package/dist/docx_parser_bg.wasm +0 -0
- package/dist/duotone-bitmap-by-path-Dv5Ikbzl.js +28 -0
- package/dist/find-cursor-Dc5iM6s7.js +815 -0
- package/dist/highlight-rect-cCvVU-MW.js +48 -0
- package/dist/hyperlink-D85FexTa.js +27 -0
- package/dist/index.mjs +4 -4
- package/dist/{highlight-rect-IjFkGg4X.js → line-distribute-DkLgIa7B.js} +37 -84
- package/dist/{find-cursor-DtgyGs5V.js → line-metrics-qwIyTk7Q.js} +1169 -3641
- package/dist/math.mjs +1 -1
- package/dist/node.mjs +998 -0
- package/dist/pptx-BEYjiTnZ.js +822 -0
- package/dist/pptx-CXgyi7wu.js +1705 -0
- package/dist/pptx.mjs +7 -3
- package/dist/pptx_parser_bg.wasm +0 -0
- package/dist/preload-BEouWnlI.js +132 -0
- package/dist/render-C0wMf5eT.js +71 -0
- package/dist/render-worker-host-CLdOlxFu.js +27 -0
- package/dist/render-worker-host-DZ4u0RFs.js +27 -0
- package/dist/render-worker-host-s3J-mWBP.js +27 -0
- package/dist/renderer-CwzTv9hH.js +5225 -0
- package/dist/resource-measurement-6aReN3K0.js +93 -0
- package/dist/slide-pull-client-D_T0AIoX.js +175 -0
- package/dist/svg-image-by-path-C1M3N2pT.js +1623 -0
- package/dist/transfer-3QEJrsJa.js +6 -0
- package/dist/types/docx.d.ts +290 -105
- package/dist/types/index.d.ts +399 -142
- package/dist/types/math.d.ts +1 -1
- package/dist/types/node.d.ts +4855 -0
- package/dist/types/pptx.d.ts +431 -245
- package/dist/types/xlsx.d.ts +320 -120
- package/dist/visible-index-CKvgpUrf.js +17 -0
- package/dist/worksheet-pull-worker-DCei8u-4.js +347 -0
- package/dist/{xlsx-BqMHvfsE.js → xlsx-DJyPlzjB.js} +1499 -1284
- package/dist/xlsx.mjs +7 -3
- package/dist/xlsx_parser_bg.wasm +0 -0
- package/package.json +12 -2
- package/dist/pptx-BxU0Lb3J.js +0 -6761
- package/dist/render-worker-host-Bcm9j4-H.js +0 -27
- package/dist/render-worker-host-BqSTDaYt.js +0 -27
- package/dist/render-worker-host-C523QxVw.js +0 -27
- package/dist/visible-index-C3_3gBg-.js +0 -50
- /package/dist/{mathjax-BPjQ2C_j.js → mathjax-Dqo857oC.js} +0 -0
|
@@ -0,0 +1,815 @@
|
|
|
1
|
+
import { M as e } from "./bounded-raw-part-cache-BTfZD_Sz.js";
|
|
2
|
+
//#region packages/core/src/errors/cfb-sniff.ts
|
|
3
|
+
var t = [
|
|
4
|
+
208,
|
|
5
|
+
207,
|
|
6
|
+
17,
|
|
7
|
+
224,
|
|
8
|
+
161,
|
|
9
|
+
177,
|
|
10
|
+
26,
|
|
11
|
+
225
|
|
12
|
+
], n = 4294967290, r = 512, i = 128, a = 4096, o = 8192, s = new Set([
|
|
13
|
+
"WordDocument",
|
|
14
|
+
"Workbook",
|
|
15
|
+
"Book",
|
|
16
|
+
"PowerPoint Document"
|
|
17
|
+
]), c = "EncryptionInfo";
|
|
18
|
+
function l(e) {
|
|
19
|
+
if (e.length < r) return null;
|
|
20
|
+
for (let n = 0; n < t.length; n++) if (e[n] !== t[n]) return null;
|
|
21
|
+
let n = new DataView(e.buffer, e.byteOffset, e.byteLength), i = n.getUint16(30, !0);
|
|
22
|
+
if (i !== 9 && i !== 12) return "cfb-unknown";
|
|
23
|
+
let a = 1 << i, o = n.getUint32(48, !0), l = u(n, e.length, a, o);
|
|
24
|
+
if (l === null) return "cfb-unknown";
|
|
25
|
+
if (l.has(c)) return "encrypted";
|
|
26
|
+
for (let e of l) if (s.has(e)) return "legacy-binary-format";
|
|
27
|
+
return "cfb-unknown";
|
|
28
|
+
}
|
|
29
|
+
function u(e, t, n, r) {
|
|
30
|
+
if (!m(r)) return null;
|
|
31
|
+
let s = /* @__PURE__ */ new Set(), c = Math.floor(n / i);
|
|
32
|
+
if (c < 1) return null;
|
|
33
|
+
let l = /* @__PURE__ */ new Set(), u = r, h = 0, g = 0;
|
|
34
|
+
for (; m(u) && !(h++ > o || l.has(u));) {
|
|
35
|
+
l.add(u);
|
|
36
|
+
let r = p(u, n);
|
|
37
|
+
if (r < 0 || r + n > t) return null;
|
|
38
|
+
for (let t = 0; t < c; t++) {
|
|
39
|
+
if (g++ > a) return s;
|
|
40
|
+
let n = d(e, r + t * i);
|
|
41
|
+
n && s.add(n);
|
|
42
|
+
}
|
|
43
|
+
let o = f(e, t, n, u);
|
|
44
|
+
if (o === null) break;
|
|
45
|
+
u = o;
|
|
46
|
+
}
|
|
47
|
+
return s;
|
|
48
|
+
}
|
|
49
|
+
function d(e, t) {
|
|
50
|
+
let n = e.getUint16(t + 64, !0);
|
|
51
|
+
if (n < 2 || n > 64) return "";
|
|
52
|
+
let r = n / 2 - 1, i = "";
|
|
53
|
+
for (let n = 0; n < r; n++) {
|
|
54
|
+
let r = e.getUint16(t + n * 2, !0);
|
|
55
|
+
if (r === 0) break;
|
|
56
|
+
i += String.fromCharCode(r);
|
|
57
|
+
}
|
|
58
|
+
return i;
|
|
59
|
+
}
|
|
60
|
+
function f(e, t, n, r) {
|
|
61
|
+
let i = Math.floor(n / 4);
|
|
62
|
+
if (i < 1) return null;
|
|
63
|
+
let a = Math.floor(r / i), o = r % i;
|
|
64
|
+
if (a >= 109) return null;
|
|
65
|
+
let s = 76 + a * 4;
|
|
66
|
+
if (s + 4 > t) return null;
|
|
67
|
+
let c = e.getUint32(s, !0);
|
|
68
|
+
if (!m(c)) return null;
|
|
69
|
+
let l = p(c, n), u = l + o * 4;
|
|
70
|
+
return l < 0 || u + 4 > t ? null : e.getUint32(u, !0);
|
|
71
|
+
}
|
|
72
|
+
function p(e, t) {
|
|
73
|
+
return (e + 1) * t;
|
|
74
|
+
}
|
|
75
|
+
function m(e) {
|
|
76
|
+
return e >= 0 && e <= n;
|
|
77
|
+
}
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region packages/core/src/errors/cfb-read.ts
|
|
80
|
+
var h = [
|
|
81
|
+
208,
|
|
82
|
+
207,
|
|
83
|
+
17,
|
|
84
|
+
224,
|
|
85
|
+
161,
|
|
86
|
+
177,
|
|
87
|
+
26,
|
|
88
|
+
225
|
|
89
|
+
], g = 4294967290, _ = 4294967294, v = 512, y = 128, b = 4e6, ee = 8e6, te = 65536, ne = 1e6;
|
|
90
|
+
function x(e, t) {
|
|
91
|
+
if (e.length < v) return null;
|
|
92
|
+
for (let t = 0; t < h.length; t++) if (e[t] !== h[t]) return null;
|
|
93
|
+
let n = new DataView(e.buffer, e.byteOffset, e.byteLength), r = S(n);
|
|
94
|
+
if (r === null) return null;
|
|
95
|
+
let i = re(n, e.length, r);
|
|
96
|
+
if (i === null) return null;
|
|
97
|
+
let a = E(n, e.length, r, i, t);
|
|
98
|
+
if (a === null || a.target === null) return null;
|
|
99
|
+
let { target: o, root: s } = a;
|
|
100
|
+
return o.size === 0 ? new Uint8Array() : o.size < r.miniStreamCutoff ? s === null ? null : ie(n, e.length, r, i, s, o) : O(n, e.length, r, i, o.startSector, o.size);
|
|
101
|
+
}
|
|
102
|
+
function S(e) {
|
|
103
|
+
let t = e.getUint16(30, !0);
|
|
104
|
+
if (t !== 9 && t !== 12) return null;
|
|
105
|
+
let n = e.getUint16(32, !0);
|
|
106
|
+
return n === 6 ? {
|
|
107
|
+
sectorSize: 1 << t,
|
|
108
|
+
miniSectorSize: 1 << n,
|
|
109
|
+
miniStreamCutoff: e.getUint32(56, !0),
|
|
110
|
+
firstDirSector: e.getUint32(48, !0),
|
|
111
|
+
firstMiniFatSector: e.getUint32(60, !0),
|
|
112
|
+
firstDifatSector: e.getUint32(68, !0),
|
|
113
|
+
numDifatSectors: e.getUint32(72, !0)
|
|
114
|
+
} : null;
|
|
115
|
+
}
|
|
116
|
+
function C(e, t) {
|
|
117
|
+
return (e + 1) * t;
|
|
118
|
+
}
|
|
119
|
+
function w(e) {
|
|
120
|
+
return e >= 0 && e <= g;
|
|
121
|
+
}
|
|
122
|
+
function re(e, t, n) {
|
|
123
|
+
let { sectorSize: r } = n, i = [];
|
|
124
|
+
for (let t = 0; t < 109; t++) {
|
|
125
|
+
let n = e.getUint32(76 + t * 4, !0);
|
|
126
|
+
w(n) && i.push(n);
|
|
127
|
+
}
|
|
128
|
+
let a = r / 4 - 1, o = n.firstDifatSector, s = /* @__PURE__ */ new Set(), c = 0;
|
|
129
|
+
for (; w(o);) {
|
|
130
|
+
if (c++ > ne) return null;
|
|
131
|
+
if (s.has(o)) break;
|
|
132
|
+
s.add(o);
|
|
133
|
+
let n = C(o, r);
|
|
134
|
+
if (n < 0 || n + r > t) return null;
|
|
135
|
+
for (let t = 0; t < a; t++) {
|
|
136
|
+
let r = e.getUint32(n + t * 4, !0);
|
|
137
|
+
w(r) && i.push(r);
|
|
138
|
+
}
|
|
139
|
+
o = e.getUint32(n + a * 4, !0);
|
|
140
|
+
}
|
|
141
|
+
return i;
|
|
142
|
+
}
|
|
143
|
+
function T(e, t, n, r, i) {
|
|
144
|
+
let a = n / 4, o = Math.floor(i / a), s = i % a;
|
|
145
|
+
if (o >= r.length) return null;
|
|
146
|
+
let c = r[o];
|
|
147
|
+
if (!w(c)) return null;
|
|
148
|
+
let l = C(c, n) + s * 4;
|
|
149
|
+
return l < 0 || l + 4 > t ? null : e.getUint32(l, !0);
|
|
150
|
+
}
|
|
151
|
+
function E(e, t, n, r, i) {
|
|
152
|
+
let { sectorSize: a } = n, o = Math.floor(a / y);
|
|
153
|
+
if (o < 1) return null;
|
|
154
|
+
let s = null, c = null, l = /* @__PURE__ */ new Set(), u = n.firstDirSector, d = 0, f = 0;
|
|
155
|
+
for (; w(u);) {
|
|
156
|
+
if (d++ > b) return null;
|
|
157
|
+
if (l.has(u)) break;
|
|
158
|
+
l.add(u);
|
|
159
|
+
let n = C(u, a);
|
|
160
|
+
if (n < 0 || n + a > t) return null;
|
|
161
|
+
for (let t = 0; t < o; t++) {
|
|
162
|
+
if (f++ > te) return {
|
|
163
|
+
target: s,
|
|
164
|
+
root: c
|
|
165
|
+
};
|
|
166
|
+
let r = n + t * y, a = e.getUint8(r + 66);
|
|
167
|
+
if (a === 0) continue;
|
|
168
|
+
let o = e.getUint32(r + 116, !0), l = e.getUint32(r + 120, !0);
|
|
169
|
+
if (a === 5) {
|
|
170
|
+
c = {
|
|
171
|
+
startSector: o,
|
|
172
|
+
size: l
|
|
173
|
+
};
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
D(e, r) === i && (s = {
|
|
177
|
+
startSector: o,
|
|
178
|
+
size: l
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
let p = T(e, t, a, r, u);
|
|
182
|
+
if (p === null) break;
|
|
183
|
+
u = p;
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
target: s,
|
|
187
|
+
root: c
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
function D(e, t) {
|
|
191
|
+
let n = e.getUint16(t + 64, !0);
|
|
192
|
+
if (n < 2 || n > 64) return "";
|
|
193
|
+
let r = n / 2 - 1, i = "";
|
|
194
|
+
for (let n = 0; n < r; n++) {
|
|
195
|
+
let r = e.getUint16(t + n * 2, !0);
|
|
196
|
+
if (r === 0) break;
|
|
197
|
+
i += String.fromCharCode(r);
|
|
198
|
+
}
|
|
199
|
+
return i;
|
|
200
|
+
}
|
|
201
|
+
function O(e, t, n, r, i, a) {
|
|
202
|
+
let { sectorSize: o } = n, s = new Uint8Array(a), c = 0, l = i, u = /* @__PURE__ */ new Set(), d = 0;
|
|
203
|
+
for (; w(l) && c < a;) {
|
|
204
|
+
if (d++ > b || u.has(l)) return null;
|
|
205
|
+
u.add(l);
|
|
206
|
+
let n = C(l, o);
|
|
207
|
+
if (n < 0 || n + o > t) return null;
|
|
208
|
+
let i = Math.min(o, a - c);
|
|
209
|
+
s.set(new Uint8Array(e.buffer, e.byteOffset + n, i), c), c += i;
|
|
210
|
+
let f = T(e, t, o, r, l);
|
|
211
|
+
if (f === null) return null;
|
|
212
|
+
l = f;
|
|
213
|
+
}
|
|
214
|
+
return c === a ? s : null;
|
|
215
|
+
}
|
|
216
|
+
function ie(e, t, n, r, i, a) {
|
|
217
|
+
let { sectorSize: o, miniSectorSize: s } = n, c = O(e, t, n, r, i.startSector, i.size);
|
|
218
|
+
if (c === null) return null;
|
|
219
|
+
let l = new Uint8Array(a.size), u = 0, d = a.startSector, f = /* @__PURE__ */ new Set(), p = 0, m = o / 4;
|
|
220
|
+
for (; w(d) && u < a.size;) {
|
|
221
|
+
if (p++ > ee || f.has(d)) return null;
|
|
222
|
+
f.add(d);
|
|
223
|
+
let i = d * s;
|
|
224
|
+
if (i < 0 || i + s > c.length) return null;
|
|
225
|
+
let o = Math.min(s, a.size - u);
|
|
226
|
+
l.set(c.subarray(i, i + o), u), u += o;
|
|
227
|
+
let h = ae(e, t, n, r, m, d);
|
|
228
|
+
if (h === null) return null;
|
|
229
|
+
d = h;
|
|
230
|
+
}
|
|
231
|
+
return u === a.size ? l : null;
|
|
232
|
+
}
|
|
233
|
+
function ae(e, t, n, r, i, a) {
|
|
234
|
+
let { sectorSize: o } = n, s = Math.floor(a / i), c = a % i, l = n.firstMiniFatSector, u = /* @__PURE__ */ new Set();
|
|
235
|
+
for (let n = 0; n < s; n++) {
|
|
236
|
+
if (!w(l) || u.has(l)) return null;
|
|
237
|
+
u.add(l);
|
|
238
|
+
let n = T(e, t, o, r, l);
|
|
239
|
+
if (n === null) return null;
|
|
240
|
+
l = n;
|
|
241
|
+
}
|
|
242
|
+
if (!w(l)) return null;
|
|
243
|
+
let d = C(l, o) + c * 4;
|
|
244
|
+
if (d < 0 || d + 4 > t) return null;
|
|
245
|
+
let f = e.getUint32(d, !0);
|
|
246
|
+
return f === _ ? _ : f;
|
|
247
|
+
}
|
|
248
|
+
//#endregion
|
|
249
|
+
//#region packages/core/src/crypto/encryption-info.ts
|
|
250
|
+
function k(e) {
|
|
251
|
+
if (typeof atob == "function") {
|
|
252
|
+
let t = atob(e), n = new Uint8Array(t.length);
|
|
253
|
+
for (let e = 0; e < t.length; e++) n[e] = t.charCodeAt(e);
|
|
254
|
+
return n;
|
|
255
|
+
}
|
|
256
|
+
let t = globalThis.Buffer;
|
|
257
|
+
if (t) return new Uint8Array(t.from(e, "base64"));
|
|
258
|
+
throw Error("no base64 decoder available");
|
|
259
|
+
}
|
|
260
|
+
function A(e, t, n) {
|
|
261
|
+
let r = RegExp(`<(?:[\\w]+:)?${t}\\b[^>]*>`).exec(e);
|
|
262
|
+
if (!r) return null;
|
|
263
|
+
let i = r[0], a = RegExp(`\\b${n}\\s*=\\s*"([^"]*)"`).exec(i);
|
|
264
|
+
return a ? a[1] : null;
|
|
265
|
+
}
|
|
266
|
+
function j(e) {
|
|
267
|
+
if (e === null) return null;
|
|
268
|
+
let t = Number(e);
|
|
269
|
+
return Number.isFinite(t) ? t : null;
|
|
270
|
+
}
|
|
271
|
+
function M(e, t) {
|
|
272
|
+
let n = j(A(e, t, "saltSize")), r = j(A(e, t, "blockSize")), i = j(A(e, t, "keyBits")), a = j(A(e, t, "hashSize")), o = A(e, t, "cipherAlgorithm"), s = A(e, t, "cipherChaining"), c = A(e, t, "hashAlgorithm"), l = A(e, t, "saltValue");
|
|
273
|
+
return n === null || r === null || i === null || a === null || !o || !s || !c || l === null ? null : {
|
|
274
|
+
saltSize: n,
|
|
275
|
+
blockSize: r,
|
|
276
|
+
keyBits: i,
|
|
277
|
+
hashSize: a,
|
|
278
|
+
cipherAlgorithm: o,
|
|
279
|
+
cipherChaining: s,
|
|
280
|
+
hashAlgorithm: c,
|
|
281
|
+
saltValue: k(l)
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
function N(e) {
|
|
285
|
+
if (e.length < 8) return { kind: "unknown" };
|
|
286
|
+
let t = new DataView(e.buffer, e.byteOffset, e.byteLength), n = t.getUint16(0, !0), r = t.getUint16(2, !0);
|
|
287
|
+
if (n === 4 && r === 4) {
|
|
288
|
+
let t = P(e.subarray(8));
|
|
289
|
+
return t ? {
|
|
290
|
+
kind: "agile",
|
|
291
|
+
descriptor: t
|
|
292
|
+
} : { kind: "unknown" };
|
|
293
|
+
}
|
|
294
|
+
return r === 16 && (n === 3 || n === 4) ? { kind: "extensible" } : r === 2 && (n === 2 || n === 3 || n === 4) ? { kind: "standard" } : { kind: "unknown" };
|
|
295
|
+
}
|
|
296
|
+
function P(e) {
|
|
297
|
+
let t = new TextDecoder("utf-8").decode(e), n = M(t, "keyData"), r = M(t, "encryptedKey");
|
|
298
|
+
if (!n || !r) return null;
|
|
299
|
+
let i = j(A(t, "encryptedKey", "spinCount")), a = A(t, "encryptedKey", "encryptedVerifierHashInput"), o = A(t, "encryptedKey", "encryptedVerifierHashValue"), s = A(t, "encryptedKey", "encryptedKeyValue");
|
|
300
|
+
if (i === null || a === null || o === null || s === null) return null;
|
|
301
|
+
let c = {
|
|
302
|
+
...r,
|
|
303
|
+
spinCount: i,
|
|
304
|
+
encryptedVerifierHashInput: k(a),
|
|
305
|
+
encryptedVerifierHashValue: k(o),
|
|
306
|
+
encryptedKeyValue: k(s)
|
|
307
|
+
}, l = null, u = A(t, "dataIntegrity", "encryptedHmacKey"), d = A(t, "dataIntegrity", "encryptedHmacValue");
|
|
308
|
+
return u !== null && d !== null && (l = {
|
|
309
|
+
encryptedHmacKey: k(u),
|
|
310
|
+
encryptedHmacValue: k(d)
|
|
311
|
+
}), {
|
|
312
|
+
keyData: n,
|
|
313
|
+
passwordKeyEncryptor: c,
|
|
314
|
+
dataIntegrity: l
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
//#endregion
|
|
318
|
+
//#region packages/core/src/crypto/agile.ts
|
|
319
|
+
var F = {
|
|
320
|
+
verifierHashInput: new Uint8Array([
|
|
321
|
+
254,
|
|
322
|
+
167,
|
|
323
|
+
210,
|
|
324
|
+
118,
|
|
325
|
+
59,
|
|
326
|
+
75,
|
|
327
|
+
158,
|
|
328
|
+
121
|
|
329
|
+
]),
|
|
330
|
+
verifierHashValue: new Uint8Array([
|
|
331
|
+
215,
|
|
332
|
+
170,
|
|
333
|
+
15,
|
|
334
|
+
109,
|
|
335
|
+
48,
|
|
336
|
+
97,
|
|
337
|
+
52,
|
|
338
|
+
78
|
|
339
|
+
]),
|
|
340
|
+
keyValue: new Uint8Array([
|
|
341
|
+
20,
|
|
342
|
+
110,
|
|
343
|
+
11,
|
|
344
|
+
231,
|
|
345
|
+
171,
|
|
346
|
+
172,
|
|
347
|
+
208,
|
|
348
|
+
214
|
|
349
|
+
]),
|
|
350
|
+
hmacKey: new Uint8Array([
|
|
351
|
+
95,
|
|
352
|
+
178,
|
|
353
|
+
173,
|
|
354
|
+
1,
|
|
355
|
+
12,
|
|
356
|
+
185,
|
|
357
|
+
225,
|
|
358
|
+
246
|
|
359
|
+
]),
|
|
360
|
+
hmacValue: new Uint8Array([
|
|
361
|
+
160,
|
|
362
|
+
103,
|
|
363
|
+
127,
|
|
364
|
+
2,
|
|
365
|
+
178,
|
|
366
|
+
44,
|
|
367
|
+
132,
|
|
368
|
+
51
|
|
369
|
+
])
|
|
370
|
+
}, oe = 54, I = 4096, L = class extends Error {
|
|
371
|
+
reason;
|
|
372
|
+
constructor(e, t) {
|
|
373
|
+
super(t), this.name = "AgileDecryptError", this.reason = e;
|
|
374
|
+
}
|
|
375
|
+
};
|
|
376
|
+
function R() {
|
|
377
|
+
let e = globalThis.crypto;
|
|
378
|
+
if (!e || !e.subtle) throw new L("unsupported-encryption", "WebCrypto (globalThis.crypto.subtle) is unavailable; cannot decrypt.");
|
|
379
|
+
return e.subtle;
|
|
380
|
+
}
|
|
381
|
+
function z(e) {
|
|
382
|
+
switch (e.toUpperCase().replace(/[-_]/g, "")) {
|
|
383
|
+
case "SHA512": return "SHA-512";
|
|
384
|
+
case "SHA384": return "SHA-384";
|
|
385
|
+
case "SHA256": return "SHA-256";
|
|
386
|
+
case "SHA1": return "SHA-1";
|
|
387
|
+
default: throw new L("unsupported-encryption", `Unsupported hashAlgorithm "${e}" (only SHA-1/256/384/512).`);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
function B(e) {
|
|
391
|
+
if (e.cipherAlgorithm.toUpperCase() !== "AES") throw new L("unsupported-encryption", `Unsupported cipherAlgorithm "${e.cipherAlgorithm}" (only AES).`);
|
|
392
|
+
if (e.cipherChaining.toLowerCase() !== "chainingmodecbc") throw new L("unsupported-encryption", `Unsupported cipherChaining "${e.cipherChaining}" (only ChainingModeCBC).`);
|
|
393
|
+
if (e.keyBits !== 128 && e.keyBits !== 192 && e.keyBits !== 256) throw new L("unsupported-encryption", `Unsupported keyBits ${e.keyBits} (only 128/192/256).`);
|
|
394
|
+
}
|
|
395
|
+
function V(...e) {
|
|
396
|
+
let t = e.reduce((e, t) => e + t.length, 0), n = new Uint8Array(t), r = 0;
|
|
397
|
+
for (let t of e) n.set(t, r), r += t.length;
|
|
398
|
+
return n;
|
|
399
|
+
}
|
|
400
|
+
function H(e) {
|
|
401
|
+
let t = new Uint8Array(4);
|
|
402
|
+
return new DataView(t.buffer).setUint32(0, e >>> 0, !0), t;
|
|
403
|
+
}
|
|
404
|
+
function U(e) {
|
|
405
|
+
let t = new Uint8Array(e.length * 2), n = new DataView(t.buffer);
|
|
406
|
+
for (let t = 0; t < e.length; t++) n.setUint16(t * 2, e.charCodeAt(t), !0);
|
|
407
|
+
return t;
|
|
408
|
+
}
|
|
409
|
+
async function W(e, t) {
|
|
410
|
+
return new Uint8Array(await R().digest(e, t));
|
|
411
|
+
}
|
|
412
|
+
function G(e, t) {
|
|
413
|
+
if (e.length > t) return e.slice(0, t);
|
|
414
|
+
let n = new Uint8Array(t);
|
|
415
|
+
return n.set(e), e.length < t && n.fill(oe, e.length), n;
|
|
416
|
+
}
|
|
417
|
+
async function K(e, t, n, r) {
|
|
418
|
+
let i = z(t.hashAlgorithm), a = await W(i, V(t.saltValue, U(e)));
|
|
419
|
+
for (let e = 0; e < n; e++) a = await W(i, V(H(e), a));
|
|
420
|
+
return G(await W(i, V(a, r)), t.keyBits / 8);
|
|
421
|
+
}
|
|
422
|
+
async function q(e, t, n) {
|
|
423
|
+
return G(n ? await W(z(e.hashAlgorithm), V(t, n)) : t, e.blockSize);
|
|
424
|
+
}
|
|
425
|
+
async function J(e, t, n) {
|
|
426
|
+
let r = t.length;
|
|
427
|
+
if (n.length === 0) return new Uint8Array();
|
|
428
|
+
if (n.length % r !== 0) throw new L("corrupt", "ciphertext length is not a multiple of the block size");
|
|
429
|
+
let i = await R().importKey("raw", e, { name: "AES-CBC" }, !1, ["decrypt"]), a = await R().importKey("raw", e, { name: "AES-CBC" }, !1, ["encrypt"]), o = n.subarray(n.length - r), s = se(new Uint8Array(r).fill(r), o), c = V(n, new Uint8Array(await R().encrypt({
|
|
430
|
+
name: "AES-CBC",
|
|
431
|
+
iv: new Uint8Array(r)
|
|
432
|
+
}, a, s)).subarray(0, r)), l = new Uint8Array(await R().decrypt({
|
|
433
|
+
name: "AES-CBC",
|
|
434
|
+
iv: t
|
|
435
|
+
}, i, c));
|
|
436
|
+
return l.length >= n.length ? l.subarray(0, n.length) : l;
|
|
437
|
+
}
|
|
438
|
+
function se(e, t) {
|
|
439
|
+
let n = new Uint8Array(e.length);
|
|
440
|
+
for (let r = 0; r < e.length; r++) n[r] = e[r] ^ t[r];
|
|
441
|
+
return n;
|
|
442
|
+
}
|
|
443
|
+
async function ce(e, t) {
|
|
444
|
+
B(t);
|
|
445
|
+
let n = z(t.hashAlgorithm), r = await J(await K(e, t, t.spinCount, F.verifierHashInput), await q(t, t.saltValue, null), t.encryptedVerifierHashInput), i = await J(await K(e, t, t.spinCount, F.verifierHashValue), await q(t, t.saltValue, null), t.encryptedVerifierHashValue);
|
|
446
|
+
return le((await W(n, r)).subarray(0, t.hashSize), i.subarray(0, t.hashSize));
|
|
447
|
+
}
|
|
448
|
+
function le(e, t) {
|
|
449
|
+
if (e.length !== t.length) return !1;
|
|
450
|
+
let n = 0;
|
|
451
|
+
for (let r = 0; r < e.length; r++) n |= e[r] ^ t[r];
|
|
452
|
+
return n === 0;
|
|
453
|
+
}
|
|
454
|
+
async function ue(e, t) {
|
|
455
|
+
return await J(await K(e, t, t.spinCount, F.keyValue), await q(t, t.saltValue, null), t.encryptedKeyValue);
|
|
456
|
+
}
|
|
457
|
+
async function de(e, t, n) {
|
|
458
|
+
if (B(t), e.length < 8) throw new L("corrupt", "EncryptedPackage is shorter than its size prefix");
|
|
459
|
+
let r = new DataView(e.buffer, e.byteOffset, e.byteLength), i = Number(r.getBigUint64(0, !0)), a = e.subarray(8);
|
|
460
|
+
if (i > a.length) throw new L("corrupt", "EncryptedPackage size prefix exceeds the ciphertext");
|
|
461
|
+
let o = n.slice(0, t.keyBits / 8), s = new Uint8Array(i), c = 0, l = 0;
|
|
462
|
+
for (let e = 0; e < a.length; e += I) {
|
|
463
|
+
let n = a.subarray(e, e + I), r = await J(o, await q(t, t.saltValue, H(l)), n), u = Math.min(r.length, i - c);
|
|
464
|
+
if (s.set(r.subarray(0, u), c), c += u, l++, c >= i) break;
|
|
465
|
+
}
|
|
466
|
+
if (c !== i) throw new L("corrupt", "decrypted output is shorter than the declared size");
|
|
467
|
+
return s;
|
|
468
|
+
}
|
|
469
|
+
async function fe(e, t, n) {
|
|
470
|
+
let { keyData: r, passwordKeyEncryptor: i } = e;
|
|
471
|
+
if (B(r), B(i), !await ce(n, i)) throw new L("invalid-password", "The supplied password is incorrect.");
|
|
472
|
+
return de(t, r, await ue(n, i));
|
|
473
|
+
}
|
|
474
|
+
//#endregion
|
|
475
|
+
//#region packages/core/src/crypto/decrypt-ooxml.ts
|
|
476
|
+
var pe = "EncryptionInfo", me = "EncryptedPackage";
|
|
477
|
+
async function he(e, t) {
|
|
478
|
+
let n = x(e, pe), r = x(e, me);
|
|
479
|
+
if (n === null || r === null) return {
|
|
480
|
+
ok: !1,
|
|
481
|
+
reason: "corrupt"
|
|
482
|
+
};
|
|
483
|
+
let i = N(n);
|
|
484
|
+
if (i.kind !== "agile") return {
|
|
485
|
+
ok: !1,
|
|
486
|
+
reason: "unsupported-encryption"
|
|
487
|
+
};
|
|
488
|
+
try {
|
|
489
|
+
return {
|
|
490
|
+
ok: !0,
|
|
491
|
+
data: await fe(i.descriptor, r, t)
|
|
492
|
+
};
|
|
493
|
+
} catch (e) {
|
|
494
|
+
return e instanceof L ? {
|
|
495
|
+
ok: !1,
|
|
496
|
+
reason: e.reason
|
|
497
|
+
} : {
|
|
498
|
+
ok: !1,
|
|
499
|
+
reason: "corrupt"
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
//#endregion
|
|
504
|
+
//#region packages/core/src/errors/cfb-guard.ts
|
|
505
|
+
function ge(t) {
|
|
506
|
+
let n = l(t instanceof Uint8Array ? t : new Uint8Array(t));
|
|
507
|
+
if (n !== null) switch (n) {
|
|
508
|
+
case "encrypted": throw new e("encrypted", "This file is password-protected (MS-OFFCRYPTO). Pass LoadOptions.password to decrypt it.");
|
|
509
|
+
case "legacy-binary-format": throw new e("legacy-binary-format", "This is a legacy binary Office file (.doc/.xls/.ppt), not OOXML.");
|
|
510
|
+
case "cfb-unknown": throw new e("not-ooxml", "This file is an OLE2/Compound File container, not an OOXML (ZIP) document.");
|
|
511
|
+
default: throw new e("not-ooxml", "This file is an OLE2/Compound File container of an unrecognised kind, not an OOXML (ZIP) document.");
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
async function _e(t, n) {
|
|
515
|
+
let r = t instanceof Uint8Array ? t : new Uint8Array(t), i = l(r);
|
|
516
|
+
if (i === null) return r;
|
|
517
|
+
if (i === "encrypted") {
|
|
518
|
+
if (n === void 0) throw new e("encrypted", "This file is password-protected (MS-OFFCRYPTO). Pass LoadOptions.password to decrypt it.");
|
|
519
|
+
let t = await he(r, n);
|
|
520
|
+
if (t.ok) return t.data;
|
|
521
|
+
switch (t.reason) {
|
|
522
|
+
case "invalid-password": throw new e("invalid-password", "The supplied password is incorrect.");
|
|
523
|
+
case "unsupported-encryption": throw new e("unsupported-encryption", "This file uses an encryption scheme other than Agile ([MS-OFFCRYPTO]) that is not supported (Standard / Extensible / legacy binary encryption).");
|
|
524
|
+
case "corrupt": throw new e("not-ooxml", "This file is an encrypted OLE2/Compound File container but its structure could not be read.");
|
|
525
|
+
default: throw t.reason, new e("not-ooxml", "This encrypted file could not be decrypted.");
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
return ge(r), r;
|
|
529
|
+
}
|
|
530
|
+
function ve(e) {
|
|
531
|
+
return e.byteOffset === 0 && e.byteLength === e.buffer.byteLength && e.buffer instanceof ArrayBuffer ? e.buffer : e.slice().buffer;
|
|
532
|
+
}
|
|
533
|
+
//#endregion
|
|
534
|
+
//#region packages/core/src/autoResize.ts
|
|
535
|
+
function ye(e, t, n = {}) {
|
|
536
|
+
let r = n.pauseWhenHidden ?? !0, i = null, a = 0, o = 0, s = null, c = !1, l = !1, u = () => {
|
|
537
|
+
if (!l && !(r && typeof document < "u" && document.hidden)) {
|
|
538
|
+
if (s) {
|
|
539
|
+
c = !0;
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
i === null && (i = requestAnimationFrame(d));
|
|
543
|
+
}
|
|
544
|
+
}, d = async () => {
|
|
545
|
+
if (i = null, l) return;
|
|
546
|
+
let t = a, n = o;
|
|
547
|
+
try {
|
|
548
|
+
let r = e(t, n);
|
|
549
|
+
s = r instanceof Promise ? r : Promise.resolve(), await s;
|
|
550
|
+
} catch (e) {
|
|
551
|
+
console.error("[autoResize] render failed:", e);
|
|
552
|
+
} finally {
|
|
553
|
+
s = null, c && !l && (c = !1, u());
|
|
554
|
+
}
|
|
555
|
+
}, f = new ResizeObserver((e) => {
|
|
556
|
+
for (let t of e) {
|
|
557
|
+
let e = t.contentRect;
|
|
558
|
+
a = e.width, o = e.height;
|
|
559
|
+
}
|
|
560
|
+
u();
|
|
561
|
+
});
|
|
562
|
+
f.observe(t);
|
|
563
|
+
let p = () => {
|
|
564
|
+
typeof document < "u" && !document.hidden && u();
|
|
565
|
+
};
|
|
566
|
+
return r && typeof document < "u" && document.addEventListener("visibilitychange", p), () => {
|
|
567
|
+
l = !0, f.disconnect(), i !== null && (cancelAnimationFrame(i), i = null), r && typeof document < "u" && document.removeEventListener("visibilitychange", p);
|
|
568
|
+
};
|
|
569
|
+
}
|
|
570
|
+
//#endregion
|
|
571
|
+
//#region packages/core/src/worker/bridge.ts
|
|
572
|
+
function Y() {
|
|
573
|
+
let e = /* @__PURE__ */ Error("worker request aborted");
|
|
574
|
+
return e.name = "AbortError", e;
|
|
575
|
+
}
|
|
576
|
+
var be = class {
|
|
577
|
+
_worker;
|
|
578
|
+
_opts;
|
|
579
|
+
_pending = /* @__PURE__ */ new Map();
|
|
580
|
+
_orphaned = /* @__PURE__ */ new Map();
|
|
581
|
+
_nextId = 1;
|
|
582
|
+
_terminated = !1;
|
|
583
|
+
_failure;
|
|
584
|
+
constructor(e, t) {
|
|
585
|
+
this._worker = e, this._opts = t, this._worker.addEventListener("message", this._handle), this._worker.addEventListener("messageerror", this._handleWorkerError), this._worker.addEventListener("error", this._handleWorkerError);
|
|
586
|
+
}
|
|
587
|
+
_handle = (e) => {
|
|
588
|
+
let t = e.data, n = this._opts.correlate(t);
|
|
589
|
+
if (n === void 0) {
|
|
590
|
+
this._opts.onUnsolicited?.(t);
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
let r = this._pending.get(n);
|
|
594
|
+
if (!r) {
|
|
595
|
+
try {
|
|
596
|
+
let e = this._orphaned.get(n);
|
|
597
|
+
e ? (this._orphaned.delete(n), e(t)) : this._opts.onOrphanedResponse?.(t);
|
|
598
|
+
} catch {}
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
this._pending.delete(n), r.cleanup();
|
|
602
|
+
let i = this._opts.toError?.(t);
|
|
603
|
+
i === void 0 ? r.resolve(t) : r.reject(i instanceof Error ? i : Error(i));
|
|
604
|
+
};
|
|
605
|
+
_handleWorkerError = (e) => {
|
|
606
|
+
let t = "message" in e && e.message ? `: ${e.message}` : "";
|
|
607
|
+
this._failure ??= /* @__PURE__ */ Error(`Worker error${t}`), this._rejectAll(this._failure);
|
|
608
|
+
};
|
|
609
|
+
_rejectAll(e) {
|
|
610
|
+
let t = [...this._pending.values()];
|
|
611
|
+
this._pending.clear();
|
|
612
|
+
for (let n of t) n.cleanup(), n.reject(e);
|
|
613
|
+
}
|
|
614
|
+
nextId() {
|
|
615
|
+
return this._nextId++;
|
|
616
|
+
}
|
|
617
|
+
request(e, t, n) {
|
|
618
|
+
let r = this._nextId++, i = n?.timeoutMs === !1 ? void 0 : n?.timeoutMs ?? this._opts.timeoutMs, a = n?.signal, o = (e) => {
|
|
619
|
+
try {
|
|
620
|
+
n?.onCancel?.(r, e);
|
|
621
|
+
} catch {}
|
|
622
|
+
};
|
|
623
|
+
return new Promise((s, c) => {
|
|
624
|
+
if (this._terminated) {
|
|
625
|
+
c(/* @__PURE__ */ Error("Worker terminated"));
|
|
626
|
+
return;
|
|
627
|
+
}
|
|
628
|
+
if (this._failure) {
|
|
629
|
+
c(this._failure);
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
632
|
+
if (a?.aborted) {
|
|
633
|
+
o("abort"), c(Y());
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
636
|
+
let l, u;
|
|
637
|
+
this._pending.set(r, {
|
|
638
|
+
resolve: s,
|
|
639
|
+
reject: c,
|
|
640
|
+
cleanup: () => {
|
|
641
|
+
l !== void 0 && (clearTimeout(l), l = void 0), u && a && (a.removeEventListener("abort", u), u = void 0);
|
|
642
|
+
},
|
|
643
|
+
onOrphanedResponse: n?.onOrphanedResponse
|
|
644
|
+
}), i !== void 0 && (l = setTimeout(() => {
|
|
645
|
+
let e = this._pending.get(r);
|
|
646
|
+
e && (this._pending.delete(r), e.onOrphanedResponse && this._orphaned.set(r, e.onOrphanedResponse), e.cleanup(), o("timeout"), e.reject(/* @__PURE__ */ Error(`worker request timed out after ${i}ms`)));
|
|
647
|
+
}, i)), a && (u = () => {
|
|
648
|
+
let e = this._pending.get(r);
|
|
649
|
+
e && (this._pending.delete(r), e.onOrphanedResponse && this._orphaned.set(r, e.onOrphanedResponse), e.cleanup(), o("abort"), e.reject(Y()));
|
|
650
|
+
}, a.addEventListener("abort", u));
|
|
651
|
+
try {
|
|
652
|
+
this._worker.postMessage(e(r), t);
|
|
653
|
+
} catch (e) {
|
|
654
|
+
let t = this._pending.get(r);
|
|
655
|
+
if (!t) return;
|
|
656
|
+
this._pending.delete(r), t.cleanup(), t.reject(e instanceof Error ? e : Error(String(e)));
|
|
657
|
+
}
|
|
658
|
+
});
|
|
659
|
+
}
|
|
660
|
+
transport(e) {
|
|
661
|
+
return {
|
|
662
|
+
request: (t, n, r) => this.request(t, n, {
|
|
663
|
+
...r,
|
|
664
|
+
onOrphanedResponse: r?.onOrphanedResponse ? (t) => {
|
|
665
|
+
e(t) && r.onOrphanedResponse?.(t);
|
|
666
|
+
} : void 0
|
|
667
|
+
}).then((t) => {
|
|
668
|
+
if (!e(t)) throw Error("worker response does not match the selected transport");
|
|
669
|
+
return t;
|
|
670
|
+
}),
|
|
671
|
+
forgetOrphaned: (e) => this.forgetOrphaned(e),
|
|
672
|
+
terminate: () => this.terminate()
|
|
673
|
+
};
|
|
674
|
+
}
|
|
675
|
+
post(e, t) {
|
|
676
|
+
this._worker.postMessage(e, t);
|
|
677
|
+
}
|
|
678
|
+
forgetOrphaned(e) {
|
|
679
|
+
for (let t of e) this._orphaned.delete(t);
|
|
680
|
+
}
|
|
681
|
+
get orphanedRequestCount() {
|
|
682
|
+
return this._orphaned.size;
|
|
683
|
+
}
|
|
684
|
+
terminate() {
|
|
685
|
+
this._terminated || (this._terminated = !0, this._worker.removeEventListener("message", this._handle), this._worker.removeEventListener("messageerror", this._handleWorkerError), this._worker.removeEventListener("error", this._handleWorkerError), this._worker.terminate(), this._rejectAll(/* @__PURE__ */ Error("Worker terminated")), this._orphaned.clear());
|
|
686
|
+
}
|
|
687
|
+
};
|
|
688
|
+
//#endregion
|
|
689
|
+
//#region packages/core/src/worker/rejected-load.ts
|
|
690
|
+
function xe(e, t) {
|
|
691
|
+
if (t) try {
|
|
692
|
+
t();
|
|
693
|
+
return;
|
|
694
|
+
} catch {}
|
|
695
|
+
try {
|
|
696
|
+
e.terminate();
|
|
697
|
+
} catch {}
|
|
698
|
+
}
|
|
699
|
+
//#endregion
|
|
700
|
+
//#region packages/core/src/interaction/zoom.ts
|
|
701
|
+
var Se = .01;
|
|
702
|
+
function Ce(e, t) {
|
|
703
|
+
return e * Math.exp(-t * Se);
|
|
704
|
+
}
|
|
705
|
+
function we(e, t, n, r, i) {
|
|
706
|
+
let a = n > 0 ? r / n : 1, o = (e + t) * a - t, s = i.maxScroll > 0 ? i.maxScroll : 0;
|
|
707
|
+
return o < 0 ? 0 : o > s ? s : o;
|
|
708
|
+
}
|
|
709
|
+
//#endregion
|
|
710
|
+
//#region packages/core/src/interaction/zoomable.ts
|
|
711
|
+
var X = Object.freeze([
|
|
712
|
+
.25,
|
|
713
|
+
.33,
|
|
714
|
+
.5,
|
|
715
|
+
.67,
|
|
716
|
+
.75,
|
|
717
|
+
.9,
|
|
718
|
+
1,
|
|
719
|
+
1.1,
|
|
720
|
+
1.25,
|
|
721
|
+
1.5,
|
|
722
|
+
1.75,
|
|
723
|
+
2,
|
|
724
|
+
2.5,
|
|
725
|
+
3,
|
|
726
|
+
4
|
|
727
|
+
]), Z = .005;
|
|
728
|
+
function Te(e) {
|
|
729
|
+
for (let t of X) if (t > e + Z) return t;
|
|
730
|
+
return X[X.length - 1];
|
|
731
|
+
}
|
|
732
|
+
function Ee(e) {
|
|
733
|
+
for (let t = X.length - 1; t >= 0; t--) {
|
|
734
|
+
let n = X[t];
|
|
735
|
+
if (n < e - Z) return n;
|
|
736
|
+
}
|
|
737
|
+
return X[0];
|
|
738
|
+
}
|
|
739
|
+
function De(e, t, n) {
|
|
740
|
+
return e < t ? t : e > n ? n : e;
|
|
741
|
+
}
|
|
742
|
+
function Oe(e, t) {
|
|
743
|
+
let { contentWidth: n, contentHeight: r, containerWidth: i, containerHeight: a } = e;
|
|
744
|
+
if (n <= 0 || i <= 0) return 0;
|
|
745
|
+
let o = i / n;
|
|
746
|
+
if (t === "width") return o;
|
|
747
|
+
if (r <= 0 || a <= 0) return 0;
|
|
748
|
+
let s = a / r;
|
|
749
|
+
return Math.min(o, s);
|
|
750
|
+
}
|
|
751
|
+
//#endregion
|
|
752
|
+
//#region packages/core/src/search/text-index.ts
|
|
753
|
+
function Q(e) {
|
|
754
|
+
let t = e.toLowerCase();
|
|
755
|
+
if (t.length === e.length) return t;
|
|
756
|
+
let n = "";
|
|
757
|
+
for (let t of e) {
|
|
758
|
+
let e = t.toLowerCase();
|
|
759
|
+
n += e.length === t.length ? e : t;
|
|
760
|
+
}
|
|
761
|
+
return n;
|
|
762
|
+
}
|
|
763
|
+
function ke(e) {
|
|
764
|
+
let t = Array(e.length), n = 0, r = "";
|
|
765
|
+
for (let i = 0; i < e.length; i++) t[i] = n, r += e[i].text, n += e[i].text.length;
|
|
766
|
+
return {
|
|
767
|
+
text: r,
|
|
768
|
+
folded: Q(r),
|
|
769
|
+
runStart: t,
|
|
770
|
+
runCount: e.length
|
|
771
|
+
};
|
|
772
|
+
}
|
|
773
|
+
function $(e, t) {
|
|
774
|
+
let { runStart: n } = e, r = 0, i = n.length - 1;
|
|
775
|
+
for (; r < i;) {
|
|
776
|
+
let e = r + i + 1 >> 1;
|
|
777
|
+
n[e] <= t ? r = e : i = e - 1;
|
|
778
|
+
}
|
|
779
|
+
return r;
|
|
780
|
+
}
|
|
781
|
+
function Ae(e, t, n) {
|
|
782
|
+
let { runStart: r, runCount: i, text: a } = e, o = [], s = $(e, t), c = t;
|
|
783
|
+
for (; c < n && s < i;) {
|
|
784
|
+
let e = s + 1 < i ? r[s + 1] : a.length, t = Math.min(n, e), l = c - r[s], u = t - r[s];
|
|
785
|
+
u > l && o.push({
|
|
786
|
+
runIndex: s,
|
|
787
|
+
start: l,
|
|
788
|
+
end: u
|
|
789
|
+
}), c = t, s++;
|
|
790
|
+
}
|
|
791
|
+
return o;
|
|
792
|
+
}
|
|
793
|
+
function je(e, t, n = {}) {
|
|
794
|
+
if (t.length === 0) return [];
|
|
795
|
+
let r = n.caseSensitive ?? !1, i = r ? e.text : e.folded, a = r ? t : Q(t), o = [], s = 0, c = 0;
|
|
796
|
+
for (;;) {
|
|
797
|
+
let t = i.indexOf(a, s);
|
|
798
|
+
if (t === -1) break;
|
|
799
|
+
o.push({
|
|
800
|
+
matchIndex: c,
|
|
801
|
+
slices: Ae(e, t, t + a.length)
|
|
802
|
+
}), c++, s = t + a.length;
|
|
803
|
+
}
|
|
804
|
+
return o;
|
|
805
|
+
}
|
|
806
|
+
//#endregion
|
|
807
|
+
//#region packages/core/src/search/find-cursor.ts
|
|
808
|
+
function Me(e, t) {
|
|
809
|
+
return t <= 0 ? -1 : e < 0 ? 0 : (e + 1) % t;
|
|
810
|
+
}
|
|
811
|
+
function Ne(e, t) {
|
|
812
|
+
return t <= 0 ? -1 : e < 0 ? t - 1 : (e - 1 + t) % t;
|
|
813
|
+
}
|
|
814
|
+
//#endregion
|
|
815
|
+
export { De as a, Ee as c, xe as d, be as f, ve as h, je as i, we as l, _e as m, Ne as n, Oe as o, ye as p, ke as r, Te as s, Me as t, Ce as u };
|