@linker-design-plus/tiny-peony 1.4.26 → 1.4.27
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.js +15 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +834 -837
- package/dist/index.mjs.map +1 -1
- package/dist/typings/shared.d.ts +1 -2
- package/package.json +6 -6
package/dist/index.mjs
CHANGED
|
@@ -3,12 +3,12 @@ var bE = (I, E, B) => E in I ? xE(I, E, { enumerable: !0, configurable: !0, writ
|
|
|
3
3
|
var IA = (I, E, B) => bE(I, typeof E != "symbol" ? E + "" : E, B);
|
|
4
4
|
import { getCurrentScope as TE, onScopeDispose as PE, isRef as jE, ref as yA, toValue as Jg, readonly as WE, watch as gI, computed as MA, shallowRef as rB, getCurrentInstance as yB, onMounted as mg, toRaw as VE, defineComponent as vA, withDirectives as SI, openBlock as aA, createElementBlock as cA, normalizeClass as pA, unref as uA, withModifiers as RC, Fragment as cg, renderList as fB, createElementVNode as iA, toDisplayString as AI, vShow as LI, createVNode as N, render as FC, createBlock as OE, withCtx as ig, createTextVNode as Ag, inject as gg, normalizeStyle as yg, h as hI, nextTick as NC, resolveComponent as OA, mergeProps as UI, reactive as XE, toRefs as zE, onBeforeUnmount as RB, createCommentVNode as ZE, onUnmounted as GC, provide as FB } from "vue";
|
|
5
5
|
import { Message as Yg, Row as _E, Col as DI, Input as aB, Space as $E, Button as FI, Modal as sB, Popover as Ae } from "@arco-design/web-vue";
|
|
6
|
-
var kC = (I) => Object.prototype.toString.call(I), ge = (I) => kC(I) === "[object Null]", Ie = (I) => kC(I) === "[object Number]", Ce = (I) => kC(I) === "[object String]", wC = (I, E) => E ? typeof E == "string" ? ` ${I}--${E}` : Array.isArray(E) ? E.reduce((B,
|
|
6
|
+
var kC = (I) => Object.prototype.toString.call(I), ge = (I) => kC(I) === "[object Null]", Ie = (I) => kC(I) === "[object Number]", Ce = (I) => kC(I) === "[object String]", wC = (I, E) => E ? typeof E == "string" ? ` ${I}--${E}` : Array.isArray(E) ? E.reduce((B, t) => B + wC(I, t), "") : Object.keys(E).reduce((B, t) => B + (E[t] ? wC(I, t) : ""), "") : "", Be = (I) => (E, B) => (E && typeof E != "string" && (B = E, E = ""), E = E ? `${I}__${E}` : I, `${E}${wC(E, B)}`), NB = (I) => (E) => {
|
|
7
7
|
const B = `${I}-${E}`;
|
|
8
8
|
return [Be(B), B];
|
|
9
9
|
};
|
|
10
10
|
const II = NB("tag"), ZA = NB("c"), Qe = () => typeof window > "u" ? !1 : window.location.protocol === "https:", MI = (I) => Object.prototype.toString.call(I).slice(8, -1).toLocaleLowerCase(), GB = (I) => MI(I) === "string", kB = (I) => MI(I) === "array", Ee = (I) => MI(I) === "null", ee = (I) => MI(I) === "undefined", q = (I) => Ee(I) || ee(I), $ = (I) => I instanceof HTMLElement, HA = (I) => (I == null ? void 0 : I.nodeType) === Node.TEXT_NODE;
|
|
11
|
-
var te = /* @__PURE__ */ ((I) => (I.None = "None", I.Caret = "Caret", I.Range = "Range", I))(te || {}),
|
|
11
|
+
var te = /* @__PURE__ */ ((I) => (I.None = "None", I.Caret = "Caret", I.Range = "Range", I))(te || {}), b = /* @__PURE__ */ ((I) => (I.pausation = "pausation", I.pronunciation = "pronunciation", I.anchor = "anchor", I.homophones = "homophones", I.highlight = "highlight", I))(b || {}), SB = /* @__PURE__ */ ((I) => (I.single = "single", I.multiple = "multiple", I))(SB || {});
|
|
12
12
|
class oe {
|
|
13
13
|
}
|
|
14
14
|
class ne {
|
|
@@ -22,11 +22,11 @@ class ae {
|
|
|
22
22
|
class pI {
|
|
23
23
|
}
|
|
24
24
|
class se extends ae {
|
|
25
|
-
constructor(B,
|
|
25
|
+
constructor(B, t) {
|
|
26
26
|
super();
|
|
27
27
|
IA(this, "contentManager");
|
|
28
28
|
IA(this, "cursorManager");
|
|
29
|
-
this.contentManager = B, this.cursorManager =
|
|
29
|
+
this.contentManager = B, this.cursorManager = t;
|
|
30
30
|
}
|
|
31
31
|
executeUndo() {
|
|
32
32
|
}
|
|
@@ -34,9 +34,9 @@ class se extends ae {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
const ce = (I, E) => {
|
|
37
|
-
var
|
|
37
|
+
var f;
|
|
38
38
|
E.preventDefault();
|
|
39
|
-
const B = ((
|
|
39
|
+
const B = ((f = E.data) == null ? void 0 : f.length) ?? 0, t = I.content.calcTextCount() - B, o = I.maxLength - t;
|
|
40
40
|
if (o >= B || !B) return;
|
|
41
41
|
const r = o <= 0 ? B : B - o, a = window.getSelection(), i = a == null ? void 0 : a.getRangeAt(0);
|
|
42
42
|
if (q(a) || q(i)) return;
|
|
@@ -46,8 +46,8 @@ const ce = (I, E) => {
|
|
|
46
46
|
const { inputType: B } = E;
|
|
47
47
|
I.content.calcTextCount() >= I.maxLength && B.includes("insert") && B !== "insertParagraph" && E.preventDefault();
|
|
48
48
|
}, JI = (I, E) => {
|
|
49
|
-
const B = [],
|
|
50
|
-
let o = I.maxLength -
|
|
49
|
+
const B = [], t = I.content.calcTextCount();
|
|
50
|
+
let o = I.maxLength - t;
|
|
51
51
|
if (o <= 0 || !E.length) return [];
|
|
52
52
|
let r = E.shift();
|
|
53
53
|
for (; o > 0 && r; ) {
|
|
@@ -58,11 +58,11 @@ const ce = (I, E) => {
|
|
|
58
58
|
return B;
|
|
59
59
|
};
|
|
60
60
|
class de extends ne {
|
|
61
|
-
constructor(B,
|
|
61
|
+
constructor(B, t) {
|
|
62
62
|
super();
|
|
63
63
|
IA(this, "_editorElement");
|
|
64
64
|
IA(this, "_editor");
|
|
65
|
-
this._editorElement = B, this._editor =
|
|
65
|
+
this._editorElement = B, this._editor = t;
|
|
66
66
|
}
|
|
67
67
|
// 置入空段落
|
|
68
68
|
insertEmptyPara() {
|
|
@@ -70,7 +70,7 @@ class de extends ne {
|
|
|
70
70
|
}
|
|
71
71
|
// 计算文本字数
|
|
72
72
|
calcTextCount() {
|
|
73
|
-
return this.getTextContent().reduce((B,
|
|
73
|
+
return this.getTextContent().reduce((B, t) => B + t.length, 0);
|
|
74
74
|
}
|
|
75
75
|
// 获取内容
|
|
76
76
|
getContent() {
|
|
@@ -87,12 +87,12 @@ class de extends ne {
|
|
|
87
87
|
this.setContent(B);
|
|
88
88
|
}
|
|
89
89
|
// 增加内容(增量)
|
|
90
|
-
appendContent(B,
|
|
90
|
+
appendContent(B, t) {
|
|
91
91
|
var i;
|
|
92
92
|
const o = JI(this._editor, kB(B) ? B : [B]), r = this.getParas()[0], a = (i = r.textContent) != null && i.length ? void 0 : o.shift();
|
|
93
|
-
a && (r.innerHTML = a,
|
|
93
|
+
a && (r.innerHTML = a, t == null || t(r)), o.forEach((h) => {
|
|
94
94
|
const d = document.createElement("p");
|
|
95
|
-
d.innerHTML = h, d.classList.add(
|
|
95
|
+
d.innerHTML = h, d.classList.add(NA), this._editorElement.appendChild(d), t == null || t(d);
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
98
|
// 增加内容
|
|
@@ -110,32 +110,29 @@ class de extends ne {
|
|
|
110
110
|
// 获取段落节点
|
|
111
111
|
getParas() {
|
|
112
112
|
return Array.from(
|
|
113
|
-
this._editorElement.querySelectorAll(`.${
|
|
113
|
+
this._editorElement.querySelectorAll(`.${NA}`)
|
|
114
114
|
);
|
|
115
115
|
}
|
|
116
116
|
// 获取纯文本内容(段落划分)
|
|
117
117
|
getTextContent() {
|
|
118
|
-
const B = this.getParas(),
|
|
118
|
+
const B = this.getParas(), t = (o) => {
|
|
119
119
|
const r = Array.from(o.childNodes);
|
|
120
120
|
let a = "";
|
|
121
121
|
for (let i = 0; i < r.length; i++) {
|
|
122
122
|
const h = r[i];
|
|
123
|
-
HA(h) ? a += h.textContent ?? "" : $(h) && (a +=
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
return y === x.pronunciation ? D ?? "" : u ?? e(c) ?? "";
|
|
130
|
-
})(h));
|
|
123
|
+
HA(h) ? a += h.textContent ?? "" : $(h) && (a += // 主播标签需要递归处理
|
|
124
|
+
b.anchor === h.dataset.type ? t(h) : (
|
|
125
|
+
// 读音替换标签,需要使用替换后文本
|
|
126
|
+
b.pronunciation === h.dataset.type ? h.dataset.value : h.dataset.raw ?? ""
|
|
127
|
+
));
|
|
131
128
|
}
|
|
132
129
|
return a;
|
|
133
130
|
};
|
|
134
|
-
return B.map(
|
|
131
|
+
return B.map(t);
|
|
135
132
|
}
|
|
136
133
|
_insert(B) {
|
|
137
|
-
const
|
|
138
|
-
if (q(
|
|
134
|
+
const t = window.getSelection(), o = this._editor.cursor.isRangeInEditor() ? t == null ? void 0 : t.getRangeAt(0) : this._editor.cursor.range;
|
|
135
|
+
if (q(t) || !t.rangeCount || q(o)) return;
|
|
139
136
|
const r = document.createDocumentFragment();
|
|
140
137
|
if (GB(B)) {
|
|
141
138
|
const d = document.createElement("div");
|
|
@@ -146,7 +143,7 @@ class de extends ne {
|
|
|
146
143
|
const a = r.lastChild;
|
|
147
144
|
(this._calcRange(o) ?? o).insertNode(r);
|
|
148
145
|
const h = document.createRange();
|
|
149
|
-
h.setStartAfter(a), h.setEndAfter(a),
|
|
146
|
+
h.setStartAfter(a), h.setEndAfter(a), t.removeAllRanges(), t.addRange(h);
|
|
150
147
|
}
|
|
151
148
|
_delete() {
|
|
152
149
|
const { range: B } = this._editor.cursor;
|
|
@@ -160,14 +157,14 @@ class de extends ne {
|
|
|
160
157
|
* @param {Range} range - 当前的 Range 对象
|
|
161
158
|
*/
|
|
162
159
|
_calcRange(B) {
|
|
163
|
-
const
|
|
164
|
-
if ($(B.startContainer) && B.startContainer.dataset.type ===
|
|
160
|
+
const t = B.commonAncestorContainer;
|
|
161
|
+
if ($(B.startContainer) && B.startContainer.dataset.type === b.highlight && B.endContainer.nodeType === Node.TEXT_NODE) {
|
|
165
162
|
const h = document.createRange();
|
|
166
163
|
return h.setStartAfter(B.startContainer), h.collapse(!0), h;
|
|
167
164
|
}
|
|
168
|
-
if (
|
|
165
|
+
if (t.tagName !== "DIV")
|
|
169
166
|
return B;
|
|
170
|
-
const o = B.startOffset, r = Array.from(
|
|
167
|
+
const o = B.startOffset, r = Array.from(t.children).filter((h) => h.tagName === "P");
|
|
171
168
|
if (o <= 0 || o - 1 >= r.length)
|
|
172
169
|
return console.warn("上一个 <p> 不存在"), B;
|
|
173
170
|
const a = r[o - 1];
|
|
@@ -188,14 +185,14 @@ class we extends ie {
|
|
|
188
185
|
document.removeEventListener("selectionchange", this._recordRange);
|
|
189
186
|
}
|
|
190
187
|
_recordRange(B) {
|
|
191
|
-
var
|
|
192
|
-
this.isRangeInEditor() && (this.range = (
|
|
188
|
+
var t;
|
|
189
|
+
this.isRangeInEditor() && (this.range = (t = window.getSelection()) == null ? void 0 : t.getRangeAt(0).cloneRange());
|
|
193
190
|
}
|
|
194
191
|
isRangeInEditor() {
|
|
195
192
|
const B = window.getSelection();
|
|
196
193
|
if (q(B) || !B.rangeCount) return !1;
|
|
197
|
-
const
|
|
198
|
-
return this._editorElement.contains(
|
|
194
|
+
const t = B.getRangeAt(0);
|
|
195
|
+
return this._editorElement.contains(t.commonAncestorContainer);
|
|
199
196
|
}
|
|
200
197
|
isCaret() {
|
|
201
198
|
var B;
|
|
@@ -210,10 +207,10 @@ class we extends ie {
|
|
|
210
207
|
return this.isCaret() ? "" : ((B = this.range) == null ? void 0 : B.toString()) ?? "";
|
|
211
208
|
}
|
|
212
209
|
toEnd(B) {
|
|
213
|
-
const
|
|
214
|
-
if (q(
|
|
210
|
+
const t = window.getSelection();
|
|
211
|
+
if (q(t)) return;
|
|
215
212
|
const o = document.createRange();
|
|
216
|
-
o.setStartAfter(B), o.setEndAfter(B),
|
|
213
|
+
o.setStartAfter(B), o.setEndAfter(B), t.removeAllRanges(), t.addRange(o);
|
|
217
214
|
}
|
|
218
215
|
getRangeTop() {
|
|
219
216
|
var B;
|
|
@@ -221,14 +218,14 @@ class we extends ie {
|
|
|
221
218
|
}
|
|
222
219
|
}
|
|
223
220
|
class he extends re {
|
|
224
|
-
constructor(B,
|
|
221
|
+
constructor(B, t, o) {
|
|
225
222
|
super();
|
|
226
223
|
IA(this, "_editor");
|
|
227
224
|
IA(this, "_onUndoChange");
|
|
228
225
|
IA(this, "contentManager");
|
|
229
226
|
IA(this, "undoStack");
|
|
230
227
|
IA(this, "redoStack");
|
|
231
|
-
this._editor = B, this.contentManager =
|
|
228
|
+
this._editor = B, this.contentManager = t, this.undoStack = [], this.redoStack = [], this._onUndoChange = o, this._handleInput = this._handleInput.bind(this), this._handleUndoOrRedo = this._handleUndoOrRedo.bind(this), this._editor.element.addEventListener("beforeinput", this._handleInput), this._editor.element.addEventListener("keydown", this._handleUndoOrRedo);
|
|
232
229
|
}
|
|
233
230
|
saveState() {
|
|
234
231
|
}
|
|
@@ -240,19 +237,19 @@ class he extends re {
|
|
|
240
237
|
this._editor.element.removeEventListener("beforeinput", this._handleInput), this._editor.element.removeEventListener("keydown", this._handleUndoOrRedo);
|
|
241
238
|
}
|
|
242
239
|
_calcNodePathMatches(B) {
|
|
243
|
-
const
|
|
240
|
+
const t = [];
|
|
244
241
|
let o = B;
|
|
245
242
|
for (; o && o.parentElement; ) {
|
|
246
243
|
const a = Array.from(o.parentElement.childNodes).indexOf(o);
|
|
247
|
-
if (
|
|
244
|
+
if (t.unshift({ index: a }), $(o) && o.tagName === "P" && o.classList.contains(NA))
|
|
248
245
|
break;
|
|
249
246
|
o = o.parentElement;
|
|
250
247
|
}
|
|
251
|
-
return
|
|
248
|
+
return t;
|
|
252
249
|
}
|
|
253
250
|
_record() {
|
|
254
251
|
var c;
|
|
255
|
-
const B = this._editor.cursor.range,
|
|
252
|
+
const B = this._editor.cursor.range, t = this._editor.content.getParas(), o = WA(B.startContainer), r = t.indexOf(o), a = this._calcNodePathMatches(B.startContainer), i = WA(B.endContainer), h = t.indexOf(i), d = this._calcNodePathMatches(B.endContainer);
|
|
256
253
|
return {
|
|
257
254
|
startParaIndex: r,
|
|
258
255
|
startMatchedIndexes: a,
|
|
@@ -270,26 +267,26 @@ class he extends re {
|
|
|
270
267
|
this.undoStack.push(this._record()), this.redoStack = [];
|
|
271
268
|
}
|
|
272
269
|
_handleUndoOrRedo(B) {
|
|
273
|
-
var
|
|
270
|
+
var t;
|
|
274
271
|
if (B.ctrlKey && B.key === "z" && (B.preventDefault(), this.undoStack.length > 0)) {
|
|
275
272
|
this.redoStack.push(this._record());
|
|
276
273
|
const o = this.undoStack.pop();
|
|
277
|
-
this._editor.content.calcTextCount() && requestAnimationFrame(() => this._restoreCursor(o)), this._editor.element.innerHTML = o.content, (
|
|
274
|
+
this._editor.content.calcTextCount() && requestAnimationFrame(() => this._restoreCursor(o)), this._editor.element.innerHTML = o.content, (t = this._onUndoChange) == null || t.call(this, o.anchorContent);
|
|
278
275
|
}
|
|
279
276
|
}
|
|
280
277
|
_restoreCursor(B) {
|
|
281
|
-
const
|
|
282
|
-
if (q(
|
|
278
|
+
const t = window.getSelection();
|
|
279
|
+
if (q(t)) return;
|
|
283
280
|
const o = (h) => {
|
|
284
|
-
let d = this._editor.content.getParas(), { index: c } = h[0],
|
|
281
|
+
let d = this._editor.content.getParas(), { index: c } = h[0], f = null, D = 0;
|
|
285
282
|
for (; D < h.length; ) {
|
|
286
|
-
if (
|
|
287
|
-
if (d = Array.from(
|
|
283
|
+
if (f = d[c], HA(f)) return f;
|
|
284
|
+
if (d = Array.from(f.childNodes), D++, D >= h.length) break;
|
|
288
285
|
c = h[D].index;
|
|
289
286
|
}
|
|
290
|
-
return
|
|
287
|
+
return f;
|
|
291
288
|
}, r = o(B.startMatchedIndexes), a = o(B.endMatchedIndexes), i = document.createRange();
|
|
292
|
-
i.setStart(r, B.startOffset), i.setEnd(a, B.endOffset),
|
|
289
|
+
i.setStart(r, B.startOffset), i.setEnd(a, B.endOffset), t.removeAllRanges(), t.addRange(i);
|
|
293
290
|
}
|
|
294
291
|
}
|
|
295
292
|
const mA = [];
|
|
@@ -314,15 +311,15 @@ function LB(I, E, B) {
|
|
|
314
311
|
if (cB.randomUUID && !I)
|
|
315
312
|
return cB.randomUUID();
|
|
316
313
|
I = I || {};
|
|
317
|
-
const
|
|
318
|
-
if (
|
|
314
|
+
const t = I.random ?? ((o = I.rng) == null ? void 0 : o.call(I)) ?? ye();
|
|
315
|
+
if (t.length < 16)
|
|
319
316
|
throw new Error("Random bytes length must be >= 16");
|
|
320
|
-
return
|
|
317
|
+
return t[6] = t[6] & 15 | 64, t[8] = t[8] & 63 | 128, De(t);
|
|
321
318
|
}
|
|
322
319
|
const yI = (I, E) => {
|
|
323
320
|
var r;
|
|
324
|
-
const B = window.getSelection(),
|
|
325
|
-
q(o) || q(B) || (
|
|
321
|
+
const B = window.getSelection(), t = document.createRange(), o = E.lastChild;
|
|
322
|
+
q(o) || q(B) || (t.setStartAfter(o), t.setEndAfter(o), B.removeAllRanges(), B.addRange(t), (r = I.plugin.pausation) == null || r.add({ delay: 1 }));
|
|
326
323
|
}, YI = (I, E) => {
|
|
327
324
|
const B = new InputEvent("beforeinput", {
|
|
328
325
|
bubbles: !0,
|
|
@@ -331,8 +328,8 @@ const yI = (I, E) => {
|
|
|
331
328
|
data: "Hello"
|
|
332
329
|
});
|
|
333
330
|
I.element.dispatchEvent(B);
|
|
334
|
-
const { range:
|
|
335
|
-
let i =
|
|
331
|
+
const { range: t } = I.cursor, o = E[0], r = E[E.length - 1], a = E.slice(1, -1);
|
|
332
|
+
let i = t;
|
|
336
333
|
if (!o || !i) return;
|
|
337
334
|
let h = null, d = 0, c = null;
|
|
338
335
|
if (I.cursor.isRange() && (h = i.startContainer, d = i.startOffset, c = i.endContainer, i.deleteContents()), E.length === 1) {
|
|
@@ -347,18 +344,18 @@ const yI = (I, E) => {
|
|
|
347
344
|
const K = window.getSelection(), W = document.createRange();
|
|
348
345
|
W.setStart(h, d), W.setEnd(h, d), K == null || K.removeAllRanges(), K == null || K.addRange(W);
|
|
349
346
|
}
|
|
350
|
-
i = I.cursor.isRangeInEditor() ? window.getSelection().getRangeAt(0) :
|
|
347
|
+
i = I.cursor.isRangeInEditor() ? window.getSelection().getRangeAt(0) : t, i = HA(i.commonAncestorContainer) && i.commonAncestorContainer.textContent === "粘贴文本" ? t : i;
|
|
351
348
|
const [D] = PA(
|
|
352
349
|
i.commonAncestorContainer,
|
|
353
|
-
(m) => m.tagName === "P" && m.classList.contains(
|
|
354
|
-
), [u] = PA(i.startContainer, (m) => m.tagName === "SPAN" && m.dataset.type ===
|
|
350
|
+
(m) => m.tagName === "P" && m.classList.contains(NA)
|
|
351
|
+
), [u] = PA(i.startContainer, (m) => m.tagName === "SPAN" && m.dataset.type === b.anchor), R = document.createRange(), F = !!u;
|
|
355
352
|
R.setStart(i.startContainer, i.startOffset), R.setEndAfter(D.lastChild);
|
|
356
353
|
const M = R.extractContents();
|
|
357
354
|
if (!(D != null && D.textContent))
|
|
358
355
|
D.innerHTML = o;
|
|
359
356
|
else if (HA(D.lastChild))
|
|
360
357
|
D.lastChild.textContent += o;
|
|
361
|
-
else if ($(D.lastChild) && D.lastChild.dataset.type ===
|
|
358
|
+
else if ($(D.lastChild) && D.lastChild.dataset.type === b.anchor) {
|
|
362
359
|
const { lastChild: m } = D.lastChild;
|
|
363
360
|
HA(m) ? m.textContent += o : m == null || m.appendChild(document.createTextNode(o));
|
|
364
361
|
} else
|
|
@@ -371,17 +368,17 @@ const yI = (I, E) => {
|
|
|
371
368
|
if (a.forEach((m) => {
|
|
372
369
|
var X;
|
|
373
370
|
const P = document.createElement("p");
|
|
374
|
-
if (P.classList.add(
|
|
371
|
+
if (P.classList.add(NA), P.textContent = m, (X = D == null ? void 0 : D.parentNode) == null || X.insertBefore(P, G), G = P.nextSibling, yI(I, P), F) {
|
|
375
372
|
const K = u.cloneNode(!1);
|
|
376
373
|
K.innerHTML = P.innerHTML, P.innerHTML = K.outerHTML;
|
|
377
374
|
}
|
|
378
375
|
}), !r) return;
|
|
379
376
|
const S = document.createElement("p");
|
|
380
|
-
if (S.classList.add(
|
|
377
|
+
if (S.classList.add(NA), S.appendChild(M), !S.textContent)
|
|
381
378
|
S.innerHTML = r;
|
|
382
379
|
else if (HA(S.firstChild))
|
|
383
380
|
S.firstChild.textContent = r + S.firstChild.textContent;
|
|
384
|
-
else if ($(S.firstChild) && S.firstChild.dataset.type ===
|
|
381
|
+
else if ($(S.firstChild) && S.firstChild.dataset.type === b.anchor) {
|
|
385
382
|
const { firstChild: m } = S.firstChild;
|
|
386
383
|
HA(m) ? m.textContent = r + m.textContent : m == null || m.insertBefore(document.createTextNode(r), m.firstChild);
|
|
387
384
|
} else
|
|
@@ -390,9 +387,9 @@ const yI = (I, E) => {
|
|
|
390
387
|
var P;
|
|
391
388
|
return !((P = S.textContent) != null && P.trim().endsWith(`停顿: ${m}S`));
|
|
392
389
|
}) && yI(I, S);
|
|
393
|
-
}, [Re] = ZA("paragraph"),
|
|
390
|
+
}, [Re] = ZA("paragraph"), NA = Re(), Fe = `<p class="${NA}"><br /></p>`;
|
|
394
391
|
class Ne extends oe {
|
|
395
|
-
constructor(B,
|
|
392
|
+
constructor(B, t) {
|
|
396
393
|
super();
|
|
397
394
|
IA(this, "_observer", null);
|
|
398
395
|
IA(this, "_onchange");
|
|
@@ -404,10 +401,10 @@ class Ne extends oe {
|
|
|
404
401
|
IA(this, "command");
|
|
405
402
|
IA(this, "maxLength");
|
|
406
403
|
IA(this, "plugin");
|
|
407
|
-
this._uid = LB(), this._editorElement = B, this.content = new de(B, this), this.cursor = new we(B), this.undo = new he(this, this.content,
|
|
404
|
+
this._uid = LB(), this._editorElement = B, this.content = new de(B, this), this.cursor = new we(B), this.undo = new he(this, this.content, t == null ? void 0 : t.onUndoChange), this.command = new se(this.content, this.cursor), this.maxLength = (t == null ? void 0 : t.maxLength) ?? 1e4, this.plugin = ((t == null ? void 0 : t.plugins) ?? []).reduce((o, r) => {
|
|
408
405
|
const a = new r(this), i = a.prefix;
|
|
409
406
|
return o[i] = a, o;
|
|
410
|
-
}, {}), this._onchange =
|
|
407
|
+
}, {}), this._onchange = t == null ? void 0 : t.onChange, this._handleBackspace = this._handleBackspace.bind(this), this._handlePaste = this._handlePaste.bind(this), this._handleBeforeInput = this._handleBeforeInput.bind(this), this._handleCompositionEnd = this._handleCompositionEnd.bind(this), this._setup();
|
|
411
408
|
}
|
|
412
409
|
destroy() {
|
|
413
410
|
this._teardown();
|
|
@@ -419,17 +416,17 @@ class Ne extends oe {
|
|
|
419
416
|
return this._editorElement.getBoundingClientRect().left;
|
|
420
417
|
}
|
|
421
418
|
appendContent(B) {
|
|
422
|
-
this.content.appendContent(B, (
|
|
419
|
+
this.content.appendContent(B, (t) => yI(this, t));
|
|
423
420
|
}
|
|
424
421
|
get element() {
|
|
425
422
|
return this._editorElement;
|
|
426
423
|
}
|
|
427
424
|
_setup() {
|
|
428
425
|
this._observer = new MutationObserver(([B]) => {
|
|
429
|
-
var
|
|
426
|
+
var t;
|
|
430
427
|
if (B.removedNodes.length) {
|
|
431
428
|
const o = B.removedNodes[0];
|
|
432
|
-
if ($(o) && o.dataset.type ===
|
|
429
|
+
if ($(o) && o.dataset.type === b.highlight) {
|
|
433
430
|
const r = window.getSelection(), { range: a } = this.cursor;
|
|
434
431
|
if (q(a) || q(r)) return;
|
|
435
432
|
const i = document.createTextNode(""), h = document.createRange();
|
|
@@ -437,8 +434,8 @@ class Ne extends oe {
|
|
|
437
434
|
}
|
|
438
435
|
}
|
|
439
436
|
B.addedNodes.forEach((o) => {
|
|
440
|
-
$(o) && o.tagName === "P" && !o.classList.contains(
|
|
441
|
-
}), B.removedNodes.length && !this.content.getParas().length && this.content.insertEmptyPara(), (
|
|
437
|
+
$(o) && o.tagName === "P" && !o.classList.contains(NA) && o.classList.add(NA);
|
|
438
|
+
}), B.removedNodes.length && !this.content.getParas().length && this.content.insertEmptyPara(), (t = this._onchange) == null || t.call(this, this.content.calcTextCount()), Array.from(document.querySelectorAll("p")).forEach((o) => {
|
|
442
439
|
Array.from(o.style).includes("text-indent") && o.removeAttribute("style"), Array.from(o.childNodes).forEach((a) => {
|
|
443
440
|
var i;
|
|
444
441
|
if ($(a) && a.tagName === "FONT" && $(a.firstChild) && ((i = a.firstChild) == null ? void 0 : i.tagName) === "SPAN") {
|
|
@@ -450,7 +447,7 @@ class Ne extends oe {
|
|
|
450
447
|
var D;
|
|
451
448
|
const r = o.parentNode, a = o.firstChild;
|
|
452
449
|
if (o && o.getAttribute("data-placeholder") !== null) return;
|
|
453
|
-
const h = o && o.style.textIndent === "20px" && o.style.fontSize && o.style.color, d = o && o.style.backgroundColor && ((D = o.parentElement) == null ? void 0 : D.style.textIndent) === "0px", c = o && Array.from(o.childNodes).every((u) => HA(u) && !u.textContent || $(u) && u.tagName === "BR"),
|
|
450
|
+
const h = o && o.style.textIndent === "20px" && o.style.fontSize && o.style.color, d = o && o.style.backgroundColor && ((D = o.parentElement) == null ? void 0 : D.style.textIndent) === "0px", c = o && Array.from(o.childNodes).every((u) => HA(u) && !u.textContent || $(u) && u.tagName === "BR"), f = o && $(o.firstChild) && o.firstChild.tagName === "BR";
|
|
454
451
|
if (h || d) {
|
|
455
452
|
for (; o.firstChild; )
|
|
456
453
|
r == null || r.insertBefore(o.firstChild, o);
|
|
@@ -461,7 +458,7 @@ class Ne extends oe {
|
|
|
461
458
|
const u = window.getSelection(), F = (u == null ? void 0 : u.getRangeAt(0)).cloneRange();
|
|
462
459
|
F.setStartAfter(F.startContainer), F.setEndAfter(F.endContainer), u == null || u.removeAllRanges(), u == null || u.addRange(F);
|
|
463
460
|
}
|
|
464
|
-
|
|
461
|
+
f && o.removeChild(o.firstChild);
|
|
465
462
|
}), this.content.getParas().forEach((o) => {
|
|
466
463
|
const r = o.firstChild, a = o.lastChild;
|
|
467
464
|
o.childNodes.length > 1 && ($(a) && a.tagName === "BR" && a.remove(), $(r) && r.tagName === "BR" && r.remove(), Array.from(o.childNodes).forEach((i) => {
|
|
@@ -476,42 +473,42 @@ class Ne extends oe {
|
|
|
476
473
|
}
|
|
477
474
|
_teardown() {
|
|
478
475
|
var B;
|
|
479
|
-
(B = this._observer) == null || B.disconnect(), this._observer = null, this.cursor.destroy(), this.undo.destroy(), this._editorElement.removeEventListener("keydown", this._handleBackspace), this._editorElement.removeEventListener("paste", this._handlePaste), this._editorElement.removeEventListener("beforeinput", this._handleBeforeInput), this._editorElement.removeEventListener("compositionend", this._handleCompositionEnd), Object.values(this.plugin).forEach((
|
|
476
|
+
(B = this._observer) == null || B.disconnect(), this._observer = null, this.cursor.destroy(), this.undo.destroy(), this._editorElement.removeEventListener("keydown", this._handleBackspace), this._editorElement.removeEventListener("paste", this._handlePaste), this._editorElement.removeEventListener("beforeinput", this._handleBeforeInput), this._editorElement.removeEventListener("compositionend", this._handleCompositionEnd), Object.values(this.plugin).forEach((t) => t.destroy());
|
|
480
477
|
}
|
|
481
478
|
// TODO 待优化删除逻辑(太多重复range操作, 抽象API至 contentManger 类)
|
|
482
479
|
_handleBackspace(B) {
|
|
483
480
|
var r, a, i, h, d;
|
|
484
|
-
const
|
|
481
|
+
const t = window.getSelection(), o = t.getRangeAt(0);
|
|
485
482
|
if (B.key === "Backspace" && o.startOffset === 0 && o.collapsed) {
|
|
486
|
-
const [c] = PA(o.startContainer, (D) => D.tagName === "P" && D.classList.contains(
|
|
487
|
-
if (
|
|
483
|
+
const [c] = PA(o.startContainer, (D) => D.tagName === "P" && D.classList.contains(NA)), f = c == null ? void 0 : c.previousElementSibling;
|
|
484
|
+
if (f) {
|
|
488
485
|
B.preventDefault();
|
|
489
|
-
const D =
|
|
486
|
+
const D = f.childNodes, u = f.childNodes[0];
|
|
490
487
|
if (
|
|
491
488
|
// 一个节点
|
|
492
489
|
D.length === 1 && // 空文本节点
|
|
493
490
|
(HA(u) && u.textContent === "" || // 换行元素节点
|
|
494
491
|
$(u) && u.tagName === "BR")
|
|
495
492
|
) {
|
|
496
|
-
|
|
493
|
+
f.remove();
|
|
497
494
|
const R = document.createRange();
|
|
498
|
-
R.setStart(c.firstChild, 0), R.collapse(!0),
|
|
495
|
+
R.setStart(c.firstChild, 0), R.collapse(!0), t.removeAllRanges(), t.addRange(R);
|
|
499
496
|
} else {
|
|
500
497
|
const R = document.createRange();
|
|
501
|
-
R.selectNodeContents(
|
|
498
|
+
R.selectNodeContents(f), R.collapse(!1), t.removeAllRanges(), t.addRange(R);
|
|
502
499
|
const F = document.createDocumentFragment(), M = c.firstChild;
|
|
503
500
|
for (; c.firstChild; )
|
|
504
501
|
F.appendChild(c.firstChild);
|
|
505
502
|
R.insertNode(F), c.remove();
|
|
506
503
|
const G = document.createRange();
|
|
507
|
-
G.setStartBefore(M), G.setEndBefore(M),
|
|
504
|
+
G.setStartBefore(M), G.setEndBefore(M), t.removeAllRanges(), t.addRange(G);
|
|
508
505
|
}
|
|
509
506
|
}
|
|
510
507
|
}
|
|
511
508
|
if (B.key === "Delete" && Ge()) {
|
|
512
|
-
const c = getSelection(),
|
|
513
|
-
if (q(c) || q(
|
|
514
|
-
const D = WA(
|
|
509
|
+
const c = getSelection(), f = (r = getSelection()) == null ? void 0 : r.getRangeAt(0);
|
|
510
|
+
if (q(c) || q(f)) return;
|
|
511
|
+
const D = WA(f.endContainer), u = D == null ? void 0 : D.nextElementSibling;
|
|
515
512
|
if (q(D) || q(u)) return;
|
|
516
513
|
const R = document.createRange();
|
|
517
514
|
for (R.selectNodeContents(D), R.collapse(!1); u.firstChild; )
|
|
@@ -521,11 +518,11 @@ class Ne extends oe {
|
|
|
521
518
|
if (B.key === "Enter") {
|
|
522
519
|
const { range: c } = this.cursor;
|
|
523
520
|
if (ge(c)) return;
|
|
524
|
-
const [
|
|
525
|
-
if (c != null && c.collapsed && c.startOffset === 0 &&
|
|
521
|
+
const [f] = PA(c == null ? void 0 : c.commonAncestorContainer, (D) => D.tagName === "SPAN" && D.dataset.type === b.anchor);
|
|
522
|
+
if (c != null && c.collapsed && c.startOffset === 0 && f) {
|
|
526
523
|
B.preventDefault();
|
|
527
524
|
const D = document.createElement("p");
|
|
528
|
-
D.innerHTML = "<br />", this._editorElement.insertBefore(D,
|
|
525
|
+
D.innerHTML = "<br />", this._editorElement.insertBefore(D, f.parentElement);
|
|
529
526
|
}
|
|
530
527
|
if (c && B.shiftKey) {
|
|
531
528
|
const D = WA(c.startContainer);
|
|
@@ -534,38 +531,38 @@ class Ne extends oe {
|
|
|
534
531
|
const u = document.createElement("p");
|
|
535
532
|
u.innerHTML = "<br />", D == null || D.appendChild(u);
|
|
536
533
|
const R = document.createRange();
|
|
537
|
-
R.setStart(u.firstChild || u, 0), R.collapse(!0),
|
|
534
|
+
R.setStart(u.firstChild || u, 0), R.collapse(!0), t.removeAllRanges(), t.addRange(R);
|
|
538
535
|
} else if (c.startOffset === 0) {
|
|
539
536
|
B.preventDefault();
|
|
540
537
|
const u = document.createElement("p");
|
|
541
|
-
u.classList.add(
|
|
538
|
+
u.classList.add(NA), u.innerHTML = "<br />", (h = D == null ? void 0 : D.textContent) != null && h.length ? D == null || D.before(u) : D == null || D.after(u);
|
|
542
539
|
const R = document.createRange();
|
|
543
|
-
R.setStart(u.firstChild || u, 0), R.collapse(!0),
|
|
540
|
+
R.setStart(u.firstChild || u, 0), R.collapse(!0), t.removeAllRanges(), t.addRange(R);
|
|
544
541
|
} else {
|
|
545
542
|
B.preventDefault();
|
|
546
543
|
const u = document.createElement("p");
|
|
547
|
-
u.classList.add(
|
|
544
|
+
u.classList.add(NA);
|
|
548
545
|
const R = document.createRange();
|
|
549
546
|
R.setStart(c.startContainer, c.startOffset), R.setEndAfter(D.lastChild);
|
|
550
547
|
const F = R.extractContents();
|
|
551
548
|
u.appendChild(F), u.textContent || (u.innerHTML = "<br />"), (d = D == null ? void 0 : D.parentNode) == null || d.insertBefore(u, D.nextSibling);
|
|
552
549
|
const M = document.createRange();
|
|
553
|
-
M.setStart(u.firstChild || u, 0), M.collapse(!0),
|
|
550
|
+
M.setStart(u.firstChild || u, 0), M.collapse(!0), t.removeAllRanges(), t.addRange(M);
|
|
554
551
|
}
|
|
555
552
|
}
|
|
556
553
|
}
|
|
557
554
|
if (o.startOffset === 0 && o.endContainer.tagName === "P" && WA(o.startContainer) === WA(o.endContainer)) {
|
|
558
555
|
const c = WA(o.endContainer);
|
|
559
556
|
if (q(c)) return;
|
|
560
|
-
B.key === "Backspace" && Se(c,
|
|
557
|
+
B.key === "Backspace" && Se(c, t);
|
|
561
558
|
}
|
|
562
559
|
}
|
|
563
560
|
// 粘贴事件处理函数
|
|
564
561
|
_handlePaste(B) {
|
|
565
562
|
var o, r;
|
|
566
563
|
B.preventDefault(), ke(this._editorElement);
|
|
567
|
-
const
|
|
568
|
-
YI(this, JI(this,
|
|
564
|
+
const t = ((r = (o = B.clipboardData) == null ? void 0 : o.getData("text/plain")) == null ? void 0 : r.split(/(?:\r?\n){2,}/).map((a) => a.trim()).filter((a) => a)) ?? [];
|
|
565
|
+
YI(this, JI(this, t));
|
|
569
566
|
}
|
|
570
567
|
_handleBeforeInput(B) {
|
|
571
568
|
le(this, B);
|
|
@@ -574,69 +571,69 @@ class Ne extends oe {
|
|
|
574
571
|
ce(this, B);
|
|
575
572
|
}
|
|
576
573
|
}
|
|
577
|
-
const Kg = (I, E, B,
|
|
574
|
+
const Kg = (I, E, B, t) => {
|
|
578
575
|
if (Object.keys(E).forEach((o) => {
|
|
579
576
|
I.setAttribute(o, String(E[o]));
|
|
580
577
|
}), Object.keys(B).forEach((o) => {
|
|
581
578
|
I.dataset[o] = String(B[o]);
|
|
582
|
-
}), !q(
|
|
583
|
-
if (GB(
|
|
579
|
+
}), !q(t))
|
|
580
|
+
if (GB(t)) {
|
|
584
581
|
const o = document.createDocumentFragment(), r = document.createElement("div");
|
|
585
|
-
for (r.innerHTML =
|
|
582
|
+
for (r.innerHTML = t; r.firstChild; )
|
|
586
583
|
o.appendChild(r.firstChild);
|
|
587
584
|
I.appendChild(o);
|
|
588
585
|
} else
|
|
589
|
-
I.appendChild(
|
|
586
|
+
I.appendChild(t);
|
|
590
587
|
}, PA = (I, E) => {
|
|
591
588
|
const B = kB(E) ? E : [E];
|
|
592
|
-
let
|
|
593
|
-
for (;
|
|
594
|
-
const o =
|
|
589
|
+
let t = I;
|
|
590
|
+
for (; t; ) {
|
|
591
|
+
const o = t, r = B.map((a) => a(o)).map((a) => a ? o : null);
|
|
595
592
|
if (r.some((a) => a)) return r;
|
|
596
|
-
|
|
593
|
+
t = t.parentElement;
|
|
597
594
|
}
|
|
598
595
|
return new Array(B.length).fill(null);
|
|
599
596
|
}, WA = (I) => {
|
|
600
597
|
const [E] = PA(
|
|
601
598
|
I,
|
|
602
|
-
(B) => B.tagName === "P" && B.classList.contains(
|
|
599
|
+
(B) => B.tagName === "P" && B.classList.contains(NA)
|
|
603
600
|
);
|
|
604
601
|
return E;
|
|
605
602
|
}, hC = (I, E) => {
|
|
606
603
|
if (I === E) return [];
|
|
607
604
|
const B = [];
|
|
608
|
-
let
|
|
609
|
-
for (;
|
|
610
|
-
B.push(
|
|
605
|
+
let t = I.nextElementSibling;
|
|
606
|
+
for (; t && t !== E; )
|
|
607
|
+
B.push(t), t = t.nextElementSibling;
|
|
611
608
|
return B;
|
|
612
609
|
}, SC = (I) => {
|
|
613
610
|
const E = document.createElement("div");
|
|
614
611
|
return E.setAttribute("class", `editor-${I}-tag-modal`), E;
|
|
615
612
|
}, lg = (I, E, B) => {
|
|
616
613
|
var a, i, h;
|
|
617
|
-
const
|
|
614
|
+
const t = I.previousSibling, o = I.nextSibling, r = E ?? I.textContent ?? "";
|
|
618
615
|
if (B && // 空节点
|
|
619
|
-
(!
|
|
620
|
-
$(
|
|
621
|
-
$(
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
].includes(
|
|
627
|
-
$(I) && I.dataset.type !==
|
|
616
|
+
(!t && !o || // 相邻停顿节点
|
|
617
|
+
$(t) && t.dataset.type === b.pausation || // 相邻功能节点
|
|
618
|
+
$(t) && [
|
|
619
|
+
b.anchor,
|
|
620
|
+
b.homophones,
|
|
621
|
+
b.pausation,
|
|
622
|
+
b.pronunciation
|
|
623
|
+
].includes(t.dataset.type))) {
|
|
624
|
+
$(I) && I.dataset.type !== b.pausation ? I.replaceWith(I.dataset.raw ?? "") : (a = I.parentNode) == null || a.removeChild(I);
|
|
628
625
|
return;
|
|
629
626
|
}
|
|
630
|
-
if (HA(
|
|
631
|
-
|
|
627
|
+
if (HA(t)) {
|
|
628
|
+
t.textContent += r, (i = I.parentNode) == null || i.removeChild(I), lg(t, t.textContent, !1);
|
|
632
629
|
return;
|
|
633
630
|
}
|
|
634
631
|
HA(o) && (o.textContent = r + o.textContent, (h = I.parentNode) == null || h.removeChild(I), lg(o, o.textContent, !1));
|
|
635
632
|
}, IC = (I, E) => {
|
|
636
|
-
const B = I.length,
|
|
633
|
+
const B = I.length, t = E.length, o = new Array(t).fill(0);
|
|
637
634
|
let r = o[0], a = 0, i = 0;
|
|
638
635
|
for (let h = 1; h <= B; h++) {
|
|
639
|
-
for (let d = 1; d <=
|
|
636
|
+
for (let d = 1; d <= t; d++) {
|
|
640
637
|
const c = o[d];
|
|
641
638
|
I[h - 1] === E[d - 1] ? (o[d] = r + 1, o[d] > a && (a = Math.max(a, o[d]), i = d - 1)) : o[d] = 0, r = c;
|
|
642
639
|
}
|
|
@@ -651,20 +648,20 @@ const Kg = (I, E, B, e) => {
|
|
|
651
648
|
for (; B && B.nodeName !== "P"; )
|
|
652
649
|
B = B.parentNode;
|
|
653
650
|
if (!B) return !1;
|
|
654
|
-
const
|
|
655
|
-
return
|
|
651
|
+
const t = E.cloneRange();
|
|
652
|
+
return t.setEndAfter(B), t.toString().length === 0;
|
|
656
653
|
}, ke = (I) => {
|
|
657
654
|
const E = window.getSelection();
|
|
658
655
|
if (!E.rangeCount) return;
|
|
659
656
|
const B = Array.from(I.querySelectorAll("p"));
|
|
660
657
|
if (B.length === 0) return;
|
|
661
|
-
let
|
|
658
|
+
let t = !1;
|
|
662
659
|
for (const o of B)
|
|
663
660
|
if (o.contains(E.anchorNode)) {
|
|
664
|
-
|
|
661
|
+
t = !0;
|
|
665
662
|
break;
|
|
666
663
|
}
|
|
667
|
-
if (!
|
|
664
|
+
if (!t) {
|
|
668
665
|
const o = document.createRange(), r = B[B.length - 1];
|
|
669
666
|
o.selectNodeContents(r), o.collapse(!1), E.removeAllRanges(), E.addRange(o);
|
|
670
667
|
}
|
|
@@ -676,7 +673,7 @@ const Kg = (I, E, B, e) => {
|
|
|
676
673
|
B.selectNodeContents(I), B.collapse(!1), E.removeAllRanges(), E.addRange(B);
|
|
677
674
|
}, UB = (I, E, B = 0) => {
|
|
678
675
|
if (!I || !E) return { top: 0, left: 0, width: 0, height: 0 };
|
|
679
|
-
const
|
|
676
|
+
const t = I, o = E, r = o.bottom - t.top + B, a = o.left - t.left;
|
|
680
677
|
return { top: r, left: a, width: o.width, height: o.height };
|
|
681
678
|
}, Le = (I) => {
|
|
682
679
|
const E = Array.from(
|
|
@@ -697,8 +694,8 @@ function pe(I) {
|
|
|
697
694
|
return E || (E = I()), E;
|
|
698
695
|
}
|
|
699
696
|
return B.reset = async () => {
|
|
700
|
-
const
|
|
701
|
-
E = void 0,
|
|
697
|
+
const t = E;
|
|
698
|
+
E = void 0, t && await t;
|
|
702
699
|
}, B;
|
|
703
700
|
}
|
|
704
701
|
function lB(I) {
|
|
@@ -706,7 +703,7 @@ function lB(I) {
|
|
|
706
703
|
}
|
|
707
704
|
function Je(I, E, B = {}) {
|
|
708
705
|
const {
|
|
709
|
-
immediate:
|
|
706
|
+
immediate: t = !0
|
|
710
707
|
} = B, o = yA(!1);
|
|
711
708
|
let r = null;
|
|
712
709
|
function a() {
|
|
@@ -720,7 +717,7 @@ function Je(I, E, B = {}) {
|
|
|
720
717
|
o.value = !1, r = null, I(...d);
|
|
721
718
|
}, Jg(E));
|
|
722
719
|
}
|
|
723
|
-
return
|
|
720
|
+
return t && (o.value = !0, LC && h()), MB(i), {
|
|
724
721
|
isPending: WE(o),
|
|
725
722
|
start: h,
|
|
726
723
|
stop: i
|
|
@@ -729,14 +726,14 @@ function Je(I, E, B = {}) {
|
|
|
729
726
|
function fI(I = !1, E = {}) {
|
|
730
727
|
const {
|
|
731
728
|
truthyValue: B = !0,
|
|
732
|
-
falsyValue:
|
|
729
|
+
falsyValue: t = !1
|
|
733
730
|
} = E, o = jE(I), r = yA(I);
|
|
734
731
|
function a(i) {
|
|
735
732
|
if (arguments.length)
|
|
736
733
|
return r.value = i, r.value;
|
|
737
734
|
{
|
|
738
735
|
const h = Jg(B);
|
|
739
|
-
return r.value = r.value === h ? Jg(
|
|
736
|
+
return r.value = r.value === h ? Jg(t) : h, r.value;
|
|
740
737
|
}
|
|
741
738
|
}
|
|
742
739
|
return o ? a : [r, a];
|
|
@@ -748,20 +745,20 @@ function Ye(I) {
|
|
|
748
745
|
return (E = B == null ? void 0 : B.$el) != null ? E : B;
|
|
749
746
|
}
|
|
750
747
|
function Ug(...I) {
|
|
751
|
-
let E, B,
|
|
752
|
-
if (typeof I[0] == "string" || Array.isArray(I[0]) ? ([B,
|
|
748
|
+
let E, B, t, o;
|
|
749
|
+
if (typeof I[0] == "string" || Array.isArray(I[0]) ? ([B, t, o] = I, E = pB) : [E, B, t, o] = I, !E)
|
|
753
750
|
return DC;
|
|
754
|
-
B = lB(B),
|
|
751
|
+
B = lB(B), t = lB(t);
|
|
755
752
|
const r = [], a = () => {
|
|
756
753
|
r.forEach((c) => c()), r.length = 0;
|
|
757
|
-
}, i = (c,
|
|
754
|
+
}, i = (c, f, D, u) => (c.addEventListener(f, D, u), () => c.removeEventListener(f, D, u)), h = gI(
|
|
758
755
|
() => [Ye(E), Jg(o)],
|
|
759
|
-
([c,
|
|
756
|
+
([c, f]) => {
|
|
760
757
|
if (a(), !c)
|
|
761
758
|
return;
|
|
762
|
-
const D = Me(
|
|
759
|
+
const D = Me(f) ? { ...f } : f;
|
|
763
760
|
r.push(
|
|
764
|
-
...B.flatMap((u) =>
|
|
761
|
+
...B.flatMap((u) => t.map((R) => i(c, u, R, D)))
|
|
765
762
|
);
|
|
766
763
|
},
|
|
767
764
|
{ immediate: !0, flush: "post" }
|
|
@@ -783,17 +780,17 @@ function YB(I) {
|
|
|
783
780
|
function dB(I, E = {}) {
|
|
784
781
|
const {
|
|
785
782
|
controls: B = !1,
|
|
786
|
-
navigator:
|
|
787
|
-
} = E, o = YB(() =>
|
|
788
|
-
var c,
|
|
789
|
-
i.value = (
|
|
783
|
+
navigator: t = JB
|
|
784
|
+
} = E, o = YB(() => t && "permissions" in t), r = rB(), a = typeof I == "string" ? { name: I } : I, i = rB(), h = () => {
|
|
785
|
+
var c, f;
|
|
786
|
+
i.value = (f = (c = r.value) == null ? void 0 : c.state) != null ? f : "prompt";
|
|
790
787
|
};
|
|
791
788
|
Ug(r, "change", h, { passive: !0 });
|
|
792
789
|
const d = pe(async () => {
|
|
793
790
|
if (o.value) {
|
|
794
791
|
if (!r.value)
|
|
795
792
|
try {
|
|
796
|
-
r.value = await
|
|
793
|
+
r.value = await t.permissions.query(a);
|
|
797
794
|
} catch {
|
|
798
795
|
r.value = void 0;
|
|
799
796
|
} finally {
|
|
@@ -813,18 +810,18 @@ function me(I = {}) {
|
|
|
813
810
|
const {
|
|
814
811
|
navigator: E = JB,
|
|
815
812
|
read: B = !1,
|
|
816
|
-
source:
|
|
813
|
+
source: t,
|
|
817
814
|
copiedDuring: o = 1500,
|
|
818
815
|
legacy: r = !1
|
|
819
|
-
} = I, a = YB(() => E && "clipboard" in E), i = dB("clipboard-read"), h = dB("clipboard-write"), d = MA(() => a.value || r), c = yA(""),
|
|
816
|
+
} = I, a = YB(() => E && "clipboard" in E), i = dB("clipboard-read"), h = dB("clipboard-write"), d = MA(() => a.value || r), c = yA(""), f = yA(!1), D = Je(() => f.value = !1, o, { immediate: !1 });
|
|
820
817
|
function u() {
|
|
821
818
|
a.value && G(i.value) ? E.clipboard.readText().then((S) => {
|
|
822
819
|
c.value = S;
|
|
823
820
|
}) : c.value = M();
|
|
824
821
|
}
|
|
825
822
|
d.value && B && Ug(["copy", "cut"], u, { passive: !0 });
|
|
826
|
-
async function R(S = Jg(
|
|
827
|
-
d.value && S != null && (a.value && G(h.value) ? await E.clipboard.writeText(S) : F(S), c.value = S,
|
|
823
|
+
async function R(S = Jg(t)) {
|
|
824
|
+
d.value && S != null && (a.value && G(h.value) ? await E.clipboard.writeText(S) : F(S), c.value = S, f.value = !0, D.start());
|
|
828
825
|
}
|
|
829
826
|
function F(S) {
|
|
830
827
|
const p = document.createElement("textarea");
|
|
@@ -840,7 +837,7 @@ function me(I = {}) {
|
|
|
840
837
|
return {
|
|
841
838
|
isSupported: d,
|
|
842
839
|
text: c,
|
|
843
|
-
copied:
|
|
840
|
+
copied: f,
|
|
844
841
|
copy: R
|
|
845
842
|
};
|
|
846
843
|
}
|
|
@@ -854,17 +851,17 @@ function HI(I = {}) {
|
|
|
854
851
|
const {
|
|
855
852
|
type: E = "page",
|
|
856
853
|
touch: B = !0,
|
|
857
|
-
resetOnTouchEnds:
|
|
854
|
+
resetOnTouchEnds: t = !1,
|
|
858
855
|
initialValue: o = { x: 0, y: 0 },
|
|
859
856
|
window: r = pB,
|
|
860
857
|
target: a = r,
|
|
861
858
|
scroll: i = !0,
|
|
862
859
|
eventFilter: h
|
|
863
860
|
} = I;
|
|
864
|
-
let d = null, c = 0,
|
|
861
|
+
let d = null, c = 0, f = 0;
|
|
865
862
|
const D = yA(o.x), u = yA(o.y), R = yA(null), F = typeof E == "function" ? E : Ke[E], M = (K) => {
|
|
866
863
|
const W = F(K);
|
|
867
|
-
d = K, W && ([D.value, u.value] = W, R.value = "mouse"), r && (c = r.scrollX,
|
|
864
|
+
d = K, W && ([D.value, u.value] = W, R.value = "mouse"), r && (c = r.scrollX, f = r.scrollY);
|
|
868
865
|
}, G = (K) => {
|
|
869
866
|
if (K.touches.length > 0) {
|
|
870
867
|
const W = F(K.touches[0]);
|
|
@@ -874,13 +871,13 @@ function HI(I = {}) {
|
|
|
874
871
|
if (!d || !r)
|
|
875
872
|
return;
|
|
876
873
|
const K = F(d);
|
|
877
|
-
d instanceof MouseEvent && K && (D.value = K[0] + r.scrollX - c, u.value = K[1] + r.scrollY -
|
|
874
|
+
d instanceof MouseEvent && K && (D.value = K[0] + r.scrollX - c, u.value = K[1] + r.scrollY - f);
|
|
878
875
|
}, p = () => {
|
|
879
876
|
D.value = o.x, u.value = o.y;
|
|
880
877
|
}, m = h ? (K) => h(() => M(K), {}) : (K) => M(K), P = h ? (K) => h(() => G(K), {}) : (K) => G(K), X = h ? () => h(() => S(), {}) : () => S();
|
|
881
878
|
if (a) {
|
|
882
879
|
const K = { passive: !0 };
|
|
883
|
-
Ug(a, ["mousemove", "dragover"], m, K), B && E !== "movement" && (Ug(a, ["touchstart", "touchmove"], P, K),
|
|
880
|
+
Ug(a, ["mousemove", "dragover"], m, K), B && E !== "movement" && (Ug(a, ["touchstart", "touchmove"], P, K), t && Ug(a, "touchend", p, K)), i && E === "page" && Ug(r, "scroll", X, K);
|
|
884
881
|
}
|
|
885
882
|
return {
|
|
886
883
|
x: D,
|
|
@@ -895,7 +892,7 @@ const ve = ["onClick"], qe = /* @__PURE__ */ vA({
|
|
|
895
892
|
},
|
|
896
893
|
emits: ["ok"],
|
|
897
894
|
setup(I, { emit: E }) {
|
|
898
|
-
const B = I,
|
|
895
|
+
const B = I, t = E, [o] = ZA("pausation-tag-selector"), r = [
|
|
899
896
|
{ label: "0.5S", value: 0.5 },
|
|
900
897
|
{ label: "1S", value: 1 },
|
|
901
898
|
{ label: "1.5S", value: 1.5 },
|
|
@@ -911,7 +908,7 @@ const ve = ["onClick"], qe = /* @__PURE__ */ vA({
|
|
|
911
908
|
(aA(), cA(cg, null, fB(r, (h, d) => iA("li", {
|
|
912
909
|
key: d,
|
|
913
910
|
class: pA(uA(o)("item")),
|
|
914
|
-
onClick: (c) =>
|
|
911
|
+
onClick: (c) => t("ok", c, h.value)
|
|
915
912
|
}, AI(h.label), 11, ve)), 64))
|
|
916
913
|
], 2)), [
|
|
917
914
|
[LI, B.visible]
|
|
@@ -919,10 +916,10 @@ const ve = ["onClick"], qe = /* @__PURE__ */ vA({
|
|
|
919
916
|
}
|
|
920
917
|
}), JA = (I, E) => {
|
|
921
918
|
const B = I.__vccOpts || I;
|
|
922
|
-
for (const [
|
|
923
|
-
B[
|
|
919
|
+
for (const [t, o] of E)
|
|
920
|
+
B[t] = o;
|
|
924
921
|
return B;
|
|
925
|
-
}, HB = /* @__PURE__ */ JA(qe, [["__scopeId", "data-v-a957cba2"]]), xe = 0, Mg =
|
|
922
|
+
}, HB = /* @__PURE__ */ JA(qe, [["__scopeId", "data-v-a957cba2"]]), xe = 0, Mg = b.pausation, [uC] = II(Mg), mB = uC("close"), { x: be, y: Te } = HI(), Pe = `<svg class="${mB}" width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
926
923
|
<g id="V1.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
927
924
|
<g id="虚拟精品录音间-插入停顿" transform="translate(-1287, -152)" fill="currentColor" fill-rule="nonzero">
|
|
928
925
|
<g id="编组-4备份-4" transform="translate(1227, 149)">
|
|
@@ -949,17 +946,17 @@ const ve = ["onClick"], qe = /* @__PURE__ */ vA({
|
|
|
949
946
|
`
|
|
950
947
|
), E;
|
|
951
948
|
}, We = (I, E) => {
|
|
952
|
-
const B = SC(
|
|
953
|
-
|
|
949
|
+
const B = SC(b.pausation), { onOK: t } = E, o = (d, c) => {
|
|
950
|
+
t == null || t(d, c), r();
|
|
954
951
|
}, r = () => {
|
|
955
952
|
h.component && (h.component.props.visible = !1);
|
|
956
953
|
}, a = (d) => {
|
|
957
|
-
var c,
|
|
954
|
+
var c, f;
|
|
958
955
|
if (h.component) {
|
|
959
956
|
let D = Te.value, u = be.value;
|
|
960
957
|
if (d.popupContainer) {
|
|
961
958
|
const { offsetTop: R, offsetLeft: F, offsetHeight: M, offsetWidth: G } = d.popupContainer;
|
|
962
|
-
D = R + M + 5 + (((c = d.extraPos) == null ? void 0 : c.top) ?? 0), u = F - (88 - G) / 2 + (((
|
|
959
|
+
D = R + M + 5 + (((c = d.extraPos) == null ? void 0 : c.top) ?? 0), u = F - (88 - G) / 2 + (((f = d.extraPos) == null ? void 0 : f.left) ?? 0);
|
|
963
960
|
}
|
|
964
961
|
B.setAttribute("style", `top: ${D}px; left: ${u}px`), Object.entries(d).forEach(([R, F]) => {
|
|
965
962
|
h.component.props[R] = F;
|
|
@@ -1002,8 +999,8 @@ class Ve extends pI {
|
|
|
1002
999
|
Yg.warning("请输入文稿内容再插入停顿!");
|
|
1003
1000
|
return;
|
|
1004
1001
|
}
|
|
1005
|
-
const
|
|
1006
|
-
this.editor.content.insert(
|
|
1002
|
+
const t = je(B);
|
|
1003
|
+
this.editor.content.insert(t);
|
|
1007
1004
|
}
|
|
1008
1005
|
/**
|
|
1009
1006
|
* 停顿标签点击事件回调
|
|
@@ -1011,11 +1008,11 @@ class Ve extends pI {
|
|
|
1011
1008
|
*/
|
|
1012
1009
|
_triggerPausationTagClick(B) {
|
|
1013
1010
|
var a;
|
|
1014
|
-
const
|
|
1015
|
-
|
|
1011
|
+
const t = B.target, [o] = PA(
|
|
1012
|
+
t,
|
|
1016
1013
|
(i) => i.tagName === "svg" && i.classList.contains(mB)
|
|
1017
1014
|
), [r] = PA(
|
|
1018
|
-
|
|
1015
|
+
t,
|
|
1019
1016
|
(i) => i.tagName === "SPAN" && i.dataset.type === Mg
|
|
1020
1017
|
);
|
|
1021
1018
|
if (o || q(r)) {
|
|
@@ -1024,8 +1021,8 @@ class Ve extends pI {
|
|
|
1024
1021
|
}
|
|
1025
1022
|
if (q(this.modalInstance)) {
|
|
1026
1023
|
const i = (h, d) => {
|
|
1027
|
-
var
|
|
1028
|
-
if (q(this.modalInstance) || q((
|
|
1024
|
+
var f;
|
|
1025
|
+
if (q(this.modalInstance) || q((f = this.modalInstance) == null ? void 0 : f.target)) return;
|
|
1029
1026
|
const { target: c } = this.modalInstance;
|
|
1030
1027
|
c.dataset.value = String(d), c.firstElementChild.innerHTML = `停顿: ${d}S`;
|
|
1031
1028
|
};
|
|
@@ -1055,15 +1052,15 @@ const Oe = { style: { display: "none" } }, Xe = /* @__PURE__ */ vA({
|
|
|
1055
1052
|
},
|
|
1056
1053
|
emits: ["ok", "cancel"],
|
|
1057
1054
|
setup(I, { emit: E }) {
|
|
1058
|
-
const B = I,
|
|
1055
|
+
const B = I, t = E, [o] = ZA("pronunciationor"), r = (h) => {
|
|
1059
1056
|
var d;
|
|
1060
1057
|
if (i.value = (d = i.value) == null ? void 0 : d.trim(), !/^[\u4e00-\u9fa5a-zA-Z0-9]+$/.test(i.value)) {
|
|
1061
1058
|
Yg.warning({ id: "message-replacer", content: "不能使用特殊字符替换读音!" });
|
|
1062
1059
|
return;
|
|
1063
1060
|
}
|
|
1064
|
-
|
|
1061
|
+
t("ok", h, i.value ?? "", B.oldText);
|
|
1065
1062
|
}, a = (h) => {
|
|
1066
|
-
|
|
1063
|
+
t("cancel", h);
|
|
1067
1064
|
}, i = yA();
|
|
1068
1065
|
return gI([() => B.visible, () => B.oldText, () => B.modelValue], () => {
|
|
1069
1066
|
i.value = B.modelValue;
|
|
@@ -1153,7 +1150,7 @@ const Oe = { style: { display: "none" } }, Xe = /* @__PURE__ */ vA({
|
|
|
1153
1150
|
}
|
|
1154
1151
|
}), ze = /* @__PURE__ */ JA(Xe, [["__scopeId", "data-v-e430f236"]]);
|
|
1155
1152
|
let Ze = 0;
|
|
1156
|
-
const kg =
|
|
1153
|
+
const kg = b.pronunciation, [Sg] = II(kg), KB = Sg("close"), { x: _e, y: $e } = HI(), At = `<svg class="${KB}" width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
1157
1154
|
<g id="V1.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
1158
1155
|
<g id="虚拟精品录音间-读音替换" transform="translate(-1287, -152)" fill="currentColor" fill-rule="nonzero">
|
|
1159
1156
|
<g id="编组-4备份-4" transform="translate(1227, 149)">
|
|
@@ -1165,7 +1162,7 @@ const kg = x.pronunciation, [Sg] = II(kg), KB = Sg("close"), { x: _e, y: $e } =
|
|
|
1165
1162
|
</g>
|
|
1166
1163
|
</g>
|
|
1167
1164
|
</svg>`, gt = (I, E) => {
|
|
1168
|
-
const B = SC(
|
|
1165
|
+
const B = SC(b.pronunciation), { oldText: t, onOk: o, onCancel: r, onTryPlay: a } = E, i = (R, F, M) => {
|
|
1169
1166
|
o == null || o(R, F, M), d();
|
|
1170
1167
|
}, h = (R) => {
|
|
1171
1168
|
r == null || r(R), d();
|
|
@@ -1178,7 +1175,7 @@ const kg = x.pronunciation, [Sg] = II(kg), KB = Sg("close"), { x: _e, y: $e } =
|
|
|
1178
1175
|
}, u = N(I, {
|
|
1179
1176
|
visible: !1,
|
|
1180
1177
|
modelValue: void 0,
|
|
1181
|
-
oldText:
|
|
1178
|
+
oldText: t,
|
|
1182
1179
|
onOk: i,
|
|
1183
1180
|
onCancel: h,
|
|
1184
1181
|
onTryPlay: (R, F, M) => {
|
|
@@ -1209,11 +1206,11 @@ class It extends pI {
|
|
|
1209
1206
|
}
|
|
1210
1207
|
_triggerPronunciationTagClick(B) {
|
|
1211
1208
|
var a;
|
|
1212
|
-
const
|
|
1213
|
-
|
|
1209
|
+
const t = B.target, [o] = PA(
|
|
1210
|
+
t,
|
|
1214
1211
|
(i) => i.tagName === "svg" && i.classList.contains(KB)
|
|
1215
1212
|
), [r] = PA(
|
|
1216
|
-
|
|
1213
|
+
t,
|
|
1217
1214
|
(i) => i.tagName === "SPAN" && i.dataset.type === kg
|
|
1218
1215
|
);
|
|
1219
1216
|
if (o || q(r)) {
|
|
@@ -1223,8 +1220,8 @@ class It extends pI {
|
|
|
1223
1220
|
if (q(this.modalInstance)) {
|
|
1224
1221
|
const i = (h, d, c) => {
|
|
1225
1222
|
if (q(this.modalInstance) || q(this.modalInstance.target)) return;
|
|
1226
|
-
const { target:
|
|
1227
|
-
q(D) || (
|
|
1223
|
+
const { target: f } = this.modalInstance, D = f.querySelector(`.${Sg("replace-text")}`);
|
|
1224
|
+
q(D) || (f.dataset.value = d, D.innerHTML = d);
|
|
1228
1225
|
};
|
|
1229
1226
|
this.modalInstance = gt(ze, {
|
|
1230
1227
|
oldText: r.dataset.raw,
|
|
@@ -1238,9 +1235,9 @@ class It extends pI {
|
|
|
1238
1235
|
});
|
|
1239
1236
|
}
|
|
1240
1237
|
_insertPronunciationTag(B) {
|
|
1241
|
-
const
|
|
1238
|
+
const t = document.createElement("span"), o = this.editor.cursor.getRangeContent();
|
|
1242
1239
|
Kg(
|
|
1243
|
-
|
|
1240
|
+
t,
|
|
1244
1241
|
{ class: Sg(), contenteditable: !1 },
|
|
1245
1242
|
{
|
|
1246
1243
|
type: kg,
|
|
@@ -1255,7 +1252,7 @@ class It extends pI {
|
|
|
1255
1252
|
${At}
|
|
1256
1253
|
</span>
|
|
1257
1254
|
`
|
|
1258
|
-
), this.editor.content.update(
|
|
1255
|
+
), this.editor.content.update(t);
|
|
1259
1256
|
}
|
|
1260
1257
|
setup() {
|
|
1261
1258
|
}
|
|
@@ -1274,7 +1271,7 @@ const vB = [
|
|
|
1274
1271
|
"rgba(255, 232, 145, 0.5)",
|
|
1275
1272
|
"rgba(201, 233, 104, 0.5)",
|
|
1276
1273
|
"rgba(255, 206, 190, 0.5)"
|
|
1277
|
-
], Lg =
|
|
1274
|
+
], Lg = b.anchor, [zg] = II(Lg);
|
|
1278
1275
|
class Ct extends pI {
|
|
1279
1276
|
constructor(B) {
|
|
1280
1277
|
super();
|
|
@@ -1294,8 +1291,8 @@ class Ct extends pI {
|
|
|
1294
1291
|
this._insertOverlapAnchor(B) || this._insertAnchorTag(B.anchor);
|
|
1295
1292
|
}
|
|
1296
1293
|
remove(B) {
|
|
1297
|
-
const { top:
|
|
1298
|
-
i > -1 && this.data[
|
|
1294
|
+
const { top: t, id: o, uid: r } = B.dataset, a = o.split("_")[1], i = this.data[t].findIndex((c) => c.data.uid ? c.data.uid === r : c.id === Number(a));
|
|
1295
|
+
i > -1 && this.data[t].splice(i, 1);
|
|
1299
1296
|
const h = Array.from(B.childNodes);
|
|
1300
1297
|
if (h.every((c) => HA(c))) {
|
|
1301
1298
|
B.replaceWith(B.textContent), this.editor._editorElement.normalize();
|
|
@@ -1305,8 +1302,8 @@ class Ct extends pI {
|
|
|
1305
1302
|
h.forEach((c) => d.appendChild(c)), B.replaceWith(d), this.editor._editorElement.normalize();
|
|
1306
1303
|
}
|
|
1307
1304
|
_insertOverlapAnchor(B) {
|
|
1308
|
-
const { range:
|
|
1309
|
-
if (q(
|
|
1305
|
+
const { range: t } = this.editor.cursor;
|
|
1306
|
+
if (q(t)) return !1;
|
|
1310
1307
|
const o = (K) => {
|
|
1311
1308
|
var W;
|
|
1312
1309
|
return Array.prototype.indexOf.call((W = K.parentNode) == null ? void 0 : W.childNodes, K);
|
|
@@ -1335,19 +1332,19 @@ class Ct extends pI {
|
|
|
1335
1332
|
if (HA(fA)) {
|
|
1336
1333
|
const J = fA.textContent;
|
|
1337
1334
|
let H = fA.parentNode, dA = AA.startContainer;
|
|
1338
|
-
H.dataset.type ===
|
|
1335
|
+
H.dataset.type === b.highlight && (dA = H.nextSibling, H = H.parentNode);
|
|
1339
1336
|
const wA = H.cloneNode(!1), RA = document.createDocumentFragment();
|
|
1340
1337
|
for (; H.firstChild && H.firstChild !== dA; )
|
|
1341
1338
|
RA.appendChild(H.firstChild);
|
|
1342
1339
|
return wA.appendChild(RA), wA.appendChild(document.createTextNode(J.slice(0, AA.startOffset))), fA.replaceWith(J.slice(AA.startOffset)), (z = H.parentNode) == null || z.insertBefore(wA, H), H;
|
|
1343
1340
|
}
|
|
1344
1341
|
}
|
|
1345
|
-
return $(U) && U.classList.contains(
|
|
1342
|
+
return $(U) && U.classList.contains(NA) ? U.childNodes[AA.endOffset] : U;
|
|
1346
1343
|
};
|
|
1347
1344
|
[p, m, P, X] = h(
|
|
1348
1345
|
CA,
|
|
1349
1346
|
c,
|
|
1350
|
-
|
|
1347
|
+
f,
|
|
1351
1348
|
EA ? D : CA[0],
|
|
1352
1349
|
EA ? u : CA[0].childNodes.length,
|
|
1353
1350
|
EA ? kA : null,
|
|
@@ -1380,7 +1377,7 @@ class Ct extends pI {
|
|
|
1380
1377
|
var Z, eA, BA, tA;
|
|
1381
1378
|
const fA = Array.isArray(AA) ? AA : [AA], [U] = K, v = document.createRange();
|
|
1382
1379
|
v.setStart(W, EA), v.setEnd(CA, nA), (Z = getSelection()) == null || Z.removeAllRanges(), (eA = getSelection()) == null || eA.addRange(v);
|
|
1383
|
-
const O = v.startContainer === v.endContainer && ((tA = (BA = v.startContainer.parentElement) == null ? void 0 : BA.dataset) == null ? void 0 : tA.type) ===
|
|
1380
|
+
const O = v.startContainer === v.endContainer && ((tA = (BA = v.startContainer.parentElement) == null ? void 0 : BA.dataset) == null ? void 0 : tA.type) === b.highlight ? v.startContainer.parentElement.cloneNode(!1) : null, z = v.cloneContents(), J = document.createDocumentFragment();
|
|
1384
1381
|
Array.from(z.childNodes).forEach((DA) => {
|
|
1385
1382
|
if (!$(DA) || !DA.classList.contains(zg())) {
|
|
1386
1383
|
O && O.appendChild(DA), J.appendChild(O ?? DA);
|
|
@@ -1389,22 +1386,22 @@ class Ct extends pI {
|
|
|
1389
1386
|
J.append(...Array.from(DA.childNodes));
|
|
1390
1387
|
});
|
|
1391
1388
|
let H = document.createTextNode(""), dA = 0, wA = document.createTextNode(""), RA = 0;
|
|
1392
|
-
return fA.includes("start") && (H = J.firstChild, dA = 0), fA.includes("end") && (wA = J.lastChild, RA = HA(wA) ? wA.data.length : $(J.lastChild) && J.lastChild.dataset.type ===
|
|
1389
|
+
return fA.includes("start") && (H = J.firstChild, dA = 0), fA.includes("end") && (wA = J.lastChild, RA = HA(wA) ? wA.data.length : $(J.lastChild) && J.lastChild.dataset.type === b.highlight ? J.lastChild.childNodes.length : J.childNodes.length), v.deleteContents(), U.insertBefore(J, typeof kA == "function" ? kA() : kA), [H, dA, wA, RA];
|
|
1393
1390
|
}, d = async (K) => {
|
|
1394
1391
|
var EA, CA;
|
|
1395
1392
|
const W = document.createRange();
|
|
1396
|
-
p === P && $(p) && p.dataset.type ===
|
|
1397
|
-
}, { startContainer: c, startOffset:
|
|
1393
|
+
p === P && $(p) && p.dataset.type === b.highlight ? W.selectNode(p) : (W.setStart(p, m), W.setEnd(P, X)), (EA = getSelection()) == null || EA.removeAllRanges(), (CA = getSelection()) == null || CA.addRange(W), this.editor.cursor.range = W, this._insertAnchorTag(B.anchor, K);
|
|
1394
|
+
}, { startContainer: c, startOffset: f, endContainer: D, endOffset: u } = t, R = r(D), F = WA(c), M = WA(D), G = F === M ? [F] : [F, ...hC(F, M), M], S = G.map((K, W) => {
|
|
1398
1395
|
let EA = [], CA = 0, nA = K.childNodes.length;
|
|
1399
1396
|
switch (W) {
|
|
1400
1397
|
case 0: {
|
|
1401
|
-
CA = o(r(c)), nA = // 同一段落
|
|
1398
|
+
CA = $(c) && c.classList.contains(NA) ? 0 : o(r(c)), nA = // 同一段落
|
|
1402
1399
|
G.length - 1 === W && // 非P段落
|
|
1403
|
-
!($(D) && D.classList.contains(
|
|
1400
|
+
!($(D) && D.classList.contains(NA)) ? o(r(D)) + 1 : K.childNodes.length, EA = Array.from(K.childNodes).slice(CA, nA);
|
|
1404
1401
|
break;
|
|
1405
1402
|
}
|
|
1406
1403
|
case G.length - 1:
|
|
1407
|
-
CA = 0, nA = $(D) && D.classList.contains(
|
|
1404
|
+
CA = 0, nA = $(D) && D.classList.contains(NA) ? K.childNodes.length : o(r(D)) + 1, EA = Array.from(K.childNodes).slice(0, nA);
|
|
1408
1405
|
break;
|
|
1409
1406
|
default:
|
|
1410
1407
|
CA = 0, nA = K.childNodes.length, EA = Array.from(K.childNodes).slice(CA, nA);
|
|
@@ -1415,16 +1412,16 @@ class Ct extends pI {
|
|
|
1415
1412
|
let p, m = 0, P, X = 0;
|
|
1416
1413
|
return S.some(([K, W]) => W) ? (i(), d(R), !0) : !1;
|
|
1417
1414
|
}
|
|
1418
|
-
_recordAnchor(B,
|
|
1415
|
+
_recordAnchor(B, t, o, r) {
|
|
1419
1416
|
const a = this.data[o] ?? (this.data[o] = []);
|
|
1420
|
-
B.id =
|
|
1417
|
+
B.id = t, B.top = o, a.push({ background: r, data: B, id: t });
|
|
1421
1418
|
}
|
|
1422
1419
|
get _newAnchorId() {
|
|
1423
|
-
const B = Object.values(this.data).flat().map((
|
|
1420
|
+
const B = Object.values(this.data).flat().map((t) => t.id);
|
|
1424
1421
|
return B.length ? Math.max(...B) + 1 : 1;
|
|
1425
1422
|
}
|
|
1426
|
-
_insertAnchorTag(B,
|
|
1427
|
-
const o = this._newAnchorId, r = String(Date.now()), a = vB[(o - 1) % 10], i = this.editor.cursor.range, { startContainer: h, startOffset: d, endContainer: c, endOffset:
|
|
1423
|
+
_insertAnchorTag(B, t) {
|
|
1424
|
+
const o = this._newAnchorId, r = String(Date.now()), a = vB[(o - 1) % 10], i = this.editor.cursor.range, { startContainer: h, startOffset: d, endContainer: c, endOffset: f } = i, D = (p) => $(p) && p.tagName === "DIV" ? p.firstElementChild : $(p) && p.tagName === "P" ? p : WA(p), u = (p) => {
|
|
1428
1425
|
const m = document.createElement("span");
|
|
1429
1426
|
return Kg(
|
|
1430
1427
|
m,
|
|
@@ -1453,7 +1450,7 @@ class Ct extends pI {
|
|
|
1453
1450
|
if (F(p, P))
|
|
1454
1451
|
W.selectNode(Array.from(p.childNodes).slice(m, X)[0]);
|
|
1455
1452
|
else {
|
|
1456
|
-
const AA = $(P) && [
|
|
1453
|
+
const AA = $(P) && [b.pausation].includes(P.dataset.type) ? P.childNodes.length : X;
|
|
1457
1454
|
$(p) && p.tagName === "P" ? (W.setStart(p.firstChild, 0), W.setEnd(p, p.childNodes.length)) : (W.setStart(p, m), W.setEnd(P, AA));
|
|
1458
1455
|
}
|
|
1459
1456
|
const EA = window.getSelection();
|
|
@@ -1467,7 +1464,7 @@ class Ct extends pI {
|
|
|
1467
1464
|
}, F = (p, m) => {
|
|
1468
1465
|
var P, X;
|
|
1469
1466
|
return $(p) && p.tagName === "P" && p === m && // @ts-ignore
|
|
1470
|
-
((X = (P = Array.from(p.childNodes).slice(i.startOffset, i.endOffset)[0]) == null ? void 0 : P.dataset) == null ? void 0 : X.type) ===
|
|
1467
|
+
((X = (P = Array.from(p.childNodes).slice(i.startOffset, i.endOffset)[0]) == null ? void 0 : P.dataset) == null ? void 0 : X.type) === b.highlight;
|
|
1471
1468
|
}, M = D(h), G = D(c), S = hC(M, G);
|
|
1472
1469
|
if (M === G) {
|
|
1473
1470
|
const p = F(h, c);
|
|
@@ -1475,16 +1472,16 @@ class Ct extends pI {
|
|
|
1475
1472
|
p ? h : $(h) && h.tagName === "P" ? h.firstChild : h,
|
|
1476
1473
|
p ? d : $(h) && h.tagName === "P" ? 0 : d,
|
|
1477
1474
|
c,
|
|
1478
|
-
|
|
1475
|
+
f,
|
|
1479
1476
|
!0
|
|
1480
|
-
), this._fixedAnchorSelection(
|
|
1477
|
+
), this._fixedAnchorSelection(t), this._fixedAnchorOrder(B), this._fixedAnchorHighlightContent();
|
|
1481
1478
|
return;
|
|
1482
1479
|
}
|
|
1483
|
-
R(h, d, M, M.childNodes.length, !0), S.forEach((p) => R(p, 0, p, p.childNodes.length)), R(G.firstChild, 0, c,
|
|
1480
|
+
R(h, d, M, M.childNodes.length, !0), S.forEach((p) => R(p, 0, p, p.childNodes.length)), R(G.firstChild, 0, c, f, !1), this._fixedAnchorSelection(t), this._fixedAnchorOrder(B), this._fixedAnchorHighlightContent();
|
|
1484
1481
|
}
|
|
1485
1482
|
_isIntersectOtherAnchors() {
|
|
1486
1483
|
const { range: B } = this.editor.cursor;
|
|
1487
|
-
return Array.from(document.querySelectorAll(`.tag-${
|
|
1484
|
+
return Array.from(document.querySelectorAll(`.tag-${b.anchor}`)).some((o) => B == null ? void 0 : B.intersectsNode(o));
|
|
1488
1485
|
}
|
|
1489
1486
|
_calcTopValue(B) {
|
|
1490
1487
|
return B.top - this.editor.editorTop() + 16;
|
|
@@ -1492,28 +1489,28 @@ class Ct extends pI {
|
|
|
1492
1489
|
_fixedAnchorSelection(B) {
|
|
1493
1490
|
var R;
|
|
1494
1491
|
if (!($(B) && B.classList.contains(zg()))) return;
|
|
1495
|
-
const
|
|
1496
|
-
document.querySelectorAll(`.tag-${
|
|
1497
|
-
), r =
|
|
1492
|
+
const t = B, o = Array.from(
|
|
1493
|
+
document.querySelectorAll(`.tag-${b.anchor}`)
|
|
1494
|
+
), r = t.dataset.id, a = Number((R = t.dataset.id) == null ? void 0 : R.split("_")[1]), i = o.indexOf(t), h = this._calcTopValue(t.getBoundingClientRect()), d = [];
|
|
1498
1495
|
if (i < 0) return;
|
|
1499
1496
|
for (let F = i; F < o.length && r === o[F].dataset.id; F++)
|
|
1500
1497
|
d.push(o[F]);
|
|
1501
|
-
const
|
|
1498
|
+
const f = Object.values(this.data).flat().find((F) => F.id === a), D = String(Date.now()), u = { ...f, data: { ...f.data, uid: D } };
|
|
1502
1499
|
d.forEach((F) => {
|
|
1503
1500
|
F.dataset.uid = D, F.dataset.top = String(h);
|
|
1504
|
-
}), this._recordAnchor(u.data, u.id, h,
|
|
1501
|
+
}), this._recordAnchor(u.data, u.id, h, f.background);
|
|
1505
1502
|
}
|
|
1506
1503
|
_fixedAnchorOrder(B) {
|
|
1507
|
-
const
|
|
1504
|
+
const t = this.data[B.top], r = Array.from(document.querySelectorAll(`span[data-top="${B.top}"]`)).map((a) => [Number(a.dataset.id.split("_")[1]), a.dataset.uid]).reduce((a, i) => {
|
|
1508
1505
|
const [h, d] = i;
|
|
1509
1506
|
return d ? (a.push(
|
|
1510
|
-
...
|
|
1511
|
-
|
|
1507
|
+
...t.splice(
|
|
1508
|
+
t.findIndex((c) => c.data.uid === d),
|
|
1512
1509
|
1
|
|
1513
1510
|
)
|
|
1514
1511
|
), a) : (a.push(
|
|
1515
|
-
...
|
|
1516
|
-
|
|
1512
|
+
...t.splice(
|
|
1513
|
+
t.findIndex((c) => c.data.id === h && !c.data.uid),
|
|
1517
1514
|
1
|
|
1518
1515
|
)
|
|
1519
1516
|
), a);
|
|
@@ -1522,7 +1519,7 @@ class Ct extends pI {
|
|
|
1522
1519
|
}
|
|
1523
1520
|
_fixedAnchorHighlightContent() {
|
|
1524
1521
|
Array.from(
|
|
1525
|
-
this.editor.element.querySelectorAll(`span[data-type="${
|
|
1522
|
+
this.editor.element.querySelectorAll(`span[data-type="${b.highlight}"]`)
|
|
1526
1523
|
).forEach((B) => {
|
|
1527
1524
|
B.dataset.raw = B.innerHTML;
|
|
1528
1525
|
});
|
|
@@ -1541,7 +1538,7 @@ class Ct extends pI {
|
|
|
1541
1538
|
async _syncAnchorTopValue() {
|
|
1542
1539
|
const B = Array.from(
|
|
1543
1540
|
this.editor.element.querySelectorAll(`span[data-type="${Lg}"]`)
|
|
1544
|
-
),
|
|
1541
|
+
), t = B.reduce((a, i) => {
|
|
1545
1542
|
const h = i.dataset.uid ?? i.dataset.id.split("_")[1];
|
|
1546
1543
|
if (a.has(h))
|
|
1547
1544
|
return i.dataset.top = String(a.get(h)), a;
|
|
@@ -1550,7 +1547,7 @@ class Ct extends pI {
|
|
|
1550
1547
|
}, /* @__PURE__ */ new Map()), o = Object.values(this.data).flat().filter((a) => B.some((i) => i.dataset.uid ? i.dataset.uid === a.data.uid : Number(i.dataset.id.split("_")[1]) === a.id));
|
|
1551
1548
|
Object.keys(this.data).forEach((a) => delete this.data[a]);
|
|
1552
1549
|
const r = o.reduce((a, i) => {
|
|
1553
|
-
const h = i.data.uid ?? i.id, d =
|
|
1550
|
+
const h = i.data.uid ?? i.id, d = t.get(String(h)), c = a[d] ?? (a[d] = []);
|
|
1554
1551
|
return i.data.top = d, c.push(i), a;
|
|
1555
1552
|
}, {});
|
|
1556
1553
|
Object.keys(r).forEach((a) => this.data[a] = r[a]);
|
|
@@ -1565,8 +1562,8 @@ class Ct extends pI {
|
|
|
1565
1562
|
});
|
|
1566
1563
|
}
|
|
1567
1564
|
destroy() {
|
|
1568
|
-
var B,
|
|
1569
|
-
(B = this.observer) == null || B.disconnect(), this.observer = null, (
|
|
1565
|
+
var B, t;
|
|
1566
|
+
(B = this.observer) == null || B.disconnect(), this.observer = null, (t = this.resizeObserver) == null || t.disconnect(), this.resizeObserver = null;
|
|
1570
1567
|
}
|
|
1571
1568
|
}
|
|
1572
1569
|
const Bt = ["onClick"], Qt = /* @__PURE__ */ vA({
|
|
@@ -1578,8 +1575,8 @@ const Bt = ["onClick"], Qt = /* @__PURE__ */ vA({
|
|
|
1578
1575
|
},
|
|
1579
1576
|
emits: ["ok", "cancel"],
|
|
1580
1577
|
setup(I, { emit: E }) {
|
|
1581
|
-
const B = I,
|
|
1582
|
-
|
|
1578
|
+
const B = I, t = E, [o] = ZA("homophones"), r = (a, i) => {
|
|
1579
|
+
t("ok", a, i);
|
|
1583
1580
|
};
|
|
1584
1581
|
return (a, i) => SI((aA(), cA("ul", {
|
|
1585
1582
|
class: pA(uA(o)()),
|
|
@@ -1598,7 +1595,7 @@ const Bt = ["onClick"], Qt = /* @__PURE__ */ vA({
|
|
|
1598
1595
|
[LI, B.visible]
|
|
1599
1596
|
]);
|
|
1600
1597
|
}
|
|
1601
|
-
}), Et = /* @__PURE__ */ JA(Qt, [["__scopeId", "data-v-8471a3e1"]]), et = 0, pg =
|
|
1598
|
+
}), Et = /* @__PURE__ */ JA(Qt, [["__scopeId", "data-v-8471a3e1"]]), et = 0, pg = b.homophones, [NI] = II(pg), qB = NI("close"), { x: tt, y: ot } = HI(), nt = `<svg class="${qB}" width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
1602
1599
|
<g id="V1.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
1603
1600
|
<g id="虚拟精品录音间-读音替换" transform="translate(-1287, -152)" fill="currentColor" fill-rule="nonzero">
|
|
1604
1601
|
<g id="编组-4备份-4" transform="translate(1227, 149)">
|
|
@@ -1609,7 +1606,7 @@ const Bt = ["onClick"], Qt = /* @__PURE__ */ vA({
|
|
|
1609
1606
|
</g>
|
|
1610
1607
|
</g>
|
|
1611
1608
|
</g>
|
|
1612
|
-
</svg>`, it = (I, E, B,
|
|
1609
|
+
</svg>`, it = (I, E, B, t, o) => {
|
|
1613
1610
|
const r = document.createElement("span");
|
|
1614
1611
|
return Kg(
|
|
1615
1612
|
r,
|
|
@@ -1620,7 +1617,7 @@ const Bt = ["onClick"], Qt = /* @__PURE__ */ vA({
|
|
|
1620
1617
|
value: E,
|
|
1621
1618
|
formattedValue: B,
|
|
1622
1619
|
raw: I,
|
|
1623
|
-
data:
|
|
1620
|
+
data: t.join(),
|
|
1624
1621
|
formattedData: o.join()
|
|
1625
1622
|
},
|
|
1626
1623
|
`
|
|
@@ -1629,7 +1626,7 @@ const Bt = ["onClick"], Qt = /* @__PURE__ */ vA({
|
|
|
1629
1626
|
`
|
|
1630
1627
|
), r;
|
|
1631
1628
|
}, rt = (I, E) => {
|
|
1632
|
-
const B = SC(
|
|
1629
|
+
const B = SC(b.homophones), { word: t, data: o, onOK: r, onCancel: a } = E, i = (u, R) => {
|
|
1633
1630
|
r == null || r(u, R), d();
|
|
1634
1631
|
}, h = (u) => {
|
|
1635
1632
|
a == null || a(u), d();
|
|
@@ -1649,7 +1646,7 @@ const Bt = ["onClick"], Qt = /* @__PURE__ */ vA({
|
|
|
1649
1646
|
}
|
|
1650
1647
|
}, D = N(I, {
|
|
1651
1648
|
visible: !1,
|
|
1652
|
-
word:
|
|
1649
|
+
word: t,
|
|
1653
1650
|
data: o,
|
|
1654
1651
|
onOk: i,
|
|
1655
1652
|
onCancel: h
|
|
@@ -1671,9 +1668,9 @@ class at extends pI {
|
|
|
1671
1668
|
this.editor = B, this.name = `tiny-peony-plugin__${pg}-tag`, this.prefix = pg, this.modalInstance = null, this.data = [], this._triggerHomophonesTagClick = this._triggerHomophonesTagClick.bind(this), document.body.addEventListener("click", this._triggerHomophonesTagClick);
|
|
1672
1669
|
}
|
|
1673
1670
|
add(B) {
|
|
1674
|
-
const
|
|
1675
|
-
q(
|
|
1676
|
-
this._calc(
|
|
1671
|
+
const t = this.editor.cursor.range;
|
|
1672
|
+
q(t) || B.forEach((o) => {
|
|
1673
|
+
this._calc(t.startContainer, t.startOffset, o);
|
|
1677
1674
|
});
|
|
1678
1675
|
}
|
|
1679
1676
|
remove(B) {
|
|
@@ -1681,11 +1678,11 @@ class at extends pI {
|
|
|
1681
1678
|
}
|
|
1682
1679
|
_triggerHomophonesTagClick(B) {
|
|
1683
1680
|
var a, i, h;
|
|
1684
|
-
const
|
|
1685
|
-
|
|
1681
|
+
const t = B.target, [o] = PA(
|
|
1682
|
+
t,
|
|
1686
1683
|
(d) => d.tagName === "svg" && d.classList.contains(qB)
|
|
1687
1684
|
), [r] = PA(
|
|
1688
|
-
|
|
1685
|
+
t,
|
|
1689
1686
|
(d) => d.tagName === "SPAN" && d.dataset.type === pg
|
|
1690
1687
|
);
|
|
1691
1688
|
if (o || q(r)) {
|
|
@@ -1693,11 +1690,11 @@ class at extends pI {
|
|
|
1693
1690
|
return;
|
|
1694
1691
|
}
|
|
1695
1692
|
if (q(this.modalInstance)) {
|
|
1696
|
-
const d = (c,
|
|
1693
|
+
const d = (c, f) => {
|
|
1697
1694
|
var M, G;
|
|
1698
1695
|
if (q(this.modalInstance) || q(this.modalInstance.target)) return;
|
|
1699
|
-
const { target: D } = this.modalInstance, u = D.querySelector(`.${NI("raw")}`), R = (M = D.dataset.data) == null ? void 0 : M.split(",").indexOf(
|
|
1700
|
-
q(u) || q(R) || q(F) || (D.dataset.value =
|
|
1696
|
+
const { target: D } = this.modalInstance, u = D.querySelector(`.${NI("raw")}`), R = (M = D.dataset.data) == null ? void 0 : M.split(",").indexOf(f), F = (G = D.dataset.formattedData) == null ? void 0 : G.split(",");
|
|
1697
|
+
q(u) || q(R) || q(F) || (D.dataset.value = f, D.dataset.formattedValue = F[R], u.innerHTML = `${D.dataset.raw}[${f}]`);
|
|
1701
1698
|
};
|
|
1702
1699
|
this.modalInstance = rt(Et, {
|
|
1703
1700
|
word: r.dataset.raw,
|
|
@@ -1717,41 +1714,41 @@ class at extends pI {
|
|
|
1717
1714
|
});
|
|
1718
1715
|
}
|
|
1719
1716
|
_insertHomophonesTag(B) {
|
|
1720
|
-
const
|
|
1717
|
+
const t = this.editor.content.getParas(), o = (r, a, i) => {
|
|
1721
1718
|
var d;
|
|
1722
1719
|
let h = a;
|
|
1723
1720
|
for (let c = 0; c < r.length; c++) {
|
|
1724
|
-
const
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
].includes(D) ?
|
|
1721
|
+
const f = r[c], D = (d = f == null ? void 0 : f.dataset) == null ? void 0 : d.type, u = [
|
|
1722
|
+
b.pausation,
|
|
1723
|
+
b.pronunciation,
|
|
1724
|
+
b.homophones
|
|
1725
|
+
].includes(D) ? f.dataset.raw ?? "" : f.textContent ?? "", R = i.wordIndex - (h + 1);
|
|
1729
1726
|
if (R >= u.length) {
|
|
1730
1727
|
h += u.length;
|
|
1731
1728
|
continue;
|
|
1732
1729
|
}
|
|
1733
|
-
if ($(
|
|
1734
|
-
if ([
|
|
1735
|
-
if (
|
|
1736
|
-
this._calc(
|
|
1730
|
+
if ($(f)) {
|
|
1731
|
+
if ([b.pausation, b.pronunciation].includes(D)) return;
|
|
1732
|
+
if (b.homophones === D) {
|
|
1733
|
+
this._calc(f, R, i);
|
|
1737
1734
|
return;
|
|
1738
1735
|
}
|
|
1739
|
-
if (
|
|
1740
|
-
o(Array.from(
|
|
1736
|
+
if (b.anchor === D) {
|
|
1737
|
+
o(Array.from(f.childNodes), h, i);
|
|
1741
1738
|
return;
|
|
1742
1739
|
}
|
|
1743
1740
|
}
|
|
1744
|
-
this._calc(
|
|
1741
|
+
this._calc(f, R, i);
|
|
1745
1742
|
return;
|
|
1746
1743
|
}
|
|
1747
1744
|
};
|
|
1748
1745
|
B.forEach((r) => {
|
|
1749
|
-
const a =
|
|
1746
|
+
const a = t[r.paraIndex], i = Array.from(a.childNodes);
|
|
1750
1747
|
o(i, -1, r);
|
|
1751
1748
|
});
|
|
1752
1749
|
}
|
|
1753
1750
|
// 累计计算并更新索引属性
|
|
1754
|
-
_calc(B,
|
|
1751
|
+
_calc(B, t, o) {
|
|
1755
1752
|
const r = window.getSelection(), a = document.createRange();
|
|
1756
1753
|
if (B.nodeType === Node.TEXT_NODE) {
|
|
1757
1754
|
const i = it(
|
|
@@ -1761,9 +1758,9 @@ class at extends pI {
|
|
|
1761
1758
|
o.pinyin1,
|
|
1762
1759
|
o.pinyin2
|
|
1763
1760
|
);
|
|
1764
|
-
a.selectNode(B), a.setStart(B,
|
|
1761
|
+
a.selectNode(B), a.setStart(B, t), a.setEnd(B, t + 1), a.deleteContents(), a.insertNode(i), r == null || r.removeAllRanges(), r == null || r.addRange(a), this.editor.cursor.toEnd(i);
|
|
1765
1762
|
}
|
|
1766
|
-
$(B) && B.dataset.type ===
|
|
1763
|
+
$(B) && B.dataset.type === b.homophones && (B.dataset.value = o.modify, B.firstElementChild.innerHTML = `${o.word}[${o.modify}]`);
|
|
1767
1764
|
}
|
|
1768
1765
|
setup() {
|
|
1769
1766
|
}
|
|
@@ -1776,16 +1773,16 @@ const st = {
|
|
|
1776
1773
|
withAuditHighlight: !1,
|
|
1777
1774
|
withRefineHighlight: !1
|
|
1778
1775
|
}, fg = Symbol("Editor"), UC = "highlight", [ct] = II("audit-highlight"), yC = ct(), xB = (I, E) => {
|
|
1779
|
-
const [B,
|
|
1776
|
+
const [B, t] = E.split("_").map((r, a) => a ? r : Number(r)), o = Array.from(
|
|
1780
1777
|
I.element.querySelectorAll(`span[data-frag-id="anchor_${B}"]`)
|
|
1781
1778
|
);
|
|
1782
|
-
return
|
|
1779
|
+
return t ? o.filter((r) => r.dataset.uid === t) : o.filter((r) => !r.dataset.uid);
|
|
1783
1780
|
}, lt = (I) => I.classList.contains(UC), dt = (I, E) => {
|
|
1784
|
-
xB(I, E).forEach((
|
|
1785
|
-
!lt(
|
|
1781
|
+
xB(I, E).forEach((t) => {
|
|
1782
|
+
!lt(t) && t.classList.add(UC);
|
|
1786
1783
|
});
|
|
1787
1784
|
}, wt = (I, E) => {
|
|
1788
|
-
xB(I, E).forEach((
|
|
1785
|
+
xB(I, E).forEach((t) => t.classList.remove(UC));
|
|
1789
1786
|
}, ht = (I, E) => {
|
|
1790
1787
|
gI(
|
|
1791
1788
|
() => E.listenAnchorId,
|
|
@@ -1798,11 +1795,11 @@ const st = {
|
|
|
1798
1795
|
return Kg(
|
|
1799
1796
|
h,
|
|
1800
1797
|
{ class: yC },
|
|
1801
|
-
{ type:
|
|
1798
|
+
{ type: b.highlight, raw: i }
|
|
1802
1799
|
), h;
|
|
1803
|
-
},
|
|
1800
|
+
}, t = (i) => {
|
|
1804
1801
|
var c;
|
|
1805
|
-
return (((c = I.value) == null ? void 0 : c.content.getTextContent()) ?? []).reduce((
|
|
1802
|
+
return (((c = I.value) == null ? void 0 : c.content.getTextContent()) ?? []).reduce((f, D, u) => {
|
|
1806
1803
|
const R = [];
|
|
1807
1804
|
let F = 0;
|
|
1808
1805
|
for (; F !== -1; )
|
|
@@ -1812,7 +1809,7 @@ const st = {
|
|
|
1812
1809
|
paraIndex: u,
|
|
1813
1810
|
index: F
|
|
1814
1811
|
}), F += i.length);
|
|
1815
|
-
return
|
|
1812
|
+
return f.concat(R);
|
|
1816
1813
|
}, []);
|
|
1817
1814
|
}, o = (i, h, d) => {
|
|
1818
1815
|
var D;
|
|
@@ -1821,35 +1818,35 @@ const st = {
|
|
|
1821
1818
|
dynamicMatchingContent: h.matchingContent,
|
|
1822
1819
|
dynamicMatchingContentIndex: h.index,
|
|
1823
1820
|
restIndex: h.index
|
|
1824
|
-
},
|
|
1821
|
+
}, f = [];
|
|
1825
1822
|
for (let u = 0; u < i.length; u++) {
|
|
1826
|
-
if (!c.dynamicMatchingContent.length) return
|
|
1827
|
-
const R = i[u], F = (D = R == null ? void 0 : R.dataset) == null ? void 0 : D.type, M = [
|
|
1823
|
+
if (!c.dynamicMatchingContent.length) return f;
|
|
1824
|
+
const R = i[u], F = (D = R == null ? void 0 : R.dataset) == null ? void 0 : D.type, M = [b.pausation, b.homophones, b.highlight].includes(
|
|
1828
1825
|
F
|
|
1829
|
-
) ? R.dataset.raw ?? "" :
|
|
1826
|
+
) ? R.dataset.raw ?? "" : b.pronunciation === F ? R.dataset.value ?? "" : R.textContent ?? "";
|
|
1830
1827
|
if (c.restIndex = c.dynamicMatchingContentIndex - (c.accuSearchIndex + 1), c.restIndex >= M.length) {
|
|
1831
1828
|
c.accuSearchIndex += M.length;
|
|
1832
1829
|
continue;
|
|
1833
1830
|
}
|
|
1834
|
-
if (
|
|
1835
|
-
if (
|
|
1836
|
-
|
|
1831
|
+
if (b.pausation === F) continue;
|
|
1832
|
+
if (b.anchor === F) {
|
|
1833
|
+
f.push(...o(Array.from(R.childNodes), h, c));
|
|
1837
1834
|
continue;
|
|
1838
1835
|
}
|
|
1839
1836
|
let G, S;
|
|
1840
1837
|
switch (F) {
|
|
1841
|
-
case
|
|
1838
|
+
case b.pronunciation: {
|
|
1842
1839
|
G = R.querySelector(".tag-pronunciation__replace-text").childNodes[0], S = IC(
|
|
1843
1840
|
G.textContent,
|
|
1844
1841
|
c.dynamicMatchingContent
|
|
1845
1842
|
).length;
|
|
1846
1843
|
break;
|
|
1847
1844
|
}
|
|
1848
|
-
case
|
|
1845
|
+
case b.homophones: {
|
|
1849
1846
|
G = R.querySelector(".tag-homophones__raw").childNodes[0], S = 1;
|
|
1850
1847
|
break;
|
|
1851
1848
|
}
|
|
1852
|
-
case
|
|
1849
|
+
case b.highlight: {
|
|
1853
1850
|
G = R.childNodes[0], S = IC(
|
|
1854
1851
|
G.textContent,
|
|
1855
1852
|
c.dynamicMatchingContent
|
|
@@ -1864,7 +1861,7 @@ const st = {
|
|
|
1864
1861
|
break;
|
|
1865
1862
|
}
|
|
1866
1863
|
}
|
|
1867
|
-
|
|
1864
|
+
f.push({
|
|
1868
1865
|
content: h.matchingContent,
|
|
1869
1866
|
matchedContent: c.dynamicMatchingContent.slice(0, S),
|
|
1870
1867
|
node: G,
|
|
@@ -1872,53 +1869,53 @@ const st = {
|
|
|
1872
1869
|
endOffset: c.restIndex + S,
|
|
1873
1870
|
parentNodeType: F,
|
|
1874
1871
|
isPausationNode: !1,
|
|
1875
|
-
isPronunciationNode:
|
|
1876
|
-
isHomophoneNode:
|
|
1877
|
-
isHighlightNode:
|
|
1872
|
+
isPronunciationNode: b.pronunciation === F,
|
|
1873
|
+
isHomophoneNode: b.homophones === F,
|
|
1874
|
+
isHighlightNode: b.highlight === F,
|
|
1878
1875
|
isHighlight: ![
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1876
|
+
b.pronunciation,
|
|
1877
|
+
b.homophones,
|
|
1878
|
+
b.highlight
|
|
1882
1879
|
].includes(F)
|
|
1883
1880
|
}), c.accuSearchIndex = -1, c.dynamicMatchingContent = c.dynamicMatchingContent.slice(S), c.dynamicMatchingContentIndex = 0, c.restIndex = 0;
|
|
1884
1881
|
}
|
|
1885
|
-
return
|
|
1882
|
+
return f;
|
|
1886
1883
|
};
|
|
1887
1884
|
return {
|
|
1888
1885
|
renderHighlight: (i) => {
|
|
1889
1886
|
const h = (d) => {
|
|
1890
1887
|
var D;
|
|
1891
|
-
const c = ((D = I.value) == null ? void 0 : D.content.getParas()) ?? [],
|
|
1892
|
-
|
|
1888
|
+
const c = ((D = I.value) == null ? void 0 : D.content.getParas()) ?? [], f = o(Array.from(c[d.paraIndex].childNodes), d);
|
|
1889
|
+
f.some((u) => !u.isHighlight) || f.forEach((u) => {
|
|
1893
1890
|
const R = window.getSelection();
|
|
1894
1891
|
if (q(R)) return;
|
|
1895
1892
|
const F = document.createRange();
|
|
1896
1893
|
F.setStart(u.node, u.startOffset), F.setEnd(u.node, u.endOffset), F.surroundContents(B(u.matchedContent)), R.removeAllRanges(), R.addRange(F), F.collapse(!1);
|
|
1897
1894
|
});
|
|
1898
1895
|
};
|
|
1899
|
-
|
|
1896
|
+
t(i).forEach(h);
|
|
1900
1897
|
},
|
|
1901
1898
|
unrenderHighlight: () => {
|
|
1902
1899
|
var h;
|
|
1903
1900
|
Array.from(
|
|
1904
1901
|
((h = I.value) == null ? void 0 : h._editorElement.querySelectorAll(`.${yC}`)) ?? []
|
|
1905
1902
|
).forEach((d) => {
|
|
1906
|
-
const c = Array.from(d.childNodes),
|
|
1907
|
-
c.forEach((F) => R.appendChild(F)), d.replaceWith(R), lg(
|
|
1903
|
+
const c = Array.from(d.childNodes), f = c[0], D = c.length - 1, u = c[D] !== c[0] && HA(c[D]) ? c[D] : null, R = document.createDocumentFragment();
|
|
1904
|
+
c.forEach((F) => R.appendChild(F)), d.replaceWith(R), lg(f), u && lg(u);
|
|
1908
1905
|
});
|
|
1909
1906
|
}
|
|
1910
1907
|
};
|
|
1911
1908
|
}, Dt = Symbol("ArcoConfigProvider"), ut = "arco", yt = "$arco", vg = (I) => {
|
|
1912
|
-
var E, B,
|
|
1909
|
+
var E, B, t;
|
|
1913
1910
|
const o = yB(), r = gg(Dt, void 0);
|
|
1914
|
-
return `${(
|
|
1911
|
+
return `${(t = (B = r == null ? void 0 : r.prefixCls) != null ? B : (E = o == null ? void 0 : o.appContext.config.globalProperties[yt]) == null ? void 0 : E.classPrefix) != null ? t : ut}-${I}`;
|
|
1915
1912
|
}, ft = Object.prototype.toString;
|
|
1916
1913
|
function qg(I) {
|
|
1917
1914
|
return ft.call(I) === "[object Number]" && I === I;
|
|
1918
1915
|
}
|
|
1919
1916
|
var xg = (I, E) => {
|
|
1920
|
-
for (const [B,
|
|
1921
|
-
I[B] =
|
|
1917
|
+
for (const [B, t] of E)
|
|
1918
|
+
I[B] = t;
|
|
1922
1919
|
return I;
|
|
1923
1920
|
};
|
|
1924
1921
|
const Rt = vA({
|
|
@@ -1948,12 +1945,12 @@ const Rt = vA({
|
|
|
1948
1945
|
click: (I) => !0
|
|
1949
1946
|
},
|
|
1950
1947
|
setup(I, { emit: E }) {
|
|
1951
|
-
const B = vg("icon"),
|
|
1948
|
+
const B = vg("icon"), t = MA(() => [B, `${B}-right`, { [`${B}-spin`]: I.spin }]), o = MA(() => {
|
|
1952
1949
|
const a = {};
|
|
1953
1950
|
return I.size && (a.fontSize = qg(I.size) ? `${I.size}px` : I.size), I.rotate && (a.transform = `rotate(${I.rotate}deg)`), a;
|
|
1954
1951
|
});
|
|
1955
1952
|
return {
|
|
1956
|
-
cls:
|
|
1953
|
+
cls: t,
|
|
1957
1954
|
innerStyle: o,
|
|
1958
1955
|
onClick: (a) => {
|
|
1959
1956
|
E("click", a);
|
|
@@ -1963,7 +1960,7 @@ const Rt = vA({
|
|
|
1963
1960
|
}), Ft = ["stroke-width", "stroke-linecap", "stroke-linejoin"], Nt = /* @__PURE__ */ iA("path", { d: "m16 39.513 15.556-15.557L16 8.4" }, null, -1), Gt = [
|
|
1964
1961
|
Nt
|
|
1965
1962
|
];
|
|
1966
|
-
function kt(I, E, B,
|
|
1963
|
+
function kt(I, E, B, t, o, r) {
|
|
1967
1964
|
return aA(), cA("svg", {
|
|
1968
1965
|
viewBox: "0 0 48 48",
|
|
1969
1966
|
fill: "none",
|
|
@@ -1981,8 +1978,8 @@ var CC = /* @__PURE__ */ xg(Rt, [["render", kt]]);
|
|
|
1981
1978
|
const St = Object.assign(CC, {
|
|
1982
1979
|
install: (I, E) => {
|
|
1983
1980
|
var B;
|
|
1984
|
-
const
|
|
1985
|
-
I.component(
|
|
1981
|
+
const t = (B = E == null ? void 0 : E.iconPrefix) != null ? B : "";
|
|
1982
|
+
I.component(t + CC.name, CC);
|
|
1986
1983
|
}
|
|
1987
1984
|
}), Lt = vA({
|
|
1988
1985
|
name: "IconCheckCircleFill",
|
|
@@ -2011,12 +2008,12 @@ const St = Object.assign(CC, {
|
|
|
2011
2008
|
click: (I) => !0
|
|
2012
2009
|
},
|
|
2013
2010
|
setup(I, { emit: E }) {
|
|
2014
|
-
const B = vg("icon"),
|
|
2011
|
+
const B = vg("icon"), t = MA(() => [B, `${B}-check-circle-fill`, { [`${B}-spin`]: I.spin }]), o = MA(() => {
|
|
2015
2012
|
const a = {};
|
|
2016
2013
|
return I.size && (a.fontSize = qg(I.size) ? `${I.size}px` : I.size), I.rotate && (a.transform = `rotate(${I.rotate}deg)`), a;
|
|
2017
2014
|
});
|
|
2018
2015
|
return {
|
|
2019
|
-
cls:
|
|
2016
|
+
cls: t,
|
|
2020
2017
|
innerStyle: o,
|
|
2021
2018
|
onClick: (a) => {
|
|
2022
2019
|
E("click", a);
|
|
@@ -2032,7 +2029,7 @@ const St = Object.assign(CC, {
|
|
|
2032
2029
|
}, null, -1), pt = [
|
|
2033
2030
|
Mt
|
|
2034
2031
|
];
|
|
2035
|
-
function Jt(I, E, B,
|
|
2032
|
+
function Jt(I, E, B, t, o, r) {
|
|
2036
2033
|
return aA(), cA("svg", {
|
|
2037
2034
|
viewBox: "0 0 48 48",
|
|
2038
2035
|
fill: "none",
|
|
@@ -2050,8 +2047,8 @@ var BC = /* @__PURE__ */ xg(Lt, [["render", Jt]]);
|
|
|
2050
2047
|
const Yt = Object.assign(BC, {
|
|
2051
2048
|
install: (I, E) => {
|
|
2052
2049
|
var B;
|
|
2053
|
-
const
|
|
2054
|
-
I.component(
|
|
2050
|
+
const t = (B = E == null ? void 0 : E.iconPrefix) != null ? B : "";
|
|
2051
|
+
I.component(t + BC.name, BC);
|
|
2055
2052
|
}
|
|
2056
2053
|
}), Ht = vA({
|
|
2057
2054
|
name: "IconCloseCircleFill",
|
|
@@ -2080,12 +2077,12 @@ const Yt = Object.assign(BC, {
|
|
|
2080
2077
|
click: (I) => !0
|
|
2081
2078
|
},
|
|
2082
2079
|
setup(I, { emit: E }) {
|
|
2083
|
-
const B = vg("icon"),
|
|
2080
|
+
const B = vg("icon"), t = MA(() => [B, `${B}-close-circle-fill`, { [`${B}-spin`]: I.spin }]), o = MA(() => {
|
|
2084
2081
|
const a = {};
|
|
2085
2082
|
return I.size && (a.fontSize = qg(I.size) ? `${I.size}px` : I.size), I.rotate && (a.transform = `rotate(${I.rotate}deg)`), a;
|
|
2086
2083
|
});
|
|
2087
2084
|
return {
|
|
2088
|
-
cls:
|
|
2085
|
+
cls: t,
|
|
2089
2086
|
innerStyle: o,
|
|
2090
2087
|
onClick: (a) => {
|
|
2091
2088
|
E("click", a);
|
|
@@ -2101,7 +2098,7 @@ const Yt = Object.assign(BC, {
|
|
|
2101
2098
|
}, null, -1), vt = [
|
|
2102
2099
|
Kt
|
|
2103
2100
|
];
|
|
2104
|
-
function qt(I, E, B,
|
|
2101
|
+
function qt(I, E, B, t, o, r) {
|
|
2105
2102
|
return aA(), cA("svg", {
|
|
2106
2103
|
viewBox: "0 0 48 48",
|
|
2107
2104
|
fill: "none",
|
|
@@ -2119,8 +2116,8 @@ var QC = /* @__PURE__ */ xg(Ht, [["render", qt]]);
|
|
|
2119
2116
|
const xt = Object.assign(QC, {
|
|
2120
2117
|
install: (I, E) => {
|
|
2121
2118
|
var B;
|
|
2122
|
-
const
|
|
2123
|
-
I.component(
|
|
2119
|
+
const t = (B = E == null ? void 0 : E.iconPrefix) != null ? B : "";
|
|
2120
|
+
I.component(t + QC.name, QC);
|
|
2124
2121
|
}
|
|
2125
2122
|
}), bt = vA({
|
|
2126
2123
|
name: "IconExclamationCircleFill",
|
|
@@ -2149,12 +2146,12 @@ const xt = Object.assign(QC, {
|
|
|
2149
2146
|
click: (I) => !0
|
|
2150
2147
|
},
|
|
2151
2148
|
setup(I, { emit: E }) {
|
|
2152
|
-
const B = vg("icon"),
|
|
2149
|
+
const B = vg("icon"), t = MA(() => [B, `${B}-exclamation-circle-fill`, { [`${B}-spin`]: I.spin }]), o = MA(() => {
|
|
2153
2150
|
const a = {};
|
|
2154
2151
|
return I.size && (a.fontSize = qg(I.size) ? `${I.size}px` : I.size), I.rotate && (a.transform = `rotate(${I.rotate}deg)`), a;
|
|
2155
2152
|
});
|
|
2156
2153
|
return {
|
|
2157
|
-
cls:
|
|
2154
|
+
cls: t,
|
|
2158
2155
|
innerStyle: o,
|
|
2159
2156
|
onClick: (a) => {
|
|
2160
2157
|
E("click", a);
|
|
@@ -2170,7 +2167,7 @@ const xt = Object.assign(QC, {
|
|
|
2170
2167
|
}, null, -1), jt = [
|
|
2171
2168
|
Pt
|
|
2172
2169
|
];
|
|
2173
|
-
function Wt(I, E, B,
|
|
2170
|
+
function Wt(I, E, B, t, o, r) {
|
|
2174
2171
|
return aA(), cA("svg", {
|
|
2175
2172
|
viewBox: "0 0 48 48",
|
|
2176
2173
|
fill: "none",
|
|
@@ -2188,8 +2185,8 @@ var EC = /* @__PURE__ */ xg(bt, [["render", Wt]]);
|
|
|
2188
2185
|
const eC = Object.assign(EC, {
|
|
2189
2186
|
install: (I, E) => {
|
|
2190
2187
|
var B;
|
|
2191
|
-
const
|
|
2192
|
-
I.component(
|
|
2188
|
+
const t = (B = E == null ? void 0 : E.iconPrefix) != null ? B : "";
|
|
2189
|
+
I.component(t + EC.name, EC);
|
|
2193
2190
|
}
|
|
2194
2191
|
}), Vt = vA({
|
|
2195
2192
|
name: "IconInfoCircleFill",
|
|
@@ -2218,12 +2215,12 @@ const eC = Object.assign(EC, {
|
|
|
2218
2215
|
click: (I) => !0
|
|
2219
2216
|
},
|
|
2220
2217
|
setup(I, { emit: E }) {
|
|
2221
|
-
const B = vg("icon"),
|
|
2218
|
+
const B = vg("icon"), t = MA(() => [B, `${B}-info-circle-fill`, { [`${B}-spin`]: I.spin }]), o = MA(() => {
|
|
2222
2219
|
const a = {};
|
|
2223
2220
|
return I.size && (a.fontSize = qg(I.size) ? `${I.size}px` : I.size), I.rotate && (a.transform = `rotate(${I.rotate}deg)`), a;
|
|
2224
2221
|
});
|
|
2225
2222
|
return {
|
|
2226
|
-
cls:
|
|
2223
|
+
cls: t,
|
|
2227
2224
|
innerStyle: o,
|
|
2228
2225
|
onClick: (a) => {
|
|
2229
2226
|
E("click", a);
|
|
@@ -2239,7 +2236,7 @@ const eC = Object.assign(EC, {
|
|
|
2239
2236
|
}, null, -1), zt = [
|
|
2240
2237
|
Xt
|
|
2241
2238
|
];
|
|
2242
|
-
function Zt(I, E, B,
|
|
2239
|
+
function Zt(I, E, B, t, o, r) {
|
|
2243
2240
|
return aA(), cA("svg", {
|
|
2244
2241
|
viewBox: "0 0 48 48",
|
|
2245
2242
|
fill: "none",
|
|
@@ -2257,8 +2254,8 @@ var tC = /* @__PURE__ */ xg(Vt, [["render", Zt]]);
|
|
|
2257
2254
|
const fC = Object.assign(tC, {
|
|
2258
2255
|
install: (I, E) => {
|
|
2259
2256
|
var B;
|
|
2260
|
-
const
|
|
2261
|
-
I.component(
|
|
2257
|
+
const t = (B = E == null ? void 0 : E.iconPrefix) != null ? B : "";
|
|
2258
|
+
I.component(t + tC.name, tC);
|
|
2262
2259
|
}
|
|
2263
2260
|
}), _t = vA({
|
|
2264
2261
|
name: "IconMore",
|
|
@@ -2287,12 +2284,12 @@ const fC = Object.assign(tC, {
|
|
|
2287
2284
|
click: (I) => !0
|
|
2288
2285
|
},
|
|
2289
2286
|
setup(I, { emit: E }) {
|
|
2290
|
-
const B = vg("icon"),
|
|
2287
|
+
const B = vg("icon"), t = MA(() => [B, `${B}-more`, { [`${B}-spin`]: I.spin }]), o = MA(() => {
|
|
2291
2288
|
const a = {};
|
|
2292
2289
|
return I.size && (a.fontSize = qg(I.size) ? `${I.size}px` : I.size), I.rotate && (a.transform = `rotate(${I.rotate}deg)`), a;
|
|
2293
2290
|
});
|
|
2294
2291
|
return {
|
|
2295
|
-
cls:
|
|
2292
|
+
cls: t,
|
|
2296
2293
|
innerStyle: o,
|
|
2297
2294
|
onClick: (a) => {
|
|
2298
2295
|
E("click", a);
|
|
@@ -2307,7 +2304,7 @@ const fC = Object.assign(tC, {
|
|
|
2307
2304
|
Ao,
|
|
2308
2305
|
go
|
|
2309
2306
|
];
|
|
2310
|
-
function Co(I, E, B,
|
|
2307
|
+
function Co(I, E, B, t, o, r) {
|
|
2311
2308
|
return aA(), cA("svg", {
|
|
2312
2309
|
viewBox: "0 0 48 48",
|
|
2313
2310
|
fill: "none",
|
|
@@ -2325,24 +2322,24 @@ var oC = /* @__PURE__ */ xg(_t, [["render", Co]]);
|
|
|
2325
2322
|
const Bo = Object.assign(oC, {
|
|
2326
2323
|
install: (I, E) => {
|
|
2327
2324
|
var B;
|
|
2328
|
-
const
|
|
2329
|
-
I.component(
|
|
2325
|
+
const t = (B = E == null ? void 0 : E.iconPrefix) != null ? B : "";
|
|
2326
|
+
I.component(t + oC.name, oC);
|
|
2330
2327
|
}
|
|
2331
2328
|
});
|
|
2332
2329
|
var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDescriptor, eo = Object.getOwnPropertyNames, to = Object.getPrototypeOf, oo = Object.prototype.hasOwnProperty, nC = ((I) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(I, { get: (E, B) => (typeof require < "u" ? require : E)[B] }) : I)(function(I) {
|
|
2333
2330
|
if (typeof require < "u") return require.apply(this, arguments);
|
|
2334
2331
|
throw Error('Dynamic require of "' + I + '" is not supported');
|
|
2335
|
-
}), no = (I, E) => () => (E || I((E = { exports: {} }).exports, E), E.exports), io = (I, E, B,
|
|
2336
|
-
if (E && typeof E == "object" || typeof E == "function") for (let o of eo(E)) !oo.call(I, o) && o !== B && bB(I, o, { get: () => E[o], enumerable: !(
|
|
2332
|
+
}), no = (I, E) => () => (E || I((E = { exports: {} }).exports, E), E.exports), io = (I, E, B, t) => {
|
|
2333
|
+
if (E && typeof E == "object" || typeof E == "function") for (let o of eo(E)) !oo.call(I, o) && o !== B && bB(I, o, { get: () => E[o], enumerable: !(t = Eo(E, o)) || t.enumerable });
|
|
2337
2334
|
return I;
|
|
2338
2335
|
}, ro = (I, E, B) => (B = I != null ? Qo(to(I)) : {}, io(!I || !I.__esModule ? bB(B, "default", { value: I, enumerable: !0 }) : B, I)), ao = no((I, E) => {
|
|
2339
2336
|
var B = (() => {
|
|
2340
2337
|
var o;
|
|
2341
|
-
var
|
|
2342
|
-
return typeof __filename < "u" && (
|
|
2338
|
+
var t = typeof document < "u" ? (o = document.currentScript) == null ? void 0 : o.src : void 0;
|
|
2339
|
+
return typeof __filename < "u" && (t || (t = __filename)), function(r = {}) {
|
|
2343
2340
|
var a, i = Object.assign({}, r), h, d, c = new Promise((A, g) => {
|
|
2344
2341
|
h = A, d = g;
|
|
2345
|
-
}),
|
|
2342
|
+
}), f = typeof window == "object", D = typeof importScripts == "function", u = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string", R = Object.assign({}, i), F = "./this.program", M = (A, g) => {
|
|
2346
2343
|
throw g;
|
|
2347
2344
|
}, G = "", S, p, m;
|
|
2348
2345
|
if (u) {
|
|
@@ -2357,7 +2354,7 @@ var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDe
|
|
|
2357
2354
|
}, !i.thisProgram && process.argv.length > 1 && (F = process.argv[1].replace(/\\/g, "/")), process.argv.slice(2), M = (A, g) => {
|
|
2358
2355
|
throw process.exitCode = A, g;
|
|
2359
2356
|
};
|
|
2360
|
-
} else (
|
|
2357
|
+
} else (f || D) && (D ? G = self.location.href : typeof document < "u" && document.currentScript && (G = document.currentScript.src), t && (G = t), G.startsWith("blob:") ? G = "" : G = G.substr(0, G.replace(/[?#].*/, "").lastIndexOf("/") + 1), S = (A) => {
|
|
2361
2358
|
var g = new XMLHttpRequest();
|
|
2362
2359
|
return g.open("GET", A, !1), g.send(null), g.responseText;
|
|
2363
2360
|
}, D && (m = (A) => {
|
|
@@ -2399,7 +2396,7 @@ var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDe
|
|
|
2399
2396
|
mI(Z);
|
|
2400
2397
|
}
|
|
2401
2398
|
function DA() {
|
|
2402
|
-
!i.noFSInit && !
|
|
2399
|
+
!i.noFSInit && !e.init.initialized && e.init(), e.ignorePermissions = !1, mI(eA);
|
|
2403
2400
|
}
|
|
2404
2401
|
function SA() {
|
|
2405
2402
|
if (i.postRun) for (typeof i.postRun == "function" && (i.postRun = [i.postRun]); i.postRun.length; ) Ig(i.postRun.shift());
|
|
@@ -2550,14 +2547,14 @@ var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDe
|
|
|
2550
2547
|
EI[w] = g;
|
|
2551
2548
|
});
|
|
2552
2549
|
function Q(w) {
|
|
2553
|
-
var
|
|
2554
|
-
|
|
2555
|
-
for (var k = 0; k < A.length; ++k) Eg(A[k],
|
|
2550
|
+
var y = C(w);
|
|
2551
|
+
y.length !== A.length && eI("Mismatched type converter count");
|
|
2552
|
+
for (var k = 0; k < A.length; ++k) Eg(A[k], y[k]);
|
|
2556
2553
|
}
|
|
2557
2554
|
var n = new Array(g.length), s = [], l = 0;
|
|
2558
|
-
g.forEach((w,
|
|
2559
|
-
wg.hasOwnProperty(w) ? n[
|
|
2560
|
-
n[
|
|
2555
|
+
g.forEach((w, y) => {
|
|
2556
|
+
wg.hasOwnProperty(w) ? n[y] = wg[w] : (s.push(w), Fg.hasOwnProperty(w) || (Fg[w] = []), Fg[w].push(() => {
|
|
2557
|
+
n[y] = wg[w], ++l, l === s.length && Q(n);
|
|
2561
2558
|
}));
|
|
2562
2559
|
}), s.length === 0 && Q(n);
|
|
2563
2560
|
};
|
|
@@ -2638,8 +2635,8 @@ var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDe
|
|
|
2638
2635
|
if (!l) return n.call(this);
|
|
2639
2636
|
var w;
|
|
2640
2637
|
this.isConst ? w = l.constPointerType : w = l.pointerType;
|
|
2641
|
-
var
|
|
2642
|
-
return
|
|
2638
|
+
var y = qC(g, this.registeredClass, w.registeredClass);
|
|
2639
|
+
return y === null ? n.call(this) : this.isSmartPointer ? tI(w.registeredClass.instancePrototype, { ptrType: w, ptr: y, smartPtrType: this, smartPtr: A }) : tI(w.registeredClass.instancePrototype, { ptrType: w, ptr: y });
|
|
2643
2640
|
}
|
|
2644
2641
|
var Wg = (A) => typeof FinalizationRegistry > "u" ? (Wg = (g) => g, A) : (qI = new FinalizationRegistry((g) => {
|
|
2645
2642
|
vC(g.$$);
|
|
@@ -2741,8 +2738,8 @@ var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDe
|
|
|
2741
2738
|
(g = this.rawDestructor) == null || g.call(this, A);
|
|
2742
2739
|
}, argPackAdvance: og, readValueFromPointer: iI, fromWireType: cQ });
|
|
2743
2740
|
};
|
|
2744
|
-
function rI(A, g, C, Q, n, s, l, w,
|
|
2745
|
-
this.name = A, this.registeredClass = g, this.isReference = C, this.isConst = Q, this.isSmartPointer = n, this.pointeeType = s, this.sharingPolicy = l, this.rawGetPointee = w, this.rawConstructor =
|
|
2741
|
+
function rI(A, g, C, Q, n, s, l, w, y, k, Y) {
|
|
2742
|
+
this.name = A, this.registeredClass = g, this.isReference = C, this.isConst = Q, this.isSmartPointer = n, this.pointeeType = s, this.sharingPolicy = l, this.rawGetPointee = w, this.rawConstructor = y, this.rawShare = k, this.rawDestructor = Y, !n && g.baseClass === void 0 ? Q ? (this.toWireType = yQ, this.destructorFunction = null) : (this.toWireType = RQ, this.destructorFunction = null) : this.toWireType = fQ;
|
|
2746
2743
|
}
|
|
2747
2744
|
var NQ = (A, g, C) => {
|
|
2748
2745
|
i.hasOwnProperty(A) || eI("Replacing nonexistent public symbol"), i[A].overloadTable !== void 0 && C !== void 0 ? i[A].overloadTable[C] = g : (i[A] = g, i[A].argCount = C);
|
|
@@ -2786,13 +2783,13 @@ var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDe
|
|
|
2786
2783
|
}
|
|
2787
2784
|
}
|
|
2788
2785
|
throw g.forEach(n), new bC(`${A}: ` + C.map(TC).join([", "]));
|
|
2789
|
-
}, UQ = (A, g, C, Q, n, s, l, w,
|
|
2790
|
-
Y = zA(Y), s = Dg(n, s), w && (w = Dg(l, w)), k && (k = Dg(
|
|
2786
|
+
}, UQ = (A, g, C, Q, n, s, l, w, y, k, Y, j, x) => {
|
|
2787
|
+
Y = zA(Y), s = Dg(n, s), w && (w = Dg(l, w)), k && (k = Dg(y, k)), x = Dg(j, x);
|
|
2791
2788
|
var V = DQ(Y);
|
|
2792
2789
|
dQ(V, function() {
|
|
2793
2790
|
aI(`Cannot construct ${Y} due to unbound types`, [Q]);
|
|
2794
2791
|
}), hg([A, g, C], Q ? [Q] : [], (_) => {
|
|
2795
|
-
var
|
|
2792
|
+
var GA;
|
|
2796
2793
|
_ = _[0];
|
|
2797
2794
|
var hA, FA;
|
|
2798
2795
|
Q ? (hA = _.registeredClass, FA = hA.instancePrototype) : FA = oI.prototype;
|
|
@@ -2804,8 +2801,8 @@ var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDe
|
|
|
2804
2801
|
return iB.apply(this, AC);
|
|
2805
2802
|
}), L = Object.create(FA, { constructor: { value: LA } });
|
|
2806
2803
|
LA.prototype = L;
|
|
2807
|
-
var T = new uQ(Y, LA, L,
|
|
2808
|
-
T.baseClass && ((
|
|
2804
|
+
var T = new uQ(Y, LA, L, x, hA, s, w, k);
|
|
2805
|
+
T.baseClass && ((GA = T.baseClass).__derivedClasses ?? (GA.__derivedClasses = []), T.baseClass.__derivedClasses.push(T));
|
|
2809
2806
|
var UA = new rI(Y, T, !0, !1, !1), sA = new rI(Y + "*", T, !1, !1, !1), VA = new rI(Y + " const*", T, !1, !0, !1);
|
|
2810
2807
|
return xC[A] = { pointerType: sA, constPointerType: VA }, NQ(V, LA), [UA, sA, VA];
|
|
2811
2808
|
});
|
|
@@ -2828,7 +2825,7 @@ var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDe
|
|
|
2828
2825
|
return n instanceof Object ? n : Q;
|
|
2829
2826
|
}
|
|
2830
2827
|
function JQ(A, g, C, Q) {
|
|
2831
|
-
for (var n = PC(A), s = A.length, l = "", w = "",
|
|
2828
|
+
for (var n = PC(A), s = A.length, l = "", w = "", y = 0; y < s - 2; ++y) l += (y !== 0 ? ", " : "") + "arg" + y, w += (y !== 0 ? ", " : "") + "arg" + y + "Wired";
|
|
2832
2829
|
var k = `
|
|
2833
2830
|
return function (${l}) {
|
|
2834
2831
|
if (arguments.length !== ${s - 2}) {
|
|
@@ -2839,15 +2836,15 @@ var Qo = Object.create, bB = Object.defineProperty, Eo = Object.getOwnPropertyDe
|
|
|
2839
2836
|
var Y = n ? "destructors" : "null", j = ["humanName", "throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"];
|
|
2840
2837
|
g && (k += "var thisWired = classParam['toWireType'](" + Y + `, this);
|
|
2841
2838
|
`);
|
|
2842
|
-
for (var
|
|
2843
|
-
`, j.push("argType" +
|
|
2839
|
+
for (var y = 0; y < s - 2; ++y) k += "var arg" + y + "Wired = argType" + y + "['toWireType'](" + Y + ", arg" + y + `);
|
|
2840
|
+
`, j.push("argType" + y);
|
|
2844
2841
|
if (g && (w = "thisWired" + (w.length > 0 ? ", " : "") + w), k += (C || Q ? "var rv = " : "") + "invoker(fn" + (w.length > 0 ? ", " : "") + w + `);
|
|
2845
2842
|
`, n) k += `runDestructors(destructors);
|
|
2846
2843
|
`;
|
|
2847
|
-
else for (var
|
|
2848
|
-
var
|
|
2849
|
-
A[
|
|
2850
|
-
`, j.push(`${
|
|
2844
|
+
else for (var y = g ? 1 : 2; y < A.length; ++y) {
|
|
2845
|
+
var x = y === 1 ? "thisWired" : "arg" + (y - 2) + "Wired";
|
|
2846
|
+
A[y].destructorFunction !== null && (k += `${x}_dtor(${x});
|
|
2847
|
+
`, j.push(`${x}_dtor`));
|
|
2851
2848
|
}
|
|
2852
2849
|
return C && (k += `var ret = retType['fromWireType'](rv);
|
|
2853
2850
|
return ret;
|
|
@@ -2857,11 +2854,11 @@ return ret;
|
|
|
2857
2854
|
function PI(A, g, C, Q, n, s) {
|
|
2858
2855
|
var l = g.length;
|
|
2859
2856
|
l < 2 && oA("argTypes array size mismatch! Must at least get return value and 'this' types!");
|
|
2860
|
-
for (var w = g[1] !== null && C !== null,
|
|
2861
|
-
if (!
|
|
2862
|
-
let [
|
|
2863
|
-
|
|
2864
|
-
var _ = pQ(Function,
|
|
2857
|
+
for (var w = g[1] !== null && C !== null, y = PC(g), k = g[0].name !== "void", Y = [A, oA, Q, n, MQ, g[0], g[1]], j = 0; j < l - 2; ++j) Y.push(g[j + 2]);
|
|
2858
|
+
if (!y) for (var j = w ? 1 : 2; j < g.length; ++j) g[j].destructorFunction !== null && Y.push(g[j].destructorFunction);
|
|
2859
|
+
let [x, V] = JQ(g, w, k, s);
|
|
2860
|
+
x.push(V);
|
|
2861
|
+
var _ = pQ(Function, x)(...Y);
|
|
2865
2862
|
return nI(A, _);
|
|
2866
2863
|
}
|
|
2867
2864
|
var jI = (A, g) => {
|
|
@@ -2872,18 +2869,18 @@ return ret;
|
|
|
2872
2869
|
let g = A.indexOf("(");
|
|
2873
2870
|
return g !== -1 ? A.substr(0, g) : A;
|
|
2874
2871
|
}, YQ = (A, g, C, Q, n, s, l, w) => {
|
|
2875
|
-
var
|
|
2872
|
+
var y = jI(C, Q);
|
|
2876
2873
|
g = zA(g), g = jC(g), s = Dg(n, s), hg([], [A], (k) => {
|
|
2877
2874
|
k = k[0];
|
|
2878
2875
|
var Y = `${k.name}.${g}`;
|
|
2879
2876
|
function j() {
|
|
2880
|
-
aI(`Cannot call ${Y} due to unbound types`,
|
|
2877
|
+
aI(`Cannot call ${Y} due to unbound types`, y);
|
|
2881
2878
|
}
|
|
2882
2879
|
g.startsWith("@@") && (g = Symbol[g.substring(2)]);
|
|
2883
|
-
var
|
|
2884
|
-
return
|
|
2880
|
+
var x = k.registeredClass.constructor;
|
|
2881
|
+
return x[g] === void 0 ? (j.argCount = C - 1, x[g] = j) : (bI(x, g, Y), x[g].overloadTable[C - 1] = j), hg([], y, (V) => {
|
|
2885
2882
|
var _ = [V[0], null].concat(V.slice(1)), hA = PI(Y, _, null, s, l, w);
|
|
2886
|
-
if (
|
|
2883
|
+
if (x[g].overloadTable === void 0 ? (hA.argCount = C - 1, x[g] = hA) : x[g].overloadTable[C - 1] = hA, k.registeredClass.__derivedClasses) for (let FA of k.registeredClass.__derivedClasses) FA.constructor.hasOwnProperty(g) || (FA.constructor[g] = hA);
|
|
2887
2884
|
return [];
|
|
2888
2885
|
}), [];
|
|
2889
2886
|
});
|
|
@@ -2891,24 +2888,24 @@ return ret;
|
|
|
2891
2888
|
var l = jI(g, C);
|
|
2892
2889
|
n = Dg(Q, n), hg([], [A], (w) => {
|
|
2893
2890
|
w = w[0];
|
|
2894
|
-
var
|
|
2891
|
+
var y = `constructor ${w.name}`;
|
|
2895
2892
|
if (w.registeredClass.constructor_body === void 0 && (w.registeredClass.constructor_body = []), w.registeredClass.constructor_body[g - 1] !== void 0) throw new Ng(`Cannot register multiple constructors with identical number of parameters (${g - 1}) for class '${w.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);
|
|
2896
2893
|
return w.registeredClass.constructor_body[g - 1] = () => {
|
|
2897
2894
|
aI(`Cannot construct ${w.name} due to unbound types`, l);
|
|
2898
|
-
}, hg([], l, (k) => (k.splice(1, 0, null), w.registeredClass.constructor_body[g - 1] = PI(
|
|
2895
|
+
}, hg([], l, (k) => (k.splice(1, 0, null), w.registeredClass.constructor_body[g - 1] = PI(y, k, null, n, s), [])), [];
|
|
2899
2896
|
});
|
|
2900
|
-
}, mQ = (A, g, C, Q, n, s, l, w,
|
|
2897
|
+
}, mQ = (A, g, C, Q, n, s, l, w, y) => {
|
|
2901
2898
|
var k = jI(C, Q);
|
|
2902
2899
|
g = zA(g), g = jC(g), s = Dg(n, s), hg([], [A], (Y) => {
|
|
2903
2900
|
Y = Y[0];
|
|
2904
2901
|
var j = `${Y.name}.${g}`;
|
|
2905
2902
|
g.startsWith("@@") && (g = Symbol[g.substring(2)]), w && Y.registeredClass.pureVirtualFunctions.push(g);
|
|
2906
|
-
function
|
|
2903
|
+
function x() {
|
|
2907
2904
|
aI(`Cannot call ${j} due to unbound types`, k);
|
|
2908
2905
|
}
|
|
2909
2906
|
var V = Y.registeredClass.instancePrototype, _ = V[g];
|
|
2910
|
-
return _ === void 0 || _.overloadTable === void 0 && _.className !== Y.name && _.argCount === C - 2 ? (
|
|
2911
|
-
var FA = PI(j, hA, Y, s, l,
|
|
2907
|
+
return _ === void 0 || _.overloadTable === void 0 && _.className !== Y.name && _.argCount === C - 2 ? (x.argCount = C - 2, x.className = Y.name, V[g] = x) : (bI(V, g, j), V[g].overloadTable[C - 2] = x), hg([], k, (hA) => {
|
|
2908
|
+
var FA = PI(j, hA, Y, s, l, y);
|
|
2912
2909
|
return V[g].overloadTable === void 0 ? (FA.argCount = C - 2, V[g] = FA) : V[g].overloadTable[C - 2] = FA, [];
|
|
2913
2910
|
}), [];
|
|
2914
2911
|
});
|
|
@@ -2971,18 +2968,18 @@ return ret;
|
|
|
2971
2968
|
var l = 32 - 8 * C;
|
|
2972
2969
|
s = (Y) => Y << l >>> l;
|
|
2973
2970
|
}
|
|
2974
|
-
var w = g.includes("unsigned"),
|
|
2971
|
+
var w = g.includes("unsigned"), y = (Y, j) => {
|
|
2975
2972
|
}, k;
|
|
2976
2973
|
w ? k = function(Y, j) {
|
|
2977
|
-
return
|
|
2974
|
+
return y(j, this.name), j >>> 0;
|
|
2978
2975
|
} : k = function(Y, j) {
|
|
2979
|
-
return
|
|
2976
|
+
return y(j, this.name), j;
|
|
2980
2977
|
}, Eg(A, { name: g, fromWireType: s, toWireType: k, argPackAdvance: og, readValueFromPointer: PQ(g, C, Q !== 0), destructorFunction: null });
|
|
2981
2978
|
}, WQ = (A, g, C) => {
|
|
2982
2979
|
var Q = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], n = Q[g];
|
|
2983
2980
|
function s(l) {
|
|
2984
|
-
var w = H[l >> 2],
|
|
2985
|
-
return new n(U.buffer,
|
|
2981
|
+
var w = H[l >> 2], y = H[l + 4 >> 2];
|
|
2982
|
+
return new n(U.buffer, y, w);
|
|
2986
2983
|
}
|
|
2987
2984
|
C = zA(C), Eg(A, { name: C, fromWireType: s, argPackAdvance: og, readValueFromPointer: s }, { ignoreDuplicateRegistrations: !0 });
|
|
2988
2985
|
}, VQ = (A, g) => {
|
|
@@ -2992,8 +2989,8 @@ return ret;
|
|
|
2992
2989
|
for (var n = C, s = C + Q - 1, l = 0; l < A.length; ++l) {
|
|
2993
2990
|
var w = A.charCodeAt(l);
|
|
2994
2991
|
if (w >= 55296 && w <= 57343) {
|
|
2995
|
-
var
|
|
2996
|
-
w = 65536 + ((w & 1023) << 10) |
|
|
2992
|
+
var y = A.charCodeAt(++l);
|
|
2993
|
+
w = 65536 + ((w & 1023) << 10) | y & 1023;
|
|
2997
2994
|
}
|
|
2998
2995
|
if (w <= 127) {
|
|
2999
2996
|
if (C >= s) break;
|
|
@@ -3030,8 +3027,8 @@ return ret;
|
|
|
3030
3027
|
s += String.fromCharCode((l & 31) << 6 | w);
|
|
3031
3028
|
continue;
|
|
3032
3029
|
}
|
|
3033
|
-
var
|
|
3034
|
-
if ((l & 240) == 224 ? l = (l & 15) << 12 | w << 6 |
|
|
3030
|
+
var y = A[g++] & 63;
|
|
3031
|
+
if ((l & 240) == 224 ? l = (l & 15) << 12 | w << 6 | y : l = (l & 7) << 18 | w << 12 | y << 6 | A[g++] & 63, l < 65536) s += String.fromCharCode(l);
|
|
3035
3032
|
else {
|
|
3036
3033
|
var k = l - 65536;
|
|
3037
3034
|
s += String.fromCharCode(55296 | k >> 10, 56320 | k & 1023);
|
|
@@ -3043,29 +3040,29 @@ return ret;
|
|
|
3043
3040
|
var C = g === "std::string";
|
|
3044
3041
|
Eg(A, { name: g, fromWireType(Q) {
|
|
3045
3042
|
var n = H[Q >> 2], s = Q + 4, l;
|
|
3046
|
-
if (C) for (var w = s,
|
|
3047
|
-
var k = s +
|
|
3048
|
-
if (
|
|
3043
|
+
if (C) for (var w = s, y = 0; y <= n; ++y) {
|
|
3044
|
+
var k = s + y;
|
|
3045
|
+
if (y == n || v[k] == 0) {
|
|
3049
3046
|
var Y = k - w, j = cI(w, Y);
|
|
3050
3047
|
l === void 0 ? l = j : (l += "\0", l += j), w = k + 1;
|
|
3051
3048
|
}
|
|
3052
3049
|
}
|
|
3053
3050
|
else {
|
|
3054
|
-
for (var
|
|
3055
|
-
l =
|
|
3051
|
+
for (var x = new Array(n), y = 0; y < n; ++y) x[y] = String.fromCharCode(v[s + y]);
|
|
3052
|
+
l = x.join("");
|
|
3056
3053
|
}
|
|
3057
3054
|
return tg(Q), l;
|
|
3058
3055
|
}, toWireType(Q, n) {
|
|
3059
3056
|
n instanceof ArrayBuffer && (n = new Uint8Array(n));
|
|
3060
3057
|
var s, l = typeof n == "string";
|
|
3061
3058
|
l || n instanceof Uint8Array || n instanceof Uint8ClampedArray || n instanceof Int8Array || oA("Cannot pass non-string to std::string"), C && l ? s = XI(n) : s = n.length;
|
|
3062
|
-
var w = $I(4 + s + 1),
|
|
3063
|
-
if (H[w >> 2] = s, C && l) VC(n,
|
|
3059
|
+
var w = $I(4 + s + 1), y = w + 4;
|
|
3060
|
+
if (H[w >> 2] = s, C && l) VC(n, y, s + 1);
|
|
3064
3061
|
else if (l) for (var k = 0; k < s; ++k) {
|
|
3065
3062
|
var Y = n.charCodeAt(k);
|
|
3066
|
-
Y > 255 && (tg(
|
|
3063
|
+
Y > 255 && (tg(y), oA("String has UTF-16 code units that do not fit in 8 bits")), v[y + k] = Y;
|
|
3067
3064
|
}
|
|
3068
|
-
else for (var k = 0; k < s; ++k) v[
|
|
3065
|
+
else for (var k = 0; k < s; ++k) v[y + k] = n[k];
|
|
3069
3066
|
return Q !== null && Q.push(tg, w), w;
|
|
3070
3067
|
}, argPackAdvance: og, readValueFromPointer: iI, destructorFunction(Q) {
|
|
3071
3068
|
tg(Q);
|
|
@@ -3118,18 +3115,18 @@ return ret;
|
|
|
3118
3115
|
C = zA(C);
|
|
3119
3116
|
var Q, n, s, l;
|
|
3120
3117
|
g === 2 ? (Q = XQ, n = zQ, l = ZQ, s = (w) => z[w >> 1]) : g === 4 && (Q = _Q, n = $Q, l = AE, s = (w) => H[w >> 2]), Eg(A, { name: C, fromWireType: (w) => {
|
|
3121
|
-
for (var
|
|
3122
|
-
var
|
|
3123
|
-
if (j ==
|
|
3124
|
-
var V =
|
|
3125
|
-
k === void 0 ? k = _ : (k += "\0", k += _), Y =
|
|
3118
|
+
for (var y = H[w >> 2], k, Y = w + 4, j = 0; j <= y; ++j) {
|
|
3119
|
+
var x = w + 4 + j * g;
|
|
3120
|
+
if (j == y || s(x) == 0) {
|
|
3121
|
+
var V = x - Y, _ = Q(Y, V);
|
|
3122
|
+
k === void 0 ? k = _ : (k += "\0", k += _), Y = x + g;
|
|
3126
3123
|
}
|
|
3127
3124
|
}
|
|
3128
3125
|
return tg(w), k;
|
|
3129
|
-
}, toWireType: (w,
|
|
3130
|
-
typeof
|
|
3131
|
-
var k = l(
|
|
3132
|
-
return H[Y >> 2] = k / g, n(
|
|
3126
|
+
}, toWireType: (w, y) => {
|
|
3127
|
+
typeof y != "string" && oA(`Cannot pass non-string to C++ string type ${C}`);
|
|
3128
|
+
var k = l(y), Y = $I(4 + k + g);
|
|
3129
|
+
return H[Y >> 2] = k / g, n(y, Y + 4, k + g), w !== null && w.push(tg, Y), Y;
|
|
3133
3130
|
}, argPackAdvance: og, readValueFromPointer: iI, destructorFunction(w) {
|
|
3134
3131
|
tg(w);
|
|
3135
3132
|
} });
|
|
@@ -3236,7 +3233,7 @@ return ret;
|
|
|
3236
3233
|
Qg("initRandomDevice");
|
|
3237
3234
|
}, IB = (A) => (IB = wE())(A), eg = { resolve: (...A) => {
|
|
3238
3235
|
for (var g = "", C = !1, Q = A.length - 1; Q >= -1 && !C; Q--) {
|
|
3239
|
-
var n = Q >= 0 ? A[Q] :
|
|
3236
|
+
var n = Q >= 0 ? A[Q] : e.cwd();
|
|
3240
3237
|
if (typeof n != "string") throw new TypeError("Arguments to path.resolve must be strings");
|
|
3241
3238
|
if (!n) return "";
|
|
3242
3239
|
g = n + "/" + g, C = lA.isAbs(n);
|
|
@@ -3253,8 +3250,8 @@ return ret;
|
|
|
3253
3250
|
l = w;
|
|
3254
3251
|
break;
|
|
3255
3252
|
}
|
|
3256
|
-
for (var
|
|
3257
|
-
return
|
|
3253
|
+
for (var y = [], w = l; w < Q.length; w++) y.push("..");
|
|
3254
|
+
return y = y.concat(n.slice(l)), y.join("/");
|
|
3258
3255
|
} }, ZI = [];
|
|
3259
3256
|
function lI(A, g, C) {
|
|
3260
3257
|
var Q = XI(A) + 1, n = new Array(Q), s = OI(A, n, 0, n.length);
|
|
@@ -3282,35 +3279,35 @@ return ret;
|
|
|
3282
3279
|
}, ug = { ttys: [], init() {
|
|
3283
3280
|
}, shutdown() {
|
|
3284
3281
|
}, register(A, g) {
|
|
3285
|
-
ug.ttys[A] = { input: [], output: [], ops: g },
|
|
3282
|
+
ug.ttys[A] = { input: [], output: [], ops: g }, e.registerDevice(A, ug.stream_ops);
|
|
3286
3283
|
}, stream_ops: { open(A) {
|
|
3287
3284
|
var g = ug.ttys[A.node.rdev];
|
|
3288
|
-
if (!g) throw new
|
|
3285
|
+
if (!g) throw new e.ErrnoError(43);
|
|
3289
3286
|
A.tty = g, A.seekable = !1;
|
|
3290
3287
|
}, close(A) {
|
|
3291
3288
|
A.tty.ops.fsync(A.tty);
|
|
3292
3289
|
}, fsync(A) {
|
|
3293
3290
|
A.tty.ops.fsync(A.tty);
|
|
3294
3291
|
}, read(A, g, C, Q, n) {
|
|
3295
|
-
if (!A.tty || !A.tty.ops.get_char) throw new
|
|
3292
|
+
if (!A.tty || !A.tty.ops.get_char) throw new e.ErrnoError(60);
|
|
3296
3293
|
for (var s = 0, l = 0; l < Q; l++) {
|
|
3297
3294
|
var w;
|
|
3298
3295
|
try {
|
|
3299
3296
|
w = A.tty.ops.get_char(A.tty);
|
|
3300
3297
|
} catch {
|
|
3301
|
-
throw new
|
|
3298
|
+
throw new e.ErrnoError(29);
|
|
3302
3299
|
}
|
|
3303
|
-
if (w === void 0 && s === 0) throw new
|
|
3300
|
+
if (w === void 0 && s === 0) throw new e.ErrnoError(6);
|
|
3304
3301
|
if (w == null) break;
|
|
3305
3302
|
s++, g[C + l] = w;
|
|
3306
3303
|
}
|
|
3307
3304
|
return s && (A.node.timestamp = Date.now()), s;
|
|
3308
3305
|
}, write(A, g, C, Q, n) {
|
|
3309
|
-
if (!A.tty || !A.tty.ops.put_char) throw new
|
|
3306
|
+
if (!A.tty || !A.tty.ops.put_char) throw new e.ErrnoError(60);
|
|
3310
3307
|
try {
|
|
3311
3308
|
for (var s = 0; s < Q; s++) A.tty.ops.put_char(A.tty, g[C + s]);
|
|
3312
3309
|
} catch {
|
|
3313
|
-
throw new
|
|
3310
|
+
throw new e.ErrnoError(29);
|
|
3314
3311
|
}
|
|
3315
3312
|
return Q && (A.node.timestamp = Date.now()), s;
|
|
3316
3313
|
} }, default_tty_ops: { get_char(A) {
|
|
@@ -3336,10 +3333,10 @@ return ret;
|
|
|
3336
3333
|
}, gA = { ops_table: null, mount(A) {
|
|
3337
3334
|
return gA.createNode(null, "/", 16895, 0);
|
|
3338
3335
|
}, createNode(A, g, C, Q) {
|
|
3339
|
-
if (
|
|
3340
|
-
gA.ops_table || (gA.ops_table = { dir: { node: { getattr: gA.node_ops.getattr, setattr: gA.node_ops.setattr, lookup: gA.node_ops.lookup, mknod: gA.node_ops.mknod, rename: gA.node_ops.rename, unlink: gA.node_ops.unlink, rmdir: gA.node_ops.rmdir, readdir: gA.node_ops.readdir, symlink: gA.node_ops.symlink }, stream: { llseek: gA.stream_ops.llseek } }, file: { node: { getattr: gA.node_ops.getattr, setattr: gA.node_ops.setattr }, stream: { llseek: gA.stream_ops.llseek, read: gA.stream_ops.read, write: gA.stream_ops.write, allocate: gA.stream_ops.allocate, mmap: gA.stream_ops.mmap, msync: gA.stream_ops.msync } }, link: { node: { getattr: gA.node_ops.getattr, setattr: gA.node_ops.setattr, readlink: gA.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: gA.node_ops.getattr, setattr: gA.node_ops.setattr }, stream:
|
|
3341
|
-
var n =
|
|
3342
|
-
return
|
|
3336
|
+
if (e.isBlkdev(C) || e.isFIFO(C)) throw new e.ErrnoError(63);
|
|
3337
|
+
gA.ops_table || (gA.ops_table = { dir: { node: { getattr: gA.node_ops.getattr, setattr: gA.node_ops.setattr, lookup: gA.node_ops.lookup, mknod: gA.node_ops.mknod, rename: gA.node_ops.rename, unlink: gA.node_ops.unlink, rmdir: gA.node_ops.rmdir, readdir: gA.node_ops.readdir, symlink: gA.node_ops.symlink }, stream: { llseek: gA.stream_ops.llseek } }, file: { node: { getattr: gA.node_ops.getattr, setattr: gA.node_ops.setattr }, stream: { llseek: gA.stream_ops.llseek, read: gA.stream_ops.read, write: gA.stream_ops.write, allocate: gA.stream_ops.allocate, mmap: gA.stream_ops.mmap, msync: gA.stream_ops.msync } }, link: { node: { getattr: gA.node_ops.getattr, setattr: gA.node_ops.setattr, readlink: gA.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: gA.node_ops.getattr, setattr: gA.node_ops.setattr }, stream: e.chrdev_stream_ops } });
|
|
3338
|
+
var n = e.createNode(A, g, C, Q);
|
|
3339
|
+
return e.isDir(n.mode) ? (n.node_ops = gA.ops_table.dir.node, n.stream_ops = gA.ops_table.dir.stream, n.contents = {}) : e.isFile(n.mode) ? (n.node_ops = gA.ops_table.file.node, n.stream_ops = gA.ops_table.file.stream, n.usedBytes = 0, n.contents = null) : e.isLink(n.mode) ? (n.node_ops = gA.ops_table.link.node, n.stream_ops = gA.ops_table.link.stream) : e.isChrdev(n.mode) && (n.node_ops = gA.ops_table.chrdev.node, n.stream_ops = gA.ops_table.chrdev.stream), n.timestamp = Date.now(), A && (A.contents[g] = n, A.timestamp = n.timestamp), n;
|
|
3343
3340
|
}, getFileDataAsTypedArray(A) {
|
|
3344
3341
|
return A.contents ? A.contents.subarray ? A.contents.subarray(0, A.usedBytes) : new Uint8Array(A.contents) : new Uint8Array(0);
|
|
3345
3342
|
}, expandFileStorage(A, g) {
|
|
@@ -3358,28 +3355,28 @@ return ret;
|
|
|
3358
3355
|
}
|
|
3359
3356
|
}, node_ops: { getattr(A) {
|
|
3360
3357
|
var g = {};
|
|
3361
|
-
return g.dev =
|
|
3358
|
+
return g.dev = e.isChrdev(A.mode) ? A.id : 1, g.ino = A.id, g.mode = A.mode, g.nlink = 1, g.uid = 0, g.gid = 0, g.rdev = A.rdev, e.isDir(A.mode) ? g.size = 4096 : e.isFile(A.mode) ? g.size = A.usedBytes : e.isLink(A.mode) ? g.size = A.link.length : g.size = 0, g.atime = new Date(A.timestamp), g.mtime = new Date(A.timestamp), g.ctime = new Date(A.timestamp), g.blksize = 4096, g.blocks = Math.ceil(g.size / g.blksize), g;
|
|
3362
3359
|
}, setattr(A, g) {
|
|
3363
3360
|
g.mode !== void 0 && (A.mode = g.mode), g.timestamp !== void 0 && (A.timestamp = g.timestamp), g.size !== void 0 && gA.resizeFileStorage(A, g.size);
|
|
3364
3361
|
}, lookup(A, g) {
|
|
3365
|
-
throw
|
|
3362
|
+
throw e.genericErrors[44];
|
|
3366
3363
|
}, mknod(A, g, C, Q) {
|
|
3367
3364
|
return gA.createNode(A, g, C, Q);
|
|
3368
3365
|
}, rename(A, g, C) {
|
|
3369
|
-
if (
|
|
3366
|
+
if (e.isDir(A.mode)) {
|
|
3370
3367
|
var Q;
|
|
3371
3368
|
try {
|
|
3372
|
-
Q =
|
|
3369
|
+
Q = e.lookupNode(g, C);
|
|
3373
3370
|
} catch {
|
|
3374
3371
|
}
|
|
3375
|
-
if (Q) for (var n in Q.contents) throw new
|
|
3372
|
+
if (Q) for (var n in Q.contents) throw new e.ErrnoError(55);
|
|
3376
3373
|
}
|
|
3377
3374
|
delete A.parent.contents[A.name], A.parent.timestamp = Date.now(), A.name = C, g.contents[C] = A, g.timestamp = A.parent.timestamp, A.parent = g;
|
|
3378
3375
|
}, unlink(A, g) {
|
|
3379
3376
|
delete A.contents[g], A.timestamp = Date.now();
|
|
3380
3377
|
}, rmdir(A, g) {
|
|
3381
|
-
var C =
|
|
3382
|
-
for (var Q in C.contents) throw new
|
|
3378
|
+
var C = e.lookupNode(A, g);
|
|
3379
|
+
for (var Q in C.contents) throw new e.ErrnoError(55);
|
|
3383
3380
|
delete A.contents[g], A.timestamp = Date.now();
|
|
3384
3381
|
}, readdir(A) {
|
|
3385
3382
|
var g = [".", ".."];
|
|
@@ -3389,7 +3386,7 @@ return ret;
|
|
|
3389
3386
|
var Q = gA.createNode(A, g, 41471, 0);
|
|
3390
3387
|
return Q.link = C, Q;
|
|
3391
3388
|
}, readlink(A) {
|
|
3392
|
-
if (!
|
|
3389
|
+
if (!e.isLink(A.mode)) throw new e.ErrnoError(28);
|
|
3393
3390
|
return A.link;
|
|
3394
3391
|
} }, stream_ops: { read(A, g, C, Q, n) {
|
|
3395
3392
|
var s = A.node.contents;
|
|
@@ -3411,16 +3408,16 @@ return ret;
|
|
|
3411
3408
|
return l.usedBytes = Math.max(l.usedBytes, n + Q), Q;
|
|
3412
3409
|
}, llseek(A, g, C) {
|
|
3413
3410
|
var Q = g;
|
|
3414
|
-
if (C === 1 ? Q += A.position : C === 2 &&
|
|
3411
|
+
if (C === 1 ? Q += A.position : C === 2 && e.isFile(A.node.mode) && (Q += A.node.usedBytes), Q < 0) throw new e.ErrnoError(28);
|
|
3415
3412
|
return Q;
|
|
3416
3413
|
}, allocate(A, g, C) {
|
|
3417
3414
|
gA.expandFileStorage(A.node, g + C), A.node.usedBytes = Math.max(A.node.usedBytes, g + C);
|
|
3418
3415
|
}, mmap(A, g, C, Q, n) {
|
|
3419
|
-
if (!
|
|
3416
|
+
if (!e.isFile(A.node.mode)) throw new e.ErrnoError(43);
|
|
3420
3417
|
var s, l, w = A.node.contents;
|
|
3421
3418
|
if (!(n & 2) && w.buffer === U.buffer) l = !1, s = w.byteOffset;
|
|
3422
3419
|
else {
|
|
3423
|
-
if ((C > 0 || C + g < w.length) && (w.subarray ? w = w.subarray(C, C + g) : w = Array.prototype.slice.call(w, C, C + g)), l = !0, s = CB(g), !s) throw new
|
|
3420
|
+
if ((C > 0 || C + g < w.length) && (w.subarray ? w = w.subarray(C, C + g) : w = Array.prototype.slice.call(w, C, C + g)), l = !0, s = CB(g), !s) throw new e.ErrnoError(48);
|
|
3424
3421
|
U.set(w, s);
|
|
3425
3422
|
}
|
|
3426
3423
|
return { ptr: s, allocated: l };
|
|
@@ -3435,22 +3432,22 @@ return ret;
|
|
|
3435
3432
|
else throw `Loading data file "${A}" failed.`;
|
|
3436
3433
|
}), n && _A();
|
|
3437
3434
|
}, fE = (A, g, C, Q, n, s) => {
|
|
3438
|
-
|
|
3435
|
+
e.createDataFile(A, g, C, Q, n, s);
|
|
3439
3436
|
}, RE = i.preloadPlugins || [], FE = (A, g, C, Q) => {
|
|
3440
3437
|
typeof Browser < "u" && Browser.init();
|
|
3441
3438
|
var n = !1;
|
|
3442
3439
|
return RE.forEach((s) => {
|
|
3443
3440
|
n || s.canHandle(g) && (s.handle(A, g, C, Q), n = !0);
|
|
3444
3441
|
}), n;
|
|
3445
|
-
}, NE = (A, g, C, Q, n, s, l, w,
|
|
3442
|
+
}, NE = (A, g, C, Q, n, s, l, w, y, k) => {
|
|
3446
3443
|
var Y = g ? eg.resolve(lA.join2(A, g)) : A;
|
|
3447
|
-
function j(
|
|
3444
|
+
function j(x) {
|
|
3448
3445
|
function V(_) {
|
|
3449
|
-
k == null || k(), w || fE(A, g, _, Q, n,
|
|
3446
|
+
k == null || k(), w || fE(A, g, _, Q, n, y), s == null || s(), Cg();
|
|
3450
3447
|
}
|
|
3451
|
-
FE(
|
|
3448
|
+
FE(x, Y, V, () => {
|
|
3452
3449
|
l == null || l(), Cg();
|
|
3453
|
-
}) || V(
|
|
3450
|
+
}) || V(x);
|
|
3454
3451
|
}
|
|
3455
3452
|
_A(), typeof C == "string" ? yE(C, j, l) : j(C);
|
|
3456
3453
|
}, GE = (A) => {
|
|
@@ -3460,7 +3457,7 @@ return ret;
|
|
|
3460
3457
|
}, _I = (A, g) => {
|
|
3461
3458
|
var C = 0;
|
|
3462
3459
|
return A && (C |= 365), g && (C |= 146), C;
|
|
3463
|
-
},
|
|
3460
|
+
}, e = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: "/", initialized: !1, ignorePermissions: !0, ErrnoError: class {
|
|
3464
3461
|
constructor(A) {
|
|
3465
3462
|
this.name = "ErrnoError", this.errno = A;
|
|
3466
3463
|
}
|
|
@@ -3497,7 +3494,7 @@ return ret;
|
|
|
3497
3494
|
}
|
|
3498
3495
|
}, FSNode: class {
|
|
3499
3496
|
constructor(A, g, C, Q) {
|
|
3500
|
-
A || (A = this), this.parent = A, this.mount = A.mount, this.mounted = null, this.id =
|
|
3497
|
+
A || (A = this), this.parent = A, this.mount = A.mount, this.mounted = null, this.id = e.nextInode++, this.name = g, this.mode = C, this.node_ops = {}, this.stream_ops = {}, this.rdev = Q, this.readMode = 365, this.writeMode = 146;
|
|
3501
3498
|
}
|
|
3502
3499
|
get read() {
|
|
3503
3500
|
return (this.mode & this.readMode) === this.readMode;
|
|
@@ -3512,29 +3509,29 @@ return ret;
|
|
|
3512
3509
|
A ? this.mode |= this.writeMode : this.mode &= ~this.writeMode;
|
|
3513
3510
|
}
|
|
3514
3511
|
get isFolder() {
|
|
3515
|
-
return
|
|
3512
|
+
return e.isDir(this.mode);
|
|
3516
3513
|
}
|
|
3517
3514
|
get isDevice() {
|
|
3518
|
-
return
|
|
3515
|
+
return e.isChrdev(this.mode);
|
|
3519
3516
|
}
|
|
3520
3517
|
}, lookupPath(A, g = {}) {
|
|
3521
3518
|
if (A = eg.resolve(A), !A) return { path: "", node: null };
|
|
3522
3519
|
var C = { follow_mount: !0, recurse_count: 0 };
|
|
3523
|
-
if (g = Object.assign(C, g), g.recurse_count > 8) throw new
|
|
3524
|
-
for (var Q = A.split("/").filter((j) => !!j), n =
|
|
3520
|
+
if (g = Object.assign(C, g), g.recurse_count > 8) throw new e.ErrnoError(32);
|
|
3521
|
+
for (var Q = A.split("/").filter((j) => !!j), n = e.root, s = "/", l = 0; l < Q.length; l++) {
|
|
3525
3522
|
var w = l === Q.length - 1;
|
|
3526
3523
|
if (w && g.parent) break;
|
|
3527
|
-
if (n =
|
|
3528
|
-
var k =
|
|
3524
|
+
if (n = e.lookupNode(n, Q[l]), s = lA.join2(s, Q[l]), e.isMountpoint(n) && (!w || w && g.follow_mount) && (n = n.mounted.root), !w || g.follow) for (var y = 0; e.isLink(n.mode); ) {
|
|
3525
|
+
var k = e.readlink(s);
|
|
3529
3526
|
s = eg.resolve(lA.dirname(s), k);
|
|
3530
|
-
var Y =
|
|
3531
|
-
if (n = Y.node,
|
|
3527
|
+
var Y = e.lookupPath(s, { recurse_count: g.recurse_count + 1 });
|
|
3528
|
+
if (n = Y.node, y++ > 40) throw new e.ErrnoError(32);
|
|
3532
3529
|
}
|
|
3533
3530
|
}
|
|
3534
3531
|
return { path: s, node: n };
|
|
3535
3532
|
}, getPath(A) {
|
|
3536
3533
|
for (var g; ; ) {
|
|
3537
|
-
if (
|
|
3534
|
+
if (e.isRoot(A)) {
|
|
3538
3535
|
var C = A.mount.mountpoint;
|
|
3539
3536
|
return g ? C[C.length - 1] !== "/" ? `${C}/${g}` : C + g : C;
|
|
3540
3537
|
}
|
|
@@ -3542,14 +3539,14 @@ return ret;
|
|
|
3542
3539
|
}
|
|
3543
3540
|
}, hashName(A, g) {
|
|
3544
3541
|
for (var C = 0, Q = 0; Q < g.length; Q++) C = (C << 5) - C + g.charCodeAt(Q) | 0;
|
|
3545
|
-
return (A + C >>> 0) %
|
|
3542
|
+
return (A + C >>> 0) % e.nameTable.length;
|
|
3546
3543
|
}, hashAddNode(A) {
|
|
3547
|
-
var g =
|
|
3548
|
-
A.name_next =
|
|
3544
|
+
var g = e.hashName(A.parent.id, A.name);
|
|
3545
|
+
A.name_next = e.nameTable[g], e.nameTable[g] = A;
|
|
3549
3546
|
}, hashRemoveNode(A) {
|
|
3550
|
-
var g =
|
|
3551
|
-
if (
|
|
3552
|
-
else for (var C =
|
|
3547
|
+
var g = e.hashName(A.parent.id, A.name);
|
|
3548
|
+
if (e.nameTable[g] === A) e.nameTable[g] = A.name_next;
|
|
3549
|
+
else for (var C = e.nameTable[g]; C; ) {
|
|
3553
3550
|
if (C.name_next === A) {
|
|
3554
3551
|
C.name_next = A.name_next;
|
|
3555
3552
|
break;
|
|
@@ -3557,18 +3554,18 @@ return ret;
|
|
|
3557
3554
|
C = C.name_next;
|
|
3558
3555
|
}
|
|
3559
3556
|
}, lookupNode(A, g) {
|
|
3560
|
-
var C =
|
|
3561
|
-
if (C) throw new
|
|
3562
|
-
for (var Q =
|
|
3557
|
+
var C = e.mayLookup(A);
|
|
3558
|
+
if (C) throw new e.ErrnoError(C);
|
|
3559
|
+
for (var Q = e.hashName(A.id, g), n = e.nameTable[Q]; n; n = n.name_next) {
|
|
3563
3560
|
var s = n.name;
|
|
3564
3561
|
if (n.parent.id === A.id && s === g) return n;
|
|
3565
3562
|
}
|
|
3566
|
-
return
|
|
3563
|
+
return e.lookup(A, g);
|
|
3567
3564
|
}, createNode(A, g, C, Q) {
|
|
3568
|
-
var n = new
|
|
3569
|
-
return
|
|
3565
|
+
var n = new e.FSNode(A, g, C, Q);
|
|
3566
|
+
return e.hashAddNode(n), n;
|
|
3570
3567
|
}, destroyNode(A) {
|
|
3571
|
-
|
|
3568
|
+
e.hashRemoveNode(A);
|
|
3572
3569
|
}, isRoot(A) {
|
|
3573
3570
|
return A === A.parent;
|
|
3574
3571
|
}, isMountpoint(A) {
|
|
@@ -3591,68 +3588,68 @@ return ret;
|
|
|
3591
3588
|
var g = ["r", "w", "rw"][A & 3];
|
|
3592
3589
|
return A & 512 && (g += "w"), g;
|
|
3593
3590
|
}, nodePermissions(A, g) {
|
|
3594
|
-
return
|
|
3591
|
+
return e.ignorePermissions ? 0 : g.includes("r") && !(A.mode & 292) || g.includes("w") && !(A.mode & 146) || g.includes("x") && !(A.mode & 73) ? 2 : 0;
|
|
3595
3592
|
}, mayLookup(A) {
|
|
3596
|
-
if (!
|
|
3597
|
-
var g =
|
|
3593
|
+
if (!e.isDir(A.mode)) return 54;
|
|
3594
|
+
var g = e.nodePermissions(A, "x");
|
|
3598
3595
|
return g || (A.node_ops.lookup ? 0 : 2);
|
|
3599
3596
|
}, mayCreate(A, g) {
|
|
3600
3597
|
try {
|
|
3601
|
-
var C =
|
|
3598
|
+
var C = e.lookupNode(A, g);
|
|
3602
3599
|
return 20;
|
|
3603
3600
|
} catch {
|
|
3604
3601
|
}
|
|
3605
|
-
return
|
|
3602
|
+
return e.nodePermissions(A, "wx");
|
|
3606
3603
|
}, mayDelete(A, g, C) {
|
|
3607
3604
|
var Q;
|
|
3608
3605
|
try {
|
|
3609
|
-
Q =
|
|
3606
|
+
Q = e.lookupNode(A, g);
|
|
3610
3607
|
} catch (s) {
|
|
3611
3608
|
return s.errno;
|
|
3612
3609
|
}
|
|
3613
|
-
var n =
|
|
3610
|
+
var n = e.nodePermissions(A, "wx");
|
|
3614
3611
|
if (n) return n;
|
|
3615
3612
|
if (C) {
|
|
3616
|
-
if (!
|
|
3617
|
-
if (
|
|
3618
|
-
} else if (
|
|
3613
|
+
if (!e.isDir(Q.mode)) return 54;
|
|
3614
|
+
if (e.isRoot(Q) || e.getPath(Q) === e.cwd()) return 10;
|
|
3615
|
+
} else if (e.isDir(Q.mode)) return 31;
|
|
3619
3616
|
return 0;
|
|
3620
3617
|
}, mayOpen(A, g) {
|
|
3621
|
-
return A ?
|
|
3618
|
+
return A ? e.isLink(A.mode) ? 32 : e.isDir(A.mode) && (e.flagsToPermissionString(g) !== "r" || g & 512) ? 31 : e.nodePermissions(A, e.flagsToPermissionString(g)) : 44;
|
|
3622
3619
|
}, MAX_OPEN_FDS: 4096, nextfd() {
|
|
3623
|
-
for (var A = 0; A <=
|
|
3624
|
-
throw new
|
|
3620
|
+
for (var A = 0; A <= e.MAX_OPEN_FDS; A++) if (!e.streams[A]) return A;
|
|
3621
|
+
throw new e.ErrnoError(33);
|
|
3625
3622
|
}, getStreamChecked(A) {
|
|
3626
|
-
var g =
|
|
3627
|
-
if (!g) throw new
|
|
3623
|
+
var g = e.getStream(A);
|
|
3624
|
+
if (!g) throw new e.ErrnoError(8);
|
|
3628
3625
|
return g;
|
|
3629
|
-
}, getStream: (A) =>
|
|
3630
|
-
return A = Object.assign(new
|
|
3626
|
+
}, getStream: (A) => e.streams[A], createStream(A, g = -1) {
|
|
3627
|
+
return A = Object.assign(new e.FSStream(), A), g == -1 && (g = e.nextfd()), A.fd = g, e.streams[g] = A, A;
|
|
3631
3628
|
}, closeStream(A) {
|
|
3632
|
-
|
|
3629
|
+
e.streams[A] = null;
|
|
3633
3630
|
}, dupStream(A, g = -1) {
|
|
3634
3631
|
var Q, n;
|
|
3635
|
-
var C =
|
|
3632
|
+
var C = e.createStream(A, g);
|
|
3636
3633
|
return (n = (Q = C.stream_ops) == null ? void 0 : Q.dup) == null || n.call(Q, C), C;
|
|
3637
3634
|
}, chrdev_stream_ops: { open(A) {
|
|
3638
3635
|
var C, Q;
|
|
3639
|
-
var g =
|
|
3636
|
+
var g = e.getDevice(A.node.rdev);
|
|
3640
3637
|
A.stream_ops = g.stream_ops, (Q = (C = A.stream_ops).open) == null || Q.call(C, A);
|
|
3641
3638
|
}, llseek() {
|
|
3642
|
-
throw new
|
|
3639
|
+
throw new e.ErrnoError(70);
|
|
3643
3640
|
} }, major: (A) => A >> 8, minor: (A) => A & 255, makedev: (A, g) => A << 8 | g, registerDevice(A, g) {
|
|
3644
|
-
|
|
3645
|
-
}, getDevice: (A) =>
|
|
3641
|
+
e.devices[A] = { stream_ops: g };
|
|
3642
|
+
}, getDevice: (A) => e.devices[A], getMounts(A) {
|
|
3646
3643
|
for (var g = [], C = [A]; C.length; ) {
|
|
3647
3644
|
var Q = C.pop();
|
|
3648
3645
|
g.push(Q), C.push(...Q.mounts);
|
|
3649
3646
|
}
|
|
3650
3647
|
return g;
|
|
3651
3648
|
}, syncfs(A, g) {
|
|
3652
|
-
typeof A == "function" && (g = A, A = !1),
|
|
3653
|
-
var C =
|
|
3649
|
+
typeof A == "function" && (g = A, A = !1), e.syncFSRequests++, e.syncFSRequests > 1 && W(`warning: ${e.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);
|
|
3650
|
+
var C = e.getMounts(e.root.mount), Q = 0;
|
|
3654
3651
|
function n(l) {
|
|
3655
|
-
return
|
|
3652
|
+
return e.syncFSRequests--, g(l);
|
|
3656
3653
|
}
|
|
3657
3654
|
function s(l) {
|
|
3658
3655
|
if (l) return s.errored ? void 0 : (s.errored = !0, n(l));
|
|
@@ -3664,22 +3661,22 @@ return ret;
|
|
|
3664
3661
|
});
|
|
3665
3662
|
}, mount(A, g, C) {
|
|
3666
3663
|
var Q = C === "/", n = !C, s;
|
|
3667
|
-
if (Q &&
|
|
3664
|
+
if (Q && e.root) throw new e.ErrnoError(10);
|
|
3668
3665
|
if (!Q && !n) {
|
|
3669
|
-
var l =
|
|
3670
|
-
if (C = l.path, s = l.node,
|
|
3671
|
-
if (!
|
|
3666
|
+
var l = e.lookupPath(C, { follow_mount: !1 });
|
|
3667
|
+
if (C = l.path, s = l.node, e.isMountpoint(s)) throw new e.ErrnoError(10);
|
|
3668
|
+
if (!e.isDir(s.mode)) throw new e.ErrnoError(54);
|
|
3672
3669
|
}
|
|
3673
|
-
var w = { type: A, opts: g, mountpoint: C, mounts: [] },
|
|
3674
|
-
return
|
|
3670
|
+
var w = { type: A, opts: g, mountpoint: C, mounts: [] }, y = A.mount(w);
|
|
3671
|
+
return y.mount = w, w.root = y, Q ? e.root = y : s && (s.mounted = w, s.mount && s.mount.mounts.push(w)), y;
|
|
3675
3672
|
}, unmount(A) {
|
|
3676
|
-
var g =
|
|
3677
|
-
if (!
|
|
3678
|
-
var C = g.node, Q = C.mounted, n =
|
|
3679
|
-
Object.keys(
|
|
3680
|
-
for (var w =
|
|
3681
|
-
var
|
|
3682
|
-
n.includes(w.mount) &&
|
|
3673
|
+
var g = e.lookupPath(A, { follow_mount: !1 });
|
|
3674
|
+
if (!e.isMountpoint(g.node)) throw new e.ErrnoError(28);
|
|
3675
|
+
var C = g.node, Q = C.mounted, n = e.getMounts(Q);
|
|
3676
|
+
Object.keys(e.nameTable).forEach((l) => {
|
|
3677
|
+
for (var w = e.nameTable[l]; w; ) {
|
|
3678
|
+
var y = w.name_next;
|
|
3679
|
+
n.includes(w.mount) && e.destroyNode(w), w = y;
|
|
3683
3680
|
}
|
|
3684
3681
|
}), C.mounted = null;
|
|
3685
3682
|
var s = C.mount.mounts.indexOf(Q);
|
|
@@ -3687,298 +3684,298 @@ return ret;
|
|
|
3687
3684
|
}, lookup(A, g) {
|
|
3688
3685
|
return A.node_ops.lookup(A, g);
|
|
3689
3686
|
}, mknod(A, g, C) {
|
|
3690
|
-
var Q =
|
|
3691
|
-
if (!s || s === "." || s === "..") throw new
|
|
3692
|
-
var l =
|
|
3693
|
-
if (l) throw new
|
|
3694
|
-
if (!n.node_ops.mknod) throw new
|
|
3687
|
+
var Q = e.lookupPath(A, { parent: !0 }), n = Q.node, s = lA.basename(A);
|
|
3688
|
+
if (!s || s === "." || s === "..") throw new e.ErrnoError(28);
|
|
3689
|
+
var l = e.mayCreate(n, s);
|
|
3690
|
+
if (l) throw new e.ErrnoError(l);
|
|
3691
|
+
if (!n.node_ops.mknod) throw new e.ErrnoError(63);
|
|
3695
3692
|
return n.node_ops.mknod(n, s, g, C);
|
|
3696
3693
|
}, create(A, g) {
|
|
3697
|
-
return g = g !== void 0 ? g : 438, g &= 4095, g |= 32768,
|
|
3694
|
+
return g = g !== void 0 ? g : 438, g &= 4095, g |= 32768, e.mknod(A, g, 0);
|
|
3698
3695
|
}, mkdir(A, g) {
|
|
3699
|
-
return g = g !== void 0 ? g : 511, g &= 1023, g |= 16384,
|
|
3696
|
+
return g = g !== void 0 ? g : 511, g &= 1023, g |= 16384, e.mknod(A, g, 0);
|
|
3700
3697
|
}, mkdirTree(A, g) {
|
|
3701
3698
|
for (var C = A.split("/"), Q = "", n = 0; n < C.length; ++n) if (C[n]) {
|
|
3702
3699
|
Q += "/" + C[n];
|
|
3703
3700
|
try {
|
|
3704
|
-
|
|
3701
|
+
e.mkdir(Q, g);
|
|
3705
3702
|
} catch (s) {
|
|
3706
3703
|
if (s.errno != 20) throw s;
|
|
3707
3704
|
}
|
|
3708
3705
|
}
|
|
3709
3706
|
}, mkdev(A, g, C) {
|
|
3710
|
-
return typeof C > "u" && (C = g, g = 438), g |= 8192,
|
|
3707
|
+
return typeof C > "u" && (C = g, g = 438), g |= 8192, e.mknod(A, g, C);
|
|
3711
3708
|
}, symlink(A, g) {
|
|
3712
|
-
if (!eg.resolve(A)) throw new
|
|
3713
|
-
var C =
|
|
3714
|
-
if (!Q) throw new
|
|
3715
|
-
var n = lA.basename(g), s =
|
|
3716
|
-
if (s) throw new
|
|
3717
|
-
if (!Q.node_ops.symlink) throw new
|
|
3709
|
+
if (!eg.resolve(A)) throw new e.ErrnoError(44);
|
|
3710
|
+
var C = e.lookupPath(g, { parent: !0 }), Q = C.node;
|
|
3711
|
+
if (!Q) throw new e.ErrnoError(44);
|
|
3712
|
+
var n = lA.basename(g), s = e.mayCreate(Q, n);
|
|
3713
|
+
if (s) throw new e.ErrnoError(s);
|
|
3714
|
+
if (!Q.node_ops.symlink) throw new e.ErrnoError(63);
|
|
3718
3715
|
return Q.node_ops.symlink(Q, n, A);
|
|
3719
3716
|
}, rename(A, g) {
|
|
3720
|
-
var C = lA.dirname(A), Q = lA.dirname(g), n = lA.basename(A), s = lA.basename(g), l, w,
|
|
3721
|
-
if (l =
|
|
3722
|
-
if (w.mount !==
|
|
3723
|
-
var k =
|
|
3724
|
-
if (Y.charAt(0) !== ".") throw new
|
|
3725
|
-
if (Y = eg.relative(g, C), Y.charAt(0) !== ".") throw new
|
|
3717
|
+
var C = lA.dirname(A), Q = lA.dirname(g), n = lA.basename(A), s = lA.basename(g), l, w, y;
|
|
3718
|
+
if (l = e.lookupPath(A, { parent: !0 }), w = l.node, l = e.lookupPath(g, { parent: !0 }), y = l.node, !w || !y) throw new e.ErrnoError(44);
|
|
3719
|
+
if (w.mount !== y.mount) throw new e.ErrnoError(75);
|
|
3720
|
+
var k = e.lookupNode(w, n), Y = eg.relative(A, Q);
|
|
3721
|
+
if (Y.charAt(0) !== ".") throw new e.ErrnoError(28);
|
|
3722
|
+
if (Y = eg.relative(g, C), Y.charAt(0) !== ".") throw new e.ErrnoError(55);
|
|
3726
3723
|
var j;
|
|
3727
3724
|
try {
|
|
3728
|
-
j =
|
|
3725
|
+
j = e.lookupNode(y, s);
|
|
3729
3726
|
} catch {
|
|
3730
3727
|
}
|
|
3731
3728
|
if (k !== j) {
|
|
3732
|
-
var
|
|
3733
|
-
if (V) throw new
|
|
3734
|
-
if (V = j ?
|
|
3735
|
-
if (!w.node_ops.rename) throw new
|
|
3736
|
-
if (
|
|
3737
|
-
if (
|
|
3738
|
-
|
|
3729
|
+
var x = e.isDir(k.mode), V = e.mayDelete(w, n, x);
|
|
3730
|
+
if (V) throw new e.ErrnoError(V);
|
|
3731
|
+
if (V = j ? e.mayDelete(y, s, x) : e.mayCreate(y, s), V) throw new e.ErrnoError(V);
|
|
3732
|
+
if (!w.node_ops.rename) throw new e.ErrnoError(63);
|
|
3733
|
+
if (e.isMountpoint(k) || j && e.isMountpoint(j)) throw new e.ErrnoError(10);
|
|
3734
|
+
if (y !== w && (V = e.nodePermissions(w, "w"), V)) throw new e.ErrnoError(V);
|
|
3735
|
+
e.hashRemoveNode(k);
|
|
3739
3736
|
try {
|
|
3740
|
-
w.node_ops.rename(k,
|
|
3737
|
+
w.node_ops.rename(k, y, s);
|
|
3741
3738
|
} catch (_) {
|
|
3742
3739
|
throw _;
|
|
3743
3740
|
} finally {
|
|
3744
|
-
|
|
3741
|
+
e.hashAddNode(k);
|
|
3745
3742
|
}
|
|
3746
3743
|
}
|
|
3747
3744
|
}, rmdir(A) {
|
|
3748
|
-
var g =
|
|
3749
|
-
if (s) throw new
|
|
3750
|
-
if (!C.node_ops.rmdir) throw new
|
|
3751
|
-
if (
|
|
3752
|
-
C.node_ops.rmdir(C, Q),
|
|
3745
|
+
var g = e.lookupPath(A, { parent: !0 }), C = g.node, Q = lA.basename(A), n = e.lookupNode(C, Q), s = e.mayDelete(C, Q, !0);
|
|
3746
|
+
if (s) throw new e.ErrnoError(s);
|
|
3747
|
+
if (!C.node_ops.rmdir) throw new e.ErrnoError(63);
|
|
3748
|
+
if (e.isMountpoint(n)) throw new e.ErrnoError(10);
|
|
3749
|
+
C.node_ops.rmdir(C, Q), e.destroyNode(n);
|
|
3753
3750
|
}, readdir(A) {
|
|
3754
|
-
var g =
|
|
3755
|
-
if (!C.node_ops.readdir) throw new
|
|
3751
|
+
var g = e.lookupPath(A, { follow: !0 }), C = g.node;
|
|
3752
|
+
if (!C.node_ops.readdir) throw new e.ErrnoError(54);
|
|
3756
3753
|
return C.node_ops.readdir(C);
|
|
3757
3754
|
}, unlink(A) {
|
|
3758
|
-
var g =
|
|
3759
|
-
if (!C) throw new
|
|
3760
|
-
var Q = lA.basename(A), n =
|
|
3761
|
-
if (s) throw new
|
|
3762
|
-
if (!C.node_ops.unlink) throw new
|
|
3763
|
-
if (
|
|
3764
|
-
C.node_ops.unlink(C, Q),
|
|
3755
|
+
var g = e.lookupPath(A, { parent: !0 }), C = g.node;
|
|
3756
|
+
if (!C) throw new e.ErrnoError(44);
|
|
3757
|
+
var Q = lA.basename(A), n = e.lookupNode(C, Q), s = e.mayDelete(C, Q, !1);
|
|
3758
|
+
if (s) throw new e.ErrnoError(s);
|
|
3759
|
+
if (!C.node_ops.unlink) throw new e.ErrnoError(63);
|
|
3760
|
+
if (e.isMountpoint(n)) throw new e.ErrnoError(10);
|
|
3761
|
+
C.node_ops.unlink(C, Q), e.destroyNode(n);
|
|
3765
3762
|
}, readlink(A) {
|
|
3766
|
-
var g =
|
|
3767
|
-
if (!C) throw new
|
|
3768
|
-
if (!C.node_ops.readlink) throw new
|
|
3769
|
-
return eg.resolve(
|
|
3763
|
+
var g = e.lookupPath(A), C = g.node;
|
|
3764
|
+
if (!C) throw new e.ErrnoError(44);
|
|
3765
|
+
if (!C.node_ops.readlink) throw new e.ErrnoError(28);
|
|
3766
|
+
return eg.resolve(e.getPath(C.parent), C.node_ops.readlink(C));
|
|
3770
3767
|
}, stat(A, g) {
|
|
3771
|
-
var C =
|
|
3772
|
-
if (!Q) throw new
|
|
3773
|
-
if (!Q.node_ops.getattr) throw new
|
|
3768
|
+
var C = e.lookupPath(A, { follow: !g }), Q = C.node;
|
|
3769
|
+
if (!Q) throw new e.ErrnoError(44);
|
|
3770
|
+
if (!Q.node_ops.getattr) throw new e.ErrnoError(63);
|
|
3774
3771
|
return Q.node_ops.getattr(Q);
|
|
3775
3772
|
}, lstat(A) {
|
|
3776
|
-
return
|
|
3773
|
+
return e.stat(A, !0);
|
|
3777
3774
|
}, chmod(A, g, C) {
|
|
3778
3775
|
var Q;
|
|
3779
3776
|
if (typeof A == "string") {
|
|
3780
|
-
var n =
|
|
3777
|
+
var n = e.lookupPath(A, { follow: !C });
|
|
3781
3778
|
Q = n.node;
|
|
3782
3779
|
} else Q = A;
|
|
3783
|
-
if (!Q.node_ops.setattr) throw new
|
|
3780
|
+
if (!Q.node_ops.setattr) throw new e.ErrnoError(63);
|
|
3784
3781
|
Q.node_ops.setattr(Q, { mode: g & 4095 | Q.mode & -4096, timestamp: Date.now() });
|
|
3785
3782
|
}, lchmod(A, g) {
|
|
3786
|
-
|
|
3783
|
+
e.chmod(A, g, !0);
|
|
3787
3784
|
}, fchmod(A, g) {
|
|
3788
|
-
var C =
|
|
3789
|
-
|
|
3785
|
+
var C = e.getStreamChecked(A);
|
|
3786
|
+
e.chmod(C.node, g);
|
|
3790
3787
|
}, chown(A, g, C, Q) {
|
|
3791
3788
|
var n;
|
|
3792
3789
|
if (typeof A == "string") {
|
|
3793
|
-
var s =
|
|
3790
|
+
var s = e.lookupPath(A, { follow: !Q });
|
|
3794
3791
|
n = s.node;
|
|
3795
3792
|
} else n = A;
|
|
3796
|
-
if (!n.node_ops.setattr) throw new
|
|
3793
|
+
if (!n.node_ops.setattr) throw new e.ErrnoError(63);
|
|
3797
3794
|
n.node_ops.setattr(n, { timestamp: Date.now() });
|
|
3798
3795
|
}, lchown(A, g, C) {
|
|
3799
|
-
|
|
3796
|
+
e.chown(A, g, C, !0);
|
|
3800
3797
|
}, fchown(A, g, C) {
|
|
3801
|
-
var Q =
|
|
3802
|
-
|
|
3798
|
+
var Q = e.getStreamChecked(A);
|
|
3799
|
+
e.chown(Q.node, g, C);
|
|
3803
3800
|
}, truncate(A, g) {
|
|
3804
|
-
if (g < 0) throw new
|
|
3801
|
+
if (g < 0) throw new e.ErrnoError(28);
|
|
3805
3802
|
var C;
|
|
3806
3803
|
if (typeof A == "string") {
|
|
3807
|
-
var Q =
|
|
3804
|
+
var Q = e.lookupPath(A, { follow: !0 });
|
|
3808
3805
|
C = Q.node;
|
|
3809
3806
|
} else C = A;
|
|
3810
|
-
if (!C.node_ops.setattr) throw new
|
|
3811
|
-
if (
|
|
3812
|
-
if (!
|
|
3813
|
-
var n =
|
|
3814
|
-
if (n) throw new
|
|
3807
|
+
if (!C.node_ops.setattr) throw new e.ErrnoError(63);
|
|
3808
|
+
if (e.isDir(C.mode)) throw new e.ErrnoError(31);
|
|
3809
|
+
if (!e.isFile(C.mode)) throw new e.ErrnoError(28);
|
|
3810
|
+
var n = e.nodePermissions(C, "w");
|
|
3811
|
+
if (n) throw new e.ErrnoError(n);
|
|
3815
3812
|
C.node_ops.setattr(C, { size: g, timestamp: Date.now() });
|
|
3816
3813
|
}, ftruncate(A, g) {
|
|
3817
|
-
var C =
|
|
3818
|
-
if (!(C.flags & 2097155)) throw new
|
|
3819
|
-
|
|
3814
|
+
var C = e.getStreamChecked(A);
|
|
3815
|
+
if (!(C.flags & 2097155)) throw new e.ErrnoError(28);
|
|
3816
|
+
e.truncate(C.node, g);
|
|
3820
3817
|
}, utime(A, g, C) {
|
|
3821
|
-
var Q =
|
|
3818
|
+
var Q = e.lookupPath(A, { follow: !0 }), n = Q.node;
|
|
3822
3819
|
n.node_ops.setattr(n, { timestamp: Math.max(g, C) });
|
|
3823
3820
|
}, open(A, g, C) {
|
|
3824
|
-
if (A === "") throw new
|
|
3821
|
+
if (A === "") throw new e.ErrnoError(44);
|
|
3825
3822
|
g = typeof g == "string" ? GE(g) : g, C = typeof C > "u" ? 438 : C, g & 64 ? C = C & 4095 | 32768 : C = 0;
|
|
3826
3823
|
var Q;
|
|
3827
3824
|
if (typeof A == "object") Q = A;
|
|
3828
3825
|
else {
|
|
3829
3826
|
A = lA.normalize(A);
|
|
3830
3827
|
try {
|
|
3831
|
-
var n =
|
|
3828
|
+
var n = e.lookupPath(A, { follow: !(g & 131072) });
|
|
3832
3829
|
Q = n.node;
|
|
3833
3830
|
} catch {
|
|
3834
3831
|
}
|
|
3835
3832
|
}
|
|
3836
3833
|
var s = !1;
|
|
3837
3834
|
if (g & 64) if (Q) {
|
|
3838
|
-
if (g & 128) throw new
|
|
3839
|
-
} else Q =
|
|
3840
|
-
if (!Q) throw new
|
|
3841
|
-
if (
|
|
3835
|
+
if (g & 128) throw new e.ErrnoError(20);
|
|
3836
|
+
} else Q = e.mknod(A, C, 0), s = !0;
|
|
3837
|
+
if (!Q) throw new e.ErrnoError(44);
|
|
3838
|
+
if (e.isChrdev(Q.mode) && (g &= -513), g & 65536 && !e.isDir(Q.mode)) throw new e.ErrnoError(54);
|
|
3842
3839
|
if (!s) {
|
|
3843
|
-
var l =
|
|
3844
|
-
if (l) throw new
|
|
3840
|
+
var l = e.mayOpen(Q, g);
|
|
3841
|
+
if (l) throw new e.ErrnoError(l);
|
|
3845
3842
|
}
|
|
3846
|
-
g & 512 && !s &&
|
|
3847
|
-
var w =
|
|
3848
|
-
return w.stream_ops.open && w.stream_ops.open(w), i.logReadFiles && !(g & 1) && (
|
|
3843
|
+
g & 512 && !s && e.truncate(Q, 0), g &= -131713;
|
|
3844
|
+
var w = e.createStream({ node: Q, path: e.getPath(Q), flags: g, seekable: !0, position: 0, stream_ops: Q.stream_ops, ungotten: [], error: !1 });
|
|
3845
|
+
return w.stream_ops.open && w.stream_ops.open(w), i.logReadFiles && !(g & 1) && (e.readFiles || (e.readFiles = {}), A in e.readFiles || (e.readFiles[A] = 1)), w;
|
|
3849
3846
|
}, close(A) {
|
|
3850
|
-
if (
|
|
3847
|
+
if (e.isClosed(A)) throw new e.ErrnoError(8);
|
|
3851
3848
|
A.getdents && (A.getdents = null);
|
|
3852
3849
|
try {
|
|
3853
3850
|
A.stream_ops.close && A.stream_ops.close(A);
|
|
3854
3851
|
} catch (g) {
|
|
3855
3852
|
throw g;
|
|
3856
3853
|
} finally {
|
|
3857
|
-
|
|
3854
|
+
e.closeStream(A.fd);
|
|
3858
3855
|
}
|
|
3859
3856
|
A.fd = null;
|
|
3860
3857
|
}, isClosed(A) {
|
|
3861
3858
|
return A.fd === null;
|
|
3862
3859
|
}, llseek(A, g, C) {
|
|
3863
|
-
if (
|
|
3864
|
-
if (!A.seekable || !A.stream_ops.llseek) throw new
|
|
3865
|
-
if (C != 0 && C != 1 && C != 2) throw new
|
|
3860
|
+
if (e.isClosed(A)) throw new e.ErrnoError(8);
|
|
3861
|
+
if (!A.seekable || !A.stream_ops.llseek) throw new e.ErrnoError(70);
|
|
3862
|
+
if (C != 0 && C != 1 && C != 2) throw new e.ErrnoError(28);
|
|
3866
3863
|
return A.position = A.stream_ops.llseek(A, g, C), A.ungotten = [], A.position;
|
|
3867
3864
|
}, read(A, g, C, Q, n) {
|
|
3868
|
-
if (Q < 0 || n < 0) throw new
|
|
3869
|
-
if (
|
|
3870
|
-
if ((A.flags & 2097155) === 1) throw new
|
|
3871
|
-
if (
|
|
3872
|
-
if (!A.stream_ops.read) throw new
|
|
3865
|
+
if (Q < 0 || n < 0) throw new e.ErrnoError(28);
|
|
3866
|
+
if (e.isClosed(A)) throw new e.ErrnoError(8);
|
|
3867
|
+
if ((A.flags & 2097155) === 1) throw new e.ErrnoError(8);
|
|
3868
|
+
if (e.isDir(A.node.mode)) throw new e.ErrnoError(31);
|
|
3869
|
+
if (!A.stream_ops.read) throw new e.ErrnoError(28);
|
|
3873
3870
|
var s = typeof n < "u";
|
|
3874
3871
|
if (!s) n = A.position;
|
|
3875
|
-
else if (!A.seekable) throw new
|
|
3872
|
+
else if (!A.seekable) throw new e.ErrnoError(70);
|
|
3876
3873
|
var l = A.stream_ops.read(A, g, C, Q, n);
|
|
3877
3874
|
return s || (A.position += l), l;
|
|
3878
3875
|
}, write(A, g, C, Q, n, s) {
|
|
3879
|
-
if (Q < 0 || n < 0) throw new
|
|
3880
|
-
if (
|
|
3881
|
-
if (!(A.flags & 2097155)) throw new
|
|
3882
|
-
if (
|
|
3883
|
-
if (!A.stream_ops.write) throw new
|
|
3884
|
-
A.seekable && A.flags & 1024 &&
|
|
3876
|
+
if (Q < 0 || n < 0) throw new e.ErrnoError(28);
|
|
3877
|
+
if (e.isClosed(A)) throw new e.ErrnoError(8);
|
|
3878
|
+
if (!(A.flags & 2097155)) throw new e.ErrnoError(8);
|
|
3879
|
+
if (e.isDir(A.node.mode)) throw new e.ErrnoError(31);
|
|
3880
|
+
if (!A.stream_ops.write) throw new e.ErrnoError(28);
|
|
3881
|
+
A.seekable && A.flags & 1024 && e.llseek(A, 0, 2);
|
|
3885
3882
|
var l = typeof n < "u";
|
|
3886
3883
|
if (!l) n = A.position;
|
|
3887
|
-
else if (!A.seekable) throw new
|
|
3884
|
+
else if (!A.seekable) throw new e.ErrnoError(70);
|
|
3888
3885
|
var w = A.stream_ops.write(A, g, C, Q, n, s);
|
|
3889
3886
|
return l || (A.position += w), w;
|
|
3890
3887
|
}, allocate(A, g, C) {
|
|
3891
|
-
if (
|
|
3892
|
-
if (g < 0 || C <= 0) throw new
|
|
3893
|
-
if (!(A.flags & 2097155)) throw new
|
|
3894
|
-
if (!
|
|
3895
|
-
if (!A.stream_ops.allocate) throw new
|
|
3888
|
+
if (e.isClosed(A)) throw new e.ErrnoError(8);
|
|
3889
|
+
if (g < 0 || C <= 0) throw new e.ErrnoError(28);
|
|
3890
|
+
if (!(A.flags & 2097155)) throw new e.ErrnoError(8);
|
|
3891
|
+
if (!e.isFile(A.node.mode) && !e.isDir(A.node.mode)) throw new e.ErrnoError(43);
|
|
3892
|
+
if (!A.stream_ops.allocate) throw new e.ErrnoError(138);
|
|
3896
3893
|
A.stream_ops.allocate(A, g, C);
|
|
3897
3894
|
}, mmap(A, g, C, Q, n) {
|
|
3898
|
-
if (Q & 2 && !(n & 2) && (A.flags & 2097155) !== 2) throw new
|
|
3899
|
-
if ((A.flags & 2097155) === 1) throw new
|
|
3900
|
-
if (!A.stream_ops.mmap) throw new
|
|
3895
|
+
if (Q & 2 && !(n & 2) && (A.flags & 2097155) !== 2) throw new e.ErrnoError(2);
|
|
3896
|
+
if ((A.flags & 2097155) === 1) throw new e.ErrnoError(2);
|
|
3897
|
+
if (!A.stream_ops.mmap) throw new e.ErrnoError(43);
|
|
3901
3898
|
return A.stream_ops.mmap(A, g, C, Q, n);
|
|
3902
3899
|
}, msync(A, g, C, Q, n) {
|
|
3903
3900
|
return A.stream_ops.msync ? A.stream_ops.msync(A, g, C, Q, n) : 0;
|
|
3904
3901
|
}, ioctl(A, g, C) {
|
|
3905
|
-
if (!A.stream_ops.ioctl) throw new
|
|
3902
|
+
if (!A.stream_ops.ioctl) throw new e.ErrnoError(59);
|
|
3906
3903
|
return A.stream_ops.ioctl(A, g, C);
|
|
3907
3904
|
}, readFile(A, g = {}) {
|
|
3908
3905
|
if (g.flags = g.flags || 0, g.encoding = g.encoding || "binary", g.encoding !== "utf8" && g.encoding !== "binary") throw new Error(`Invalid encoding type "${g.encoding}"`);
|
|
3909
|
-
var C, Q =
|
|
3910
|
-
return
|
|
3906
|
+
var C, Q = e.open(A, g.flags), n = e.stat(A), s = n.size, l = new Uint8Array(s);
|
|
3907
|
+
return e.read(Q, l, 0, s, 0), g.encoding === "utf8" ? C = Gg(l, 0) : g.encoding === "binary" && (C = l), e.close(Q), C;
|
|
3911
3908
|
}, writeFile(A, g, C = {}) {
|
|
3912
3909
|
C.flags = C.flags || 577;
|
|
3913
|
-
var Q =
|
|
3910
|
+
var Q = e.open(A, C.flags, C.mode);
|
|
3914
3911
|
if (typeof g == "string") {
|
|
3915
3912
|
var n = new Uint8Array(XI(g) + 1), s = OI(g, n, 0, n.length);
|
|
3916
|
-
|
|
3917
|
-
} else if (ArrayBuffer.isView(g))
|
|
3913
|
+
e.write(Q, n, 0, s, void 0, C.canOwn);
|
|
3914
|
+
} else if (ArrayBuffer.isView(g)) e.write(Q, g, 0, g.byteLength, void 0, C.canOwn);
|
|
3918
3915
|
else throw new Error("Unsupported data type");
|
|
3919
|
-
|
|
3920
|
-
}, cwd: () =>
|
|
3921
|
-
var g =
|
|
3922
|
-
if (g.node === null) throw new
|
|
3923
|
-
if (!
|
|
3924
|
-
var C =
|
|
3925
|
-
if (C) throw new
|
|
3926
|
-
|
|
3916
|
+
e.close(Q);
|
|
3917
|
+
}, cwd: () => e.currentPath, chdir(A) {
|
|
3918
|
+
var g = e.lookupPath(A, { follow: !0 });
|
|
3919
|
+
if (g.node === null) throw new e.ErrnoError(44);
|
|
3920
|
+
if (!e.isDir(g.node.mode)) throw new e.ErrnoError(54);
|
|
3921
|
+
var C = e.nodePermissions(g.node, "x");
|
|
3922
|
+
if (C) throw new e.ErrnoError(C);
|
|
3923
|
+
e.currentPath = g.path;
|
|
3927
3924
|
}, createDefaultDirectories() {
|
|
3928
|
-
|
|
3925
|
+
e.mkdir("/tmp"), e.mkdir("/home"), e.mkdir("/home/web_user");
|
|
3929
3926
|
}, createDefaultDevices() {
|
|
3930
|
-
|
|
3927
|
+
e.mkdir("/dev"), e.registerDevice(e.makedev(1, 3), { read: () => 0, write: (Q, n, s, l, w) => l }), e.mkdev("/dev/null", e.makedev(1, 3)), ug.register(e.makedev(5, 0), ug.default_tty_ops), ug.register(e.makedev(6, 0), ug.default_tty1_ops), e.mkdev("/dev/tty", e.makedev(5, 0)), e.mkdev("/dev/tty1", e.makedev(6, 0));
|
|
3931
3928
|
var A = new Uint8Array(1024), g = 0, C = () => (g === 0 && (g = IB(A).byteLength), A[--g]);
|
|
3932
|
-
|
|
3929
|
+
e.createDevice("/dev", "random", C), e.createDevice("/dev", "urandom", C), e.mkdir("/dev/shm"), e.mkdir("/dev/shm/tmp");
|
|
3933
3930
|
}, createSpecialDirectories() {
|
|
3934
|
-
|
|
3935
|
-
var A =
|
|
3936
|
-
|
|
3937
|
-
var g =
|
|
3931
|
+
e.mkdir("/proc");
|
|
3932
|
+
var A = e.mkdir("/proc/self");
|
|
3933
|
+
e.mkdir("/proc/self/fd"), e.mount({ mount() {
|
|
3934
|
+
var g = e.createNode(A, "fd", 16895, 73);
|
|
3938
3935
|
return g.node_ops = { lookup(C, Q) {
|
|
3939
|
-
var n = +Q, s =
|
|
3936
|
+
var n = +Q, s = e.getStreamChecked(n), l = { parent: null, mount: { mountpoint: "fake" }, node_ops: { readlink: () => s.path } };
|
|
3940
3937
|
return l.parent = l, l;
|
|
3941
3938
|
} }, g;
|
|
3942
3939
|
} }, {}, "/proc/self/fd");
|
|
3943
3940
|
}, createStandardStreams() {
|
|
3944
|
-
i.stdin ?
|
|
3941
|
+
i.stdin ? e.createDevice("/dev", "stdin", i.stdin) : e.symlink("/dev/tty", "/dev/stdin"), i.stdout ? e.createDevice("/dev", "stdout", null, i.stdout) : e.symlink("/dev/tty", "/dev/stdout"), i.stderr ? e.createDevice("/dev", "stderr", null, i.stderr) : e.symlink("/dev/tty1", "/dev/stderr"), e.open("/dev/stdin", 0), e.open("/dev/stdout", 1), e.open("/dev/stderr", 1);
|
|
3945
3942
|
}, staticInit() {
|
|
3946
3943
|
[44].forEach((A) => {
|
|
3947
|
-
|
|
3948
|
-
}),
|
|
3944
|
+
e.genericErrors[A] = new e.ErrnoError(A), e.genericErrors[A].stack = "<generic error, no stack>";
|
|
3945
|
+
}), e.nameTable = new Array(4096), e.mount(gA, {}, "/"), e.createDefaultDirectories(), e.createDefaultDevices(), e.createSpecialDirectories(), e.filesystems = { MEMFS: gA };
|
|
3949
3946
|
}, init(A, g, C) {
|
|
3950
|
-
|
|
3947
|
+
e.init.initialized = !0, i.stdin = A || i.stdin, i.stdout = g || i.stdout, i.stderr = C || i.stderr, e.createStandardStreams();
|
|
3951
3948
|
}, quit() {
|
|
3952
|
-
|
|
3953
|
-
for (var A = 0; A <
|
|
3954
|
-
var g =
|
|
3955
|
-
g &&
|
|
3949
|
+
e.init.initialized = !1;
|
|
3950
|
+
for (var A = 0; A < e.streams.length; A++) {
|
|
3951
|
+
var g = e.streams[A];
|
|
3952
|
+
g && e.close(g);
|
|
3956
3953
|
}
|
|
3957
3954
|
}, findObject(A, g) {
|
|
3958
|
-
var C =
|
|
3955
|
+
var C = e.analyzePath(A, g);
|
|
3959
3956
|
return C.exists ? C.object : null;
|
|
3960
3957
|
}, analyzePath(A, g) {
|
|
3961
3958
|
try {
|
|
3962
|
-
var C =
|
|
3959
|
+
var C = e.lookupPath(A, { follow: !g });
|
|
3963
3960
|
A = C.path;
|
|
3964
3961
|
} catch {
|
|
3965
3962
|
}
|
|
3966
3963
|
var Q = { isRoot: !1, exists: !1, error: 0, name: null, path: null, object: null, parentExists: !1, parentPath: null, parentObject: null };
|
|
3967
3964
|
try {
|
|
3968
|
-
var C =
|
|
3969
|
-
Q.parentExists = !0, Q.parentPath = C.path, Q.parentObject = C.node, Q.name = lA.basename(A), C =
|
|
3965
|
+
var C = e.lookupPath(A, { parent: !0 });
|
|
3966
|
+
Q.parentExists = !0, Q.parentPath = C.path, Q.parentObject = C.node, Q.name = lA.basename(A), C = e.lookupPath(A, { follow: !g }), Q.exists = !0, Q.path = C.path, Q.object = C.node, Q.name = C.node.name, Q.isRoot = C.path === "/";
|
|
3970
3967
|
} catch (n) {
|
|
3971
3968
|
Q.error = n.errno;
|
|
3972
3969
|
}
|
|
3973
3970
|
return Q;
|
|
3974
3971
|
}, createPath(A, g, C, Q) {
|
|
3975
|
-
A = typeof A == "string" ? A :
|
|
3972
|
+
A = typeof A == "string" ? A : e.getPath(A);
|
|
3976
3973
|
for (var n = g.split("/").reverse(); n.length; ) {
|
|
3977
3974
|
var s = n.pop();
|
|
3978
3975
|
if (s) {
|
|
3979
3976
|
var l = lA.join2(A, s);
|
|
3980
3977
|
try {
|
|
3981
|
-
|
|
3978
|
+
e.mkdir(l);
|
|
3982
3979
|
} catch {
|
|
3983
3980
|
}
|
|
3984
3981
|
A = l;
|
|
@@ -3986,58 +3983,58 @@ return ret;
|
|
|
3986
3983
|
}
|
|
3987
3984
|
return l;
|
|
3988
3985
|
}, createFile(A, g, C, Q, n) {
|
|
3989
|
-
var s = lA.join2(typeof A == "string" ? A :
|
|
3990
|
-
return
|
|
3986
|
+
var s = lA.join2(typeof A == "string" ? A : e.getPath(A), g), l = _I(Q, n);
|
|
3987
|
+
return e.create(s, l);
|
|
3991
3988
|
}, createDataFile(A, g, C, Q, n, s) {
|
|
3992
3989
|
var l = g;
|
|
3993
|
-
A && (A = typeof A == "string" ? A :
|
|
3994
|
-
var w = _I(Q, n),
|
|
3990
|
+
A && (A = typeof A == "string" ? A : e.getPath(A), l = g ? lA.join2(A, g) : A);
|
|
3991
|
+
var w = _I(Q, n), y = e.create(l, w);
|
|
3995
3992
|
if (C) {
|
|
3996
3993
|
if (typeof C == "string") {
|
|
3997
3994
|
for (var k = new Array(C.length), Y = 0, j = C.length; Y < j; ++Y) k[Y] = C.charCodeAt(Y);
|
|
3998
3995
|
C = k;
|
|
3999
3996
|
}
|
|
4000
|
-
|
|
4001
|
-
var
|
|
4002
|
-
|
|
3997
|
+
e.chmod(y, w | 146);
|
|
3998
|
+
var x = e.open(y, 577);
|
|
3999
|
+
e.write(x, C, 0, C.length, 0, s), e.close(x), e.chmod(y, w);
|
|
4003
4000
|
}
|
|
4004
4001
|
}, createDevice(A, g, C, Q) {
|
|
4005
|
-
var n = lA.join2(typeof A == "string" ? A :
|
|
4006
|
-
|
|
4007
|
-
var l =
|
|
4008
|
-
return
|
|
4002
|
+
var n = lA.join2(typeof A == "string" ? A : e.getPath(A), g), s = _I(!!C, !!Q);
|
|
4003
|
+
e.createDevice.major || (e.createDevice.major = 64);
|
|
4004
|
+
var l = e.makedev(e.createDevice.major++, 0);
|
|
4005
|
+
return e.registerDevice(l, { open(w) {
|
|
4009
4006
|
w.seekable = !1;
|
|
4010
4007
|
}, close(w) {
|
|
4011
|
-
var
|
|
4012
|
-
(
|
|
4013
|
-
}, read(w,
|
|
4014
|
-
for (var
|
|
4008
|
+
var y;
|
|
4009
|
+
(y = Q == null ? void 0 : Q.buffer) != null && y.length && Q(10);
|
|
4010
|
+
}, read(w, y, k, Y, j) {
|
|
4011
|
+
for (var x = 0, V = 0; V < Y; V++) {
|
|
4015
4012
|
var _;
|
|
4016
4013
|
try {
|
|
4017
4014
|
_ = C();
|
|
4018
4015
|
} catch {
|
|
4019
|
-
throw new
|
|
4016
|
+
throw new e.ErrnoError(29);
|
|
4020
4017
|
}
|
|
4021
|
-
if (_ === void 0 &&
|
|
4018
|
+
if (_ === void 0 && x === 0) throw new e.ErrnoError(6);
|
|
4022
4019
|
if (_ == null) break;
|
|
4023
|
-
|
|
4020
|
+
x++, y[k + V] = _;
|
|
4024
4021
|
}
|
|
4025
|
-
return
|
|
4026
|
-
}, write(w,
|
|
4027
|
-
for (var
|
|
4028
|
-
Q(
|
|
4022
|
+
return x && (w.node.timestamp = Date.now()), x;
|
|
4023
|
+
}, write(w, y, k, Y, j) {
|
|
4024
|
+
for (var x = 0; x < Y; x++) try {
|
|
4025
|
+
Q(y[k + x]);
|
|
4029
4026
|
} catch {
|
|
4030
|
-
throw new
|
|
4027
|
+
throw new e.ErrnoError(29);
|
|
4031
4028
|
}
|
|
4032
|
-
return Y && (w.node.timestamp = Date.now()),
|
|
4033
|
-
} }),
|
|
4029
|
+
return Y && (w.node.timestamp = Date.now()), x;
|
|
4030
|
+
} }), e.mkdev(n, s, l);
|
|
4034
4031
|
}, forceLoadFile(A) {
|
|
4035
4032
|
if (A.isDevice || A.isFolder || A.link || A.contents) return !0;
|
|
4036
4033
|
if (typeof XMLHttpRequest < "u") throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
|
|
4037
4034
|
if (S) try {
|
|
4038
4035
|
A.contents = lI(S(A.url), !0), A.usedBytes = A.contents.length;
|
|
4039
4036
|
} catch {
|
|
4040
|
-
throw new
|
|
4037
|
+
throw new e.ErrnoError(29);
|
|
4041
4038
|
}
|
|
4042
4039
|
else throw new Error("Cannot load without read() or XMLHttpRequest.");
|
|
4043
4040
|
}, createLazyFile(A, g, C, Q, n) {
|
|
@@ -4062,13 +4059,13 @@ return ret;
|
|
|
4062
4059
|
var T = (sA, VA) => {
|
|
4063
4060
|
if (sA > VA) throw new Error("invalid range (" + sA + ", " + VA + ") or no bytes requested!");
|
|
4064
4061
|
if (VA > _ - 1) throw new Error("only " + _ + " bytes available! programmer error!");
|
|
4065
|
-
var
|
|
4066
|
-
if (
|
|
4067
|
-
return
|
|
4062
|
+
var GA = new XMLHttpRequest();
|
|
4063
|
+
if (GA.open("GET", C, !1), _ !== L && GA.setRequestHeader("Range", "bytes=" + sA + "-" + VA), GA.responseType = "arraybuffer", GA.overrideMimeType && GA.overrideMimeType("text/plain; charset=x-user-defined"), GA.send(null), !(GA.status >= 200 && GA.status < 300 || GA.status === 304)) throw new Error("Couldn't load " + C + ". Status: " + GA.status);
|
|
4064
|
+
return GA.response !== void 0 ? new Uint8Array(GA.response || []) : lI(GA.responseText || "", !0);
|
|
4068
4065
|
}, UA = this;
|
|
4069
4066
|
UA.setDataGetter((sA) => {
|
|
4070
|
-
var VA = sA * L,
|
|
4071
|
-
if (
|
|
4067
|
+
var VA = sA * L, GA = (sA + 1) * L - 1;
|
|
4068
|
+
if (GA = Math.min(GA, _ - 1), typeof UA.chunks[sA] > "u" && (UA.chunks[sA] = T(VA, GA)), typeof UA.chunks[sA] > "u") throw new Error("doXHR failed!");
|
|
4072
4069
|
return UA.chunks[sA];
|
|
4073
4070
|
}), (LA || !_) && (L = _ = 1, _ = this.getter(0).length, L = _, K("LazyFiles on gzip forces download of the whole file when length is accessed")), this._length = _, this._chunkSize = L, this.lengthKnown = !0;
|
|
4074
4071
|
}
|
|
@@ -4083,39 +4080,39 @@ return ret;
|
|
|
4083
4080
|
if (!D) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
|
|
4084
4081
|
var l = new s(), w = { isDevice: !1, contents: l };
|
|
4085
4082
|
} else var w = { isDevice: !1, url: C };
|
|
4086
|
-
var
|
|
4087
|
-
w.contents ?
|
|
4083
|
+
var y = e.createFile(A, g, w, Q, n);
|
|
4084
|
+
w.contents ? y.contents = w.contents : w.url && (y.contents = null, y.url = w.url), Object.defineProperties(y, { usedBytes: { get: function() {
|
|
4088
4085
|
return this.contents.length;
|
|
4089
4086
|
} } });
|
|
4090
|
-
var k = {}, Y = Object.keys(
|
|
4091
|
-
Y.forEach((
|
|
4092
|
-
var V =
|
|
4093
|
-
k[
|
|
4087
|
+
var k = {}, Y = Object.keys(y.stream_ops);
|
|
4088
|
+
Y.forEach((x) => {
|
|
4089
|
+
var V = y.stream_ops[x];
|
|
4090
|
+
k[x] = (..._) => (e.forceLoadFile(y), V(..._));
|
|
4094
4091
|
});
|
|
4095
|
-
function j(
|
|
4096
|
-
var LA =
|
|
4092
|
+
function j(x, V, _, hA, FA) {
|
|
4093
|
+
var LA = x.node.contents;
|
|
4097
4094
|
if (FA >= LA.length) return 0;
|
|
4098
4095
|
var L = Math.min(LA.length - FA, hA);
|
|
4099
4096
|
if (LA.slice) for (var T = 0; T < L; T++) V[_ + T] = LA[FA + T];
|
|
4100
4097
|
else for (var T = 0; T < L; T++) V[_ + T] = LA.get(FA + T);
|
|
4101
4098
|
return L;
|
|
4102
4099
|
}
|
|
4103
|
-
return k.read = (
|
|
4104
|
-
|
|
4100
|
+
return k.read = (x, V, _, hA, FA) => (e.forceLoadFile(y), j(x, V, _, hA, FA)), k.mmap = (x, V, _, hA, FA) => {
|
|
4101
|
+
e.forceLoadFile(y);
|
|
4105
4102
|
var LA = CB(V);
|
|
4106
|
-
if (!LA) throw new
|
|
4107
|
-
return j(
|
|
4108
|
-
},
|
|
4103
|
+
if (!LA) throw new e.ErrnoError(48);
|
|
4104
|
+
return j(x, U, LA, V, _), { ptr: LA, allocated: !0 };
|
|
4105
|
+
}, y.stream_ops = k, y;
|
|
4109
4106
|
} }, Xg = { DEFAULT_POLLMASK: 5, calculateAt(A, g, C) {
|
|
4110
4107
|
if (lA.isAbs(g)) return g;
|
|
4111
4108
|
var Q;
|
|
4112
|
-
if (A === -100) Q =
|
|
4109
|
+
if (A === -100) Q = e.cwd();
|
|
4113
4110
|
else {
|
|
4114
4111
|
var n = Xg.getStreamFromFD(A);
|
|
4115
4112
|
Q = n.path;
|
|
4116
4113
|
}
|
|
4117
4114
|
if (g.length == 0) {
|
|
4118
|
-
if (!C) throw new
|
|
4115
|
+
if (!C) throw new e.ErrnoError(44);
|
|
4119
4116
|
return Q;
|
|
4120
4117
|
}
|
|
4121
4118
|
return lA.join2(Q, g);
|
|
@@ -4125,12 +4122,12 @@ return ret;
|
|
|
4125
4122
|
var n = Q.atime.getTime(), s = Q.mtime.getTime(), l = Q.ctime.getTime();
|
|
4126
4123
|
return YA = [Math.floor(n / 1e3) >>> 0, (QA = Math.floor(n / 1e3), +Math.abs(QA) >= 1 ? QA > 0 ? +Math.floor(QA / 4294967296) >>> 0 : ~~+Math.ceil((QA - +(~~QA >>> 0)) / 4294967296) >>> 0 : 0)], J[C + 40 >> 2] = YA[0], J[C + 44 >> 2] = YA[1], H[C + 48 >> 2] = n % 1e3 * 1e3, YA = [Math.floor(s / 1e3) >>> 0, (QA = Math.floor(s / 1e3), +Math.abs(QA) >= 1 ? QA > 0 ? +Math.floor(QA / 4294967296) >>> 0 : ~~+Math.ceil((QA - +(~~QA >>> 0)) / 4294967296) >>> 0 : 0)], J[C + 56 >> 2] = YA[0], J[C + 60 >> 2] = YA[1], H[C + 64 >> 2] = s % 1e3 * 1e3, YA = [Math.floor(l / 1e3) >>> 0, (QA = Math.floor(l / 1e3), +Math.abs(QA) >= 1 ? QA > 0 ? +Math.floor(QA / 4294967296) >>> 0 : ~~+Math.ceil((QA - +(~~QA >>> 0)) / 4294967296) >>> 0 : 0)], J[C + 72 >> 2] = YA[0], J[C + 76 >> 2] = YA[1], H[C + 80 >> 2] = l % 1e3 * 1e3, YA = [Q.ino >>> 0, (QA = Q.ino, +Math.abs(QA) >= 1 ? QA > 0 ? +Math.floor(QA / 4294967296) >>> 0 : ~~+Math.ceil((QA - +(~~QA >>> 0)) / 4294967296) >>> 0 : 0)], J[C + 88 >> 2] = YA[0], J[C + 92 >> 2] = YA[1], 0;
|
|
4127
4124
|
}, doMsync(A, g, C, Q, n) {
|
|
4128
|
-
if (!
|
|
4125
|
+
if (!e.isFile(g.node.mode)) throw new e.ErrnoError(43);
|
|
4129
4126
|
if (Q & 2) return 0;
|
|
4130
4127
|
var s = v.slice(A, A + C);
|
|
4131
|
-
|
|
4128
|
+
e.msync(g, s, n, C, Q);
|
|
4132
4129
|
}, getStreamFromFD(A) {
|
|
4133
|
-
var g =
|
|
4130
|
+
var g = e.getStreamChecked(A);
|
|
4134
4131
|
return g;
|
|
4135
4132
|
}, varargs: void 0, getStr(A) {
|
|
4136
4133
|
var g = cI(A);
|
|
@@ -4139,9 +4136,9 @@ return ret;
|
|
|
4139
4136
|
function kE(A) {
|
|
4140
4137
|
try {
|
|
4141
4138
|
var g = Xg.getStreamFromFD(A);
|
|
4142
|
-
return
|
|
4139
|
+
return e.close(g), 0;
|
|
4143
4140
|
} catch (C) {
|
|
4144
|
-
if (typeof
|
|
4141
|
+
if (typeof e > "u" || C.name !== "ErrnoError") throw C;
|
|
4145
4142
|
return C.errno;
|
|
4146
4143
|
}
|
|
4147
4144
|
}
|
|
@@ -4149,9 +4146,9 @@ return ret;
|
|
|
4149
4146
|
for (var n = 0, s = 0; s < C; s++) {
|
|
4150
4147
|
var l = H[g >> 2], w = H[g + 4 >> 2];
|
|
4151
4148
|
g += 8;
|
|
4152
|
-
var
|
|
4153
|
-
if (
|
|
4154
|
-
if (n +=
|
|
4149
|
+
var y = e.read(A, U, l, w, Q);
|
|
4150
|
+
if (y < 0) return -1;
|
|
4151
|
+
if (n += y, y < w) break;
|
|
4155
4152
|
}
|
|
4156
4153
|
return n;
|
|
4157
4154
|
};
|
|
@@ -4160,7 +4157,7 @@ return ret;
|
|
|
4160
4157
|
var n = Xg.getStreamFromFD(A), s = SE(n, g, C);
|
|
4161
4158
|
return H[Q >> 2] = s, 0;
|
|
4162
4159
|
} catch (l) {
|
|
4163
|
-
if (typeof
|
|
4160
|
+
if (typeof e > "u" || l.name !== "ErrnoError") throw l;
|
|
4164
4161
|
return l.errno;
|
|
4165
4162
|
}
|
|
4166
4163
|
}
|
|
@@ -4170,9 +4167,9 @@ return ret;
|
|
|
4170
4167
|
try {
|
|
4171
4168
|
if (isNaN(s)) return 61;
|
|
4172
4169
|
var l = Xg.getStreamFromFD(A);
|
|
4173
|
-
return
|
|
4170
|
+
return e.llseek(l, s, Q), YA = [l.position >>> 0, (QA = l.position, +Math.abs(QA) >= 1 ? QA > 0 ? +Math.floor(QA / 4294967296) >>> 0 : ~~+Math.ceil((QA - +(~~QA >>> 0)) / 4294967296) >>> 0 : 0)], J[n >> 2] = YA[0], J[n + 4 >> 2] = YA[1], l.getdents && s === 0 && Q === 0 && (l.getdents = null), 0;
|
|
4174
4171
|
} catch (w) {
|
|
4175
|
-
if (typeof
|
|
4172
|
+
if (typeof e > "u" || w.name !== "ErrnoError") throw w;
|
|
4176
4173
|
return w.errno;
|
|
4177
4174
|
}
|
|
4178
4175
|
}
|
|
@@ -4180,9 +4177,9 @@ return ret;
|
|
|
4180
4177
|
for (var n = 0, s = 0; s < C; s++) {
|
|
4181
4178
|
var l = H[g >> 2], w = H[g + 4 >> 2];
|
|
4182
4179
|
g += 8;
|
|
4183
|
-
var
|
|
4184
|
-
if (
|
|
4185
|
-
n +=
|
|
4180
|
+
var y = e.write(A, U, l, w, Q);
|
|
4181
|
+
if (y < 0) return -1;
|
|
4182
|
+
n += y;
|
|
4186
4183
|
}
|
|
4187
4184
|
return n;
|
|
4188
4185
|
};
|
|
@@ -4191,7 +4188,7 @@ return ret;
|
|
|
4191
4188
|
var n = Xg.getStreamFromFD(A), s = pE(n, g, C);
|
|
4192
4189
|
return H[Q >> 2] = s, 0;
|
|
4193
4190
|
} catch (l) {
|
|
4194
|
-
if (typeof
|
|
4191
|
+
if (typeof e > "u" || l.name !== "ErrnoError") throw l;
|
|
4195
4192
|
return l.errno;
|
|
4196
4193
|
}
|
|
4197
4194
|
}
|
|
@@ -4209,13 +4206,13 @@ return ret;
|
|
|
4209
4206
|
U.set(A, g);
|
|
4210
4207
|
}, KE = (A, g, C, Q) => {
|
|
4211
4208
|
var n = H[Q + 40 >> 2], s = { tm_sec: J[Q >> 2], tm_min: J[Q + 4 >> 2], tm_hour: J[Q + 8 >> 2], tm_mday: J[Q + 12 >> 2], tm_mon: J[Q + 16 >> 2], tm_year: J[Q + 20 >> 2], tm_wday: J[Q + 24 >> 2], tm_yday: J[Q + 28 >> 2], tm_isdst: J[Q + 32 >> 2], tm_gmtoff: J[Q + 36 >> 2], tm_zone: n ? cI(n) : "" }, l = cI(C), w = { "%c": "%a %b %d %H:%M:%S %Y", "%D": "%m/%d/%y", "%F": "%Y-%m-%d", "%h": "%b", "%r": "%I:%M:%S %p", "%R": "%H:%M", "%T": "%H:%M:%S", "%x": "%m/%d/%y", "%X": "%H:%M:%S", "%Ec": "%c", "%EC": "%C", "%Ex": "%m/%d/%y", "%EX": "%H:%M:%S", "%Ey": "%y", "%EY": "%Y", "%Od": "%d", "%Oe": "%e", "%OH": "%H", "%OI": "%I", "%Om": "%m", "%OM": "%M", "%OS": "%S", "%Ou": "%u", "%OU": "%U", "%OV": "%V", "%Ow": "%w", "%OW": "%W", "%Oy": "%y" };
|
|
4212
|
-
for (var
|
|
4209
|
+
for (var y in w) l = l.replace(new RegExp(y, "g"), w[y]);
|
|
4213
4210
|
var k = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], Y = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
|
4214
4211
|
function j(L, T, UA) {
|
|
4215
4212
|
for (var sA = typeof L == "number" ? L.toString() : L || ""; sA.length < T; ) sA = UA[0] + sA;
|
|
4216
4213
|
return sA;
|
|
4217
4214
|
}
|
|
4218
|
-
function
|
|
4215
|
+
function x(L, T) {
|
|
4219
4216
|
return j(L, T, "0");
|
|
4220
4217
|
}
|
|
4221
4218
|
function V(L, T) {
|
|
@@ -4244,19 +4241,19 @@ return ret;
|
|
|
4244
4241
|
}
|
|
4245
4242
|
}
|
|
4246
4243
|
function hA(L) {
|
|
4247
|
-
var T = HE(new Date(L.tm_year + 1900, 0, 1), L.tm_yday), UA = new Date(T.getFullYear(), 0, 4), sA = new Date(T.getFullYear() + 1, 0, 4), VA = _(UA),
|
|
4248
|
-
return V(VA, T) <= 0 ? V(
|
|
4244
|
+
var T = HE(new Date(L.tm_year + 1900, 0, 1), L.tm_yday), UA = new Date(T.getFullYear(), 0, 4), sA = new Date(T.getFullYear() + 1, 0, 4), VA = _(UA), GA = _(sA);
|
|
4245
|
+
return V(VA, T) <= 0 ? V(GA, T) <= 0 ? T.getFullYear() + 1 : T.getFullYear() : T.getFullYear() - 1;
|
|
4249
4246
|
}
|
|
4250
4247
|
var FA = { "%a": (L) => k[L.tm_wday].substring(0, 3), "%A": (L) => k[L.tm_wday], "%b": (L) => Y[L.tm_mon].substring(0, 3), "%B": (L) => Y[L.tm_mon], "%C": (L) => {
|
|
4251
4248
|
var T = L.tm_year + 1900;
|
|
4252
|
-
return
|
|
4253
|
-
}, "%d": (L) =>
|
|
4249
|
+
return x(T / 100 | 0, 2);
|
|
4250
|
+
}, "%d": (L) => x(L.tm_mday, 2), "%e": (L) => j(L.tm_mday, 2, " "), "%g": (L) => hA(L).toString().substring(2), "%G": hA, "%H": (L) => x(L.tm_hour, 2), "%I": (L) => {
|
|
4254
4251
|
var T = L.tm_hour;
|
|
4255
|
-
return T == 0 ? T = 12 : T > 12 && (T -= 12),
|
|
4256
|
-
}, "%j": (L) =>
|
|
4257
|
-
`, "%p": (L) => L.tm_hour >= 0 && L.tm_hour < 12 ? "AM" : "PM", "%S": (L) =>
|
|
4252
|
+
return T == 0 ? T = 12 : T > 12 && (T -= 12), x(T, 2);
|
|
4253
|
+
}, "%j": (L) => x(L.tm_mday + YE(dI(L.tm_year + 1900) ? BB : QB, L.tm_mon - 1), 3), "%m": (L) => x(L.tm_mon + 1, 2), "%M": (L) => x(L.tm_min, 2), "%n": () => `
|
|
4254
|
+
`, "%p": (L) => L.tm_hour >= 0 && L.tm_hour < 12 ? "AM" : "PM", "%S": (L) => x(L.tm_sec, 2), "%t": () => " ", "%u": (L) => L.tm_wday || 7, "%U": (L) => {
|
|
4258
4255
|
var T = L.tm_yday + 7 - L.tm_wday;
|
|
4259
|
-
return
|
|
4256
|
+
return x(Math.floor(T / 7), 2);
|
|
4260
4257
|
}, "%V": (L) => {
|
|
4261
4258
|
var T = Math.floor((L.tm_yday + 7 - (L.tm_wday + 6) % 7) / 7);
|
|
4262
4259
|
if ((L.tm_wday + 371 - L.tm_yday - 2) % 7 <= 2 && T++, T) {
|
|
@@ -4269,16 +4266,16 @@ return ret;
|
|
|
4269
4266
|
var sA = (L.tm_wday + 7 - L.tm_yday - 1) % 7;
|
|
4270
4267
|
(sA == 4 || sA == 5 && dI(L.tm_year % 400 - 1)) && T++;
|
|
4271
4268
|
}
|
|
4272
|
-
return
|
|
4269
|
+
return x(T, 2);
|
|
4273
4270
|
}, "%w": (L) => L.tm_wday, "%W": (L) => {
|
|
4274
4271
|
var T = L.tm_yday + 7 - (L.tm_wday + 6) % 7;
|
|
4275
|
-
return
|
|
4272
|
+
return x(Math.floor(T / 7), 2);
|
|
4276
4273
|
}, "%y": (L) => (L.tm_year + 1900).toString().substring(2), "%Y": (L) => L.tm_year + 1900, "%z": (L) => {
|
|
4277
4274
|
var T = L.tm_gmtoff, UA = T >= 0;
|
|
4278
4275
|
return T = Math.abs(T) / 60, T = T / 60 * 100 + T % 60, (UA ? "+" : "-") + ("0000" + T).slice(-4);
|
|
4279
4276
|
}, "%Z": (L) => L.tm_zone, "%%": () => "%" };
|
|
4280
4277
|
l = l.replace(/%%/g, "\0\0");
|
|
4281
|
-
for (var
|
|
4278
|
+
for (var y in FA) l.includes(y) && (l = l.replace(new RegExp(y, "g"), FA[y](s)));
|
|
4282
4279
|
l = l.replace(/\0\0/g, "%");
|
|
4283
4280
|
var LA = lI(l, !1);
|
|
4284
4281
|
return LA.length > g ? 0 : (mE(LA, A), LA.length - 1);
|
|
@@ -4291,9 +4288,9 @@ return ret;
|
|
|
4291
4288
|
constructor(A) {
|
|
4292
4289
|
super(A), this.name = "InternalError";
|
|
4293
4290
|
}
|
|
4294
|
-
}, lQ(), rQ(), FQ(), bC = i.UnboundTypeError = LQ(Error, "UnboundTypeError"), qQ(),
|
|
4291
|
+
}, lQ(), rQ(), FQ(), bC = i.UnboundTypeError = LQ(Error, "UnboundTypeError"), qQ(), e.createPreloadedFile = NE, e.staticInit();
|
|
4295
4292
|
var qE = { t: $B, f: gQ, x: IQ, p: CQ, k: EQ, j: UQ, d: YQ, o: HQ, c: mQ, E: WC, i: TQ, b: jQ, a: WQ, y: VQ, h: OQ, e: gE, l: IE, v: CE, w: BE, u: QE, m: eE, r: rE, s: sE, B: lE, C: dE, A: kE, z: LE, n: ME, g: JE, D: AB, q: vE }, bA = _B(), EB = (A) => (EB = bA.H)(A), $I = (A) => ($I = bA.J)(A), tg = (A) => (tg = bA.K)(A), eB = (A, g) => (eB = bA.L)(A, g), tB = (A, g) => (tB = bA.M)(A, g), oB = (A) => (oB = bA.N)(A);
|
|
4296
|
-
i.dynCall_jiji = (A, g, C, Q, n) => (i.dynCall_jiji = bA.O)(A, g, C, Q, n), i.dynCall_viijii = (A, g, C, Q, n, s, l) => (i.dynCall_viijii = bA.P)(A, g, C, Q, n, s, l), i.dynCall_iiiiij = (A, g, C, Q, n, s, l) => (i.dynCall_iiiiij = bA.Q)(A, g, C, Q, n, s, l), i.dynCall_iiiiijj = (A, g, C, Q, n, s, l, w,
|
|
4293
|
+
i.dynCall_jiji = (A, g, C, Q, n) => (i.dynCall_jiji = bA.O)(A, g, C, Q, n), i.dynCall_viijii = (A, g, C, Q, n, s, l) => (i.dynCall_viijii = bA.P)(A, g, C, Q, n, s, l), i.dynCall_iiiiij = (A, g, C, Q, n, s, l) => (i.dynCall_iiiiij = bA.Q)(A, g, C, Q, n, s, l), i.dynCall_iiiiijj = (A, g, C, Q, n, s, l, w, y) => (i.dynCall_iiiiijj = bA.R)(A, g, C, Q, n, s, l, w, y), i.dynCall_iiiiiijj = (A, g, C, Q, n, s, l, w, y, k) => (i.dynCall_iiiiiijj = bA.S)(A, g, C, Q, n, s, l, w, y, k);
|
|
4297
4294
|
var wI;
|
|
4298
4295
|
rA = function A() {
|
|
4299
4296
|
wI || nB(), wI || (rA = A);
|
|
@@ -4317,7 +4314,7 @@ return ret;
|
|
|
4317
4314
|
}), TB = (I) => Object.prototype.toString.call(I), iC = (I) => TB(I) === "[object String]", so = (I) => TB(I) === "[object Array]", co = (I, E) => {
|
|
4318
4315
|
let B = { ...I };
|
|
4319
4316
|
E = so(E) ? E : [E];
|
|
4320
|
-
for (let
|
|
4317
|
+
for (let t of E) delete B[t];
|
|
4321
4318
|
return B;
|
|
4322
4319
|
}, lo = typeof globalThis == "object" && globalThis !== null && globalThis.Object === Object && globalThis, wo = typeof self == "object" && self !== null && self.Object === Object && self;
|
|
4323
4320
|
lo || wo || Function("return this")();
|
|
@@ -4356,7 +4353,7 @@ const ho = [
|
|
|
4356
4353
|
},
|
|
4357
4354
|
r.content
|
|
4358
4355
|
), B = (o, r, a) => {
|
|
4359
|
-
const { title: i, content: h, modalClass: d } = r, c = iC(i) ? I(o, r) : i,
|
|
4356
|
+
const { title: i, content: h, modalClass: d } = r, c = iC(i) ? I(o, r) : i, f = iC(h) ? E(o, r) : h, D = [
|
|
4360
4357
|
"common-modal",
|
|
4361
4358
|
["info", "success", "warning", "error", "confirm", "syncConfirm"].includes(o) && `common-modal__${o}`,
|
|
4362
4359
|
r.hideHeaderBorder !== !1 && "hide-header-border"
|
|
@@ -4368,7 +4365,7 @@ const ho = [
|
|
|
4368
4365
|
draggable: !0,
|
|
4369
4366
|
...co(r, ["title", "content", "modalClass"]),
|
|
4370
4367
|
title: c,
|
|
4371
|
-
content:
|
|
4368
|
+
content: f,
|
|
4372
4369
|
class: D,
|
|
4373
4370
|
modalClass: iC(d) || Array.isArray(d) ? d : ""
|
|
4374
4371
|
};
|
|
@@ -4406,7 +4403,7 @@ const ho = [
|
|
|
4406
4403
|
slots: E,
|
|
4407
4404
|
attrs: B
|
|
4408
4405
|
}) {
|
|
4409
|
-
const
|
|
4406
|
+
const t = {
|
|
4410
4407
|
titleAlign: "start",
|
|
4411
4408
|
closable: !1,
|
|
4412
4409
|
draggable: !0,
|
|
@@ -4440,7 +4437,7 @@ const ho = [
|
|
|
4440
4437
|
return () => N(OA("a-modal"), UI({
|
|
4441
4438
|
id: o.value,
|
|
4442
4439
|
class: ["common-modal", `common-modal-footer__${I.footerAlign}`, I.hideHeaderBorder && "hide-header-border", I.hideFooterBorder && "hide-footer-border"]
|
|
4443
|
-
},
|
|
4440
|
+
}, t), {
|
|
4444
4441
|
...i
|
|
4445
4442
|
});
|
|
4446
4443
|
}
|
|
@@ -4450,26 +4447,26 @@ const ho = [
|
|
|
4450
4447
|
I.component(rC.name, rC);
|
|
4451
4448
|
const E = {};
|
|
4452
4449
|
for (const B of Object.keys(aC))
|
|
4453
|
-
E[B] = (
|
|
4450
|
+
E[B] = (t, o = I._context) => aC[B](t, o);
|
|
4454
4451
|
I.config.globalProperties.$modal = E;
|
|
4455
4452
|
}
|
|
4456
4453
|
}), KA = (I, E, B) => {
|
|
4457
|
-
const
|
|
4454
|
+
const t = XE({ value: I }), { value: o } = zE(t);
|
|
4458
4455
|
return [o, (a) => {
|
|
4459
|
-
|
|
4456
|
+
t.value = a, E == null || E(t.value);
|
|
4460
4457
|
}];
|
|
4461
4458
|
}, GI = "tag-range-highlight", fo = () => {
|
|
4462
4459
|
const I = gg(fg), [E, B] = KA({
|
|
4463
4460
|
index: -1,
|
|
4464
4461
|
offset: -1
|
|
4465
|
-
}), [
|
|
4462
|
+
}), [t, o] = KA({
|
|
4466
4463
|
index: -1,
|
|
4467
4464
|
offset: -1
|
|
4468
4465
|
}), r = () => {
|
|
4469
4466
|
if (q(I) || q(I.editorCore.value)) return;
|
|
4470
4467
|
const { cursor: h, content: d } = I.editorCore.value, { range: c } = h;
|
|
4471
4468
|
if (q(c)) return;
|
|
4472
|
-
const { startContainer:
|
|
4469
|
+
const { startContainer: f, endContainer: D, startOffset: u, endOffset: R } = c, F = WA(c.startContainer), M = WA(c.endContainer), G = hC(F, M), S = d.getParas(), p = F === M;
|
|
4473
4470
|
B({
|
|
4474
4471
|
index: S.indexOf(F),
|
|
4475
4472
|
offset: p && u > R ? R : u
|
|
@@ -4501,16 +4498,16 @@ const ho = [
|
|
|
4501
4498
|
(AA = I.editorCore.value) == null || AA.content.update(kA);
|
|
4502
4499
|
};
|
|
4503
4500
|
if (F === M) {
|
|
4504
|
-
const X = $(
|
|
4501
|
+
const X = $(f) && f.tagName === "P";
|
|
4505
4502
|
P(
|
|
4506
|
-
X ?
|
|
4503
|
+
X ? f.firstChild : f,
|
|
4507
4504
|
X ? 0 : u,
|
|
4508
4505
|
D,
|
|
4509
4506
|
R
|
|
4510
4507
|
);
|
|
4511
4508
|
return;
|
|
4512
4509
|
}
|
|
4513
|
-
P(
|
|
4510
|
+
P(f, u, F, F.childNodes.length), G.forEach((X) => P(X, 0, X, X.childNodes.length)), P(M.firstChild, 0, D, R);
|
|
4514
4511
|
}, a = () => {
|
|
4515
4512
|
var d;
|
|
4516
4513
|
Array.from(
|
|
@@ -4521,7 +4518,7 @@ const ho = [
|
|
|
4521
4518
|
highlightRange: r,
|
|
4522
4519
|
unhighlightRange: a,
|
|
4523
4520
|
revertRange: () => {
|
|
4524
|
-
var
|
|
4521
|
+
var f, D;
|
|
4525
4522
|
if (q(I) || q(I.editorCore.value)) return;
|
|
4526
4523
|
a();
|
|
4527
4524
|
const { content: h } = I.editorCore.value, d = h.getParas(), c = document.createRange();
|
|
@@ -4529,16 +4526,16 @@ const ho = [
|
|
|
4529
4526
|
d[E.value.index].firstChild,
|
|
4530
4527
|
E.value.offset ?? 0
|
|
4531
4528
|
), c.setEnd(
|
|
4532
|
-
d[
|
|
4533
|
-
|
|
4534
|
-
), (
|
|
4529
|
+
d[t.value.index].firstChild,
|
|
4530
|
+
t.value.offset ?? 0
|
|
4531
|
+
), (f = getSelection()) == null || f.removeAllRanges(), (D = getSelection()) == null || D.addRange(c), I.editorCore.value.cursor._recordRange();
|
|
4535
4532
|
}
|
|
4536
4533
|
};
|
|
4537
4534
|
}, Ro = (I, E, B) => {
|
|
4538
|
-
const
|
|
4535
|
+
const t = yA(), o = yA(), r = yA(0), a = yA(!1);
|
|
4539
4536
|
let i;
|
|
4540
|
-
const { renderHighlight: h, unrenderHighlight: d } = ht(
|
|
4541
|
-
|
|
4537
|
+
const { renderHighlight: h, unrenderHighlight: d } = ht(t, E), c = () => {
|
|
4538
|
+
t.value = new Ne(I.value, {
|
|
4542
4539
|
plugins: E.simple ? [] : [
|
|
4543
4540
|
Ve,
|
|
4544
4541
|
It,
|
|
@@ -4548,32 +4545,32 @@ const ho = [
|
|
|
4548
4545
|
maxLength: E.maxLength,
|
|
4549
4546
|
onChange: (U) => {
|
|
4550
4547
|
var v;
|
|
4551
|
-
r.value = U, a.value = !!((v =
|
|
4552
|
-
`span[data-type=${
|
|
4548
|
+
r.value = U, a.value = !!((v = t.value) != null && v.element.querySelector(
|
|
4549
|
+
`span[data-type=${b.pausation}]`
|
|
4553
4550
|
)), B("update:textCount", U), B("change", U);
|
|
4554
4551
|
},
|
|
4555
4552
|
onUndoChange: (U) => {
|
|
4556
4553
|
var v;
|
|
4557
|
-
q((v = o.value.plugin[
|
|
4554
|
+
q((v = o.value.plugin[b.anchor]) == null ? void 0 : v.data) || (o.value.plugin[b.anchor].data = JSON.parse(U));
|
|
4558
4555
|
}
|
|
4559
4556
|
}), o.value = {
|
|
4560
4557
|
base: {
|
|
4561
|
-
content:
|
|
4562
|
-
cursor:
|
|
4563
|
-
undo:
|
|
4564
|
-
command:
|
|
4558
|
+
content: t.value.content,
|
|
4559
|
+
cursor: t.value.cursor,
|
|
4560
|
+
undo: t.value.undo,
|
|
4561
|
+
command: t.value.command
|
|
4565
4562
|
},
|
|
4566
4563
|
plugin: {
|
|
4567
|
-
[
|
|
4568
|
-
[
|
|
4569
|
-
[
|
|
4570
|
-
[
|
|
4564
|
+
[b.pausation]: t.value.plugin.pausation,
|
|
4565
|
+
[b.pronunciation]: t.value.plugin.pronunciation,
|
|
4566
|
+
[b.homophones]: t.value.plugin.homophones,
|
|
4567
|
+
[b.anchor]: t.value.plugin.anchor
|
|
4571
4568
|
}
|
|
4572
4569
|
}, i = new MutationObserver(([U]) => {
|
|
4573
4570
|
var v, O;
|
|
4574
|
-
Object.keys(((O = (v = o.value) == null ? void 0 : v.plugin[
|
|
4571
|
+
Object.keys(((O = (v = o.value) == null ? void 0 : v.plugin[b.anchor]) == null ? void 0 : O.data) ?? []).forEach((z) => {
|
|
4575
4572
|
var wA, RA;
|
|
4576
|
-
const J = ((RA = (wA = o.value) == null ? void 0 : wA.plugin[
|
|
4573
|
+
const J = ((RA = (wA = o.value) == null ? void 0 : wA.plugin[b.anchor]) == null ? void 0 : RA.data[z]) ?? [], [H, dA] = J.reduce(
|
|
4577
4574
|
(Z, eA) => {
|
|
4578
4575
|
const BA = Array.from(
|
|
4579
4576
|
document.body.querySelectorAll(`span[data-frag-id="anchor_${eA.id}"]`)
|
|
@@ -4582,47 +4579,47 @@ const ho = [
|
|
|
4582
4579
|
},
|
|
4583
4580
|
[[], []]
|
|
4584
4581
|
);
|
|
4585
|
-
o.value.plugin[
|
|
4582
|
+
o.value.plugin[b.anchor].data[z] = H, dA.forEach((Z) => B("anchorRemove", Z.data));
|
|
4586
4583
|
});
|
|
4587
4584
|
}), i.observe(I.value, {
|
|
4588
4585
|
childList: !0,
|
|
4589
4586
|
subtree: !0,
|
|
4590
4587
|
characterData: !0
|
|
4591
4588
|
});
|
|
4592
|
-
},
|
|
4589
|
+
}, f = () => {
|
|
4593
4590
|
var U;
|
|
4594
|
-
(U =
|
|
4591
|
+
(U = t.value) == null || U.destroy(), t.value = void 0, o.value = void 0, i == null || i.disconnect(), i = null;
|
|
4595
4592
|
}, D = (U) => {
|
|
4596
4593
|
const v = { ...st, ...U ?? {} };
|
|
4597
|
-
return v.withAuditHighlight ?
|
|
4598
|
-
}, u = async (U) =>
|
|
4594
|
+
return v.withAuditHighlight ? t.value.content.getContent() : AA(v);
|
|
4595
|
+
}, u = async (U) => t.value.content.setContent(U), R = async (U) => {
|
|
4599
4596
|
var v, O;
|
|
4600
|
-
E.simple ? (v =
|
|
4597
|
+
E.simple ? (v = t.value) == null || v.content.appendContent(U) : (O = t.value) == null || O.appendContent(U);
|
|
4601
4598
|
}, F = () => {
|
|
4602
4599
|
var U;
|
|
4603
|
-
return ((U =
|
|
4604
|
-
}, M = (U) =>
|
|
4600
|
+
return ((U = t.value) == null ? void 0 : U.content.getTextContent()) ?? [];
|
|
4601
|
+
}, M = (U) => t.value.content.insert(U), G = () => t.value.content.delete(), S = (U) => t.value.content.update(U), p = () => t.value.cursor.isCaret(), m = () => t.value.cursor.isRange(), P = () => {
|
|
4605
4602
|
var z;
|
|
4606
4603
|
const U = (z = o.value) == null ? void 0 : z.base.cursor.range;
|
|
4607
4604
|
if (q(U)) return !1;
|
|
4608
|
-
const [v] = PA(U.startContainer, (J) => J.tagName === "P" && J.classList.contains(
|
|
4605
|
+
const [v] = PA(U.startContainer, (J) => J.tagName === "P" && J.classList.contains(NA)), [O] = PA(U.endContainer, (J) => J.tagName === "P" && J.classList.contains(NA));
|
|
4609
4606
|
return !(q(v) || q(O) || v === O);
|
|
4610
4607
|
}, X = (U) => {
|
|
4611
4608
|
var J, H;
|
|
4612
|
-
const v = (J = o.value) == null ? void 0 : J.base.cursor.range, O = (H =
|
|
4609
|
+
const v = (J = o.value) == null ? void 0 : J.base.cursor.range, O = (H = t.value) == null ? void 0 : H.content.getParas(), z = O == null ? void 0 : O.map((dA) => Array.from(dA.querySelectorAll(`span[data-type="${U}"]`))).flat();
|
|
4613
4610
|
return q(v) || q(O) || q(z) ? !1 : z.some((dA) => v.intersectsNode(dA));
|
|
4614
4611
|
}, K = (U) => {
|
|
4615
4612
|
var v;
|
|
4616
|
-
return HA(U) ? ((v = U.textContent) == null ? void 0 : v.replace(/</g, "<").replace(/>/g, ">")) ?? "" : U.dataset.type ===
|
|
4613
|
+
return HA(U) ? ((v = U.textContent) == null ? void 0 : v.replace(/</g, "<").replace(/>/g, ">")) ?? "" : U.dataset.type === b.pausation ? `<break time="${Number(U.dataset.value) * 1e3}"/>` : U.dataset.type === b.pronunciation ? U.dataset.value : U.dataset.type === b.highlight ? U.dataset.raw : U.dataset.type === b.homophones ? `<phoneme alphabet="py" ph="${U.dataset.formattedValue}">${U.dataset.raw}</phoneme>` : "";
|
|
4617
4614
|
}, W = (U, v) => {
|
|
4618
4615
|
var wA;
|
|
4619
4616
|
const O = Le(U);
|
|
4620
4617
|
let z = [];
|
|
4621
4618
|
if (!O.length) return "";
|
|
4622
|
-
const J = (wA =
|
|
4619
|
+
const J = (wA = t.value) == null ? void 0 : wA.cursor.range;
|
|
4623
4620
|
let H = -1;
|
|
4624
4621
|
if (v && (J != null && J.collapse)) {
|
|
4625
|
-
const [RA] = PA(J == null ? void 0 : J.startContainer, (Z) => $(Z) && Z.dataset.type ===
|
|
4622
|
+
const [RA] = PA(J == null ? void 0 : J.startContainer, (Z) => $(Z) && Z.dataset.type === b.anchor);
|
|
4626
4623
|
H = O.findIndex((Z) => Z === RA), z = H > -1 ? O.slice(H) : O;
|
|
4627
4624
|
}
|
|
4628
4625
|
return z.map((RA, Z) => {
|
|
@@ -4640,12 +4637,12 @@ const ho = [
|
|
|
4640
4637
|
return [O.dataset.emotion, O.dataset.role];
|
|
4641
4638
|
}, CA = () => {
|
|
4642
4639
|
var O;
|
|
4643
|
-
return (((O =
|
|
4640
|
+
return (((O = t.value) == null ? void 0 : O.content.getParas()) ?? []).filter(
|
|
4644
4641
|
(z) => {
|
|
4645
4642
|
var J;
|
|
4646
4643
|
return (J = z.textContent) == null ? void 0 : J.trim();
|
|
4647
4644
|
}
|
|
4648
|
-
).map((z) => Array.from(z.childNodes)).flat().every((z) => HA(z) && ["", " ", null].includes(z.textContent) || $(z) && z.dataset.type ===
|
|
4645
|
+
).map((z) => Array.from(z.childNodes)).flat().every((z) => HA(z) && ["", " ", null].includes(z.textContent) || $(z) && z.dataset.type === b.anchor || $(z) && z.tagName === "BR");
|
|
4649
4646
|
}, nA = (U) => {
|
|
4650
4647
|
U.forEach((v) => {
|
|
4651
4648
|
var z;
|
|
@@ -4659,15 +4656,15 @@ const ho = [
|
|
|
4659
4656
|
u(""), B("clear"), setTimeout(() => {
|
|
4660
4657
|
var J, H;
|
|
4661
4658
|
const U = window.getSelection(), v = U != null && U.rangeCount ? U == null ? void 0 : U.getRangeAt(0) : null;
|
|
4662
|
-
if (q(U) || v && $(v.commonAncestorContainer) && v.commonAncestorContainer.classList.contains(
|
|
4659
|
+
if (q(U) || v && $(v.commonAncestorContainer) && v.commonAncestorContainer.classList.contains(NA))
|
|
4663
4660
|
return;
|
|
4664
|
-
const O = document.createRange(), z = (H = (J =
|
|
4661
|
+
const O = document.createRange(), z = (H = (J = t.value) == null ? void 0 : J.content.getParas()) == null ? void 0 : H[0];
|
|
4665
4662
|
q(z) || (O.selectNodeContents(z), O.collapse(!1), U.removeAllRanges(), U.addRange(O));
|
|
4666
4663
|
});
|
|
4667
4664
|
}
|
|
4668
4665
|
});
|
|
4669
4666
|
}, AA = (U) => {
|
|
4670
|
-
const v =
|
|
4667
|
+
const v = t.value.content.getContent(), O = document.createElement("div");
|
|
4671
4668
|
return O.innerHTML = v, U.withAuditHighlight || Array.from(
|
|
4672
4669
|
O.querySelectorAll(`.${yC}`)
|
|
4673
4670
|
).forEach((J) => {
|
|
@@ -4681,14 +4678,14 @@ const ho = [
|
|
|
4681
4678
|
}, fA = (U) => {
|
|
4682
4679
|
var O;
|
|
4683
4680
|
const v = Array.isArray(U) ? U : [U];
|
|
4684
|
-
if (!((O =
|
|
4681
|
+
if (!((O = t.value) != null && O.cursor.isRangeInEditor()) || !p()) {
|
|
4685
4682
|
Yg.warning("请选择要插入的位置!");
|
|
4686
4683
|
return;
|
|
4687
4684
|
}
|
|
4688
|
-
YI(
|
|
4685
|
+
YI(t.value, JI(t.value, v));
|
|
4689
4686
|
};
|
|
4690
|
-
return mg(c), RB(
|
|
4691
|
-
editorCore:
|
|
4687
|
+
return mg(c), RB(f), {
|
|
4688
|
+
editorCore: t,
|
|
4692
4689
|
editorAction: o,
|
|
4693
4690
|
count: r,
|
|
4694
4691
|
hasPausationTag: a,
|
|
@@ -4716,23 +4713,23 @@ const ho = [
|
|
|
4716
4713
|
}, Fo = "data:image/png;base64,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lzqLgAiIgAiIgAiIgAhkm4AEarYJa34REAEREAEREAEREIG0CEigpoVLnUVABERABERABERABLJNQAI124Q1vwiIgAiIgAiIgAiIQFoEJFDTwqXOIiACIiACIiACIiAC2SYggZptwppfBERABERABERABEQgLQISqGnhUmcREAEREAEREAEREIFsE5BAzTZhzS8CIiACIiACIiACIpAWAQnUtHCpswiIgAiIgAiIgAiIQLYJSKBmm7DmFwEREAEREAEREAERSIuABGpauNRZBERABERABERABESuZgeMAAAaXklEQVQg2wQkULNNWPOLgAiIgAiIgAiIgAikRUACNS1c6iwCIiACIiACIiACIpBtAhKo2Sas+UVABERABERABERABNIiIIGaFi51FgEREAEREAEREAERyDYBCdRsE9b8IiACIiACIiACIiACaRGQQE0LlzqLgAiIgAiIgAiIgAhkm4AEarYJa34REAEREAEREAEREIG0CEigpoVLnUVABERABERABERABLJNQAI124Q1vwiIgAiIgAiIgAiIQFoEJFDTwqXOIiACIiACIiACIiAC2SYggZptwppfBERABERABERABEQgLQISqGnhUmcREAEREAEREAEREIFsE5BAzTZhzS8CIiACIiACIiACIpAWAQnUtHCpswiIgAiIgAiIgAiIQLYJSKBmm7DmFwEREAEREAEREAERSIuABGpauNRZBERABERABERABEQg2wQkULNNWPOLgAiIgAiIgAiIgAikRUACNS1c6iwCIiACIiACIiACIpBtAhKo2Sas+UVABERABERABERABNIiIIGaFi51FgEREAEREAEREAERyDYBCdRsE9b8IiACIiACIiACIiACaRGQQE0LlzqLgAiIgAiIgAiIgAhkm4AEarYJa34REAEREAEREAEREIG0CEigpoVLnUVABERABERABERABLJNQAI124Q1vwiIgAiIgAiIgAiIQFoEJFDTwqXOIiACIiACIiACIiAC2SYggZptwppfBERABERABERABEQgLQISqGnhUmcREAEREAEREAEREIFsE5BAzTZhzS8CIiACIiACIiACIpAWAQnUtHCpswiIgAiIgAiIgAiIQLYJSKBmm7DmFwEREAEREAEREAERSIuABGpauNRZBERABERABERABEQg2wQkULNNWPOLgAiIgAiI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s65U+lJoVMY67gHAn/jGQCZ+JlF40To2VjOPWtmHlstEFiwKEgZBZVquNJX74p4k+sLBey2PZQjINO8tr88vBzwmt/oQ8/d00aBISlUc0T3BbBTCmTRarM0je/rGJuNKSzC/nLH4wXgag+H4XPBeudcMPEv2fIznehorAiKQAwQkUHNgE7QEERABERABERABERCBAwQkUPU0iIAIiIAIiIAIiIAI5BQBCdSc2g4tRgREQAREQAREQAREQAJVz4AIiIAIiIAIiIAIiEBOEZBAzant0GJEQAREQAREQAREQAQkUPUMiIAIiIAIiIAIiIAI5BQBCdSc2g4tRgREQAREQAREQAREQAJVz4AIiIAIiIAIiIAIiEBOEZBAzant0GJEQAREQAREQAREQAQkUPUMiIAIiIAIiIAIiIAI5BQBCdSc2g4tRgREQAREQAREQAREQAJVz4AIiIAIiIAIiIAIiEBOEZBAzant0GJEQAREQAREQAREQAQkUPUMiIAIiIAIiIAIiIAI5BQBCdSc2g4tRgREQAREQAREQAREQAJVz4AIiIAIiIAIiIAIiEBOEZBAzant0GJEQAREQAREQAREQAQkUPUMiIAIiIAIiIAIiIAI5BQBCdSc2g4tRgREQAREQAREQAREQAJVz4AIiIAIiIAIiIAIiEBOEZBAzant0GJEQAREQAREQAREQAQkUPUMiIAIiIAIiIAIiIAI5BQBCdSc2g4tRgREQAREQAREQAREQAJVz4AIiIAIiIAIiIAIiEBOEZBAzant0GJEQAREQAREQAREQAQkUPUMiIAIiIAIiIAIiIAI5BQBCdSc2g4tRgREQAREQAREQAREQAJVz4AIiIAIiIAIiIAIiEBOEZBAzant0GJEQAREQAREQAREQAT+P/dWXtNA9tK8AAAAAElFTkSuQmCC", No = { style: { display: "none" } }, Go = { class: "pausation" }, ko = "c-editor-container__core-content-editor-content", So = /* @__PURE__ */ vA({
|
|
4717
4714
|
__name: "contextMenu",
|
|
4718
4715
|
setup(I) {
|
|
4719
|
-
const [E] = ZA("quick-context-menu"), B = gg(fg), { x:
|
|
4716
|
+
const [E] = ZA("quick-context-menu"), B = gg(fg), { x: t, y: o } = HI(), r = (G, S) => {
|
|
4720
4717
|
var p, m;
|
|
4721
|
-
(m = (p = B == null ? void 0 : B.editorAction.value) == null ? void 0 : p.plugin.pausation) == null || m.add({ delay: S }),
|
|
4718
|
+
(m = (p = B == null ? void 0 : B.editorAction.value) == null ? void 0 : p.plugin.pausation) == null || m.add({ delay: S }), f(!1);
|
|
4722
4719
|
}, a = async () => {
|
|
4723
4720
|
let G = "", S = [];
|
|
4724
4721
|
G = await (window.microApp ? window.rawWindow.navigator : window.navigator).clipboard.readText(), S = (G == null ? void 0 : G.split(/(?:\r?\n){2,}/).map((m) => m.trim()).filter((m) => m)) ?? [], YI(
|
|
4725
4722
|
B.editorCore.value,
|
|
4726
4723
|
JI(B.editorCore.value, S)
|
|
4727
|
-
),
|
|
4728
|
-
}, i = yA(), h = yA(!1), d = yA({ zIndex: -10 }), c = Qe(),
|
|
4724
|
+
), f(!1);
|
|
4725
|
+
}, i = yA(), h = yA(!1), d = yA({ zIndex: -10 }), c = Qe(), f = (G) => {
|
|
4729
4726
|
h.value = G ?? !h.value, F(!1);
|
|
4730
4727
|
}, D = (G) => {
|
|
4731
4728
|
const S = G.target, [p] = PA(S, (m) => m.classList.contains(ko));
|
|
4732
|
-
p && (G.preventDefault(), G.stopPropagation(), d.value = { top: `${o.value}px`, left: `${
|
|
4729
|
+
p && (G.preventDefault(), G.stopPropagation(), d.value = { top: `${o.value}px`, left: `${t.value}px` }, f(!0));
|
|
4733
4730
|
}, u = (G) => {
|
|
4734
4731
|
var S;
|
|
4735
|
-
(S = i.value) != null && S.contains(G.target) || (d.value = { zIndex: -10 },
|
|
4732
|
+
(S = i.value) != null && S.contains(G.target) || (d.value = { zIndex: -10 }, f(!1));
|
|
4736
4733
|
}, R = yA(), F = (G) => {
|
|
4737
4734
|
var S;
|
|
4738
4735
|
(S = R.value) == null || S.$el.setAttribute("style", G ? "display: block" : "display: none");
|
|
@@ -4781,14 +4778,14 @@ const ho = [
|
|
|
4781
4778
|
}
|
|
4782
4779
|
}), Lo = /* @__PURE__ */ JA(So, [["__scopeId", "data-v-2c4a9bcb"]]);
|
|
4783
4780
|
function kI(I) {
|
|
4784
|
-
let E = null, B = null,
|
|
4781
|
+
let E = null, B = null, t = null;
|
|
4785
4782
|
const o = function(...r) {
|
|
4786
|
-
B = r,
|
|
4787
|
-
E = null, B && (I.apply(
|
|
4783
|
+
B = r, t = this, E == null && (E = requestAnimationFrame(() => {
|
|
4784
|
+
E = null, B && (I.apply(t, B), B = t = null);
|
|
4788
4785
|
}));
|
|
4789
4786
|
};
|
|
4790
4787
|
return o.cancel = () => {
|
|
4791
|
-
E != null && (cancelAnimationFrame(E), E = null), B =
|
|
4788
|
+
E != null && (cancelAnimationFrame(E), E = null), B = t = null;
|
|
4792
4789
|
}, o;
|
|
4793
4790
|
}
|
|
4794
4791
|
const Uo = {}, Mo = {
|
|
@@ -4994,16 +4991,16 @@ function on(I, E) {
|
|
|
4994
4991
|
}
|
|
4995
4992
|
const nn = /* @__PURE__ */ JA(en, [["render", on]]), jB = () => {
|
|
4996
4993
|
const { copy: I, isSupported: E } = me({ legacy: !0 });
|
|
4997
|
-
return { textCopyFun: (
|
|
4994
|
+
return { textCopyFun: (t, o = !0) => {
|
|
4998
4995
|
if (!E) {
|
|
4999
4996
|
Yg.error("您的浏览器不支持Clipboard API");
|
|
5000
4997
|
return;
|
|
5001
4998
|
}
|
|
5002
4999
|
if (!window.microApp)
|
|
5003
|
-
I(
|
|
5000
|
+
I(t);
|
|
5004
5001
|
else {
|
|
5005
5002
|
const r = document.createElement("input");
|
|
5006
|
-
document.body.appendChild(r), r.setAttribute("value",
|
|
5003
|
+
document.body.appendChild(r), r.setAttribute("value", t), r.select(), document.execCommand("copy") && document.execCommand("copy"), document.body.removeChild(r);
|
|
5007
5004
|
}
|
|
5008
5005
|
o && Yg.success("复制成功");
|
|
5009
5006
|
} };
|
|
@@ -5020,7 +5017,7 @@ const nn = /* @__PURE__ */ JA(en, [["render", on]]), jB = () => {
|
|
|
5020
5017
|
},
|
|
5021
5018
|
setup: (I) => {
|
|
5022
5019
|
const E = gg(fg), B = gg(CI) ?? {}, {
|
|
5023
|
-
textCopyFun:
|
|
5020
|
+
textCopyFun: t
|
|
5024
5021
|
} = jB(), o = MA(() => {
|
|
5025
5022
|
var d, c;
|
|
5026
5023
|
return (B == null ? void 0 : B.contentVisible.value) && ((c = (d = I.modelValue[I.modelValue.length - 1]) == null ? void 0 : d.content) == null ? void 0 : c.length);
|
|
@@ -5032,23 +5029,23 @@ const nn = /* @__PURE__ */ JA(en, [["render", on]]), jB = () => {
|
|
|
5032
5029
|
if (q(E) || q(E.editorCore.value)) return;
|
|
5033
5030
|
const d = (P) => {
|
|
5034
5031
|
const X = document.createElement("p");
|
|
5035
|
-
return X.textContent = P, X.classList.add(
|
|
5032
|
+
return X.textContent = P, X.classList.add(NA), X;
|
|
5036
5033
|
};
|
|
5037
5034
|
B.revertRange();
|
|
5038
5035
|
const {
|
|
5039
5036
|
range: c
|
|
5040
5037
|
} = E.editorCore.value.cursor;
|
|
5041
5038
|
if (q(c)) return;
|
|
5042
|
-
const
|
|
5043
|
-
if (q(
|
|
5039
|
+
const f = WA(c.endContainer);
|
|
5040
|
+
if (q(f) || q(f.parentNode)) return;
|
|
5044
5041
|
const D = document.createRange();
|
|
5045
|
-
D.setStart(c.endContainer, c.endOffset), D.setEndAfter(
|
|
5042
|
+
D.setStart(c.endContainer, c.endOffset), D.setEndAfter(f);
|
|
5046
5043
|
const u = D.extractContents(), R = (((m = B.activedContent.value) == null ? void 0 : m.content) ?? "").split($g), F = document.createDocumentFragment();
|
|
5047
5044
|
R.forEach((P) => {
|
|
5048
5045
|
F.appendChild(d(P));
|
|
5049
5046
|
});
|
|
5050
|
-
const M = F.lastChild, G =
|
|
5051
|
-
G.insertBefore(F,
|
|
5047
|
+
const M = F.lastChild, G = f.parentNode;
|
|
5048
|
+
G.insertBefore(F, f.nextSibling), G.insertBefore(u, M.nextSibling);
|
|
5052
5049
|
const S = window.getSelection();
|
|
5053
5050
|
if (!S) return;
|
|
5054
5051
|
const p = document.createRange();
|
|
@@ -5057,11 +5054,11 @@ const nn = /* @__PURE__ */ JA(en, [["render", on]]), jB = () => {
|
|
|
5057
5054
|
const {
|
|
5058
5055
|
content: d,
|
|
5059
5056
|
contentPage: c,
|
|
5060
|
-
setRefineContent:
|
|
5057
|
+
setRefineContent: f,
|
|
5061
5058
|
setActivedRefineContent: D,
|
|
5062
5059
|
setContentPage: u
|
|
5063
5060
|
} = B, R = d.value.filter((M, G) => G !== c.value - 1), F = R[c.value - 1] ? c.value : c.value - 1;
|
|
5064
|
-
u(F),
|
|
5061
|
+
u(F), f(R), D(d.value[c.value - 1]);
|
|
5065
5062
|
}, h = yA();
|
|
5066
5063
|
return gI(() => {
|
|
5067
5064
|
var d;
|
|
@@ -5124,7 +5121,7 @@ const nn = /* @__PURE__ */ JA(en, [["render", on]]), jB = () => {
|
|
|
5124
5121
|
}), N(OA("a-button"), {
|
|
5125
5122
|
onClick: () => {
|
|
5126
5123
|
var c;
|
|
5127
|
-
return
|
|
5124
|
+
return t((((c = B == null ? void 0 : B.activedContent.value) == null ? void 0 : c.content) ?? "").replaceAll($g, `
|
|
5128
5125
|
|
|
5129
5126
|
`));
|
|
5130
5127
|
}
|
|
@@ -5201,7 +5198,7 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5201
5198
|
setup: (I, {
|
|
5202
5199
|
emit: E
|
|
5203
5200
|
}) => {
|
|
5204
|
-
const B = gg(CI) ?? {},
|
|
5201
|
+
const B = gg(CI) ?? {}, t = MA(() => (B == null ? void 0 : B.contentState.value) === jA.未生成 ? "请输入优化文本的指令" : "AI撰写中..."), o = MA(() => {
|
|
5205
5202
|
var a;
|
|
5206
5203
|
return (a = B == null ? void 0 : B.prompt.value) == null ? void 0 : a.length;
|
|
5207
5204
|
}), r = () => {
|
|
@@ -5218,7 +5215,7 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5218
5215
|
}, [N(OA("a-input"), {
|
|
5219
5216
|
modelValue: I.modelValue,
|
|
5220
5217
|
disabled: B == null ? void 0 : B.generating.value,
|
|
5221
|
-
placeholder:
|
|
5218
|
+
placeholder: t.value,
|
|
5222
5219
|
onInput: (a) => E("update:modelValue", a),
|
|
5223
5220
|
onPressEnter: r
|
|
5224
5221
|
}, {
|
|
@@ -5262,7 +5259,7 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5262
5259
|
var d, c;
|
|
5263
5260
|
if ((d = i.children) != null && d.length) {
|
|
5264
5261
|
if (I.shortcutPosition.value === ag.底部) {
|
|
5265
|
-
const
|
|
5262
|
+
const f = Number.parseFloat(getComputedStyle(I.scrollElm.value).height), D = ((c = I.scrollElm.value) == null ? void 0 : c.scrollTop) ?? 0, u = f + D, R = Number.parseFloat(getComputedStyle(I.refineGeneratorRef.value).top), F = Number.parseFloat(getComputedStyle(I.refineGeneratorRef.value).height), M = sC.length * Zg + _g * 2, G = i.children.length * Zg, S = (sC.length - h) * Zg + _g, p = (
|
|
5266
5263
|
// 弹窗定位 + 高度
|
|
5267
5264
|
R + F + // 指令列表高度 + marginTop 8px
|
|
5268
5265
|
M + 8 + // 子指令列表高度 + bottomTop 8px
|
|
@@ -5274,15 +5271,15 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5274
5271
|
I.setSubShortcutPosition(sg.底部对齐);
|
|
5275
5272
|
a(h), o(!0);
|
|
5276
5273
|
}
|
|
5277
|
-
}, [
|
|
5274
|
+
}, [t, o] = fI(), [r, a] = KA(-1);
|
|
5278
5275
|
return () => {
|
|
5279
|
-
const i = (d, c,
|
|
5276
|
+
const i = (d, c, f = !0) => {
|
|
5280
5277
|
var D, u;
|
|
5281
5278
|
return N(cg, null, [N("li", {
|
|
5282
5279
|
class: uI("shortcut-item"),
|
|
5283
5280
|
onClick: () => E(d),
|
|
5284
|
-
onMouseenter:
|
|
5285
|
-
onMouseleave:
|
|
5281
|
+
onMouseenter: f ? () => B(d, c) : DC,
|
|
5282
|
+
onMouseleave: f ? () => o(!1) : DC
|
|
5286
5283
|
}, [N(OA("a-space"), {
|
|
5287
5284
|
style: "justify-content: space-between",
|
|
5288
5285
|
fill: !0
|
|
@@ -5298,7 +5295,7 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5298
5295
|
})]), (D = d.children) != null && D.length ? N("div", {
|
|
5299
5296
|
class: "sub-wrapper",
|
|
5300
5297
|
style: {
|
|
5301
|
-
display:
|
|
5298
|
+
display: t.value && r.value === c ? "block" : "none",
|
|
5302
5299
|
// top: `${32 * index - 8}px`,
|
|
5303
5300
|
top: I.subShortcutPosition.value === sg.顶部对齐 ? `${0 + Zg * c}px` : `${0 + (c + 1 - d.children.length) * Zg}px`,
|
|
5304
5301
|
padding: I.shortcutPosition.value === ag.底部 ? "8px" : "0 8px"
|
|
@@ -5332,7 +5329,7 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5332
5329
|
props: {},
|
|
5333
5330
|
emits: {},
|
|
5334
5331
|
setup: () => {
|
|
5335
|
-
const I = gg(fg), E = gg(CI), B = yA(), [
|
|
5332
|
+
const I = gg(fg), E = gg(CI), B = yA(), [t, o] = KA(!1, (M) => {
|
|
5336
5333
|
M || a({
|
|
5337
5334
|
zIndex: -10
|
|
5338
5335
|
});
|
|
@@ -5365,7 +5362,7 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5365
5362
|
});
|
|
5366
5363
|
}, d = (M) => {
|
|
5367
5364
|
var G;
|
|
5368
|
-
i = M,
|
|
5365
|
+
i = M, t.value && ((G = B.value) != null && G.contains(M.target) || (E.unhighlightRange(), o(!1)));
|
|
5369
5366
|
}, c = async (M) => {
|
|
5370
5367
|
if (await new Promise((S) => setTimeout(S, 100)), q(I) || q(I.editorCore.value)) return;
|
|
5371
5368
|
const {
|
|
@@ -5382,11 +5379,11 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5382
5379
|
return;
|
|
5383
5380
|
}
|
|
5384
5381
|
h(), o(!0);
|
|
5385
|
-
},
|
|
5386
|
-
|
|
5382
|
+
}, f = kI(() => {
|
|
5383
|
+
t.value && h();
|
|
5387
5384
|
}), D = kI(async (M) => {
|
|
5388
5385
|
var S, p;
|
|
5389
|
-
if (!
|
|
5386
|
+
if (!t.value || (S = B.value) != null && S.contains(i.target)) return;
|
|
5390
5387
|
const G = (p = I == null ? void 0 : I.editorCore.value) == null ? void 0 : p.cursor;
|
|
5391
5388
|
// 空上下文
|
|
5392
5389
|
(q(I) || // 空编辑器实例
|
|
@@ -5398,10 +5395,10 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5398
5395
|
});
|
|
5399
5396
|
mg(() => {
|
|
5400
5397
|
var M;
|
|
5401
|
-
document.addEventListener("mousedown", d), document.addEventListener("mouseup", c), document.addEventListener("selectionchange", D), (M = E.scrollElm.value) == null || M.addEventListener("scroll",
|
|
5398
|
+
document.addEventListener("mousedown", d), document.addEventListener("mouseup", c), document.addEventListener("selectionchange", D), (M = E.scrollElm.value) == null || M.addEventListener("scroll", f);
|
|
5402
5399
|
}), GC(() => {
|
|
5403
5400
|
var M;
|
|
5404
|
-
document.removeEventListener("mousedown", d), document.removeEventListener("mouseup", c), document.removeEventListener("selectionchange", D), (M = E.scrollElm.value) == null || M.removeEventListener("scroll",
|
|
5401
|
+
document.removeEventListener("mousedown", d), document.removeEventListener("mouseup", c), document.removeEventListener("selectionchange", D), (M = E.scrollElm.value) == null || M.removeEventListener("scroll", f);
|
|
5405
5402
|
});
|
|
5406
5403
|
const u = () => {
|
|
5407
5404
|
E.highlightRange(), o(!1), E.showRefineGenerator(), NC(() => {
|
|
@@ -5418,7 +5415,7 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5418
5415
|
class: lC(),
|
|
5419
5416
|
style: {
|
|
5420
5417
|
...r.value,
|
|
5421
|
-
display:
|
|
5418
|
+
display: t.value ? "flex" : "none"
|
|
5422
5419
|
}
|
|
5423
5420
|
}, [N("div", {
|
|
5424
5421
|
class: lC("item", "refine"),
|
|
@@ -5442,13 +5439,13 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5442
5439
|
}
|
|
5443
5440
|
}), hB = 144, Gn = 200, kn = (I) => {
|
|
5444
5441
|
gg(fg);
|
|
5445
|
-
const { refineGeneratorRef: E, scrollElm: B } = I, [
|
|
5442
|
+
const { refineGeneratorRef: E, scrollElm: B } = I, [t, o] = KA(
|
|
5446
5443
|
RI.底部
|
|
5447
5444
|
), [r, a] = KA(ag.底部), [i, h] = KA(
|
|
5448
5445
|
sg.顶部对齐
|
|
5449
5446
|
), d = () => {
|
|
5450
5447
|
if (!I.visible.value) return;
|
|
5451
|
-
const
|
|
5448
|
+
const f = I.scrollElm.value, D = Number.parseFloat(getComputedStyle(f).height), R = f.scrollTop + D, F = Number.parseFloat(getComputedStyle(E.value).top), M = Number.parseFloat(
|
|
5452
5449
|
getComputedStyle(I.refineGeneratorRef.value).height
|
|
5453
5450
|
);
|
|
5454
5451
|
o(
|
|
@@ -5460,13 +5457,13 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5460
5457
|
);
|
|
5461
5458
|
}, c = kI(d);
|
|
5462
5459
|
return mg(() => {
|
|
5463
|
-
var
|
|
5464
|
-
(
|
|
5460
|
+
var f;
|
|
5461
|
+
(f = B.value) == null || f.addEventListener("scroll", c);
|
|
5465
5462
|
}), GC(() => {
|
|
5466
|
-
var
|
|
5467
|
-
(
|
|
5463
|
+
var f;
|
|
5464
|
+
(f = B.value) == null || f.removeEventListener("scroll", c);
|
|
5468
5465
|
}), {
|
|
5469
|
-
generatorPosition:
|
|
5466
|
+
generatorPosition: t,
|
|
5470
5467
|
shortcutPosition: r,
|
|
5471
5468
|
subShortcutPosition: i,
|
|
5472
5469
|
setGeneratorPosition: o,
|
|
@@ -5487,18 +5484,18 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5487
5484
|
const {
|
|
5488
5485
|
highlightRange: E,
|
|
5489
5486
|
unhighlightRange: B,
|
|
5490
|
-
revertRange:
|
|
5487
|
+
revertRange: t
|
|
5491
5488
|
} = fo(), o = gg(fg), {
|
|
5492
5489
|
agentId: r,
|
|
5493
5490
|
createSession: a,
|
|
5494
5491
|
sendSessionMessage: i,
|
|
5495
5492
|
abortSession: h
|
|
5496
|
-
} = o.refineContext, [d, c] = KA(void 0),
|
|
5493
|
+
} = o.refineContext, [d, c] = KA(void 0), f = () => (i.abort(), h({
|
|
5497
5494
|
sessionId: d.value
|
|
5498
5495
|
})), D = yA(), [u, R] = KA({
|
|
5499
5496
|
zIndex: -10
|
|
5500
5497
|
}), [F, M] = KA(!1, (rA) => {
|
|
5501
|
-
rA || (d.value && [jA.等待生成, jA.正在生成].includes(v.value) &&
|
|
5498
|
+
rA || (d.value && [jA.等待生成, jA.正在生成].includes(v.value) && f(), c(void 0), EA(!1), nA(void 0), U(!1), O(jA.未生成), J(0), dA([]), RA(void 0), AA(!0), R({
|
|
5502
5499
|
zIndex: -10
|
|
5503
5500
|
}));
|
|
5504
5501
|
}), G = () => {
|
|
@@ -5598,12 +5595,12 @@ const WB = /* @__PURE__ */ JA(un, [["render", fn]]), [wB] = ZA("refine-input"),
|
|
|
5598
5595
|
setContentVisible: U,
|
|
5599
5596
|
setContentState: O,
|
|
5600
5597
|
showRefineGenerator: S,
|
|
5601
|
-
abortSession:
|
|
5598
|
+
abortSession: f,
|
|
5602
5599
|
/** highlight range */
|
|
5603
5600
|
scrollElm: P,
|
|
5604
5601
|
highlightRange: E,
|
|
5605
5602
|
unhighlightRange: B,
|
|
5606
|
-
revertRange:
|
|
5603
|
+
revertRange: t
|
|
5607
5604
|
}, {
|
|
5608
5605
|
generatorPosition: BA,
|
|
5609
5606
|
shortcutPosition: tA,
|
|
@@ -5800,14 +5797,14 @@ const DB = /* @__PURE__ */ JA(mn, [["render", Kn]]), [TA] = ZA("editor-container
|
|
|
5800
5797
|
slots: E,
|
|
5801
5798
|
emit: B
|
|
5802
5799
|
}) => {
|
|
5803
|
-
const
|
|
5800
|
+
const t = yA(), o = yA(), {
|
|
5804
5801
|
editorCore: r,
|
|
5805
5802
|
editorAction: a,
|
|
5806
5803
|
count: i,
|
|
5807
5804
|
hasPausationTag: h,
|
|
5808
5805
|
getContent: d,
|
|
5809
5806
|
setContent: c,
|
|
5810
|
-
appendContent:
|
|
5807
|
+
appendContent: f,
|
|
5811
5808
|
getTextContent: D,
|
|
5812
5809
|
insertContent: u,
|
|
5813
5810
|
deleteContent: R,
|
|
@@ -5825,14 +5822,14 @@ const DB = /* @__PURE__ */ JA(mn, [["render", Kn]]), [TA] = ZA("editor-container
|
|
|
5825
5822
|
insertContentAtCursor: CA,
|
|
5826
5823
|
renderHighlight: nA,
|
|
5827
5824
|
unrenderHighlight: kA
|
|
5828
|
-
} = Ro(
|
|
5825
|
+
} = Ro(t, I, B);
|
|
5829
5826
|
FB(fg, {
|
|
5830
5827
|
name: "Editor",
|
|
5831
5828
|
editorCore: r,
|
|
5832
5829
|
editorAction: a,
|
|
5833
5830
|
getContent: d,
|
|
5834
5831
|
setContent: c,
|
|
5835
|
-
appendContent:
|
|
5832
|
+
appendContent: f,
|
|
5836
5833
|
getTextContent: D,
|
|
5837
5834
|
insertContent: u,
|
|
5838
5835
|
deleteContent: R,
|
|
@@ -6021,13 +6018,13 @@ const DB = /* @__PURE__ */ JA(mn, [["render", Kn]]), [TA] = ZA("editor-container
|
|
|
6021
6018
|
display: U.value ? "block" : "none"
|
|
6022
6019
|
}
|
|
6023
6020
|
}, [I.placeholder]), N("div", {
|
|
6024
|
-
ref:
|
|
6021
|
+
ref: t,
|
|
6025
6022
|
class: TA("core-content-editor-content"),
|
|
6026
6023
|
contenteditable: !I.disabled,
|
|
6027
6024
|
onDragover: (Z) => Z.preventDefault(),
|
|
6028
6025
|
onDrop: (Z) => Z.preventDefault()
|
|
6029
6026
|
}, [N("p", {
|
|
6030
|
-
class:
|
|
6027
|
+
class: NA
|
|
6031
6028
|
}, [N("br", null, null)])])])]), I.simple ? null : N("div", {
|
|
6032
6029
|
ref: o,
|
|
6033
6030
|
class: TA("core-anchor")
|
|
@@ -6044,7 +6041,7 @@ const DB = /* @__PURE__ */ JA(mn, [["render", Kn]]), [TA] = ZA("editor-container
|
|
|
6044
6041
|
}, [JSON.stringify(AA.value), Object.values(AA.value).flat().length])]),
|
|
6045
6042
|
innerGetContent: d,
|
|
6046
6043
|
innerSetContent: c,
|
|
6047
|
-
innerAppendContent:
|
|
6044
|
+
innerAppendContent: f,
|
|
6048
6045
|
innerGetTextContent: D,
|
|
6049
6046
|
innerInsertContent: u,
|
|
6050
6047
|
innerDeleteContent: R,
|
|
@@ -6130,7 +6127,7 @@ const DB = /* @__PURE__ */ JA(mn, [["render", Kn]]), [TA] = ZA("editor-container
|
|
|
6130
6127
|
return this.innerInsertContentAtCursor(I);
|
|
6131
6128
|
},
|
|
6132
6129
|
clear() {
|
|
6133
|
-
return this.setContent(`<p class="${
|
|
6130
|
+
return this.setContent(`<p class="${NA}"><br /></p>`);
|
|
6134
6131
|
},
|
|
6135
6132
|
renderHighlight(I) {
|
|
6136
6133
|
return this.innerRenderHightlight(I);
|
|
@@ -6159,7 +6156,7 @@ export {
|
|
|
6159
6156
|
pI as IPlugin,
|
|
6160
6157
|
re as IUndoManager,
|
|
6161
6158
|
SB as ListenModeEnum,
|
|
6162
|
-
|
|
6159
|
+
b as PluginFlag,
|
|
6163
6160
|
te as SelectionType,
|
|
6164
6161
|
bn as default
|
|
6165
6162
|
};
|