@acrolinx/sidebar-sdk 2.0.1 → 2.0.3
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 +1 -1
- package/dist/index.d.ts +361 -23
- package/dist/index.js +1118 -923
- package/package.json +14 -14
package/dist/index.js
CHANGED
|
@@ -1,41 +1,48 @@
|
|
|
1
|
-
function
|
|
1
|
+
function St(t) {
|
|
2
2
|
return t.isAsync;
|
|
3
3
|
}
|
|
4
|
-
function
|
|
4
|
+
function Je(t) {
|
|
5
5
|
return !!t.error;
|
|
6
6
|
}
|
|
7
|
-
function
|
|
7
|
+
function Ur(t) {
|
|
8
|
+
return typeof t.content == "string";
|
|
9
|
+
}
|
|
10
|
+
function xt(t) {
|
|
8
11
|
return !!t.editorId;
|
|
9
12
|
}
|
|
10
|
-
function
|
|
13
|
+
function Dt(t) {
|
|
11
14
|
return !!t.element;
|
|
12
15
|
}
|
|
13
16
|
function ee(t) {
|
|
14
|
-
if (
|
|
17
|
+
if (Dt(t))
|
|
15
18
|
return t.element;
|
|
16
|
-
if (
|
|
19
|
+
if (xt(t))
|
|
17
20
|
return document.getElementById(t.editorId);
|
|
18
21
|
throw console.error("Invalid AdapterConf. Missing editorId or element", t), new Error("Invalid AdapterConf. Missing editorId or element");
|
|
19
22
|
}
|
|
20
|
-
const
|
|
23
|
+
const Rt = [
|
|
21
24
|
{
|
|
22
25
|
id: "com.acrolinx.sidebarexample",
|
|
23
26
|
name: "Acrolinx Sidebar Example Client",
|
|
24
27
|
version: "1.2.3.999",
|
|
25
28
|
category: "MAIN"
|
|
26
29
|
}
|
|
27
|
-
],
|
|
30
|
+
], Ft = {
|
|
28
31
|
id: "com.acrolinx.sidebar-sdk-js",
|
|
29
32
|
name: "Sidebar SDK JS",
|
|
30
|
-
version: "2.0.
|
|
33
|
+
version: "2.0.3"
|
|
31
34
|
};
|
|
32
|
-
|
|
35
|
+
function zr(t, e) {
|
|
36
|
+
const n = Date.now(), o = e();
|
|
37
|
+
return console.log(`Duration of "${t}:"`, Date.now() - n), o;
|
|
38
|
+
}
|
|
39
|
+
async function Oe(t) {
|
|
33
40
|
const e = await fetch(t);
|
|
34
41
|
if (e.status >= 200 && e.status < 400)
|
|
35
42
|
return e.text();
|
|
36
43
|
throw new Error(`Error while loading ${t}.`);
|
|
37
44
|
}
|
|
38
|
-
function
|
|
45
|
+
function Zt(t) {
|
|
39
46
|
return t.nodeName === "IFRAME";
|
|
40
47
|
}
|
|
41
48
|
function X(t) {
|
|
@@ -43,35 +50,35 @@ function X(t) {
|
|
|
43
50
|
startNode: e,
|
|
44
51
|
endNode: n,
|
|
45
52
|
eventType: o,
|
|
46
|
-
startOffset:
|
|
53
|
+
startOffset: A,
|
|
47
54
|
endOffset: r,
|
|
48
55
|
replacement: i,
|
|
49
|
-
disableSimulation:
|
|
56
|
+
disableSimulation: s
|
|
50
57
|
} = t;
|
|
51
|
-
if (
|
|
58
|
+
if (s)
|
|
52
59
|
return;
|
|
53
|
-
const
|
|
60
|
+
const a = new StaticRange({
|
|
54
61
|
startContainer: e,
|
|
55
|
-
startOffset:
|
|
62
|
+
startOffset: A,
|
|
56
63
|
endContainer: n,
|
|
57
64
|
endOffset: r
|
|
58
|
-
}),
|
|
65
|
+
}), c = {
|
|
59
66
|
inputType: "insertText",
|
|
60
67
|
data: i,
|
|
61
68
|
bubbles: !0,
|
|
62
69
|
cancelable: !1,
|
|
63
|
-
targetRanges: [
|
|
70
|
+
targetRanges: [a]
|
|
64
71
|
};
|
|
65
|
-
e.dispatchEvent(new InputEvent(o,
|
|
72
|
+
e.dispatchEvent(new InputEvent(o, c));
|
|
66
73
|
}
|
|
67
|
-
function
|
|
74
|
+
function Mt(t) {
|
|
68
75
|
const e = document.createElement("a");
|
|
69
76
|
e.href = t, e.host === "" && (e.href = e.href);
|
|
70
|
-
const { protocol: n, host: o, hostname:
|
|
71
|
-
return { protocol: n, host: o, hostname:
|
|
77
|
+
const { protocol: n, host: o, hostname: A, port: r, pathname: i, hash: s } = e;
|
|
78
|
+
return { protocol: n, host: o, hostname: A, port: r, pathname: i, hash: s };
|
|
72
79
|
}
|
|
73
|
-
function
|
|
74
|
-
const { protocol: e, host: n } =
|
|
80
|
+
function Wt(t) {
|
|
81
|
+
const { protocol: e, host: n } = Mt(t);
|
|
75
82
|
return location.protocol === e && location.host === n;
|
|
76
83
|
}
|
|
77
84
|
function fe(t) {
|
|
@@ -80,34 +87,37 @@ function fe(t) {
|
|
|
80
87
|
function te(t, e) {
|
|
81
88
|
return Object.assign({}, t, e);
|
|
82
89
|
}
|
|
83
|
-
function
|
|
90
|
+
function je(t) {
|
|
84
91
|
Object.freeze(t);
|
|
85
92
|
const e = typeof t == "function", n = Object.prototype.hasOwnProperty;
|
|
86
93
|
Object.getOwnPropertyNames(t).forEach(function(o) {
|
|
87
|
-
n.call(t, o) && (!e || o !== "caller" && o !== "callee" && o !== "arguments") && t[o] !== null && (typeof t[o] == "object" || typeof t[o] == "function") && !Object.isFrozen(t[o]) &&
|
|
94
|
+
n.call(t, o) && (!e || o !== "caller" && o !== "callee" && o !== "arguments") && t[o] !== null && (typeof t[o] == "object" || typeof t[o] == "function") && !Object.isFrozen(t[o]) && je(t[o]);
|
|
88
95
|
});
|
|
89
96
|
}
|
|
90
|
-
function
|
|
97
|
+
function Ht(t) {
|
|
91
98
|
const e = structuredClone(t);
|
|
92
|
-
return
|
|
99
|
+
return je(e), e;
|
|
93
100
|
}
|
|
94
|
-
function
|
|
101
|
+
function Ue(t) {
|
|
95
102
|
if (!t.parentNode)
|
|
96
103
|
return !1;
|
|
97
104
|
const e = t.getBoundingClientRect();
|
|
98
105
|
return !!e.width && !!e.height;
|
|
99
106
|
}
|
|
100
107
|
function V(t) {
|
|
101
|
-
if (!
|
|
108
|
+
if (!Ue(t))
|
|
102
109
|
throw Error("Adapter element is not displayed.");
|
|
103
110
|
}
|
|
111
|
+
function Vr(t) {
|
|
112
|
+
return /\S/.test(t);
|
|
113
|
+
}
|
|
104
114
|
function z(t) {
|
|
105
115
|
t.parentNode.removeChild(t);
|
|
106
116
|
}
|
|
107
|
-
function
|
|
117
|
+
function De(t) {
|
|
108
118
|
return t && typeof t.then == "function";
|
|
109
119
|
}
|
|
110
|
-
class
|
|
120
|
+
class Qt {
|
|
111
121
|
resolve;
|
|
112
122
|
reject;
|
|
113
123
|
promise;
|
|
@@ -117,7 +127,7 @@ class Rt {
|
|
|
117
127
|
});
|
|
118
128
|
}
|
|
119
129
|
}
|
|
120
|
-
function
|
|
130
|
+
function ze(t) {
|
|
121
131
|
return new Promise((e) => setTimeout(e, t));
|
|
122
132
|
}
|
|
123
133
|
function ce(t) {
|
|
@@ -137,20 +147,20 @@ function ce(t) {
|
|
|
137
147
|
return n;
|
|
138
148
|
}
|
|
139
149
|
}
|
|
140
|
-
function
|
|
150
|
+
function Kt(t) {
|
|
141
151
|
return JSON.parse(JSON.stringify(t));
|
|
142
152
|
}
|
|
143
|
-
function
|
|
144
|
-
const o = { command: e, args:
|
|
153
|
+
function Nt(t, e, ...n) {
|
|
154
|
+
const o = { command: e, args: Kt(n) };
|
|
145
155
|
t.postMessage(o, "*");
|
|
146
156
|
}
|
|
147
|
-
function
|
|
157
|
+
function Ve(t, e) {
|
|
148
158
|
for (const n in e) {
|
|
149
159
|
const o = e[n];
|
|
150
|
-
e[n] = (...
|
|
160
|
+
e[n] = (...A) => (Nt(t(), n, ...A), o.apply(e, A));
|
|
151
161
|
}
|
|
152
162
|
}
|
|
153
|
-
function
|
|
163
|
+
function Pt(t, e) {
|
|
154
164
|
const n = {
|
|
155
165
|
init: () => {
|
|
156
166
|
},
|
|
@@ -166,19 +176,19 @@ function Wt(t, e) {
|
|
|
166
176
|
showMessage: () => {
|
|
167
177
|
}
|
|
168
178
|
};
|
|
169
|
-
|
|
170
|
-
function o(
|
|
171
|
-
if (
|
|
179
|
+
Ve(() => e.contentWindow, n);
|
|
180
|
+
function o(A) {
|
|
181
|
+
if (A.source !== e.contentWindow)
|
|
172
182
|
return;
|
|
173
|
-
const r =
|
|
174
|
-
t[i] && (i === "requestInit" ? t.requestInit(n) : t[i].apply(t,
|
|
183
|
+
const r = A.data, { command: i, args: s } = r;
|
|
184
|
+
t[i] && (i === "requestInit" ? t.requestInit(n) : t[i].apply(t, s));
|
|
175
185
|
}
|
|
176
186
|
addEventListener("message", o, !1);
|
|
177
187
|
}
|
|
178
|
-
function
|
|
188
|
+
function Gt(t = window) {
|
|
179
189
|
function e(o) {
|
|
180
|
-
const
|
|
181
|
-
|
|
190
|
+
const A = o.data, { command: r, args: i } = A, s = t.acrolinxSidebar;
|
|
191
|
+
s[r] && s[r].apply(s, i);
|
|
182
192
|
}
|
|
183
193
|
t.addEventListener("message", e, !1);
|
|
184
194
|
const n = {
|
|
@@ -201,11 +211,11 @@ function Ht(t = window) {
|
|
|
201
211
|
log: () => {
|
|
202
212
|
}
|
|
203
213
|
};
|
|
204
|
-
return
|
|
214
|
+
return Ve(() => t.parent, n), n;
|
|
205
215
|
}
|
|
206
|
-
var re = {},
|
|
207
|
-
function
|
|
208
|
-
return
|
|
216
|
+
var re = {}, Re;
|
|
217
|
+
function Tt() {
|
|
218
|
+
return Re || (Re = 1, re.ACROLINX_STARTPAGE_INLINED_HTML = `<!doctype html>
|
|
209
219
|
<html lang="en">
|
|
210
220
|
<head>
|
|
211
221
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
@@ -299,8 +309,8 @@ function Qt() {
|
|
|
299
309
|
</html>
|
|
300
310
|
`), re;
|
|
301
311
|
}
|
|
302
|
-
var
|
|
303
|
-
class
|
|
312
|
+
var Yt = Tt();
|
|
313
|
+
class Xe extends Error {
|
|
304
314
|
constructor(e, n, o) {
|
|
305
315
|
super(e), this.message = e, this.configuredSidebarURL = n, this.htmlLoaded = o, this.configuredSidebarURL = n, this.htmlLoaded = o, this.details = e + `
|
|
306
316
|
Configured SidebarURL:` + n + `
|
|
@@ -308,84 +318,84 @@ Configured SidebarURL:` + n + `
|
|
|
308
318
|
}
|
|
309
319
|
details;
|
|
310
320
|
}
|
|
311
|
-
function
|
|
321
|
+
function Lt(t) {
|
|
312
322
|
const e = document.createElement("link");
|
|
313
323
|
return e.rel = "stylesheet", e.href = t, e;
|
|
314
324
|
}
|
|
315
|
-
function
|
|
325
|
+
function Jt(t) {
|
|
316
326
|
const e = document.createElement("script");
|
|
317
327
|
return e.src = t, e.type = "text/javascript", e.async = !1, e.defer = !1, e;
|
|
318
328
|
}
|
|
319
|
-
function
|
|
329
|
+
function qe(t) {
|
|
320
330
|
const e = Date.now();
|
|
321
331
|
return t + "index.html?t=" + e;
|
|
322
332
|
}
|
|
323
|
-
async function
|
|
324
|
-
const e =
|
|
333
|
+
async function Ot(t) {
|
|
334
|
+
const e = qe(t), n = await Oe(e);
|
|
325
335
|
if (n.indexOf('<meta name="sidebar-version"') < 0)
|
|
326
336
|
try {
|
|
327
|
-
throw new
|
|
337
|
+
throw new Xe(
|
|
328
338
|
"It looks like the sidebar URL was configured wrongly.",
|
|
329
339
|
t,
|
|
330
340
|
n
|
|
331
341
|
);
|
|
332
|
-
} catch (
|
|
333
|
-
console.log(
|
|
342
|
+
} catch (a) {
|
|
343
|
+
console.log(a);
|
|
334
344
|
return;
|
|
335
345
|
}
|
|
336
|
-
const o = n.replace(/<!--[\s\S]*?-->/g, ""),
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
}),
|
|
340
|
-
|
|
346
|
+
const o = n.replace(/<!--[\s\S]*?-->/g, ""), A = document.querySelector("head"), r = (a) => jt(a, t);
|
|
347
|
+
Fe(o, "href").map(r).forEach((a) => {
|
|
348
|
+
A.appendChild(Lt(a));
|
|
349
|
+
}), Fe(o, "src").map(r).forEach((a) => {
|
|
350
|
+
A.appendChild(Jt(a));
|
|
341
351
|
});
|
|
342
352
|
}
|
|
343
|
-
function
|
|
353
|
+
function Fe(t, e) {
|
|
344
354
|
const n = new RegExp(`${e}="(.*?)"`, "g");
|
|
345
355
|
let o;
|
|
346
|
-
const
|
|
356
|
+
const A = [];
|
|
347
357
|
for (; (o = n.exec(t)) !== null; )
|
|
348
|
-
|
|
349
|
-
return
|
|
358
|
+
A.push(o[1]);
|
|
359
|
+
return A;
|
|
350
360
|
}
|
|
351
|
-
function
|
|
361
|
+
function jt(t, e) {
|
|
352
362
|
return t.match(/^https?:/) ? t : e + t;
|
|
353
363
|
}
|
|
354
|
-
async function
|
|
364
|
+
async function Ze(t, e, n) {
|
|
355
365
|
if (t.sidebarHtml || !t.sidebarUrl) {
|
|
356
|
-
q(t.sidebarHtml ||
|
|
366
|
+
q(t.sidebarHtml || Yt.ACROLINX_STARTPAGE_INLINED_HTML, e), n();
|
|
357
367
|
return;
|
|
358
368
|
}
|
|
359
|
-
const o = t.sidebarUrl,
|
|
360
|
-
if (t.useMessageAdapter || t.useSidebarFromSameOriginDirectly &&
|
|
361
|
-
e.addEventListener("load", n), e.src =
|
|
369
|
+
const o = t.sidebarUrl, A = qe(o);
|
|
370
|
+
if (t.useMessageAdapter || t.useSidebarFromSameOriginDirectly && Wt(o))
|
|
371
|
+
e.addEventListener("load", n), e.src = A;
|
|
362
372
|
else {
|
|
363
|
-
const r = await
|
|
373
|
+
const r = await Oe(A);
|
|
364
374
|
if (r.indexOf('<meta name="sidebar-version"') < 0)
|
|
365
375
|
try {
|
|
366
|
-
throw new
|
|
376
|
+
throw new Xe(
|
|
367
377
|
"It looks like the sidebar URL was configured wrongly. Check developer console for more information!",
|
|
368
|
-
|
|
378
|
+
A,
|
|
369
379
|
r
|
|
370
380
|
);
|
|
371
|
-
} catch (
|
|
372
|
-
|
|
381
|
+
} catch (s) {
|
|
382
|
+
s instanceof Error ? q(s.message, e) : q("Unknown error loading sidebar", e), console.error(s);
|
|
373
383
|
return;
|
|
374
384
|
}
|
|
375
|
-
const i =
|
|
385
|
+
const i = Ut(r, o);
|
|
376
386
|
q(i, e), n();
|
|
377
387
|
}
|
|
378
388
|
}
|
|
379
|
-
function
|
|
389
|
+
function Ut(t, e) {
|
|
380
390
|
return t.replace(/src="(?!https?:)/g, 'src="' + e).replace(/href="(?!https?:)/g, 'href="' + e);
|
|
381
391
|
}
|
|
382
392
|
function q(t, e) {
|
|
383
393
|
const n = e.contentWindow;
|
|
384
394
|
n.document.open(), n.document.write(t), n.document.close();
|
|
385
395
|
}
|
|
386
|
-
class
|
|
387
|
-
constructor(e, n, o,
|
|
388
|
-
this.config = e, this.adapter = n, this.onGotSidebar = o, this.sidebarContentWindow =
|
|
396
|
+
class zt {
|
|
397
|
+
constructor(e, n, o, A) {
|
|
398
|
+
this.config = e, this.adapter = n, this.onGotSidebar = o, this.sidebarContentWindow = A;
|
|
389
399
|
}
|
|
390
400
|
acrolinxSidebar;
|
|
391
401
|
initSidebarOnPremise() {
|
|
@@ -396,14 +406,14 @@ class Lt {
|
|
|
396
406
|
log: !!this.config.log
|
|
397
407
|
},
|
|
398
408
|
...this.config,
|
|
399
|
-
clientComponents: (this.config.clientComponents ||
|
|
409
|
+
clientComponents: (this.config.clientComponents || Rt).concat(Ft)
|
|
400
410
|
});
|
|
401
411
|
}
|
|
402
412
|
getDefaultDocumentReference() {
|
|
403
413
|
return this.config.getDocumentReference ? this.config.getDocumentReference() : window.location.href;
|
|
404
414
|
}
|
|
405
415
|
requestGlobalCheckSync(e, n = "HTML") {
|
|
406
|
-
if (
|
|
416
|
+
if (Je(e))
|
|
407
417
|
this.acrolinxSidebar.onGlobalCheckRejected(), window.alert(e.error);
|
|
408
418
|
else {
|
|
409
419
|
const o = this.acrolinxSidebar.checkGlobal(e.content, {
|
|
@@ -431,12 +441,12 @@ class Lt {
|
|
|
431
441
|
console.log("onInitFinished: ", e), this.config.onInitFinished ? this.config.onInitFinished(e) : e.error && window.alert(e.error.message), this.adapter && this.adapter.onInitFinished && this.adapter.onInitFinished(e);
|
|
432
442
|
}
|
|
433
443
|
requestGlobalCheck(e = { selection: !1, batchCheck: !1 }) {
|
|
434
|
-
const n = this.adapter, o = n.extractContentForCheck({ checkSelection: e.selection }),
|
|
435
|
-
|
|
436
|
-
this.requestGlobalCheckSync(r,
|
|
444
|
+
const n = this.adapter, o = n.extractContentForCheck({ checkSelection: e.selection }), A = n.getFormat ? n.getFormat() : void 0;
|
|
445
|
+
De(o) ? o.then((r) => {
|
|
446
|
+
this.requestGlobalCheckSync(r, A);
|
|
437
447
|
}).catch((r) => {
|
|
438
448
|
this.acrolinxSidebar.onGlobalCheckRejected(), console.error("Error while adapter.extractContentForCheck:", r);
|
|
439
|
-
}) : this.requestGlobalCheckSync(o,
|
|
449
|
+
}) : this.requestGlobalCheckSync(o, A);
|
|
440
450
|
}
|
|
441
451
|
onCheckResult(e) {
|
|
442
452
|
this.config.onCheckResult && this.config.onCheckResult(e), e.embedCheckInformation && this.config.onEmbedCheckData && this.config.onEmbedCheckData(e.embedCheckInformation, e.inputFormat || ""), e.error || this.adapter.registerCheckResult(e);
|
|
@@ -460,15 +470,15 @@ class Lt {
|
|
|
460
470
|
}
|
|
461
471
|
}
|
|
462
472
|
handlePotentialPromiseError(e, n, o) {
|
|
463
|
-
|
|
464
|
-
this.handleRangeOperationError(
|
|
473
|
+
De(e) && e.catch((A) => {
|
|
474
|
+
this.handleRangeOperationError(A, n, o);
|
|
465
475
|
});
|
|
466
476
|
}
|
|
467
477
|
handleRangeOperationError(e, n, o) {
|
|
468
478
|
console.log(e), this.acrolinxSidebar.invalidateRanges(
|
|
469
|
-
o.map((
|
|
479
|
+
o.map((A) => ({
|
|
470
480
|
checkId: n,
|
|
471
|
-
range:
|
|
481
|
+
range: A.range
|
|
472
482
|
}))
|
|
473
483
|
);
|
|
474
484
|
}
|
|
@@ -482,32 +492,32 @@ class Lt {
|
|
|
482
492
|
this.config.log && this.config.log(e);
|
|
483
493
|
}
|
|
484
494
|
}
|
|
485
|
-
async function
|
|
495
|
+
async function Vt(t, e, n) {
|
|
486
496
|
const o = document.getElementById(t.sidebarContainerId);
|
|
487
497
|
if (!o)
|
|
488
498
|
throw new Error(
|
|
489
499
|
`Acrolinx can't find an element with the configured sidebarContainerId "${t.sidebarContainerId}".`
|
|
490
500
|
);
|
|
491
|
-
const
|
|
492
|
-
o.appendChild(
|
|
493
|
-
const r =
|
|
501
|
+
const A = document.createElement("iframe");
|
|
502
|
+
o.appendChild(A);
|
|
503
|
+
const r = A.contentWindow, i = new zt(
|
|
494
504
|
t,
|
|
495
505
|
e,
|
|
496
506
|
n,
|
|
497
507
|
r
|
|
498
508
|
);
|
|
499
|
-
function
|
|
500
|
-
|
|
509
|
+
function s() {
|
|
510
|
+
c(), console.log("Install acrolinxPlugin in sidebar."), t.acrolinxStorage && (r.acrolinxStorage = t.acrolinxStorage), r.acrolinxPlugin = i;
|
|
501
511
|
}
|
|
502
|
-
async function
|
|
503
|
-
console.log("Connect acrolinxPlugin in sidebar."),
|
|
512
|
+
async function a() {
|
|
513
|
+
console.log("Connect acrolinxPlugin in sidebar."), Pt(i, A), await Ze(t, A, c);
|
|
504
514
|
}
|
|
505
|
-
function
|
|
515
|
+
function c() {
|
|
506
516
|
t.onSidebarWindowLoaded && t.onSidebarWindowLoaded(r);
|
|
507
517
|
}
|
|
508
|
-
return t.useMessageAdapter ? await
|
|
518
|
+
return t.useMessageAdapter ? await a() : await Ze(t, A, s), i;
|
|
509
519
|
}
|
|
510
|
-
class
|
|
520
|
+
class Xt {
|
|
511
521
|
store = [];
|
|
512
522
|
push(e) {
|
|
513
523
|
this.store.push(e);
|
|
@@ -516,15 +526,15 @@ class Ot {
|
|
|
516
526
|
return this.store.shift();
|
|
517
527
|
}
|
|
518
528
|
}
|
|
519
|
-
class
|
|
529
|
+
class qt {
|
|
520
530
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
521
|
-
workTodo = new
|
|
531
|
+
workTodo = new Xt();
|
|
522
532
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
523
533
|
currentWork;
|
|
524
534
|
addWork(e) {
|
|
525
535
|
const n = {
|
|
526
536
|
work: e,
|
|
527
|
-
deferred: new
|
|
537
|
+
deferred: new Qt()
|
|
528
538
|
};
|
|
529
539
|
return this.workTodo.push(n), this.currentWork || this.doRemainingWork(), n.deferred.promise;
|
|
530
540
|
}
|
|
@@ -540,7 +550,7 @@ class jt {
|
|
|
540
550
|
));
|
|
541
551
|
}
|
|
542
552
|
}
|
|
543
|
-
class
|
|
553
|
+
class _e {
|
|
544
554
|
constructor(e) {
|
|
545
555
|
this.adapter = e, e.getAutobindWrapperAttributes && (this.getAutobindWrapperAttributes = e.getAutobindWrapperAttributes.bind(e)), e.getFormat && (this.getFormat = e.getFormat.bind(e));
|
|
546
556
|
}
|
|
@@ -548,7 +558,7 @@ class Ut {
|
|
|
548
558
|
requiresSynchronization = !1;
|
|
549
559
|
getAutobindWrapperAttributes;
|
|
550
560
|
getFormat;
|
|
551
|
-
workQueue = new
|
|
561
|
+
workQueue = new qt();
|
|
552
562
|
extractContentForCheck(e) {
|
|
553
563
|
return this.adapter.extractContentForCheck(e);
|
|
554
564
|
}
|
|
@@ -577,7 +587,7 @@ class pe {
|
|
|
577
587
|
this.initConfig = e, this.config = {};
|
|
578
588
|
}
|
|
579
589
|
registerAdapter(e) {
|
|
580
|
-
|
|
590
|
+
St(e) && e.requiresSynchronization ? this.adapter = new _e(e) : this.adapter = e;
|
|
581
591
|
}
|
|
582
592
|
configure(e) {
|
|
583
593
|
this.config = { ...this.config, ...e }, this.internalPlugin && this.internalPlugin.acrolinxSidebar && this.internalPlugin.configureSidebar(this.config);
|
|
@@ -600,7 +610,7 @@ class pe {
|
|
|
600
610
|
async init() {
|
|
601
611
|
if (!this.adapter)
|
|
602
612
|
throw new Error("Missing registered adapter. Please use registerAdapter before init.");
|
|
603
|
-
this.internalPlugin = await
|
|
613
|
+
this.internalPlugin = await Vt(this.initConfig, this.adapter, () => {
|
|
604
614
|
this.internalPlugin.configureSidebar(this.config);
|
|
605
615
|
});
|
|
606
616
|
}
|
|
@@ -613,15 +623,15 @@ class pe {
|
|
|
613
623
|
o.src = "about:blank", setTimeout(() => {
|
|
614
624
|
n.innerHTML = "", e();
|
|
615
625
|
}, 0);
|
|
616
|
-
} catch (
|
|
617
|
-
console.error(
|
|
626
|
+
} catch (A) {
|
|
627
|
+
console.error(A), e();
|
|
618
628
|
}
|
|
619
629
|
else
|
|
620
630
|
e();
|
|
621
631
|
}
|
|
622
632
|
}
|
|
623
633
|
}
|
|
624
|
-
function
|
|
634
|
+
function _t(t) {
|
|
625
635
|
const e = t.getSelection();
|
|
626
636
|
if (!e)
|
|
627
637
|
return [];
|
|
@@ -630,62 +640,62 @@ function zt(t) {
|
|
|
630
640
|
n.push(e.getRangeAt(o));
|
|
631
641
|
return n;
|
|
632
642
|
}
|
|
633
|
-
function
|
|
634
|
-
return t.ownerDocument ?
|
|
635
|
-
(n) =>
|
|
643
|
+
function $t(t) {
|
|
644
|
+
return t.ownerDocument ? _t(t.ownerDocument).filter(
|
|
645
|
+
(n) => en(t, n.commonAncestorContainer) && n.toString().trim() !== ""
|
|
636
646
|
) : [];
|
|
637
647
|
}
|
|
638
|
-
function
|
|
648
|
+
function en(t, e) {
|
|
639
649
|
return t === e || e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_CONTAINS;
|
|
640
650
|
}
|
|
641
|
-
function
|
|
651
|
+
function Me(t, e) {
|
|
642
652
|
const n = [];
|
|
643
653
|
let o = e;
|
|
644
654
|
for (; o !== t; ) {
|
|
645
|
-
const
|
|
646
|
-
if (!
|
|
655
|
+
const A = o.parentNode;
|
|
656
|
+
if (!A)
|
|
647
657
|
break;
|
|
648
|
-
const r = Array.prototype.indexOf.call(
|
|
658
|
+
const r = Array.prototype.indexOf.call(A.childNodes, o);
|
|
649
659
|
if (r === -1)
|
|
650
660
|
break;
|
|
651
|
-
n.push(r), o =
|
|
661
|
+
n.push(r), o = A;
|
|
652
662
|
}
|
|
653
663
|
return n.reverse(), n;
|
|
654
664
|
}
|
|
655
|
-
function
|
|
665
|
+
function We(t, e) {
|
|
656
666
|
let n = t;
|
|
657
667
|
for (const o of e) {
|
|
658
|
-
const
|
|
659
|
-
if (!
|
|
668
|
+
const A = n.childNodes[o];
|
|
669
|
+
if (!A)
|
|
660
670
|
return;
|
|
661
|
-
n =
|
|
671
|
+
n = A;
|
|
662
672
|
}
|
|
663
673
|
return n;
|
|
664
674
|
}
|
|
665
|
-
const oe = "ACROOO_SELECTION_START",
|
|
666
|
-
function
|
|
675
|
+
const oe = "ACROOO_SELECTION_START", He = "ACROOO_SELECTION_END";
|
|
676
|
+
function tn(t, e, n) {
|
|
667
677
|
const o = t.ownerDocument;
|
|
668
678
|
if (!o)
|
|
669
679
|
return;
|
|
670
|
-
const
|
|
671
|
-
if (!
|
|
680
|
+
const A = Me(t, e.startContainer), r = Me(t, e.endContainer), i = t.cloneNode(!0), s = We(i, A), a = We(i, r);
|
|
681
|
+
if (!s || !a)
|
|
672
682
|
return;
|
|
673
|
-
const
|
|
674
|
-
|
|
675
|
-
const l = n(i), d = l.indexOf(oe), u = l.indexOf(
|
|
683
|
+
const c = o.createRange();
|
|
684
|
+
c.setStart(s, e.startOffset), c.setEnd(a, e.endOffset), c.insertNode(o.createTextNode(oe)), c.collapse(!1), c.insertNode(o.createTextNode(He));
|
|
685
|
+
const l = n(i), d = l.indexOf(oe), u = l.indexOf(He);
|
|
676
686
|
if (!(d === -1 || u === -1))
|
|
677
687
|
return [d, u - oe.length];
|
|
678
688
|
}
|
|
679
|
-
function
|
|
689
|
+
function nn(t) {
|
|
680
690
|
return t.innerHTML;
|
|
681
691
|
}
|
|
682
|
-
function ne(t, e =
|
|
683
|
-
return
|
|
692
|
+
function ne(t, e = nn) {
|
|
693
|
+
return $t(t).map((o) => tn(t, o, e)).filter((o) => !!o);
|
|
684
694
|
}
|
|
685
|
-
function
|
|
695
|
+
function rn(t, e) {
|
|
686
696
|
if (t.length === 0)
|
|
687
697
|
return 0;
|
|
688
|
-
const n =
|
|
698
|
+
const n = on(
|
|
689
699
|
t,
|
|
690
700
|
{ diffOffset: 0, oldPosition: e + 0.1 },
|
|
691
701
|
(o) => o.oldPosition
|
|
@@ -693,18 +703,18 @@ function $t(t, e) {
|
|
|
693
703
|
return n > 0 ? t[n - 1].diffOffset : 0;
|
|
694
704
|
}
|
|
695
705
|
function G(t, e) {
|
|
696
|
-
return e +
|
|
706
|
+
return e + rn(t, e);
|
|
697
707
|
}
|
|
698
|
-
function
|
|
699
|
-
let o = 0,
|
|
700
|
-
for (; o <
|
|
701
|
-
const r = Math.floor((o +
|
|
702
|
-
n(t[r]) < n(e) ? o = r + 1 :
|
|
708
|
+
function on(t, e, n) {
|
|
709
|
+
let o = 0, A = t.length;
|
|
710
|
+
for (; o < A; ) {
|
|
711
|
+
const r = Math.floor((o + A) / 2);
|
|
712
|
+
n(t[r]) < n(e) ? o = r + 1 : A = r;
|
|
703
713
|
}
|
|
704
714
|
return o;
|
|
705
715
|
}
|
|
706
716
|
var ie;
|
|
707
|
-
const
|
|
717
|
+
const An = /* @__PURE__ */ new Map([
|
|
708
718
|
[0, 65533],
|
|
709
719
|
// C1 Unicode control character reference replacements
|
|
710
720
|
[128, 8364],
|
|
@@ -734,18 +744,18 @@ const tn = /* @__PURE__ */ new Map([
|
|
|
734
744
|
[156, 339],
|
|
735
745
|
[158, 382],
|
|
736
746
|
[159, 376]
|
|
737
|
-
]),
|
|
747
|
+
]), sn = (
|
|
738
748
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
739
|
-
(ie = String.fromCodePoint) !== null && ie !== void 0 ? ie : (t) => {
|
|
749
|
+
(ie = String.fromCodePoint) !== null && ie !== void 0 ? ie : ((t) => {
|
|
740
750
|
let e = "";
|
|
741
751
|
return t > 65535 && (t -= 65536, e += String.fromCharCode(t >>> 10 & 1023 | 55296), t = 56320 | t & 1023), e += String.fromCharCode(t), e;
|
|
742
|
-
}
|
|
752
|
+
})
|
|
743
753
|
);
|
|
744
|
-
function
|
|
754
|
+
function an(t) {
|
|
745
755
|
var e;
|
|
746
|
-
return t >= 55296 && t <= 57343 || t > 1114111 ? 65533 : (e =
|
|
756
|
+
return t >= 55296 && t <= 57343 || t > 1114111 ? 65533 : (e = An.get(t)) !== null && e !== void 0 ? e : t;
|
|
747
757
|
}
|
|
748
|
-
function
|
|
758
|
+
function cn(t) {
|
|
749
759
|
const e = (
|
|
750
760
|
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
751
761
|
typeof atob == "function" ? (
|
|
@@ -764,13 +774,13 @@ function on(t) {
|
|
|
764
774
|
)
|
|
765
775
|
)
|
|
766
776
|
), n = e.length & -2, o = new Uint16Array(n / 2);
|
|
767
|
-
for (let
|
|
768
|
-
const i = e.charCodeAt(
|
|
769
|
-
o[r++] = i |
|
|
777
|
+
for (let A = 0, r = 0; A < n; A += 2) {
|
|
778
|
+
const i = e.charCodeAt(A), s = e.charCodeAt(A + 1);
|
|
779
|
+
o[r++] = i | s << 8;
|
|
770
780
|
}
|
|
771
781
|
return o;
|
|
772
782
|
}
|
|
773
|
-
const An = /* @__PURE__ */ on("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
|
|
783
|
+
const ln = /* @__PURE__ */ cn("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
|
|
774
784
|
var F;
|
|
775
785
|
(function(t) {
|
|
776
786
|
t[t.VALUE_LENGTH = 49152] = "VALUE_LENGTH", t[t.FLAG13 = 8192] = "FLAG13", t[t.BRANCH_LENGTH = 8064] = "BRANCH_LENGTH", t[t.JUMP_TABLE = 127] = "JUMP_TABLE";
|
|
@@ -779,18 +789,18 @@ var B;
|
|
|
779
789
|
(function(t) {
|
|
780
790
|
t[t.NUM = 35] = "NUM", t[t.SEMI = 59] = "SEMI", t[t.EQUALS = 61] = "EQUALS", t[t.ZERO = 48] = "ZERO", t[t.NINE = 57] = "NINE", t[t.LOWER_A = 97] = "LOWER_A", t[t.LOWER_F = 102] = "LOWER_F", t[t.LOWER_X = 120] = "LOWER_X", t[t.LOWER_Z = 122] = "LOWER_Z", t[t.UPPER_A = 65] = "UPPER_A", t[t.UPPER_F = 70] = "UPPER_F", t[t.UPPER_Z = 90] = "UPPER_Z";
|
|
781
791
|
})(B || (B = {}));
|
|
782
|
-
const
|
|
792
|
+
const Qe = 32;
|
|
783
793
|
function le(t) {
|
|
784
794
|
return t >= B.ZERO && t <= B.NINE;
|
|
785
795
|
}
|
|
786
|
-
function
|
|
796
|
+
function dn(t) {
|
|
787
797
|
return t >= B.UPPER_A && t <= B.UPPER_F || t >= B.LOWER_A && t <= B.LOWER_F;
|
|
788
798
|
}
|
|
789
|
-
function
|
|
799
|
+
function un(t) {
|
|
790
800
|
return t >= B.UPPER_A && t <= B.UPPER_Z || t >= B.LOWER_A && t <= B.LOWER_Z || le(t);
|
|
791
801
|
}
|
|
792
|
-
function
|
|
793
|
-
return t === B.EQUALS ||
|
|
802
|
+
function gn(t) {
|
|
803
|
+
return t === B.EQUALS || un(t);
|
|
794
804
|
}
|
|
795
805
|
var D;
|
|
796
806
|
(function(t) {
|
|
@@ -800,13 +810,13 @@ var K;
|
|
|
800
810
|
(function(t) {
|
|
801
811
|
t[t.Legacy = 0] = "Legacy", t[t.Strict = 1] = "Strict", t[t.Attribute = 2] = "Attribute";
|
|
802
812
|
})(K || (K = {}));
|
|
803
|
-
class
|
|
813
|
+
class hn {
|
|
804
814
|
constructor(e, n, o) {
|
|
805
|
-
this.decodeTree = e, this.emitCodePoint = n, this.errors = o, this.state = D.EntityStart, this.consumed = 1, this.result = 0, this.treeIndex = 0, this.excess = 1, this.decodeMode = K.Strict;
|
|
815
|
+
this.decodeTree = e, this.emitCodePoint = n, this.errors = o, this.state = D.EntityStart, this.consumed = 1, this.result = 0, this.treeIndex = 0, this.excess = 1, this.decodeMode = K.Strict, this.runConsumed = 0;
|
|
806
816
|
}
|
|
807
817
|
/** Resets the instance to make it reusable. */
|
|
808
818
|
startEntity(e) {
|
|
809
|
-
this.decodeMode = e, this.state = D.EntityStart, this.result = 0, this.treeIndex = 0, this.excess = 1, this.consumed = 1;
|
|
819
|
+
this.decodeMode = e, this.state = D.EntityStart, this.result = 0, this.treeIndex = 0, this.excess = 1, this.consumed = 1, this.runConsumed = 0;
|
|
810
820
|
}
|
|
811
821
|
/**
|
|
812
822
|
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
@@ -843,7 +853,7 @@ class ln {
|
|
|
843
853
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
844
854
|
*/
|
|
845
855
|
stateNumericStart(e, n) {
|
|
846
|
-
return n >= e.length ? -1 : (e.charCodeAt(n) |
|
|
856
|
+
return n >= e.length ? -1 : (e.charCodeAt(n) | Qe) === B.LOWER_X ? (this.state = D.NumericHex, this.consumed += 1, this.stateNumericHex(e, n + 1)) : (this.state = D.NumericDecimal, this.stateNumericDecimal(e, n));
|
|
847
857
|
}
|
|
848
858
|
/**
|
|
849
859
|
* Parses a hexadecimal numeric entity.
|
|
@@ -857,9 +867,9 @@ class ln {
|
|
|
857
867
|
stateNumericHex(e, n) {
|
|
858
868
|
for (; n < e.length; ) {
|
|
859
869
|
const o = e.charCodeAt(n);
|
|
860
|
-
if (le(o) ||
|
|
861
|
-
const
|
|
862
|
-
this.result = this.result * 16 +
|
|
870
|
+
if (le(o) || dn(o)) {
|
|
871
|
+
const A = o <= B.NINE ? o - B.ZERO : (o | Qe) - B.LOWER_A + 10;
|
|
872
|
+
this.result = this.result * 16 + A, this.consumed++, n++;
|
|
863
873
|
} else
|
|
864
874
|
return this.emitNumericEntity(o, 3);
|
|
865
875
|
}
|
|
@@ -905,7 +915,7 @@ class ln {
|
|
|
905
915
|
this.consumed += 1;
|
|
906
916
|
else if (this.decodeMode === K.Strict)
|
|
907
917
|
return 0;
|
|
908
|
-
return this.emitCodePoint(
|
|
918
|
+
return this.emitCodePoint(an(this.result), this.consumed), this.errors && (e !== B.SEMI && this.errors.missingSemicolonAfterCharacterReference(), this.errors.validateNumericCharacterReference(this.result)), this.consumed;
|
|
909
919
|
}
|
|
910
920
|
/**
|
|
911
921
|
* Parses a named entity.
|
|
@@ -918,44 +928,40 @@ class ln {
|
|
|
918
928
|
*/
|
|
919
929
|
stateNamedEntity(e, n) {
|
|
920
930
|
const { decodeTree: o } = this;
|
|
921
|
-
let
|
|
931
|
+
let A = o[this.treeIndex], r = (A & F.VALUE_LENGTH) >> 14;
|
|
922
932
|
for (; n < e.length; ) {
|
|
923
|
-
if (r === 0 && (
|
|
924
|
-
const
|
|
925
|
-
if (
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity();
|
|
929
|
-
n++, this.excess++;
|
|
930
|
-
const a = A - 1;
|
|
931
|
-
for (let l = 1; l < A; l += 2) {
|
|
932
|
-
const d = o[this.treeIndex + 1 + (l - 1 >> 1)], u = d & 255;
|
|
933
|
-
if (e.charCodeAt(n) !== u)
|
|
933
|
+
if (r === 0 && (A & F.FLAG13) !== 0) {
|
|
934
|
+
const s = (A & F.BRANCH_LENGTH) >> 7;
|
|
935
|
+
if (this.runConsumed === 0) {
|
|
936
|
+
const a = A & F.JUMP_TABLE;
|
|
937
|
+
if (e.charCodeAt(n) !== a)
|
|
934
938
|
return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity();
|
|
935
|
-
n++, this.excess++;
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
939
|
+
n++, this.excess++, this.runConsumed++;
|
|
940
|
+
}
|
|
941
|
+
for (; this.runConsumed < s; ) {
|
|
942
|
+
if (n >= e.length)
|
|
943
|
+
return -1;
|
|
944
|
+
const a = this.runConsumed - 1, c = o[this.treeIndex + 1 + (a >> 1)], l = a % 2 === 0 ? c & 255 : c >> 8 & 255;
|
|
945
|
+
if (e.charCodeAt(n) !== l)
|
|
946
|
+
return this.runConsumed = 0, this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity();
|
|
947
|
+
n++, this.excess++, this.runConsumed++;
|
|
942
948
|
}
|
|
943
|
-
this.treeIndex += 1 + (
|
|
949
|
+
this.runConsumed = 0, this.treeIndex += 1 + (s >> 1), A = o[this.treeIndex], r = (A & F.VALUE_LENGTH) >> 14;
|
|
944
950
|
}
|
|
945
951
|
if (n >= e.length)
|
|
946
952
|
break;
|
|
947
953
|
const i = e.charCodeAt(n);
|
|
948
|
-
if (i === B.SEMI && r !== 0 && (
|
|
954
|
+
if (i === B.SEMI && r !== 0 && (A & F.FLAG13) !== 0)
|
|
949
955
|
return this.emitNamedEntityData(this.treeIndex, r, this.consumed + this.excess);
|
|
950
|
-
if (this.treeIndex =
|
|
956
|
+
if (this.treeIndex = pn(o, A, this.treeIndex + Math.max(1, r), i), this.treeIndex < 0)
|
|
951
957
|
return this.result === 0 || // If we are parsing an attribute
|
|
952
958
|
this.decodeMode === K.Attribute && // We shouldn't have consumed any characters after the entity,
|
|
953
959
|
(r === 0 || // And there should be no invalid characters.
|
|
954
|
-
|
|
955
|
-
if (
|
|
960
|
+
gn(i)) ? 0 : this.emitNotTerminatedNamedEntity();
|
|
961
|
+
if (A = o[this.treeIndex], r = (A & F.VALUE_LENGTH) >> 14, r !== 0) {
|
|
956
962
|
if (i === B.SEMI)
|
|
957
963
|
return this.emitNamedEntityData(this.treeIndex, r, this.consumed + this.excess);
|
|
958
|
-
this.decodeMode !== K.Strict && (
|
|
964
|
+
this.decodeMode !== K.Strict && (A & F.FLAG13) === 0 && (this.result = this.treeIndex, this.consumed += this.excess, this.excess = 0);
|
|
959
965
|
}
|
|
960
966
|
n++, this.excess++;
|
|
961
967
|
}
|
|
@@ -968,8 +974,8 @@ class ln {
|
|
|
968
974
|
*/
|
|
969
975
|
emitNotTerminatedNamedEntity() {
|
|
970
976
|
var e;
|
|
971
|
-
const { result: n, decodeTree: o } = this,
|
|
972
|
-
return this.emitNamedEntityData(n,
|
|
977
|
+
const { result: n, decodeTree: o } = this, A = (o[n] & F.VALUE_LENGTH) >> 14;
|
|
978
|
+
return this.emitNamedEntityData(n, A, this.consumed), (e = this.errors) === null || e === void 0 || e.missingSemicolonAfterCharacterReference(), this.consumed;
|
|
973
979
|
}
|
|
974
980
|
/**
|
|
975
981
|
* Emit a named entity.
|
|
@@ -981,8 +987,8 @@ class ln {
|
|
|
981
987
|
* @returns The number of characters consumed.
|
|
982
988
|
*/
|
|
983
989
|
emitNamedEntityData(e, n, o) {
|
|
984
|
-
const { decodeTree:
|
|
985
|
-
return this.emitCodePoint(n === 1 ?
|
|
990
|
+
const { decodeTree: A } = this;
|
|
991
|
+
return this.emitCodePoint(n === 1 ? A[e] & ~(F.VALUE_LENGTH | F.FLAG13) : A[e + 1], o), n === 3 && this.emitCodePoint(A[e + 2], o), o;
|
|
986
992
|
}
|
|
987
993
|
/**
|
|
988
994
|
* Signal to the parser that the end of the input was reached.
|
|
@@ -1008,132 +1014,132 @@ class ln {
|
|
|
1008
1014
|
}
|
|
1009
1015
|
}
|
|
1010
1016
|
}
|
|
1011
|
-
function
|
|
1017
|
+
function fn(t) {
|
|
1012
1018
|
let e = "";
|
|
1013
|
-
const n = new
|
|
1014
|
-
return function(
|
|
1015
|
-
let i = 0,
|
|
1016
|
-
for (; (
|
|
1017
|
-
e +=
|
|
1018
|
-
const
|
|
1019
|
-
|
|
1019
|
+
const n = new hn(t, (o) => e += sn(o));
|
|
1020
|
+
return function(A, r) {
|
|
1021
|
+
let i = 0, s = 0;
|
|
1022
|
+
for (; (s = A.indexOf("&", s)) >= 0; ) {
|
|
1023
|
+
e += A.slice(i, s), n.startEntity(r);
|
|
1024
|
+
const c = n.write(
|
|
1025
|
+
A,
|
|
1020
1026
|
// Skip the "&"
|
|
1021
|
-
|
|
1027
|
+
s + 1
|
|
1022
1028
|
);
|
|
1023
|
-
if (
|
|
1024
|
-
i =
|
|
1029
|
+
if (c < 0) {
|
|
1030
|
+
i = s + n.end();
|
|
1025
1031
|
break;
|
|
1026
1032
|
}
|
|
1027
|
-
i =
|
|
1033
|
+
i = s + c, s = c === 0 ? i + 1 : i;
|
|
1028
1034
|
}
|
|
1029
|
-
const
|
|
1030
|
-
return e = "",
|
|
1035
|
+
const a = e + A.slice(i);
|
|
1036
|
+
return e = "", a;
|
|
1031
1037
|
};
|
|
1032
1038
|
}
|
|
1033
|
-
function
|
|
1034
|
-
const
|
|
1035
|
-
if (
|
|
1039
|
+
function pn(t, e, n, o) {
|
|
1040
|
+
const A = (e & F.BRANCH_LENGTH) >> 7, r = e & F.JUMP_TABLE;
|
|
1041
|
+
if (A === 0)
|
|
1036
1042
|
return r !== 0 && o === r ? n : -1;
|
|
1037
1043
|
if (r) {
|
|
1038
|
-
const
|
|
1039
|
-
return
|
|
1044
|
+
const c = o - r;
|
|
1045
|
+
return c < 0 || c >= A ? -1 : t[n + c] - 1;
|
|
1040
1046
|
}
|
|
1041
|
-
const i =
|
|
1042
|
-
let
|
|
1043
|
-
for (;
|
|
1044
|
-
const
|
|
1047
|
+
const i = A + 1 >> 1;
|
|
1048
|
+
let s = 0, a = A - 1;
|
|
1049
|
+
for (; s <= a; ) {
|
|
1050
|
+
const c = s + a >>> 1, l = c >> 1, u = t[n + l] >> (c & 1) * 8 & 255;
|
|
1045
1051
|
if (u < o)
|
|
1046
|
-
|
|
1052
|
+
s = c + 1;
|
|
1047
1053
|
else if (u > o)
|
|
1048
|
-
|
|
1054
|
+
a = c - 1;
|
|
1049
1055
|
else
|
|
1050
|
-
return t[n + i +
|
|
1056
|
+
return t[n + i + c];
|
|
1051
1057
|
}
|
|
1052
1058
|
return -1;
|
|
1053
1059
|
}
|
|
1054
|
-
const
|
|
1055
|
-
function
|
|
1056
|
-
return
|
|
1060
|
+
const mn = /* @__PURE__ */ fn(ln);
|
|
1061
|
+
function bn(t) {
|
|
1062
|
+
return mn(t, K.Strict);
|
|
1057
1063
|
}
|
|
1058
|
-
const
|
|
1064
|
+
const $e = /* @__PURE__ */ new Map([
|
|
1059
1065
|
[34, """],
|
|
1060
1066
|
[38, "&"],
|
|
1061
1067
|
[39, "'"],
|
|
1062
1068
|
[60, "<"],
|
|
1063
1069
|
[62, ">"]
|
|
1064
|
-
]),
|
|
1070
|
+
]), et = (
|
|
1065
1071
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
1066
1072
|
String.prototype.codePointAt == null ? (t, e) => (t.charCodeAt(e) & 64512) === 55296 ? (t.charCodeAt(e) - 55296) * 1024 + t.charCodeAt(e + 1) - 56320 + 65536 : t.charCodeAt(e) : (
|
|
1067
1073
|
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
|
1068
1074
|
(t, e) => t.codePointAt(e)
|
|
1069
1075
|
)
|
|
1070
|
-
),
|
|
1071
|
-
function
|
|
1076
|
+
), tt = 1342177476;
|
|
1077
|
+
function Ke(t) {
|
|
1072
1078
|
let e, n = 0;
|
|
1073
1079
|
const { length: o } = t;
|
|
1074
|
-
for (let
|
|
1075
|
-
const r = t.charCodeAt(
|
|
1076
|
-
if (r < 128 && ((
|
|
1080
|
+
for (let A = 0; A < o; A++) {
|
|
1081
|
+
const r = t.charCodeAt(A);
|
|
1082
|
+
if (r < 128 && ((tt >>> r & 1) === 0 || r >= 64 || r < 32))
|
|
1077
1083
|
continue;
|
|
1078
|
-
if (e === void 0 ? e = t.substring(0,
|
|
1079
|
-
e +=
|
|
1084
|
+
if (e === void 0 ? e = t.substring(0, A) : n !== A && (e += t.substring(n, A)), r < 64) {
|
|
1085
|
+
e += $e.get(r), n = A + 1;
|
|
1080
1086
|
continue;
|
|
1081
1087
|
}
|
|
1082
|
-
const i =
|
|
1083
|
-
e += `&#x${i.toString(16)};`, i !== r &&
|
|
1088
|
+
const i = et(t, A);
|
|
1089
|
+
e += `&#x${i.toString(16)};`, i !== r && A++, n = A + 1;
|
|
1084
1090
|
}
|
|
1085
1091
|
return e === void 0 ? t : (n < o && (e += t.substr(n)), e);
|
|
1086
1092
|
}
|
|
1087
1093
|
function me(t, e) {
|
|
1088
1094
|
return function(o) {
|
|
1089
|
-
let
|
|
1090
|
-
for (;
|
|
1091
|
-
r !==
|
|
1095
|
+
let A, r = 0, i = "";
|
|
1096
|
+
for (; A = t.exec(o); )
|
|
1097
|
+
r !== A.index && (i += o.substring(r, A.index)), i += e.get(A[0].charCodeAt(0)), r = A.index + 1;
|
|
1092
1098
|
return i + o.substring(r);
|
|
1093
1099
|
};
|
|
1094
1100
|
}
|
|
1095
|
-
const
|
|
1101
|
+
const vn = /* @__PURE__ */ me(/["&'<>]/g, $e), In = /* @__PURE__ */ me(/["&\u00A0]/g, /* @__PURE__ */ new Map([
|
|
1096
1102
|
[34, """],
|
|
1097
1103
|
[38, "&"],
|
|
1098
1104
|
[160, " "]
|
|
1099
|
-
])),
|
|
1105
|
+
])), Cn = /* @__PURE__ */ me(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
|
|
1100
1106
|
[38, "&"],
|
|
1101
1107
|
[60, "<"],
|
|
1102
1108
|
[62, ">"],
|
|
1103
1109
|
[160, " "]
|
|
1104
1110
|
]));
|
|
1105
|
-
function
|
|
1111
|
+
function wn(t) {
|
|
1106
1112
|
const e = /* @__PURE__ */ new Map(), n = t.length;
|
|
1107
|
-
let o = 0,
|
|
1113
|
+
let o = 0, A = -1;
|
|
1108
1114
|
function r() {
|
|
1109
|
-
const
|
|
1115
|
+
const s = o;
|
|
1110
1116
|
for (; o < n; ) {
|
|
1111
|
-
const
|
|
1112
|
-
if ((
|
|
1117
|
+
const a = t.charAt(o);
|
|
1118
|
+
if ((a < "0" || a > "9") && (a < "a" || a > "z"))
|
|
1113
1119
|
break;
|
|
1114
1120
|
o++;
|
|
1115
1121
|
}
|
|
1116
|
-
return o ===
|
|
1122
|
+
return o === s ? 0 : Number.parseInt(t.slice(s, o), 36);
|
|
1117
1123
|
}
|
|
1118
1124
|
function i() {
|
|
1119
1125
|
if (t[o] !== "&")
|
|
1120
1126
|
throw new Error(`Child entry missing value near index ${o}`);
|
|
1121
|
-
const
|
|
1122
|
-
if (
|
|
1123
|
-
throw new Error(`Unterminated entity starting at index ${
|
|
1124
|
-
return o =
|
|
1127
|
+
const s = o, a = t.indexOf(";", o + 1);
|
|
1128
|
+
if (a === -1)
|
|
1129
|
+
throw new Error(`Unterminated entity starting at index ${s}`);
|
|
1130
|
+
return o = a + 1, t.slice(s, o);
|
|
1125
1131
|
}
|
|
1126
1132
|
for (; o < n; ) {
|
|
1127
|
-
const
|
|
1128
|
-
let
|
|
1129
|
-
if (t[o] === "&" && (
|
|
1133
|
+
const s = r(), a = A === -1 ? s : A + s + 1;
|
|
1134
|
+
let c;
|
|
1135
|
+
if (t[o] === "&" && (c = i()), t[o] === "{") {
|
|
1130
1136
|
o++;
|
|
1131
1137
|
let l = r(), d = l;
|
|
1132
1138
|
const u = i();
|
|
1133
1139
|
if (t[o] === "{")
|
|
1134
1140
|
throw new Error("Unexpected nested '{' beyond depth 2");
|
|
1135
1141
|
if (t[o] === "}")
|
|
1136
|
-
e.set(
|
|
1142
|
+
e.set(a, { value: c, next: d, nextValue: u }), o++;
|
|
1137
1143
|
else {
|
|
1138
1144
|
const g = /* @__PURE__ */ new Map();
|
|
1139
1145
|
g.set(d, u);
|
|
@@ -1147,18 +1153,18 @@ function bn(t) {
|
|
|
1147
1153
|
}
|
|
1148
1154
|
if (t[o] !== "}")
|
|
1149
1155
|
throw new Error("Unterminated child block");
|
|
1150
|
-
o++, e.set(
|
|
1156
|
+
o++, e.set(a, { value: c, next: g });
|
|
1151
1157
|
}
|
|
1152
1158
|
} else {
|
|
1153
|
-
if (
|
|
1159
|
+
if (c === void 0)
|
|
1154
1160
|
throw new Error(`Malformed encode trie: missing value at index ${o}`);
|
|
1155
|
-
e.set(
|
|
1161
|
+
e.set(a, c);
|
|
1156
1162
|
}
|
|
1157
|
-
|
|
1163
|
+
A = a;
|
|
1158
1164
|
}
|
|
1159
1165
|
return e;
|
|
1160
1166
|
}
|
|
1161
|
-
const vn = /* @__PURE__ */ bn("9	
m!"#$%&'()*+,1./a:;<{6he<⃒}={6hx=⃥}>{6he>⃒}?@q[\]^_`5{2yfj}k{|}y ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒē2ĖėĘęĚěĜĝĞğĠġĢ1ĤĥĦħĨĩĪī2ĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌō2ŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžjƒyƵ1rǵ1tȷ3yˆˇg˘˙˚˛˜˝1f̑3jΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ1ΣΤΥΦΧΨΩ7αβγδεζηθικλμνξοπρςστυφχψω7ϑϒ2ϕϖ5Ϝϝiϰϱ3ϵ϶aЁЂЃЄЅІЇЈЉЊЋЌ1ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя1ёђѓєѕіїјљњћќ1ўџ5gi    1    ​‌‍‎‏‐2–—―‖1‘’‚1“”„1†‡•2‥…9‰‱′″‴‵3‹›3‾2⁁1⁃⁄a⁏7⁗7 {6bu  }⁠⁡⁢⁣20€1a⃛⃜11ℂ2℅4ℊℋℌℍℎℏℐℑℒℓ1ℕ№℗℘ℙℚℛℜℝ℞3™1ℤ2℧ℨ℩2ℬℭ1ℯℰℱ1ℳℴℵℶℷℸcⅅⅆⅇⅈa⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞1d←↑→↓↔↕↖↗↘↙↚↛1↝{mw↝̸}↞↟↠↡↢↣↤↥↦↧1↩↪↫↬↭↮1↰↱↲↳1↵↶↷2↺↻↼↽↾↿⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛1⇝6⇤⇥f⇵7⇽⇾⇿∀∁∂{mw∂̸}∃∄∅1∇∈∉1∋∌2∏∐∑−∓∔1∖∗∘1√2∝∞∟∠{6he∠⃒}∡∢∣∤∥∦∧∨∩{1e68∩︀}∪{1e68∪︀}∫∬∭∮∯∰∱∲∳∴∵∶∷∸1∺∻∼{6he∼⃒}∽{mp∽̱}∾{mr∾̳}∿≀≁≂{mw≂̸}≃≄≅≆≇≈≉≊≋{mw≋̸}≌≍{6he≍⃒}≎{mw≎̸}≏{mw≏̸}≐{mw≐̸}≑≒≓≔≕≖≗1≙≚1≜2≟≠≡{6hx≡⃥}≢1≤{6he≤⃒}≥{6he≥⃒}≦{mw≦̸}≧{mw≧̸}≨{1e68≨︀}≩{1e68≩︀}≪{mw≪̸5uh≪⃒}≫{mw≫̸5uh≫⃒}≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿{mw≿̸}⊀⊁⊂{6he⊂⃒}⊃{6he⊃⃒}⊄⊅⊆⊇⊈⊉⊊{1e68⊊︀}⊋{1e68⊋︀}1⊍⊎⊏{mw⊏̸}⊐{mw⊐̸}⊑⊒⊓{1e68⊓︀}⊔{1e68⊔︀}⊕⊖⊗⊘⊙⊚⊛1⊝⊞⊟⊠⊡⊢⊣⊤⊥1⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰1⊲⊳⊴{6he⊴⃒}⊵{6he⊵⃒}⊶⊷⊸⊹⊺⊻1⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘{mw⋘̸}⋙{mw⋙̸}⋚{1e68⋚︀}⋛{1e68⋛︀}2⋞⋟⋠⋡⋢⋣2⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵{mw⋵̸}⋶⋷1⋹{mw⋹̸}⋺⋻⋼⋽⋾6⌅⌆1⌈⌉⌊⌋⌌⌍⌎⌏⌐1⌒⌓1⌕⌖5⌜⌝⌞⌟2⌢⌣9⌭⌮7⌶6⌽1⌿1o⍼1f⎰⎱2⎴⎵⎶11⏜⏝⏞⏟2⏢4⏧1n␣4kⓈ1j─1│9┌3┐3└3┘3├7┤7┬7┴7┼j═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬j▀3▄3█8░▒▓d□8▪▫1▭▮2▱1△▴▵2▸▹3▽▾▿2◂◃6◊○w◬2◯8◸◹◺◻◼8★☆7☎1d♀1♂t♠2♣1♥♦3♪2♭♮♯4j✓3✗8✠l✶x❘p❲❳2c⟈⟉s⟦⟧⟨⟩⟪⟫⟬⟭7⟵⟶⟷⟸⟹⟺1⟼2⟿76⤂⤃⤄⤅6⤌⤍⤎⤏⤐⤑⤒⤓2⤖2⤙⤚⤛⤜⤝⤞⤟⤠2⤣⤤⤥⤦⤧⤨⤩⤪8⤳{mw⤳̸}1⤵⤶⤷⤸⤹2⤼⤽7⥅2⥈⥉⥊⥋2⥎⥏⥐⥑⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜⥝⥞⥟⥠⥡⥢⥣⥤⥥⥦⥧⥨⥩⥪⥫⥬⥭⥮⥯⥰⥱⥲⥳⥴⥵⥶1⥸⥹1⥻⥼⥽⥾⥿5⦅⦆4⦋⦌⦍⦎⦏⦐⦑⦒⦓⦔⦕⦖3⦚1⦜⦝6⦤⦥⦦⦧⦨⦩⦪⦫⦬⦭⦮⦯⦰⦱⦲⦳⦴⦵⦶⦷1⦹1⦻⦼1⦾⦿⧀⧁⧂⧃⧄⧅3⧉3⧍⧎⧏{mw⧏̸}⧐{mw⧐̸}b⧜⧝⧞4⧣⧤⧥5⧫8⧴1⧶9⨀⨁⨂1⨄1⨆5⨌⨍2⨐⨑⨒⨓⨔⨕⨖⨗a⨢⨣⨤⨥⨦⨧1⨩⨪2⨭⨮⨯⨰⨱1⨳⨴⨵⨶⨷⨸⨹⨺⨻⨼2⨿⩀1⩂⩃⩄⩅⩆⩇⩈⩉⩊⩋⩌⩍2⩐2⩓⩔⩕⩖⩗⩘1⩚⩛⩜⩝1⩟6⩦3⩪2⩭{mw⩭̸}⩮⩯⩰{mw⩰̸}⩱⩲⩳⩴⩵1⩷⩸⩹⩺⩻⩼⩽{mw⩽̸}⩾{mw⩾̸}⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚2⪝⪞⪟⪠⪡{mw⪡̸}⪢{mw⪢̸}1⪤⪥⪦⪧⪨⪩⪪⪫⪬{1e68⪬︀}⪭{1e68⪭︀}⪮⪯{mw⪯̸}⪰{mw⪰̸}2⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅{mw⫅̸}⫆{mw⫆̸}⫇⫈2⫋{1e68⫋︀}⫌{1e68⫌︀}2⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫚⫛8⫤1⫦⫧⫨⫩1⫫⫬⫭⫮⫯⫰⫱⫲⫳9⫽{6hx⫽⃥}y7r{17ks𝒜1𝒞𝒟2𝒢2𝒥𝒦2𝒩𝒪𝒫𝒬1𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵𝒶𝒷𝒸𝒹1𝒻1𝒽𝒾𝒿𝓀𝓁𝓂𝓃1𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏1g𝔄𝔅1𝔇𝔈𝔉𝔊2𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔1𝔖𝔗𝔘𝔙𝔚𝔛𝔜1𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷𝔸𝔹1𝔻𝔼𝔽𝔾1𝕀𝕁𝕂𝕃𝕄1𝕆3𝕊𝕋𝕌𝕍𝕎𝕏𝕐1𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫}6vefffiflffiffl"), In = /* @__PURE__ */ new Uint32Array([
|
|
1167
|
+
const yn = /* @__PURE__ */ wn("9	
m!"#$%&'()*+,1./a:;<{6he<⃒}={6hx=⃥}>{6he>⃒}?@q[\]^_`5{2yfj}k{|}y ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒē2ĖėĘęĚěĜĝĞğĠġĢ1ĤĥĦħĨĩĪī2ĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌō2ŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžjƒyƵ1rǵ1tȷ3yˆˇg˘˙˚˛˜˝1f̑3jΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ1ΣΤΥΦΧΨΩ7αβγδεζηθικλμνξοπρςστυφχψω7ϑϒ2ϕϖ5Ϝϝiϰϱ3ϵ϶aЁЂЃЄЅІЇЈЉЊЋЌ1ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя1ёђѓєѕіїјљњћќ1ўџ5gi    1    ​‌‍‎‏‐2–—―‖1‘’‚1“”„1†‡•2‥…9‰‱′″‴‵3‹›3‾2⁁1⁃⁄a⁏7⁗7 {6bu  }⁠⁡⁢⁣20€1a⃛⃜11ℂ2℅4ℊℋℌℍℎℏℐℑℒℓ1ℕ№℗℘ℙℚℛℜℝ℞3™1ℤ2℧ℨ℩2ℬℭ1ℯℰℱ1ℳℴℵℶℷℸcⅅⅆⅇⅈa⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞1d←↑→↓↔↕↖↗↘↙↚↛1↝{mw↝̸}↞↟↠↡↢↣↤↥↦↧1↩↪↫↬↭↮1↰↱↲↳1↵↶↷2↺↻↼↽↾↿⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛1⇝6⇤⇥f⇵7⇽⇾⇿∀∁∂{mw∂̸}∃∄∅1∇∈∉1∋∌2∏∐∑−∓∔1∖∗∘1√2∝∞∟∠{6he∠⃒}∡∢∣∤∥∦∧∨∩{1e68∩︀}∪{1e68∪︀}∫∬∭∮∯∰∱∲∳∴∵∶∷∸1∺∻∼{6he∼⃒}∽{mp∽̱}∾{mr∾̳}∿≀≁≂{mw≂̸}≃≄≅≆≇≈≉≊≋{mw≋̸}≌≍{6he≍⃒}≎{mw≎̸}≏{mw≏̸}≐{mw≐̸}≑≒≓≔≕≖≗1≙≚1≜2≟≠≡{6hx≡⃥}≢1≤{6he≤⃒}≥{6he≥⃒}≦{mw≦̸}≧{mw≧̸}≨{1e68≨︀}≩{1e68≩︀}≪{mw≪̸5uh≪⃒}≫{mw≫̸5uh≫⃒}≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿{mw≿̸}⊀⊁⊂{6he⊂⃒}⊃{6he⊃⃒}⊄⊅⊆⊇⊈⊉⊊{1e68⊊︀}⊋{1e68⊋︀}1⊍⊎⊏{mw⊏̸}⊐{mw⊐̸}⊑⊒⊓{1e68⊓︀}⊔{1e68⊔︀}⊕⊖⊗⊘⊙⊚⊛1⊝⊞⊟⊠⊡⊢⊣⊤⊥1⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰1⊲⊳⊴{6he⊴⃒}⊵{6he⊵⃒}⊶⊷⊸⊹⊺⊻1⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘{mw⋘̸}⋙{mw⋙̸}⋚{1e68⋚︀}⋛{1e68⋛︀}2⋞⋟⋠⋡⋢⋣2⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵{mw⋵̸}⋶⋷1⋹{mw⋹̸}⋺⋻⋼⋽⋾6⌅⌆1⌈⌉⌊⌋⌌⌍⌎⌏⌐1⌒⌓1⌕⌖5⌜⌝⌞⌟2⌢⌣9⌭⌮7⌶6⌽1⌿1o⍼1f⎰⎱2⎴⎵⎶11⏜⏝⏞⏟2⏢4⏧1n␣4kⓈ1j─1│9┌3┐3└3┘3├7┤7┬7┴7┼j═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬j▀3▄3█8░▒▓d□8▪▫1▭▮2▱1△▴▵2▸▹3▽▾▿2◂◃6◊○w◬2◯8◸◹◺◻◼8★☆7☎1d♀1♂t♠2♣1♥♦3♪2♭♮♯4j✓3✗8✠l✶x❘p❲❳2c⟈⟉s⟦⟧⟨⟩⟪⟫⟬⟭7⟵⟶⟷⟸⟹⟺1⟼2⟿76⤂⤃⤄⤅6⤌⤍⤎⤏⤐⤑⤒⤓2⤖2⤙⤚⤛⤜⤝⤞⤟⤠2⤣⤤⤥⤦⤧⤨⤩⤪8⤳{mw⤳̸}1⤵⤶⤷⤸⤹2⤼⤽7⥅2⥈⥉⥊⥋2⥎⥏⥐⥑⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜⥝⥞⥟⥠⥡⥢⥣⥤⥥⥦⥧⥨⥩⥪⥫⥬⥭⥮⥯⥰⥱⥲⥳⥴⥵⥶1⥸⥹1⥻⥼⥽⥾⥿5⦅⦆4⦋⦌⦍⦎⦏⦐⦑⦒⦓⦔⦕⦖3⦚1⦜⦝6⦤⦥⦦⦧⦨⦩⦪⦫⦬⦭⦮⦯⦰⦱⦲⦳⦴⦵⦶⦷1⦹1⦻⦼1⦾⦿⧀⧁⧂⧃⧄⧅3⧉3⧍⧎⧏{mw⧏̸}⧐{mw⧐̸}b⧜⧝⧞4⧣⧤⧥5⧫8⧴1⧶9⨀⨁⨂1⨄1⨆5⨌⨍2⨐⨑⨒⨓⨔⨕⨖⨗a⨢⨣⨤⨥⨦⨧1⨩⨪2⨭⨮⨯⨰⨱1⨳⨴⨵⨶⨷⨸⨹⨺⨻⨼2⨿⩀1⩂⩃⩄⩅⩆⩇⩈⩉⩊⩋⩌⩍2⩐2⩓⩔⩕⩖⩗⩘1⩚⩛⩜⩝1⩟6⩦3⩪2⩭{mw⩭̸}⩮⩯⩰{mw⩰̸}⩱⩲⩳⩴⩵1⩷⩸⩹⩺⩻⩼⩽{mw⩽̸}⩾{mw⩾̸}⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚2⪝⪞⪟⪠⪡{mw⪡̸}⪢{mw⪢̸}1⪤⪥⪦⪧⪨⪩⪪⪫⪬{1e68⪬︀}⪭{1e68⪭︀}⪮⪯{mw⪯̸}⪰{mw⪰̸}2⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅{mw⫅̸}⫆{mw⫆̸}⫇⫈2⫋{1e68⫋︀}⫌{1e68⫌︀}2⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫚⫛8⫤1⫦⫧⫨⫩1⫫⫬⫭⫮⫯⫰⫱⫲⫳9⫽{6hx⫽⃥}y7r{17ks𝒜1𝒞𝒟2𝒢2𝒥𝒦2𝒩𝒪𝒫𝒬1𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵𝒶𝒷𝒸𝒹1𝒻1𝒽𝒾𝒿𝓀𝓁𝓂𝓃1𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏1g𝔄𝔅1𝔇𝔈𝔉𝔊2𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔1𝔖𝔗𝔘𝔙𝔚𝔛𝔜1𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷𝔸𝔹1𝔻𝔼𝔽𝔾1𝕀𝕁𝕂𝕃𝕄1𝕆3𝕊𝕋𝕌𝕍𝕎𝕏𝕐1𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫}6vefffiflffiffl"), En = /* @__PURE__ */ new Uint32Array([
|
|
1162
1168
|
5632,
|
|
1163
1169
|
// Bits for 09,0A,0C
|
|
1164
1170
|
4227923966,
|
|
@@ -1167,39 +1173,39 @@ const vn = /* @__PURE__ */ bn("9	
m!"#$%
|
|
|
1167
1173
|
// 64..95 -> 40, 5B-5F
|
|
1168
1174
|
939524097
|
|
1169
1175
|
// 96..127-> 60, 7B-7D
|
|
1170
|
-
]),
|
|
1171
|
-
function
|
|
1172
|
-
return
|
|
1176
|
+
]), kn = /* @__PURE__ */ new Uint32Array([0, tt, 0, 0]);
|
|
1177
|
+
function Bn(t) {
|
|
1178
|
+
return nt(En, t);
|
|
1173
1179
|
}
|
|
1174
|
-
function
|
|
1175
|
-
return
|
|
1180
|
+
function Sn(t) {
|
|
1181
|
+
return nt(kn, t);
|
|
1176
1182
|
}
|
|
1177
|
-
function
|
|
1183
|
+
function nt(t, e) {
|
|
1178
1184
|
let n, o = 0;
|
|
1179
|
-
const { length:
|
|
1180
|
-
for (let r = 0; r <
|
|
1185
|
+
const { length: A } = e;
|
|
1186
|
+
for (let r = 0; r < A; r++) {
|
|
1181
1187
|
const i = e.charCodeAt(r);
|
|
1182
1188
|
if (i < 128 && !(t[i >>> 5] >>> i & 1))
|
|
1183
1189
|
continue;
|
|
1184
1190
|
n === void 0 ? n = e.substring(0, r) : o !== r && (n += e.substring(o, r));
|
|
1185
|
-
let
|
|
1186
|
-
if (typeof
|
|
1187
|
-
if (r + 1 <
|
|
1188
|
-
const
|
|
1189
|
-
if (
|
|
1190
|
-
n +=
|
|
1191
|
+
let s = yn.get(i);
|
|
1192
|
+
if (typeof s == "object") {
|
|
1193
|
+
if (r + 1 < A) {
|
|
1194
|
+
const a = e.charCodeAt(r + 1), c = typeof s.next == "number" ? s.next === a ? s.nextValue : void 0 : s.next.get(a);
|
|
1195
|
+
if (c !== void 0) {
|
|
1196
|
+
n += c, r++, o = r + 1;
|
|
1191
1197
|
continue;
|
|
1192
1198
|
}
|
|
1193
1199
|
}
|
|
1194
|
-
|
|
1200
|
+
s = s.value;
|
|
1195
1201
|
}
|
|
1196
|
-
if (
|
|
1197
|
-
const
|
|
1198
|
-
n += `&#x${
|
|
1202
|
+
if (s === void 0) {
|
|
1203
|
+
const a = et(e, r);
|
|
1204
|
+
n += `&#x${a.toString(16)};`, a !== i && r++, o = r + 1;
|
|
1199
1205
|
} else
|
|
1200
|
-
n +=
|
|
1206
|
+
n += s, o = r + 1;
|
|
1201
1207
|
}
|
|
1202
|
-
return n === void 0 ? e : (o <
|
|
1208
|
+
return n === void 0 ? e : (o < A && (n += e.substr(o)), n);
|
|
1203
1209
|
}
|
|
1204
1210
|
var T;
|
|
1205
1211
|
(function(t) {
|
|
@@ -1213,77 +1219,82 @@ function be(t, e = T.XML) {
|
|
|
1213
1219
|
const { mode: n = Q.Extensive, level: o = T.XML } = typeof e == "number" ? { level: e } : e;
|
|
1214
1220
|
switch (n) {
|
|
1215
1221
|
case Q.UTF8:
|
|
1216
|
-
return
|
|
1222
|
+
return vn(t);
|
|
1217
1223
|
case Q.Attribute:
|
|
1218
|
-
return
|
|
1224
|
+
return In(t);
|
|
1219
1225
|
case Q.Text:
|
|
1220
|
-
return
|
|
1226
|
+
return Cn(t);
|
|
1221
1227
|
case Q.ASCII:
|
|
1222
|
-
return o === T.HTML ?
|
|
1228
|
+
return o === T.HTML ? Sn(t) : Ke(t);
|
|
1223
1229
|
// biome-ignore lint/complexity/noUselessSwitchCase: we get an error for the switch not being exhaustive
|
|
1224
1230
|
case Q.Extensive:
|
|
1225
1231
|
// eslint-disable-line unicorn/no-useless-switch-case
|
|
1226
1232
|
default:
|
|
1227
|
-
return o === T.HTML ?
|
|
1233
|
+
return o === T.HTML ? Bn(t) : Ke(t);
|
|
1228
1234
|
}
|
|
1229
1235
|
}
|
|
1230
|
-
const
|
|
1231
|
-
function
|
|
1236
|
+
const xn = "<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\/script>", Dn = "<style\\b[^<]*(?:(?!<\\/style>)<[^<]*)*</style>", Rn = "<([^>]+)>", Fn = "&.*?;", Zn = [xn, Dn, Rn, Fn], Mn = "(" + Zn.join("|") + ")", rt = fe(["BR", "P", "DIV"]), Wn = fe(["BR"]);
|
|
1237
|
+
function Hn(t) {
|
|
1232
1238
|
const [e = "", n = "", o = ""] = (/^<(\/?)(\w+)/i.exec(t.toUpperCase()) || []).slice(1);
|
|
1233
|
-
return n && (
|
|
1239
|
+
return n && (Wn[n] || rt[n] && (e || o)) ? `
|
|
1234
1240
|
` : "";
|
|
1235
1241
|
}
|
|
1236
|
-
function
|
|
1237
|
-
const e = new RegExp(
|
|
1242
|
+
function Qn(t) {
|
|
1243
|
+
const e = new RegExp(Mn, "ig"), n = [];
|
|
1238
1244
|
let o = 0;
|
|
1239
|
-
return [t.replace(e, (r, i,
|
|
1240
|
-
const
|
|
1241
|
-
return o -= r.length -
|
|
1242
|
-
oldPosition:
|
|
1245
|
+
return [t.replace(e, (r, i, s, a) => {
|
|
1246
|
+
const c = r.startsWith("&") ? bn(r) : Hn(r);
|
|
1247
|
+
return o -= r.length - c.length, n.push({
|
|
1248
|
+
oldPosition: a + r.length,
|
|
1243
1249
|
diffOffset: o
|
|
1244
|
-
}),
|
|
1250
|
+
}), c;
|
|
1245
1251
|
}), n];
|
|
1246
1252
|
}
|
|
1253
|
+
let ot = !1;
|
|
1247
1254
|
function H(t, ...e) {
|
|
1255
|
+
ot && console.log(t, ...e);
|
|
1248
1256
|
}
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1257
|
+
function Xr() {
|
|
1258
|
+
ot = !0;
|
|
1259
|
+
}
|
|
1260
|
+
var Ae = { exports: {} }, Ne;
|
|
1261
|
+
function Kn() {
|
|
1262
|
+
return Ne || (Ne = 1, (function(t) {
|
|
1252
1263
|
var e = function() {
|
|
1253
1264
|
this.Diff_Timeout = 1, this.Diff_EditCost = 4, this.Match_Threshold = 0.5, this.Match_Distance = 1e3, this.Patch_DeleteThreshold = 0.5, this.Patch_Margin = 4, this.Match_MaxBits = 32;
|
|
1254
|
-
}, n = -1, o = 1,
|
|
1265
|
+
}, n = -1, o = 1, A = 0;
|
|
1255
1266
|
e.Diff = function(r, i) {
|
|
1256
1267
|
return [r, i];
|
|
1257
|
-
}, e.prototype.diff_main = function(r, i,
|
|
1258
|
-
typeof
|
|
1259
|
-
var
|
|
1268
|
+
}, e.prototype.diff_main = function(r, i, s, a) {
|
|
1269
|
+
typeof a > "u" && (this.Diff_Timeout <= 0 ? a = Number.MAX_VALUE : a = (/* @__PURE__ */ new Date()).getTime() + this.Diff_Timeout * 1e3);
|
|
1270
|
+
var c = a;
|
|
1260
1271
|
if (r == null || i == null)
|
|
1261
1272
|
throw new Error("Null input. (diff_main)");
|
|
1262
1273
|
if (r == i)
|
|
1263
|
-
return r ? [new e.Diff(
|
|
1264
|
-
typeof
|
|
1265
|
-
var l =
|
|
1274
|
+
return r ? [new e.Diff(A, r)] : [];
|
|
1275
|
+
typeof s > "u" && (s = !0);
|
|
1276
|
+
var l = s, d = this.diff_commonPrefix(r, i), u = r.substring(0, d);
|
|
1266
1277
|
r = r.substring(d), i = i.substring(d), d = this.diff_commonSuffix(r, i);
|
|
1267
1278
|
var g = r.substring(r.length - d);
|
|
1268
1279
|
r = r.substring(0, r.length - d), i = i.substring(0, i.length - d);
|
|
1269
|
-
var h = this.diff_compute_(r, i, l,
|
|
1270
|
-
return u && h.unshift(new e.Diff(
|
|
1271
|
-
}, e.prototype.diff_compute_ = function(r, i,
|
|
1272
|
-
var
|
|
1280
|
+
var h = this.diff_compute_(r, i, l, c);
|
|
1281
|
+
return u && h.unshift(new e.Diff(A, u)), g && h.push(new e.Diff(A, g)), this.diff_cleanupMerge(h), h;
|
|
1282
|
+
}, e.prototype.diff_compute_ = function(r, i, s, a) {
|
|
1283
|
+
var c;
|
|
1273
1284
|
if (!r)
|
|
1274
1285
|
return [new e.Diff(o, i)];
|
|
1275
1286
|
if (!i)
|
|
1276
1287
|
return [new e.Diff(n, r)];
|
|
1277
1288
|
var l = r.length > i.length ? r : i, d = r.length > i.length ? i : r, u = l.indexOf(d);
|
|
1278
1289
|
if (u != -1)
|
|
1279
|
-
return
|
|
1290
|
+
return c = [
|
|
1280
1291
|
new e.Diff(o, l.substring(0, u)),
|
|
1281
|
-
new e.Diff(
|
|
1292
|
+
new e.Diff(A, d),
|
|
1282
1293
|
new e.Diff(
|
|
1283
1294
|
o,
|
|
1284
1295
|
l.substring(u + d.length)
|
|
1285
1296
|
)
|
|
1286
|
-
], r.length > i.length && (
|
|
1297
|
+
], r.length > i.length && (c[0][0] = c[2][0] = n), c;
|
|
1287
1298
|
if (d.length == 1)
|
|
1288
1299
|
return [
|
|
1289
1300
|
new e.Diff(n, r),
|
|
@@ -1291,18 +1302,18 @@ function Mn() {
|
|
|
1291
1302
|
];
|
|
1292
1303
|
var g = this.diff_halfMatch_(r, i);
|
|
1293
1304
|
if (g) {
|
|
1294
|
-
var h = g[0], f = g[1], p = g[2], m = g[3], v = g[4], I = this.diff_main(h, p,
|
|
1305
|
+
var h = g[0], f = g[1], p = g[2], m = g[3], v = g[4], I = this.diff_main(h, p, s, a), C = this.diff_main(f, m, s, a);
|
|
1295
1306
|
return I.concat(
|
|
1296
|
-
[new e.Diff(
|
|
1307
|
+
[new e.Diff(A, v)],
|
|
1297
1308
|
C
|
|
1298
1309
|
);
|
|
1299
1310
|
}
|
|
1300
|
-
return
|
|
1301
|
-
}, e.prototype.diff_lineMode_ = function(r, i,
|
|
1302
|
-
var
|
|
1303
|
-
r =
|
|
1304
|
-
var
|
|
1305
|
-
this.diff_charsToLines_(l,
|
|
1311
|
+
return s && r.length > 100 && i.length > 100 ? this.diff_lineMode_(r, i, a) : this.diff_bisect_(r, i, a);
|
|
1312
|
+
}, e.prototype.diff_lineMode_ = function(r, i, s) {
|
|
1313
|
+
var a = this.diff_linesToChars_(r, i);
|
|
1314
|
+
r = a.chars1, i = a.chars2;
|
|
1315
|
+
var c = a.lineArray, l = this.diff_main(r, i, !1, s);
|
|
1316
|
+
this.diff_charsToLines_(l, c), this.diff_cleanupSemantic(l), l.push(new e.Diff(A, ""));
|
|
1306
1317
|
for (var d = 0, u = 0, g = 0, h = "", f = ""; d < l.length; ) {
|
|
1307
1318
|
switch (l[d][0]) {
|
|
1308
1319
|
case o:
|
|
@@ -1311,13 +1322,13 @@ function Mn() {
|
|
|
1311
1322
|
case n:
|
|
1312
1323
|
u++, h += l[d][1];
|
|
1313
1324
|
break;
|
|
1314
|
-
case
|
|
1325
|
+
case A:
|
|
1315
1326
|
if (u >= 1 && g >= 1) {
|
|
1316
1327
|
l.splice(
|
|
1317
1328
|
d - u - g,
|
|
1318
1329
|
u + g
|
|
1319
1330
|
), d = d - u - g;
|
|
1320
|
-
for (var p = this.diff_main(h, f, !1,
|
|
1331
|
+
for (var p = this.diff_main(h, f, !1, s), m = p.length - 1; m >= 0; m--)
|
|
1321
1332
|
l.splice(d, 0, p[m]);
|
|
1322
1333
|
d = d + p.length;
|
|
1323
1334
|
}
|
|
@@ -1327,44 +1338,44 @@ function Mn() {
|
|
|
1327
1338
|
d++;
|
|
1328
1339
|
}
|
|
1329
1340
|
return l.pop(), l;
|
|
1330
|
-
}, e.prototype.diff_bisect_ = function(r, i,
|
|
1331
|
-
for (var
|
|
1341
|
+
}, e.prototype.diff_bisect_ = function(r, i, s) {
|
|
1342
|
+
for (var a = r.length, c = i.length, l = Math.ceil((a + c) / 2), d = l, u = 2 * l, g = new Array(u), h = new Array(u), f = 0; f < u; f++)
|
|
1332
1343
|
g[f] = -1, h[f] = -1;
|
|
1333
1344
|
g[d + 1] = 0, h[d + 1] = 0;
|
|
1334
|
-
for (var p =
|
|
1345
|
+
for (var p = a - c, m = p % 2 != 0, v = 0, I = 0, C = 0, E = 0, b = 0; b < l && !((/* @__PURE__ */ new Date()).getTime() > s); b++) {
|
|
1335
1346
|
for (var w = -b + v; w <= b - I; w += 2) {
|
|
1336
1347
|
var y = d + w, k;
|
|
1337
1348
|
w == -b || w != b && g[y - 1] < g[y + 1] ? k = g[y + 1] : k = g[y - 1] + 1;
|
|
1338
|
-
for (var R = k - w; k <
|
|
1349
|
+
for (var R = k - w; k < a && R < c && r.charAt(k) == i.charAt(R); )
|
|
1339
1350
|
k++, R++;
|
|
1340
|
-
if (g[y] = k, k >
|
|
1351
|
+
if (g[y] = k, k > a)
|
|
1341
1352
|
I += 2;
|
|
1342
|
-
else if (R >
|
|
1353
|
+
else if (R > c)
|
|
1343
1354
|
v += 2;
|
|
1344
1355
|
else if (m) {
|
|
1345
1356
|
var x = d + p - w;
|
|
1346
1357
|
if (x >= 0 && x < u && h[x] != -1) {
|
|
1347
|
-
var S =
|
|
1358
|
+
var S = a - h[x];
|
|
1348
1359
|
if (k >= S)
|
|
1349
|
-
return this.diff_bisectSplit_(r, i, k, R,
|
|
1360
|
+
return this.diff_bisectSplit_(r, i, k, R, s);
|
|
1350
1361
|
}
|
|
1351
1362
|
}
|
|
1352
1363
|
}
|
|
1353
1364
|
for (var Z = -b + C; Z <= b - E; Z += 2) {
|
|
1354
1365
|
var x = d + Z, S;
|
|
1355
1366
|
Z == -b || Z != b && h[x - 1] < h[x + 1] ? S = h[x + 1] : S = h[x - 1] + 1;
|
|
1356
|
-
for (var W = S - Z; S <
|
|
1367
|
+
for (var W = S - Z; S < a && W < c && r.charAt(a - S - 1) == i.charAt(c - W - 1); )
|
|
1357
1368
|
S++, W++;
|
|
1358
|
-
if (h[x] = S, S >
|
|
1369
|
+
if (h[x] = S, S > a)
|
|
1359
1370
|
E += 2;
|
|
1360
|
-
else if (W >
|
|
1371
|
+
else if (W > c)
|
|
1361
1372
|
C += 2;
|
|
1362
1373
|
else if (!m) {
|
|
1363
1374
|
var y = d + p - Z;
|
|
1364
1375
|
if (y >= 0 && y < u && g[y] != -1) {
|
|
1365
1376
|
var k = g[y], R = d + k - y;
|
|
1366
|
-
if (S =
|
|
1367
|
-
return this.diff_bisectSplit_(r, i, k, R,
|
|
1377
|
+
if (S = a - S, k >= S)
|
|
1378
|
+
return this.diff_bisectSplit_(r, i, k, R, s);
|
|
1368
1379
|
}
|
|
1369
1380
|
}
|
|
1370
1381
|
}
|
|
@@ -1373,70 +1384,70 @@ function Mn() {
|
|
|
1373
1384
|
new e.Diff(n, r),
|
|
1374
1385
|
new e.Diff(o, i)
|
|
1375
1386
|
];
|
|
1376
|
-
}, e.prototype.diff_bisectSplit_ = function(r, i,
|
|
1377
|
-
var l = r.substring(0,
|
|
1387
|
+
}, e.prototype.diff_bisectSplit_ = function(r, i, s, a, c) {
|
|
1388
|
+
var l = r.substring(0, s), d = i.substring(0, a), u = r.substring(s), g = i.substring(a), h = this.diff_main(l, d, !1, c), f = this.diff_main(u, g, !1, c);
|
|
1378
1389
|
return h.concat(f);
|
|
1379
1390
|
}, e.prototype.diff_linesToChars_ = function(r, i) {
|
|
1380
|
-
var
|
|
1381
|
-
|
|
1382
|
-
function
|
|
1383
|
-
for (var h = "", f = 0, p = -1, m =
|
|
1391
|
+
var s = [], a = {};
|
|
1392
|
+
s[0] = "";
|
|
1393
|
+
function c(g) {
|
|
1394
|
+
for (var h = "", f = 0, p = -1, m = s.length; p < g.length - 1; ) {
|
|
1384
1395
|
p = g.indexOf(`
|
|
1385
1396
|
`, f), p == -1 && (p = g.length - 1);
|
|
1386
1397
|
var v = g.substring(f, p + 1);
|
|
1387
|
-
(
|
|
1398
|
+
(a.hasOwnProperty ? a.hasOwnProperty(v) : a[v] !== void 0) ? h += String.fromCharCode(a[v]) : (m == l && (v = g.substring(f), p = g.length), h += String.fromCharCode(m), a[v] = m, s[m++] = v), f = p + 1;
|
|
1388
1399
|
}
|
|
1389
1400
|
return h;
|
|
1390
1401
|
}
|
|
1391
|
-
var l = 4e4, d =
|
|
1402
|
+
var l = 4e4, d = c(r);
|
|
1392
1403
|
l = 65535;
|
|
1393
|
-
var u =
|
|
1394
|
-
return { chars1: d, chars2: u, lineArray:
|
|
1404
|
+
var u = c(i);
|
|
1405
|
+
return { chars1: d, chars2: u, lineArray: s };
|
|
1395
1406
|
}, e.prototype.diff_charsToLines_ = function(r, i) {
|
|
1396
|
-
for (var
|
|
1397
|
-
for (var
|
|
1398
|
-
|
|
1399
|
-
r[
|
|
1407
|
+
for (var s = 0; s < r.length; s++) {
|
|
1408
|
+
for (var a = r[s][1], c = [], l = 0; l < a.length; l++)
|
|
1409
|
+
c[l] = i[a.charCodeAt(l)];
|
|
1410
|
+
r[s][1] = c.join("");
|
|
1400
1411
|
}
|
|
1401
1412
|
}, e.prototype.diff_commonPrefix = function(r, i) {
|
|
1402
1413
|
if (!r || !i || r.charAt(0) != i.charAt(0))
|
|
1403
1414
|
return 0;
|
|
1404
|
-
for (var
|
|
1405
|
-
r.substring(l,
|
|
1406
|
-
return
|
|
1415
|
+
for (var s = 0, a = Math.min(r.length, i.length), c = a, l = 0; s < c; )
|
|
1416
|
+
r.substring(l, c) == i.substring(l, c) ? (s = c, l = s) : a = c, c = Math.floor((a - s) / 2 + s);
|
|
1417
|
+
return c;
|
|
1407
1418
|
}, e.prototype.diff_commonSuffix = function(r, i) {
|
|
1408
1419
|
if (!r || !i || r.charAt(r.length - 1) != i.charAt(i.length - 1))
|
|
1409
1420
|
return 0;
|
|
1410
|
-
for (var
|
|
1411
|
-
r.substring(r.length -
|
|
1412
|
-
return
|
|
1421
|
+
for (var s = 0, a = Math.min(r.length, i.length), c = a, l = 0; s < c; )
|
|
1422
|
+
r.substring(r.length - c, r.length - l) == i.substring(i.length - c, i.length - l) ? (s = c, l = s) : a = c, c = Math.floor((a - s) / 2 + s);
|
|
1423
|
+
return c;
|
|
1413
1424
|
}, e.prototype.diff_commonOverlap_ = function(r, i) {
|
|
1414
|
-
var
|
|
1415
|
-
if (
|
|
1425
|
+
var s = r.length, a = i.length;
|
|
1426
|
+
if (s == 0 || a == 0)
|
|
1416
1427
|
return 0;
|
|
1417
|
-
|
|
1418
|
-
var
|
|
1428
|
+
s > a ? r = r.substring(s - a) : s < a && (i = i.substring(0, s));
|
|
1429
|
+
var c = Math.min(s, a);
|
|
1419
1430
|
if (r == i)
|
|
1420
|
-
return
|
|
1431
|
+
return c;
|
|
1421
1432
|
for (var l = 0, d = 1; ; ) {
|
|
1422
|
-
var u = r.substring(
|
|
1433
|
+
var u = r.substring(c - d), g = i.indexOf(u);
|
|
1423
1434
|
if (g == -1)
|
|
1424
1435
|
return l;
|
|
1425
|
-
d += g, (g == 0 || r.substring(
|
|
1436
|
+
d += g, (g == 0 || r.substring(c - d) == i.substring(0, d)) && (l = d, d++);
|
|
1426
1437
|
}
|
|
1427
1438
|
}, e.prototype.diff_halfMatch_ = function(r, i) {
|
|
1428
1439
|
if (this.Diff_Timeout <= 0)
|
|
1429
1440
|
return null;
|
|
1430
|
-
var
|
|
1431
|
-
if (
|
|
1441
|
+
var s = r.length > i.length ? r : i, a = r.length > i.length ? i : r;
|
|
1442
|
+
if (s.length < 4 || a.length * 2 < s.length)
|
|
1432
1443
|
return null;
|
|
1433
|
-
var
|
|
1444
|
+
var c = this;
|
|
1434
1445
|
function l(I, C, E) {
|
|
1435
1446
|
for (var b = I.substring(E, E + Math.floor(I.length / 4)), w = -1, y = "", k, R, x, S; (w = C.indexOf(b, w + 1)) != -1; ) {
|
|
1436
|
-
var Z =
|
|
1447
|
+
var Z = c.diff_commonPrefix(
|
|
1437
1448
|
I.substring(E),
|
|
1438
1449
|
C.substring(w)
|
|
1439
|
-
), W =
|
|
1450
|
+
), W = c.diff_commonSuffix(
|
|
1440
1451
|
I.substring(0, E),
|
|
1441
1452
|
C.substring(0, w)
|
|
1442
1453
|
);
|
|
@@ -1451,13 +1462,13 @@ function Mn() {
|
|
|
1451
1462
|
] : null;
|
|
1452
1463
|
}
|
|
1453
1464
|
var d = l(
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
Math.ceil(
|
|
1465
|
+
s,
|
|
1466
|
+
a,
|
|
1467
|
+
Math.ceil(s.length / 4)
|
|
1457
1468
|
), u = l(
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
Math.ceil(
|
|
1469
|
+
s,
|
|
1470
|
+
a,
|
|
1471
|
+
Math.ceil(s.length / 2)
|
|
1461
1472
|
), g;
|
|
1462
1473
|
if (!d && !u)
|
|
1463
1474
|
return null;
|
|
@@ -1467,23 +1478,23 @@ function Mn() {
|
|
|
1467
1478
|
var v = g[4];
|
|
1468
1479
|
return [h, f, p, m, v];
|
|
1469
1480
|
}, e.prototype.diff_cleanupSemantic = function(r) {
|
|
1470
|
-
for (var i = !1,
|
|
1471
|
-
r[l][0] ==
|
|
1481
|
+
for (var i = !1, s = [], a = 0, c = null, l = 0, d = 0, u = 0, g = 0, h = 0; l < r.length; )
|
|
1482
|
+
r[l][0] == A ? (s[a++] = l, d = g, u = h, g = 0, h = 0, c = r[l][1]) : (r[l][0] == o ? g += r[l][1].length : h += r[l][1].length, c && c.length <= Math.max(d, u) && c.length <= Math.max(
|
|
1472
1483
|
g,
|
|
1473
1484
|
h
|
|
1474
1485
|
) && (r.splice(
|
|
1475
|
-
|
|
1486
|
+
s[a - 1],
|
|
1476
1487
|
0,
|
|
1477
|
-
new e.Diff(n,
|
|
1478
|
-
), r[
|
|
1488
|
+
new e.Diff(n, c)
|
|
1489
|
+
), r[s[a - 1] + 1][0] = o, a--, a--, l = a > 0 ? s[a - 1] : -1, d = 0, u = 0, g = 0, h = 0, c = null, i = !0)), l++;
|
|
1479
1490
|
for (i && this.diff_cleanupMerge(r), this.diff_cleanupSemanticLossless(r), l = 1; l < r.length; ) {
|
|
1480
1491
|
if (r[l - 1][0] == n && r[l][0] == o) {
|
|
1481
1492
|
var f = r[l - 1][1], p = r[l][1], m = this.diff_commonOverlap_(f, p), v = this.diff_commonOverlap_(p, f);
|
|
1482
1493
|
m >= v ? (m >= f.length / 2 || m >= p.length / 2) && (r.splice(l, 0, new e.Diff(
|
|
1483
|
-
|
|
1494
|
+
A,
|
|
1484
1495
|
p.substring(0, m)
|
|
1485
1496
|
)), r[l - 1][1] = f.substring(0, f.length - m), r[l + 1][1] = p.substring(m), l++) : (v >= f.length / 2 || v >= p.length / 2) && (r.splice(l, 0, new e.Diff(
|
|
1486
|
-
|
|
1497
|
+
A,
|
|
1487
1498
|
f.substring(0, v)
|
|
1488
1499
|
)), r[l - 1][0] = o, r[l - 1][1] = p.substring(0, p.length - v), r[l + 1][0] = n, r[l + 1][1] = f.substring(v), l++), l++;
|
|
1489
1500
|
}
|
|
@@ -1496,68 +1507,68 @@ function Mn() {
|
|
|
1496
1507
|
var C = v.charAt(v.length - 1), E = I.charAt(0), b = C.match(e.nonAlphaNumericRegex_), w = E.match(e.nonAlphaNumericRegex_), y = b && C.match(e.whitespaceRegex_), k = w && E.match(e.whitespaceRegex_), R = y && C.match(e.linebreakRegex_), x = k && E.match(e.linebreakRegex_), S = R && v.match(e.blanklineEndRegex_), Z = x && I.match(e.blanklineStartRegex_);
|
|
1497
1508
|
return S || Z ? 5 : R || x ? 4 : b && !y && k ? 3 : y || k ? 2 : b || w ? 1 : 0;
|
|
1498
1509
|
}
|
|
1499
|
-
for (var
|
|
1500
|
-
if (r[
|
|
1501
|
-
var
|
|
1510
|
+
for (var s = 1; s < r.length - 1; ) {
|
|
1511
|
+
if (r[s - 1][0] == A && r[s + 1][0] == A) {
|
|
1512
|
+
var a = r[s - 1][1], c = r[s][1], l = r[s + 1][1], d = this.diff_commonSuffix(a, c);
|
|
1502
1513
|
if (d) {
|
|
1503
|
-
var u =
|
|
1504
|
-
|
|
1514
|
+
var u = c.substring(c.length - d);
|
|
1515
|
+
a = a.substring(0, a.length - d), c = u + c.substring(0, c.length - d), l = u + l;
|
|
1505
1516
|
}
|
|
1506
|
-
for (var g =
|
|
1507
|
-
|
|
1508
|
-
var m = i(
|
|
1509
|
-
m >= p && (p = m, g =
|
|
1517
|
+
for (var g = a, h = c, f = l, p = i(a, c) + i(c, l); c.charAt(0) === l.charAt(0); ) {
|
|
1518
|
+
a += c.charAt(0), c = c.substring(1) + l.charAt(0), l = l.substring(1);
|
|
1519
|
+
var m = i(a, c) + i(c, l);
|
|
1520
|
+
m >= p && (p = m, g = a, h = c, f = l);
|
|
1510
1521
|
}
|
|
1511
|
-
r[
|
|
1522
|
+
r[s - 1][1] != g && (g ? r[s - 1][1] = g : (r.splice(s - 1, 1), s--), r[s][1] = h, f ? r[s + 1][1] = f : (r.splice(s + 1, 1), s--));
|
|
1512
1523
|
}
|
|
1513
|
-
|
|
1524
|
+
s++;
|
|
1514
1525
|
}
|
|
1515
1526
|
}, e.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/, e.whitespaceRegex_ = /\s/, e.linebreakRegex_ = /[\r\n]/, e.blanklineEndRegex_ = /\n\r?\n$/, e.blanklineStartRegex_ = /^\r?\n\r?\n/, e.prototype.diff_cleanupEfficiency = function(r) {
|
|
1516
|
-
for (var i = !1,
|
|
1517
|
-
r[l][0] ==
|
|
1518
|
-
|
|
1527
|
+
for (var i = !1, s = [], a = 0, c = null, l = 0, d = !1, u = !1, g = !1, h = !1; l < r.length; )
|
|
1528
|
+
r[l][0] == A ? (r[l][1].length < this.Diff_EditCost && (g || h) ? (s[a++] = l, d = g, u = h, c = r[l][1]) : (a = 0, c = null), g = h = !1) : (r[l][0] == n ? h = !0 : g = !0, c && (d && u && g && h || c.length < this.Diff_EditCost / 2 && d + u + g + h == 3) && (r.splice(
|
|
1529
|
+
s[a - 1],
|
|
1519
1530
|
0,
|
|
1520
|
-
new e.Diff(n,
|
|
1521
|
-
), r[
|
|
1531
|
+
new e.Diff(n, c)
|
|
1532
|
+
), r[s[a - 1] + 1][0] = o, a--, c = null, d && u ? (g = h = !0, a = 0) : (a--, l = a > 0 ? s[a - 1] : -1, g = h = !1), i = !0)), l++;
|
|
1522
1533
|
i && this.diff_cleanupMerge(r);
|
|
1523
1534
|
}, e.prototype.diff_cleanupMerge = function(r) {
|
|
1524
|
-
r.push(new e.Diff(
|
|
1525
|
-
for (var i = 0,
|
|
1535
|
+
r.push(new e.Diff(A, ""));
|
|
1536
|
+
for (var i = 0, s = 0, a = 0, c = "", l = "", d; i < r.length; )
|
|
1526
1537
|
switch (r[i][0]) {
|
|
1527
1538
|
case o:
|
|
1528
|
-
|
|
1539
|
+
a++, l += r[i][1], i++;
|
|
1529
1540
|
break;
|
|
1530
1541
|
case n:
|
|
1531
|
-
|
|
1542
|
+
s++, c += r[i][1], i++;
|
|
1532
1543
|
break;
|
|
1533
|
-
case
|
|
1534
|
-
|
|
1535
|
-
|
|
1544
|
+
case A:
|
|
1545
|
+
s + a > 1 ? (s !== 0 && a !== 0 && (d = this.diff_commonPrefix(l, c), d !== 0 && (i - s - a > 0 && r[i - s - a - 1][0] == A ? r[i - s - a - 1][1] += l.substring(0, d) : (r.splice(0, 0, new e.Diff(
|
|
1546
|
+
A,
|
|
1536
1547
|
l.substring(0, d)
|
|
1537
|
-
)), i++), l = l.substring(d),
|
|
1548
|
+
)), i++), l = l.substring(d), c = c.substring(d)), d = this.diff_commonSuffix(l, c), d !== 0 && (r[i][1] = l.substring(l.length - d) + r[i][1], l = l.substring(0, l.length - d), c = c.substring(0, c.length - d))), i -= s + a, r.splice(i, s + a), c.length && (r.splice(
|
|
1538
1549
|
i,
|
|
1539
1550
|
0,
|
|
1540
|
-
new e.Diff(n,
|
|
1551
|
+
new e.Diff(n, c)
|
|
1541
1552
|
), i++), l.length && (r.splice(
|
|
1542
1553
|
i,
|
|
1543
1554
|
0,
|
|
1544
1555
|
new e.Diff(o, l)
|
|
1545
|
-
), i++), i++) : i !== 0 && r[i - 1][0] ==
|
|
1556
|
+
), i++), i++) : i !== 0 && r[i - 1][0] == A ? (r[i - 1][1] += r[i][1], r.splice(i, 1)) : i++, a = 0, s = 0, c = "", l = "";
|
|
1546
1557
|
break;
|
|
1547
1558
|
}
|
|
1548
1559
|
r[r.length - 1][1] === "" && r.pop();
|
|
1549
1560
|
var u = !1;
|
|
1550
1561
|
for (i = 1; i < r.length - 1; )
|
|
1551
|
-
r[i - 1][0] ==
|
|
1562
|
+
r[i - 1][0] == A && r[i + 1][0] == A && (r[i][1].substring(r[i][1].length - r[i - 1][1].length) == r[i - 1][1] ? (r[i][1] = r[i - 1][1] + r[i][1].substring(0, r[i][1].length - r[i - 1][1].length), r[i + 1][1] = r[i - 1][1] + r[i + 1][1], r.splice(i - 1, 1), u = !0) : r[i][1].substring(0, r[i + 1][1].length) == r[i + 1][1] && (r[i - 1][1] += r[i + 1][1], r[i][1] = r[i][1].substring(r[i + 1][1].length) + r[i + 1][1], r.splice(i + 1, 1), u = !0)), i++;
|
|
1552
1563
|
u && this.diff_cleanupMerge(r);
|
|
1553
1564
|
}, e.prototype.diff_xIndex = function(r, i) {
|
|
1554
|
-
var
|
|
1555
|
-
for (d = 0; d < r.length && (r[d][0] !== o && (
|
|
1556
|
-
|
|
1557
|
-
return r.length != d && r[d][0] === n ? l : l + (i -
|
|
1565
|
+
var s = 0, a = 0, c = 0, l = 0, d;
|
|
1566
|
+
for (d = 0; d < r.length && (r[d][0] !== o && (s += r[d][1].length), r[d][0] !== n && (a += r[d][1].length), !(s > i)); d++)
|
|
1567
|
+
c = s, l = a;
|
|
1568
|
+
return r.length != d && r[d][0] === n ? l : l + (i - c);
|
|
1558
1569
|
}, e.prototype.diff_prettyHtml = function(r) {
|
|
1559
|
-
for (var i = [],
|
|
1560
|
-
var u = r[d][0], g = r[d][1], h = g.replace(
|
|
1570
|
+
for (var i = [], s = /&/g, a = /</g, c = />/g, l = /\n/g, d = 0; d < r.length; d++) {
|
|
1571
|
+
var u = r[d][0], g = r[d][1], h = g.replace(s, "&").replace(a, "<").replace(c, ">").replace(l, "¶<br>");
|
|
1561
1572
|
switch (u) {
|
|
1562
1573
|
case o:
|
|
1563
1574
|
i[d] = '<ins style="background:#e6ffe6;">' + h + "</ins>";
|
|
@@ -1565,57 +1576,57 @@ function Mn() {
|
|
|
1565
1576
|
case n:
|
|
1566
1577
|
i[d] = '<del style="background:#ffe6e6;">' + h + "</del>";
|
|
1567
1578
|
break;
|
|
1568
|
-
case
|
|
1579
|
+
case A:
|
|
1569
1580
|
i[d] = "<span>" + h + "</span>";
|
|
1570
1581
|
break;
|
|
1571
1582
|
}
|
|
1572
1583
|
}
|
|
1573
1584
|
return i.join("");
|
|
1574
1585
|
}, e.prototype.diff_text1 = function(r) {
|
|
1575
|
-
for (var i = [],
|
|
1576
|
-
r[
|
|
1586
|
+
for (var i = [], s = 0; s < r.length; s++)
|
|
1587
|
+
r[s][0] !== o && (i[s] = r[s][1]);
|
|
1577
1588
|
return i.join("");
|
|
1578
1589
|
}, e.prototype.diff_text2 = function(r) {
|
|
1579
|
-
for (var i = [],
|
|
1580
|
-
r[
|
|
1590
|
+
for (var i = [], s = 0; s < r.length; s++)
|
|
1591
|
+
r[s][0] !== n && (i[s] = r[s][1]);
|
|
1581
1592
|
return i.join("");
|
|
1582
1593
|
}, e.prototype.diff_levenshtein = function(r) {
|
|
1583
|
-
for (var i = 0,
|
|
1584
|
-
var l = r[
|
|
1594
|
+
for (var i = 0, s = 0, a = 0, c = 0; c < r.length; c++) {
|
|
1595
|
+
var l = r[c][0], d = r[c][1];
|
|
1585
1596
|
switch (l) {
|
|
1586
1597
|
case o:
|
|
1587
|
-
|
|
1598
|
+
s += d.length;
|
|
1588
1599
|
break;
|
|
1589
1600
|
case n:
|
|
1590
|
-
|
|
1601
|
+
a += d.length;
|
|
1591
1602
|
break;
|
|
1592
|
-
case
|
|
1593
|
-
i += Math.max(
|
|
1603
|
+
case A:
|
|
1604
|
+
i += Math.max(s, a), s = 0, a = 0;
|
|
1594
1605
|
break;
|
|
1595
1606
|
}
|
|
1596
1607
|
}
|
|
1597
|
-
return i += Math.max(
|
|
1608
|
+
return i += Math.max(s, a), i;
|
|
1598
1609
|
}, e.prototype.diff_toDelta = function(r) {
|
|
1599
|
-
for (var i = [],
|
|
1600
|
-
switch (r[
|
|
1610
|
+
for (var i = [], s = 0; s < r.length; s++)
|
|
1611
|
+
switch (r[s][0]) {
|
|
1601
1612
|
case o:
|
|
1602
|
-
i[
|
|
1613
|
+
i[s] = "+" + encodeURI(r[s][1]);
|
|
1603
1614
|
break;
|
|
1604
1615
|
case n:
|
|
1605
|
-
i[
|
|
1616
|
+
i[s] = "-" + r[s][1].length;
|
|
1606
1617
|
break;
|
|
1607
|
-
case
|
|
1608
|
-
i[
|
|
1618
|
+
case A:
|
|
1619
|
+
i[s] = "=" + r[s][1].length;
|
|
1609
1620
|
break;
|
|
1610
1621
|
}
|
|
1611
1622
|
return i.join(" ").replace(/%20/g, " ");
|
|
1612
1623
|
}, e.prototype.diff_fromDelta = function(r, i) {
|
|
1613
|
-
for (var
|
|
1624
|
+
for (var s = [], a = 0, c = 0, l = i.split(/\t/g), d = 0; d < l.length; d++) {
|
|
1614
1625
|
var u = l[d].substring(1);
|
|
1615
1626
|
switch (l[d].charAt(0)) {
|
|
1616
1627
|
case "+":
|
|
1617
1628
|
try {
|
|
1618
|
-
|
|
1629
|
+
s[a++] = new e.Diff(o, decodeURI(u));
|
|
1619
1630
|
} catch {
|
|
1620
1631
|
throw new Error("Illegal escape in diff_fromDelta: " + u);
|
|
1621
1632
|
}
|
|
@@ -1626,137 +1637,137 @@ function Mn() {
|
|
|
1626
1637
|
var g = parseInt(u, 10);
|
|
1627
1638
|
if (isNaN(g) || g < 0)
|
|
1628
1639
|
throw new Error("Invalid number in diff_fromDelta: " + u);
|
|
1629
|
-
var h = r.substring(
|
|
1630
|
-
l[d].charAt(0) == "=" ?
|
|
1640
|
+
var h = r.substring(c, c += g);
|
|
1641
|
+
l[d].charAt(0) == "=" ? s[a++] = new e.Diff(A, h) : s[a++] = new e.Diff(n, h);
|
|
1631
1642
|
break;
|
|
1632
1643
|
default:
|
|
1633
1644
|
if (l[d])
|
|
1634
1645
|
throw new Error("Invalid diff operation in diff_fromDelta: " + l[d]);
|
|
1635
1646
|
}
|
|
1636
1647
|
}
|
|
1637
|
-
if (
|
|
1638
|
-
throw new Error("Delta length (" +
|
|
1639
|
-
return
|
|
1640
|
-
}, e.prototype.match_main = function(r, i,
|
|
1641
|
-
if (r == null || i == null ||
|
|
1648
|
+
if (c != r.length)
|
|
1649
|
+
throw new Error("Delta length (" + c + ") does not equal source text length (" + r.length + ").");
|
|
1650
|
+
return s;
|
|
1651
|
+
}, e.prototype.match_main = function(r, i, s) {
|
|
1652
|
+
if (r == null || i == null || s == null)
|
|
1642
1653
|
throw new Error("Null input. (match_main)");
|
|
1643
|
-
return
|
|
1644
|
-
}, e.prototype.match_bitap_ = function(r, i,
|
|
1654
|
+
return s = Math.max(0, Math.min(s, r.length)), r == i ? 0 : r.length ? r.substring(s, s + i.length) == i ? s : this.match_bitap_(r, i, s) : -1;
|
|
1655
|
+
}, e.prototype.match_bitap_ = function(r, i, s) {
|
|
1645
1656
|
if (i.length > this.Match_MaxBits)
|
|
1646
1657
|
throw new Error("Pattern too long for this browser.");
|
|
1647
|
-
var
|
|
1658
|
+
var a = this.match_alphabet_(i), c = this;
|
|
1648
1659
|
function l(k, R) {
|
|
1649
|
-
var x = k / i.length, S = Math.abs(
|
|
1650
|
-
return
|
|
1660
|
+
var x = k / i.length, S = Math.abs(s - R);
|
|
1661
|
+
return c.Match_Distance ? x + S / c.Match_Distance : S ? 1 : x;
|
|
1651
1662
|
}
|
|
1652
|
-
var d = this.Match_Threshold, u = r.indexOf(i,
|
|
1653
|
-
u != -1 && (d = Math.min(l(0, u), d), u = r.lastIndexOf(i,
|
|
1663
|
+
var d = this.Match_Threshold, u = r.indexOf(i, s);
|
|
1664
|
+
u != -1 && (d = Math.min(l(0, u), d), u = r.lastIndexOf(i, s + i.length), u != -1 && (d = Math.min(l(0, u), d)));
|
|
1654
1665
|
var g = 1 << i.length - 1;
|
|
1655
1666
|
u = -1;
|
|
1656
1667
|
for (var h, f, p = i.length + r.length, m, v = 0; v < i.length; v++) {
|
|
1657
1668
|
for (h = 0, f = p; h < f; )
|
|
1658
|
-
l(v,
|
|
1669
|
+
l(v, s + f) <= d ? h = f : p = f, f = Math.floor((p - h) / 2 + h);
|
|
1659
1670
|
p = f;
|
|
1660
|
-
var I = Math.max(1,
|
|
1671
|
+
var I = Math.max(1, s - f + 1), C = Math.min(s + f, r.length) + i.length, E = Array(C + 2);
|
|
1661
1672
|
E[C + 1] = (1 << v) - 1;
|
|
1662
1673
|
for (var b = C; b >= I; b--) {
|
|
1663
|
-
var w =
|
|
1674
|
+
var w = a[r.charAt(b - 1)];
|
|
1664
1675
|
if (v === 0 ? E[b] = (E[b + 1] << 1 | 1) & w : E[b] = (E[b + 1] << 1 | 1) & w | ((m[b + 1] | m[b]) << 1 | 1) | m[b + 1], E[b] & g) {
|
|
1665
1676
|
var y = l(v, b - 1);
|
|
1666
1677
|
if (y <= d)
|
|
1667
|
-
if (d = y, u = b - 1, u >
|
|
1668
|
-
I = Math.max(1, 2 *
|
|
1678
|
+
if (d = y, u = b - 1, u > s)
|
|
1679
|
+
I = Math.max(1, 2 * s - u);
|
|
1669
1680
|
else
|
|
1670
1681
|
break;
|
|
1671
1682
|
}
|
|
1672
1683
|
}
|
|
1673
|
-
if (l(v + 1,
|
|
1684
|
+
if (l(v + 1, s) > d)
|
|
1674
1685
|
break;
|
|
1675
1686
|
m = E;
|
|
1676
1687
|
}
|
|
1677
1688
|
return u;
|
|
1678
1689
|
}, e.prototype.match_alphabet_ = function(r) {
|
|
1679
|
-
for (var i = {},
|
|
1680
|
-
i[r.charAt(
|
|
1681
|
-
for (var
|
|
1682
|
-
i[r.charAt(
|
|
1690
|
+
for (var i = {}, s = 0; s < r.length; s++)
|
|
1691
|
+
i[r.charAt(s)] = 0;
|
|
1692
|
+
for (var s = 0; s < r.length; s++)
|
|
1693
|
+
i[r.charAt(s)] |= 1 << r.length - s - 1;
|
|
1683
1694
|
return i;
|
|
1684
1695
|
}, e.prototype.patch_addContext_ = function(r, i) {
|
|
1685
1696
|
if (i.length != 0) {
|
|
1686
1697
|
if (r.start2 === null)
|
|
1687
1698
|
throw Error("patch not initialized");
|
|
1688
|
-
for (var
|
|
1689
|
-
|
|
1690
|
-
r.start2 -
|
|
1691
|
-
r.start2 + r.length1 +
|
|
1699
|
+
for (var s = i.substring(r.start2, r.start2 + r.length1), a = 0; i.indexOf(s) != i.lastIndexOf(s) && s.length < this.Match_MaxBits - this.Patch_Margin - this.Patch_Margin; )
|
|
1700
|
+
a += this.Patch_Margin, s = i.substring(
|
|
1701
|
+
r.start2 - a,
|
|
1702
|
+
r.start2 + r.length1 + a
|
|
1692
1703
|
);
|
|
1693
|
-
|
|
1694
|
-
var
|
|
1695
|
-
|
|
1704
|
+
a += this.Patch_Margin;
|
|
1705
|
+
var c = i.substring(r.start2 - a, r.start2);
|
|
1706
|
+
c && r.diffs.unshift(new e.Diff(A, c));
|
|
1696
1707
|
var l = i.substring(
|
|
1697
1708
|
r.start2 + r.length1,
|
|
1698
|
-
r.start2 + r.length1 +
|
|
1709
|
+
r.start2 + r.length1 + a
|
|
1699
1710
|
);
|
|
1700
|
-
l && r.diffs.push(new e.Diff(
|
|
1711
|
+
l && r.diffs.push(new e.Diff(A, l)), r.start1 -= c.length, r.start2 -= c.length, r.length1 += c.length + l.length, r.length2 += c.length + l.length;
|
|
1701
1712
|
}
|
|
1702
|
-
}, e.prototype.patch_make = function(r, i,
|
|
1703
|
-
var
|
|
1704
|
-
if (typeof r == "string" && typeof i == "string" && typeof
|
|
1705
|
-
|
|
1706
|
-
r,
|
|
1707
|
-
|
|
1713
|
+
}, e.prototype.patch_make = function(r, i, s) {
|
|
1714
|
+
var a, c;
|
|
1715
|
+
if (typeof r == "string" && typeof i == "string" && typeof s > "u")
|
|
1716
|
+
a = /** @type {string} */
|
|
1717
|
+
r, c = this.diff_main(
|
|
1718
|
+
a,
|
|
1708
1719
|
/** @type {string} */
|
|
1709
1720
|
i,
|
|
1710
1721
|
!0
|
|
1711
|
-
),
|
|
1712
|
-
else if (r && typeof r == "object" && typeof i > "u" && typeof
|
|
1713
|
-
|
|
1714
|
-
r,
|
|
1715
|
-
else if (typeof r == "string" && i && typeof i == "object" && typeof
|
|
1716
|
-
|
|
1717
|
-
r,
|
|
1722
|
+
), c.length > 2 && (this.diff_cleanupSemantic(c), this.diff_cleanupEfficiency(c));
|
|
1723
|
+
else if (r && typeof r == "object" && typeof i > "u" && typeof s > "u")
|
|
1724
|
+
c = /** @type {!Array.<!diff_match_patch.Diff>} */
|
|
1725
|
+
r, a = this.diff_text1(c);
|
|
1726
|
+
else if (typeof r == "string" && i && typeof i == "object" && typeof s > "u")
|
|
1727
|
+
a = /** @type {string} */
|
|
1728
|
+
r, c = /** @type {!Array.<!diff_match_patch.Diff>} */
|
|
1718
1729
|
i;
|
|
1719
|
-
else if (typeof r == "string" && typeof i == "string" &&
|
|
1720
|
-
|
|
1721
|
-
r,
|
|
1722
|
-
|
|
1730
|
+
else if (typeof r == "string" && typeof i == "string" && s && typeof s == "object")
|
|
1731
|
+
a = /** @type {string} */
|
|
1732
|
+
r, c = /** @type {!Array.<!diff_match_patch.Diff>} */
|
|
1733
|
+
s;
|
|
1723
1734
|
else
|
|
1724
1735
|
throw new Error("Unknown call format to patch_make.");
|
|
1725
|
-
if (
|
|
1736
|
+
if (c.length === 0)
|
|
1726
1737
|
return [];
|
|
1727
|
-
for (var l = [], d = new e.patch_obj(), u = 0, g = 0, h = 0, f =
|
|
1728
|
-
var v =
|
|
1729
|
-
switch (!u && v !==
|
|
1738
|
+
for (var l = [], d = new e.patch_obj(), u = 0, g = 0, h = 0, f = a, p = a, m = 0; m < c.length; m++) {
|
|
1739
|
+
var v = c[m][0], I = c[m][1];
|
|
1740
|
+
switch (!u && v !== A && (d.start1 = g, d.start2 = h), v) {
|
|
1730
1741
|
case o:
|
|
1731
|
-
d.diffs[u++] =
|
|
1742
|
+
d.diffs[u++] = c[m], d.length2 += I.length, p = p.substring(0, h) + I + p.substring(h);
|
|
1732
1743
|
break;
|
|
1733
1744
|
case n:
|
|
1734
|
-
d.length1 += I.length, d.diffs[u++] =
|
|
1745
|
+
d.length1 += I.length, d.diffs[u++] = c[m], p = p.substring(0, h) + p.substring(h + I.length);
|
|
1735
1746
|
break;
|
|
1736
|
-
case
|
|
1737
|
-
I.length <= 2 * this.Patch_Margin && u &&
|
|
1747
|
+
case A:
|
|
1748
|
+
I.length <= 2 * this.Patch_Margin && u && c.length != m + 1 ? (d.diffs[u++] = c[m], d.length1 += I.length, d.length2 += I.length) : I.length >= 2 * this.Patch_Margin && u && (this.patch_addContext_(d, f), l.push(d), d = new e.patch_obj(), u = 0, f = p, g = h);
|
|
1738
1749
|
break;
|
|
1739
1750
|
}
|
|
1740
1751
|
v !== o && (g += I.length), v !== n && (h += I.length);
|
|
1741
1752
|
}
|
|
1742
1753
|
return u && (this.patch_addContext_(d, f), l.push(d)), l;
|
|
1743
1754
|
}, e.prototype.patch_deepCopy = function(r) {
|
|
1744
|
-
for (var i = [],
|
|
1745
|
-
var
|
|
1746
|
-
|
|
1747
|
-
for (var l = 0; l <
|
|
1748
|
-
|
|
1749
|
-
|
|
1755
|
+
for (var i = [], s = 0; s < r.length; s++) {
|
|
1756
|
+
var a = r[s], c = new e.patch_obj();
|
|
1757
|
+
c.diffs = [];
|
|
1758
|
+
for (var l = 0; l < a.diffs.length; l++)
|
|
1759
|
+
c.diffs[l] = new e.Diff(a.diffs[l][0], a.diffs[l][1]);
|
|
1760
|
+
c.start1 = a.start1, c.start2 = a.start2, c.length1 = a.length1, c.length2 = a.length2, i[s] = c;
|
|
1750
1761
|
}
|
|
1751
1762
|
return i;
|
|
1752
1763
|
}, e.prototype.patch_apply = function(r, i) {
|
|
1753
1764
|
if (r.length == 0)
|
|
1754
1765
|
return [i, []];
|
|
1755
1766
|
r = this.patch_deepCopy(r);
|
|
1756
|
-
var
|
|
1757
|
-
i =
|
|
1758
|
-
for (var
|
|
1759
|
-
var d = r[l].start2 +
|
|
1767
|
+
var s = this.patch_addPadding(r);
|
|
1768
|
+
i = s + i + s, this.patch_splitMax(r);
|
|
1769
|
+
for (var a = 0, c = [], l = 0; l < r.length; l++) {
|
|
1770
|
+
var d = r[l].start2 + a, u = this.diff_text1(r[l].diffs), g, h = -1;
|
|
1760
1771
|
if (u.length > this.Match_MaxBits ? (g = this.match_main(
|
|
1761
1772
|
i,
|
|
1762
1773
|
u.substring(0, this.Match_MaxBits),
|
|
@@ -1766,21 +1777,21 @@ function Mn() {
|
|
|
1766
1777
|
u.substring(u.length - this.Match_MaxBits),
|
|
1767
1778
|
d + u.length - this.Match_MaxBits
|
|
1768
1779
|
), (h == -1 || g >= h) && (g = -1))) : g = this.match_main(i, u, d), g == -1)
|
|
1769
|
-
|
|
1780
|
+
c[l] = !1, a -= r[l].length2 - r[l].length1;
|
|
1770
1781
|
else {
|
|
1771
|
-
|
|
1782
|
+
c[l] = !0, a = g - d;
|
|
1772
1783
|
var f;
|
|
1773
1784
|
if (h == -1 ? f = i.substring(g, g + u.length) : f = i.substring(g, h + this.Match_MaxBits), u == f)
|
|
1774
1785
|
i = i.substring(0, g) + this.diff_text2(r[l].diffs) + i.substring(g + u.length);
|
|
1775
1786
|
else {
|
|
1776
1787
|
var p = this.diff_main(u, f, !1);
|
|
1777
1788
|
if (u.length > this.Match_MaxBits && this.diff_levenshtein(p) / u.length > this.Patch_DeleteThreshold)
|
|
1778
|
-
|
|
1789
|
+
c[l] = !1;
|
|
1779
1790
|
else {
|
|
1780
1791
|
this.diff_cleanupSemanticLossless(p);
|
|
1781
1792
|
for (var m = 0, v, I = 0; I < r[l].diffs.length; I++) {
|
|
1782
1793
|
var C = r[l].diffs[I];
|
|
1783
|
-
C[0] !==
|
|
1794
|
+
C[0] !== A && (v = this.diff_xIndex(p, m)), C[0] === o ? i = i.substring(0, g + v) + C[1] + i.substring(g + v) : C[0] === n && (i = i.substring(0, g + v) + i.substring(g + this.diff_xIndex(
|
|
1784
1795
|
p,
|
|
1785
1796
|
m + C[1].length
|
|
1786
1797
|
))), C[0] !== n && (m += C[1].length);
|
|
@@ -1789,63 +1800,63 @@ function Mn() {
|
|
|
1789
1800
|
}
|
|
1790
1801
|
}
|
|
1791
1802
|
}
|
|
1792
|
-
return i = i.substring(
|
|
1803
|
+
return i = i.substring(s.length, i.length - s.length), [i, c];
|
|
1793
1804
|
}, e.prototype.patch_addPadding = function(r) {
|
|
1794
|
-
for (var i = this.Patch_Margin,
|
|
1795
|
-
|
|
1796
|
-
for (var
|
|
1797
|
-
r[
|
|
1798
|
-
var
|
|
1799
|
-
if (l.length == 0 || l[0][0] !=
|
|
1800
|
-
l.unshift(new e.Diff(
|
|
1805
|
+
for (var i = this.Patch_Margin, s = "", a = 1; a <= i; a++)
|
|
1806
|
+
s += String.fromCharCode(a);
|
|
1807
|
+
for (var a = 0; a < r.length; a++)
|
|
1808
|
+
r[a].start1 += i, r[a].start2 += i;
|
|
1809
|
+
var c = r[0], l = c.diffs;
|
|
1810
|
+
if (l.length == 0 || l[0][0] != A)
|
|
1811
|
+
l.unshift(new e.Diff(A, s)), c.start1 -= i, c.start2 -= i, c.length1 += i, c.length2 += i;
|
|
1801
1812
|
else if (i > l[0][1].length) {
|
|
1802
1813
|
var d = i - l[0][1].length;
|
|
1803
|
-
l[0][1] =
|
|
1814
|
+
l[0][1] = s.substring(l[0][1].length) + l[0][1], c.start1 -= d, c.start2 -= d, c.length1 += d, c.length2 += d;
|
|
1804
1815
|
}
|
|
1805
|
-
if (
|
|
1806
|
-
l.push(new e.Diff(
|
|
1816
|
+
if (c = r[r.length - 1], l = c.diffs, l.length == 0 || l[l.length - 1][0] != A)
|
|
1817
|
+
l.push(new e.Diff(A, s)), c.length1 += i, c.length2 += i;
|
|
1807
1818
|
else if (i > l[l.length - 1][1].length) {
|
|
1808
1819
|
var d = i - l[l.length - 1][1].length;
|
|
1809
|
-
l[l.length - 1][1] +=
|
|
1820
|
+
l[l.length - 1][1] += s.substring(0, d), c.length1 += d, c.length2 += d;
|
|
1810
1821
|
}
|
|
1811
|
-
return
|
|
1822
|
+
return s;
|
|
1812
1823
|
}, e.prototype.patch_splitMax = function(r) {
|
|
1813
|
-
for (var i = this.Match_MaxBits,
|
|
1814
|
-
if (!(r[
|
|
1815
|
-
var
|
|
1816
|
-
r.splice(
|
|
1817
|
-
for (var
|
|
1824
|
+
for (var i = this.Match_MaxBits, s = 0; s < r.length; s++)
|
|
1825
|
+
if (!(r[s].length1 <= i)) {
|
|
1826
|
+
var a = r[s];
|
|
1827
|
+
r.splice(s--, 1);
|
|
1828
|
+
for (var c = a.start1, l = a.start2, d = ""; a.diffs.length !== 0; ) {
|
|
1818
1829
|
var u = new e.patch_obj(), g = !0;
|
|
1819
|
-
for (u.start1 =
|
|
1820
|
-
var h =
|
|
1821
|
-
h === o ? (u.length2 += f.length, l += f.length, u.diffs.push(
|
|
1830
|
+
for (u.start1 = c - d.length, u.start2 = l - d.length, d !== "" && (u.length1 = u.length2 = d.length, u.diffs.push(new e.Diff(A, d))); a.diffs.length !== 0 && u.length1 < i - this.Patch_Margin; ) {
|
|
1831
|
+
var h = a.diffs[0][0], f = a.diffs[0][1];
|
|
1832
|
+
h === o ? (u.length2 += f.length, l += f.length, u.diffs.push(a.diffs.shift()), g = !1) : h === n && u.diffs.length == 1 && u.diffs[0][0] == A && f.length > 2 * i ? (u.length1 += f.length, c += f.length, g = !1, u.diffs.push(new e.Diff(h, f)), a.diffs.shift()) : (f = f.substring(
|
|
1822
1833
|
0,
|
|
1823
1834
|
i - u.length1 - this.Patch_Margin
|
|
1824
|
-
), u.length1 += f.length,
|
|
1835
|
+
), u.length1 += f.length, c += f.length, h === A ? (u.length2 += f.length, l += f.length) : g = !1, u.diffs.push(new e.Diff(h, f)), f == a.diffs[0][1] ? a.diffs.shift() : a.diffs[0][1] = a.diffs[0][1].substring(f.length));
|
|
1825
1836
|
}
|
|
1826
1837
|
d = this.diff_text2(u.diffs), d = d.substring(d.length - this.Patch_Margin);
|
|
1827
|
-
var p = this.diff_text1(
|
|
1828
|
-
p !== "" && (u.length1 += p.length, u.length2 += p.length, u.diffs.length !== 0 && u.diffs[u.diffs.length - 1][0] ===
|
|
1838
|
+
var p = this.diff_text1(a.diffs).substring(0, this.Patch_Margin);
|
|
1839
|
+
p !== "" && (u.length1 += p.length, u.length2 += p.length, u.diffs.length !== 0 && u.diffs[u.diffs.length - 1][0] === A ? u.diffs[u.diffs.length - 1][1] += p : u.diffs.push(new e.Diff(A, p))), g || r.splice(++s, 0, u);
|
|
1829
1840
|
}
|
|
1830
1841
|
}
|
|
1831
1842
|
}, e.prototype.patch_toText = function(r) {
|
|
1832
|
-
for (var i = [],
|
|
1833
|
-
i[
|
|
1843
|
+
for (var i = [], s = 0; s < r.length; s++)
|
|
1844
|
+
i[s] = r[s];
|
|
1834
1845
|
return i.join("");
|
|
1835
1846
|
}, e.prototype.patch_fromText = function(r) {
|
|
1836
1847
|
var i = [];
|
|
1837
1848
|
if (!r)
|
|
1838
1849
|
return i;
|
|
1839
|
-
for (var
|
|
1840
|
-
`),
|
|
1841
|
-
var l =
|
|
1850
|
+
for (var s = r.split(`
|
|
1851
|
+
`), a = 0, c = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/; a < s.length; ) {
|
|
1852
|
+
var l = s[a].match(c);
|
|
1842
1853
|
if (!l)
|
|
1843
|
-
throw new Error("Invalid patch string: " +
|
|
1854
|
+
throw new Error("Invalid patch string: " + s[a]);
|
|
1844
1855
|
var d = new e.patch_obj();
|
|
1845
|
-
for (i.push(d), d.start1 = parseInt(l[1], 10), l[2] === "" ? (d.start1--, d.length1 = 1) : l[2] == "0" ? d.length1 = 0 : (d.start1--, d.length1 = parseInt(l[2], 10)), d.start2 = parseInt(l[3], 10), l[4] === "" ? (d.start2--, d.length2 = 1) : l[4] == "0" ? d.length2 = 0 : (d.start2--, d.length2 = parseInt(l[4], 10)),
|
|
1846
|
-
var u =
|
|
1856
|
+
for (i.push(d), d.start1 = parseInt(l[1], 10), l[2] === "" ? (d.start1--, d.length1 = 1) : l[2] == "0" ? d.length1 = 0 : (d.start1--, d.length1 = parseInt(l[2], 10)), d.start2 = parseInt(l[3], 10), l[4] === "" ? (d.start2--, d.length2 = 1) : l[4] == "0" ? d.length2 = 0 : (d.start2--, d.length2 = parseInt(l[4], 10)), a++; a < s.length; ) {
|
|
1857
|
+
var u = s[a].charAt(0);
|
|
1847
1858
|
try {
|
|
1848
|
-
var g = decodeURI(
|
|
1859
|
+
var g = decodeURI(s[a].substring(1));
|
|
1849
1860
|
} catch {
|
|
1850
1861
|
throw new Error("Illegal escape in patch_fromText: " + g);
|
|
1851
1862
|
}
|
|
@@ -1854,13 +1865,13 @@ function Mn() {
|
|
|
1854
1865
|
else if (u == "+")
|
|
1855
1866
|
d.diffs.push(new e.Diff(o, g));
|
|
1856
1867
|
else if (u == " ")
|
|
1857
|
-
d.diffs.push(new e.Diff(
|
|
1868
|
+
d.diffs.push(new e.Diff(A, g));
|
|
1858
1869
|
else {
|
|
1859
1870
|
if (u == "@")
|
|
1860
1871
|
break;
|
|
1861
1872
|
if (u !== "") throw new Error('Invalid patch mode "' + u + '" in: ' + g);
|
|
1862
1873
|
}
|
|
1863
|
-
|
|
1874
|
+
a++;
|
|
1864
1875
|
}
|
|
1865
1876
|
}
|
|
1866
1877
|
return i;
|
|
@@ -1869,28 +1880,28 @@ function Mn() {
|
|
|
1869
1880
|
}, e.patch_obj.prototype.toString = function() {
|
|
1870
1881
|
var r, i;
|
|
1871
1882
|
this.length1 === 0 ? r = this.start1 + ",0" : this.length1 == 1 ? r = this.start1 + 1 : r = this.start1 + 1 + "," + this.length1, this.length2 === 0 ? i = this.start2 + ",0" : this.length2 == 1 ? i = this.start2 + 1 : i = this.start2 + 1 + "," + this.length2;
|
|
1872
|
-
for (var
|
|
1873
|
-
`],
|
|
1874
|
-
switch (this.diffs[
|
|
1883
|
+
for (var s = ["@@ -" + r + " +" + i + ` @@
|
|
1884
|
+
`], a, c = 0; c < this.diffs.length; c++) {
|
|
1885
|
+
switch (this.diffs[c][0]) {
|
|
1875
1886
|
case o:
|
|
1876
|
-
|
|
1887
|
+
a = "+";
|
|
1877
1888
|
break;
|
|
1878
1889
|
case n:
|
|
1879
|
-
|
|
1890
|
+
a = "-";
|
|
1880
1891
|
break;
|
|
1881
|
-
case
|
|
1882
|
-
|
|
1892
|
+
case A:
|
|
1893
|
+
a = " ";
|
|
1883
1894
|
break;
|
|
1884
1895
|
}
|
|
1885
|
-
|
|
1896
|
+
s[c + 1] = a + encodeURI(this.diffs[c][1]) + `
|
|
1886
1897
|
`;
|
|
1887
1898
|
}
|
|
1888
|
-
return
|
|
1889
|
-
}, t.exports = e, t.exports.diff_match_patch = e, t.exports.DIFF_DELETE = n, t.exports.DIFF_INSERT = o, t.exports.DIFF_EQUAL =
|
|
1890
|
-
}(Ae)), Ae.exports;
|
|
1899
|
+
return s.join("").replace(/%20/g, " ");
|
|
1900
|
+
}, t.exports = e, t.exports.diff_match_patch = e, t.exports.DIFF_DELETE = n, t.exports.DIFF_INSERT = o, t.exports.DIFF_EQUAL = A;
|
|
1901
|
+
})(Ae)), Ae.exports;
|
|
1891
1902
|
}
|
|
1892
|
-
var $ =
|
|
1893
|
-
function
|
|
1903
|
+
var $ = Kn();
|
|
1904
|
+
function it(t) {
|
|
1894
1905
|
return t[t.length - 1].range[1] - t[0].range[0];
|
|
1895
1906
|
}
|
|
1896
1907
|
function U(t, e) {
|
|
@@ -1899,13 +1910,13 @@ function U(t, e) {
|
|
|
1899
1910
|
function ve(t, e) {
|
|
1900
1911
|
return /^ *$/.test(e.content) && e.content != U(t, e);
|
|
1901
1912
|
}
|
|
1902
|
-
const
|
|
1903
|
-
|
|
1904
|
-
function
|
|
1913
|
+
const At = new $.diff_match_patch();
|
|
1914
|
+
At.Diff_Timeout = 5;
|
|
1915
|
+
function Nn(t) {
|
|
1905
1916
|
const e = [];
|
|
1906
1917
|
let n = 0, o = 0;
|
|
1907
|
-
return t.forEach((
|
|
1908
|
-
const [r, i] =
|
|
1918
|
+
return t.forEach((A) => {
|
|
1919
|
+
const [r, i] = A;
|
|
1909
1920
|
switch (r) {
|
|
1910
1921
|
case $.DIFF_EQUAL:
|
|
1911
1922
|
n += i.length;
|
|
@@ -1928,37 +1939,37 @@ function Wn(t) {
|
|
|
1928
1939
|
function O(t, e, n, o = "HTML") {
|
|
1929
1940
|
if (n.length === 0)
|
|
1930
1941
|
return [];
|
|
1931
|
-
const
|
|
1932
|
-
const u = G(i, d.range[0]), g = G(i, d.range[1]), h = G(
|
|
1942
|
+
const A = o === "HTML" ? Qn(t) : [t, []], [r, i] = A, s = At.diff_main(r, e), a = Nn(s), c = n.map((d) => {
|
|
1943
|
+
const u = G(i, d.range[0]), g = G(i, d.range[1]), h = G(a, u), f = g - 1, p = G(a, f) + 1;
|
|
1933
1944
|
return {
|
|
1934
1945
|
originalMatch: d,
|
|
1935
1946
|
range: [h, p]
|
|
1936
1947
|
};
|
|
1937
|
-
}), l = o === "HTML" ?
|
|
1948
|
+
}), l = o === "HTML" ? c.some((d) => U(e, d) !== d.originalMatch.content) : c.some((d) => U(e, d) !== U(t, d.originalMatch));
|
|
1938
1949
|
return H("cleanedCheckedDocument", r), H(
|
|
1939
1950
|
"cleanedCheckedDocumentCodes",
|
|
1940
1951
|
r.split("").map((d) => d.charCodeAt(0))
|
|
1941
1952
|
), H("currentDocument", e), H(
|
|
1942
1953
|
"currentDocumentCodes",
|
|
1943
1954
|
e.split("").map((d) => d.charCodeAt(0))
|
|
1944
|
-
), H("matches", n), H("diffs",
|
|
1955
|
+
), H("matches", n), H("diffs", s), H("alignedMatches", c), H(
|
|
1945
1956
|
"alignedMatchesContent",
|
|
1946
|
-
|
|
1947
|
-
), l ? [] :
|
|
1957
|
+
c.map((d) => U(e, d))
|
|
1958
|
+
), l ? [] : c;
|
|
1948
1959
|
}
|
|
1949
|
-
function
|
|
1960
|
+
function st(t) {
|
|
1950
1961
|
const e = {
|
|
1951
1962
|
"original-id": t.id,
|
|
1952
1963
|
"original-class": t.className,
|
|
1953
1964
|
"original-name": t.name,
|
|
1954
1965
|
"original-source": t.tagName.toLowerCase(),
|
|
1955
|
-
"original-display":
|
|
1966
|
+
"original-display": Ue(t) ? "" : "hidden"
|
|
1956
1967
|
};
|
|
1957
1968
|
for (const n of t.getAttributeNames().filter((o) => o.startsWith("aria-")))
|
|
1958
1969
|
e["original-" + n] = t.getAttribute(n);
|
|
1959
1970
|
return Object.fromEntries(Object.entries(e).filter(([, n]) => n));
|
|
1960
1971
|
}
|
|
1961
|
-
const
|
|
1972
|
+
const Pe = { name: "unknown", version: "0" }, Pn = [
|
|
1962
1973
|
["edge", /Edge\/([0-9\._]+)/],
|
|
1963
1974
|
["yandexbrowser", /YaBrowser\/([0-9\._]+)/],
|
|
1964
1975
|
["vivaldi", /Vivaldi\/([0-9\.]+)/],
|
|
@@ -1978,108 +1989,108 @@ const Ne = { name: "unknown", version: "0" }, Hn = [
|
|
|
1978
1989
|
["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/],
|
|
1979
1990
|
["safari", /Version\/([0-9\._]+).*Safari/]
|
|
1980
1991
|
];
|
|
1981
|
-
function
|
|
1992
|
+
function Gn() {
|
|
1982
1993
|
try {
|
|
1983
|
-
return
|
|
1994
|
+
return Tn(navigator.userAgent) || Pe;
|
|
1984
1995
|
} catch (t) {
|
|
1985
|
-
return console.error("Error in detectBrowser:", t),
|
|
1996
|
+
return console.error("Error in detectBrowser:", t), Pe;
|
|
1986
1997
|
}
|
|
1987
1998
|
}
|
|
1988
|
-
function
|
|
1999
|
+
function Tn(t) {
|
|
1989
2000
|
if (t)
|
|
1990
|
-
return
|
|
2001
|
+
return Pn.map(([e, n]) => {
|
|
1991
2002
|
const o = n.exec(t);
|
|
1992
|
-
let
|
|
1993
|
-
return
|
|
2003
|
+
let A = o && o[1].split(/[._]/).slice(0, 3);
|
|
2004
|
+
return A && A.length < 3 && (A = A.concat(A.length == 1 ? [0, 0] : [0])), o && {
|
|
1994
2005
|
name: e,
|
|
1995
|
-
version:
|
|
2006
|
+
version: A.join(".")
|
|
1996
2007
|
};
|
|
1997
2008
|
}).filter(Boolean)[0] || void 0;
|
|
1998
2009
|
}
|
|
1999
|
-
const
|
|
2000
|
-
function
|
|
2001
|
-
return
|
|
2010
|
+
const Yn = Gn();
|
|
2011
|
+
function Ln() {
|
|
2012
|
+
return Yn.name === "chrome";
|
|
2002
2013
|
}
|
|
2003
|
-
function
|
|
2014
|
+
function Jn(t) {
|
|
2004
2015
|
return t.documentElement || t.body.parentNode || t.body;
|
|
2005
2016
|
}
|
|
2006
|
-
function
|
|
2007
|
-
return t.pageYOffset !== void 0 ? t.pageYOffset :
|
|
2017
|
+
function On(t = window) {
|
|
2018
|
+
return t.pageYOffset !== void 0 ? t.pageYOffset : Jn(t.document).scrollTop;
|
|
2008
2019
|
}
|
|
2009
|
-
function
|
|
2020
|
+
function jn(t) {
|
|
2010
2021
|
return t.clientHeight !== t.scrollHeight && t.tagName !== "BODY" && t.tagName !== "HTML";
|
|
2011
2022
|
}
|
|
2012
|
-
function
|
|
2023
|
+
function Un(t) {
|
|
2013
2024
|
const e = [];
|
|
2014
2025
|
let n = t.parentElement;
|
|
2015
2026
|
for (; n; )
|
|
2016
2027
|
e.push(n), n = n.parentElement;
|
|
2017
2028
|
return e;
|
|
2018
2029
|
}
|
|
2019
|
-
function
|
|
2020
|
-
return
|
|
2030
|
+
function zn(t) {
|
|
2031
|
+
return Un(t).filter(jn);
|
|
2021
2032
|
}
|
|
2022
|
-
function
|
|
2023
|
-
if (
|
|
2033
|
+
function at(t, e = 0, n = 0) {
|
|
2034
|
+
if (ct(t) || (t.scrollIntoView(), !e))
|
|
2024
2035
|
return;
|
|
2025
|
-
const
|
|
2026
|
-
r.length <= 2 && r.forEach((
|
|
2027
|
-
const
|
|
2028
|
-
(
|
|
2036
|
+
const A = t.getBoundingClientRect(), r = zn(t);
|
|
2037
|
+
r.length <= 2 && r.forEach((s) => {
|
|
2038
|
+
const a = s.getBoundingClientRect();
|
|
2039
|
+
(A.top < a.top + n || A.bottom > a.bottom) && (s.scrollTop = A.top - a.top - n);
|
|
2029
2040
|
});
|
|
2030
|
-
const i =
|
|
2031
|
-
(
|
|
2041
|
+
const i = On();
|
|
2042
|
+
(A.top < e || A.bottom > window.innerHeight) && window.scrollTo(0, i + A.top - e);
|
|
2032
2043
|
}
|
|
2033
|
-
function
|
|
2044
|
+
function ct(t) {
|
|
2034
2045
|
try {
|
|
2035
2046
|
return t.scrollIntoView({ block: "center" }), !0;
|
|
2036
2047
|
} catch {
|
|
2037
2048
|
return !1;
|
|
2038
2049
|
}
|
|
2039
2050
|
}
|
|
2040
|
-
function
|
|
2041
|
-
|
|
2051
|
+
function Vn(t) {
|
|
2052
|
+
ct(t) || t.scrollIntoView();
|
|
2042
2053
|
}
|
|
2043
|
-
const se =
|
|
2054
|
+
const se = Ht({
|
|
2044
2055
|
text: "",
|
|
2045
2056
|
domPositions: []
|
|
2046
2057
|
});
|
|
2047
|
-
function
|
|
2058
|
+
function Xn(t, e) {
|
|
2048
2059
|
return {
|
|
2049
2060
|
text: t,
|
|
2050
2061
|
domPositions: e
|
|
2051
2062
|
};
|
|
2052
2063
|
}
|
|
2053
|
-
function
|
|
2064
|
+
function qn(t) {
|
|
2054
2065
|
return {
|
|
2055
2066
|
text: t.map((e) => e.text).join(""),
|
|
2056
2067
|
domPositions: t.flatMap((e) => e.domPositions)
|
|
2057
2068
|
};
|
|
2058
2069
|
}
|
|
2059
|
-
function
|
|
2070
|
+
function _n(t, e) {
|
|
2060
2071
|
return {
|
|
2061
2072
|
node: t,
|
|
2062
2073
|
offset: e
|
|
2063
2074
|
};
|
|
2064
2075
|
}
|
|
2065
|
-
const
|
|
2076
|
+
const $n = fe(["SCRIPT", "STYLE"]);
|
|
2066
2077
|
function Ie(t) {
|
|
2067
|
-
return
|
|
2078
|
+
return qn(
|
|
2068
2079
|
Array.from(t.childNodes).map((e) => {
|
|
2069
2080
|
switch (e.nodeType) {
|
|
2070
2081
|
case Node.ELEMENT_NODE: {
|
|
2071
2082
|
const n = e.nodeName;
|
|
2072
|
-
if (
|
|
2083
|
+
if ($n[n])
|
|
2073
2084
|
return se;
|
|
2074
2085
|
const o = Ie(e);
|
|
2075
|
-
if (
|
|
2076
|
-
const
|
|
2086
|
+
if (rt[n]) {
|
|
2087
|
+
const A = o.domPositions[o.domPositions.length - 1];
|
|
2077
2088
|
return {
|
|
2078
2089
|
text: o.text + `
|
|
2079
2090
|
`,
|
|
2080
2091
|
domPositions: o.domPositions.concat({
|
|
2081
|
-
node:
|
|
2082
|
-
offset:
|
|
2092
|
+
node: A && A.node || e,
|
|
2093
|
+
offset: A && A.offset || 0
|
|
2083
2094
|
})
|
|
2084
2095
|
};
|
|
2085
2096
|
}
|
|
@@ -2087,9 +2098,9 @@ function Ie(t) {
|
|
|
2087
2098
|
}
|
|
2088
2099
|
case Node.TEXT_NODE: {
|
|
2089
2100
|
const n = e.textContent;
|
|
2090
|
-
return n ?
|
|
2101
|
+
return n ? Xn(
|
|
2091
2102
|
n,
|
|
2092
|
-
Array.from({ length: n.length }, (o,
|
|
2103
|
+
Array.from({ length: n.length }, (o, A) => _n(e, A))
|
|
2093
2104
|
) : se;
|
|
2094
2105
|
}
|
|
2095
2106
|
default:
|
|
@@ -2098,7 +2109,7 @@ function Ie(t) {
|
|
|
2098
2109
|
})
|
|
2099
2110
|
);
|
|
2100
2111
|
}
|
|
2101
|
-
function
|
|
2112
|
+
function er(t, e) {
|
|
2102
2113
|
const n = e[Math.max(Math.min(t, e.length) - 1, 0)];
|
|
2103
2114
|
return {
|
|
2104
2115
|
node: n.node,
|
|
@@ -2132,8 +2143,8 @@ class N {
|
|
|
2132
2143
|
scrollIntoView(e) {
|
|
2133
2144
|
const n = e.getRangeAt(0), o = n.cloneRange();
|
|
2134
2145
|
o.collapse(!0);
|
|
2135
|
-
const
|
|
2136
|
-
o.insertNode(
|
|
2146
|
+
const A = document.createElement("span");
|
|
2147
|
+
o.insertNode(A), e.removeAllRanges(), e.addRange(n), A.focus(), this.scrollElementIntoView(A), z(A), _(o);
|
|
2137
2148
|
}
|
|
2138
2149
|
scrollToCurrentSelection() {
|
|
2139
2150
|
const e = this.getEditorDocument().getSelection();
|
|
@@ -2145,12 +2156,12 @@ class N {
|
|
|
2145
2156
|
}
|
|
2146
2157
|
}
|
|
2147
2158
|
scrollElementIntoView(e) {
|
|
2148
|
-
|
|
2159
|
+
at(e, this.config.scrollOffsetY);
|
|
2149
2160
|
}
|
|
2150
2161
|
selectRanges(e, n) {
|
|
2151
2162
|
if (V(this.getEditorElement()), this.selectMatches(e, n), this.isQuillEditor() || this.isCkEditor5()) {
|
|
2152
2163
|
const o = this.getEditorDocument().getSelection();
|
|
2153
|
-
o && o.anchorNode && o.anchorNode.parentElement &&
|
|
2164
|
+
o && o.anchorNode && o.anchorNode.parentElement && Vn(o.anchorNode.parentElement);
|
|
2154
2165
|
} else
|
|
2155
2166
|
this.scrollToCurrentSelection();
|
|
2156
2167
|
}
|
|
@@ -2162,107 +2173,107 @@ class N {
|
|
|
2162
2173
|
return e || n;
|
|
2163
2174
|
}
|
|
2164
2175
|
selectMatches(e, n) {
|
|
2165
|
-
const o = this.getTextDomMapping(),
|
|
2166
|
-
if (
|
|
2176
|
+
const o = this.getTextDomMapping(), A = O(this.lastContentChecked, o.text, n);
|
|
2177
|
+
if (A.length === 0)
|
|
2167
2178
|
throw new Error("Selected flagged content is modified.");
|
|
2168
|
-
return this.selectAlignedMatches(
|
|
2179
|
+
return this.selectAlignedMatches(A, o), [A, o];
|
|
2169
2180
|
}
|
|
2170
2181
|
selectAlignedMatches(e, n) {
|
|
2171
|
-
const o = e[0].range[0],
|
|
2172
|
-
this.selectText(o,
|
|
2182
|
+
const o = e[0].range[0], A = it(e);
|
|
2183
|
+
this.selectText(o, A, n);
|
|
2173
2184
|
}
|
|
2174
2185
|
selectText(e, n, o) {
|
|
2175
2186
|
if (!o.text)
|
|
2176
2187
|
return;
|
|
2177
|
-
const
|
|
2178
|
-
if (!
|
|
2188
|
+
const A = this.getEditorDocument().getSelection();
|
|
2189
|
+
if (!A) {
|
|
2179
2190
|
console.warn("AbstractRichtextEditorAdapter.selectText: Missing selection");
|
|
2180
2191
|
return;
|
|
2181
2192
|
}
|
|
2182
|
-
|
|
2193
|
+
A.removeAllRanges(), A.addRange(this.createRange(e, n, o));
|
|
2183
2194
|
}
|
|
2184
2195
|
createRange(e, n, o) {
|
|
2185
|
-
const r = this.getEditorDocument().createRange(), i = o.domPositions[e],
|
|
2196
|
+
const r = this.getEditorDocument().createRange(), i = o.domPositions[e], s = er(e + n, o.domPositions);
|
|
2186
2197
|
return i.offset <= i.node.textContent.length ? r.setStart(i.node, i.offset) : console.warn(
|
|
2187
2198
|
`Offset of range begin (${i.offset}) > node text length (${i.node.textContent.length})`
|
|
2188
|
-
),
|
|
2189
|
-
`Offset of range end (${
|
|
2199
|
+
), s.offset <= s.node.textContent.length ? r.setEnd(s.node, s.offset) : console.warn(
|
|
2200
|
+
`Offset of range end (${s.offset}) > node text length (${s.node.textContent.length})`
|
|
2190
2201
|
), r;
|
|
2191
2202
|
}
|
|
2192
2203
|
replaceAlignedMatches(e) {
|
|
2193
2204
|
const n = this.getEditorDocument(), o = structuredClone(e).reverse();
|
|
2194
|
-
for (const
|
|
2195
|
-
const r = this.getTextDomMapping(), i =
|
|
2205
|
+
for (const A of o) {
|
|
2206
|
+
const r = this.getTextDomMapping(), i = A.range[1] - A.range[0];
|
|
2196
2207
|
if (i > 1) {
|
|
2197
|
-
const
|
|
2208
|
+
const s = this.createRange(A.range[0] + 1, i - 1, r), a = this.createRange(A.range[0], 1, r), c = this.createRange(A.range[0], i, r);
|
|
2198
2209
|
X({
|
|
2199
|
-
startNode:
|
|
2200
|
-
endNode:
|
|
2210
|
+
startNode: c.startContainer,
|
|
2211
|
+
endNode: c.endContainer,
|
|
2201
2212
|
eventType: "beforeinput",
|
|
2202
|
-
replacement:
|
|
2203
|
-
startOffset:
|
|
2204
|
-
endOffset:
|
|
2213
|
+
replacement: A.originalMatch.replacement,
|
|
2214
|
+
startOffset: c.startOffset,
|
|
2215
|
+
endOffset: c.endOffset,
|
|
2205
2216
|
disableSimulation: this.config.disableInputEventSimulation
|
|
2206
|
-
}),
|
|
2207
|
-
startNode:
|
|
2208
|
-
endNode:
|
|
2217
|
+
}), s.deleteContents(), a.deleteContents(), A.originalMatch.replacement.length !== 0 && a.insertNode(n.createTextNode(A.originalMatch.replacement)), X({
|
|
2218
|
+
startNode: c.startContainer,
|
|
2219
|
+
endNode: c.endContainer,
|
|
2209
2220
|
eventType: "input",
|
|
2210
|
-
replacement:
|
|
2211
|
-
startOffset:
|
|
2212
|
-
endOffset:
|
|
2221
|
+
replacement: A.originalMatch.replacement,
|
|
2222
|
+
startOffset: c.startOffset,
|
|
2223
|
+
endOffset: c.endOffset,
|
|
2213
2224
|
disableSimulation: this.config.disableInputEventSimulation
|
|
2214
|
-
}), _(
|
|
2225
|
+
}), _(s), (s.startContainer !== a.startContainer || s.endContainer !== a.endContainer) && _(a);
|
|
2215
2226
|
} else {
|
|
2216
|
-
const
|
|
2227
|
+
const s = this.createRange(A.range[0], i, r);
|
|
2217
2228
|
X({
|
|
2218
|
-
startNode:
|
|
2219
|
-
endNode:
|
|
2229
|
+
startNode: s.startContainer,
|
|
2230
|
+
endNode: s.endContainer,
|
|
2220
2231
|
eventType: "beforeinput",
|
|
2221
|
-
replacement:
|
|
2222
|
-
startOffset:
|
|
2223
|
-
endOffset:
|
|
2232
|
+
replacement: A.originalMatch.replacement,
|
|
2233
|
+
startOffset: s.startOffset,
|
|
2234
|
+
endOffset: s.endOffset,
|
|
2224
2235
|
disableSimulation: this.config.disableInputEventSimulation
|
|
2225
|
-
}),
|
|
2226
|
-
startNode:
|
|
2227
|
-
endNode:
|
|
2236
|
+
}), s.deleteContents(), A.originalMatch.replacement.length !== 0 && s.insertNode(n.createTextNode(A.originalMatch.replacement)), X({
|
|
2237
|
+
startNode: s.startContainer,
|
|
2238
|
+
endNode: s.endContainer,
|
|
2228
2239
|
eventType: "input",
|
|
2229
|
-
replacement:
|
|
2230
|
-
startOffset:
|
|
2231
|
-
endOffset:
|
|
2240
|
+
replacement: A.originalMatch.replacement,
|
|
2241
|
+
startOffset: s.startOffset,
|
|
2242
|
+
endOffset: s.endOffset,
|
|
2232
2243
|
disableSimulation: this.config.disableInputEventSimulation
|
|
2233
|
-
}), _(
|
|
2244
|
+
}), _(s);
|
|
2234
2245
|
}
|
|
2235
2246
|
}
|
|
2236
2247
|
}
|
|
2237
2248
|
replaceRanges(e, n) {
|
|
2238
2249
|
V(this.getEditorElement());
|
|
2239
|
-
const [o] = this.selectMatches(e, n),
|
|
2240
|
-
this.replaceAlignedMatches(o), this.selectText(o[0].range[0],
|
|
2250
|
+
const [o] = this.selectMatches(e, n), A = o.map((r) => r.originalMatch.replacement).join("");
|
|
2251
|
+
this.replaceAlignedMatches(o), this.selectText(o[0].range[0], A.length, this.getTextDomMapping()), this.scrollToCurrentSelection();
|
|
2241
2252
|
}
|
|
2242
2253
|
getTextDomMapping() {
|
|
2243
2254
|
return Ie(this.getEditorElement());
|
|
2244
2255
|
}
|
|
2245
2256
|
getAutobindWrapperAttributes() {
|
|
2246
|
-
return
|
|
2257
|
+
return st(this.getEditorElement());
|
|
2247
2258
|
}
|
|
2248
2259
|
}
|
|
2249
2260
|
function _(t) {
|
|
2250
2261
|
try {
|
|
2251
|
-
|
|
2262
|
+
Ln() && tr(t);
|
|
2252
2263
|
} catch (e) {
|
|
2253
2264
|
console.error("Error in removeEmptyTextNodesIfNeeded:", e);
|
|
2254
2265
|
}
|
|
2255
2266
|
}
|
|
2256
|
-
function
|
|
2267
|
+
function tr(t) {
|
|
2257
2268
|
const e = document.createNodeIterator(t.commonAncestorContainer);
|
|
2258
2269
|
let n, o = !1;
|
|
2259
|
-
for (; (n = e.nextNode()) && (n === t.startContainer && (o = !0), !(o && (
|
|
2270
|
+
for (; (n = e.nextNode()) && (n === t.startContainer && (o = !0), !(o && (nr(n), n === t.endContainer))); )
|
|
2260
2271
|
;
|
|
2261
2272
|
}
|
|
2262
|
-
function
|
|
2273
|
+
function nr(t) {
|
|
2263
2274
|
t.nodeType === Node.TEXT_NODE && t.textContent === "" && z(t);
|
|
2264
2275
|
}
|
|
2265
|
-
class
|
|
2276
|
+
class Ce extends N {
|
|
2266
2277
|
element;
|
|
2267
2278
|
constructor(e) {
|
|
2268
2279
|
super(e), this.element = ee(e);
|
|
@@ -2286,18 +2297,18 @@ class it extends N {
|
|
|
2286
2297
|
}
|
|
2287
2298
|
async replaceRanges(e, n) {
|
|
2288
2299
|
V(this.getEditorElement());
|
|
2289
|
-
const [o] = this.selectMatches(e, n),
|
|
2290
|
-
this.replaceAlignedMatches(o), await this.selectText(o[0].range[0],
|
|
2300
|
+
const [o] = this.selectMatches(e, n), A = o.map((r) => r.originalMatch.replacement).join("");
|
|
2301
|
+
this.replaceAlignedMatches(o), await this.selectText(o[0].range[0], A.length, this.getTextDomMapping()), this.scrollToCurrentSelection();
|
|
2291
2302
|
}
|
|
2292
2303
|
async selectText(e, n, o) {
|
|
2293
2304
|
if (!o.text)
|
|
2294
2305
|
return;
|
|
2295
|
-
const
|
|
2306
|
+
const A = this.createRange(e, n, o), r = this.getEditorDocument().getSelection();
|
|
2296
2307
|
if (!r) {
|
|
2297
2308
|
console.warn("AsyncContentEditableAdapter.selectText: Missing selection");
|
|
2298
2309
|
return;
|
|
2299
2310
|
}
|
|
2300
|
-
return r.removeAllRanges(), await this.addSelectionRange(r,
|
|
2311
|
+
return r.removeAllRanges(), await this.addSelectionRange(r, A);
|
|
2301
2312
|
}
|
|
2302
2313
|
async addSelectionRange(e, n) {
|
|
2303
2314
|
return new Promise((o) => o(e.addRange(n)));
|
|
@@ -2305,14 +2316,14 @@ class it extends N {
|
|
|
2305
2316
|
async scrollIntoView(e) {
|
|
2306
2317
|
const n = e.getRangeAt(0);
|
|
2307
2318
|
n.cloneRange().collapse(!0);
|
|
2308
|
-
const
|
|
2309
|
-
|
|
2319
|
+
const A = n.startContainer.parentElement;
|
|
2320
|
+
A && (A.focus(), this.scrollElementIntoView(A));
|
|
2310
2321
|
}
|
|
2311
2322
|
}
|
|
2312
|
-
function
|
|
2323
|
+
function rr(t) {
|
|
2313
2324
|
return t.closest(".DraftEditor-editorContainer, .akEditor");
|
|
2314
2325
|
}
|
|
2315
|
-
class
|
|
2326
|
+
class lt extends N {
|
|
2316
2327
|
element;
|
|
2317
2328
|
constructor(e) {
|
|
2318
2329
|
super(e), this.element = ee(e);
|
|
@@ -2330,7 +2341,109 @@ class At extends N {
|
|
|
2330
2341
|
return this.element.ownerDocument;
|
|
2331
2342
|
}
|
|
2332
2343
|
}
|
|
2333
|
-
|
|
2344
|
+
const or = 50, Ge = "heretto.com";
|
|
2345
|
+
function ir(t) {
|
|
2346
|
+
const e = t.toLowerCase();
|
|
2347
|
+
return !e || e.startsWith(".") ? !1 : !!(e === Ge || e.endsWith("." + Ge));
|
|
2348
|
+
}
|
|
2349
|
+
const Ar = "gwt-debug-PreviewViewImpl.previewFrame";
|
|
2350
|
+
class dt extends Ce {
|
|
2351
|
+
constructor(e) {
|
|
2352
|
+
super(e);
|
|
2353
|
+
}
|
|
2354
|
+
/**
|
|
2355
|
+
* Override selectRanges to add Heretto-specific event dispatching.
|
|
2356
|
+
*
|
|
2357
|
+
* @param checkId - The check ID
|
|
2358
|
+
* @param matches - Array of matches to select
|
|
2359
|
+
* @returns Promise that resolves when selection is complete
|
|
2360
|
+
*/
|
|
2361
|
+
async selectRanges(e, n) {
|
|
2362
|
+
await super.selectRanges(e, n), this.dispatchHerettoSelectionEvents();
|
|
2363
|
+
}
|
|
2364
|
+
/**
|
|
2365
|
+
* Dispatch mouseup and selectionchange events to notify Heretto's GWT editor
|
|
2366
|
+
* about the selection change.
|
|
2367
|
+
*/
|
|
2368
|
+
dispatchHerettoSelectionEvents() {
|
|
2369
|
+
const e = this.getEditorElement(), n = this.getEditorDocument();
|
|
2370
|
+
e.dispatchEvent(
|
|
2371
|
+
new MouseEvent("mouseup", {
|
|
2372
|
+
bubbles: !0,
|
|
2373
|
+
cancelable: !0
|
|
2374
|
+
})
|
|
2375
|
+
), n.dispatchEvent(
|
|
2376
|
+
new Event("selectionchange", {
|
|
2377
|
+
bubbles: !0
|
|
2378
|
+
})
|
|
2379
|
+
), console.log("HerettoContentEditableAdapter: Selection events dispatched");
|
|
2380
|
+
}
|
|
2381
|
+
/**
|
|
2382
|
+
* Override replaceRanges with custom implementation for Heretto.com.
|
|
2383
|
+
* Uses paste event to apply replacements in the Heretto editor.
|
|
2384
|
+
*
|
|
2385
|
+
* The replacement is done asynchronously:
|
|
2386
|
+
* 1. First select the text
|
|
2387
|
+
* 2. Wait for selection events to propagate
|
|
2388
|
+
* 3. Apply replacement via paste event
|
|
2389
|
+
*
|
|
2390
|
+
* @param checkId - The check ID
|
|
2391
|
+
* @param matchesWithReplacement - Array of matches with replacement suggestions
|
|
2392
|
+
* @returns Promise that resolves when replacement is complete, rejects on error
|
|
2393
|
+
*/
|
|
2394
|
+
async replaceRanges(e, n) {
|
|
2395
|
+
console.log("HerettoContentEditableAdapter.replaceRanges called", {
|
|
2396
|
+
checkId: e,
|
|
2397
|
+
matchesCount: n.length,
|
|
2398
|
+
matches: n
|
|
2399
|
+
}), await this.selectRanges(e, n), await ze(or);
|
|
2400
|
+
const o = n.map((A) => A.replacement).join("");
|
|
2401
|
+
this.applyReplacementViaPaste(o);
|
|
2402
|
+
}
|
|
2403
|
+
/**
|
|
2404
|
+
* Apply replacement text using the paste event.
|
|
2405
|
+
*
|
|
2406
|
+
* @param replacementText - The text to insert in place of the selection
|
|
2407
|
+
* @throws Error if editor is not found or not editable
|
|
2408
|
+
*/
|
|
2409
|
+
applyReplacementViaPaste(e) {
|
|
2410
|
+
const n = this.getEditorElement();
|
|
2411
|
+
if (!n) {
|
|
2412
|
+
const r = "HerettoContentEditableAdapter: Editor element not found";
|
|
2413
|
+
throw console.error(r), new Error(r);
|
|
2414
|
+
}
|
|
2415
|
+
if (!n.isContentEditable) {
|
|
2416
|
+
const r = "HerettoContentEditableAdapter: Editor is not content editable";
|
|
2417
|
+
throw console.error(r), new Error(r);
|
|
2418
|
+
}
|
|
2419
|
+
const o = new DataTransfer();
|
|
2420
|
+
o.setData("text/plain", e);
|
|
2421
|
+
const A = new ClipboardEvent("paste", {
|
|
2422
|
+
clipboardData: o,
|
|
2423
|
+
bubbles: !0,
|
|
2424
|
+
cancelable: !0
|
|
2425
|
+
});
|
|
2426
|
+
n.dispatchEvent(A), console.log("HerettoContentEditableAdapter: Paste event dispatched with replacement:", e);
|
|
2427
|
+
}
|
|
2428
|
+
}
|
|
2429
|
+
function sr(t) {
|
|
2430
|
+
if (!ir(document.location.hostname))
|
|
2431
|
+
return !1;
|
|
2432
|
+
const e = t.ownerDocument;
|
|
2433
|
+
if (!e || e === document)
|
|
2434
|
+
return !1;
|
|
2435
|
+
const n = document.getElementById(Ar);
|
|
2436
|
+
if (!n)
|
|
2437
|
+
return !1;
|
|
2438
|
+
try {
|
|
2439
|
+
if (n.contentDocument !== e && n.contentWindow?.document !== e)
|
|
2440
|
+
return !1;
|
|
2441
|
+
} catch {
|
|
2442
|
+
return !1;
|
|
2443
|
+
}
|
|
2444
|
+
return !!e.body?.classList.contains("heretto");
|
|
2445
|
+
}
|
|
2446
|
+
class ut {
|
|
2334
2447
|
element;
|
|
2335
2448
|
config;
|
|
2336
2449
|
currentContentChecking;
|
|
@@ -2368,14 +2481,14 @@ class st {
|
|
|
2368
2481
|
registerCheckCall(e) {
|
|
2369
2482
|
}
|
|
2370
2483
|
scrollAndSelect(e) {
|
|
2371
|
-
const n = e[0].range[0], o =
|
|
2372
|
-
if (
|
|
2484
|
+
const n = e[0].range[0], o = it(e), A = this.element;
|
|
2485
|
+
if (A.clientHeight < A.scrollHeight) {
|
|
2373
2486
|
const r = this.element.value;
|
|
2374
|
-
|
|
2375
|
-
const i =
|
|
2376
|
-
|
|
2487
|
+
A.value = r.slice(0, n), A.focus(), A.scrollTop = 1e9;
|
|
2488
|
+
const i = A.scrollTop;
|
|
2489
|
+
A.value = r, i > 0 && (A.scrollTop = i + A.clientHeight / 2);
|
|
2377
2490
|
}
|
|
2378
|
-
|
|
2491
|
+
A.setSelectionRange(n, n + o), A.focus(), at(A, this.config.scrollOffsetY);
|
|
2379
2492
|
}
|
|
2380
2493
|
selectRanges(e, n) {
|
|
2381
2494
|
this.selectMatches(e, n);
|
|
@@ -2389,22 +2502,22 @@ class st {
|
|
|
2389
2502
|
}
|
|
2390
2503
|
replaceAlignedMatches(e) {
|
|
2391
2504
|
const n = structuredClone(e).reverse(), o = this.element;
|
|
2392
|
-
let
|
|
2505
|
+
let A = o.value;
|
|
2393
2506
|
for (const r of n)
|
|
2394
|
-
ve(this.lastContentChecked, r.originalMatch) || (
|
|
2395
|
-
o.value =
|
|
2507
|
+
ve(this.lastContentChecked, r.originalMatch) || (A = A.slice(0, r.range[0]) + r.originalMatch.replacement + A.slice(r.range[1]));
|
|
2508
|
+
o.value = A;
|
|
2396
2509
|
}
|
|
2397
2510
|
replaceRanges(e, n) {
|
|
2398
2511
|
const o = this.selectMatches(e, n);
|
|
2399
2512
|
this.scrollAndSelect(o), this.replaceAlignedMatches(o);
|
|
2400
|
-
const
|
|
2401
|
-
this.element.setSelectionRange(
|
|
2513
|
+
const A = o[0].range[0], r = o.map((i) => i.originalMatch.replacement).join("");
|
|
2514
|
+
this.element.setSelectionRange(A, A + r.length);
|
|
2402
2515
|
}
|
|
2403
2516
|
getAutobindWrapperAttributes() {
|
|
2404
|
-
return
|
|
2517
|
+
return st(this.element);
|
|
2405
2518
|
}
|
|
2406
2519
|
}
|
|
2407
|
-
class
|
|
2520
|
+
class gt extends N {
|
|
2408
2521
|
element;
|
|
2409
2522
|
constructor(e) {
|
|
2410
2523
|
super(e), this.element = ee(e), console.warn("QuipAdapter", this.element);
|
|
@@ -2423,23 +2536,23 @@ class er extends N {
|
|
|
2423
2536
|
}
|
|
2424
2537
|
async replaceRanges(e, n) {
|
|
2425
2538
|
super.replaceRanges(e, n);
|
|
2426
|
-
const o = this.getEditorDocument().getSelection(),
|
|
2427
|
-
if (!
|
|
2539
|
+
const o = this.getEditorDocument().getSelection(), A = o && o.focusNode;
|
|
2540
|
+
if (!A) {
|
|
2428
2541
|
console.warn("No selection after replacement.");
|
|
2429
2542
|
return;
|
|
2430
2543
|
}
|
|
2431
|
-
const r =
|
|
2432
|
-
switch (
|
|
2544
|
+
const r = ar(A);
|
|
2545
|
+
switch (dr(r)) {
|
|
2433
2546
|
case "cell": {
|
|
2434
2547
|
console.log("Found cell");
|
|
2435
|
-
const
|
|
2436
|
-
|
|
2437
|
-
const
|
|
2438
|
-
if (!
|
|
2439
|
-
console.warn("Found no cell editor", r,
|
|
2548
|
+
const s = r.closest("." + de), a = s.innerText;
|
|
2549
|
+
cr(r), await ze(100);
|
|
2550
|
+
const c = document.activeElement;
|
|
2551
|
+
if (!c || !c.classList.contains("spreadsheet-cell-editor")) {
|
|
2552
|
+
console.warn("Found no cell editor", r, c);
|
|
2440
2553
|
return;
|
|
2441
2554
|
}
|
|
2442
|
-
o.selectAllChildren(
|
|
2555
|
+
o.selectAllChildren(c), document.execCommand("InsertHTML", !1, a), s.innerText = a, lr(c, "keydown", "Enter", 13);
|
|
2443
2556
|
break;
|
|
2444
2557
|
}
|
|
2445
2558
|
case "content":
|
|
@@ -2451,10 +2564,10 @@ class er extends N {
|
|
|
2451
2564
|
}
|
|
2452
2565
|
}
|
|
2453
2566
|
}
|
|
2454
|
-
function
|
|
2567
|
+
function ar(t) {
|
|
2455
2568
|
return t instanceof HTMLElement ? t : t.parentElement;
|
|
2456
2569
|
}
|
|
2457
|
-
function
|
|
2570
|
+
function cr(t) {
|
|
2458
2571
|
t.dispatchEvent(
|
|
2459
2572
|
new MouseEvent("dblclick", {
|
|
2460
2573
|
view: window,
|
|
@@ -2463,8 +2576,8 @@ function nr(t) {
|
|
|
2463
2576
|
})
|
|
2464
2577
|
);
|
|
2465
2578
|
}
|
|
2466
|
-
function
|
|
2467
|
-
const
|
|
2579
|
+
function lr(t, e, n, o) {
|
|
2580
|
+
const A = {
|
|
2468
2581
|
key: n,
|
|
2469
2582
|
code: n,
|
|
2470
2583
|
keyCode: o,
|
|
@@ -2473,17 +2586,17 @@ function rr(t, e, n, o) {
|
|
|
2473
2586
|
bubbles: !0,
|
|
2474
2587
|
cancelable: !0
|
|
2475
2588
|
};
|
|
2476
|
-
t.dispatchEvent(new KeyboardEvent(e,
|
|
2589
|
+
t.dispatchEvent(new KeyboardEvent(e, A));
|
|
2477
2590
|
}
|
|
2478
2591
|
const de = "spreadsheet-cell";
|
|
2479
|
-
function
|
|
2592
|
+
function dr(t) {
|
|
2480
2593
|
const e = t.closest(`.${de}, .content`);
|
|
2481
2594
|
return e ? e.classList.contains(de) ? "cell" : "content" : "none";
|
|
2482
2595
|
}
|
|
2483
|
-
function
|
|
2596
|
+
function ur(t) {
|
|
2484
2597
|
return document.location.host.endsWith(".quip.com") && t.classList.contains("document-content");
|
|
2485
2598
|
}
|
|
2486
|
-
const
|
|
2599
|
+
const gr = [
|
|
2487
2600
|
"input:not([type])",
|
|
2488
2601
|
// type attribute not present in markup
|
|
2489
2602
|
'input[type=""]',
|
|
@@ -2496,61 +2609,61 @@ const Ar = [
|
|
|
2496
2609
|
"textarea",
|
|
2497
2610
|
"iframe"
|
|
2498
2611
|
].join(", ");
|
|
2499
|
-
function
|
|
2612
|
+
function hr(t) {
|
|
2500
2613
|
return t.readOnly;
|
|
2501
2614
|
}
|
|
2502
|
-
function
|
|
2615
|
+
function ht(t) {
|
|
2503
2616
|
const e = t.getAttribute("autocomplete");
|
|
2504
2617
|
return e === "off" || e === "false";
|
|
2505
2618
|
}
|
|
2506
|
-
function
|
|
2507
|
-
return t.getAttribute("role") === "combobox" &&
|
|
2619
|
+
function fr(t) {
|
|
2620
|
+
return t.getAttribute("role") === "combobox" && ht(t);
|
|
2508
2621
|
}
|
|
2509
|
-
const
|
|
2510
|
-
function
|
|
2622
|
+
const pr = ["search_query", "q"];
|
|
2623
|
+
function mr(t) {
|
|
2511
2624
|
if (t.nodeName !== "INPUT")
|
|
2512
2625
|
return !1;
|
|
2513
2626
|
if (t.getAttribute("role") === "search")
|
|
2514
2627
|
return !0;
|
|
2515
2628
|
const e = t.getAttribute("name");
|
|
2516
|
-
return e &&
|
|
2629
|
+
return e && pr.includes(e) && ht(t);
|
|
2517
2630
|
}
|
|
2518
|
-
const
|
|
2519
|
-
function
|
|
2520
|
-
return
|
|
2631
|
+
const br = ["username", "login", "user[login]", "authenticity_token"];
|
|
2632
|
+
function vr(t) {
|
|
2633
|
+
return br.includes(t.getAttribute("name"));
|
|
2521
2634
|
}
|
|
2522
|
-
function
|
|
2523
|
-
if (
|
|
2635
|
+
function Ir(t) {
|
|
2636
|
+
if (Zt(t))
|
|
2524
2637
|
try {
|
|
2525
|
-
return t.contentDocument ?
|
|
2638
|
+
return t.contentDocument ? we(t.contentDocument) : [];
|
|
2526
2639
|
} catch {
|
|
2527
2640
|
return [];
|
|
2528
2641
|
}
|
|
2529
2642
|
else
|
|
2530
2643
|
return [t];
|
|
2531
2644
|
}
|
|
2532
|
-
function
|
|
2645
|
+
function Cr(t) {
|
|
2533
2646
|
const e = [], n = (t.ownerDocument || t).createNodeIterator(t, NodeFilter.SHOW_ELEMENT);
|
|
2534
2647
|
let o;
|
|
2535
2648
|
for (; o = n.nextNode(); ) {
|
|
2536
|
-
const
|
|
2537
|
-
|
|
2649
|
+
const A = o.shadowRoot;
|
|
2650
|
+
A && e.push(...we(A));
|
|
2538
2651
|
}
|
|
2539
2652
|
return e;
|
|
2540
2653
|
}
|
|
2541
|
-
function
|
|
2542
|
-
const e = Array.from(t.querySelectorAll(
|
|
2543
|
-
return [...e, ...n].flatMap(
|
|
2544
|
-
(i) => !
|
|
2654
|
+
function we(t = document) {
|
|
2655
|
+
const e = Array.from(t.querySelectorAll(gr)), n = Cr(t);
|
|
2656
|
+
return [...e, ...n].flatMap(Ir).filter(
|
|
2657
|
+
(i) => !hr(i) && !fr(i) && !mr(i) && !vr(i)
|
|
2545
2658
|
);
|
|
2546
2659
|
}
|
|
2547
|
-
function
|
|
2548
|
-
return
|
|
2660
|
+
function ft(t = {}) {
|
|
2661
|
+
return we().map(function(e) {
|
|
2549
2662
|
const n = te(t, { element: e });
|
|
2550
|
-
return t.enableQuipAdapter &&
|
|
2663
|
+
return t.enableHerettoAdapter && sr(e) ? new dt(n) : t.enableQuipAdapter && ur(e) ? new gt(n) : e.nodeName === "INPUT" || e.nodeName === "TEXTAREA" ? (console.log("InputAdapter", e), new ut(n)) : rr(e) ? new Ce(n) : (console.log("ContentEditableAdapter", e), new lt(n));
|
|
2551
2664
|
});
|
|
2552
2665
|
}
|
|
2553
|
-
const
|
|
2666
|
+
const wr = {
|
|
2554
2667
|
"&": "&",
|
|
2555
2668
|
"<": "<",
|
|
2556
2669
|
">": ">",
|
|
@@ -2558,15 +2671,15 @@ const fr = {
|
|
|
2558
2671
|
"'": "'",
|
|
2559
2672
|
"`": "`"
|
|
2560
2673
|
};
|
|
2561
|
-
function
|
|
2674
|
+
function yr(t) {
|
|
2562
2675
|
let e = "";
|
|
2563
2676
|
const n = [];
|
|
2564
2677
|
let o = 0;
|
|
2565
|
-
for (let
|
|
2566
|
-
const r = t[
|
|
2678
|
+
for (let A = 0; A < t.length; A++) {
|
|
2679
|
+
const r = t[A], i = wr[r];
|
|
2567
2680
|
if (i) {
|
|
2568
|
-
const
|
|
2569
|
-
o = o -
|
|
2681
|
+
const s = i.length - 1;
|
|
2682
|
+
o = o - s, n.push({
|
|
2570
2683
|
oldPosition: e.length + i.length,
|
|
2571
2684
|
diffOffset: o
|
|
2572
2685
|
});
|
|
@@ -2575,47 +2688,47 @@ function pr(t) {
|
|
|
2575
2688
|
}
|
|
2576
2689
|
return { escapedText: e, backwardAlignment: n };
|
|
2577
2690
|
}
|
|
2578
|
-
function
|
|
2691
|
+
function pt(t, e) {
|
|
2579
2692
|
const n = structuredClone(t.attributes);
|
|
2580
2693
|
e && Object.assign(n, { id: e });
|
|
2581
|
-
const o = Object.entries(n).map(([
|
|
2694
|
+
const o = Object.entries(n).map(([A, r]) => ` ${A}="${be(r)}"`).join("");
|
|
2582
2695
|
return `<${t.tagName}${o}>`;
|
|
2583
2696
|
}
|
|
2584
|
-
function
|
|
2697
|
+
function mt(t) {
|
|
2585
2698
|
return `</${t}>`;
|
|
2586
2699
|
}
|
|
2587
|
-
function
|
|
2700
|
+
function Er(t, e) {
|
|
2588
2701
|
return [
|
|
2589
2702
|
G(t.backwardAlignment, e[0]),
|
|
2590
2703
|
G(t.backwardAlignment, e[1])
|
|
2591
2704
|
];
|
|
2592
2705
|
}
|
|
2593
|
-
function
|
|
2706
|
+
function Te(t, e = "div") {
|
|
2594
2707
|
const n = t.tagName || e;
|
|
2595
2708
|
return n.includes(" ") && console.info(`tagName "${n}" contains whitespaces which may lead to unexpected results.`), { tagName: n, attributes: t.attributes || {} };
|
|
2596
2709
|
}
|
|
2597
|
-
function
|
|
2598
|
-
const n = e.content, o = t.wrapper.tagName,
|
|
2710
|
+
function kr(t, e) {
|
|
2711
|
+
const n = e.content, o = t.wrapper.tagName, A = pt(t.wrapper, t.id), r = t.adapter.getFormat ? t.adapter.getFormat() === "TEXT" : !1;
|
|
2599
2712
|
let i;
|
|
2600
|
-
return r ? (t.escapeResult =
|
|
2601
|
-
completeHtml:
|
|
2602
|
-
contentStart:
|
|
2603
|
-
contentEnd:
|
|
2713
|
+
return r ? (t.escapeResult = yr(n), i = t.escapeResult.escapedText) : i = n, {
|
|
2714
|
+
completeHtml: A + i + mt(o),
|
|
2715
|
+
contentStart: A.length,
|
|
2716
|
+
contentEnd: A.length + i.length
|
|
2604
2717
|
};
|
|
2605
2718
|
}
|
|
2606
|
-
class
|
|
2719
|
+
class ye {
|
|
2607
2720
|
config;
|
|
2608
2721
|
rootElementWrapper;
|
|
2609
2722
|
adapters;
|
|
2610
2723
|
adaptersOfLastSuccessfulCheck;
|
|
2611
2724
|
constructor(e = {}) {
|
|
2612
|
-
this.config = e, e.rootElement && (this.rootElementWrapper =
|
|
2725
|
+
this.config = e, e.rootElement && (this.rootElementWrapper = Te(e.rootElement, "html")), this.adapters = [];
|
|
2613
2726
|
}
|
|
2614
2727
|
getFormat() {
|
|
2615
2728
|
return this.config.aggregateFormat || "HTML";
|
|
2616
2729
|
}
|
|
2617
2730
|
addSingleAdapterInternal(e, n = {}, o = "acrolinx_integration" + this.adapters.length) {
|
|
2618
|
-
this.adapters.push({ id: o, adapter: e, wrapper:
|
|
2731
|
+
this.adapters.push({ id: o, adapter: e, wrapper: Te(n) });
|
|
2619
2732
|
}
|
|
2620
2733
|
addSingleAdapter(e, n = {}, o) {
|
|
2621
2734
|
this.addSingleAdapterInternal(e, n, o);
|
|
@@ -2627,25 +2740,25 @@ class we {
|
|
|
2627
2740
|
this.config.beforeCheck && this.config.beforeCheck(this);
|
|
2628
2741
|
const n = this.adapters.map((o) => o.adapter.extractContentForCheck(e));
|
|
2629
2742
|
return Promise.all(n).then((o) => {
|
|
2630
|
-
let
|
|
2743
|
+
let A = this.config.documentHeader || "";
|
|
2631
2744
|
const r = [];
|
|
2632
|
-
this.rootElementWrapper && (
|
|
2745
|
+
this.rootElementWrapper && (A += pt(this.rootElementWrapper));
|
|
2633
2746
|
for (let i = 0; i < this.adapters.length; i++) {
|
|
2634
|
-
const
|
|
2635
|
-
if (
|
|
2636
|
-
|
|
2747
|
+
const s = o[i], a = this.adapters[i];
|
|
2748
|
+
if (Je(s)) {
|
|
2749
|
+
a.checkedRange = void 0;
|
|
2637
2750
|
continue;
|
|
2638
2751
|
}
|
|
2639
|
-
const { completeHtml:
|
|
2640
|
-
if (
|
|
2641
|
-
for (const u of
|
|
2752
|
+
const { completeHtml: c, contentStart: l, contentEnd: d } = kr(a, s);
|
|
2753
|
+
if (a.checkedRange = [A.length + l, A.length + d], s.selection)
|
|
2754
|
+
for (const u of s.selection.ranges)
|
|
2642
2755
|
r.push([
|
|
2643
|
-
u[0] +
|
|
2644
|
-
u[1] +
|
|
2756
|
+
u[0] + a.checkedRange[0],
|
|
2757
|
+
u[1] + a.checkedRange[0]
|
|
2645
2758
|
]);
|
|
2646
|
-
|
|
2759
|
+
A += c;
|
|
2647
2760
|
}
|
|
2648
|
-
return this.rootElementWrapper && (
|
|
2761
|
+
return this.rootElementWrapper && (A += mt(this.rootElementWrapper.tagName)), { content: A, selection: { ranges: r } };
|
|
2649
2762
|
});
|
|
2650
2763
|
}
|
|
2651
2764
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -2658,19 +2771,19 @@ class we {
|
|
|
2658
2771
|
}
|
|
2659
2772
|
selectRanges(e, n) {
|
|
2660
2773
|
const o = this.remapMatches(n);
|
|
2661
|
-
for (const
|
|
2662
|
-
o[
|
|
2774
|
+
for (const A in o)
|
|
2775
|
+
o[A].adapter.selectRanges(e, o[A].matches);
|
|
2663
2776
|
}
|
|
2664
2777
|
remapMatches(e) {
|
|
2665
2778
|
const n = {};
|
|
2666
2779
|
for (const o of e) {
|
|
2667
|
-
const
|
|
2668
|
-
n.hasOwnProperty(
|
|
2669
|
-
const r =
|
|
2780
|
+
const A = this.getAdapterForMatch(o);
|
|
2781
|
+
n.hasOwnProperty(A.id) || (n[A.id] = { matches: [], adapter: A.adapter });
|
|
2782
|
+
const r = A.checkedRange[0], i = [
|
|
2670
2783
|
o.range[0] - r,
|
|
2671
2784
|
o.range[1] - r
|
|
2672
|
-
],
|
|
2673
|
-
|
|
2785
|
+
], s = structuredClone(o);
|
|
2786
|
+
s.range = A.escapeResult ? Er(A.escapeResult, i) : i, n[A.id].matches.push(s);
|
|
2674
2787
|
}
|
|
2675
2788
|
return n;
|
|
2676
2789
|
}
|
|
@@ -2684,11 +2797,11 @@ class we {
|
|
|
2684
2797
|
}
|
|
2685
2798
|
replaceRanges(e, n) {
|
|
2686
2799
|
const o = this.remapMatches(n);
|
|
2687
|
-
for (const
|
|
2688
|
-
o[
|
|
2800
|
+
for (const A in o)
|
|
2801
|
+
o[A].adapter.replaceRanges(e, o[A].matches);
|
|
2689
2802
|
}
|
|
2690
2803
|
}
|
|
2691
|
-
class
|
|
2804
|
+
class bt extends ye {
|
|
2692
2805
|
isAsync = !0;
|
|
2693
2806
|
requiresSynchronization = !0;
|
|
2694
2807
|
addSingleAdapter(e, n = {}, o) {
|
|
@@ -2696,16 +2809,16 @@ class ut extends we {
|
|
|
2696
2809
|
}
|
|
2697
2810
|
async selectRanges(e, n) {
|
|
2698
2811
|
const o = this.remapMatches(n);
|
|
2699
|
-
for (const
|
|
2700
|
-
await o[
|
|
2812
|
+
for (const A in o)
|
|
2813
|
+
await o[A].adapter.selectRanges(e, o[A].matches);
|
|
2701
2814
|
}
|
|
2702
2815
|
async replaceRanges(e, n) {
|
|
2703
2816
|
const o = this.remapMatches(n);
|
|
2704
|
-
for (const
|
|
2705
|
-
await o[
|
|
2817
|
+
for (const A in o)
|
|
2818
|
+
await o[A].adapter.replaceRanges(e, o[A].matches);
|
|
2706
2819
|
}
|
|
2707
2820
|
}
|
|
2708
|
-
class
|
|
2821
|
+
class vt {
|
|
2709
2822
|
constructor(e) {
|
|
2710
2823
|
this.conf = e, this.initMultiAdapter();
|
|
2711
2824
|
}
|
|
@@ -2713,13 +2826,13 @@ class gt {
|
|
|
2713
2826
|
requiresSynchronization = !0;
|
|
2714
2827
|
asyncMultiAdapter;
|
|
2715
2828
|
initMultiAdapter() {
|
|
2716
|
-
this.asyncMultiAdapter = new
|
|
2829
|
+
this.asyncMultiAdapter = new bt(this.conf);
|
|
2717
2830
|
}
|
|
2718
2831
|
getFormat() {
|
|
2719
2832
|
return this.asyncMultiAdapter.getFormat();
|
|
2720
2833
|
}
|
|
2721
2834
|
extractContentForCheck(e) {
|
|
2722
|
-
return this.initMultiAdapter(),
|
|
2835
|
+
return this.initMultiAdapter(), ft(this.conf).forEach((n) => {
|
|
2723
2836
|
const o = n.getAutobindWrapperAttributes ? n.getAutobindWrapperAttributes() : {};
|
|
2724
2837
|
this.asyncMultiAdapter.addSingleAdapter(n, { attributes: o });
|
|
2725
2838
|
}), this.asyncMultiAdapter.extractContentForCheck(e);
|
|
@@ -2737,19 +2850,19 @@ class gt {
|
|
|
2737
2850
|
await this.asyncMultiAdapter.replaceRanges(e, n);
|
|
2738
2851
|
}
|
|
2739
2852
|
}
|
|
2740
|
-
class
|
|
2853
|
+
class It {
|
|
2741
2854
|
constructor(e) {
|
|
2742
2855
|
this.conf = e, this.initMultiAdapter();
|
|
2743
2856
|
}
|
|
2744
2857
|
multiAdapter;
|
|
2745
2858
|
initMultiAdapter() {
|
|
2746
|
-
this.multiAdapter = new
|
|
2859
|
+
this.multiAdapter = new ye(this.conf);
|
|
2747
2860
|
}
|
|
2748
2861
|
getFormat() {
|
|
2749
2862
|
return this.multiAdapter.getFormat();
|
|
2750
2863
|
}
|
|
2751
2864
|
extractContentForCheck(e) {
|
|
2752
|
-
return this.initMultiAdapter(),
|
|
2865
|
+
return this.initMultiAdapter(), ft(this.conf).forEach((n) => {
|
|
2753
2866
|
const o = n.getAutobindWrapperAttributes ? n.getAutobindWrapperAttributes() : {};
|
|
2754
2867
|
this.multiAdapter.addSingleAdapter(n, { attributes: o });
|
|
2755
2868
|
}), this.multiAdapter.extractContentForCheck(e);
|
|
@@ -2767,54 +2880,54 @@ class ht {
|
|
|
2767
2880
|
this.multiAdapter.replaceRanges(e, n);
|
|
2768
2881
|
}
|
|
2769
2882
|
}
|
|
2770
|
-
class
|
|
2883
|
+
class Ee {
|
|
2771
2884
|
get(e) {
|
|
2772
2885
|
return new Promise((n) => {
|
|
2773
|
-
n(
|
|
2886
|
+
n(Br(e));
|
|
2774
2887
|
});
|
|
2775
2888
|
}
|
|
2776
2889
|
set(e, n) {
|
|
2777
2890
|
return new Promise((o) => {
|
|
2778
|
-
|
|
2891
|
+
Sr(e, n), o(void 0);
|
|
2779
2892
|
});
|
|
2780
2893
|
}
|
|
2781
2894
|
}
|
|
2782
|
-
function
|
|
2895
|
+
function Br(t) {
|
|
2783
2896
|
const e = localStorage.getItem(t);
|
|
2784
2897
|
return e === null ? null : JSON.parse(e);
|
|
2785
2898
|
}
|
|
2786
|
-
function
|
|
2899
|
+
function Sr(t, e) {
|
|
2787
2900
|
localStorage.setItem(t, JSON.stringify(e));
|
|
2788
2901
|
}
|
|
2789
|
-
const M = "acrolinxFloatingSidebar",
|
|
2902
|
+
const M = "acrolinxFloatingSidebar", Ct = "acrolinxFloatingSidebarTitleBar", ke = "acrolinxFloatingSidebarCloseIcon";
|
|
2790
2903
|
let J = "acrolinxSidebarContainer";
|
|
2791
|
-
const
|
|
2904
|
+
const Be = "acrolinxDragOverlay", ue = "acrolinxFloatingSidebarGlassPane", wt = "acrolinxFloatingSidebarFooter", Se = "acrolinxFloatingSidebarResizeIcon", Y = "acrolinxFloatingSidebarIsResizing", ge = "acrolinxFloatingSidebarIsDragged", Ye = 34, xr = "PHN2ZyBmaWxsPSIjZmZmZmZmIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICAgIDxwYXRoIGQ9Ik0xOSAxOUg1VjVoN1YzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+", Dr = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJFYmVuZV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDI0IDI0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzkwOTA5MDt9Cgkuc3Qxe2ZpbGw6bm9uZTt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik03LjMsMjFoOS41di0ySDcuM1YyMXogTTcuMywxN2g5LjV2LTJINy4zVjE3eiBNNy4zLDEzaDkuNXYtMkg3LjNWMTN6IE03LjMsOWg5LjVWN0g3LjNWOXogTTcuMywzdjJoOS41VjNINy4zCgl6Ii8+CjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0wLDBoMjR2MjRIMFYweiIvPgo8L3N2Zz4K", ae = 2e9, Rr = 900, Fr = 400, yt = 400, L = Object.freeze({
|
|
2792
2905
|
top: 20,
|
|
2793
2906
|
left: 20,
|
|
2794
|
-
height:
|
|
2795
|
-
}),
|
|
2796
|
-
function
|
|
2907
|
+
height: Fr
|
|
2908
|
+
}), Et = "acrolinx.plugins.floatingSidebar.position";
|
|
2909
|
+
function Zr(t) {
|
|
2797
2910
|
const e = {
|
|
2798
2911
|
top: L.top,
|
|
2799
2912
|
left: L.left,
|
|
2800
|
-
height:
|
|
2913
|
+
height: kt(window.innerHeight - L.top - 40)
|
|
2801
2914
|
};
|
|
2802
|
-
return t.get(
|
|
2915
|
+
return t.get(Et).then(
|
|
2803
2916
|
(n) => ({ ...e, ...n }),
|
|
2804
2917
|
(n) => (console.error("Can't load saved sidebar position.", n), e)
|
|
2805
2918
|
);
|
|
2806
2919
|
}
|
|
2807
|
-
function
|
|
2808
|
-
return Math.max(
|
|
2920
|
+
function kt(t) {
|
|
2921
|
+
return Math.max(yt, Math.min(Rr, t));
|
|
2809
2922
|
}
|
|
2810
|
-
function
|
|
2923
|
+
function Le({ left: t, top: e, height: n }, o = window.innerWidth, A = window.innerHeight) {
|
|
2811
2924
|
return e <= 0 && (e = 20), t <= 0 && (t = 20), {
|
|
2812
2925
|
left: t > o - 150 ? o - 150 : t,
|
|
2813
|
-
top: e >
|
|
2814
|
-
height: n >
|
|
2926
|
+
top: e > A - 30 ? A - 30 : e,
|
|
2927
|
+
height: n > A ? kt(A - 10) : n
|
|
2815
2928
|
};
|
|
2816
2929
|
}
|
|
2817
|
-
function
|
|
2930
|
+
function Mr() {
|
|
2818
2931
|
const t = document.createElement("style"), e = document.querySelector("head");
|
|
2819
2932
|
t.textContent = `
|
|
2820
2933
|
#${M} {
|
|
@@ -2842,7 +2955,7 @@ function Br() {
|
|
|
2842
2955
|
transition: none;
|
|
2843
2956
|
}
|
|
2844
2957
|
|
|
2845
|
-
#${M} .${
|
|
2958
|
+
#${M} .${Ct} {
|
|
2846
2959
|
position: relative;
|
|
2847
2960
|
font-family: AcrolinxRoboto, Roboto, sans-serif;
|
|
2848
2961
|
font-weight: 500;
|
|
@@ -2853,7 +2966,7 @@ function Br() {
|
|
|
2853
2966
|
color: white;
|
|
2854
2967
|
}
|
|
2855
2968
|
|
|
2856
|
-
#${M} .${
|
|
2969
|
+
#${M} .${ke} {
|
|
2857
2970
|
position: absolute;
|
|
2858
2971
|
cursor: pointer;
|
|
2859
2972
|
margin-right: 4px;
|
|
@@ -2862,7 +2975,7 @@ function Br() {
|
|
|
2862
2975
|
width: 18px;
|
|
2863
2976
|
height: 18px;
|
|
2864
2977
|
background-repeat: no-repeat;
|
|
2865
|
-
background-image: url("data:image/svg+xml;base64,${
|
|
2978
|
+
background-image: url("data:image/svg+xml;base64,${xr}");
|
|
2866
2979
|
-webkit-background-size: cover;
|
|
2867
2980
|
-moz-background-size: cover;
|
|
2868
2981
|
-o-background-size: cover;
|
|
@@ -2874,7 +2987,7 @@ function Br() {
|
|
|
2874
2987
|
position: absolute;
|
|
2875
2988
|
top: 30px;
|
|
2876
2989
|
left: 0;
|
|
2877
|
-
bottom: ${
|
|
2990
|
+
bottom: ${Ye}px;
|
|
2878
2991
|
background: white;
|
|
2879
2992
|
}
|
|
2880
2993
|
|
|
@@ -2884,7 +2997,7 @@ function Br() {
|
|
|
2884
2997
|
border: none;
|
|
2885
2998
|
}
|
|
2886
2999
|
|
|
2887
|
-
#${M} #${
|
|
3000
|
+
#${M} #${Be} {
|
|
2888
3001
|
position: absolute;
|
|
2889
3002
|
top: 20px;
|
|
2890
3003
|
left: 0;
|
|
@@ -2907,16 +3020,16 @@ function Br() {
|
|
|
2907
3020
|
z-index: ${ae - 100};
|
|
2908
3021
|
}
|
|
2909
3022
|
|
|
2910
|
-
#${M} .${
|
|
3023
|
+
#${M} .${wt} {
|
|
2911
3024
|
position: absolute;
|
|
2912
3025
|
bottom: 0;
|
|
2913
3026
|
background: white;
|
|
2914
3027
|
width: 100%;
|
|
2915
|
-
height: ${
|
|
3028
|
+
height: ${Ye}px;
|
|
2916
3029
|
border-top: 1px solid #dadada;
|
|
2917
3030
|
}
|
|
2918
3031
|
|
|
2919
|
-
#${M} .${
|
|
3032
|
+
#${M} .${Se} {
|
|
2920
3033
|
position: absolute;
|
|
2921
3034
|
right: 3px;
|
|
2922
3035
|
bottom: 5px;
|
|
@@ -2927,7 +3040,7 @@ function Br() {
|
|
|
2927
3040
|
width: 24px;
|
|
2928
3041
|
height: 24px;
|
|
2929
3042
|
background-repeat: no-repeat;
|
|
2930
|
-
background-image: url("data:image/svg+xml;base64,${
|
|
3043
|
+
background-image: url("data:image/svg+xml;base64,${Dr}");
|
|
2931
3044
|
-webkit-background-size: cover;
|
|
2932
3045
|
-moz-background-size: cover;
|
|
2933
3046
|
-o-background-size: cover;
|
|
@@ -2940,17 +3053,17 @@ function Br() {
|
|
|
2940
3053
|
}
|
|
2941
3054
|
`, e.appendChild(t);
|
|
2942
3055
|
}
|
|
2943
|
-
function
|
|
3056
|
+
function Wr() {
|
|
2944
3057
|
return `
|
|
2945
3058
|
<div id="${M}">
|
|
2946
|
-
<div class="${
|
|
3059
|
+
<div class="${Ct}">Acrolinx <span class="${ke}" title="Hide"></span></div>
|
|
2947
3060
|
<div id="${J}"></div>
|
|
2948
|
-
<div id="${
|
|
2949
|
-
<div class="${
|
|
3061
|
+
<div id="${Be}"></div>
|
|
3062
|
+
<div class="${wt}"><div class="${Se}" title="Drag to resize"></div></div>
|
|
2950
3063
|
</div>
|
|
2951
3064
|
`;
|
|
2952
3065
|
}
|
|
2953
|
-
function
|
|
3066
|
+
function Bt(t) {
|
|
2954
3067
|
const e = document.createElement("div");
|
|
2955
3068
|
return Object.assign(e, t), e;
|
|
2956
3069
|
}
|
|
@@ -2960,22 +3073,22 @@ function j(t) {
|
|
|
2960
3073
|
function P(t) {
|
|
2961
3074
|
t.style.display = "block";
|
|
2962
3075
|
}
|
|
2963
|
-
function
|
|
2964
|
-
return
|
|
3076
|
+
function Hr(t) {
|
|
3077
|
+
return Bt({ innerHTML: t.trim() }).firstChild;
|
|
2965
3078
|
}
|
|
2966
|
-
function
|
|
3079
|
+
function xe(t) {
|
|
2967
3080
|
t.sidebarContainerId && (J = t.sidebarContainerId);
|
|
2968
3081
|
let e = L;
|
|
2969
|
-
const n =
|
|
2970
|
-
let
|
|
3082
|
+
const n = Wr(), o = Hr(n), A = o.querySelector("#" + Be), r = o.querySelector("." + ke), i = o.querySelector("." + Se), s = Bt({ id: ue }), a = document.querySelector("body");
|
|
3083
|
+
let c = !1, l = !1, d = 0, u = 0, g = !0;
|
|
2971
3084
|
function h(b) {
|
|
2972
3085
|
e = te(e, b), o.style.left = e.left + "px", o.style.top = e.top + "px", o.style.height = e.height + "px";
|
|
2973
3086
|
}
|
|
2974
3087
|
function f() {
|
|
2975
|
-
j(
|
|
3088
|
+
j(A), j(s), c = !1, l = !1, o.classList.remove(Y), o.classList.remove(ge), s.classList.remove(Y), p();
|
|
2976
3089
|
}
|
|
2977
3090
|
function p() {
|
|
2978
|
-
t.asyncStorage.set(
|
|
3091
|
+
t.asyncStorage.set(Et, e).catch((b) => {
|
|
2979
3092
|
console.error("Error in FloatingSidebar.savePosition:", b);
|
|
2980
3093
|
});
|
|
2981
3094
|
}
|
|
@@ -2986,53 +3099,53 @@ function Se(t) {
|
|
|
2986
3099
|
g ? m() : (P(o), g = !0, C());
|
|
2987
3100
|
}
|
|
2988
3101
|
document.addEventListener("mousemove", (b) => {
|
|
2989
|
-
if (
|
|
3102
|
+
if (c && h({
|
|
2990
3103
|
left: Math.max(b.clientX - d, 0),
|
|
2991
3104
|
top: Math.max(b.clientY - u, 0)
|
|
2992
3105
|
}), l) {
|
|
2993
3106
|
const w = o.getBoundingClientRect().top;
|
|
2994
3107
|
h({
|
|
2995
|
-
height: Math.max(b.clientY - u + 30 - w,
|
|
3108
|
+
height: Math.max(b.clientY - u + 30 - w, yt)
|
|
2996
3109
|
});
|
|
2997
3110
|
}
|
|
2998
3111
|
}), o.addEventListener("mousedown", (b) => {
|
|
2999
3112
|
const { top: w, left: y } = o.getBoundingClientRect();
|
|
3000
|
-
d = b.clientX - y, u = b.clientY - w,
|
|
3113
|
+
d = b.clientX - y, u = b.clientY - w, c = !0, P(A), P(s), o.classList.add(ge);
|
|
3001
3114
|
}), i.addEventListener("mousedown", (b) => {
|
|
3002
|
-
u = b.clientY - i.getBoundingClientRect().top, l = !0, o.classList.add(Y),
|
|
3115
|
+
u = b.clientY - i.getBoundingClientRect().top, l = !0, o.classList.add(Y), s.classList.add(Y), P(A), P(s), b.stopPropagation();
|
|
3003
3116
|
});
|
|
3004
3117
|
function I() {
|
|
3005
|
-
g && h(
|
|
3118
|
+
g && h(Le(e));
|
|
3006
3119
|
}
|
|
3007
3120
|
function C() {
|
|
3008
3121
|
setTimeout(() => {
|
|
3009
|
-
h(
|
|
3122
|
+
h(Le(e));
|
|
3010
3123
|
}, 1);
|
|
3011
3124
|
}
|
|
3012
3125
|
function E() {
|
|
3013
|
-
z(o), z(
|
|
3126
|
+
z(o), z(s), z(A), window.removeEventListener("resize", I), document.removeEventListener("mouseup", f);
|
|
3014
3127
|
}
|
|
3015
|
-
return document.addEventListener("mouseup", f), window.addEventListener("resize", I), r.addEventListener("click", m), j(
|
|
3128
|
+
return document.addEventListener("mouseup", f), window.addEventListener("resize", I), r.addEventListener("click", m), j(A), j(s), Mr(), Zr(t.asyncStorage).then((b) => {
|
|
3016
3129
|
P(o), h(b), C();
|
|
3017
3130
|
}).catch((b) => {
|
|
3018
3131
|
console.error("Error while trying to set initial position of FloatingSidebar:", b);
|
|
3019
|
-
}),
|
|
3132
|
+
}), a.appendChild(o), a.appendChild(s), { toggleVisibility: v, remove: E };
|
|
3020
3133
|
}
|
|
3021
|
-
async function
|
|
3134
|
+
async function Qr(t) {
|
|
3022
3135
|
const e = te(t, {
|
|
3023
3136
|
sidebarContainerId: J,
|
|
3024
|
-
asyncStorage: t.asyncStorage || new
|
|
3025
|
-
}), n =
|
|
3026
|
-
return o.registerAdapter(new
|
|
3137
|
+
asyncStorage: t.asyncStorage || new Ee()
|
|
3138
|
+
}), n = xe(e), o = new pe(e);
|
|
3139
|
+
return o.registerAdapter(new It(e)), await o.init(), n;
|
|
3027
3140
|
}
|
|
3028
|
-
async function
|
|
3141
|
+
async function Kr(t) {
|
|
3029
3142
|
const e = te(t, {
|
|
3030
3143
|
sidebarContainerId: J,
|
|
3031
|
-
asyncStorage: t.asyncStorage || new
|
|
3032
|
-
}), n =
|
|
3033
|
-
return o.registerAdapter(new
|
|
3144
|
+
asyncStorage: t.asyncStorage || new Ee()
|
|
3145
|
+
}), n = xe(e), o = new pe(e);
|
|
3146
|
+
return o.registerAdapter(new vt(e)), await o.init(), n;
|
|
3034
3147
|
}
|
|
3035
|
-
class
|
|
3148
|
+
class Nr extends N {
|
|
3036
3149
|
editorId;
|
|
3037
3150
|
constructor(e) {
|
|
3038
3151
|
super(e), this.editorId = e.editorId;
|
|
@@ -3070,7 +3183,7 @@ class Fr extends N {
|
|
|
3070
3183
|
return o.isEnabled && o.isSourceEditingMode;
|
|
3071
3184
|
}
|
|
3072
3185
|
}
|
|
3073
|
-
class
|
|
3186
|
+
class Pr extends N {
|
|
3074
3187
|
editorId;
|
|
3075
3188
|
constructor(e) {
|
|
3076
3189
|
super(e), this.editorId = e.editorId;
|
|
@@ -3100,7 +3213,7 @@ class Zr extends N {
|
|
|
3100
3213
|
return this.getEditor().mode === "wysiwyg";
|
|
3101
3214
|
}
|
|
3102
3215
|
}
|
|
3103
|
-
class
|
|
3216
|
+
class Gr extends N {
|
|
3104
3217
|
editorId;
|
|
3105
3218
|
constructor(e) {
|
|
3106
3219
|
super(e), this.config.disableInputEventSimulation = !0, this.editorId = e.editorId;
|
|
@@ -3119,7 +3232,7 @@ class Mr extends N {
|
|
|
3119
3232
|
return this.getEditor().getDoc();
|
|
3120
3233
|
}
|
|
3121
3234
|
}
|
|
3122
|
-
class
|
|
3235
|
+
class Tr {
|
|
3123
3236
|
config;
|
|
3124
3237
|
currentContentChecking;
|
|
3125
3238
|
lastContentChecked;
|
|
@@ -3171,18 +3284,18 @@ class Wr {
|
|
|
3171
3284
|
this.selectRangeAndScroll([o[0].range[0], o[o.length - 1].range[1]]);
|
|
3172
3285
|
}
|
|
3173
3286
|
replaceRanges(e, n) {
|
|
3174
|
-
const o = this.lookupMatchesOrThrow(n),
|
|
3287
|
+
const o = this.lookupMatchesOrThrow(n), A = this.getEscapeFunction();
|
|
3175
3288
|
let r = 0;
|
|
3176
3289
|
o.slice().reverse().forEach((i) => {
|
|
3177
3290
|
if (!ve(this.lastContentChecked, i.originalMatch)) {
|
|
3178
|
-
const
|
|
3291
|
+
const s = A(i.originalMatch.replacement);
|
|
3179
3292
|
this.config.editor.dispatch({
|
|
3180
3293
|
changes: {
|
|
3181
3294
|
from: i.range[0],
|
|
3182
3295
|
to: i.range[1],
|
|
3183
|
-
insert:
|
|
3296
|
+
insert: s
|
|
3184
3297
|
}
|
|
3185
|
-
}), r +=
|
|
3298
|
+
}), r += s.length;
|
|
3186
3299
|
}
|
|
3187
3300
|
}), this.selectRangeAndScroll([o[0].range[0], o[0].range[0] + r]);
|
|
3188
3301
|
}
|
|
@@ -3204,21 +3317,21 @@ class Wr {
|
|
|
3204
3317
|
}
|
|
3205
3318
|
cmSelectionToRange = (e) => {
|
|
3206
3319
|
const n = [e.from, e.to];
|
|
3207
|
-
return n.sort((o,
|
|
3320
|
+
return n.sort((o, A) => o - A), n;
|
|
3208
3321
|
};
|
|
3209
3322
|
}
|
|
3210
|
-
const
|
|
3323
|
+
const Yr = {
|
|
3211
3324
|
"text/html": "HTML",
|
|
3212
3325
|
"text/xml": "HTML",
|
|
3213
3326
|
"application/xml": "XML",
|
|
3214
3327
|
"text/x-markdown": "MARKDOWN",
|
|
3215
3328
|
"text/plain": "TEXT"
|
|
3216
|
-
},
|
|
3329
|
+
}, Lr = {
|
|
3217
3330
|
htmlmixed: "HTML",
|
|
3218
3331
|
xml: "XML",
|
|
3219
3332
|
markdown: "MARKDOWN"
|
|
3220
3333
|
};
|
|
3221
|
-
class
|
|
3334
|
+
class Jr {
|
|
3222
3335
|
config;
|
|
3223
3336
|
currentContentChecking;
|
|
3224
3337
|
lastContentChecked;
|
|
@@ -3243,7 +3356,7 @@ class Kr {
|
|
|
3243
3356
|
return this.config.format || this.getFormatFromCodeMirror() || "AUTO";
|
|
3244
3357
|
}
|
|
3245
3358
|
getFormatFromCodeMirror() {
|
|
3246
|
-
return
|
|
3359
|
+
return Lr[this.config.editor.getDoc().getMode().name || ""] || Yr[this.config.editor.getOption("mode")];
|
|
3247
3360
|
}
|
|
3248
3361
|
extractContentForCheck(e) {
|
|
3249
3362
|
return this.currentContentChecking = this.getContent(), {
|
|
@@ -3272,14 +3385,14 @@ class Kr {
|
|
|
3272
3385
|
this.selectRangeAndScroll([o[0].range[0], o[o.length - 1].range[1]]);
|
|
3273
3386
|
}
|
|
3274
3387
|
replaceRanges(e, n) {
|
|
3275
|
-
const o = this.getDoc(),
|
|
3388
|
+
const o = this.getDoc(), A = this.lookupMatchesOrThrow(n), r = this.getEscapeFunction();
|
|
3276
3389
|
let i = 0;
|
|
3277
|
-
for (const
|
|
3278
|
-
if (!ve(this.lastContentChecked,
|
|
3279
|
-
const [
|
|
3280
|
-
o.replaceRange(l,
|
|
3390
|
+
for (const s of [...A].reverse())
|
|
3391
|
+
if (!ve(this.lastContentChecked, s.originalMatch)) {
|
|
3392
|
+
const [a, c] = this.selectRange(s.range), l = r(s.originalMatch.replacement);
|
|
3393
|
+
o.replaceRange(l, a, c), i += l.length;
|
|
3281
3394
|
}
|
|
3282
|
-
this.selectRangeAndScroll([
|
|
3395
|
+
this.selectRangeAndScroll([A[0].range[0], A[0].range[0] + i]);
|
|
3283
3396
|
}
|
|
3284
3397
|
getEscapeFunction() {
|
|
3285
3398
|
const e = this.getFormat();
|
|
@@ -3295,8 +3408,8 @@ class Kr {
|
|
|
3295
3408
|
return this.config.editor.getDoc();
|
|
3296
3409
|
}
|
|
3297
3410
|
selectRange(e) {
|
|
3298
|
-
const n = this.getDoc(), o = n.posFromIndex(e[0]),
|
|
3299
|
-
return n.setSelection(o,
|
|
3411
|
+
const n = this.getDoc(), o = n.posFromIndex(e[0]), A = n.posFromIndex(e[1]);
|
|
3412
|
+
return n.setSelection(o, A), [o, A];
|
|
3300
3413
|
}
|
|
3301
3414
|
selectRangeAndScroll(e) {
|
|
3302
3415
|
const n = this.selectRange(e), o = this.config.editor;
|
|
@@ -3304,10 +3417,10 @@ class Kr {
|
|
|
3304
3417
|
}
|
|
3305
3418
|
cmSelectionToRange = (e) => {
|
|
3306
3419
|
const n = this.getDoc(), o = [n.indexFromPos(e.anchor), n.indexFromPos(e.head)];
|
|
3307
|
-
return o.sort((
|
|
3420
|
+
return o.sort((A, r) => A - r), o;
|
|
3308
3421
|
};
|
|
3309
3422
|
}
|
|
3310
|
-
class
|
|
3423
|
+
class Or {
|
|
3311
3424
|
/**
|
|
3312
3425
|
* Editor of this adapter
|
|
3313
3426
|
*
|
|
@@ -3381,8 +3494,8 @@ class Nr {
|
|
|
3381
3494
|
* @inheritdoc
|
|
3382
3495
|
*/
|
|
3383
3496
|
replaceRanges(e, n) {
|
|
3384
|
-
const o = this.selectMatches(n),
|
|
3385
|
-
this.replaceAlignedMatches(o), this.selectText(o[0].range[0],
|
|
3497
|
+
const o = this.selectMatches(n), A = o.map((r) => r.originalMatch.replacement).join("");
|
|
3498
|
+
this.replaceAlignedMatches(o), this.selectText(o[0].range[0], A.length);
|
|
3386
3499
|
}
|
|
3387
3500
|
/**
|
|
3388
3501
|
* @inheritdoc
|
|
@@ -3448,15 +3561,15 @@ class Nr {
|
|
|
3448
3561
|
* @protected
|
|
3449
3562
|
*/
|
|
3450
3563
|
selectText(e, n) {
|
|
3451
|
-
const o = this.document.findTextNodeByOffset(e),
|
|
3564
|
+
const o = this.document.findTextNodeByOffset(e), A = this.document.findTextNodeByOffset(n), r = this.selectionManager.getActive();
|
|
3452
3565
|
r.startNode = o.textNode, r.startOffset = Ext.ux.xeditor.Util.getNodeOffsetByNodeAndOffset(
|
|
3453
3566
|
this.editor,
|
|
3454
3567
|
o.textNode,
|
|
3455
3568
|
o.offset
|
|
3456
|
-
), r.endNode =
|
|
3569
|
+
), r.endNode = A.textNode, r.endOffset = Ext.ux.xeditor.Util.getNodeOffsetByNodeAndOffset(
|
|
3457
3570
|
this.editor,
|
|
3458
|
-
|
|
3459
|
-
|
|
3571
|
+
A.textNode,
|
|
3572
|
+
A.offset
|
|
3460
3573
|
), this.editor.updateState(), this.selectionManager.sync(), this.editor.contentFrame.scrollToSelection("middle", !0).selectionCorrected && (this.editor.updateState(), this.selectionManager.sync());
|
|
3461
3574
|
}
|
|
3462
3575
|
/**
|
|
@@ -3471,29 +3584,29 @@ class Nr {
|
|
|
3471
3584
|
html: "",
|
|
3472
3585
|
text: ""
|
|
3473
3586
|
}, n = this.editor.getVersion().major >= 6, o = this;
|
|
3474
|
-
function
|
|
3587
|
+
function A(r, i) {
|
|
3475
3588
|
if (r.isRemoved(!0))
|
|
3476
3589
|
return;
|
|
3477
|
-
const
|
|
3478
|
-
let
|
|
3479
|
-
r.eachChildNode(function(
|
|
3480
|
-
const u = o.editor.document.getNodeType(
|
|
3481
|
-
if (
|
|
3482
|
-
let g = o.editor.document.getTextNodeValue(
|
|
3590
|
+
const s = r.getType() === "text";
|
|
3591
|
+
let a = !1;
|
|
3592
|
+
r.eachChildNode(function(c, l, d) {
|
|
3593
|
+
const u = o.editor.document.getNodeType(c);
|
|
3594
|
+
if (s && u === "#text") {
|
|
3595
|
+
let g = o.editor.document.getTextNodeValue(c);
|
|
3483
3596
|
g = Ext.ux.xeditor.Util.trimPlaceHolderChar(o.editor, g);
|
|
3484
3597
|
const h = document.createTextNode(g);
|
|
3485
3598
|
i.appendChild(h);
|
|
3486
3599
|
} else if (o.editor.configObj.isElementType(u)) {
|
|
3487
|
-
const g = o.editor.document.getNode(
|
|
3488
|
-
if (
|
|
3600
|
+
const g = o.editor.document.getNode(c), h = o.editor.configObj.getRoleByType(u), f = o.getAcrolinxElement(g, h, i);
|
|
3601
|
+
if (a && !n) {
|
|
3489
3602
|
const p = document.createTextNode(" ");
|
|
3490
3603
|
f.appendChild(p);
|
|
3491
3604
|
}
|
|
3492
|
-
|
|
3605
|
+
A(g, f), a = h.insertSpaceAfter;
|
|
3493
3606
|
}
|
|
3494
3607
|
});
|
|
3495
3608
|
}
|
|
3496
|
-
return
|
|
3609
|
+
return A(this.document.root, e.dom), e.html = e.dom.outerHTML, e.text = e.dom.innerText, e;
|
|
3497
3610
|
}
|
|
3498
3611
|
/**
|
|
3499
3612
|
* Returns the specific element that should be used for the acrolinx check.
|
|
@@ -3509,66 +3622,148 @@ class Nr {
|
|
|
3509
3622
|
getAcrolinxElement(e, n, o) {
|
|
3510
3623
|
if (n.isInline)
|
|
3511
3624
|
return o;
|
|
3512
|
-
const
|
|
3513
|
-
return o.appendChild(
|
|
3625
|
+
const A = document.createElement(n.tag);
|
|
3626
|
+
return o.appendChild(A), A;
|
|
3514
3627
|
}
|
|
3515
3628
|
}
|
|
3516
|
-
const he =
|
|
3629
|
+
const he = globalThis;
|
|
3517
3630
|
he.acrolinx = he.acrolinx || {};
|
|
3518
|
-
const
|
|
3631
|
+
const jr = {
|
|
3519
3632
|
AcrolinxPlugin: pe,
|
|
3520
|
-
autoBindFloatingSidebar:
|
|
3521
|
-
autoBindFloatingSidebarAsync:
|
|
3522
|
-
createPluginMessageAdapter:
|
|
3523
|
-
initFloatingSidebar:
|
|
3524
|
-
AsyncLocalStorage:
|
|
3525
|
-
loadSidebarCode:
|
|
3633
|
+
autoBindFloatingSidebar: Qr,
|
|
3634
|
+
autoBindFloatingSidebarAsync: Kr,
|
|
3635
|
+
createPluginMessageAdapter: Gt,
|
|
3636
|
+
initFloatingSidebar: xe,
|
|
3637
|
+
AsyncLocalStorage: Ee,
|
|
3638
|
+
loadSidebarCode: Ot,
|
|
3526
3639
|
getSelectionHtmlRanges: ne,
|
|
3640
|
+
extractTextDomMapping: Ie,
|
|
3527
3641
|
adapter: {
|
|
3528
3642
|
AbstractRichtextEditorAdapter: N,
|
|
3529
|
-
AutoBindAdapter:
|
|
3530
|
-
AsyncAutoBindAdapter:
|
|
3531
|
-
CKEditor5Adapter:
|
|
3532
|
-
CKEditorAdapter:
|
|
3533
|
-
CodeMirror6Adapter:
|
|
3534
|
-
CodeMirrorAdapter:
|
|
3535
|
-
ContentEditableAdapter:
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
|
|
3643
|
+
AutoBindAdapter: It,
|
|
3644
|
+
AsyncAutoBindAdapter: vt,
|
|
3645
|
+
CKEditor5Adapter: Nr,
|
|
3646
|
+
CKEditorAdapter: Pr,
|
|
3647
|
+
CodeMirror6Adapter: Tr,
|
|
3648
|
+
CodeMirrorAdapter: Jr,
|
|
3649
|
+
ContentEditableAdapter: lt,
|
|
3650
|
+
HerettoContentEditableAdapter: dt,
|
|
3651
|
+
AsyncContentEditableAdapter: Ce,
|
|
3652
|
+
InputAdapter: ut,
|
|
3653
|
+
MultiEditorAdapter: ye,
|
|
3654
|
+
AsyncMultiEditorAdapter: bt,
|
|
3655
|
+
TinyMCEAdapter: Gr,
|
|
3656
|
+
XeditorAdapter: Or,
|
|
3657
|
+
QuipAdapter: gt,
|
|
3658
|
+
SynchronizeAsyncAdapter: _e
|
|
3542
3659
|
},
|
|
3543
3660
|
lookup: {
|
|
3544
3661
|
lookupMatches: O
|
|
3545
|
-
}
|
|
3546
|
-
extractTextDomMapping: Ie
|
|
3662
|
+
}
|
|
3547
3663
|
};
|
|
3548
|
-
he.acrolinx.plugins =
|
|
3664
|
+
he.acrolinx.plugins = jr;
|
|
3549
3665
|
export {
|
|
3666
|
+
Wn as AUTO_SELF_CLOSING_LINE_TAGS,
|
|
3550
3667
|
N as AbstractRichtextEditorAdapter,
|
|
3551
3668
|
pe as AcrolinxPlugin,
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3669
|
+
vt as AsyncAutoBindAdapter,
|
|
3670
|
+
Ee as AsyncLocalStorage,
|
|
3671
|
+
bt as AsyncMultiEditorAdapter,
|
|
3672
|
+
It as AutoBindAdapter,
|
|
3673
|
+
Nr as CKEditor5Adapter,
|
|
3674
|
+
Pr as CKEditorAdapter,
|
|
3675
|
+
Rt as CLIENT_COMPONENT_MAIN_FALLBACK,
|
|
3676
|
+
ke as CLOSE_ICON_CLASS,
|
|
3677
|
+
Tr as CodeMirror6Adapter,
|
|
3678
|
+
Jr as CodeMirrorAdapter,
|
|
3679
|
+
lt as ContentEditableAdapter,
|
|
3680
|
+
L as DEFAULT_POS,
|
|
3681
|
+
Qt as Deferred,
|
|
3682
|
+
gr as EDITABLE_ELEMENTS_SELECTOR,
|
|
3683
|
+
wt as FOOTER,
|
|
3684
|
+
Ye as FOOTER_HEIGHT,
|
|
3685
|
+
dt as HerettoContentEditableAdapter,
|
|
3686
|
+
ge as IS_DRAGGED_CLASS,
|
|
3687
|
+
Y as IS_RESIZING_CLASS,
|
|
3688
|
+
ut as InputAdapter,
|
|
3689
|
+
ye as MultiEditorAdapter,
|
|
3690
|
+
rt as NEW_LINE_TAGS,
|
|
3691
|
+
Et as POSITION_KEY,
|
|
3692
|
+
gt as QuipAdapter,
|
|
3693
|
+
Se as RESIZE_ICON_CLASS,
|
|
3694
|
+
J as SIDEBAR_CONTAINER_ID,
|
|
3695
|
+
Be as SIDEBAR_DRAG_OVERLAY_ID,
|
|
3696
|
+
ue as SIDEBAR_GLASS_PANE_ID,
|
|
3697
|
+
M as SIDEBAR_ID,
|
|
3698
|
+
Ft as SIDEBAR_SDK_COMPONENT,
|
|
3699
|
+
Xe as SidebarURLInvalidError,
|
|
3700
|
+
Ce as StateBasedContentEditableAdapter,
|
|
3701
|
+
_e as SynchronizeAsyncAdapter,
|
|
3702
|
+
Ct as TITLE_BAR_CLASS,
|
|
3703
|
+
Gr as TinyMCEAdapter,
|
|
3704
|
+
qt as WorkQueue,
|
|
3705
|
+
Or as XeditorAdapter,
|
|
3706
|
+
V as assertElementIsDisplayed,
|
|
3707
|
+
te as assign,
|
|
3708
|
+
Qr as autoBindFloatingSidebar,
|
|
3709
|
+
Kr as autoBindFloatingSidebarAsync,
|
|
3710
|
+
ft as bindAdaptersForCurrentPage,
|
|
3711
|
+
Yn as browser,
|
|
3712
|
+
qn as concatTextMappings,
|
|
3713
|
+
Pt as connectAcrolinxPluginToMessages,
|
|
3714
|
+
Vr as containsText,
|
|
3715
|
+
Nn as createOffsetMappingArray,
|
|
3716
|
+
Gt as createPluginMessageAdapter,
|
|
3717
|
+
ce as deepCloneWithHTMLElement,
|
|
3718
|
+
Ht as deepFreezed,
|
|
3719
|
+
_n as domPosition,
|
|
3720
|
+
Xr as enableLogging,
|
|
3721
|
+
yr as escapeHtmlCharacters,
|
|
3722
|
+
Qn as extractText,
|
|
3569
3723
|
Ie as extractTextDomMapping,
|
|
3724
|
+
rn as findDisplacement,
|
|
3725
|
+
G as findNewIndex,
|
|
3726
|
+
st as getAutobindWrapperAttributes,
|
|
3727
|
+
it as getCompleteFlagLength,
|
|
3728
|
+
we as getEditableElements,
|
|
3729
|
+
ee as getElementFromAdapterConf,
|
|
3730
|
+
er as getEndDomPos,
|
|
3570
3731
|
ne as getSelectionHtmlRanges,
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3732
|
+
Fe as grepAttributeValues,
|
|
3733
|
+
xt as hasEditorID,
|
|
3734
|
+
Dt as hasElement,
|
|
3735
|
+
Je as hasError,
|
|
3736
|
+
xe as initFloatingSidebar,
|
|
3737
|
+
Oe as internalFetch,
|
|
3738
|
+
St as isAsyncAdapterInterface,
|
|
3739
|
+
Ln as isChrome,
|
|
3740
|
+
ve as isDangerousToReplace,
|
|
3741
|
+
Ue as isDisplayed,
|
|
3742
|
+
Wt as isFromSameOrigin,
|
|
3743
|
+
sr as isHeretto,
|
|
3744
|
+
Zt as isIFrame,
|
|
3745
|
+
vr as isProbablyUndesiredField,
|
|
3746
|
+
De as isPromise,
|
|
3747
|
+
Ur as isSuccessfulContentExtractionResult,
|
|
3748
|
+
Le as keepVisible,
|
|
3749
|
+
Br as loadFromLocalStorage,
|
|
3750
|
+
Zr as loadInitialPos,
|
|
3751
|
+
Ot as loadSidebarCode,
|
|
3752
|
+
H as log,
|
|
3753
|
+
zr as logTime,
|
|
3754
|
+
O as lookupMatches,
|
|
3755
|
+
Mt as parseUrl,
|
|
3756
|
+
U as rangeContent,
|
|
3757
|
+
jt as rebaseRelativeUrl,
|
|
3758
|
+
Ut as rebaseRelativeUrls,
|
|
3759
|
+
z as removeNode,
|
|
3760
|
+
Sr as saveToLocalStorage,
|
|
3761
|
+
at as scrollIntoView,
|
|
3762
|
+
ct as scrollIntoViewCenteredIfPossible,
|
|
3763
|
+
Vn as scrollIntoViewCenteredWithFallback,
|
|
3764
|
+
X as simulateInputEvent,
|
|
3765
|
+
on as sortedIndexBy,
|
|
3766
|
+
Xn as textMapping,
|
|
3767
|
+
fe as toSet,
|
|
3768
|
+
ze as waitMs
|
|
3574
3769
|
};
|