@acrolinx/sidebar-sdk 2.0.2 → 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/dist/index.d.ts +58 -0
- package/dist/index.js +1089 -988
- package/package.json +14 -14
package/dist/index.js
CHANGED
|
@@ -1,48 +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
8
|
return typeof t.content == "string";
|
|
9
9
|
}
|
|
10
|
-
function
|
|
10
|
+
function xt(t) {
|
|
11
11
|
return !!t.editorId;
|
|
12
12
|
}
|
|
13
|
-
function
|
|
13
|
+
function Dt(t) {
|
|
14
14
|
return !!t.element;
|
|
15
15
|
}
|
|
16
16
|
function ee(t) {
|
|
17
|
-
if (
|
|
17
|
+
if (Dt(t))
|
|
18
18
|
return t.element;
|
|
19
|
-
if (
|
|
19
|
+
if (xt(t))
|
|
20
20
|
return document.getElementById(t.editorId);
|
|
21
21
|
throw console.error("Invalid AdapterConf. Missing editorId or element", t), new Error("Invalid AdapterConf. Missing editorId or element");
|
|
22
22
|
}
|
|
23
|
-
const
|
|
23
|
+
const Rt = [
|
|
24
24
|
{
|
|
25
25
|
id: "com.acrolinx.sidebarexample",
|
|
26
26
|
name: "Acrolinx Sidebar Example Client",
|
|
27
27
|
version: "1.2.3.999",
|
|
28
28
|
category: "MAIN"
|
|
29
29
|
}
|
|
30
|
-
],
|
|
30
|
+
], Ft = {
|
|
31
31
|
id: "com.acrolinx.sidebar-sdk-js",
|
|
32
32
|
name: "Sidebar SDK JS",
|
|
33
|
-
version: "2.0.
|
|
33
|
+
version: "2.0.3"
|
|
34
34
|
};
|
|
35
|
-
function
|
|
35
|
+
function zr(t, e) {
|
|
36
36
|
const n = Date.now(), o = e();
|
|
37
37
|
return console.log(`Duration of "${t}:"`, Date.now() - n), o;
|
|
38
38
|
}
|
|
39
|
-
async function
|
|
39
|
+
async function Oe(t) {
|
|
40
40
|
const e = await fetch(t);
|
|
41
41
|
if (e.status >= 200 && e.status < 400)
|
|
42
42
|
return e.text();
|
|
43
43
|
throw new Error(`Error while loading ${t}.`);
|
|
44
44
|
}
|
|
45
|
-
function
|
|
45
|
+
function Zt(t) {
|
|
46
46
|
return t.nodeName === "IFRAME";
|
|
47
47
|
}
|
|
48
48
|
function X(t) {
|
|
@@ -50,35 +50,35 @@ function X(t) {
|
|
|
50
50
|
startNode: e,
|
|
51
51
|
endNode: n,
|
|
52
52
|
eventType: o,
|
|
53
|
-
startOffset:
|
|
53
|
+
startOffset: A,
|
|
54
54
|
endOffset: r,
|
|
55
55
|
replacement: i,
|
|
56
|
-
disableSimulation:
|
|
56
|
+
disableSimulation: s
|
|
57
57
|
} = t;
|
|
58
|
-
if (
|
|
58
|
+
if (s)
|
|
59
59
|
return;
|
|
60
|
-
const
|
|
60
|
+
const a = new StaticRange({
|
|
61
61
|
startContainer: e,
|
|
62
|
-
startOffset:
|
|
62
|
+
startOffset: A,
|
|
63
63
|
endContainer: n,
|
|
64
64
|
endOffset: r
|
|
65
|
-
}),
|
|
65
|
+
}), c = {
|
|
66
66
|
inputType: "insertText",
|
|
67
67
|
data: i,
|
|
68
68
|
bubbles: !0,
|
|
69
69
|
cancelable: !1,
|
|
70
|
-
targetRanges: [
|
|
70
|
+
targetRanges: [a]
|
|
71
71
|
};
|
|
72
|
-
e.dispatchEvent(new InputEvent(o,
|
|
72
|
+
e.dispatchEvent(new InputEvent(o, c));
|
|
73
73
|
}
|
|
74
|
-
function
|
|
74
|
+
function Mt(t) {
|
|
75
75
|
const e = document.createElement("a");
|
|
76
76
|
e.href = t, e.host === "" && (e.href = e.href);
|
|
77
|
-
const { protocol: n, host: o, hostname:
|
|
78
|
-
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 };
|
|
79
79
|
}
|
|
80
|
-
function
|
|
81
|
-
const { protocol: e, host: n } =
|
|
80
|
+
function Wt(t) {
|
|
81
|
+
const { protocol: e, host: n } = Mt(t);
|
|
82
82
|
return location.protocol === e && location.host === n;
|
|
83
83
|
}
|
|
84
84
|
function fe(t) {
|
|
@@ -87,37 +87,37 @@ function fe(t) {
|
|
|
87
87
|
function te(t, e) {
|
|
88
88
|
return Object.assign({}, t, e);
|
|
89
89
|
}
|
|
90
|
-
function
|
|
90
|
+
function je(t) {
|
|
91
91
|
Object.freeze(t);
|
|
92
92
|
const e = typeof t == "function", n = Object.prototype.hasOwnProperty;
|
|
93
93
|
Object.getOwnPropertyNames(t).forEach(function(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]) &&
|
|
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]);
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
|
-
function
|
|
97
|
+
function Ht(t) {
|
|
98
98
|
const e = structuredClone(t);
|
|
99
|
-
return
|
|
99
|
+
return je(e), e;
|
|
100
100
|
}
|
|
101
|
-
function
|
|
101
|
+
function Ue(t) {
|
|
102
102
|
if (!t.parentNode)
|
|
103
103
|
return !1;
|
|
104
104
|
const e = t.getBoundingClientRect();
|
|
105
105
|
return !!e.width && !!e.height;
|
|
106
106
|
}
|
|
107
107
|
function V(t) {
|
|
108
|
-
if (!
|
|
108
|
+
if (!Ue(t))
|
|
109
109
|
throw Error("Adapter element is not displayed.");
|
|
110
110
|
}
|
|
111
|
-
function
|
|
111
|
+
function Vr(t) {
|
|
112
112
|
return /\S/.test(t);
|
|
113
113
|
}
|
|
114
114
|
function z(t) {
|
|
115
115
|
t.parentNode.removeChild(t);
|
|
116
116
|
}
|
|
117
|
-
function
|
|
117
|
+
function De(t) {
|
|
118
118
|
return t && typeof t.then == "function";
|
|
119
119
|
}
|
|
120
|
-
class
|
|
120
|
+
class Qt {
|
|
121
121
|
resolve;
|
|
122
122
|
reject;
|
|
123
123
|
promise;
|
|
@@ -127,7 +127,7 @@ class Mt {
|
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
-
function
|
|
130
|
+
function ze(t) {
|
|
131
131
|
return new Promise((e) => setTimeout(e, t));
|
|
132
132
|
}
|
|
133
133
|
function ce(t) {
|
|
@@ -147,20 +147,20 @@ function ce(t) {
|
|
|
147
147
|
return n;
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
|
-
function
|
|
150
|
+
function Kt(t) {
|
|
151
151
|
return JSON.parse(JSON.stringify(t));
|
|
152
152
|
}
|
|
153
|
-
function
|
|
154
|
-
const o = { command: e, args:
|
|
153
|
+
function Nt(t, e, ...n) {
|
|
154
|
+
const o = { command: e, args: Kt(n) };
|
|
155
155
|
t.postMessage(o, "*");
|
|
156
156
|
}
|
|
157
|
-
function
|
|
157
|
+
function Ve(t, e) {
|
|
158
158
|
for (const n in e) {
|
|
159
159
|
const o = e[n];
|
|
160
|
-
e[n] = (...
|
|
160
|
+
e[n] = (...A) => (Nt(t(), n, ...A), o.apply(e, A));
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
function
|
|
163
|
+
function Pt(t, e) {
|
|
164
164
|
const n = {
|
|
165
165
|
init: () => {
|
|
166
166
|
},
|
|
@@ -176,19 +176,19 @@ function Kt(t, e) {
|
|
|
176
176
|
showMessage: () => {
|
|
177
177
|
}
|
|
178
178
|
};
|
|
179
|
-
|
|
180
|
-
function o(
|
|
181
|
-
if (
|
|
179
|
+
Ve(() => e.contentWindow, n);
|
|
180
|
+
function o(A) {
|
|
181
|
+
if (A.source !== e.contentWindow)
|
|
182
182
|
return;
|
|
183
|
-
const r =
|
|
184
|
-
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));
|
|
185
185
|
}
|
|
186
186
|
addEventListener("message", o, !1);
|
|
187
187
|
}
|
|
188
|
-
function
|
|
188
|
+
function Gt(t = window) {
|
|
189
189
|
function e(o) {
|
|
190
|
-
const
|
|
191
|
-
|
|
190
|
+
const A = o.data, { command: r, args: i } = A, s = t.acrolinxSidebar;
|
|
191
|
+
s[r] && s[r].apply(s, i);
|
|
192
192
|
}
|
|
193
193
|
t.addEventListener("message", e, !1);
|
|
194
194
|
const n = {
|
|
@@ -211,11 +211,11 @@ function Nt(t = window) {
|
|
|
211
211
|
log: () => {
|
|
212
212
|
}
|
|
213
213
|
};
|
|
214
|
-
return
|
|
214
|
+
return Ve(() => t.parent, n), n;
|
|
215
215
|
}
|
|
216
|
-
var re = {},
|
|
217
|
-
function
|
|
218
|
-
return
|
|
216
|
+
var re = {}, Re;
|
|
217
|
+
function Tt() {
|
|
218
|
+
return Re || (Re = 1, re.ACROLINX_STARTPAGE_INLINED_HTML = `<!doctype html>
|
|
219
219
|
<html lang="en">
|
|
220
220
|
<head>
|
|
221
221
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
@@ -309,8 +309,8 @@ function Pt() {
|
|
|
309
309
|
</html>
|
|
310
310
|
`), re;
|
|
311
311
|
}
|
|
312
|
-
var
|
|
313
|
-
class
|
|
312
|
+
var Yt = Tt();
|
|
313
|
+
class Xe extends Error {
|
|
314
314
|
constructor(e, n, o) {
|
|
315
315
|
super(e), this.message = e, this.configuredSidebarURL = n, this.htmlLoaded = o, this.configuredSidebarURL = n, this.htmlLoaded = o, this.details = e + `
|
|
316
316
|
Configured SidebarURL:` + n + `
|
|
@@ -318,84 +318,84 @@ Configured SidebarURL:` + n + `
|
|
|
318
318
|
}
|
|
319
319
|
details;
|
|
320
320
|
}
|
|
321
|
-
function
|
|
321
|
+
function Lt(t) {
|
|
322
322
|
const e = document.createElement("link");
|
|
323
323
|
return e.rel = "stylesheet", e.href = t, e;
|
|
324
324
|
}
|
|
325
|
-
function
|
|
325
|
+
function Jt(t) {
|
|
326
326
|
const e = document.createElement("script");
|
|
327
327
|
return e.src = t, e.type = "text/javascript", e.async = !1, e.defer = !1, e;
|
|
328
328
|
}
|
|
329
|
-
function
|
|
329
|
+
function qe(t) {
|
|
330
330
|
const e = Date.now();
|
|
331
331
|
return t + "index.html?t=" + e;
|
|
332
332
|
}
|
|
333
|
-
async function
|
|
334
|
-
const e =
|
|
333
|
+
async function Ot(t) {
|
|
334
|
+
const e = qe(t), n = await Oe(e);
|
|
335
335
|
if (n.indexOf('<meta name="sidebar-version"') < 0)
|
|
336
336
|
try {
|
|
337
|
-
throw new
|
|
337
|
+
throw new Xe(
|
|
338
338
|
"It looks like the sidebar URL was configured wrongly.",
|
|
339
339
|
t,
|
|
340
340
|
n
|
|
341
341
|
);
|
|
342
|
-
} catch (
|
|
343
|
-
console.log(
|
|
342
|
+
} catch (a) {
|
|
343
|
+
console.log(a);
|
|
344
344
|
return;
|
|
345
345
|
}
|
|
346
|
-
const o = n.replace(/<!--[\s\S]*?-->/g, ""),
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
}),
|
|
350
|
-
|
|
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));
|
|
351
351
|
});
|
|
352
352
|
}
|
|
353
|
-
function
|
|
353
|
+
function Fe(t, e) {
|
|
354
354
|
const n = new RegExp(`${e}="(.*?)"`, "g");
|
|
355
355
|
let o;
|
|
356
|
-
const
|
|
356
|
+
const A = [];
|
|
357
357
|
for (; (o = n.exec(t)) !== null; )
|
|
358
|
-
|
|
359
|
-
return
|
|
358
|
+
A.push(o[1]);
|
|
359
|
+
return A;
|
|
360
360
|
}
|
|
361
|
-
function
|
|
361
|
+
function jt(t, e) {
|
|
362
362
|
return t.match(/^https?:/) ? t : e + t;
|
|
363
363
|
}
|
|
364
|
-
async function
|
|
364
|
+
async function Ze(t, e, n) {
|
|
365
365
|
if (t.sidebarHtml || !t.sidebarUrl) {
|
|
366
|
-
q(t.sidebarHtml ||
|
|
366
|
+
q(t.sidebarHtml || Yt.ACROLINX_STARTPAGE_INLINED_HTML, e), n();
|
|
367
367
|
return;
|
|
368
368
|
}
|
|
369
|
-
const o = t.sidebarUrl,
|
|
370
|
-
if (t.useMessageAdapter || t.useSidebarFromSameOriginDirectly &&
|
|
371
|
-
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;
|
|
372
372
|
else {
|
|
373
|
-
const r = await
|
|
373
|
+
const r = await Oe(A);
|
|
374
374
|
if (r.indexOf('<meta name="sidebar-version"') < 0)
|
|
375
375
|
try {
|
|
376
|
-
throw new
|
|
376
|
+
throw new Xe(
|
|
377
377
|
"It looks like the sidebar URL was configured wrongly. Check developer console for more information!",
|
|
378
|
-
|
|
378
|
+
A,
|
|
379
379
|
r
|
|
380
380
|
);
|
|
381
|
-
} catch (
|
|
382
|
-
|
|
381
|
+
} catch (s) {
|
|
382
|
+
s instanceof Error ? q(s.message, e) : q("Unknown error loading sidebar", e), console.error(s);
|
|
383
383
|
return;
|
|
384
384
|
}
|
|
385
|
-
const i =
|
|
385
|
+
const i = Ut(r, o);
|
|
386
386
|
q(i, e), n();
|
|
387
387
|
}
|
|
388
388
|
}
|
|
389
|
-
function
|
|
389
|
+
function Ut(t, e) {
|
|
390
390
|
return t.replace(/src="(?!https?:)/g, 'src="' + e).replace(/href="(?!https?:)/g, 'href="' + e);
|
|
391
391
|
}
|
|
392
392
|
function q(t, e) {
|
|
393
393
|
const n = e.contentWindow;
|
|
394
394
|
n.document.open(), n.document.write(t), n.document.close();
|
|
395
395
|
}
|
|
396
|
-
class
|
|
397
|
-
constructor(e, n, o,
|
|
398
|
-
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;
|
|
399
399
|
}
|
|
400
400
|
acrolinxSidebar;
|
|
401
401
|
initSidebarOnPremise() {
|
|
@@ -406,14 +406,14 @@ class jt {
|
|
|
406
406
|
log: !!this.config.log
|
|
407
407
|
},
|
|
408
408
|
...this.config,
|
|
409
|
-
clientComponents: (this.config.clientComponents ||
|
|
409
|
+
clientComponents: (this.config.clientComponents || Rt).concat(Ft)
|
|
410
410
|
});
|
|
411
411
|
}
|
|
412
412
|
getDefaultDocumentReference() {
|
|
413
413
|
return this.config.getDocumentReference ? this.config.getDocumentReference() : window.location.href;
|
|
414
414
|
}
|
|
415
415
|
requestGlobalCheckSync(e, n = "HTML") {
|
|
416
|
-
if (
|
|
416
|
+
if (Je(e))
|
|
417
417
|
this.acrolinxSidebar.onGlobalCheckRejected(), window.alert(e.error);
|
|
418
418
|
else {
|
|
419
419
|
const o = this.acrolinxSidebar.checkGlobal(e.content, {
|
|
@@ -441,12 +441,12 @@ class jt {
|
|
|
441
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);
|
|
442
442
|
}
|
|
443
443
|
requestGlobalCheck(e = { selection: !1, batchCheck: !1 }) {
|
|
444
|
-
const n = this.adapter, o = n.extractContentForCheck({ checkSelection: e.selection }),
|
|
445
|
-
|
|
446
|
-
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);
|
|
447
447
|
}).catch((r) => {
|
|
448
448
|
this.acrolinxSidebar.onGlobalCheckRejected(), console.error("Error while adapter.extractContentForCheck:", r);
|
|
449
|
-
}) : this.requestGlobalCheckSync(o,
|
|
449
|
+
}) : this.requestGlobalCheckSync(o, A);
|
|
450
450
|
}
|
|
451
451
|
onCheckResult(e) {
|
|
452
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);
|
|
@@ -470,15 +470,15 @@ class jt {
|
|
|
470
470
|
}
|
|
471
471
|
}
|
|
472
472
|
handlePotentialPromiseError(e, n, o) {
|
|
473
|
-
|
|
474
|
-
this.handleRangeOperationError(
|
|
473
|
+
De(e) && e.catch((A) => {
|
|
474
|
+
this.handleRangeOperationError(A, n, o);
|
|
475
475
|
});
|
|
476
476
|
}
|
|
477
477
|
handleRangeOperationError(e, n, o) {
|
|
478
478
|
console.log(e), this.acrolinxSidebar.invalidateRanges(
|
|
479
|
-
o.map((
|
|
479
|
+
o.map((A) => ({
|
|
480
480
|
checkId: n,
|
|
481
|
-
range:
|
|
481
|
+
range: A.range
|
|
482
482
|
}))
|
|
483
483
|
);
|
|
484
484
|
}
|
|
@@ -492,32 +492,32 @@ class jt {
|
|
|
492
492
|
this.config.log && this.config.log(e);
|
|
493
493
|
}
|
|
494
494
|
}
|
|
495
|
-
async function
|
|
495
|
+
async function Vt(t, e, n) {
|
|
496
496
|
const o = document.getElementById(t.sidebarContainerId);
|
|
497
497
|
if (!o)
|
|
498
498
|
throw new Error(
|
|
499
499
|
`Acrolinx can't find an element with the configured sidebarContainerId "${t.sidebarContainerId}".`
|
|
500
500
|
);
|
|
501
|
-
const
|
|
502
|
-
o.appendChild(
|
|
503
|
-
const r =
|
|
501
|
+
const A = document.createElement("iframe");
|
|
502
|
+
o.appendChild(A);
|
|
503
|
+
const r = A.contentWindow, i = new zt(
|
|
504
504
|
t,
|
|
505
505
|
e,
|
|
506
506
|
n,
|
|
507
507
|
r
|
|
508
508
|
);
|
|
509
|
-
function
|
|
510
|
-
|
|
509
|
+
function s() {
|
|
510
|
+
c(), console.log("Install acrolinxPlugin in sidebar."), t.acrolinxStorage && (r.acrolinxStorage = t.acrolinxStorage), r.acrolinxPlugin = i;
|
|
511
511
|
}
|
|
512
|
-
async function
|
|
513
|
-
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);
|
|
514
514
|
}
|
|
515
|
-
function
|
|
515
|
+
function c() {
|
|
516
516
|
t.onSidebarWindowLoaded && t.onSidebarWindowLoaded(r);
|
|
517
517
|
}
|
|
518
|
-
return t.useMessageAdapter ? await
|
|
518
|
+
return t.useMessageAdapter ? await a() : await Ze(t, A, s), i;
|
|
519
519
|
}
|
|
520
|
-
class
|
|
520
|
+
class Xt {
|
|
521
521
|
store = [];
|
|
522
522
|
push(e) {
|
|
523
523
|
this.store.push(e);
|
|
@@ -526,15 +526,15 @@ class zt {
|
|
|
526
526
|
return this.store.shift();
|
|
527
527
|
}
|
|
528
528
|
}
|
|
529
|
-
class
|
|
529
|
+
class qt {
|
|
530
530
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
531
|
-
workTodo = new
|
|
531
|
+
workTodo = new Xt();
|
|
532
532
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
533
533
|
currentWork;
|
|
534
534
|
addWork(e) {
|
|
535
535
|
const n = {
|
|
536
536
|
work: e,
|
|
537
|
-
deferred: new
|
|
537
|
+
deferred: new Qt()
|
|
538
538
|
};
|
|
539
539
|
return this.workTodo.push(n), this.currentWork || this.doRemainingWork(), n.deferred.promise;
|
|
540
540
|
}
|
|
@@ -550,7 +550,7 @@ class Vt {
|
|
|
550
550
|
));
|
|
551
551
|
}
|
|
552
552
|
}
|
|
553
|
-
class
|
|
553
|
+
class _e {
|
|
554
554
|
constructor(e) {
|
|
555
555
|
this.adapter = e, e.getAutobindWrapperAttributes && (this.getAutobindWrapperAttributes = e.getAutobindWrapperAttributes.bind(e)), e.getFormat && (this.getFormat = e.getFormat.bind(e));
|
|
556
556
|
}
|
|
@@ -558,7 +558,7 @@ class Ve {
|
|
|
558
558
|
requiresSynchronization = !1;
|
|
559
559
|
getAutobindWrapperAttributes;
|
|
560
560
|
getFormat;
|
|
561
|
-
workQueue = new
|
|
561
|
+
workQueue = new qt();
|
|
562
562
|
extractContentForCheck(e) {
|
|
563
563
|
return this.adapter.extractContentForCheck(e);
|
|
564
564
|
}
|
|
@@ -587,7 +587,7 @@ class pe {
|
|
|
587
587
|
this.initConfig = e, this.config = {};
|
|
588
588
|
}
|
|
589
589
|
registerAdapter(e) {
|
|
590
|
-
|
|
590
|
+
St(e) && e.requiresSynchronization ? this.adapter = new _e(e) : this.adapter = e;
|
|
591
591
|
}
|
|
592
592
|
configure(e) {
|
|
593
593
|
this.config = { ...this.config, ...e }, this.internalPlugin && this.internalPlugin.acrolinxSidebar && this.internalPlugin.configureSidebar(this.config);
|
|
@@ -610,7 +610,7 @@ class pe {
|
|
|
610
610
|
async init() {
|
|
611
611
|
if (!this.adapter)
|
|
612
612
|
throw new Error("Missing registered adapter. Please use registerAdapter before init.");
|
|
613
|
-
this.internalPlugin = await
|
|
613
|
+
this.internalPlugin = await Vt(this.initConfig, this.adapter, () => {
|
|
614
614
|
this.internalPlugin.configureSidebar(this.config);
|
|
615
615
|
});
|
|
616
616
|
}
|
|
@@ -623,15 +623,15 @@ class pe {
|
|
|
623
623
|
o.src = "about:blank", setTimeout(() => {
|
|
624
624
|
n.innerHTML = "", e();
|
|
625
625
|
}, 0);
|
|
626
|
-
} catch (
|
|
627
|
-
console.error(
|
|
626
|
+
} catch (A) {
|
|
627
|
+
console.error(A), e();
|
|
628
628
|
}
|
|
629
629
|
else
|
|
630
630
|
e();
|
|
631
631
|
}
|
|
632
632
|
}
|
|
633
633
|
}
|
|
634
|
-
function
|
|
634
|
+
function _t(t) {
|
|
635
635
|
const e = t.getSelection();
|
|
636
636
|
if (!e)
|
|
637
637
|
return [];
|
|
@@ -640,62 +640,62 @@ function Xt(t) {
|
|
|
640
640
|
n.push(e.getRangeAt(o));
|
|
641
641
|
return n;
|
|
642
642
|
}
|
|
643
|
-
function
|
|
644
|
-
return t.ownerDocument ?
|
|
645
|
-
(n) =>
|
|
643
|
+
function $t(t) {
|
|
644
|
+
return t.ownerDocument ? _t(t.ownerDocument).filter(
|
|
645
|
+
(n) => en(t, n.commonAncestorContainer) && n.toString().trim() !== ""
|
|
646
646
|
) : [];
|
|
647
647
|
}
|
|
648
|
-
function
|
|
648
|
+
function en(t, e) {
|
|
649
649
|
return t === e || e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_CONTAINS;
|
|
650
650
|
}
|
|
651
|
-
function
|
|
651
|
+
function Me(t, e) {
|
|
652
652
|
const n = [];
|
|
653
653
|
let o = e;
|
|
654
654
|
for (; o !== t; ) {
|
|
655
|
-
const
|
|
656
|
-
if (!
|
|
655
|
+
const A = o.parentNode;
|
|
656
|
+
if (!A)
|
|
657
657
|
break;
|
|
658
|
-
const r = Array.prototype.indexOf.call(
|
|
658
|
+
const r = Array.prototype.indexOf.call(A.childNodes, o);
|
|
659
659
|
if (r === -1)
|
|
660
660
|
break;
|
|
661
|
-
n.push(r), o =
|
|
661
|
+
n.push(r), o = A;
|
|
662
662
|
}
|
|
663
663
|
return n.reverse(), n;
|
|
664
664
|
}
|
|
665
|
-
function
|
|
665
|
+
function We(t, e) {
|
|
666
666
|
let n = t;
|
|
667
667
|
for (const o of e) {
|
|
668
|
-
const
|
|
669
|
-
if (!
|
|
668
|
+
const A = n.childNodes[o];
|
|
669
|
+
if (!A)
|
|
670
670
|
return;
|
|
671
|
-
n =
|
|
671
|
+
n = A;
|
|
672
672
|
}
|
|
673
673
|
return n;
|
|
674
674
|
}
|
|
675
|
-
const oe = "ACROOO_SELECTION_START",
|
|
676
|
-
function
|
|
675
|
+
const oe = "ACROOO_SELECTION_START", He = "ACROOO_SELECTION_END";
|
|
676
|
+
function tn(t, e, n) {
|
|
677
677
|
const o = t.ownerDocument;
|
|
678
678
|
if (!o)
|
|
679
679
|
return;
|
|
680
|
-
const
|
|
681
|
-
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)
|
|
682
682
|
return;
|
|
683
|
-
const
|
|
684
|
-
|
|
685
|
-
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);
|
|
686
686
|
if (!(d === -1 || u === -1))
|
|
687
687
|
return [d, u - oe.length];
|
|
688
688
|
}
|
|
689
|
-
function
|
|
689
|
+
function nn(t) {
|
|
690
690
|
return t.innerHTML;
|
|
691
691
|
}
|
|
692
|
-
function ne(t, e =
|
|
693
|
-
return
|
|
692
|
+
function ne(t, e = nn) {
|
|
693
|
+
return $t(t).map((o) => tn(t, o, e)).filter((o) => !!o);
|
|
694
694
|
}
|
|
695
|
-
function
|
|
695
|
+
function rn(t, e) {
|
|
696
696
|
if (t.length === 0)
|
|
697
697
|
return 0;
|
|
698
|
-
const n =
|
|
698
|
+
const n = on(
|
|
699
699
|
t,
|
|
700
700
|
{ diffOffset: 0, oldPosition: e + 0.1 },
|
|
701
701
|
(o) => o.oldPosition
|
|
@@ -703,18 +703,18 @@ function tn(t, e) {
|
|
|
703
703
|
return n > 0 ? t[n - 1].diffOffset : 0;
|
|
704
704
|
}
|
|
705
705
|
function G(t, e) {
|
|
706
|
-
return e +
|
|
706
|
+
return e + rn(t, e);
|
|
707
707
|
}
|
|
708
|
-
function
|
|
709
|
-
let o = 0,
|
|
710
|
-
for (; o <
|
|
711
|
-
const r = Math.floor((o +
|
|
712
|
-
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;
|
|
713
713
|
}
|
|
714
714
|
return o;
|
|
715
715
|
}
|
|
716
716
|
var ie;
|
|
717
|
-
const
|
|
717
|
+
const An = /* @__PURE__ */ new Map([
|
|
718
718
|
[0, 65533],
|
|
719
719
|
// C1 Unicode control character reference replacements
|
|
720
720
|
[128, 8364],
|
|
@@ -744,18 +744,18 @@ const rn = /* @__PURE__ */ new Map([
|
|
|
744
744
|
[156, 339],
|
|
745
745
|
[158, 382],
|
|
746
746
|
[159, 376]
|
|
747
|
-
]),
|
|
747
|
+
]), sn = (
|
|
748
748
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
749
|
-
(ie = String.fromCodePoint) !== null && ie !== void 0 ? ie : (t) => {
|
|
749
|
+
(ie = String.fromCodePoint) !== null && ie !== void 0 ? ie : ((t) => {
|
|
750
750
|
let e = "";
|
|
751
751
|
return t > 65535 && (t -= 65536, e += String.fromCharCode(t >>> 10 & 1023 | 55296), t = 56320 | t & 1023), e += String.fromCharCode(t), e;
|
|
752
|
-
}
|
|
752
|
+
})
|
|
753
753
|
);
|
|
754
|
-
function
|
|
754
|
+
function an(t) {
|
|
755
755
|
var e;
|
|
756
|
-
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;
|
|
757
757
|
}
|
|
758
|
-
function
|
|
758
|
+
function cn(t) {
|
|
759
759
|
const e = (
|
|
760
760
|
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
761
761
|
typeof atob == "function" ? (
|
|
@@ -774,13 +774,13 @@ function sn(t) {
|
|
|
774
774
|
)
|
|
775
775
|
)
|
|
776
776
|
), n = e.length & -2, o = new Uint16Array(n / 2);
|
|
777
|
-
for (let
|
|
778
|
-
const i = e.charCodeAt(
|
|
779
|
-
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;
|
|
780
780
|
}
|
|
781
781
|
return o;
|
|
782
782
|
}
|
|
783
|
-
const an = /* @__PURE__ */ sn("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");
|
|
784
784
|
var F;
|
|
785
785
|
(function(t) {
|
|
786
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";
|
|
@@ -789,18 +789,18 @@ var B;
|
|
|
789
789
|
(function(t) {
|
|
790
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";
|
|
791
791
|
})(B || (B = {}));
|
|
792
|
-
const
|
|
792
|
+
const Qe = 32;
|
|
793
793
|
function le(t) {
|
|
794
794
|
return t >= B.ZERO && t <= B.NINE;
|
|
795
795
|
}
|
|
796
|
-
function
|
|
796
|
+
function dn(t) {
|
|
797
797
|
return t >= B.UPPER_A && t <= B.UPPER_F || t >= B.LOWER_A && t <= B.LOWER_F;
|
|
798
798
|
}
|
|
799
|
-
function
|
|
799
|
+
function un(t) {
|
|
800
800
|
return t >= B.UPPER_A && t <= B.UPPER_Z || t >= B.LOWER_A && t <= B.LOWER_Z || le(t);
|
|
801
801
|
}
|
|
802
|
-
function
|
|
803
|
-
return t === B.EQUALS ||
|
|
802
|
+
function gn(t) {
|
|
803
|
+
return t === B.EQUALS || un(t);
|
|
804
804
|
}
|
|
805
805
|
var D;
|
|
806
806
|
(function(t) {
|
|
@@ -810,13 +810,13 @@ var K;
|
|
|
810
810
|
(function(t) {
|
|
811
811
|
t[t.Legacy = 0] = "Legacy", t[t.Strict = 1] = "Strict", t[t.Attribute = 2] = "Attribute";
|
|
812
812
|
})(K || (K = {}));
|
|
813
|
-
class
|
|
813
|
+
class hn {
|
|
814
814
|
constructor(e, n, o) {
|
|
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;
|
|
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;
|
|
816
816
|
}
|
|
817
817
|
/** Resets the instance to make it reusable. */
|
|
818
818
|
startEntity(e) {
|
|
819
|
-
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;
|
|
820
820
|
}
|
|
821
821
|
/**
|
|
822
822
|
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
@@ -853,7 +853,7 @@ class un {
|
|
|
853
853
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
854
854
|
*/
|
|
855
855
|
stateNumericStart(e, n) {
|
|
856
|
-
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));
|
|
857
857
|
}
|
|
858
858
|
/**
|
|
859
859
|
* Parses a hexadecimal numeric entity.
|
|
@@ -867,9 +867,9 @@ class un {
|
|
|
867
867
|
stateNumericHex(e, n) {
|
|
868
868
|
for (; n < e.length; ) {
|
|
869
869
|
const o = e.charCodeAt(n);
|
|
870
|
-
if (le(o) ||
|
|
871
|
-
const
|
|
872
|
-
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++;
|
|
873
873
|
} else
|
|
874
874
|
return this.emitNumericEntity(o, 3);
|
|
875
875
|
}
|
|
@@ -915,7 +915,7 @@ class un {
|
|
|
915
915
|
this.consumed += 1;
|
|
916
916
|
else if (this.decodeMode === K.Strict)
|
|
917
917
|
return 0;
|
|
918
|
-
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;
|
|
919
919
|
}
|
|
920
920
|
/**
|
|
921
921
|
* Parses a named entity.
|
|
@@ -928,44 +928,40 @@ class un {
|
|
|
928
928
|
*/
|
|
929
929
|
stateNamedEntity(e, n) {
|
|
930
930
|
const { decodeTree: o } = this;
|
|
931
|
-
let
|
|
931
|
+
let A = o[this.treeIndex], r = (A & F.VALUE_LENGTH) >> 14;
|
|
932
932
|
for (; n < e.length; ) {
|
|
933
|
-
if (r === 0 && (
|
|
934
|
-
const
|
|
935
|
-
if (
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity();
|
|
939
|
-
n++, this.excess++;
|
|
940
|
-
const a = A - 1;
|
|
941
|
-
for (let l = 1; l < A; l += 2) {
|
|
942
|
-
const d = o[this.treeIndex + 1 + (l - 1 >> 1)], u = d & 255;
|
|
943
|
-
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)
|
|
944
938
|
return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity();
|
|
945
|
-
n++, this.excess++;
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
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++;
|
|
952
948
|
}
|
|
953
|
-
this.treeIndex += 1 + (
|
|
949
|
+
this.runConsumed = 0, this.treeIndex += 1 + (s >> 1), A = o[this.treeIndex], r = (A & F.VALUE_LENGTH) >> 14;
|
|
954
950
|
}
|
|
955
951
|
if (n >= e.length)
|
|
956
952
|
break;
|
|
957
953
|
const i = e.charCodeAt(n);
|
|
958
|
-
if (i === B.SEMI && r !== 0 && (
|
|
954
|
+
if (i === B.SEMI && r !== 0 && (A & F.FLAG13) !== 0)
|
|
959
955
|
return this.emitNamedEntityData(this.treeIndex, r, this.consumed + this.excess);
|
|
960
|
-
if (this.treeIndex =
|
|
956
|
+
if (this.treeIndex = pn(o, A, this.treeIndex + Math.max(1, r), i), this.treeIndex < 0)
|
|
961
957
|
return this.result === 0 || // If we are parsing an attribute
|
|
962
958
|
this.decodeMode === K.Attribute && // We shouldn't have consumed any characters after the entity,
|
|
963
959
|
(r === 0 || // And there should be no invalid characters.
|
|
964
|
-
|
|
965
|
-
if (
|
|
960
|
+
gn(i)) ? 0 : this.emitNotTerminatedNamedEntity();
|
|
961
|
+
if (A = o[this.treeIndex], r = (A & F.VALUE_LENGTH) >> 14, r !== 0) {
|
|
966
962
|
if (i === B.SEMI)
|
|
967
963
|
return this.emitNamedEntityData(this.treeIndex, r, this.consumed + this.excess);
|
|
968
|
-
this.decodeMode !== K.Strict && (
|
|
964
|
+
this.decodeMode !== K.Strict && (A & F.FLAG13) === 0 && (this.result = this.treeIndex, this.consumed += this.excess, this.excess = 0);
|
|
969
965
|
}
|
|
970
966
|
n++, this.excess++;
|
|
971
967
|
}
|
|
@@ -978,8 +974,8 @@ class un {
|
|
|
978
974
|
*/
|
|
979
975
|
emitNotTerminatedNamedEntity() {
|
|
980
976
|
var e;
|
|
981
|
-
const { result: n, decodeTree: o } = this,
|
|
982
|
-
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;
|
|
983
979
|
}
|
|
984
980
|
/**
|
|
985
981
|
* Emit a named entity.
|
|
@@ -991,8 +987,8 @@ class un {
|
|
|
991
987
|
* @returns The number of characters consumed.
|
|
992
988
|
*/
|
|
993
989
|
emitNamedEntityData(e, n, o) {
|
|
994
|
-
const { decodeTree:
|
|
995
|
-
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;
|
|
996
992
|
}
|
|
997
993
|
/**
|
|
998
994
|
* Signal to the parser that the end of the input was reached.
|
|
@@ -1018,132 +1014,132 @@ class un {
|
|
|
1018
1014
|
}
|
|
1019
1015
|
}
|
|
1020
1016
|
}
|
|
1021
|
-
function
|
|
1017
|
+
function fn(t) {
|
|
1022
1018
|
let e = "";
|
|
1023
|
-
const n = new
|
|
1024
|
-
return function(
|
|
1025
|
-
let i = 0,
|
|
1026
|
-
for (; (
|
|
1027
|
-
e +=
|
|
1028
|
-
const
|
|
1029
|
-
|
|
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,
|
|
1030
1026
|
// Skip the "&"
|
|
1031
|
-
|
|
1027
|
+
s + 1
|
|
1032
1028
|
);
|
|
1033
|
-
if (
|
|
1034
|
-
i =
|
|
1029
|
+
if (c < 0) {
|
|
1030
|
+
i = s + n.end();
|
|
1035
1031
|
break;
|
|
1036
1032
|
}
|
|
1037
|
-
i =
|
|
1033
|
+
i = s + c, s = c === 0 ? i + 1 : i;
|
|
1038
1034
|
}
|
|
1039
|
-
const
|
|
1040
|
-
return e = "",
|
|
1035
|
+
const a = e + A.slice(i);
|
|
1036
|
+
return e = "", a;
|
|
1041
1037
|
};
|
|
1042
1038
|
}
|
|
1043
|
-
function
|
|
1044
|
-
const
|
|
1045
|
-
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)
|
|
1046
1042
|
return r !== 0 && o === r ? n : -1;
|
|
1047
1043
|
if (r) {
|
|
1048
|
-
const
|
|
1049
|
-
return
|
|
1044
|
+
const c = o - r;
|
|
1045
|
+
return c < 0 || c >= A ? -1 : t[n + c] - 1;
|
|
1050
1046
|
}
|
|
1051
|
-
const i =
|
|
1052
|
-
let
|
|
1053
|
-
for (;
|
|
1054
|
-
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;
|
|
1055
1051
|
if (u < o)
|
|
1056
|
-
|
|
1052
|
+
s = c + 1;
|
|
1057
1053
|
else if (u > o)
|
|
1058
|
-
|
|
1054
|
+
a = c - 1;
|
|
1059
1055
|
else
|
|
1060
|
-
return t[n + i +
|
|
1056
|
+
return t[n + i + c];
|
|
1061
1057
|
}
|
|
1062
1058
|
return -1;
|
|
1063
1059
|
}
|
|
1064
|
-
const
|
|
1065
|
-
function
|
|
1066
|
-
return
|
|
1060
|
+
const mn = /* @__PURE__ */ fn(ln);
|
|
1061
|
+
function bn(t) {
|
|
1062
|
+
return mn(t, K.Strict);
|
|
1067
1063
|
}
|
|
1068
|
-
const
|
|
1064
|
+
const $e = /* @__PURE__ */ new Map([
|
|
1069
1065
|
[34, """],
|
|
1070
1066
|
[38, "&"],
|
|
1071
1067
|
[39, "'"],
|
|
1072
1068
|
[60, "<"],
|
|
1073
1069
|
[62, ">"]
|
|
1074
|
-
]),
|
|
1070
|
+
]), et = (
|
|
1075
1071
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
1076
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) : (
|
|
1077
1073
|
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
|
1078
1074
|
(t, e) => t.codePointAt(e)
|
|
1079
1075
|
)
|
|
1080
|
-
),
|
|
1081
|
-
function
|
|
1076
|
+
), tt = 1342177476;
|
|
1077
|
+
function Ke(t) {
|
|
1082
1078
|
let e, n = 0;
|
|
1083
1079
|
const { length: o } = t;
|
|
1084
|
-
for (let
|
|
1085
|
-
const r = t.charCodeAt(
|
|
1086
|
-
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))
|
|
1087
1083
|
continue;
|
|
1088
|
-
if (e === void 0 ? e = t.substring(0,
|
|
1089
|
-
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;
|
|
1090
1086
|
continue;
|
|
1091
1087
|
}
|
|
1092
|
-
const i =
|
|
1093
|
-
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;
|
|
1094
1090
|
}
|
|
1095
1091
|
return e === void 0 ? t : (n < o && (e += t.substr(n)), e);
|
|
1096
1092
|
}
|
|
1097
1093
|
function me(t, e) {
|
|
1098
1094
|
return function(o) {
|
|
1099
|
-
let
|
|
1100
|
-
for (;
|
|
1101
|
-
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;
|
|
1102
1098
|
return i + o.substring(r);
|
|
1103
1099
|
};
|
|
1104
1100
|
}
|
|
1105
|
-
const
|
|
1101
|
+
const vn = /* @__PURE__ */ me(/["&'<>]/g, $e), In = /* @__PURE__ */ me(/["&\u00A0]/g, /* @__PURE__ */ new Map([
|
|
1106
1102
|
[34, """],
|
|
1107
1103
|
[38, "&"],
|
|
1108
1104
|
[160, " "]
|
|
1109
|
-
])),
|
|
1105
|
+
])), Cn = /* @__PURE__ */ me(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
|
|
1110
1106
|
[38, "&"],
|
|
1111
1107
|
[60, "<"],
|
|
1112
1108
|
[62, ">"],
|
|
1113
1109
|
[160, " "]
|
|
1114
1110
|
]));
|
|
1115
|
-
function
|
|
1111
|
+
function wn(t) {
|
|
1116
1112
|
const e = /* @__PURE__ */ new Map(), n = t.length;
|
|
1117
|
-
let o = 0,
|
|
1113
|
+
let o = 0, A = -1;
|
|
1118
1114
|
function r() {
|
|
1119
|
-
const
|
|
1115
|
+
const s = o;
|
|
1120
1116
|
for (; o < n; ) {
|
|
1121
|
-
const
|
|
1122
|
-
if ((
|
|
1117
|
+
const a = t.charAt(o);
|
|
1118
|
+
if ((a < "0" || a > "9") && (a < "a" || a > "z"))
|
|
1123
1119
|
break;
|
|
1124
1120
|
o++;
|
|
1125
1121
|
}
|
|
1126
|
-
return o ===
|
|
1122
|
+
return o === s ? 0 : Number.parseInt(t.slice(s, o), 36);
|
|
1127
1123
|
}
|
|
1128
1124
|
function i() {
|
|
1129
1125
|
if (t[o] !== "&")
|
|
1130
1126
|
throw new Error(`Child entry missing value near index ${o}`);
|
|
1131
|
-
const
|
|
1132
|
-
if (
|
|
1133
|
-
throw new Error(`Unterminated entity starting at index ${
|
|
1134
|
-
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);
|
|
1135
1131
|
}
|
|
1136
1132
|
for (; o < n; ) {
|
|
1137
|
-
const
|
|
1138
|
-
let
|
|
1139
|
-
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] === "{") {
|
|
1140
1136
|
o++;
|
|
1141
1137
|
let l = r(), d = l;
|
|
1142
1138
|
const u = i();
|
|
1143
1139
|
if (t[o] === "{")
|
|
1144
1140
|
throw new Error("Unexpected nested '{' beyond depth 2");
|
|
1145
1141
|
if (t[o] === "}")
|
|
1146
|
-
e.set(
|
|
1142
|
+
e.set(a, { value: c, next: d, nextValue: u }), o++;
|
|
1147
1143
|
else {
|
|
1148
1144
|
const g = /* @__PURE__ */ new Map();
|
|
1149
1145
|
g.set(d, u);
|
|
@@ -1157,18 +1153,18 @@ function In(t) {
|
|
|
1157
1153
|
}
|
|
1158
1154
|
if (t[o] !== "}")
|
|
1159
1155
|
throw new Error("Unterminated child block");
|
|
1160
|
-
o++, e.set(
|
|
1156
|
+
o++, e.set(a, { value: c, next: g });
|
|
1161
1157
|
}
|
|
1162
1158
|
} else {
|
|
1163
|
-
if (
|
|
1159
|
+
if (c === void 0)
|
|
1164
1160
|
throw new Error(`Malformed encode trie: missing value at index ${o}`);
|
|
1165
|
-
e.set(
|
|
1161
|
+
e.set(a, c);
|
|
1166
1162
|
}
|
|
1167
|
-
|
|
1163
|
+
A = a;
|
|
1168
1164
|
}
|
|
1169
1165
|
return e;
|
|
1170
1166
|
}
|
|
1171
|
-
const Cn = /* @__PURE__ */ In("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"), wn = /* @__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([
|
|
1172
1168
|
5632,
|
|
1173
1169
|
// Bits for 09,0A,0C
|
|
1174
1170
|
4227923966,
|
|
@@ -1177,39 +1173,39 @@ const Cn = /* @__PURE__ */ In("9	
m!"#$%
|
|
|
1177
1173
|
// 64..95 -> 40, 5B-5F
|
|
1178
1174
|
939524097
|
|
1179
1175
|
// 96..127-> 60, 7B-7D
|
|
1180
|
-
]),
|
|
1181
|
-
function
|
|
1182
|
-
return
|
|
1176
|
+
]), kn = /* @__PURE__ */ new Uint32Array([0, tt, 0, 0]);
|
|
1177
|
+
function Bn(t) {
|
|
1178
|
+
return nt(En, t);
|
|
1183
1179
|
}
|
|
1184
|
-
function
|
|
1185
|
-
return
|
|
1180
|
+
function Sn(t) {
|
|
1181
|
+
return nt(kn, t);
|
|
1186
1182
|
}
|
|
1187
|
-
function
|
|
1183
|
+
function nt(t, e) {
|
|
1188
1184
|
let n, o = 0;
|
|
1189
|
-
const { length:
|
|
1190
|
-
for (let r = 0; r <
|
|
1185
|
+
const { length: A } = e;
|
|
1186
|
+
for (let r = 0; r < A; r++) {
|
|
1191
1187
|
const i = e.charCodeAt(r);
|
|
1192
1188
|
if (i < 128 && !(t[i >>> 5] >>> i & 1))
|
|
1193
1189
|
continue;
|
|
1194
1190
|
n === void 0 ? n = e.substring(0, r) : o !== r && (n += e.substring(o, r));
|
|
1195
|
-
let
|
|
1196
|
-
if (typeof
|
|
1197
|
-
if (r + 1 <
|
|
1198
|
-
const
|
|
1199
|
-
if (
|
|
1200
|
-
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;
|
|
1201
1197
|
continue;
|
|
1202
1198
|
}
|
|
1203
1199
|
}
|
|
1204
|
-
|
|
1200
|
+
s = s.value;
|
|
1205
1201
|
}
|
|
1206
|
-
if (
|
|
1207
|
-
const
|
|
1208
|
-
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;
|
|
1209
1205
|
} else
|
|
1210
|
-
n +=
|
|
1206
|
+
n += s, o = r + 1;
|
|
1211
1207
|
}
|
|
1212
|
-
return n === void 0 ? e : (o <
|
|
1208
|
+
return n === void 0 ? e : (o < A && (n += e.substr(o)), n);
|
|
1213
1209
|
}
|
|
1214
1210
|
var T;
|
|
1215
1211
|
(function(t) {
|
|
@@ -1223,82 +1219,82 @@ function be(t, e = T.XML) {
|
|
|
1223
1219
|
const { mode: n = Q.Extensive, level: o = T.XML } = typeof e == "number" ? { level: e } : e;
|
|
1224
1220
|
switch (n) {
|
|
1225
1221
|
case Q.UTF8:
|
|
1226
|
-
return
|
|
1222
|
+
return vn(t);
|
|
1227
1223
|
case Q.Attribute:
|
|
1228
|
-
return
|
|
1224
|
+
return In(t);
|
|
1229
1225
|
case Q.Text:
|
|
1230
|
-
return
|
|
1226
|
+
return Cn(t);
|
|
1231
1227
|
case Q.ASCII:
|
|
1232
|
-
return o === T.HTML ?
|
|
1228
|
+
return o === T.HTML ? Sn(t) : Ke(t);
|
|
1233
1229
|
// biome-ignore lint/complexity/noUselessSwitchCase: we get an error for the switch not being exhaustive
|
|
1234
1230
|
case Q.Extensive:
|
|
1235
1231
|
// eslint-disable-line unicorn/no-useless-switch-case
|
|
1236
1232
|
default:
|
|
1237
|
-
return o === T.HTML ?
|
|
1233
|
+
return o === T.HTML ? Bn(t) : Ke(t);
|
|
1238
1234
|
}
|
|
1239
1235
|
}
|
|
1240
|
-
const
|
|
1241
|
-
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) {
|
|
1242
1238
|
const [e = "", n = "", o = ""] = (/^<(\/?)(\w+)/i.exec(t.toUpperCase()) || []).slice(1);
|
|
1243
|
-
return n && (
|
|
1239
|
+
return n && (Wn[n] || rt[n] && (e || o)) ? `
|
|
1244
1240
|
` : "";
|
|
1245
1241
|
}
|
|
1246
|
-
function
|
|
1247
|
-
const e = new RegExp(
|
|
1242
|
+
function Qn(t) {
|
|
1243
|
+
const e = new RegExp(Mn, "ig"), n = [];
|
|
1248
1244
|
let o = 0;
|
|
1249
|
-
return [t.replace(e, (r, i,
|
|
1250
|
-
const
|
|
1251
|
-
return o -= r.length -
|
|
1252
|
-
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,
|
|
1253
1249
|
diffOffset: o
|
|
1254
|
-
}),
|
|
1250
|
+
}), c;
|
|
1255
1251
|
}), n];
|
|
1256
1252
|
}
|
|
1257
|
-
let
|
|
1253
|
+
let ot = !1;
|
|
1258
1254
|
function H(t, ...e) {
|
|
1259
|
-
|
|
1255
|
+
ot && console.log(t, ...e);
|
|
1260
1256
|
}
|
|
1261
|
-
function
|
|
1262
|
-
|
|
1257
|
+
function Xr() {
|
|
1258
|
+
ot = !0;
|
|
1263
1259
|
}
|
|
1264
|
-
var Ae = { exports: {} },
|
|
1265
|
-
function
|
|
1266
|
-
return
|
|
1260
|
+
var Ae = { exports: {} }, Ne;
|
|
1261
|
+
function Kn() {
|
|
1262
|
+
return Ne || (Ne = 1, (function(t) {
|
|
1267
1263
|
var e = function() {
|
|
1268
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;
|
|
1269
|
-
}, n = -1, o = 1,
|
|
1265
|
+
}, n = -1, o = 1, A = 0;
|
|
1270
1266
|
e.Diff = function(r, i) {
|
|
1271
1267
|
return [r, i];
|
|
1272
|
-
}, e.prototype.diff_main = function(r, i,
|
|
1273
|
-
typeof
|
|
1274
|
-
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;
|
|
1275
1271
|
if (r == null || i == null)
|
|
1276
1272
|
throw new Error("Null input. (diff_main)");
|
|
1277
1273
|
if (r == i)
|
|
1278
|
-
return r ? [new e.Diff(
|
|
1279
|
-
typeof
|
|
1280
|
-
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);
|
|
1281
1277
|
r = r.substring(d), i = i.substring(d), d = this.diff_commonSuffix(r, i);
|
|
1282
1278
|
var g = r.substring(r.length - d);
|
|
1283
1279
|
r = r.substring(0, r.length - d), i = i.substring(0, i.length - d);
|
|
1284
|
-
var h = this.diff_compute_(r, i, l,
|
|
1285
|
-
return u && h.unshift(new e.Diff(
|
|
1286
|
-
}, e.prototype.diff_compute_ = function(r, i,
|
|
1287
|
-
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;
|
|
1288
1284
|
if (!r)
|
|
1289
1285
|
return [new e.Diff(o, i)];
|
|
1290
1286
|
if (!i)
|
|
1291
1287
|
return [new e.Diff(n, r)];
|
|
1292
1288
|
var l = r.length > i.length ? r : i, d = r.length > i.length ? i : r, u = l.indexOf(d);
|
|
1293
1289
|
if (u != -1)
|
|
1294
|
-
return
|
|
1290
|
+
return c = [
|
|
1295
1291
|
new e.Diff(o, l.substring(0, u)),
|
|
1296
|
-
new e.Diff(
|
|
1292
|
+
new e.Diff(A, d),
|
|
1297
1293
|
new e.Diff(
|
|
1298
1294
|
o,
|
|
1299
1295
|
l.substring(u + d.length)
|
|
1300
1296
|
)
|
|
1301
|
-
], r.length > i.length && (
|
|
1297
|
+
], r.length > i.length && (c[0][0] = c[2][0] = n), c;
|
|
1302
1298
|
if (d.length == 1)
|
|
1303
1299
|
return [
|
|
1304
1300
|
new e.Diff(n, r),
|
|
@@ -1306,18 +1302,18 @@ function Hn() {
|
|
|
1306
1302
|
];
|
|
1307
1303
|
var g = this.diff_halfMatch_(r, i);
|
|
1308
1304
|
if (g) {
|
|
1309
|
-
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);
|
|
1310
1306
|
return I.concat(
|
|
1311
|
-
[new e.Diff(
|
|
1307
|
+
[new e.Diff(A, v)],
|
|
1312
1308
|
C
|
|
1313
1309
|
);
|
|
1314
1310
|
}
|
|
1315
|
-
return
|
|
1316
|
-
}, e.prototype.diff_lineMode_ = function(r, i,
|
|
1317
|
-
var
|
|
1318
|
-
r =
|
|
1319
|
-
var
|
|
1320
|
-
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, ""));
|
|
1321
1317
|
for (var d = 0, u = 0, g = 0, h = "", f = ""; d < l.length; ) {
|
|
1322
1318
|
switch (l[d][0]) {
|
|
1323
1319
|
case o:
|
|
@@ -1326,13 +1322,13 @@ function Hn() {
|
|
|
1326
1322
|
case n:
|
|
1327
1323
|
u++, h += l[d][1];
|
|
1328
1324
|
break;
|
|
1329
|
-
case
|
|
1325
|
+
case A:
|
|
1330
1326
|
if (u >= 1 && g >= 1) {
|
|
1331
1327
|
l.splice(
|
|
1332
1328
|
d - u - g,
|
|
1333
1329
|
u + g
|
|
1334
1330
|
), d = d - u - g;
|
|
1335
|
-
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--)
|
|
1336
1332
|
l.splice(d, 0, p[m]);
|
|
1337
1333
|
d = d + p.length;
|
|
1338
1334
|
}
|
|
@@ -1342,44 +1338,44 @@ function Hn() {
|
|
|
1342
1338
|
d++;
|
|
1343
1339
|
}
|
|
1344
1340
|
return l.pop(), l;
|
|
1345
|
-
}, e.prototype.diff_bisect_ = function(r, i,
|
|
1346
|
-
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++)
|
|
1347
1343
|
g[f] = -1, h[f] = -1;
|
|
1348
1344
|
g[d + 1] = 0, h[d + 1] = 0;
|
|
1349
|
-
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++) {
|
|
1350
1346
|
for (var w = -b + v; w <= b - I; w += 2) {
|
|
1351
1347
|
var y = d + w, k;
|
|
1352
1348
|
w == -b || w != b && g[y - 1] < g[y + 1] ? k = g[y + 1] : k = g[y - 1] + 1;
|
|
1353
|
-
for (var R = k - w; k <
|
|
1349
|
+
for (var R = k - w; k < a && R < c && r.charAt(k) == i.charAt(R); )
|
|
1354
1350
|
k++, R++;
|
|
1355
|
-
if (g[y] = k, k >
|
|
1351
|
+
if (g[y] = k, k > a)
|
|
1356
1352
|
I += 2;
|
|
1357
|
-
else if (R >
|
|
1353
|
+
else if (R > c)
|
|
1358
1354
|
v += 2;
|
|
1359
1355
|
else if (m) {
|
|
1360
1356
|
var x = d + p - w;
|
|
1361
1357
|
if (x >= 0 && x < u && h[x] != -1) {
|
|
1362
|
-
var S =
|
|
1358
|
+
var S = a - h[x];
|
|
1363
1359
|
if (k >= S)
|
|
1364
|
-
return this.diff_bisectSplit_(r, i, k, R,
|
|
1360
|
+
return this.diff_bisectSplit_(r, i, k, R, s);
|
|
1365
1361
|
}
|
|
1366
1362
|
}
|
|
1367
1363
|
}
|
|
1368
1364
|
for (var Z = -b + C; Z <= b - E; Z += 2) {
|
|
1369
1365
|
var x = d + Z, S;
|
|
1370
1366
|
Z == -b || Z != b && h[x - 1] < h[x + 1] ? S = h[x + 1] : S = h[x - 1] + 1;
|
|
1371
|
-
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); )
|
|
1372
1368
|
S++, W++;
|
|
1373
|
-
if (h[x] = S, S >
|
|
1369
|
+
if (h[x] = S, S > a)
|
|
1374
1370
|
E += 2;
|
|
1375
|
-
else if (W >
|
|
1371
|
+
else if (W > c)
|
|
1376
1372
|
C += 2;
|
|
1377
1373
|
else if (!m) {
|
|
1378
1374
|
var y = d + p - Z;
|
|
1379
1375
|
if (y >= 0 && y < u && g[y] != -1) {
|
|
1380
1376
|
var k = g[y], R = d + k - y;
|
|
1381
|
-
if (S =
|
|
1382
|
-
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);
|
|
1383
1379
|
}
|
|
1384
1380
|
}
|
|
1385
1381
|
}
|
|
@@ -1388,70 +1384,70 @@ function Hn() {
|
|
|
1388
1384
|
new e.Diff(n, r),
|
|
1389
1385
|
new e.Diff(o, i)
|
|
1390
1386
|
];
|
|
1391
|
-
}, e.prototype.diff_bisectSplit_ = function(r, i,
|
|
1392
|
-
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);
|
|
1393
1389
|
return h.concat(f);
|
|
1394
1390
|
}, e.prototype.diff_linesToChars_ = function(r, i) {
|
|
1395
|
-
var
|
|
1396
|
-
|
|
1397
|
-
function
|
|
1398
|
-
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; ) {
|
|
1399
1395
|
p = g.indexOf(`
|
|
1400
1396
|
`, f), p == -1 && (p = g.length - 1);
|
|
1401
1397
|
var v = g.substring(f, p + 1);
|
|
1402
|
-
(
|
|
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;
|
|
1403
1399
|
}
|
|
1404
1400
|
return h;
|
|
1405
1401
|
}
|
|
1406
|
-
var l = 4e4, d =
|
|
1402
|
+
var l = 4e4, d = c(r);
|
|
1407
1403
|
l = 65535;
|
|
1408
|
-
var u =
|
|
1409
|
-
return { chars1: d, chars2: u, lineArray:
|
|
1404
|
+
var u = c(i);
|
|
1405
|
+
return { chars1: d, chars2: u, lineArray: s };
|
|
1410
1406
|
}, e.prototype.diff_charsToLines_ = function(r, i) {
|
|
1411
|
-
for (var
|
|
1412
|
-
for (var
|
|
1413
|
-
|
|
1414
|
-
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("");
|
|
1415
1411
|
}
|
|
1416
1412
|
}, e.prototype.diff_commonPrefix = function(r, i) {
|
|
1417
1413
|
if (!r || !i || r.charAt(0) != i.charAt(0))
|
|
1418
1414
|
return 0;
|
|
1419
|
-
for (var
|
|
1420
|
-
r.substring(l,
|
|
1421
|
-
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;
|
|
1422
1418
|
}, e.prototype.diff_commonSuffix = function(r, i) {
|
|
1423
1419
|
if (!r || !i || r.charAt(r.length - 1) != i.charAt(i.length - 1))
|
|
1424
1420
|
return 0;
|
|
1425
|
-
for (var
|
|
1426
|
-
r.substring(r.length -
|
|
1427
|
-
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;
|
|
1428
1424
|
}, e.prototype.diff_commonOverlap_ = function(r, i) {
|
|
1429
|
-
var
|
|
1430
|
-
if (
|
|
1425
|
+
var s = r.length, a = i.length;
|
|
1426
|
+
if (s == 0 || a == 0)
|
|
1431
1427
|
return 0;
|
|
1432
|
-
|
|
1433
|
-
var
|
|
1428
|
+
s > a ? r = r.substring(s - a) : s < a && (i = i.substring(0, s));
|
|
1429
|
+
var c = Math.min(s, a);
|
|
1434
1430
|
if (r == i)
|
|
1435
|
-
return
|
|
1431
|
+
return c;
|
|
1436
1432
|
for (var l = 0, d = 1; ; ) {
|
|
1437
|
-
var u = r.substring(
|
|
1433
|
+
var u = r.substring(c - d), g = i.indexOf(u);
|
|
1438
1434
|
if (g == -1)
|
|
1439
1435
|
return l;
|
|
1440
|
-
d += g, (g == 0 || r.substring(
|
|
1436
|
+
d += g, (g == 0 || r.substring(c - d) == i.substring(0, d)) && (l = d, d++);
|
|
1441
1437
|
}
|
|
1442
1438
|
}, e.prototype.diff_halfMatch_ = function(r, i) {
|
|
1443
1439
|
if (this.Diff_Timeout <= 0)
|
|
1444
1440
|
return null;
|
|
1445
|
-
var
|
|
1446
|
-
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)
|
|
1447
1443
|
return null;
|
|
1448
|
-
var
|
|
1444
|
+
var c = this;
|
|
1449
1445
|
function l(I, C, E) {
|
|
1450
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; ) {
|
|
1451
|
-
var Z =
|
|
1447
|
+
var Z = c.diff_commonPrefix(
|
|
1452
1448
|
I.substring(E),
|
|
1453
1449
|
C.substring(w)
|
|
1454
|
-
), W =
|
|
1450
|
+
), W = c.diff_commonSuffix(
|
|
1455
1451
|
I.substring(0, E),
|
|
1456
1452
|
C.substring(0, w)
|
|
1457
1453
|
);
|
|
@@ -1466,13 +1462,13 @@ function Hn() {
|
|
|
1466
1462
|
] : null;
|
|
1467
1463
|
}
|
|
1468
1464
|
var d = l(
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
Math.ceil(
|
|
1465
|
+
s,
|
|
1466
|
+
a,
|
|
1467
|
+
Math.ceil(s.length / 4)
|
|
1472
1468
|
), u = l(
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
Math.ceil(
|
|
1469
|
+
s,
|
|
1470
|
+
a,
|
|
1471
|
+
Math.ceil(s.length / 2)
|
|
1476
1472
|
), g;
|
|
1477
1473
|
if (!d && !u)
|
|
1478
1474
|
return null;
|
|
@@ -1482,23 +1478,23 @@ function Hn() {
|
|
|
1482
1478
|
var v = g[4];
|
|
1483
1479
|
return [h, f, p, m, v];
|
|
1484
1480
|
}, e.prototype.diff_cleanupSemantic = function(r) {
|
|
1485
|
-
for (var i = !1,
|
|
1486
|
-
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(
|
|
1487
1483
|
g,
|
|
1488
1484
|
h
|
|
1489
1485
|
) && (r.splice(
|
|
1490
|
-
|
|
1486
|
+
s[a - 1],
|
|
1491
1487
|
0,
|
|
1492
|
-
new e.Diff(n,
|
|
1493
|
-
), 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++;
|
|
1494
1490
|
for (i && this.diff_cleanupMerge(r), this.diff_cleanupSemanticLossless(r), l = 1; l < r.length; ) {
|
|
1495
1491
|
if (r[l - 1][0] == n && r[l][0] == o) {
|
|
1496
1492
|
var f = r[l - 1][1], p = r[l][1], m = this.diff_commonOverlap_(f, p), v = this.diff_commonOverlap_(p, f);
|
|
1497
1493
|
m >= v ? (m >= f.length / 2 || m >= p.length / 2) && (r.splice(l, 0, new e.Diff(
|
|
1498
|
-
|
|
1494
|
+
A,
|
|
1499
1495
|
p.substring(0, m)
|
|
1500
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(
|
|
1501
|
-
|
|
1497
|
+
A,
|
|
1502
1498
|
f.substring(0, v)
|
|
1503
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++;
|
|
1504
1500
|
}
|
|
@@ -1511,68 +1507,68 @@ function Hn() {
|
|
|
1511
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_);
|
|
1512
1508
|
return S || Z ? 5 : R || x ? 4 : b && !y && k ? 3 : y || k ? 2 : b || w ? 1 : 0;
|
|
1513
1509
|
}
|
|
1514
|
-
for (var
|
|
1515
|
-
if (r[
|
|
1516
|
-
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);
|
|
1517
1513
|
if (d) {
|
|
1518
|
-
var u =
|
|
1519
|
-
|
|
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;
|
|
1520
1516
|
}
|
|
1521
|
-
for (var g =
|
|
1522
|
-
|
|
1523
|
-
var m = i(
|
|
1524
|
-
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);
|
|
1525
1521
|
}
|
|
1526
|
-
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--));
|
|
1527
1523
|
}
|
|
1528
|
-
|
|
1524
|
+
s++;
|
|
1529
1525
|
}
|
|
1530
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) {
|
|
1531
|
-
for (var i = !1,
|
|
1532
|
-
r[l][0] ==
|
|
1533
|
-
|
|
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],
|
|
1534
1530
|
0,
|
|
1535
|
-
new e.Diff(n,
|
|
1536
|
-
), 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++;
|
|
1537
1533
|
i && this.diff_cleanupMerge(r);
|
|
1538
1534
|
}, e.prototype.diff_cleanupMerge = function(r) {
|
|
1539
|
-
r.push(new e.Diff(
|
|
1540
|
-
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; )
|
|
1541
1537
|
switch (r[i][0]) {
|
|
1542
1538
|
case o:
|
|
1543
|
-
|
|
1539
|
+
a++, l += r[i][1], i++;
|
|
1544
1540
|
break;
|
|
1545
1541
|
case n:
|
|
1546
|
-
|
|
1542
|
+
s++, c += r[i][1], i++;
|
|
1547
1543
|
break;
|
|
1548
|
-
case
|
|
1549
|
-
|
|
1550
|
-
|
|
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,
|
|
1551
1547
|
l.substring(0, d)
|
|
1552
|
-
)), 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(
|
|
1553
1549
|
i,
|
|
1554
1550
|
0,
|
|
1555
|
-
new e.Diff(n,
|
|
1551
|
+
new e.Diff(n, c)
|
|
1556
1552
|
), i++), l.length && (r.splice(
|
|
1557
1553
|
i,
|
|
1558
1554
|
0,
|
|
1559
1555
|
new e.Diff(o, l)
|
|
1560
|
-
), 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 = "";
|
|
1561
1557
|
break;
|
|
1562
1558
|
}
|
|
1563
1559
|
r[r.length - 1][1] === "" && r.pop();
|
|
1564
1560
|
var u = !1;
|
|
1565
1561
|
for (i = 1; i < r.length - 1; )
|
|
1566
|
-
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++;
|
|
1567
1563
|
u && this.diff_cleanupMerge(r);
|
|
1568
1564
|
}, e.prototype.diff_xIndex = function(r, i) {
|
|
1569
|
-
var
|
|
1570
|
-
for (d = 0; d < r.length && (r[d][0] !== o && (
|
|
1571
|
-
|
|
1572
|
-
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);
|
|
1573
1569
|
}, e.prototype.diff_prettyHtml = function(r) {
|
|
1574
|
-
for (var i = [],
|
|
1575
|
-
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>");
|
|
1576
1572
|
switch (u) {
|
|
1577
1573
|
case o:
|
|
1578
1574
|
i[d] = '<ins style="background:#e6ffe6;">' + h + "</ins>";
|
|
@@ -1580,57 +1576,57 @@ function Hn() {
|
|
|
1580
1576
|
case n:
|
|
1581
1577
|
i[d] = '<del style="background:#ffe6e6;">' + h + "</del>";
|
|
1582
1578
|
break;
|
|
1583
|
-
case
|
|
1579
|
+
case A:
|
|
1584
1580
|
i[d] = "<span>" + h + "</span>";
|
|
1585
1581
|
break;
|
|
1586
1582
|
}
|
|
1587
1583
|
}
|
|
1588
1584
|
return i.join("");
|
|
1589
1585
|
}, e.prototype.diff_text1 = function(r) {
|
|
1590
|
-
for (var i = [],
|
|
1591
|
-
r[
|
|
1586
|
+
for (var i = [], s = 0; s < r.length; s++)
|
|
1587
|
+
r[s][0] !== o && (i[s] = r[s][1]);
|
|
1592
1588
|
return i.join("");
|
|
1593
1589
|
}, e.prototype.diff_text2 = function(r) {
|
|
1594
|
-
for (var i = [],
|
|
1595
|
-
r[
|
|
1590
|
+
for (var i = [], s = 0; s < r.length; s++)
|
|
1591
|
+
r[s][0] !== n && (i[s] = r[s][1]);
|
|
1596
1592
|
return i.join("");
|
|
1597
1593
|
}, e.prototype.diff_levenshtein = function(r) {
|
|
1598
|
-
for (var i = 0,
|
|
1599
|
-
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];
|
|
1600
1596
|
switch (l) {
|
|
1601
1597
|
case o:
|
|
1602
|
-
|
|
1598
|
+
s += d.length;
|
|
1603
1599
|
break;
|
|
1604
1600
|
case n:
|
|
1605
|
-
|
|
1601
|
+
a += d.length;
|
|
1606
1602
|
break;
|
|
1607
|
-
case
|
|
1608
|
-
i += Math.max(
|
|
1603
|
+
case A:
|
|
1604
|
+
i += Math.max(s, a), s = 0, a = 0;
|
|
1609
1605
|
break;
|
|
1610
1606
|
}
|
|
1611
1607
|
}
|
|
1612
|
-
return i += Math.max(
|
|
1608
|
+
return i += Math.max(s, a), i;
|
|
1613
1609
|
}, e.prototype.diff_toDelta = function(r) {
|
|
1614
|
-
for (var i = [],
|
|
1615
|
-
switch (r[
|
|
1610
|
+
for (var i = [], s = 0; s < r.length; s++)
|
|
1611
|
+
switch (r[s][0]) {
|
|
1616
1612
|
case o:
|
|
1617
|
-
i[
|
|
1613
|
+
i[s] = "+" + encodeURI(r[s][1]);
|
|
1618
1614
|
break;
|
|
1619
1615
|
case n:
|
|
1620
|
-
i[
|
|
1616
|
+
i[s] = "-" + r[s][1].length;
|
|
1621
1617
|
break;
|
|
1622
|
-
case
|
|
1623
|
-
i[
|
|
1618
|
+
case A:
|
|
1619
|
+
i[s] = "=" + r[s][1].length;
|
|
1624
1620
|
break;
|
|
1625
1621
|
}
|
|
1626
1622
|
return i.join(" ").replace(/%20/g, " ");
|
|
1627
1623
|
}, e.prototype.diff_fromDelta = function(r, i) {
|
|
1628
|
-
for (var
|
|
1624
|
+
for (var s = [], a = 0, c = 0, l = i.split(/\t/g), d = 0; d < l.length; d++) {
|
|
1629
1625
|
var u = l[d].substring(1);
|
|
1630
1626
|
switch (l[d].charAt(0)) {
|
|
1631
1627
|
case "+":
|
|
1632
1628
|
try {
|
|
1633
|
-
|
|
1629
|
+
s[a++] = new e.Diff(o, decodeURI(u));
|
|
1634
1630
|
} catch {
|
|
1635
1631
|
throw new Error("Illegal escape in diff_fromDelta: " + u);
|
|
1636
1632
|
}
|
|
@@ -1641,137 +1637,137 @@ function Hn() {
|
|
|
1641
1637
|
var g = parseInt(u, 10);
|
|
1642
1638
|
if (isNaN(g) || g < 0)
|
|
1643
1639
|
throw new Error("Invalid number in diff_fromDelta: " + u);
|
|
1644
|
-
var h = r.substring(
|
|
1645
|
-
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);
|
|
1646
1642
|
break;
|
|
1647
1643
|
default:
|
|
1648
1644
|
if (l[d])
|
|
1649
1645
|
throw new Error("Invalid diff operation in diff_fromDelta: " + l[d]);
|
|
1650
1646
|
}
|
|
1651
1647
|
}
|
|
1652
|
-
if (
|
|
1653
|
-
throw new Error("Delta length (" +
|
|
1654
|
-
return
|
|
1655
|
-
}, e.prototype.match_main = function(r, i,
|
|
1656
|
-
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)
|
|
1657
1653
|
throw new Error("Null input. (match_main)");
|
|
1658
|
-
return
|
|
1659
|
-
}, 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) {
|
|
1660
1656
|
if (i.length > this.Match_MaxBits)
|
|
1661
1657
|
throw new Error("Pattern too long for this browser.");
|
|
1662
|
-
var
|
|
1658
|
+
var a = this.match_alphabet_(i), c = this;
|
|
1663
1659
|
function l(k, R) {
|
|
1664
|
-
var x = k / i.length, S = Math.abs(
|
|
1665
|
-
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;
|
|
1666
1662
|
}
|
|
1667
|
-
var d = this.Match_Threshold, u = r.indexOf(i,
|
|
1668
|
-
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)));
|
|
1669
1665
|
var g = 1 << i.length - 1;
|
|
1670
1666
|
u = -1;
|
|
1671
1667
|
for (var h, f, p = i.length + r.length, m, v = 0; v < i.length; v++) {
|
|
1672
1668
|
for (h = 0, f = p; h < f; )
|
|
1673
|
-
l(v,
|
|
1669
|
+
l(v, s + f) <= d ? h = f : p = f, f = Math.floor((p - h) / 2 + h);
|
|
1674
1670
|
p = f;
|
|
1675
|
-
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);
|
|
1676
1672
|
E[C + 1] = (1 << v) - 1;
|
|
1677
1673
|
for (var b = C; b >= I; b--) {
|
|
1678
|
-
var w =
|
|
1674
|
+
var w = a[r.charAt(b - 1)];
|
|
1679
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) {
|
|
1680
1676
|
var y = l(v, b - 1);
|
|
1681
1677
|
if (y <= d)
|
|
1682
|
-
if (d = y, u = b - 1, u >
|
|
1683
|
-
I = Math.max(1, 2 *
|
|
1678
|
+
if (d = y, u = b - 1, u > s)
|
|
1679
|
+
I = Math.max(1, 2 * s - u);
|
|
1684
1680
|
else
|
|
1685
1681
|
break;
|
|
1686
1682
|
}
|
|
1687
1683
|
}
|
|
1688
|
-
if (l(v + 1,
|
|
1684
|
+
if (l(v + 1, s) > d)
|
|
1689
1685
|
break;
|
|
1690
1686
|
m = E;
|
|
1691
1687
|
}
|
|
1692
1688
|
return u;
|
|
1693
1689
|
}, e.prototype.match_alphabet_ = function(r) {
|
|
1694
|
-
for (var i = {},
|
|
1695
|
-
i[r.charAt(
|
|
1696
|
-
for (var
|
|
1697
|
-
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;
|
|
1698
1694
|
return i;
|
|
1699
1695
|
}, e.prototype.patch_addContext_ = function(r, i) {
|
|
1700
1696
|
if (i.length != 0) {
|
|
1701
1697
|
if (r.start2 === null)
|
|
1702
1698
|
throw Error("patch not initialized");
|
|
1703
|
-
for (var
|
|
1704
|
-
|
|
1705
|
-
r.start2 -
|
|
1706
|
-
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
|
|
1707
1703
|
);
|
|
1708
|
-
|
|
1709
|
-
var
|
|
1710
|
-
|
|
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));
|
|
1711
1707
|
var l = i.substring(
|
|
1712
1708
|
r.start2 + r.length1,
|
|
1713
|
-
r.start2 + r.length1 +
|
|
1709
|
+
r.start2 + r.length1 + a
|
|
1714
1710
|
);
|
|
1715
|
-
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;
|
|
1716
1712
|
}
|
|
1717
|
-
}, e.prototype.patch_make = function(r, i,
|
|
1718
|
-
var
|
|
1719
|
-
if (typeof r == "string" && typeof i == "string" && typeof
|
|
1720
|
-
|
|
1721
|
-
r,
|
|
1722
|
-
|
|
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,
|
|
1723
1719
|
/** @type {string} */
|
|
1724
1720
|
i,
|
|
1725
1721
|
!0
|
|
1726
|
-
),
|
|
1727
|
-
else if (r && typeof r == "object" && typeof i > "u" && typeof
|
|
1728
|
-
|
|
1729
|
-
r,
|
|
1730
|
-
else if (typeof r == "string" && i && typeof i == "object" && typeof
|
|
1731
|
-
|
|
1732
|
-
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>} */
|
|
1733
1729
|
i;
|
|
1734
|
-
else if (typeof r == "string" && typeof i == "string" &&
|
|
1735
|
-
|
|
1736
|
-
r,
|
|
1737
|
-
|
|
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;
|
|
1738
1734
|
else
|
|
1739
1735
|
throw new Error("Unknown call format to patch_make.");
|
|
1740
|
-
if (
|
|
1736
|
+
if (c.length === 0)
|
|
1741
1737
|
return [];
|
|
1742
|
-
for (var l = [], d = new e.patch_obj(), u = 0, g = 0, h = 0, f =
|
|
1743
|
-
var v =
|
|
1744
|
-
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) {
|
|
1745
1741
|
case o:
|
|
1746
|
-
d.diffs[u++] =
|
|
1742
|
+
d.diffs[u++] = c[m], d.length2 += I.length, p = p.substring(0, h) + I + p.substring(h);
|
|
1747
1743
|
break;
|
|
1748
1744
|
case n:
|
|
1749
|
-
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);
|
|
1750
1746
|
break;
|
|
1751
|
-
case
|
|
1752
|
-
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);
|
|
1753
1749
|
break;
|
|
1754
1750
|
}
|
|
1755
1751
|
v !== o && (g += I.length), v !== n && (h += I.length);
|
|
1756
1752
|
}
|
|
1757
1753
|
return u && (this.patch_addContext_(d, f), l.push(d)), l;
|
|
1758
1754
|
}, e.prototype.patch_deepCopy = function(r) {
|
|
1759
|
-
for (var i = [],
|
|
1760
|
-
var
|
|
1761
|
-
|
|
1762
|
-
for (var l = 0; l <
|
|
1763
|
-
|
|
1764
|
-
|
|
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;
|
|
1765
1761
|
}
|
|
1766
1762
|
return i;
|
|
1767
1763
|
}, e.prototype.patch_apply = function(r, i) {
|
|
1768
1764
|
if (r.length == 0)
|
|
1769
1765
|
return [i, []];
|
|
1770
1766
|
r = this.patch_deepCopy(r);
|
|
1771
|
-
var
|
|
1772
|
-
i =
|
|
1773
|
-
for (var
|
|
1774
|
-
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;
|
|
1775
1771
|
if (u.length > this.Match_MaxBits ? (g = this.match_main(
|
|
1776
1772
|
i,
|
|
1777
1773
|
u.substring(0, this.Match_MaxBits),
|
|
@@ -1781,21 +1777,21 @@ function Hn() {
|
|
|
1781
1777
|
u.substring(u.length - this.Match_MaxBits),
|
|
1782
1778
|
d + u.length - this.Match_MaxBits
|
|
1783
1779
|
), (h == -1 || g >= h) && (g = -1))) : g = this.match_main(i, u, d), g == -1)
|
|
1784
|
-
|
|
1780
|
+
c[l] = !1, a -= r[l].length2 - r[l].length1;
|
|
1785
1781
|
else {
|
|
1786
|
-
|
|
1782
|
+
c[l] = !0, a = g - d;
|
|
1787
1783
|
var f;
|
|
1788
1784
|
if (h == -1 ? f = i.substring(g, g + u.length) : f = i.substring(g, h + this.Match_MaxBits), u == f)
|
|
1789
1785
|
i = i.substring(0, g) + this.diff_text2(r[l].diffs) + i.substring(g + u.length);
|
|
1790
1786
|
else {
|
|
1791
1787
|
var p = this.diff_main(u, f, !1);
|
|
1792
1788
|
if (u.length > this.Match_MaxBits && this.diff_levenshtein(p) / u.length > this.Patch_DeleteThreshold)
|
|
1793
|
-
|
|
1789
|
+
c[l] = !1;
|
|
1794
1790
|
else {
|
|
1795
1791
|
this.diff_cleanupSemanticLossless(p);
|
|
1796
1792
|
for (var m = 0, v, I = 0; I < r[l].diffs.length; I++) {
|
|
1797
1793
|
var C = r[l].diffs[I];
|
|
1798
|
-
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(
|
|
1799
1795
|
p,
|
|
1800
1796
|
m + C[1].length
|
|
1801
1797
|
))), C[0] !== n && (m += C[1].length);
|
|
@@ -1804,63 +1800,63 @@ function Hn() {
|
|
|
1804
1800
|
}
|
|
1805
1801
|
}
|
|
1806
1802
|
}
|
|
1807
|
-
return i = i.substring(
|
|
1803
|
+
return i = i.substring(s.length, i.length - s.length), [i, c];
|
|
1808
1804
|
}, e.prototype.patch_addPadding = function(r) {
|
|
1809
|
-
for (var i = this.Patch_Margin,
|
|
1810
|
-
|
|
1811
|
-
for (var
|
|
1812
|
-
r[
|
|
1813
|
-
var
|
|
1814
|
-
if (l.length == 0 || l[0][0] !=
|
|
1815
|
-
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;
|
|
1816
1812
|
else if (i > l[0][1].length) {
|
|
1817
1813
|
var d = i - l[0][1].length;
|
|
1818
|
-
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;
|
|
1819
1815
|
}
|
|
1820
|
-
if (
|
|
1821
|
-
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;
|
|
1822
1818
|
else if (i > l[l.length - 1][1].length) {
|
|
1823
1819
|
var d = i - l[l.length - 1][1].length;
|
|
1824
|
-
l[l.length - 1][1] +=
|
|
1820
|
+
l[l.length - 1][1] += s.substring(0, d), c.length1 += d, c.length2 += d;
|
|
1825
1821
|
}
|
|
1826
|
-
return
|
|
1822
|
+
return s;
|
|
1827
1823
|
}, e.prototype.patch_splitMax = function(r) {
|
|
1828
|
-
for (var i = this.Match_MaxBits,
|
|
1829
|
-
if (!(r[
|
|
1830
|
-
var
|
|
1831
|
-
r.splice(
|
|
1832
|
-
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; ) {
|
|
1833
1829
|
var u = new e.patch_obj(), g = !0;
|
|
1834
|
-
for (u.start1 =
|
|
1835
|
-
var h =
|
|
1836
|
-
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(
|
|
1837
1833
|
0,
|
|
1838
1834
|
i - u.length1 - this.Patch_Margin
|
|
1839
|
-
), 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));
|
|
1840
1836
|
}
|
|
1841
1837
|
d = this.diff_text2(u.diffs), d = d.substring(d.length - this.Patch_Margin);
|
|
1842
|
-
var p = this.diff_text1(
|
|
1843
|
-
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);
|
|
1844
1840
|
}
|
|
1845
1841
|
}
|
|
1846
1842
|
}, e.prototype.patch_toText = function(r) {
|
|
1847
|
-
for (var i = [],
|
|
1848
|
-
i[
|
|
1843
|
+
for (var i = [], s = 0; s < r.length; s++)
|
|
1844
|
+
i[s] = r[s];
|
|
1849
1845
|
return i.join("");
|
|
1850
1846
|
}, e.prototype.patch_fromText = function(r) {
|
|
1851
1847
|
var i = [];
|
|
1852
1848
|
if (!r)
|
|
1853
1849
|
return i;
|
|
1854
|
-
for (var
|
|
1855
|
-
`),
|
|
1856
|
-
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);
|
|
1857
1853
|
if (!l)
|
|
1858
|
-
throw new Error("Invalid patch string: " +
|
|
1854
|
+
throw new Error("Invalid patch string: " + s[a]);
|
|
1859
1855
|
var d = new e.patch_obj();
|
|
1860
|
-
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)),
|
|
1861
|
-
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);
|
|
1862
1858
|
try {
|
|
1863
|
-
var g = decodeURI(
|
|
1859
|
+
var g = decodeURI(s[a].substring(1));
|
|
1864
1860
|
} catch {
|
|
1865
1861
|
throw new Error("Illegal escape in patch_fromText: " + g);
|
|
1866
1862
|
}
|
|
@@ -1869,13 +1865,13 @@ function Hn() {
|
|
|
1869
1865
|
else if (u == "+")
|
|
1870
1866
|
d.diffs.push(new e.Diff(o, g));
|
|
1871
1867
|
else if (u == " ")
|
|
1872
|
-
d.diffs.push(new e.Diff(
|
|
1868
|
+
d.diffs.push(new e.Diff(A, g));
|
|
1873
1869
|
else {
|
|
1874
1870
|
if (u == "@")
|
|
1875
1871
|
break;
|
|
1876
1872
|
if (u !== "") throw new Error('Invalid patch mode "' + u + '" in: ' + g);
|
|
1877
1873
|
}
|
|
1878
|
-
|
|
1874
|
+
a++;
|
|
1879
1875
|
}
|
|
1880
1876
|
}
|
|
1881
1877
|
return i;
|
|
@@ -1884,28 +1880,28 @@ function Hn() {
|
|
|
1884
1880
|
}, e.patch_obj.prototype.toString = function() {
|
|
1885
1881
|
var r, i;
|
|
1886
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;
|
|
1887
|
-
for (var
|
|
1888
|
-
`],
|
|
1889
|
-
switch (this.diffs[
|
|
1883
|
+
for (var s = ["@@ -" + r + " +" + i + ` @@
|
|
1884
|
+
`], a, c = 0; c < this.diffs.length; c++) {
|
|
1885
|
+
switch (this.diffs[c][0]) {
|
|
1890
1886
|
case o:
|
|
1891
|
-
|
|
1887
|
+
a = "+";
|
|
1892
1888
|
break;
|
|
1893
1889
|
case n:
|
|
1894
|
-
|
|
1890
|
+
a = "-";
|
|
1895
1891
|
break;
|
|
1896
|
-
case
|
|
1897
|
-
|
|
1892
|
+
case A:
|
|
1893
|
+
a = " ";
|
|
1898
1894
|
break;
|
|
1899
1895
|
}
|
|
1900
|
-
|
|
1896
|
+
s[c + 1] = a + encodeURI(this.diffs[c][1]) + `
|
|
1901
1897
|
`;
|
|
1902
1898
|
}
|
|
1903
|
-
return
|
|
1904
|
-
}, t.exports = e, t.exports.diff_match_patch = e, t.exports.DIFF_DELETE = n, t.exports.DIFF_INSERT = o, t.exports.DIFF_EQUAL =
|
|
1905
|
-
}(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;
|
|
1906
1902
|
}
|
|
1907
|
-
var $ =
|
|
1908
|
-
function
|
|
1903
|
+
var $ = Kn();
|
|
1904
|
+
function it(t) {
|
|
1909
1905
|
return t[t.length - 1].range[1] - t[0].range[0];
|
|
1910
1906
|
}
|
|
1911
1907
|
function U(t, e) {
|
|
@@ -1914,13 +1910,13 @@ function U(t, e) {
|
|
|
1914
1910
|
function ve(t, e) {
|
|
1915
1911
|
return /^ *$/.test(e.content) && e.content != U(t, e);
|
|
1916
1912
|
}
|
|
1917
|
-
const
|
|
1918
|
-
|
|
1919
|
-
function
|
|
1913
|
+
const At = new $.diff_match_patch();
|
|
1914
|
+
At.Diff_Timeout = 5;
|
|
1915
|
+
function Nn(t) {
|
|
1920
1916
|
const e = [];
|
|
1921
1917
|
let n = 0, o = 0;
|
|
1922
|
-
return t.forEach((
|
|
1923
|
-
const [r, i] =
|
|
1918
|
+
return t.forEach((A) => {
|
|
1919
|
+
const [r, i] = A;
|
|
1924
1920
|
switch (r) {
|
|
1925
1921
|
case $.DIFF_EQUAL:
|
|
1926
1922
|
n += i.length;
|
|
@@ -1943,37 +1939,37 @@ function Qn(t) {
|
|
|
1943
1939
|
function O(t, e, n, o = "HTML") {
|
|
1944
1940
|
if (n.length === 0)
|
|
1945
1941
|
return [];
|
|
1946
|
-
const
|
|
1947
|
-
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;
|
|
1948
1944
|
return {
|
|
1949
1945
|
originalMatch: d,
|
|
1950
1946
|
range: [h, p]
|
|
1951
1947
|
};
|
|
1952
|
-
}), 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));
|
|
1953
1949
|
return H("cleanedCheckedDocument", r), H(
|
|
1954
1950
|
"cleanedCheckedDocumentCodes",
|
|
1955
1951
|
r.split("").map((d) => d.charCodeAt(0))
|
|
1956
1952
|
), H("currentDocument", e), H(
|
|
1957
1953
|
"currentDocumentCodes",
|
|
1958
1954
|
e.split("").map((d) => d.charCodeAt(0))
|
|
1959
|
-
), H("matches", n), H("diffs",
|
|
1955
|
+
), H("matches", n), H("diffs", s), H("alignedMatches", c), H(
|
|
1960
1956
|
"alignedMatchesContent",
|
|
1961
|
-
|
|
1962
|
-
), l ? [] :
|
|
1957
|
+
c.map((d) => U(e, d))
|
|
1958
|
+
), l ? [] : c;
|
|
1963
1959
|
}
|
|
1964
|
-
function
|
|
1960
|
+
function st(t) {
|
|
1965
1961
|
const e = {
|
|
1966
1962
|
"original-id": t.id,
|
|
1967
1963
|
"original-class": t.className,
|
|
1968
1964
|
"original-name": t.name,
|
|
1969
1965
|
"original-source": t.tagName.toLowerCase(),
|
|
1970
|
-
"original-display":
|
|
1966
|
+
"original-display": Ue(t) ? "" : "hidden"
|
|
1971
1967
|
};
|
|
1972
1968
|
for (const n of t.getAttributeNames().filter((o) => o.startsWith("aria-")))
|
|
1973
1969
|
e["original-" + n] = t.getAttribute(n);
|
|
1974
1970
|
return Object.fromEntries(Object.entries(e).filter(([, n]) => n));
|
|
1975
1971
|
}
|
|
1976
|
-
const
|
|
1972
|
+
const Pe = { name: "unknown", version: "0" }, Pn = [
|
|
1977
1973
|
["edge", /Edge\/([0-9\._]+)/],
|
|
1978
1974
|
["yandexbrowser", /YaBrowser\/([0-9\._]+)/],
|
|
1979
1975
|
["vivaldi", /Vivaldi\/([0-9\.]+)/],
|
|
@@ -1993,108 +1989,108 @@ const Ne = { name: "unknown", version: "0" }, Kn = [
|
|
|
1993
1989
|
["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/],
|
|
1994
1990
|
["safari", /Version\/([0-9\._]+).*Safari/]
|
|
1995
1991
|
];
|
|
1996
|
-
function
|
|
1992
|
+
function Gn() {
|
|
1997
1993
|
try {
|
|
1998
|
-
return
|
|
1994
|
+
return Tn(navigator.userAgent) || Pe;
|
|
1999
1995
|
} catch (t) {
|
|
2000
|
-
return console.error("Error in detectBrowser:", t),
|
|
1996
|
+
return console.error("Error in detectBrowser:", t), Pe;
|
|
2001
1997
|
}
|
|
2002
1998
|
}
|
|
2003
|
-
function
|
|
1999
|
+
function Tn(t) {
|
|
2004
2000
|
if (t)
|
|
2005
|
-
return
|
|
2001
|
+
return Pn.map(([e, n]) => {
|
|
2006
2002
|
const o = n.exec(t);
|
|
2007
|
-
let
|
|
2008
|
-
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 && {
|
|
2009
2005
|
name: e,
|
|
2010
|
-
version:
|
|
2006
|
+
version: A.join(".")
|
|
2011
2007
|
};
|
|
2012
2008
|
}).filter(Boolean)[0] || void 0;
|
|
2013
2009
|
}
|
|
2014
|
-
const
|
|
2015
|
-
function
|
|
2016
|
-
return
|
|
2010
|
+
const Yn = Gn();
|
|
2011
|
+
function Ln() {
|
|
2012
|
+
return Yn.name === "chrome";
|
|
2017
2013
|
}
|
|
2018
|
-
function
|
|
2014
|
+
function Jn(t) {
|
|
2019
2015
|
return t.documentElement || t.body.parentNode || t.body;
|
|
2020
2016
|
}
|
|
2021
|
-
function
|
|
2022
|
-
return t.pageYOffset !== void 0 ? t.pageYOffset :
|
|
2017
|
+
function On(t = window) {
|
|
2018
|
+
return t.pageYOffset !== void 0 ? t.pageYOffset : Jn(t.document).scrollTop;
|
|
2023
2019
|
}
|
|
2024
|
-
function
|
|
2020
|
+
function jn(t) {
|
|
2025
2021
|
return t.clientHeight !== t.scrollHeight && t.tagName !== "BODY" && t.tagName !== "HTML";
|
|
2026
2022
|
}
|
|
2027
|
-
function
|
|
2023
|
+
function Un(t) {
|
|
2028
2024
|
const e = [];
|
|
2029
2025
|
let n = t.parentElement;
|
|
2030
2026
|
for (; n; )
|
|
2031
2027
|
e.push(n), n = n.parentElement;
|
|
2032
2028
|
return e;
|
|
2033
2029
|
}
|
|
2034
|
-
function
|
|
2035
|
-
return
|
|
2030
|
+
function zn(t) {
|
|
2031
|
+
return Un(t).filter(jn);
|
|
2036
2032
|
}
|
|
2037
|
-
function
|
|
2038
|
-
if (
|
|
2033
|
+
function at(t, e = 0, n = 0) {
|
|
2034
|
+
if (ct(t) || (t.scrollIntoView(), !e))
|
|
2039
2035
|
return;
|
|
2040
|
-
const
|
|
2041
|
-
r.length <= 2 && r.forEach((
|
|
2042
|
-
const
|
|
2043
|
-
(
|
|
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);
|
|
2044
2040
|
});
|
|
2045
|
-
const i =
|
|
2046
|
-
(
|
|
2041
|
+
const i = On();
|
|
2042
|
+
(A.top < e || A.bottom > window.innerHeight) && window.scrollTo(0, i + A.top - e);
|
|
2047
2043
|
}
|
|
2048
|
-
function
|
|
2044
|
+
function ct(t) {
|
|
2049
2045
|
try {
|
|
2050
2046
|
return t.scrollIntoView({ block: "center" }), !0;
|
|
2051
2047
|
} catch {
|
|
2052
2048
|
return !1;
|
|
2053
2049
|
}
|
|
2054
2050
|
}
|
|
2055
|
-
function
|
|
2056
|
-
|
|
2051
|
+
function Vn(t) {
|
|
2052
|
+
ct(t) || t.scrollIntoView();
|
|
2057
2053
|
}
|
|
2058
|
-
const se =
|
|
2054
|
+
const se = Ht({
|
|
2059
2055
|
text: "",
|
|
2060
2056
|
domPositions: []
|
|
2061
2057
|
});
|
|
2062
|
-
function
|
|
2058
|
+
function Xn(t, e) {
|
|
2063
2059
|
return {
|
|
2064
2060
|
text: t,
|
|
2065
2061
|
domPositions: e
|
|
2066
2062
|
};
|
|
2067
2063
|
}
|
|
2068
|
-
function
|
|
2064
|
+
function qn(t) {
|
|
2069
2065
|
return {
|
|
2070
2066
|
text: t.map((e) => e.text).join(""),
|
|
2071
2067
|
domPositions: t.flatMap((e) => e.domPositions)
|
|
2072
2068
|
};
|
|
2073
2069
|
}
|
|
2074
|
-
function
|
|
2070
|
+
function _n(t, e) {
|
|
2075
2071
|
return {
|
|
2076
2072
|
node: t,
|
|
2077
2073
|
offset: e
|
|
2078
2074
|
};
|
|
2079
2075
|
}
|
|
2080
|
-
const
|
|
2076
|
+
const $n = fe(["SCRIPT", "STYLE"]);
|
|
2081
2077
|
function Ie(t) {
|
|
2082
|
-
return
|
|
2078
|
+
return qn(
|
|
2083
2079
|
Array.from(t.childNodes).map((e) => {
|
|
2084
2080
|
switch (e.nodeType) {
|
|
2085
2081
|
case Node.ELEMENT_NODE: {
|
|
2086
2082
|
const n = e.nodeName;
|
|
2087
|
-
if (
|
|
2083
|
+
if ($n[n])
|
|
2088
2084
|
return se;
|
|
2089
2085
|
const o = Ie(e);
|
|
2090
|
-
if (
|
|
2091
|
-
const
|
|
2086
|
+
if (rt[n]) {
|
|
2087
|
+
const A = o.domPositions[o.domPositions.length - 1];
|
|
2092
2088
|
return {
|
|
2093
2089
|
text: o.text + `
|
|
2094
2090
|
`,
|
|
2095
2091
|
domPositions: o.domPositions.concat({
|
|
2096
|
-
node:
|
|
2097
|
-
offset:
|
|
2092
|
+
node: A && A.node || e,
|
|
2093
|
+
offset: A && A.offset || 0
|
|
2098
2094
|
})
|
|
2099
2095
|
};
|
|
2100
2096
|
}
|
|
@@ -2102,9 +2098,9 @@ function Ie(t) {
|
|
|
2102
2098
|
}
|
|
2103
2099
|
case Node.TEXT_NODE: {
|
|
2104
2100
|
const n = e.textContent;
|
|
2105
|
-
return n ?
|
|
2101
|
+
return n ? Xn(
|
|
2106
2102
|
n,
|
|
2107
|
-
Array.from({ length: n.length }, (o,
|
|
2103
|
+
Array.from({ length: n.length }, (o, A) => _n(e, A))
|
|
2108
2104
|
) : se;
|
|
2109
2105
|
}
|
|
2110
2106
|
default:
|
|
@@ -2113,7 +2109,7 @@ function Ie(t) {
|
|
|
2113
2109
|
})
|
|
2114
2110
|
);
|
|
2115
2111
|
}
|
|
2116
|
-
function
|
|
2112
|
+
function er(t, e) {
|
|
2117
2113
|
const n = e[Math.max(Math.min(t, e.length) - 1, 0)];
|
|
2118
2114
|
return {
|
|
2119
2115
|
node: n.node,
|
|
@@ -2147,8 +2143,8 @@ class N {
|
|
|
2147
2143
|
scrollIntoView(e) {
|
|
2148
2144
|
const n = e.getRangeAt(0), o = n.cloneRange();
|
|
2149
2145
|
o.collapse(!0);
|
|
2150
|
-
const
|
|
2151
|
-
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);
|
|
2152
2148
|
}
|
|
2153
2149
|
scrollToCurrentSelection() {
|
|
2154
2150
|
const e = this.getEditorDocument().getSelection();
|
|
@@ -2160,12 +2156,12 @@ class N {
|
|
|
2160
2156
|
}
|
|
2161
2157
|
}
|
|
2162
2158
|
scrollElementIntoView(e) {
|
|
2163
|
-
|
|
2159
|
+
at(e, this.config.scrollOffsetY);
|
|
2164
2160
|
}
|
|
2165
2161
|
selectRanges(e, n) {
|
|
2166
2162
|
if (V(this.getEditorElement()), this.selectMatches(e, n), this.isQuillEditor() || this.isCkEditor5()) {
|
|
2167
2163
|
const o = this.getEditorDocument().getSelection();
|
|
2168
|
-
o && o.anchorNode && o.anchorNode.parentElement &&
|
|
2164
|
+
o && o.anchorNode && o.anchorNode.parentElement && Vn(o.anchorNode.parentElement);
|
|
2169
2165
|
} else
|
|
2170
2166
|
this.scrollToCurrentSelection();
|
|
2171
2167
|
}
|
|
@@ -2177,107 +2173,107 @@ class N {
|
|
|
2177
2173
|
return e || n;
|
|
2178
2174
|
}
|
|
2179
2175
|
selectMatches(e, n) {
|
|
2180
|
-
const o = this.getTextDomMapping(),
|
|
2181
|
-
if (
|
|
2176
|
+
const o = this.getTextDomMapping(), A = O(this.lastContentChecked, o.text, n);
|
|
2177
|
+
if (A.length === 0)
|
|
2182
2178
|
throw new Error("Selected flagged content is modified.");
|
|
2183
|
-
return this.selectAlignedMatches(
|
|
2179
|
+
return this.selectAlignedMatches(A, o), [A, o];
|
|
2184
2180
|
}
|
|
2185
2181
|
selectAlignedMatches(e, n) {
|
|
2186
|
-
const o = e[0].range[0],
|
|
2187
|
-
this.selectText(o,
|
|
2182
|
+
const o = e[0].range[0], A = it(e);
|
|
2183
|
+
this.selectText(o, A, n);
|
|
2188
2184
|
}
|
|
2189
2185
|
selectText(e, n, o) {
|
|
2190
2186
|
if (!o.text)
|
|
2191
2187
|
return;
|
|
2192
|
-
const
|
|
2193
|
-
if (!
|
|
2188
|
+
const A = this.getEditorDocument().getSelection();
|
|
2189
|
+
if (!A) {
|
|
2194
2190
|
console.warn("AbstractRichtextEditorAdapter.selectText: Missing selection");
|
|
2195
2191
|
return;
|
|
2196
2192
|
}
|
|
2197
|
-
|
|
2193
|
+
A.removeAllRanges(), A.addRange(this.createRange(e, n, o));
|
|
2198
2194
|
}
|
|
2199
2195
|
createRange(e, n, o) {
|
|
2200
|
-
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);
|
|
2201
2197
|
return i.offset <= i.node.textContent.length ? r.setStart(i.node, i.offset) : console.warn(
|
|
2202
2198
|
`Offset of range begin (${i.offset}) > node text length (${i.node.textContent.length})`
|
|
2203
|
-
),
|
|
2204
|
-
`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})`
|
|
2205
2201
|
), r;
|
|
2206
2202
|
}
|
|
2207
2203
|
replaceAlignedMatches(e) {
|
|
2208
2204
|
const n = this.getEditorDocument(), o = structuredClone(e).reverse();
|
|
2209
|
-
for (const
|
|
2210
|
-
const r = this.getTextDomMapping(), i =
|
|
2205
|
+
for (const A of o) {
|
|
2206
|
+
const r = this.getTextDomMapping(), i = A.range[1] - A.range[0];
|
|
2211
2207
|
if (i > 1) {
|
|
2212
|
-
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);
|
|
2213
2209
|
X({
|
|
2214
|
-
startNode:
|
|
2215
|
-
endNode:
|
|
2210
|
+
startNode: c.startContainer,
|
|
2211
|
+
endNode: c.endContainer,
|
|
2216
2212
|
eventType: "beforeinput",
|
|
2217
|
-
replacement:
|
|
2218
|
-
startOffset:
|
|
2219
|
-
endOffset:
|
|
2213
|
+
replacement: A.originalMatch.replacement,
|
|
2214
|
+
startOffset: c.startOffset,
|
|
2215
|
+
endOffset: c.endOffset,
|
|
2220
2216
|
disableSimulation: this.config.disableInputEventSimulation
|
|
2221
|
-
}),
|
|
2222
|
-
startNode:
|
|
2223
|
-
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,
|
|
2224
2220
|
eventType: "input",
|
|
2225
|
-
replacement:
|
|
2226
|
-
startOffset:
|
|
2227
|
-
endOffset:
|
|
2221
|
+
replacement: A.originalMatch.replacement,
|
|
2222
|
+
startOffset: c.startOffset,
|
|
2223
|
+
endOffset: c.endOffset,
|
|
2228
2224
|
disableSimulation: this.config.disableInputEventSimulation
|
|
2229
|
-
}), _(
|
|
2225
|
+
}), _(s), (s.startContainer !== a.startContainer || s.endContainer !== a.endContainer) && _(a);
|
|
2230
2226
|
} else {
|
|
2231
|
-
const
|
|
2227
|
+
const s = this.createRange(A.range[0], i, r);
|
|
2232
2228
|
X({
|
|
2233
|
-
startNode:
|
|
2234
|
-
endNode:
|
|
2229
|
+
startNode: s.startContainer,
|
|
2230
|
+
endNode: s.endContainer,
|
|
2235
2231
|
eventType: "beforeinput",
|
|
2236
|
-
replacement:
|
|
2237
|
-
startOffset:
|
|
2238
|
-
endOffset:
|
|
2232
|
+
replacement: A.originalMatch.replacement,
|
|
2233
|
+
startOffset: s.startOffset,
|
|
2234
|
+
endOffset: s.endOffset,
|
|
2239
2235
|
disableSimulation: this.config.disableInputEventSimulation
|
|
2240
|
-
}),
|
|
2241
|
-
startNode:
|
|
2242
|
-
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,
|
|
2243
2239
|
eventType: "input",
|
|
2244
|
-
replacement:
|
|
2245
|
-
startOffset:
|
|
2246
|
-
endOffset:
|
|
2240
|
+
replacement: A.originalMatch.replacement,
|
|
2241
|
+
startOffset: s.startOffset,
|
|
2242
|
+
endOffset: s.endOffset,
|
|
2247
2243
|
disableSimulation: this.config.disableInputEventSimulation
|
|
2248
|
-
}), _(
|
|
2244
|
+
}), _(s);
|
|
2249
2245
|
}
|
|
2250
2246
|
}
|
|
2251
2247
|
}
|
|
2252
2248
|
replaceRanges(e, n) {
|
|
2253
2249
|
V(this.getEditorElement());
|
|
2254
|
-
const [o] = this.selectMatches(e, n),
|
|
2255
|
-
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();
|
|
2256
2252
|
}
|
|
2257
2253
|
getTextDomMapping() {
|
|
2258
2254
|
return Ie(this.getEditorElement());
|
|
2259
2255
|
}
|
|
2260
2256
|
getAutobindWrapperAttributes() {
|
|
2261
|
-
return
|
|
2257
|
+
return st(this.getEditorElement());
|
|
2262
2258
|
}
|
|
2263
2259
|
}
|
|
2264
2260
|
function _(t) {
|
|
2265
2261
|
try {
|
|
2266
|
-
|
|
2262
|
+
Ln() && tr(t);
|
|
2267
2263
|
} catch (e) {
|
|
2268
2264
|
console.error("Error in removeEmptyTextNodesIfNeeded:", e);
|
|
2269
2265
|
}
|
|
2270
2266
|
}
|
|
2271
|
-
function
|
|
2267
|
+
function tr(t) {
|
|
2272
2268
|
const e = document.createNodeIterator(t.commonAncestorContainer);
|
|
2273
2269
|
let n, o = !1;
|
|
2274
|
-
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))); )
|
|
2275
2271
|
;
|
|
2276
2272
|
}
|
|
2277
|
-
function
|
|
2273
|
+
function nr(t) {
|
|
2278
2274
|
t.nodeType === Node.TEXT_NODE && t.textContent === "" && z(t);
|
|
2279
2275
|
}
|
|
2280
|
-
class
|
|
2276
|
+
class Ce extends N {
|
|
2281
2277
|
element;
|
|
2282
2278
|
constructor(e) {
|
|
2283
2279
|
super(e), this.element = ee(e);
|
|
@@ -2301,18 +2297,18 @@ class st extends N {
|
|
|
2301
2297
|
}
|
|
2302
2298
|
async replaceRanges(e, n) {
|
|
2303
2299
|
V(this.getEditorElement());
|
|
2304
|
-
const [o] = this.selectMatches(e, n),
|
|
2305
|
-
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();
|
|
2306
2302
|
}
|
|
2307
2303
|
async selectText(e, n, o) {
|
|
2308
2304
|
if (!o.text)
|
|
2309
2305
|
return;
|
|
2310
|
-
const
|
|
2306
|
+
const A = this.createRange(e, n, o), r = this.getEditorDocument().getSelection();
|
|
2311
2307
|
if (!r) {
|
|
2312
2308
|
console.warn("AsyncContentEditableAdapter.selectText: Missing selection");
|
|
2313
2309
|
return;
|
|
2314
2310
|
}
|
|
2315
|
-
return r.removeAllRanges(), await this.addSelectionRange(r,
|
|
2311
|
+
return r.removeAllRanges(), await this.addSelectionRange(r, A);
|
|
2316
2312
|
}
|
|
2317
2313
|
async addSelectionRange(e, n) {
|
|
2318
2314
|
return new Promise((o) => o(e.addRange(n)));
|
|
@@ -2320,14 +2316,14 @@ class st extends N {
|
|
|
2320
2316
|
async scrollIntoView(e) {
|
|
2321
2317
|
const n = e.getRangeAt(0);
|
|
2322
2318
|
n.cloneRange().collapse(!0);
|
|
2323
|
-
const
|
|
2324
|
-
|
|
2319
|
+
const A = n.startContainer.parentElement;
|
|
2320
|
+
A && (A.focus(), this.scrollElementIntoView(A));
|
|
2325
2321
|
}
|
|
2326
2322
|
}
|
|
2327
|
-
function
|
|
2323
|
+
function rr(t) {
|
|
2328
2324
|
return t.closest(".DraftEditor-editorContainer, .akEditor");
|
|
2329
2325
|
}
|
|
2330
|
-
class
|
|
2326
|
+
class lt extends N {
|
|
2331
2327
|
element;
|
|
2332
2328
|
constructor(e) {
|
|
2333
2329
|
super(e), this.element = ee(e);
|
|
@@ -2345,7 +2341,109 @@ class at extends N {
|
|
|
2345
2341
|
return this.element.ownerDocument;
|
|
2346
2342
|
}
|
|
2347
2343
|
}
|
|
2348
|
-
|
|
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 {
|
|
2349
2447
|
element;
|
|
2350
2448
|
config;
|
|
2351
2449
|
currentContentChecking;
|
|
@@ -2383,14 +2481,14 @@ class ct {
|
|
|
2383
2481
|
registerCheckCall(e) {
|
|
2384
2482
|
}
|
|
2385
2483
|
scrollAndSelect(e) {
|
|
2386
|
-
const n = e[0].range[0], o =
|
|
2387
|
-
if (
|
|
2484
|
+
const n = e[0].range[0], o = it(e), A = this.element;
|
|
2485
|
+
if (A.clientHeight < A.scrollHeight) {
|
|
2388
2486
|
const r = this.element.value;
|
|
2389
|
-
|
|
2390
|
-
const i =
|
|
2391
|
-
|
|
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);
|
|
2392
2490
|
}
|
|
2393
|
-
|
|
2491
|
+
A.setSelectionRange(n, n + o), A.focus(), at(A, this.config.scrollOffsetY);
|
|
2394
2492
|
}
|
|
2395
2493
|
selectRanges(e, n) {
|
|
2396
2494
|
this.selectMatches(e, n);
|
|
@@ -2404,22 +2502,22 @@ class ct {
|
|
|
2404
2502
|
}
|
|
2405
2503
|
replaceAlignedMatches(e) {
|
|
2406
2504
|
const n = structuredClone(e).reverse(), o = this.element;
|
|
2407
|
-
let
|
|
2505
|
+
let A = o.value;
|
|
2408
2506
|
for (const r of n)
|
|
2409
|
-
ve(this.lastContentChecked, r.originalMatch) || (
|
|
2410
|
-
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;
|
|
2411
2509
|
}
|
|
2412
2510
|
replaceRanges(e, n) {
|
|
2413
2511
|
const o = this.selectMatches(e, n);
|
|
2414
2512
|
this.scrollAndSelect(o), this.replaceAlignedMatches(o);
|
|
2415
|
-
const
|
|
2416
|
-
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);
|
|
2417
2515
|
}
|
|
2418
2516
|
getAutobindWrapperAttributes() {
|
|
2419
|
-
return
|
|
2517
|
+
return st(this.element);
|
|
2420
2518
|
}
|
|
2421
2519
|
}
|
|
2422
|
-
class
|
|
2520
|
+
class gt extends N {
|
|
2423
2521
|
element;
|
|
2424
2522
|
constructor(e) {
|
|
2425
2523
|
super(e), this.element = ee(e), console.warn("QuipAdapter", this.element);
|
|
@@ -2438,23 +2536,23 @@ class lt extends N {
|
|
|
2438
2536
|
}
|
|
2439
2537
|
async replaceRanges(e, n) {
|
|
2440
2538
|
super.replaceRanges(e, n);
|
|
2441
|
-
const o = this.getEditorDocument().getSelection(),
|
|
2442
|
-
if (!
|
|
2539
|
+
const o = this.getEditorDocument().getSelection(), A = o && o.focusNode;
|
|
2540
|
+
if (!A) {
|
|
2443
2541
|
console.warn("No selection after replacement.");
|
|
2444
2542
|
return;
|
|
2445
2543
|
}
|
|
2446
|
-
const r =
|
|
2447
|
-
switch (
|
|
2544
|
+
const r = ar(A);
|
|
2545
|
+
switch (dr(r)) {
|
|
2448
2546
|
case "cell": {
|
|
2449
2547
|
console.log("Found cell");
|
|
2450
|
-
const
|
|
2451
|
-
|
|
2452
|
-
const
|
|
2453
|
-
if (!
|
|
2454
|
-
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);
|
|
2455
2553
|
return;
|
|
2456
2554
|
}
|
|
2457
|
-
o.selectAllChildren(
|
|
2555
|
+
o.selectAllChildren(c), document.execCommand("InsertHTML", !1, a), s.innerText = a, lr(c, "keydown", "Enter", 13);
|
|
2458
2556
|
break;
|
|
2459
2557
|
}
|
|
2460
2558
|
case "content":
|
|
@@ -2466,10 +2564,10 @@ class lt extends N {
|
|
|
2466
2564
|
}
|
|
2467
2565
|
}
|
|
2468
2566
|
}
|
|
2469
|
-
function
|
|
2567
|
+
function ar(t) {
|
|
2470
2568
|
return t instanceof HTMLElement ? t : t.parentElement;
|
|
2471
2569
|
}
|
|
2472
|
-
function
|
|
2570
|
+
function cr(t) {
|
|
2473
2571
|
t.dispatchEvent(
|
|
2474
2572
|
new MouseEvent("dblclick", {
|
|
2475
2573
|
view: window,
|
|
@@ -2478,8 +2576,8 @@ function rr(t) {
|
|
|
2478
2576
|
})
|
|
2479
2577
|
);
|
|
2480
2578
|
}
|
|
2481
|
-
function
|
|
2482
|
-
const
|
|
2579
|
+
function lr(t, e, n, o) {
|
|
2580
|
+
const A = {
|
|
2483
2581
|
key: n,
|
|
2484
2582
|
code: n,
|
|
2485
2583
|
keyCode: o,
|
|
@@ -2488,17 +2586,17 @@ function or(t, e, n, o) {
|
|
|
2488
2586
|
bubbles: !0,
|
|
2489
2587
|
cancelable: !0
|
|
2490
2588
|
};
|
|
2491
|
-
t.dispatchEvent(new KeyboardEvent(e,
|
|
2589
|
+
t.dispatchEvent(new KeyboardEvent(e, A));
|
|
2492
2590
|
}
|
|
2493
2591
|
const de = "spreadsheet-cell";
|
|
2494
|
-
function
|
|
2592
|
+
function dr(t) {
|
|
2495
2593
|
const e = t.closest(`.${de}, .content`);
|
|
2496
2594
|
return e ? e.classList.contains(de) ? "cell" : "content" : "none";
|
|
2497
2595
|
}
|
|
2498
|
-
function
|
|
2596
|
+
function ur(t) {
|
|
2499
2597
|
return document.location.host.endsWith(".quip.com") && t.classList.contains("document-content");
|
|
2500
2598
|
}
|
|
2501
|
-
const
|
|
2599
|
+
const gr = [
|
|
2502
2600
|
"input:not([type])",
|
|
2503
2601
|
// type attribute not present in markup
|
|
2504
2602
|
'input[type=""]',
|
|
@@ -2511,61 +2609,61 @@ const sr = [
|
|
|
2511
2609
|
"textarea",
|
|
2512
2610
|
"iframe"
|
|
2513
2611
|
].join(", ");
|
|
2514
|
-
function
|
|
2612
|
+
function hr(t) {
|
|
2515
2613
|
return t.readOnly;
|
|
2516
2614
|
}
|
|
2517
|
-
function
|
|
2615
|
+
function ht(t) {
|
|
2518
2616
|
const e = t.getAttribute("autocomplete");
|
|
2519
2617
|
return e === "off" || e === "false";
|
|
2520
2618
|
}
|
|
2521
|
-
function
|
|
2522
|
-
return t.getAttribute("role") === "combobox" &&
|
|
2619
|
+
function fr(t) {
|
|
2620
|
+
return t.getAttribute("role") === "combobox" && ht(t);
|
|
2523
2621
|
}
|
|
2524
|
-
const
|
|
2525
|
-
function
|
|
2622
|
+
const pr = ["search_query", "q"];
|
|
2623
|
+
function mr(t) {
|
|
2526
2624
|
if (t.nodeName !== "INPUT")
|
|
2527
2625
|
return !1;
|
|
2528
2626
|
if (t.getAttribute("role") === "search")
|
|
2529
2627
|
return !0;
|
|
2530
2628
|
const e = t.getAttribute("name");
|
|
2531
|
-
return e &&
|
|
2629
|
+
return e && pr.includes(e) && ht(t);
|
|
2532
2630
|
}
|
|
2533
|
-
const
|
|
2534
|
-
function
|
|
2535
|
-
return
|
|
2631
|
+
const br = ["username", "login", "user[login]", "authenticity_token"];
|
|
2632
|
+
function vr(t) {
|
|
2633
|
+
return br.includes(t.getAttribute("name"));
|
|
2536
2634
|
}
|
|
2537
|
-
function
|
|
2538
|
-
if (
|
|
2635
|
+
function Ir(t) {
|
|
2636
|
+
if (Zt(t))
|
|
2539
2637
|
try {
|
|
2540
|
-
return t.contentDocument ?
|
|
2638
|
+
return t.contentDocument ? we(t.contentDocument) : [];
|
|
2541
2639
|
} catch {
|
|
2542
2640
|
return [];
|
|
2543
2641
|
}
|
|
2544
2642
|
else
|
|
2545
2643
|
return [t];
|
|
2546
2644
|
}
|
|
2547
|
-
function
|
|
2645
|
+
function Cr(t) {
|
|
2548
2646
|
const e = [], n = (t.ownerDocument || t).createNodeIterator(t, NodeFilter.SHOW_ELEMENT);
|
|
2549
2647
|
let o;
|
|
2550
2648
|
for (; o = n.nextNode(); ) {
|
|
2551
|
-
const
|
|
2552
|
-
|
|
2649
|
+
const A = o.shadowRoot;
|
|
2650
|
+
A && e.push(...we(A));
|
|
2553
2651
|
}
|
|
2554
2652
|
return e;
|
|
2555
2653
|
}
|
|
2556
|
-
function
|
|
2557
|
-
const e = Array.from(t.querySelectorAll(
|
|
2558
|
-
return [...e, ...n].flatMap(
|
|
2559
|
-
(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)
|
|
2560
2658
|
);
|
|
2561
2659
|
}
|
|
2562
|
-
function
|
|
2563
|
-
return
|
|
2660
|
+
function ft(t = {}) {
|
|
2661
|
+
return we().map(function(e) {
|
|
2564
2662
|
const n = te(t, { element: e });
|
|
2565
|
-
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));
|
|
2566
2664
|
});
|
|
2567
2665
|
}
|
|
2568
|
-
const
|
|
2666
|
+
const wr = {
|
|
2569
2667
|
"&": "&",
|
|
2570
2668
|
"<": "<",
|
|
2571
2669
|
">": ">",
|
|
@@ -2573,15 +2671,15 @@ const pr = {
|
|
|
2573
2671
|
"'": "'",
|
|
2574
2672
|
"`": "`"
|
|
2575
2673
|
};
|
|
2576
|
-
function
|
|
2674
|
+
function yr(t) {
|
|
2577
2675
|
let e = "";
|
|
2578
2676
|
const n = [];
|
|
2579
2677
|
let o = 0;
|
|
2580
|
-
for (let
|
|
2581
|
-
const r = t[
|
|
2678
|
+
for (let A = 0; A < t.length; A++) {
|
|
2679
|
+
const r = t[A], i = wr[r];
|
|
2582
2680
|
if (i) {
|
|
2583
|
-
const
|
|
2584
|
-
o = o -
|
|
2681
|
+
const s = i.length - 1;
|
|
2682
|
+
o = o - s, n.push({
|
|
2585
2683
|
oldPosition: e.length + i.length,
|
|
2586
2684
|
diffOffset: o
|
|
2587
2685
|
});
|
|
@@ -2590,47 +2688,47 @@ function mr(t) {
|
|
|
2590
2688
|
}
|
|
2591
2689
|
return { escapedText: e, backwardAlignment: n };
|
|
2592
2690
|
}
|
|
2593
|
-
function
|
|
2691
|
+
function pt(t, e) {
|
|
2594
2692
|
const n = structuredClone(t.attributes);
|
|
2595
2693
|
e && Object.assign(n, { id: e });
|
|
2596
|
-
const o = Object.entries(n).map(([
|
|
2694
|
+
const o = Object.entries(n).map(([A, r]) => ` ${A}="${be(r)}"`).join("");
|
|
2597
2695
|
return `<${t.tagName}${o}>`;
|
|
2598
2696
|
}
|
|
2599
|
-
function
|
|
2697
|
+
function mt(t) {
|
|
2600
2698
|
return `</${t}>`;
|
|
2601
2699
|
}
|
|
2602
|
-
function
|
|
2700
|
+
function Er(t, e) {
|
|
2603
2701
|
return [
|
|
2604
2702
|
G(t.backwardAlignment, e[0]),
|
|
2605
2703
|
G(t.backwardAlignment, e[1])
|
|
2606
2704
|
];
|
|
2607
2705
|
}
|
|
2608
|
-
function
|
|
2706
|
+
function Te(t, e = "div") {
|
|
2609
2707
|
const n = t.tagName || e;
|
|
2610
2708
|
return n.includes(" ") && console.info(`tagName "${n}" contains whitespaces which may lead to unexpected results.`), { tagName: n, attributes: t.attributes || {} };
|
|
2611
2709
|
}
|
|
2612
|
-
function
|
|
2613
|
-
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;
|
|
2614
2712
|
let i;
|
|
2615
|
-
return r ? (t.escapeResult =
|
|
2616
|
-
completeHtml:
|
|
2617
|
-
contentStart:
|
|
2618
|
-
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
|
|
2619
2717
|
};
|
|
2620
2718
|
}
|
|
2621
|
-
class
|
|
2719
|
+
class ye {
|
|
2622
2720
|
config;
|
|
2623
2721
|
rootElementWrapper;
|
|
2624
2722
|
adapters;
|
|
2625
2723
|
adaptersOfLastSuccessfulCheck;
|
|
2626
2724
|
constructor(e = {}) {
|
|
2627
|
-
this.config = e, e.rootElement && (this.rootElementWrapper =
|
|
2725
|
+
this.config = e, e.rootElement && (this.rootElementWrapper = Te(e.rootElement, "html")), this.adapters = [];
|
|
2628
2726
|
}
|
|
2629
2727
|
getFormat() {
|
|
2630
2728
|
return this.config.aggregateFormat || "HTML";
|
|
2631
2729
|
}
|
|
2632
2730
|
addSingleAdapterInternal(e, n = {}, o = "acrolinx_integration" + this.adapters.length) {
|
|
2633
|
-
this.adapters.push({ id: o, adapter: e, wrapper:
|
|
2731
|
+
this.adapters.push({ id: o, adapter: e, wrapper: Te(n) });
|
|
2634
2732
|
}
|
|
2635
2733
|
addSingleAdapter(e, n = {}, o) {
|
|
2636
2734
|
this.addSingleAdapterInternal(e, n, o);
|
|
@@ -2642,25 +2740,25 @@ class we {
|
|
|
2642
2740
|
this.config.beforeCheck && this.config.beforeCheck(this);
|
|
2643
2741
|
const n = this.adapters.map((o) => o.adapter.extractContentForCheck(e));
|
|
2644
2742
|
return Promise.all(n).then((o) => {
|
|
2645
|
-
let
|
|
2743
|
+
let A = this.config.documentHeader || "";
|
|
2646
2744
|
const r = [];
|
|
2647
|
-
this.rootElementWrapper && (
|
|
2745
|
+
this.rootElementWrapper && (A += pt(this.rootElementWrapper));
|
|
2648
2746
|
for (let i = 0; i < this.adapters.length; i++) {
|
|
2649
|
-
const
|
|
2650
|
-
if (
|
|
2651
|
-
|
|
2747
|
+
const s = o[i], a = this.adapters[i];
|
|
2748
|
+
if (Je(s)) {
|
|
2749
|
+
a.checkedRange = void 0;
|
|
2652
2750
|
continue;
|
|
2653
2751
|
}
|
|
2654
|
-
const { completeHtml:
|
|
2655
|
-
if (
|
|
2656
|
-
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)
|
|
2657
2755
|
r.push([
|
|
2658
|
-
u[0] +
|
|
2659
|
-
u[1] +
|
|
2756
|
+
u[0] + a.checkedRange[0],
|
|
2757
|
+
u[1] + a.checkedRange[0]
|
|
2660
2758
|
]);
|
|
2661
|
-
|
|
2759
|
+
A += c;
|
|
2662
2760
|
}
|
|
2663
|
-
return this.rootElementWrapper && (
|
|
2761
|
+
return this.rootElementWrapper && (A += mt(this.rootElementWrapper.tagName)), { content: A, selection: { ranges: r } };
|
|
2664
2762
|
});
|
|
2665
2763
|
}
|
|
2666
2764
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -2673,19 +2771,19 @@ class we {
|
|
|
2673
2771
|
}
|
|
2674
2772
|
selectRanges(e, n) {
|
|
2675
2773
|
const o = this.remapMatches(n);
|
|
2676
|
-
for (const
|
|
2677
|
-
o[
|
|
2774
|
+
for (const A in o)
|
|
2775
|
+
o[A].adapter.selectRanges(e, o[A].matches);
|
|
2678
2776
|
}
|
|
2679
2777
|
remapMatches(e) {
|
|
2680
2778
|
const n = {};
|
|
2681
2779
|
for (const o of e) {
|
|
2682
|
-
const
|
|
2683
|
-
n.hasOwnProperty(
|
|
2684
|
-
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 = [
|
|
2685
2783
|
o.range[0] - r,
|
|
2686
2784
|
o.range[1] - r
|
|
2687
|
-
],
|
|
2688
|
-
|
|
2785
|
+
], s = structuredClone(o);
|
|
2786
|
+
s.range = A.escapeResult ? Er(A.escapeResult, i) : i, n[A.id].matches.push(s);
|
|
2689
2787
|
}
|
|
2690
2788
|
return n;
|
|
2691
2789
|
}
|
|
@@ -2699,11 +2797,11 @@ class we {
|
|
|
2699
2797
|
}
|
|
2700
2798
|
replaceRanges(e, n) {
|
|
2701
2799
|
const o = this.remapMatches(n);
|
|
2702
|
-
for (const
|
|
2703
|
-
o[
|
|
2800
|
+
for (const A in o)
|
|
2801
|
+
o[A].adapter.replaceRanges(e, o[A].matches);
|
|
2704
2802
|
}
|
|
2705
2803
|
}
|
|
2706
|
-
class
|
|
2804
|
+
class bt extends ye {
|
|
2707
2805
|
isAsync = !0;
|
|
2708
2806
|
requiresSynchronization = !0;
|
|
2709
2807
|
addSingleAdapter(e, n = {}, o) {
|
|
@@ -2711,16 +2809,16 @@ class ft extends we {
|
|
|
2711
2809
|
}
|
|
2712
2810
|
async selectRanges(e, n) {
|
|
2713
2811
|
const o = this.remapMatches(n);
|
|
2714
|
-
for (const
|
|
2715
|
-
await o[
|
|
2812
|
+
for (const A in o)
|
|
2813
|
+
await o[A].adapter.selectRanges(e, o[A].matches);
|
|
2716
2814
|
}
|
|
2717
2815
|
async replaceRanges(e, n) {
|
|
2718
2816
|
const o = this.remapMatches(n);
|
|
2719
|
-
for (const
|
|
2720
|
-
await o[
|
|
2817
|
+
for (const A in o)
|
|
2818
|
+
await o[A].adapter.replaceRanges(e, o[A].matches);
|
|
2721
2819
|
}
|
|
2722
2820
|
}
|
|
2723
|
-
class
|
|
2821
|
+
class vt {
|
|
2724
2822
|
constructor(e) {
|
|
2725
2823
|
this.conf = e, this.initMultiAdapter();
|
|
2726
2824
|
}
|
|
@@ -2728,13 +2826,13 @@ class pt {
|
|
|
2728
2826
|
requiresSynchronization = !0;
|
|
2729
2827
|
asyncMultiAdapter;
|
|
2730
2828
|
initMultiAdapter() {
|
|
2731
|
-
this.asyncMultiAdapter = new
|
|
2829
|
+
this.asyncMultiAdapter = new bt(this.conf);
|
|
2732
2830
|
}
|
|
2733
2831
|
getFormat() {
|
|
2734
2832
|
return this.asyncMultiAdapter.getFormat();
|
|
2735
2833
|
}
|
|
2736
2834
|
extractContentForCheck(e) {
|
|
2737
|
-
return this.initMultiAdapter(),
|
|
2835
|
+
return this.initMultiAdapter(), ft(this.conf).forEach((n) => {
|
|
2738
2836
|
const o = n.getAutobindWrapperAttributes ? n.getAutobindWrapperAttributes() : {};
|
|
2739
2837
|
this.asyncMultiAdapter.addSingleAdapter(n, { attributes: o });
|
|
2740
2838
|
}), this.asyncMultiAdapter.extractContentForCheck(e);
|
|
@@ -2752,19 +2850,19 @@ class pt {
|
|
|
2752
2850
|
await this.asyncMultiAdapter.replaceRanges(e, n);
|
|
2753
2851
|
}
|
|
2754
2852
|
}
|
|
2755
|
-
class
|
|
2853
|
+
class It {
|
|
2756
2854
|
constructor(e) {
|
|
2757
2855
|
this.conf = e, this.initMultiAdapter();
|
|
2758
2856
|
}
|
|
2759
2857
|
multiAdapter;
|
|
2760
2858
|
initMultiAdapter() {
|
|
2761
|
-
this.multiAdapter = new
|
|
2859
|
+
this.multiAdapter = new ye(this.conf);
|
|
2762
2860
|
}
|
|
2763
2861
|
getFormat() {
|
|
2764
2862
|
return this.multiAdapter.getFormat();
|
|
2765
2863
|
}
|
|
2766
2864
|
extractContentForCheck(e) {
|
|
2767
|
-
return this.initMultiAdapter(),
|
|
2865
|
+
return this.initMultiAdapter(), ft(this.conf).forEach((n) => {
|
|
2768
2866
|
const o = n.getAutobindWrapperAttributes ? n.getAutobindWrapperAttributes() : {};
|
|
2769
2867
|
this.multiAdapter.addSingleAdapter(n, { attributes: o });
|
|
2770
2868
|
}), this.multiAdapter.extractContentForCheck(e);
|
|
@@ -2782,54 +2880,54 @@ class mt {
|
|
|
2782
2880
|
this.multiAdapter.replaceRanges(e, n);
|
|
2783
2881
|
}
|
|
2784
2882
|
}
|
|
2785
|
-
class
|
|
2883
|
+
class Ee {
|
|
2786
2884
|
get(e) {
|
|
2787
2885
|
return new Promise((n) => {
|
|
2788
|
-
n(
|
|
2886
|
+
n(Br(e));
|
|
2789
2887
|
});
|
|
2790
2888
|
}
|
|
2791
2889
|
set(e, n) {
|
|
2792
2890
|
return new Promise((o) => {
|
|
2793
|
-
|
|
2891
|
+
Sr(e, n), o(void 0);
|
|
2794
2892
|
});
|
|
2795
2893
|
}
|
|
2796
2894
|
}
|
|
2797
|
-
function
|
|
2895
|
+
function Br(t) {
|
|
2798
2896
|
const e = localStorage.getItem(t);
|
|
2799
2897
|
return e === null ? null : JSON.parse(e);
|
|
2800
2898
|
}
|
|
2801
|
-
function
|
|
2899
|
+
function Sr(t, e) {
|
|
2802
2900
|
localStorage.setItem(t, JSON.stringify(e));
|
|
2803
2901
|
}
|
|
2804
|
-
const M = "acrolinxFloatingSidebar",
|
|
2902
|
+
const M = "acrolinxFloatingSidebar", Ct = "acrolinxFloatingSidebarTitleBar", ke = "acrolinxFloatingSidebarCloseIcon";
|
|
2805
2903
|
let J = "acrolinxSidebarContainer";
|
|
2806
|
-
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({
|
|
2807
2905
|
top: 20,
|
|
2808
2906
|
left: 20,
|
|
2809
|
-
height:
|
|
2810
|
-
}),
|
|
2811
|
-
function
|
|
2907
|
+
height: Fr
|
|
2908
|
+
}), Et = "acrolinx.plugins.floatingSidebar.position";
|
|
2909
|
+
function Zr(t) {
|
|
2812
2910
|
const e = {
|
|
2813
2911
|
top: L.top,
|
|
2814
2912
|
left: L.left,
|
|
2815
|
-
height:
|
|
2913
|
+
height: kt(window.innerHeight - L.top - 40)
|
|
2816
2914
|
};
|
|
2817
|
-
return t.get(
|
|
2915
|
+
return t.get(Et).then(
|
|
2818
2916
|
(n) => ({ ...e, ...n }),
|
|
2819
2917
|
(n) => (console.error("Can't load saved sidebar position.", n), e)
|
|
2820
2918
|
);
|
|
2821
2919
|
}
|
|
2822
|
-
function
|
|
2823
|
-
return Math.max(
|
|
2920
|
+
function kt(t) {
|
|
2921
|
+
return Math.max(yt, Math.min(Rr, t));
|
|
2824
2922
|
}
|
|
2825
|
-
function
|
|
2923
|
+
function Le({ left: t, top: e, height: n }, o = window.innerWidth, A = window.innerHeight) {
|
|
2826
2924
|
return e <= 0 && (e = 20), t <= 0 && (t = 20), {
|
|
2827
2925
|
left: t > o - 150 ? o - 150 : t,
|
|
2828
|
-
top: e >
|
|
2829
|
-
height: n >
|
|
2926
|
+
top: e > A - 30 ? A - 30 : e,
|
|
2927
|
+
height: n > A ? kt(A - 10) : n
|
|
2830
2928
|
};
|
|
2831
2929
|
}
|
|
2832
|
-
function
|
|
2930
|
+
function Mr() {
|
|
2833
2931
|
const t = document.createElement("style"), e = document.querySelector("head");
|
|
2834
2932
|
t.textContent = `
|
|
2835
2933
|
#${M} {
|
|
@@ -2857,7 +2955,7 @@ function Sr() {
|
|
|
2857
2955
|
transition: none;
|
|
2858
2956
|
}
|
|
2859
2957
|
|
|
2860
|
-
#${M} .${
|
|
2958
|
+
#${M} .${Ct} {
|
|
2861
2959
|
position: relative;
|
|
2862
2960
|
font-family: AcrolinxRoboto, Roboto, sans-serif;
|
|
2863
2961
|
font-weight: 500;
|
|
@@ -2868,7 +2966,7 @@ function Sr() {
|
|
|
2868
2966
|
color: white;
|
|
2869
2967
|
}
|
|
2870
2968
|
|
|
2871
|
-
#${M} .${
|
|
2969
|
+
#${M} .${ke} {
|
|
2872
2970
|
position: absolute;
|
|
2873
2971
|
cursor: pointer;
|
|
2874
2972
|
margin-right: 4px;
|
|
@@ -2877,7 +2975,7 @@ function Sr() {
|
|
|
2877
2975
|
width: 18px;
|
|
2878
2976
|
height: 18px;
|
|
2879
2977
|
background-repeat: no-repeat;
|
|
2880
|
-
background-image: url("data:image/svg+xml;base64,${
|
|
2978
|
+
background-image: url("data:image/svg+xml;base64,${xr}");
|
|
2881
2979
|
-webkit-background-size: cover;
|
|
2882
2980
|
-moz-background-size: cover;
|
|
2883
2981
|
-o-background-size: cover;
|
|
@@ -2889,7 +2987,7 @@ function Sr() {
|
|
|
2889
2987
|
position: absolute;
|
|
2890
2988
|
top: 30px;
|
|
2891
2989
|
left: 0;
|
|
2892
|
-
bottom: ${
|
|
2990
|
+
bottom: ${Ye}px;
|
|
2893
2991
|
background: white;
|
|
2894
2992
|
}
|
|
2895
2993
|
|
|
@@ -2899,7 +2997,7 @@ function Sr() {
|
|
|
2899
2997
|
border: none;
|
|
2900
2998
|
}
|
|
2901
2999
|
|
|
2902
|
-
#${M} #${
|
|
3000
|
+
#${M} #${Be} {
|
|
2903
3001
|
position: absolute;
|
|
2904
3002
|
top: 20px;
|
|
2905
3003
|
left: 0;
|
|
@@ -2922,16 +3020,16 @@ function Sr() {
|
|
|
2922
3020
|
z-index: ${ae - 100};
|
|
2923
3021
|
}
|
|
2924
3022
|
|
|
2925
|
-
#${M} .${
|
|
3023
|
+
#${M} .${wt} {
|
|
2926
3024
|
position: absolute;
|
|
2927
3025
|
bottom: 0;
|
|
2928
3026
|
background: white;
|
|
2929
3027
|
width: 100%;
|
|
2930
|
-
height: ${
|
|
3028
|
+
height: ${Ye}px;
|
|
2931
3029
|
border-top: 1px solid #dadada;
|
|
2932
3030
|
}
|
|
2933
3031
|
|
|
2934
|
-
#${M} .${
|
|
3032
|
+
#${M} .${Se} {
|
|
2935
3033
|
position: absolute;
|
|
2936
3034
|
right: 3px;
|
|
2937
3035
|
bottom: 5px;
|
|
@@ -2942,7 +3040,7 @@ function Sr() {
|
|
|
2942
3040
|
width: 24px;
|
|
2943
3041
|
height: 24px;
|
|
2944
3042
|
background-repeat: no-repeat;
|
|
2945
|
-
background-image: url("data:image/svg+xml;base64,${
|
|
3043
|
+
background-image: url("data:image/svg+xml;base64,${Dr}");
|
|
2946
3044
|
-webkit-background-size: cover;
|
|
2947
3045
|
-moz-background-size: cover;
|
|
2948
3046
|
-o-background-size: cover;
|
|
@@ -2955,17 +3053,17 @@ function Sr() {
|
|
|
2955
3053
|
}
|
|
2956
3054
|
`, e.appendChild(t);
|
|
2957
3055
|
}
|
|
2958
|
-
function
|
|
3056
|
+
function Wr() {
|
|
2959
3057
|
return `
|
|
2960
3058
|
<div id="${M}">
|
|
2961
|
-
<div class="${
|
|
3059
|
+
<div class="${Ct}">Acrolinx <span class="${ke}" title="Hide"></span></div>
|
|
2962
3060
|
<div id="${J}"></div>
|
|
2963
|
-
<div id="${
|
|
2964
|
-
<div class="${
|
|
3061
|
+
<div id="${Be}"></div>
|
|
3062
|
+
<div class="${wt}"><div class="${Se}" title="Drag to resize"></div></div>
|
|
2965
3063
|
</div>
|
|
2966
3064
|
`;
|
|
2967
3065
|
}
|
|
2968
|
-
function
|
|
3066
|
+
function Bt(t) {
|
|
2969
3067
|
const e = document.createElement("div");
|
|
2970
3068
|
return Object.assign(e, t), e;
|
|
2971
3069
|
}
|
|
@@ -2975,22 +3073,22 @@ function j(t) {
|
|
|
2975
3073
|
function P(t) {
|
|
2976
3074
|
t.style.display = "block";
|
|
2977
3075
|
}
|
|
2978
|
-
function
|
|
2979
|
-
return
|
|
3076
|
+
function Hr(t) {
|
|
3077
|
+
return Bt({ innerHTML: t.trim() }).firstChild;
|
|
2980
3078
|
}
|
|
2981
|
-
function
|
|
3079
|
+
function xe(t) {
|
|
2982
3080
|
t.sidebarContainerId && (J = t.sidebarContainerId);
|
|
2983
3081
|
let e = L;
|
|
2984
|
-
const n =
|
|
2985
|
-
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;
|
|
2986
3084
|
function h(b) {
|
|
2987
3085
|
e = te(e, b), o.style.left = e.left + "px", o.style.top = e.top + "px", o.style.height = e.height + "px";
|
|
2988
3086
|
}
|
|
2989
3087
|
function f() {
|
|
2990
|
-
j(
|
|
3088
|
+
j(A), j(s), c = !1, l = !1, o.classList.remove(Y), o.classList.remove(ge), s.classList.remove(Y), p();
|
|
2991
3089
|
}
|
|
2992
3090
|
function p() {
|
|
2993
|
-
t.asyncStorage.set(
|
|
3091
|
+
t.asyncStorage.set(Et, e).catch((b) => {
|
|
2994
3092
|
console.error("Error in FloatingSidebar.savePosition:", b);
|
|
2995
3093
|
});
|
|
2996
3094
|
}
|
|
@@ -3001,53 +3099,53 @@ function Se(t) {
|
|
|
3001
3099
|
g ? m() : (P(o), g = !0, C());
|
|
3002
3100
|
}
|
|
3003
3101
|
document.addEventListener("mousemove", (b) => {
|
|
3004
|
-
if (
|
|
3102
|
+
if (c && h({
|
|
3005
3103
|
left: Math.max(b.clientX - d, 0),
|
|
3006
3104
|
top: Math.max(b.clientY - u, 0)
|
|
3007
3105
|
}), l) {
|
|
3008
3106
|
const w = o.getBoundingClientRect().top;
|
|
3009
3107
|
h({
|
|
3010
|
-
height: Math.max(b.clientY - u + 30 - w,
|
|
3108
|
+
height: Math.max(b.clientY - u + 30 - w, yt)
|
|
3011
3109
|
});
|
|
3012
3110
|
}
|
|
3013
3111
|
}), o.addEventListener("mousedown", (b) => {
|
|
3014
3112
|
const { top: w, left: y } = o.getBoundingClientRect();
|
|
3015
|
-
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);
|
|
3016
3114
|
}), i.addEventListener("mousedown", (b) => {
|
|
3017
|
-
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();
|
|
3018
3116
|
});
|
|
3019
3117
|
function I() {
|
|
3020
|
-
g && h(
|
|
3118
|
+
g && h(Le(e));
|
|
3021
3119
|
}
|
|
3022
3120
|
function C() {
|
|
3023
3121
|
setTimeout(() => {
|
|
3024
|
-
h(
|
|
3122
|
+
h(Le(e));
|
|
3025
3123
|
}, 1);
|
|
3026
3124
|
}
|
|
3027
3125
|
function E() {
|
|
3028
|
-
z(o), z(
|
|
3126
|
+
z(o), z(s), z(A), window.removeEventListener("resize", I), document.removeEventListener("mouseup", f);
|
|
3029
3127
|
}
|
|
3030
|
-
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) => {
|
|
3031
3129
|
P(o), h(b), C();
|
|
3032
3130
|
}).catch((b) => {
|
|
3033
3131
|
console.error("Error while trying to set initial position of FloatingSidebar:", b);
|
|
3034
|
-
}),
|
|
3132
|
+
}), a.appendChild(o), a.appendChild(s), { toggleVisibility: v, remove: E };
|
|
3035
3133
|
}
|
|
3036
|
-
async function
|
|
3134
|
+
async function Qr(t) {
|
|
3037
3135
|
const e = te(t, {
|
|
3038
3136
|
sidebarContainerId: J,
|
|
3039
|
-
asyncStorage: t.asyncStorage || new
|
|
3040
|
-
}), n =
|
|
3041
|
-
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;
|
|
3042
3140
|
}
|
|
3043
|
-
async function
|
|
3141
|
+
async function Kr(t) {
|
|
3044
3142
|
const e = te(t, {
|
|
3045
3143
|
sidebarContainerId: J,
|
|
3046
|
-
asyncStorage: t.asyncStorage || new
|
|
3047
|
-
}), n =
|
|
3048
|
-
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;
|
|
3049
3147
|
}
|
|
3050
|
-
class
|
|
3148
|
+
class Nr extends N {
|
|
3051
3149
|
editorId;
|
|
3052
3150
|
constructor(e) {
|
|
3053
3151
|
super(e), this.editorId = e.editorId;
|
|
@@ -3085,7 +3183,7 @@ class Zr extends N {
|
|
|
3085
3183
|
return o.isEnabled && o.isSourceEditingMode;
|
|
3086
3184
|
}
|
|
3087
3185
|
}
|
|
3088
|
-
class
|
|
3186
|
+
class Pr extends N {
|
|
3089
3187
|
editorId;
|
|
3090
3188
|
constructor(e) {
|
|
3091
3189
|
super(e), this.editorId = e.editorId;
|
|
@@ -3115,7 +3213,7 @@ class Mr extends N {
|
|
|
3115
3213
|
return this.getEditor().mode === "wysiwyg";
|
|
3116
3214
|
}
|
|
3117
3215
|
}
|
|
3118
|
-
class
|
|
3216
|
+
class Gr extends N {
|
|
3119
3217
|
editorId;
|
|
3120
3218
|
constructor(e) {
|
|
3121
3219
|
super(e), this.config.disableInputEventSimulation = !0, this.editorId = e.editorId;
|
|
@@ -3134,7 +3232,7 @@ class Wr extends N {
|
|
|
3134
3232
|
return this.getEditor().getDoc();
|
|
3135
3233
|
}
|
|
3136
3234
|
}
|
|
3137
|
-
class
|
|
3235
|
+
class Tr {
|
|
3138
3236
|
config;
|
|
3139
3237
|
currentContentChecking;
|
|
3140
3238
|
lastContentChecked;
|
|
@@ -3186,18 +3284,18 @@ class Hr {
|
|
|
3186
3284
|
this.selectRangeAndScroll([o[0].range[0], o[o.length - 1].range[1]]);
|
|
3187
3285
|
}
|
|
3188
3286
|
replaceRanges(e, n) {
|
|
3189
|
-
const o = this.lookupMatchesOrThrow(n),
|
|
3287
|
+
const o = this.lookupMatchesOrThrow(n), A = this.getEscapeFunction();
|
|
3190
3288
|
let r = 0;
|
|
3191
3289
|
o.slice().reverse().forEach((i) => {
|
|
3192
3290
|
if (!ve(this.lastContentChecked, i.originalMatch)) {
|
|
3193
|
-
const
|
|
3291
|
+
const s = A(i.originalMatch.replacement);
|
|
3194
3292
|
this.config.editor.dispatch({
|
|
3195
3293
|
changes: {
|
|
3196
3294
|
from: i.range[0],
|
|
3197
3295
|
to: i.range[1],
|
|
3198
|
-
insert:
|
|
3296
|
+
insert: s
|
|
3199
3297
|
}
|
|
3200
|
-
}), r +=
|
|
3298
|
+
}), r += s.length;
|
|
3201
3299
|
}
|
|
3202
3300
|
}), this.selectRangeAndScroll([o[0].range[0], o[0].range[0] + r]);
|
|
3203
3301
|
}
|
|
@@ -3219,21 +3317,21 @@ class Hr {
|
|
|
3219
3317
|
}
|
|
3220
3318
|
cmSelectionToRange = (e) => {
|
|
3221
3319
|
const n = [e.from, e.to];
|
|
3222
|
-
return n.sort((o,
|
|
3320
|
+
return n.sort((o, A) => o - A), n;
|
|
3223
3321
|
};
|
|
3224
3322
|
}
|
|
3225
|
-
const
|
|
3323
|
+
const Yr = {
|
|
3226
3324
|
"text/html": "HTML",
|
|
3227
3325
|
"text/xml": "HTML",
|
|
3228
3326
|
"application/xml": "XML",
|
|
3229
3327
|
"text/x-markdown": "MARKDOWN",
|
|
3230
3328
|
"text/plain": "TEXT"
|
|
3231
|
-
},
|
|
3329
|
+
}, Lr = {
|
|
3232
3330
|
htmlmixed: "HTML",
|
|
3233
3331
|
xml: "XML",
|
|
3234
3332
|
markdown: "MARKDOWN"
|
|
3235
3333
|
};
|
|
3236
|
-
class
|
|
3334
|
+
class Jr {
|
|
3237
3335
|
config;
|
|
3238
3336
|
currentContentChecking;
|
|
3239
3337
|
lastContentChecked;
|
|
@@ -3258,7 +3356,7 @@ class Nr {
|
|
|
3258
3356
|
return this.config.format || this.getFormatFromCodeMirror() || "AUTO";
|
|
3259
3357
|
}
|
|
3260
3358
|
getFormatFromCodeMirror() {
|
|
3261
|
-
return
|
|
3359
|
+
return Lr[this.config.editor.getDoc().getMode().name || ""] || Yr[this.config.editor.getOption("mode")];
|
|
3262
3360
|
}
|
|
3263
3361
|
extractContentForCheck(e) {
|
|
3264
3362
|
return this.currentContentChecking = this.getContent(), {
|
|
@@ -3287,14 +3385,14 @@ class Nr {
|
|
|
3287
3385
|
this.selectRangeAndScroll([o[0].range[0], o[o.length - 1].range[1]]);
|
|
3288
3386
|
}
|
|
3289
3387
|
replaceRanges(e, n) {
|
|
3290
|
-
const o = this.getDoc(),
|
|
3388
|
+
const o = this.getDoc(), A = this.lookupMatchesOrThrow(n), r = this.getEscapeFunction();
|
|
3291
3389
|
let i = 0;
|
|
3292
|
-
for (const
|
|
3293
|
-
if (!ve(this.lastContentChecked,
|
|
3294
|
-
const [
|
|
3295
|
-
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;
|
|
3296
3394
|
}
|
|
3297
|
-
this.selectRangeAndScroll([
|
|
3395
|
+
this.selectRangeAndScroll([A[0].range[0], A[0].range[0] + i]);
|
|
3298
3396
|
}
|
|
3299
3397
|
getEscapeFunction() {
|
|
3300
3398
|
const e = this.getFormat();
|
|
@@ -3310,8 +3408,8 @@ class Nr {
|
|
|
3310
3408
|
return this.config.editor.getDoc();
|
|
3311
3409
|
}
|
|
3312
3410
|
selectRange(e) {
|
|
3313
|
-
const n = this.getDoc(), o = n.posFromIndex(e[0]),
|
|
3314
|
-
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];
|
|
3315
3413
|
}
|
|
3316
3414
|
selectRangeAndScroll(e) {
|
|
3317
3415
|
const n = this.selectRange(e), o = this.config.editor;
|
|
@@ -3319,10 +3417,10 @@ class Nr {
|
|
|
3319
3417
|
}
|
|
3320
3418
|
cmSelectionToRange = (e) => {
|
|
3321
3419
|
const n = this.getDoc(), o = [n.indexFromPos(e.anchor), n.indexFromPos(e.head)];
|
|
3322
|
-
return o.sort((
|
|
3420
|
+
return o.sort((A, r) => A - r), o;
|
|
3323
3421
|
};
|
|
3324
3422
|
}
|
|
3325
|
-
class
|
|
3423
|
+
class Or {
|
|
3326
3424
|
/**
|
|
3327
3425
|
* Editor of this adapter
|
|
3328
3426
|
*
|
|
@@ -3396,8 +3494,8 @@ class Pr {
|
|
|
3396
3494
|
* @inheritdoc
|
|
3397
3495
|
*/
|
|
3398
3496
|
replaceRanges(e, n) {
|
|
3399
|
-
const o = this.selectMatches(n),
|
|
3400
|
-
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);
|
|
3401
3499
|
}
|
|
3402
3500
|
/**
|
|
3403
3501
|
* @inheritdoc
|
|
@@ -3463,15 +3561,15 @@ class Pr {
|
|
|
3463
3561
|
* @protected
|
|
3464
3562
|
*/
|
|
3465
3563
|
selectText(e, n) {
|
|
3466
|
-
const o = this.document.findTextNodeByOffset(e),
|
|
3564
|
+
const o = this.document.findTextNodeByOffset(e), A = this.document.findTextNodeByOffset(n), r = this.selectionManager.getActive();
|
|
3467
3565
|
r.startNode = o.textNode, r.startOffset = Ext.ux.xeditor.Util.getNodeOffsetByNodeAndOffset(
|
|
3468
3566
|
this.editor,
|
|
3469
3567
|
o.textNode,
|
|
3470
3568
|
o.offset
|
|
3471
|
-
), r.endNode =
|
|
3569
|
+
), r.endNode = A.textNode, r.endOffset = Ext.ux.xeditor.Util.getNodeOffsetByNodeAndOffset(
|
|
3472
3570
|
this.editor,
|
|
3473
|
-
|
|
3474
|
-
|
|
3571
|
+
A.textNode,
|
|
3572
|
+
A.offset
|
|
3475
3573
|
), this.editor.updateState(), this.selectionManager.sync(), this.editor.contentFrame.scrollToSelection("middle", !0).selectionCorrected && (this.editor.updateState(), this.selectionManager.sync());
|
|
3476
3574
|
}
|
|
3477
3575
|
/**
|
|
@@ -3486,29 +3584,29 @@ class Pr {
|
|
|
3486
3584
|
html: "",
|
|
3487
3585
|
text: ""
|
|
3488
3586
|
}, n = this.editor.getVersion().major >= 6, o = this;
|
|
3489
|
-
function
|
|
3587
|
+
function A(r, i) {
|
|
3490
3588
|
if (r.isRemoved(!0))
|
|
3491
3589
|
return;
|
|
3492
|
-
const
|
|
3493
|
-
let
|
|
3494
|
-
r.eachChildNode(function(
|
|
3495
|
-
const u = o.editor.document.getNodeType(
|
|
3496
|
-
if (
|
|
3497
|
-
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);
|
|
3498
3596
|
g = Ext.ux.xeditor.Util.trimPlaceHolderChar(o.editor, g);
|
|
3499
3597
|
const h = document.createTextNode(g);
|
|
3500
3598
|
i.appendChild(h);
|
|
3501
3599
|
} else if (o.editor.configObj.isElementType(u)) {
|
|
3502
|
-
const g = o.editor.document.getNode(
|
|
3503
|
-
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) {
|
|
3504
3602
|
const p = document.createTextNode(" ");
|
|
3505
3603
|
f.appendChild(p);
|
|
3506
3604
|
}
|
|
3507
|
-
|
|
3605
|
+
A(g, f), a = h.insertSpaceAfter;
|
|
3508
3606
|
}
|
|
3509
3607
|
});
|
|
3510
3608
|
}
|
|
3511
|
-
return
|
|
3609
|
+
return A(this.document.root, e.dom), e.html = e.dom.outerHTML, e.text = e.dom.innerText, e;
|
|
3512
3610
|
}
|
|
3513
3611
|
/**
|
|
3514
3612
|
* Returns the specific element that should be used for the acrolinx check.
|
|
@@ -3524,145 +3622,148 @@ class Pr {
|
|
|
3524
3622
|
getAcrolinxElement(e, n, o) {
|
|
3525
3623
|
if (n.isInline)
|
|
3526
3624
|
return o;
|
|
3527
|
-
const
|
|
3528
|
-
return o.appendChild(
|
|
3625
|
+
const A = document.createElement(n.tag);
|
|
3626
|
+
return o.appendChild(A), A;
|
|
3529
3627
|
}
|
|
3530
3628
|
}
|
|
3531
3629
|
const he = globalThis;
|
|
3532
3630
|
he.acrolinx = he.acrolinx || {};
|
|
3533
|
-
const
|
|
3631
|
+
const jr = {
|
|
3534
3632
|
AcrolinxPlugin: pe,
|
|
3535
|
-
autoBindFloatingSidebar:
|
|
3536
|
-
autoBindFloatingSidebarAsync:
|
|
3537
|
-
createPluginMessageAdapter:
|
|
3538
|
-
initFloatingSidebar:
|
|
3539
|
-
AsyncLocalStorage:
|
|
3540
|
-
loadSidebarCode:
|
|
3633
|
+
autoBindFloatingSidebar: Qr,
|
|
3634
|
+
autoBindFloatingSidebarAsync: Kr,
|
|
3635
|
+
createPluginMessageAdapter: Gt,
|
|
3636
|
+
initFloatingSidebar: xe,
|
|
3637
|
+
AsyncLocalStorage: Ee,
|
|
3638
|
+
loadSidebarCode: Ot,
|
|
3541
3639
|
getSelectionHtmlRanges: ne,
|
|
3542
3640
|
extractTextDomMapping: Ie,
|
|
3543
3641
|
adapter: {
|
|
3544
3642
|
AbstractRichtextEditorAdapter: N,
|
|
3545
|
-
AutoBindAdapter:
|
|
3546
|
-
AsyncAutoBindAdapter:
|
|
3547
|
-
CKEditor5Adapter:
|
|
3548
|
-
CKEditorAdapter:
|
|
3549
|
-
CodeMirror6Adapter:
|
|
3550
|
-
CodeMirrorAdapter:
|
|
3551
|
-
ContentEditableAdapter:
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
|
|
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
|
|
3560
3659
|
},
|
|
3561
3660
|
lookup: {
|
|
3562
3661
|
lookupMatches: O
|
|
3563
3662
|
}
|
|
3564
3663
|
};
|
|
3565
|
-
he.acrolinx.plugins =
|
|
3664
|
+
he.acrolinx.plugins = jr;
|
|
3566
3665
|
export {
|
|
3567
|
-
|
|
3666
|
+
Wn as AUTO_SELF_CLOSING_LINE_TAGS,
|
|
3568
3667
|
N as AbstractRichtextEditorAdapter,
|
|
3569
3668
|
pe as AcrolinxPlugin,
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
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,
|
|
3581
3680
|
L as DEFAULT_POS,
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3681
|
+
Qt as Deferred,
|
|
3682
|
+
gr as EDITABLE_ELEMENTS_SELECTOR,
|
|
3683
|
+
wt as FOOTER,
|
|
3684
|
+
Ye as FOOTER_HEIGHT,
|
|
3685
|
+
dt as HerettoContentEditableAdapter,
|
|
3586
3686
|
ge as IS_DRAGGED_CLASS,
|
|
3587
3687
|
Y as IS_RESIZING_CLASS,
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
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,
|
|
3594
3694
|
J as SIDEBAR_CONTAINER_ID,
|
|
3595
|
-
|
|
3695
|
+
Be as SIDEBAR_DRAG_OVERLAY_ID,
|
|
3596
3696
|
ue as SIDEBAR_GLASS_PANE_ID,
|
|
3597
3697
|
M as SIDEBAR_ID,
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
|
|
3601
|
-
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
|
|
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,
|
|
3606
3706
|
V as assertElementIsDisplayed,
|
|
3607
3707
|
te as assign,
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
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,
|
|
3617
3717
|
ce as deepCloneWithHTMLElement,
|
|
3618
|
-
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3718
|
+
Ht as deepFreezed,
|
|
3719
|
+
_n as domPosition,
|
|
3720
|
+
Xr as enableLogging,
|
|
3721
|
+
yr as escapeHtmlCharacters,
|
|
3722
|
+
Qn as extractText,
|
|
3623
3723
|
Ie as extractTextDomMapping,
|
|
3624
|
-
|
|
3724
|
+
rn as findDisplacement,
|
|
3625
3725
|
G as findNewIndex,
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3726
|
+
st as getAutobindWrapperAttributes,
|
|
3727
|
+
it as getCompleteFlagLength,
|
|
3728
|
+
we as getEditableElements,
|
|
3629
3729
|
ee as getElementFromAdapterConf,
|
|
3630
|
-
|
|
3730
|
+
er as getEndDomPos,
|
|
3631
3731
|
ne as getSelectionHtmlRanges,
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
|
|
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,
|
|
3640
3740
|
ve as isDangerousToReplace,
|
|
3641
|
-
|
|
3642
|
-
|
|
3643
|
-
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
|
|
3648
|
-
|
|
3649
|
-
Br as
|
|
3650
|
-
|
|
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,
|
|
3651
3752
|
H as log,
|
|
3652
|
-
|
|
3753
|
+
zr as logTime,
|
|
3653
3754
|
O as lookupMatches,
|
|
3654
|
-
|
|
3755
|
+
Mt as parseUrl,
|
|
3655
3756
|
U as rangeContent,
|
|
3656
|
-
|
|
3657
|
-
|
|
3757
|
+
jt as rebaseRelativeUrl,
|
|
3758
|
+
Ut as rebaseRelativeUrls,
|
|
3658
3759
|
z as removeNode,
|
|
3659
|
-
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3760
|
+
Sr as saveToLocalStorage,
|
|
3761
|
+
at as scrollIntoView,
|
|
3762
|
+
ct as scrollIntoViewCenteredIfPossible,
|
|
3763
|
+
Vn as scrollIntoViewCenteredWithFallback,
|
|
3663
3764
|
X as simulateInputEvent,
|
|
3664
|
-
|
|
3665
|
-
|
|
3765
|
+
on as sortedIndexBy,
|
|
3766
|
+
Xn as textMapping,
|
|
3666
3767
|
fe as toSet,
|
|
3667
|
-
|
|
3768
|
+
ze as waitMs
|
|
3668
3769
|
};
|