fable-editor 1.3.0 → 1.3.1
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/angular/esm2022/core/editor.mjs +160 -1
- package/dist/angular/fesm2022/fable-editor.mjs +159 -0
- package/dist/angular/fesm2022/fable-editor.mjs.map +1 -1
- package/dist/core/editor.d.ts.map +1 -1
- package/dist/core/index.cjs +3 -3
- package/dist/core/index.mjs +562 -485
- package/dist/react/index.cjs +13 -13
- package/dist/react/index.mjs +938 -861
- package/package.json +1 -1
package/dist/react/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
var
|
|
1
|
+
import pe, { forwardRef as Xe, useRef as z, useImperativeHandle as Ye, useEffect as lt } from "react";
|
|
2
|
+
var Mt = { exports: {} }, J = {};
|
|
3
3
|
/**
|
|
4
4
|
* @license React
|
|
5
5
|
* react-jsx-runtime.production.min.js
|
|
@@ -9,19 +9,19 @@ var St = { exports: {} }, J = {};
|
|
|
9
9
|
* This source code is licensed under the MIT license found in the
|
|
10
10
|
* LICENSE file in the root directory of this source tree.
|
|
11
11
|
*/
|
|
12
|
-
var
|
|
13
|
-
function
|
|
14
|
-
if (
|
|
15
|
-
|
|
16
|
-
var u =
|
|
17
|
-
function r
|
|
18
|
-
var d, p = {}, m = null,
|
|
19
|
-
a !== void 0 && (m = "" + a), o.key !== void 0 && (m = "" + o.key), o.ref !== void 0 && (
|
|
12
|
+
var Jt;
|
|
13
|
+
function Ge() {
|
|
14
|
+
if (Jt) return J;
|
|
15
|
+
Jt = 1;
|
|
16
|
+
var u = pe, t = Symbol.for("react.element"), e = Symbol.for("react.fragment"), i = Object.prototype.hasOwnProperty, s = u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, n = { key: !0, ref: !0, __self: !0, __source: !0 };
|
|
17
|
+
function l(r, o, a) {
|
|
18
|
+
var d, p = {}, m = null, v = null;
|
|
19
|
+
a !== void 0 && (m = "" + a), o.key !== void 0 && (m = "" + o.key), o.ref !== void 0 && (v = o.ref);
|
|
20
20
|
for (d in o) i.call(o, d) && !n.hasOwnProperty(d) && (p[d] = o[d]);
|
|
21
|
-
if (
|
|
22
|
-
return { $$typeof: t, type:
|
|
21
|
+
if (r && r.defaultProps) for (d in o = r.defaultProps, o) p[d] === void 0 && (p[d] = o[d]);
|
|
22
|
+
return { $$typeof: t, type: r, key: m, ref: v, props: p, _owner: s.current };
|
|
23
23
|
}
|
|
24
|
-
return J.Fragment = e, J.jsx =
|
|
24
|
+
return J.Fragment = e, J.jsx = l, J.jsxs = l, J;
|
|
25
25
|
}
|
|
26
26
|
var tt = {};
|
|
27
27
|
/**
|
|
@@ -33,51 +33,51 @@ var tt = {};
|
|
|
33
33
|
* This source code is licensed under the MIT license found in the
|
|
34
34
|
* LICENSE file in the root directory of this source tree.
|
|
35
35
|
*/
|
|
36
|
-
var
|
|
37
|
-
function
|
|
38
|
-
return
|
|
39
|
-
var u =
|
|
40
|
-
function
|
|
36
|
+
var te;
|
|
37
|
+
function Ke() {
|
|
38
|
+
return te || (te = 1, process.env.NODE_ENV !== "production" && function() {
|
|
39
|
+
var u = pe, t = Symbol.for("react.element"), e = Symbol.for("react.portal"), i = Symbol.for("react.fragment"), s = Symbol.for("react.strict_mode"), n = Symbol.for("react.profiler"), l = Symbol.for("react.provider"), r = Symbol.for("react.context"), o = Symbol.for("react.forward_ref"), a = Symbol.for("react.suspense"), d = Symbol.for("react.suspense_list"), p = Symbol.for("react.memo"), m = Symbol.for("react.lazy"), v = Symbol.for("react.offscreen"), b = Symbol.iterator, f = "@@iterator";
|
|
40
|
+
function y(c) {
|
|
41
41
|
if (c === null || typeof c != "object")
|
|
42
42
|
return null;
|
|
43
|
-
var
|
|
44
|
-
return typeof
|
|
43
|
+
var g = b && c[b] || c[f];
|
|
44
|
+
return typeof g == "function" ? g : null;
|
|
45
45
|
}
|
|
46
|
-
var
|
|
46
|
+
var C = u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
47
47
|
function E(c) {
|
|
48
48
|
{
|
|
49
|
-
for (var
|
|
50
|
-
|
|
51
|
-
I("error", c,
|
|
49
|
+
for (var g = arguments.length, x = new Array(g > 1 ? g - 1 : 0), T = 1; T < g; T++)
|
|
50
|
+
x[T - 1] = arguments[T];
|
|
51
|
+
I("error", c, x);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
function I(c,
|
|
54
|
+
function I(c, g, x) {
|
|
55
55
|
{
|
|
56
|
-
var T =
|
|
57
|
-
k !== "" && (
|
|
58
|
-
var H =
|
|
56
|
+
var T = C.ReactDebugCurrentFrame, k = T.getStackAddendum();
|
|
57
|
+
k !== "" && (g += "%s", x = x.concat([k]));
|
|
58
|
+
var H = x.map(function(M) {
|
|
59
59
|
return String(M);
|
|
60
60
|
});
|
|
61
|
-
H.unshift("Warning: " +
|
|
61
|
+
H.unshift("Warning: " + g), Function.prototype.apply.call(console[c], console, H);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
var A = !1, $ = !1, Z = !1, F = !1, et = !1,
|
|
65
|
-
|
|
66
|
-
function
|
|
67
|
-
return !!(typeof c == "string" || typeof c == "function" || c === i || c === n || et || c === s || c === a || c === d || F || c ===
|
|
64
|
+
var A = !1, $ = !1, Z = !1, F = !1, et = !1, kt;
|
|
65
|
+
kt = Symbol.for("react.module.reference");
|
|
66
|
+
function ye(c) {
|
|
67
|
+
return !!(typeof c == "string" || typeof c == "function" || c === i || c === n || et || c === s || c === a || c === d || F || c === v || A || $ || Z || typeof c == "object" && c !== null && (c.$$typeof === m || c.$$typeof === p || c.$$typeof === l || c.$$typeof === r || c.$$typeof === o || // This needs to include all possible module reference object
|
|
68
68
|
// types supported by any Flight configuration anywhere since
|
|
69
69
|
// we don't know which Flight build this will end up being used
|
|
70
70
|
// with.
|
|
71
|
-
c.$$typeof ===
|
|
71
|
+
c.$$typeof === kt || c.getModuleId !== void 0));
|
|
72
72
|
}
|
|
73
|
-
function
|
|
73
|
+
function xe(c, g, x) {
|
|
74
74
|
var T = c.displayName;
|
|
75
75
|
if (T)
|
|
76
76
|
return T;
|
|
77
|
-
var k =
|
|
78
|
-
return k !== "" ?
|
|
77
|
+
var k = g.displayName || g.name || "";
|
|
78
|
+
return k !== "" ? x + "(" + k + ")" : x;
|
|
79
79
|
}
|
|
80
|
-
function
|
|
80
|
+
function At(c) {
|
|
81
81
|
return c.displayName || "Context";
|
|
82
82
|
}
|
|
83
83
|
function W(c) {
|
|
@@ -103,14 +103,14 @@ function Ye() {
|
|
|
103
103
|
}
|
|
104
104
|
if (typeof c == "object")
|
|
105
105
|
switch (c.$$typeof) {
|
|
106
|
-
case l:
|
|
107
|
-
var f = c;
|
|
108
|
-
return kt(f) + ".Consumer";
|
|
109
106
|
case r:
|
|
110
|
-
var
|
|
111
|
-
return
|
|
107
|
+
var g = c;
|
|
108
|
+
return At(g) + ".Consumer";
|
|
109
|
+
case l:
|
|
110
|
+
var x = c;
|
|
111
|
+
return At(x._context) + ".Provider";
|
|
112
112
|
case o:
|
|
113
|
-
return
|
|
113
|
+
return xe(c, c.render, "ForwardRef");
|
|
114
114
|
case p:
|
|
115
115
|
var T = c.displayName || null;
|
|
116
116
|
return T !== null ? T : W(c.type) || "Memo";
|
|
@@ -125,14 +125,14 @@ function Ye() {
|
|
|
125
125
|
}
|
|
126
126
|
return null;
|
|
127
127
|
}
|
|
128
|
-
var U = Object.assign,
|
|
128
|
+
var U = Object.assign, K = 0, Ht, It, qt, Rt, Pt, Bt, Dt;
|
|
129
129
|
function Nt() {
|
|
130
130
|
}
|
|
131
131
|
Nt.__reactDisabledLog = !0;
|
|
132
|
-
function
|
|
132
|
+
function Ce() {
|
|
133
133
|
{
|
|
134
|
-
if (
|
|
135
|
-
|
|
134
|
+
if (K === 0) {
|
|
135
|
+
Ht = console.log, It = console.info, qt = console.warn, Rt = console.error, Pt = console.group, Bt = console.groupCollapsed, Dt = console.groupEnd;
|
|
136
136
|
var c = {
|
|
137
137
|
configurable: !0,
|
|
138
138
|
enumerable: !0,
|
|
@@ -149,12 +149,12 @@ function Ye() {
|
|
|
149
149
|
groupEnd: c
|
|
150
150
|
});
|
|
151
151
|
}
|
|
152
|
-
|
|
152
|
+
K++;
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
function
|
|
155
|
+
function we() {
|
|
156
156
|
{
|
|
157
|
-
if (
|
|
157
|
+
if (K--, K === 0) {
|
|
158
158
|
var c = {
|
|
159
159
|
configurable: !0,
|
|
160
160
|
enumerable: !0,
|
|
@@ -162,66 +162,66 @@ function Ye() {
|
|
|
162
162
|
};
|
|
163
163
|
Object.defineProperties(console, {
|
|
164
164
|
log: U({}, c, {
|
|
165
|
-
value:
|
|
165
|
+
value: Ht
|
|
166
166
|
}),
|
|
167
167
|
info: U({}, c, {
|
|
168
|
-
value:
|
|
168
|
+
value: It
|
|
169
169
|
}),
|
|
170
170
|
warn: U({}, c, {
|
|
171
|
-
value:
|
|
171
|
+
value: qt
|
|
172
172
|
}),
|
|
173
173
|
error: U({}, c, {
|
|
174
|
-
value:
|
|
174
|
+
value: Rt
|
|
175
175
|
}),
|
|
176
176
|
group: U({}, c, {
|
|
177
|
-
value:
|
|
177
|
+
value: Pt
|
|
178
178
|
}),
|
|
179
179
|
groupCollapsed: U({}, c, {
|
|
180
|
-
value:
|
|
180
|
+
value: Bt
|
|
181
181
|
}),
|
|
182
182
|
groupEnd: U({}, c, {
|
|
183
|
-
value:
|
|
183
|
+
value: Dt
|
|
184
184
|
})
|
|
185
185
|
});
|
|
186
186
|
}
|
|
187
|
-
|
|
187
|
+
K < 0 && E("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
var
|
|
191
|
-
function it(c,
|
|
190
|
+
var mt = C.ReactCurrentDispatcher, ft;
|
|
191
|
+
function it(c, g, x) {
|
|
192
192
|
{
|
|
193
|
-
if (
|
|
193
|
+
if (ft === void 0)
|
|
194
194
|
try {
|
|
195
195
|
throw Error();
|
|
196
196
|
} catch (k) {
|
|
197
197
|
var T = k.stack.trim().match(/\n( *(at )?)/);
|
|
198
|
-
|
|
198
|
+
ft = T && T[1] || "";
|
|
199
199
|
}
|
|
200
200
|
return `
|
|
201
|
-
` +
|
|
201
|
+
` + ft + c;
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
|
-
var
|
|
204
|
+
var gt = !1, st;
|
|
205
205
|
{
|
|
206
|
-
var
|
|
207
|
-
st = new
|
|
206
|
+
var Te = typeof WeakMap == "function" ? WeakMap : Map;
|
|
207
|
+
st = new Te();
|
|
208
208
|
}
|
|
209
|
-
function
|
|
210
|
-
if (!c ||
|
|
209
|
+
function Ot(c, g) {
|
|
210
|
+
if (!c || gt)
|
|
211
211
|
return "";
|
|
212
212
|
{
|
|
213
|
-
var
|
|
214
|
-
if (
|
|
215
|
-
return
|
|
213
|
+
var x = st.get(c);
|
|
214
|
+
if (x !== void 0)
|
|
215
|
+
return x;
|
|
216
216
|
}
|
|
217
217
|
var T;
|
|
218
|
-
|
|
218
|
+
gt = !0;
|
|
219
219
|
var k = Error.prepareStackTrace;
|
|
220
220
|
Error.prepareStackTrace = void 0;
|
|
221
221
|
var H;
|
|
222
|
-
H =
|
|
222
|
+
H = mt.current, mt.current = null, Ce();
|
|
223
223
|
try {
|
|
224
|
-
if (
|
|
224
|
+
if (g) {
|
|
225
225
|
var M = function() {
|
|
226
226
|
throw Error();
|
|
227
227
|
};
|
|
@@ -232,37 +232,37 @@ function Ye() {
|
|
|
232
232
|
}), typeof Reflect == "object" && Reflect.construct) {
|
|
233
233
|
try {
|
|
234
234
|
Reflect.construct(M, []);
|
|
235
|
-
} catch (
|
|
236
|
-
T =
|
|
235
|
+
} catch (N) {
|
|
236
|
+
T = N;
|
|
237
237
|
}
|
|
238
238
|
Reflect.construct(c, [], M);
|
|
239
239
|
} else {
|
|
240
240
|
try {
|
|
241
241
|
M.call();
|
|
242
|
-
} catch (
|
|
243
|
-
T =
|
|
242
|
+
} catch (N) {
|
|
243
|
+
T = N;
|
|
244
244
|
}
|
|
245
245
|
c.call(M.prototype);
|
|
246
246
|
}
|
|
247
247
|
} else {
|
|
248
248
|
try {
|
|
249
249
|
throw Error();
|
|
250
|
-
} catch (
|
|
251
|
-
T =
|
|
250
|
+
} catch (N) {
|
|
251
|
+
T = N;
|
|
252
252
|
}
|
|
253
253
|
c();
|
|
254
254
|
}
|
|
255
|
-
} catch (
|
|
256
|
-
if (
|
|
257
|
-
for (var S =
|
|
258
|
-
`),
|
|
259
|
-
`), R = S.length - 1, P =
|
|
255
|
+
} catch (N) {
|
|
256
|
+
if (N && T && typeof N.stack == "string") {
|
|
257
|
+
for (var S = N.stack.split(`
|
|
258
|
+
`), D = T.stack.split(`
|
|
259
|
+
`), R = S.length - 1, P = D.length - 1; R >= 1 && P >= 0 && S[R] !== D[P]; )
|
|
260
260
|
P--;
|
|
261
261
|
for (; R >= 1 && P >= 0; R--, P--)
|
|
262
|
-
if (S[R] !==
|
|
262
|
+
if (S[R] !== D[P]) {
|
|
263
263
|
if (R !== 1 || P !== 1)
|
|
264
264
|
do
|
|
265
|
-
if (R--, P--, P < 0 || S[R] !==
|
|
265
|
+
if (R--, P--, P < 0 || S[R] !== D[P]) {
|
|
266
266
|
var _ = `
|
|
267
267
|
` + S[R].replace(" at new ", " at ");
|
|
268
268
|
return c.displayName && _.includes("<anonymous>") && (_ = _.replace("<anonymous>", c.displayName)), typeof c == "function" && st.set(c, _), _;
|
|
@@ -272,23 +272,23 @@ function Ye() {
|
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
274
|
} finally {
|
|
275
|
-
|
|
275
|
+
gt = !1, mt.current = H, we(), Error.prepareStackTrace = k;
|
|
276
276
|
}
|
|
277
277
|
var G = c ? c.displayName || c.name : "", V = G ? it(G) : "";
|
|
278
278
|
return typeof c == "function" && st.set(c, V), V;
|
|
279
279
|
}
|
|
280
|
-
function
|
|
281
|
-
return
|
|
280
|
+
function Ee(c, g, x) {
|
|
281
|
+
return Ot(c, !1);
|
|
282
282
|
}
|
|
283
|
-
function
|
|
284
|
-
var
|
|
285
|
-
return !!(
|
|
283
|
+
function Se(c) {
|
|
284
|
+
var g = c.prototype;
|
|
285
|
+
return !!(g && g.isReactComponent);
|
|
286
286
|
}
|
|
287
|
-
function nt(c,
|
|
287
|
+
function nt(c, g, x) {
|
|
288
288
|
if (c == null)
|
|
289
289
|
return "";
|
|
290
290
|
if (typeof c == "function")
|
|
291
|
-
return
|
|
291
|
+
return Ot(c, Se(c));
|
|
292
292
|
if (typeof c == "string")
|
|
293
293
|
return it(c);
|
|
294
294
|
switch (c) {
|
|
@@ -300,125 +300,125 @@ function Ye() {
|
|
|
300
300
|
if (typeof c == "object")
|
|
301
301
|
switch (c.$$typeof) {
|
|
302
302
|
case o:
|
|
303
|
-
return
|
|
303
|
+
return Ee(c.render);
|
|
304
304
|
case p:
|
|
305
|
-
return nt(c.type,
|
|
305
|
+
return nt(c.type, g, x);
|
|
306
306
|
case m: {
|
|
307
307
|
var T = c, k = T._payload, H = T._init;
|
|
308
308
|
try {
|
|
309
|
-
return nt(H(k),
|
|
309
|
+
return nt(H(k), g, x);
|
|
310
310
|
} catch {
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
314
|
return "";
|
|
315
315
|
}
|
|
316
|
-
var
|
|
316
|
+
var Q = Object.prototype.hasOwnProperty, Zt = {}, Ft = C.ReactDebugCurrentFrame;
|
|
317
317
|
function rt(c) {
|
|
318
318
|
if (c) {
|
|
319
|
-
var
|
|
320
|
-
|
|
319
|
+
var g = c._owner, x = nt(c.type, c._source, g ? g.type : null);
|
|
320
|
+
Ft.setExtraStackFrame(x);
|
|
321
321
|
} else
|
|
322
|
-
|
|
322
|
+
Ft.setExtraStackFrame(null);
|
|
323
323
|
}
|
|
324
|
-
function
|
|
324
|
+
function Me(c, g, x, T, k) {
|
|
325
325
|
{
|
|
326
|
-
var H = Function.call.bind(
|
|
326
|
+
var H = Function.call.bind(Q);
|
|
327
327
|
for (var M in c)
|
|
328
328
|
if (H(c, M)) {
|
|
329
329
|
var S = void 0;
|
|
330
330
|
try {
|
|
331
331
|
if (typeof c[M] != "function") {
|
|
332
|
-
var
|
|
333
|
-
throw
|
|
332
|
+
var D = Error((T || "React class") + ": " + x + " type `" + M + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof c[M] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
|
|
333
|
+
throw D.name = "Invariant Violation", D;
|
|
334
334
|
}
|
|
335
|
-
S = c[M](
|
|
335
|
+
S = c[M](g, M, T, x, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
|
|
336
336
|
} catch (R) {
|
|
337
337
|
S = R;
|
|
338
338
|
}
|
|
339
|
-
S && !(S instanceof Error) && (rt(k), E("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", T || "React class",
|
|
339
|
+
S && !(S instanceof Error) && (rt(k), E("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", T || "React class", x, M, typeof S), rt(null)), S instanceof Error && !(S.message in Zt) && (Zt[S.message] = !0, rt(k), E("Failed %s type: %s", x, S.message), rt(null));
|
|
340
340
|
}
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
|
-
var
|
|
344
|
-
function
|
|
345
|
-
return
|
|
343
|
+
var Le = Array.isArray;
|
|
344
|
+
function vt(c) {
|
|
345
|
+
return Le(c);
|
|
346
346
|
}
|
|
347
|
-
function
|
|
347
|
+
function ke(c) {
|
|
348
348
|
{
|
|
349
|
-
var
|
|
350
|
-
return
|
|
349
|
+
var g = typeof Symbol == "function" && Symbol.toStringTag, x = g && c[Symbol.toStringTag] || c.constructor.name || "Object";
|
|
350
|
+
return x;
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
|
-
function
|
|
353
|
+
function Ae(c) {
|
|
354
354
|
try {
|
|
355
|
-
return
|
|
355
|
+
return _t(c), !1;
|
|
356
356
|
} catch {
|
|
357
357
|
return !0;
|
|
358
358
|
}
|
|
359
359
|
}
|
|
360
|
-
function
|
|
360
|
+
function _t(c) {
|
|
361
361
|
return "" + c;
|
|
362
362
|
}
|
|
363
|
-
function
|
|
364
|
-
if (
|
|
365
|
-
return E("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",
|
|
363
|
+
function $t(c) {
|
|
364
|
+
if (Ae(c))
|
|
365
|
+
return E("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", ke(c)), _t(c);
|
|
366
366
|
}
|
|
367
|
-
var
|
|
367
|
+
var jt = C.ReactCurrentOwner, He = {
|
|
368
368
|
key: !0,
|
|
369
369
|
ref: !0,
|
|
370
370
|
__self: !0,
|
|
371
371
|
__source: !0
|
|
372
|
-
},
|
|
373
|
-
function
|
|
374
|
-
if (
|
|
375
|
-
var
|
|
376
|
-
if (
|
|
372
|
+
}, Wt, Ut;
|
|
373
|
+
function Ie(c) {
|
|
374
|
+
if (Q.call(c, "ref")) {
|
|
375
|
+
var g = Object.getOwnPropertyDescriptor(c, "ref").get;
|
|
376
|
+
if (g && g.isReactWarning)
|
|
377
377
|
return !1;
|
|
378
378
|
}
|
|
379
379
|
return c.ref !== void 0;
|
|
380
380
|
}
|
|
381
|
-
function
|
|
382
|
-
if (
|
|
383
|
-
var
|
|
384
|
-
if (
|
|
381
|
+
function qe(c) {
|
|
382
|
+
if (Q.call(c, "key")) {
|
|
383
|
+
var g = Object.getOwnPropertyDescriptor(c, "key").get;
|
|
384
|
+
if (g && g.isReactWarning)
|
|
385
385
|
return !1;
|
|
386
386
|
}
|
|
387
387
|
return c.key !== void 0;
|
|
388
388
|
}
|
|
389
|
-
function
|
|
390
|
-
typeof c.ref == "string" &&
|
|
389
|
+
function Re(c, g) {
|
|
390
|
+
typeof c.ref == "string" && jt.current;
|
|
391
391
|
}
|
|
392
|
-
function
|
|
392
|
+
function Pe(c, g) {
|
|
393
393
|
{
|
|
394
|
-
var
|
|
395
|
-
|
|
394
|
+
var x = function() {
|
|
395
|
+
Wt || (Wt = !0, E("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", g));
|
|
396
396
|
};
|
|
397
|
-
|
|
398
|
-
get:
|
|
397
|
+
x.isReactWarning = !0, Object.defineProperty(c, "key", {
|
|
398
|
+
get: x,
|
|
399
399
|
configurable: !0
|
|
400
400
|
});
|
|
401
401
|
}
|
|
402
402
|
}
|
|
403
|
-
function
|
|
403
|
+
function Be(c, g) {
|
|
404
404
|
{
|
|
405
|
-
var
|
|
406
|
-
|
|
405
|
+
var x = function() {
|
|
406
|
+
Ut || (Ut = !0, E("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", g));
|
|
407
407
|
};
|
|
408
|
-
|
|
409
|
-
get:
|
|
408
|
+
x.isReactWarning = !0, Object.defineProperty(c, "ref", {
|
|
409
|
+
get: x,
|
|
410
410
|
configurable: !0
|
|
411
411
|
});
|
|
412
412
|
}
|
|
413
413
|
}
|
|
414
|
-
var
|
|
414
|
+
var De = function(c, g, x, T, k, H, M) {
|
|
415
415
|
var S = {
|
|
416
416
|
// This tag allows us to uniquely identify this as a React Element
|
|
417
417
|
$$typeof: t,
|
|
418
418
|
// Built-in properties that belong on the element
|
|
419
419
|
type: c,
|
|
420
|
-
key:
|
|
421
|
-
ref:
|
|
420
|
+
key: g,
|
|
421
|
+
ref: x,
|
|
422
422
|
props: M,
|
|
423
423
|
// Record the component responsible for creating this element.
|
|
424
424
|
_owner: H
|
|
@@ -440,41 +440,41 @@ function Ye() {
|
|
|
440
440
|
value: k
|
|
441
441
|
}), Object.freeze && (Object.freeze(S.props), Object.freeze(S)), S;
|
|
442
442
|
};
|
|
443
|
-
function
|
|
443
|
+
function Ne(c, g, x, T, k) {
|
|
444
444
|
{
|
|
445
|
-
var H, M = {}, S = null,
|
|
446
|
-
|
|
447
|
-
for (H in
|
|
448
|
-
|
|
445
|
+
var H, M = {}, S = null, D = null;
|
|
446
|
+
x !== void 0 && ($t(x), S = "" + x), qe(g) && ($t(g.key), S = "" + g.key), Ie(g) && (D = g.ref, Re(g, k));
|
|
447
|
+
for (H in g)
|
|
448
|
+
Q.call(g, H) && !He.hasOwnProperty(H) && (M[H] = g[H]);
|
|
449
449
|
if (c && c.defaultProps) {
|
|
450
450
|
var R = c.defaultProps;
|
|
451
451
|
for (H in R)
|
|
452
452
|
M[H] === void 0 && (M[H] = R[H]);
|
|
453
453
|
}
|
|
454
|
-
if (S ||
|
|
454
|
+
if (S || D) {
|
|
455
455
|
var P = typeof c == "function" ? c.displayName || c.name || "Unknown" : c;
|
|
456
|
-
S &&
|
|
456
|
+
S && Pe(M, P), D && Be(M, P);
|
|
457
457
|
}
|
|
458
|
-
return
|
|
458
|
+
return De(c, S, D, k, T, jt.current, M);
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
|
-
var
|
|
461
|
+
var bt = C.ReactCurrentOwner, Vt = C.ReactDebugCurrentFrame;
|
|
462
462
|
function Y(c) {
|
|
463
463
|
if (c) {
|
|
464
|
-
var
|
|
465
|
-
|
|
464
|
+
var g = c._owner, x = nt(c.type, c._source, g ? g.type : null);
|
|
465
|
+
Vt.setExtraStackFrame(x);
|
|
466
466
|
} else
|
|
467
|
-
|
|
467
|
+
Vt.setExtraStackFrame(null);
|
|
468
468
|
}
|
|
469
|
-
var
|
|
470
|
-
|
|
471
|
-
function
|
|
469
|
+
var yt;
|
|
470
|
+
yt = !1;
|
|
471
|
+
function xt(c) {
|
|
472
472
|
return typeof c == "object" && c !== null && c.$$typeof === t;
|
|
473
473
|
}
|
|
474
|
-
function
|
|
474
|
+
function zt() {
|
|
475
475
|
{
|
|
476
|
-
if (
|
|
477
|
-
var c = W(
|
|
476
|
+
if (bt.current) {
|
|
477
|
+
var c = W(bt.current.type);
|
|
478
478
|
if (c)
|
|
479
479
|
return `
|
|
480
480
|
|
|
@@ -483,83 +483,83 @@ Check the render method of \`` + c + "`.";
|
|
|
483
483
|
return "";
|
|
484
484
|
}
|
|
485
485
|
}
|
|
486
|
-
function
|
|
486
|
+
function Oe(c) {
|
|
487
487
|
return "";
|
|
488
488
|
}
|
|
489
|
-
var
|
|
490
|
-
function
|
|
489
|
+
var Xt = {};
|
|
490
|
+
function Ze(c) {
|
|
491
491
|
{
|
|
492
|
-
var
|
|
493
|
-
if (!
|
|
494
|
-
var
|
|
495
|
-
|
|
492
|
+
var g = zt();
|
|
493
|
+
if (!g) {
|
|
494
|
+
var x = typeof c == "string" ? c : c.displayName || c.name;
|
|
495
|
+
x && (g = `
|
|
496
496
|
|
|
497
|
-
Check the top-level render call using <` +
|
|
497
|
+
Check the top-level render call using <` + x + ">.");
|
|
498
498
|
}
|
|
499
|
-
return
|
|
499
|
+
return g;
|
|
500
500
|
}
|
|
501
501
|
}
|
|
502
|
-
function
|
|
502
|
+
function Yt(c, g) {
|
|
503
503
|
{
|
|
504
504
|
if (!c._store || c._store.validated || c.key != null)
|
|
505
505
|
return;
|
|
506
506
|
c._store.validated = !0;
|
|
507
|
-
var
|
|
508
|
-
if (
|
|
507
|
+
var x = Ze(g);
|
|
508
|
+
if (Xt[x])
|
|
509
509
|
return;
|
|
510
|
-
|
|
510
|
+
Xt[x] = !0;
|
|
511
511
|
var T = "";
|
|
512
|
-
c && c._owner && c._owner !==
|
|
512
|
+
c && c._owner && c._owner !== bt.current && (T = " It was passed a child from " + W(c._owner.type) + "."), Y(c), E('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', x, T), Y(null);
|
|
513
513
|
}
|
|
514
514
|
}
|
|
515
|
-
function
|
|
515
|
+
function Gt(c, g) {
|
|
516
516
|
{
|
|
517
517
|
if (typeof c != "object")
|
|
518
518
|
return;
|
|
519
|
-
if (
|
|
520
|
-
for (var
|
|
521
|
-
var T = c[
|
|
522
|
-
|
|
519
|
+
if (vt(c))
|
|
520
|
+
for (var x = 0; x < c.length; x++) {
|
|
521
|
+
var T = c[x];
|
|
522
|
+
xt(T) && Yt(T, g);
|
|
523
523
|
}
|
|
524
|
-
else if (
|
|
524
|
+
else if (xt(c))
|
|
525
525
|
c._store && (c._store.validated = !0);
|
|
526
526
|
else if (c) {
|
|
527
|
-
var k =
|
|
527
|
+
var k = y(c);
|
|
528
528
|
if (typeof k == "function" && k !== c.entries)
|
|
529
529
|
for (var H = k.call(c), M; !(M = H.next()).done; )
|
|
530
|
-
|
|
530
|
+
xt(M.value) && Yt(M.value, g);
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
533
|
}
|
|
534
|
-
function
|
|
534
|
+
function Fe(c) {
|
|
535
535
|
{
|
|
536
|
-
var
|
|
537
|
-
if (
|
|
536
|
+
var g = c.type;
|
|
537
|
+
if (g == null || typeof g == "string")
|
|
538
538
|
return;
|
|
539
|
-
var
|
|
540
|
-
if (typeof
|
|
541
|
-
|
|
542
|
-
else if (typeof
|
|
539
|
+
var x;
|
|
540
|
+
if (typeof g == "function")
|
|
541
|
+
x = g.propTypes;
|
|
542
|
+
else if (typeof g == "object" && (g.$$typeof === o || // Note: Memo only checks outer props here.
|
|
543
543
|
// Inner props are checked in the reconciler.
|
|
544
|
-
|
|
545
|
-
|
|
544
|
+
g.$$typeof === p))
|
|
545
|
+
x = g.propTypes;
|
|
546
546
|
else
|
|
547
547
|
return;
|
|
548
|
-
if (
|
|
549
|
-
var T = W(
|
|
550
|
-
|
|
551
|
-
} else if (
|
|
552
|
-
|
|
553
|
-
var k = W(
|
|
548
|
+
if (x) {
|
|
549
|
+
var T = W(g);
|
|
550
|
+
Me(x, c.props, "prop", T, c);
|
|
551
|
+
} else if (g.PropTypes !== void 0 && !yt) {
|
|
552
|
+
yt = !0;
|
|
553
|
+
var k = W(g);
|
|
554
554
|
E("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", k || "Unknown");
|
|
555
555
|
}
|
|
556
|
-
typeof
|
|
556
|
+
typeof g.getDefaultProps == "function" && !g.getDefaultProps.isReactClassApproved && E("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
|
|
557
557
|
}
|
|
558
558
|
}
|
|
559
|
-
function
|
|
559
|
+
function _e(c) {
|
|
560
560
|
{
|
|
561
|
-
for (var
|
|
562
|
-
var T =
|
|
561
|
+
for (var g = Object.keys(c.props), x = 0; x < g.length; x++) {
|
|
562
|
+
var T = g[x];
|
|
563
563
|
if (T !== "children" && T !== "key") {
|
|
564
564
|
Y(c), E("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", T), Y(null);
|
|
565
565
|
break;
|
|
@@ -568,64 +568,64 @@ Check the top-level render call using <` + v + ">.");
|
|
|
568
568
|
c.ref !== null && (Y(c), E("Invalid attribute `ref` supplied to `React.Fragment`."), Y(null));
|
|
569
569
|
}
|
|
570
570
|
}
|
|
571
|
-
var
|
|
572
|
-
function Qt(c,
|
|
571
|
+
var Kt = {};
|
|
572
|
+
function Qt(c, g, x, T, k, H) {
|
|
573
573
|
{
|
|
574
|
-
var M =
|
|
574
|
+
var M = ye(c);
|
|
575
575
|
if (!M) {
|
|
576
576
|
var S = "";
|
|
577
577
|
(c === void 0 || typeof c == "object" && c !== null && Object.keys(c).length === 0) && (S += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");
|
|
578
|
-
var
|
|
579
|
-
|
|
578
|
+
var D = Oe();
|
|
579
|
+
D ? S += D : S += zt();
|
|
580
580
|
var R;
|
|
581
|
-
c === null ? R = "null" :
|
|
581
|
+
c === null ? R = "null" : vt(c) ? R = "array" : c !== void 0 && c.$$typeof === t ? (R = "<" + (W(c.type) || "Unknown") + " />", S = " Did you accidentally export a JSX literal instead of a component?") : R = typeof c, E("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", R, S);
|
|
582
582
|
}
|
|
583
|
-
var P =
|
|
583
|
+
var P = Ne(c, g, x, k, H);
|
|
584
584
|
if (P == null)
|
|
585
585
|
return P;
|
|
586
586
|
if (M) {
|
|
587
|
-
var _ =
|
|
587
|
+
var _ = g.children;
|
|
588
588
|
if (_ !== void 0)
|
|
589
589
|
if (T)
|
|
590
|
-
if (
|
|
590
|
+
if (vt(_)) {
|
|
591
591
|
for (var G = 0; G < _.length; G++)
|
|
592
|
-
|
|
592
|
+
Gt(_[G], c);
|
|
593
593
|
Object.freeze && Object.freeze(_);
|
|
594
594
|
} else
|
|
595
595
|
E("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
|
|
596
596
|
else
|
|
597
|
-
|
|
597
|
+
Gt(_, c);
|
|
598
598
|
}
|
|
599
|
-
if (
|
|
600
|
-
var V = W(c),
|
|
601
|
-
return
|
|
602
|
-
}),
|
|
603
|
-
if (!
|
|
604
|
-
var
|
|
599
|
+
if (Q.call(g, "key")) {
|
|
600
|
+
var V = W(c), N = Object.keys(g).filter(function(ze) {
|
|
601
|
+
return ze !== "key";
|
|
602
|
+
}), Ct = N.length > 0 ? "{key: someKey, " + N.join(": ..., ") + ": ...}" : "{key: someKey}";
|
|
603
|
+
if (!Kt[V + Ct]) {
|
|
604
|
+
var Ve = N.length > 0 ? "{" + N.join(": ..., ") + ": ...}" : "{}";
|
|
605
605
|
E(`A props object containing a "key" prop is being spread into JSX:
|
|
606
606
|
let props = %s;
|
|
607
607
|
<%s {...props} />
|
|
608
608
|
React keys must be passed directly to JSX without using spread:
|
|
609
609
|
let props = %s;
|
|
610
|
-
<%s key={someKey} {...props} />`,
|
|
610
|
+
<%s key={someKey} {...props} />`, Ct, V, Ve, V), Kt[V + Ct] = !0;
|
|
611
611
|
}
|
|
612
612
|
}
|
|
613
|
-
return c === i ?
|
|
613
|
+
return c === i ? _e(P) : Fe(P), P;
|
|
614
614
|
}
|
|
615
615
|
}
|
|
616
|
-
function
|
|
617
|
-
return Qt(c,
|
|
616
|
+
function $e(c, g, x) {
|
|
617
|
+
return Qt(c, g, x, !0);
|
|
618
618
|
}
|
|
619
|
-
function
|
|
620
|
-
return Qt(c,
|
|
619
|
+
function je(c, g, x) {
|
|
620
|
+
return Qt(c, g, x, !1);
|
|
621
621
|
}
|
|
622
|
-
var
|
|
623
|
-
tt.Fragment = i, tt.jsx =
|
|
622
|
+
var We = je, Ue = $e;
|
|
623
|
+
tt.Fragment = i, tt.jsx = We, tt.jsxs = Ue;
|
|
624
624
|
}()), tt;
|
|
625
625
|
}
|
|
626
|
-
process.env.NODE_ENV === "production" ?
|
|
627
|
-
var
|
|
628
|
-
const
|
|
626
|
+
process.env.NODE_ENV === "production" ? Mt.exports = Ge() : Mt.exports = Ke();
|
|
627
|
+
var Qe = Mt.exports;
|
|
628
|
+
const Je = {
|
|
629
629
|
en: {
|
|
630
630
|
dir: "ltr",
|
|
631
631
|
file: "File",
|
|
@@ -1011,10 +1011,10 @@ const Qe = {
|
|
|
1011
1011
|
emcat_flags: "أعلام"
|
|
1012
1012
|
}
|
|
1013
1013
|
};
|
|
1014
|
-
function
|
|
1015
|
-
return
|
|
1014
|
+
function wt(u) {
|
|
1015
|
+
return Je[u];
|
|
1016
1016
|
}
|
|
1017
|
-
const
|
|
1017
|
+
const ti = "undo redo | preview print | importword revhistory | fontfamily fontsize | fontsizeincrease fontsizedecrease | bold italic underline strikethrough | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent | link blockquote code changecase lineheight wordspacing letterspacing | removeformat | blocks | ltr rtl | quickimage quickvideo quicktable codesample template charmap emoji | fullscreen sourcecode", ei = "file edit view insert format tools table help", ii = [
|
|
1018
1018
|
["Andale Mono", "andale mono,times"],
|
|
1019
1019
|
["Arial", "arial,helvetica,sans-serif"],
|
|
1020
1020
|
["Arial Black", "arial black,avant garde"],
|
|
@@ -1034,7 +1034,7 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
1034
1034
|
["Verdana", "verdana,geneva"],
|
|
1035
1035
|
["Webdings", "webdings"],
|
|
1036
1036
|
["Wingdings", "wingdings,zapf dingbats"]
|
|
1037
|
-
],
|
|
1037
|
+
], si = ["8px", "9px", "10px", "11px", "12px", "14px", "16px", "18px", "20px", "24px", "28px", "32px", "36px", "48px", "72px", "96px"], ni = 1, ri = 100, ee = ["1", "1.15", "1.4", "1.5", "1.75", "2", "2.5", "3"], ie = ["1px", "2px", "4px", "6px", "8px", "12px"], se = ["0.5px", "1px", "1.5px", "2px", "3px", "4px"], ne = [
|
|
1038
1038
|
["plain", "Plain text"],
|
|
1039
1039
|
["html", "HTML/XML"],
|
|
1040
1040
|
["css", "CSS"],
|
|
@@ -1051,7 +1051,7 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
1051
1051
|
["rust", "Rust"],
|
|
1052
1052
|
["sql", "SQL"],
|
|
1053
1053
|
["bash", "Bash/Shell"]
|
|
1054
|
-
],
|
|
1054
|
+
], re = [
|
|
1055
1055
|
["p", "para"],
|
|
1056
1056
|
["h1", "heading1"],
|
|
1057
1057
|
["h2", "heading2"],
|
|
@@ -1060,7 +1060,7 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
1060
1060
|
["h5", "heading5"],
|
|
1061
1061
|
["h6", "heading6"],
|
|
1062
1062
|
["pre", "pre"]
|
|
1063
|
-
],
|
|
1063
|
+
], li = ["#F76707", "#4263EB", "#CC5DE8"], oi = [
|
|
1064
1064
|
"#FFFFFF",
|
|
1065
1065
|
"#F4F4F4",
|
|
1066
1066
|
"#E8EAED",
|
|
@@ -1086,7 +1086,7 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
1086
1086
|
"#8E24AA",
|
|
1087
1087
|
"#C2185B",
|
|
1088
1088
|
"#6D4C41"
|
|
1089
|
-
],
|
|
1089
|
+
], ai = [
|
|
1090
1090
|
{
|
|
1091
1091
|
key: "chcat_currency",
|
|
1092
1092
|
chars: [
|
|
@@ -1426,7 +1426,7 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
1426
1426
|
"ة"
|
|
1427
1427
|
]
|
|
1428
1428
|
}
|
|
1429
|
-
],
|
|
1429
|
+
], ci = [
|
|
1430
1430
|
{
|
|
1431
1431
|
key: "emcat_smileys",
|
|
1432
1432
|
chars: [
|
|
@@ -2151,111 +2151,111 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
2151
2151
|
"🇲🇦"
|
|
2152
2152
|
]
|
|
2153
2153
|
}
|
|
2154
|
-
], L = (u, t) => `<svg viewBox="${t || "0 0 24 24"}">${u}</svg>`,
|
|
2154
|
+
], L = (u, t) => `<svg viewBox="${t || "0 0 24 24"}">${u}</svg>`, w = (u) => L(`<path class="f" d="${u}"/>`, "0 -960 960 960"), ot = (u, t = 7.5) => L(
|
|
2155
2155
|
'<path d="M10 6h10M10 12h10M10 18h10"/>' + u.map(
|
|
2156
2156
|
(e, i) => `<text x="2.5" y="${8.4 + i * 6}" font-size="${t}" stroke="none" fill="#222f3e" font-family="Arial">${e}</text>`
|
|
2157
2157
|
).join("")
|
|
2158
2158
|
), h = {
|
|
2159
|
-
bold:
|
|
2159
|
+
bold: w(
|
|
2160
2160
|
"M272-200v-560h221q65 0 120 40t55 111q0 51-23 78.5T602-491q25 11 55.5 41t30.5 90q0 89-65 124.5T501-200H272Zm121-112h104q48 0 58.5-24.5T566-372q0-11-10.5-35.5T494-432H393v120Zm0-228h93q33 0 48-17t15-38q0-24-17-39t-44-15h-95v109Z"
|
|
2161
2161
|
),
|
|
2162
|
-
italic:
|
|
2163
|
-
underline:
|
|
2162
|
+
italic: w("M200-200v-100h160l120-360H320v-100h400v100H580L460-300h140v100H200Z"),
|
|
2163
|
+
underline: w(
|
|
2164
2164
|
"M200-120v-80h560v80H200Zm123-223q-56-63-56-167v-330h103v336q0 56 28 91t82 35q54 0 82-35t28-91v-336h103v330q0 104-56 167t-157 63q-101 0-157-63Z"
|
|
2165
2165
|
),
|
|
2166
|
-
strikethrough:
|
|
2166
|
+
strikethrough: w(
|
|
2167
2167
|
"M486-160q-76 0-135-45t-85-123l88-38q14 48 48.5 79t85.5 31q42 0 76-20t34-64q0-18-7-33t-19-27h112q5 14 7.5 28.5T694-340q0 86-61.5 133T486-160ZM80-480v-80h800v80H80Zm402-326q66 0 115.5 32.5T674-674l-88 39q-9-29-33.5-52T484-710q-41 0-68 18.5T386-640h-96q2-69 54.5-117.5T482-806Z"
|
|
2168
2168
|
),
|
|
2169
|
-
undo:
|
|
2170
|
-
redo:
|
|
2171
|
-
ltr:
|
|
2169
|
+
undo: w("M280-200v-80h284q63 0 109.5-40T720-420q0-60-46.5-100T564-560H312l104 104-56 56-200-200 200-200 56 56-104 104h252q97 0 166.5 63T800-420q0 94-69.5 157T564-200H280Z"),
|
|
2170
|
+
redo: w("M396-200q-97 0-166.5-63T160-420q0-94 69.5-157T396-640h252L544-744l56-56 200 200-200 200-56-56 104-104H396q-63 0-109.5 40T240-420q0 60 46.5 100T396-280h284v80H396Z"),
|
|
2171
|
+
ltr: w(
|
|
2172
2172
|
"M360-360v-200q-66 0-113-47t-47-113q0-66 47-113t113-47h320v80h-80v440h-80v-440h-80v440h-80Zm0-280v-160q-33 0-56.5 23.5T280-720q0 33 23.5 56.5T360-640Zm0-80ZM680-80l-56-56 64-64H120v-80h568l-64-64 56-56 160 160L680-80Z"
|
|
2173
2173
|
),
|
|
2174
|
-
rtl:
|
|
2174
|
+
rtl: w(
|
|
2175
2175
|
"M360-360v-200q-66 0-113-47t-47-113q0-66 47-113t113-47h320v80h-80v440h-80v-440h-80v440h-80Zm-88 160 64 64-56 56-160-160 160-160 56 56-64 64h568v80H272Zm88-440v-160q-33 0-56.5 23.5T280-720q0 33 23.5 56.5T360-640Zm0-80Z"
|
|
2176
2176
|
),
|
|
2177
|
-
alignleft:
|
|
2177
|
+
alignleft: w(
|
|
2178
2178
|
"M120-120v-80h720v80H120Zm0-160v-80h480v80H120Zm0-160v-80h720v80H120Zm0-160v-80h480v80H120Zm0-160v-80h720v80H120Z"
|
|
2179
2179
|
),
|
|
2180
|
-
aligncenter:
|
|
2180
|
+
aligncenter: w(
|
|
2181
2181
|
"M120-120v-80h720v80H120Zm160-160v-80h400v80H280ZM120-440v-80h720v80H120Zm160-160v-80h400v80H280ZM120-760v-80h720v80H120Z"
|
|
2182
2182
|
),
|
|
2183
|
-
alignright:
|
|
2183
|
+
alignright: w(
|
|
2184
2184
|
"M120-760v-80h720v80H120Zm240 160v-80h480v80H360ZM120-440v-80h720v80H120Zm240 160v-80h480v80H360ZM120-120v-80h720v80H120Z"
|
|
2185
2185
|
),
|
|
2186
|
-
alignjustify:
|
|
2186
|
+
alignjustify: w(
|
|
2187
2187
|
"M120-120v-80h720v80H120Zm0-160v-80h720v80H120Zm0-160v-80h720v80H120Zm0-160v-80h720v80H120Zm0-160v-80h720v80H120Z"
|
|
2188
2188
|
),
|
|
2189
|
-
fullscreen:
|
|
2189
|
+
fullscreen: w(
|
|
2190
2190
|
"M120-120v-200h80v120h120v80H120Zm520 0v-80h120v-120h80v200H640ZM120-640v-200h200v80H200v120h-80Zm640 0v-120H640v-80h200v200h-80Z"
|
|
2191
2191
|
),
|
|
2192
|
-
clearformatic:
|
|
2192
|
+
clearformatic: w(
|
|
2193
2193
|
"m528-546-93-93-121-121h486v120H568l-40 94ZM792-56 460-388l-80 188H249l119-280L56-792l56-56 736 736-56 56Z"
|
|
2194
2194
|
),
|
|
2195
|
-
numlist:
|
|
2195
|
+
numlist: w(
|
|
2196
2196
|
"M120-80v-60h100v-30h-60v-60h60v-30H120v-60h120q17 0 28.5 11.5T280-280v40q0 17-11.5 28.5T240-200q17 0 28.5 11.5T280-160v40q0 17-11.5 28.5T240-80H120Zm0-280v-110q0-17 11.5-28.5T160-510h60v-30H120v-60h120q17 0 28.5 11.5T280-560v70q0 17-11.5 28.5T240-450h-60v30h100v60H120Zm60-280v-180h-60v-60h120v240h-60Zm180 440v-80h480v80H360Zm0-240v-80h480v80H360Zm0-240v-80h480v80H360Z"
|
|
2197
2197
|
),
|
|
2198
|
-
bullist:
|
|
2198
|
+
bullist: w(
|
|
2199
2199
|
"M360-200v-80h480v80H360Zm0-240v-80h480v80H360Zm0-240v-80h480v80H360ZM200-160q-33 0-56.5-23.5T120-240q0-33 23.5-56.5T200-320q33 0 56.5 23.5T280-240q0 33-23.5 56.5T200-160Zm0-240q-33 0-56.5-23.5T120-480q0-33 23.5-56.5T200-560q33 0 56.5 23.5T280-480q0 33-23.5 56.5T200-400Zm-56.5-263.5Q120-687 120-720t23.5-56.5Q167-800 200-800t56.5 23.5Q280-753 280-720t-23.5 56.5Q233-640 200-640t-56.5-23.5Z"
|
|
2200
2200
|
),
|
|
2201
2201
|
chev: L('<path d="M2 3.5 6 7.5 10 3.5"/>', "0 0 12 11"),
|
|
2202
|
-
backcolor:
|
|
2202
|
+
backcolor: w(
|
|
2203
2203
|
"M440-80q-33 0-56.5-23.5T360-160v-160H240q-33 0-56.5-23.5T160-400v-280q0-66 47-113t113-47h480v440q0 33-23.5 56.5T720-320H600v160q0 33-23.5 56.5T520-80h-80ZM240-560h480v-200h-40v160h-80v-160h-40v80h-80v-80H320q-33 0-56.5 23.5T240-680v120Zm0 160h480v-80H240v80Zm0 0v-80 80Z"
|
|
2204
2204
|
),
|
|
2205
|
-
outdent:
|
|
2205
|
+
outdent: w(
|
|
2206
2206
|
"M120-120v-80h720v80H120Zm320-160v-80h400v80H440Zm0-160v-80h400v80H440Zm0-160v-80h400v80H440ZM120-760v-80h720v80H120Zm160 440L120-480l160-160v320Z"
|
|
2207
2207
|
),
|
|
2208
|
-
indent:
|
|
2208
|
+
indent: w(
|
|
2209
2209
|
"M120-120v-80h720v80H120Zm320-160v-80h400v80H440Zm0-160v-80h400v80H440Zm0-160v-80h400v80H440ZM120-760v-80h720v80H120Zm0 440v-320l160 160-160 160Z"
|
|
2210
2210
|
),
|
|
2211
2211
|
more: L(
|
|
2212
2212
|
'<circle class="f" cx="5" cy="12" r="1.7"/><circle class="f" cx="12" cy="12" r="1.7"/><circle class="f" cx="19" cy="12" r="1.7"/>'
|
|
2213
2213
|
),
|
|
2214
|
-
image:
|
|
2214
|
+
image: w(
|
|
2215
2215
|
"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z"
|
|
2216
2216
|
),
|
|
2217
|
-
uploadic:
|
|
2217
|
+
uploadic: w(
|
|
2218
2218
|
"M440-200v-326L336-422l-56-58 200-200 200 200-56 58-104-104v326h-80ZM240-80q-33 0-56.5-23.5T160-160v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-80H240Z"
|
|
2219
2219
|
),
|
|
2220
|
-
tableic:
|
|
2220
|
+
tableic: w(
|
|
2221
2221
|
"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm240-240H200v160h240v-160Zm80 0v160h240v-160H520Zm-80-80v-160H200v160h240Zm80 0h240v-160H520v160ZM200-680h560v-80H200v80Z"
|
|
2222
2222
|
),
|
|
2223
2223
|
hric: L('<path d="M4 12h16"/>'),
|
|
2224
|
-
charic:
|
|
2224
|
+
charic: w(
|
|
2225
2225
|
"M120-120v-120h200q-84-45-132-125t-48-175q0-142 99-241t241-99q142 0 241 99t99 241q0 95-48 175T640-240h200v120H520v-204q78-14 129-75t51-141q0-92-64-156t-156-64q-92 0-156 64t-64 156q0 80 51 141t129 75v204H120Z"
|
|
2226
2226
|
),
|
|
2227
2227
|
dateic: L(
|
|
2228
2228
|
'<rect x="4" y="6" width="16" height="14" rx="1.5"/><path d="M4 10h16M8 4v4M16 4v4"/>'
|
|
2229
2229
|
),
|
|
2230
|
-
pbic:
|
|
2230
|
+
pbic: w(
|
|
2231
2231
|
"M240-80q-33 0-56.5-23.5T160-160v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-80H240Zm-80-440v-280q0-33 23.5-56.5T240-880h320l240 240v120h-80v-80H520v-200H240v280h-80Zm200 160v-80h240v80H360Zm320 0v-80h240v80H680Zm-640 0v-80h240v80H40Zm440-160Zm0 240Z"
|
|
2232
2232
|
),
|
|
2233
2233
|
nbspic: L('<path d="M6 12v4h12v-4"/>'),
|
|
2234
|
-
srcic:
|
|
2234
|
+
srcic: w(
|
|
2235
2235
|
"M240-280 40-480l200-200 56 56-143 144 143 144-56 56Zm178 132-76-24 200-640 76 24-200 640Zm302-132-56-56 143-144-143-144 56-56 200 200-200 200Z"
|
|
2236
2236
|
),
|
|
2237
|
-
prevw:
|
|
2237
|
+
prevw: w(
|
|
2238
2238
|
"M607.5-372.5Q660-425 660-500t-52.5-127.5Q555-680 480-680t-127.5 52.5Q300-575 300-500t52.5 127.5Q405-320 480-320t127.5-52.5Zm-204-51Q372-455 372-500t31.5-76.5Q435-608 480-608t76.5 31.5Q588-545 588-500t-31.5 76.5Q525-392 480-392t-76.5-31.5ZM214-281.5Q94-363 40-500q54-137 174-218.5T480-800q146 0 266 81.5T920-500q-54 137-174 218.5T480-200q-146 0-266-81.5ZM480-500Zm207.5 160.5Q782-399 832-500q-50-101-144.5-160.5T480-720q-113 0-207.5 59.5T128-500q50 101 144.5 160.5T480-280q113 0 207.5-59.5Z"
|
|
2239
2239
|
),
|
|
2240
|
-
printic:
|
|
2240
|
+
printic: w(
|
|
2241
2241
|
"M640-640v-120H320v120h-80v-200h480v200h-80Zm-480 80h640-640Zm560 100q17 0 28.5-11.5T760-500q0-17-11.5-28.5T720-540q-17 0-28.5 11.5T680-500q0 17 11.5 28.5T720-460Zm-80 260v-160H320v160h320Zm80 80H240v-160H80v-240q0-51 35-85.5t85-34.5h560q51 0 85.5 34.5T880-520v240H720v160Zm80-240v-160q0-17-11.5-28.5T760-560H200q-17 0-28.5 11.5T160-520v160h80v-80h480v80h80Z"
|
|
2242
2242
|
),
|
|
2243
|
-
cutic:
|
|
2243
|
+
cutic: w(
|
|
2244
2244
|
"M760-120 480-400l-94 94q8 15 11 32t3 34q0 66-47 113T240-80q-66 0-113-47T80-240q0-66 47-113t113-47q17 0 34 3t32 11l94-94-94-94q-15 8-32 11t-34 3q-66 0-113-47T80-720q0-66 47-113t113-47q66 0 113 47t47 113q0 17-3 34t-11 32l494 494v40H760ZM600-520l-80-80 240-240h120v40L600-520ZM296.5-663.5Q320-687 320-720t-23.5-56.5Q273-800 240-800t-56.5 23.5Q160-753 160-720t23.5 56.5Q207-640 240-640t56.5-23.5ZM494-466q6-6 6-14t-6-14q-6-6-14-6t-14 6q-6 6-6 14t6 14q6 6 14 6t14-6ZM296.5-183.5Q320-207 320-240t-23.5-56.5Q273-320 240-320t-56.5 23.5Q160-273 160-240t23.5 56.5Q207-160 240-160t56.5-23.5Z"
|
|
2245
2245
|
),
|
|
2246
|
-
copyic:
|
|
2246
|
+
copyic: w(
|
|
2247
2247
|
"M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z"
|
|
2248
2248
|
),
|
|
2249
|
-
pasteic:
|
|
2249
|
+
pasteic: w(
|
|
2250
2250
|
"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h167q11-35 43-57.5t70-22.5q40 0 71.5 22.5T594-840h166q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560h-80v120H280v-120h-80v560Zm308.5-571.5Q520-783 520-800t-11.5-28.5Q497-840 480-840t-28.5 11.5Q440-817 440-800t11.5 28.5Q463-760 480-760t28.5-11.5Z"
|
|
2251
2251
|
),
|
|
2252
|
-
selall:
|
|
2252
|
+
selall: w(
|
|
2253
2253
|
"M280-280v-400h400v400H280Zm80-80h240v-240H360v240ZM200-200v80q-33 0-56.5-23.5T120-200h80Zm-80-80v-80h80v80h-80Zm0-160v-80h80v80h-80Zm0-160v-80h80v80h-80Zm80-160h-80q0-33 23.5-56.5T200-840v80Zm80 640v-80h80v80h-80Zm0-640v-80h80v80h-80Zm160 640v-80h80v80h-80Zm0-640v-80h80v80h-80Zm160 640v-80h80v80h-80Zm0-640v-80h80v80h-80Zm160 640v-80h80q0 33-23.5 56.5T760-120Zm0-160v-80h80v80h-80Zm0-160v-80h80v80h-80Zm0-160v-80h80v80h-80Zm0-160v-80q33 0 56.5 23.5T840-760h-80Z"
|
|
2254
2254
|
),
|
|
2255
|
-
superscriptic:
|
|
2255
|
+
superscriptic: w(
|
|
2256
2256
|
"M760-600v-80q0-17 11.5-28.5T800-720h80v-40H760v-40h120q17 0 28.5 11.5T920-760v40q0 17-11.5 28.5T880-680h-80v40h120v40H760ZM235-160l185-291-172-269h106l124 200h4l123-200h107L539-451l186 291H618L482-377h-4L342-160H235Z"
|
|
2257
2257
|
),
|
|
2258
|
-
subscriptic:
|
|
2258
|
+
subscriptic: w(
|
|
2259
2259
|
"M760-160v-80q0-17 11.5-28.5T800-280h80v-40H760v-40h120q17 0 28.5 11.5T920-320v40q0 17-11.5 28.5T880-240h-80v40h120v40H760Zm-525-80 185-291-172-269h106l124 200h4l123-200h107L539-531l186 291H618L482-457h-4L342-240H235Z"
|
|
2260
2260
|
),
|
|
2261
2261
|
newic: L('<path d="M6 3h8l5 5v13H6z"/><path d="M14 3v5h5"/>'),
|
|
@@ -2263,61 +2263,61 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
2263
2263
|
'<circle cx="12" cy="12" r="8.5"/><path d="M9.6 9.6a2.5 2.5 0 1 1 3.4 2.6c-.8.3-1 .9-1 1.8"/><circle class="f" cx="12" cy="16.6" r="1.1"/>'
|
|
2264
2264
|
),
|
|
2265
2265
|
wcic: L('<path d="M4 6h16M4 10h16M4 14h9"/><path d="M15 17.5l2 2 3.6-4"/>'),
|
|
2266
|
-
rowbefore:
|
|
2266
|
+
rowbefore: w(
|
|
2267
2267
|
"M200-160h560v-240H200v240Zm640 80H120v-720h160v80h-80v240h560v-240h-80v-80h160v720ZM480-480Zm0 80v-80 80Zm0 0Zm-40-240v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Z"
|
|
2268
2268
|
),
|
|
2269
|
-
rowafter:
|
|
2269
|
+
rowafter: w(
|
|
2270
2270
|
"M200-560h560v-240H200v240Zm-80 400v-720h720v720H680v-80h80v-240H200v240h80v80H120Zm360-320Zm0-80v80-80Zm0 0ZM440-80v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Z"
|
|
2271
2271
|
),
|
|
2272
|
-
rowdelete:
|
|
2272
|
+
rowdelete: w(
|
|
2273
2273
|
"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200ZM200-200h560v-560H200ZM200-400v-160h560v160H200ZM330-580l250 250 50-50-250-250ZM330-380l250-250 50 50-250 250Z"
|
|
2274
2274
|
),
|
|
2275
|
-
colbefore:
|
|
2275
|
+
colbefore: w(
|
|
2276
2276
|
"M800-200v-560H560v560h240Zm-640 80v-160h80v80h240v-560H240v80h-80v-160h720v720H160Zm320-360Zm80 0h-80 80Zm0 0ZM160-360v-80H80v-80h80v-80h80v80h80v80h-80v80h-80Z"
|
|
2277
2277
|
),
|
|
2278
|
-
colafter:
|
|
2278
|
+
colafter: w(
|
|
2279
2279
|
"M160-760v560h240v-560H160ZM80-120v-720h720v160h-80v-80H480v560h240v-80h80v160H80Zm400-360Zm-80 0h80-80Zm0 0Zm320 120v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Z"
|
|
2280
2280
|
),
|
|
2281
|
-
coldelete:
|
|
2281
|
+
coldelete: w(
|
|
2282
2282
|
"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200ZM200-200h560v-560H200ZM400-200v-560h160v560H400ZM330-580l250 250 50-50-250-250ZM330-380l250-250 50 50-250 250Z"
|
|
2283
2283
|
),
|
|
2284
|
-
quote:
|
|
2284
|
+
quote: w(
|
|
2285
2285
|
"m228-240 92-160q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 23-5.5 42.5T458-480L320-240h-92Zm360 0 92-160q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 23-5.5 42.5T818-480L680-240h-92ZM362.5-517.5Q380-535 380-560t-17.5-42.5Q345-620 320-620t-42.5 17.5Q260-585 260-560t17.5 42.5Q295-500 320-500t42.5-17.5Zm360 0Q740-535 740-560t-17.5-42.5Q705-620 680-620t-42.5 17.5Q620-585 620-560t17.5 42.5Q655-500 680-500t42.5-17.5ZM680-560Zm-360 0Z"
|
|
2286
2286
|
),
|
|
2287
|
-
link:
|
|
2287
|
+
link: w(
|
|
2288
2288
|
"M440-280H280q-83 0-141.5-58.5T80-480q0-83 58.5-141.5T280-680h160v80H280q-50 0-85 35t-35 85q0 50 35 85t85 35h160v80ZM320-440v-80h320v80H320Zm200 160v-80h160q50 0 85-35t35-85q0-50-35-85t-85-35H520v-80h160q83 0 141.5 58.5T880-480q0 83-58.5 141.5T680-280H520Z"
|
|
2289
2289
|
),
|
|
2290
|
-
lineheight:
|
|
2290
|
+
lineheight: w(
|
|
2291
2291
|
"M240-160 80-320l56-56 64 62v-332l-64 62-56-56 160-160 160 160-56 56-64-62v332l64-62 56 56-160 160Zm240-40v-80h400v80H480Zm0-240v-80h400v80H480Zm0-240v-80h400v80H480Z"
|
|
2292
2292
|
),
|
|
2293
|
-
wordspacing:
|
|
2293
|
+
wordspacing: w(
|
|
2294
2294
|
"M320-80 160-240l160-160 57 56-64 64h334l-63-64 56-56 160 160L640-80l-57-56 64-64H313l63 64-56 56ZM200-480v-400h80v400h-80Zm240 0v-400h80v400h-80Zm240 0v-400h80v400h-80Z"
|
|
2295
2295
|
),
|
|
2296
|
-
caseic:
|
|
2296
|
+
caseic: w(
|
|
2297
2297
|
"m131-252 165-440h79l165 440h-76l-39-112H247l-40 112h-76Zm139-176h131l-64-182h-4l-63 182Zm395 186q-51 0-81-27.5T554-342q0-44 34.5-72.5T677-443q23 0 45 4t38 11v-12q0-29-20.5-47T685-505q-23 0-42 9.5T610-468l-47-35q24-29 54.5-43t68.5-14q69 0 103 32.5t34 97.5v178h-63v-37h-4q-14 23-38 35t-53 12Zm12-54q35 0 59.5-24t24.5-56q-14-8-33.5-12.5T689-393q-32 0-50 14t-18 37q0 20 16 33t40 13Z"
|
|
2298
2298
|
),
|
|
2299
|
-
uppercaseic:
|
|
2299
|
+
uppercaseic: w(
|
|
2300
2300
|
"M660-240v-248l-64 64-56-56 160-160 160 160-56 56-64-64v248h-80Zm-540 0 165-440h79l165 440h-76l-39-113H236l-40 113h-76Zm139-177h131l-65-182h-4l-62 182Z"
|
|
2301
2301
|
),
|
|
2302
|
-
lowercaseic:
|
|
2302
|
+
lowercaseic: w(
|
|
2303
2303
|
"M300-240q-51 0-81-27.5T189-340q0-44 34.5-72.5T312-441q23 0 45 4t38 11v-12q0-29-20.5-47T320-503q-23 0-42 9.5T245-466l-47-35q24-29 54.5-43t68.5-14q69 0 103 32.5t34 97.5v178h-63v-37h-4q-14 23-38 35t-53 12Zm12-54q35 0 59.5-24t24.5-56q-14-8-33.5-12.5T324-391q-32 0-50 14t-18 37q0 20 16 33t40 13Zm388 54L540-400l56-56 64 64v-248h80v248l64-64 56 56-160 160Z"
|
|
2304
2304
|
),
|
|
2305
|
-
capitalizeic:
|
|
2305
|
+
capitalizeic: w(
|
|
2306
2306
|
"M344-250v-366H224v-64h308v64H412v366h-68Zm344 10q-44 0-69-25.5T594-336v-162h-54v-58h54v-87h66v87h74v58h-74v148q0 23 10.5 36t28.5 13q9 0 18.5-3.5T736-314v65q-10 5-22 7t-26 2Z"
|
|
2307
2307
|
),
|
|
2308
|
-
fontsizeup:
|
|
2308
|
+
fontsizeup: w(
|
|
2309
2309
|
"m40-200 210-560h100l210 560h-96l-51-143H187l-51 143H40Zm176-224h168l-82-232h-4l-82 232Zm504 104v-120H600v-80h120v-120h80v120h120v80H800v120h-80Z"
|
|
2310
2310
|
),
|
|
2311
|
-
fontsizedown:
|
|
2311
|
+
fontsizedown: w(
|
|
2312
2312
|
"m40-200 210-560h100l210 560h-96l-51-143H187l-51 143H40Zm176-224h168l-82-232h-4l-82 232Zm384-16v-80h320v80H600Z"
|
|
2313
2313
|
),
|
|
2314
|
-
historyic:
|
|
2314
|
+
historyic: w(
|
|
2315
2315
|
"M480-120q-138 0-240.5-91.5T122-440h82q14 104 92.5 172T480-200q117 0 198.5-81.5T760-480q0-117-81.5-198.5T480-760q-69 0-129 32t-101 88h110v80H120v-240h80v94q51-64 124.5-99T480-840q75 0 140.5 28.5t114 77q48.5 48.5 77 114T840-480q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480-120Zm112-192L440-464v-216h80v184l128 128-56 56Z"
|
|
2316
2316
|
),
|
|
2317
2317
|
wordic: L(
|
|
2318
2318
|
'<path d="M6 3h8l5 5v13H6z"/><path d="M14 3v5h5"/><text x="8" y="17" font-size="8.5" stroke="none" fill="#222f3e" font-family="Arial" font-weight="bold">W</text>'
|
|
2319
2319
|
),
|
|
2320
|
-
draftic:
|
|
2320
|
+
draftic: w(
|
|
2321
2321
|
"M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z"
|
|
2322
2322
|
),
|
|
2323
2323
|
trash: L(
|
|
@@ -2354,10 +2354,10 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
2354
2354
|
palette: L(
|
|
2355
2355
|
'<path d="M12 3a9 9 0 1 0 0 18h1.2a2 2 0 0 0 2-2 2 2 0 0 1 2-2H18a3 3 0 0 0 3-3c0-6.1-4.5-11-9-11z"/><circle class="f" cx="7.8" cy="10.2" r="1.3"/><circle class="f" cx="11.6" cy="7.3" r="1.3"/><circle class="f" cx="15.8" cy="9.6" r="1.3"/><circle class="f" cx="9" cy="14.8" r="1.3"/>'
|
|
2356
2356
|
),
|
|
2357
|
-
ul_circle:
|
|
2357
|
+
ul_circle: w(
|
|
2358
2358
|
"M280-600v-80h560v80H280Zm0 160v-80h560v80H280Zm0 160v-80h560v80H280ZM160-600q-17 0-28.5-11.5T120-640q0-17 11.5-28.5T160-680q17 0 28.5 11.5T200-640q0 17-11.5 28.5T160-600Zm0 160q-17 0-28.5-11.5T120-480q0-17 11.5-28.5T160-520q17 0 28.5 11.5T200-480q0 17-11.5 28.5T160-440Zm0 160q-17 0-28.5-11.5T120-320q0-17 11.5-28.5T160-360q17 0 28.5 11.5T200-320q0 17-11.5 28.5T160-280Z"
|
|
2359
2359
|
),
|
|
2360
|
-
ul_square:
|
|
2360
|
+
ul_square: w(
|
|
2361
2361
|
"M80-160v-160h160v160H80Zm240 0v-160h560v160H320ZM80-400v-160h160v160H80Zm240 0v-160h560v160H320ZM80-640v-160h160v160H80Zm240 0v-160h560v160H320Z"
|
|
2362
2362
|
),
|
|
2363
2363
|
ol_alpha: ot(["a", "b", "c"]),
|
|
@@ -2380,7 +2380,7 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
2380
2380
|
codesampleic: L(
|
|
2381
2381
|
'<rect x="3.5" y="4" width="17" height="16" rx="2"/><path d="M3.5 8.5h17"/><path d="M9.5 12 7 14.25l2.5 2.25M14.5 12l2.5 2.25-2.5 2.25"/>'
|
|
2382
2382
|
)
|
|
2383
|
-
},
|
|
2383
|
+
}, hi = /* @__PURE__ */ new Set([
|
|
2384
2384
|
"p",
|
|
2385
2385
|
"div",
|
|
2386
2386
|
"span",
|
|
@@ -2422,7 +2422,7 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
2422
2422
|
"figure",
|
|
2423
2423
|
"figcaption",
|
|
2424
2424
|
"mark"
|
|
2425
|
-
]),
|
|
2425
|
+
]), di = /* @__PURE__ */ new Set([
|
|
2426
2426
|
"text-align",
|
|
2427
2427
|
"direction",
|
|
2428
2428
|
"unicode-bidi",
|
|
@@ -2478,7 +2478,7 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
2478
2478
|
"box-sizing",
|
|
2479
2479
|
"list-style-type",
|
|
2480
2480
|
"white-space"
|
|
2481
|
-
]),
|
|
2481
|
+
]), le = {
|
|
2482
2482
|
"*": ["dir", "lang", "colspan", "rowspan"],
|
|
2483
2483
|
a: ["href", "target", "rel", "title"],
|
|
2484
2484
|
img: ["src", "alt", "width", "height", "title"],
|
|
@@ -2487,20 +2487,20 @@ const Ke = "undo redo | preview print | importword revhistory | fontfamily fonts
|
|
|
2487
2487
|
th: ["width", "valign"],
|
|
2488
2488
|
table: ["width", "cellpadding", "cellspacing"]
|
|
2489
2489
|
};
|
|
2490
|
-
function
|
|
2490
|
+
function pt(u) {
|
|
2491
2491
|
const t = {}, e = u.getAttribute && u.getAttribute("style");
|
|
2492
2492
|
return e && e.split(";").forEach((i) => {
|
|
2493
2493
|
const s = i.indexOf(":");
|
|
2494
2494
|
s < 1 || (t[i.slice(0, s).trim().toLowerCase()] = i.slice(s + 1).trim());
|
|
2495
2495
|
}), t;
|
|
2496
2496
|
}
|
|
2497
|
-
function
|
|
2497
|
+
function ui(u) {
|
|
2498
2498
|
return u.replace(/<!--\[if !supportLists\]-->([\s\S]*?)<!--\[endif\]-->/gi, "$1").replace(/<!--\[if !supportLists\]>([\s\S]*?)<!\[endif\]-->/gi, "$1").replace(/<!\[if !supportLists\]>([\s\S]*?)<!\[endif\]>/gi, "$1").replace(/<!--\[if [\s\S]*?<!\[endif\]-->/gi, "").replace(/<!--[\s\S]*?-->/g, "").replace(/<(script|style|xml|title)[\s\S]*?<\/\1>/gi, "").replace(/<\/?(meta|link)[^>]*>/gi, "").replace(/<\?xml[\s\S]*?\?>/gi, "").replace(/<\/?(o|v|w|m|st1):[^>]*>/gi, "");
|
|
2499
2499
|
}
|
|
2500
|
-
function
|
|
2500
|
+
function pi(u) {
|
|
2501
2501
|
return /^[0-9]+[\.\)،]/.test(u) ? { ordered: !0 } : /^[٠-٩۰-۹]+/.test(u) ? { ordered: !0, style: "arabic-indic" } : /^[ivxlc]{2,}[\.\)]/.test(u) ? { ordered: !0, style: "lower-roman" } : /^[IVXLC]{2,}[\.\)]/.test(u) ? { ordered: !0, style: "upper-roman" } : /^[a-z][\.\)]/.test(u) ? { ordered: !0, style: "lower-alpha" } : /^[A-Z][\.\)]/.test(u) ? { ordered: !0, style: "upper-alpha" } : /^[ء-ي][\.\)،-]/.test(u) ? { ordered: !0, style: "arabic-indic" } : { ordered: !1 };
|
|
2502
2502
|
}
|
|
2503
|
-
function
|
|
2503
|
+
function mi(u) {
|
|
2504
2504
|
const t = (s) => {
|
|
2505
2505
|
const n = (s.getAttribute("style") || "") + " " + (s.className || "");
|
|
2506
2506
|
return /mso-list\s*:(?!\s*ignore)/i.test(n) || /MsoListParagraph/i.test(n);
|
|
@@ -2514,38 +2514,38 @@ function ui(u) {
|
|
|
2514
2514
|
const n = s.previousElementSibling;
|
|
2515
2515
|
i && n && i[i.length - 1] === n ? i.push(s) : (i = [s], e.push(i));
|
|
2516
2516
|
}), e.forEach((s) => {
|
|
2517
|
-
const n = [],
|
|
2518
|
-
s.forEach((
|
|
2519
|
-
var
|
|
2520
|
-
const a = +(((
|
|
2517
|
+
const n = [], l = s[0];
|
|
2518
|
+
s.forEach((r) => {
|
|
2519
|
+
var C, E, I;
|
|
2520
|
+
const a = +(((C = (r.getAttribute("style") || "").match(/level(\d+)/i)) == null ? void 0 : C[1]) || 1), d = Array.from(r.querySelectorAll("span")).find(
|
|
2521
2521
|
(A) => /mso-list\s*:\s*ignore/i.test(A.getAttribute("style") || "")
|
|
2522
|
-
), p = d ? ((E = d.textContent) == null ? void 0 : E.trim()) || "" : (((I =
|
|
2522
|
+
), p = d ? ((E = d.textContent) == null ? void 0 : E.trim()) || "" : (((I = r.textContent) == null ? void 0 : I.trim().match(/^\S{1,4}/)) || [""])[0], { ordered: m, style: v } = pi(p);
|
|
2523
2523
|
for (d && d.remove(); n.length && n[n.length - 1].level > a; ) n.pop();
|
|
2524
2524
|
if (!n.length || n[n.length - 1].level < a) {
|
|
2525
2525
|
const A = u.createElement(m ? "ol" : "ul");
|
|
2526
|
-
if (m &&
|
|
2526
|
+
if (m && v && (A.style.listStyleType = v), n.length) {
|
|
2527
2527
|
const $ = n[n.length - 1].list;
|
|
2528
2528
|
($.lastElementChild || $).appendChild(A);
|
|
2529
2529
|
} else
|
|
2530
|
-
|
|
2530
|
+
l.parentNode.insertBefore(A, l);
|
|
2531
2531
|
n.push({ list: A, level: a });
|
|
2532
2532
|
}
|
|
2533
|
-
const
|
|
2534
|
-
for (
|
|
2535
|
-
n[n.length - 1].list.appendChild(
|
|
2533
|
+
const b = u.createElement("li"), f = pt(r), y = ["text-align", "direction", "unicode-bidi", "color", "font-size", "font-family", "background-color"].filter((A) => f[A]).map((A) => A + ":" + f[A]).join(";");
|
|
2534
|
+
for (y && b.setAttribute("style", y), r.getAttribute("dir") && b.setAttribute("dir", r.getAttribute("dir")); r.firstChild; ) b.appendChild(r.firstChild);
|
|
2535
|
+
n[n.length - 1].list.appendChild(b), r.remove();
|
|
2536
2536
|
});
|
|
2537
2537
|
});
|
|
2538
2538
|
}
|
|
2539
|
-
function
|
|
2539
|
+
function fi(u) {
|
|
2540
2540
|
u.querySelectorAll('b[id^="docs-internal-guid"]').forEach((t) => {
|
|
2541
2541
|
for (; t.firstChild; ) t.parentNode.insertBefore(t.firstChild, t);
|
|
2542
2542
|
t.remove();
|
|
2543
2543
|
});
|
|
2544
2544
|
}
|
|
2545
|
-
function
|
|
2545
|
+
function gi(u) {
|
|
2546
2546
|
u.querySelectorAll("table").forEach((t) => {
|
|
2547
2547
|
const e = t;
|
|
2548
|
-
|
|
2548
|
+
pt(e)["border-collapse"] || (e.style.borderCollapse = "collapse");
|
|
2549
2549
|
}), u.querySelectorAll("[align]").forEach((t) => {
|
|
2550
2550
|
const e = t, i = e.getAttribute("align").toLowerCase();
|
|
2551
2551
|
e.tagName.toLowerCase() === "table" ? i === "center" ? (e.style.marginLeft = e.style.marginLeft || "auto", e.style.marginRight = e.style.marginRight || "auto") : i === "right" ? e.style.marginLeft = e.style.marginLeft || "auto" : i === "left" && (e.style.marginRight = e.style.marginRight || "auto") : ["left", "right", "center", "justify"].includes(i) && (e.style.textAlign = e.style.textAlign || i, Array.from(e.children).forEach((s) => {
|
|
@@ -2561,7 +2561,7 @@ function mi(u) {
|
|
|
2561
2561
|
e.style.backgroundColor = e.style.backgroundColor || e.getAttribute("bgcolor"), e.removeAttribute("bgcolor");
|
|
2562
2562
|
});
|
|
2563
2563
|
}
|
|
2564
|
-
function
|
|
2564
|
+
function dt(u, t) {
|
|
2565
2565
|
Array.from(u.childNodes).forEach((e) => {
|
|
2566
2566
|
if (e.nodeType === Node.COMMENT_NODE) {
|
|
2567
2567
|
e.remove();
|
|
@@ -2569,7 +2569,7 @@ function ht(u, t) {
|
|
|
2569
2569
|
}
|
|
2570
2570
|
if (e.nodeType !== Node.ELEMENT_NODE) return;
|
|
2571
2571
|
const i = e, s = i.tagName.toLowerCase();
|
|
2572
|
-
if (!
|
|
2572
|
+
if (!hi.has(s)) {
|
|
2573
2573
|
if (s === "font") {
|
|
2574
2574
|
const o = t.createElement("span");
|
|
2575
2575
|
i.getAttribute("style") && o.setAttribute("style", i.getAttribute("style")), i.getAttribute("color") && (o.style.color = i.getAttribute("color")), i.getAttribute("face") && (o.style.fontFamily = i.getAttribute("face"));
|
|
@@ -2587,14 +2587,14 @@ function ht(u, t) {
|
|
|
2587
2587
|
d[a] && (o.style.fontSize = d[a]);
|
|
2588
2588
|
}
|
|
2589
2589
|
for (; i.firstChild; ) o.appendChild(i.firstChild);
|
|
2590
|
-
i.replaceWith(o),
|
|
2590
|
+
i.replaceWith(o), dt(o, t);
|
|
2591
2591
|
return;
|
|
2592
2592
|
}
|
|
2593
|
-
for (
|
|
2593
|
+
for (dt(i, t); i.firstChild; ) i.parentNode.insertBefore(i.firstChild, i);
|
|
2594
2594
|
i.remove();
|
|
2595
2595
|
return;
|
|
2596
2596
|
}
|
|
2597
|
-
const n = /* @__PURE__ */ new Set([...
|
|
2597
|
+
const n = /* @__PURE__ */ new Set([...le["*"] || [], ...le[s] || []]);
|
|
2598
2598
|
if (Array.from(i.attributes).forEach((o) => {
|
|
2599
2599
|
const a = o.name.toLowerCase();
|
|
2600
2600
|
a !== "style" && !n.has(a) && i.removeAttribute(o.name);
|
|
@@ -2610,34 +2610,34 @@ function ht(u, t) {
|
|
|
2610
2610
|
return;
|
|
2611
2611
|
}
|
|
2612
2612
|
}
|
|
2613
|
-
const
|
|
2614
|
-
for (const [o, a] of Object.entries(
|
|
2615
|
-
|
|
2616
|
-
if (
|
|
2613
|
+
const l = pt(i), r = [];
|
|
2614
|
+
for (const [o, a] of Object.entries(l))
|
|
2615
|
+
di.has(o) && (/expression|javascript|url\s*\(\s*['"]?\s*file:/i.test(a) || o === "font-weight" && /^(400|normal)$/i.test(a) || o === "font-style" && /^normal$/i.test(a) || o === "text-decoration" && /^none$/i.test(a) || r.push(o + ":" + a));
|
|
2616
|
+
if (r.length ? i.setAttribute("style", r.join(";")) : i.removeAttribute("style"), i.removeAttribute("class"), dt(i, t), s === "span" && !i.attributes.length) {
|
|
2617
2617
|
for (; i.firstChild; ) i.parentNode.insertBefore(i.firstChild, i);
|
|
2618
2618
|
i.remove();
|
|
2619
2619
|
}
|
|
2620
2620
|
});
|
|
2621
2621
|
}
|
|
2622
|
-
function
|
|
2622
|
+
function vi(u) {
|
|
2623
2623
|
const t = [], e = /<style[^>]*>([\s\S]*?)<\/style>/gi;
|
|
2624
2624
|
let i;
|
|
2625
2625
|
for (; i = e.exec(u); ) {
|
|
2626
2626
|
let s = i[1].replace(/<!--|-->/g, "").replace(/\/\*[\s\S]*?\*\//g, "");
|
|
2627
2627
|
s = s.replace(/@media[^{]*\{(?:[^{}]*\{[^{}]*\})*[^{}]*\}/gi, ""), s = s.replace(/@[\w-]+[^{]*\{[^{}]*\}/g, "");
|
|
2628
2628
|
let n;
|
|
2629
|
-
const
|
|
2630
|
-
for (; n =
|
|
2631
|
-
const
|
|
2629
|
+
const l = /([^{}]+)\{([^}]*)\}/g;
|
|
2630
|
+
for (; n = l.exec(s); ) {
|
|
2631
|
+
const r = n[2].split(";").map((o) => {
|
|
2632
2632
|
const a = o.indexOf(":");
|
|
2633
2633
|
return a < 1 ? null : [o.slice(0, a).trim().toLowerCase(), o.slice(a + 1).trim()];
|
|
2634
2634
|
}).filter((o) => !!o && !!o[1]);
|
|
2635
|
-
|
|
2635
|
+
r.length && n[1].split(",").map((o) => o.trim()).filter((o) => o && !o.startsWith("@")).forEach((o) => t.push({ sel: o, decls: r }));
|
|
2636
2636
|
}
|
|
2637
2637
|
}
|
|
2638
2638
|
return t;
|
|
2639
2639
|
}
|
|
2640
|
-
function
|
|
2640
|
+
function bi(u, t) {
|
|
2641
2641
|
if (!t.length) return;
|
|
2642
2642
|
const e = /* @__PURE__ */ new Map();
|
|
2643
2643
|
t.forEach(({ sel: i, decls: s }) => {
|
|
@@ -2647,45 +2647,45 @@ function gi(u, t) {
|
|
|
2647
2647
|
} catch {
|
|
2648
2648
|
return;
|
|
2649
2649
|
}
|
|
2650
|
-
n.forEach((
|
|
2651
|
-
let
|
|
2652
|
-
|
|
2653
|
-
|
|
2650
|
+
n.forEach((l) => {
|
|
2651
|
+
let r = e.get(l);
|
|
2652
|
+
r || (r = {}, e.set(l, r)), s.forEach(([o, a]) => {
|
|
2653
|
+
r[o] = a;
|
|
2654
2654
|
});
|
|
2655
2655
|
});
|
|
2656
2656
|
}), e.forEach((i, s) => {
|
|
2657
|
-
const n =
|
|
2657
|
+
const n = pt(s), l = s.hasAttribute("dir"), r = s.hasAttribute("align"), o = Object.entries(i).filter(([p]) => !(p in n || (p === "direction" || p === "unicode-bidi") && l || p === "text-align" && (r || l) || (p === "background" || p === "background-color") && s.hasAttribute("bgcolor")));
|
|
2658
2658
|
if (!o.length) return;
|
|
2659
2659
|
const a = o.map(([p, m]) => p + ":" + m).join(";"), d = s.getAttribute("style");
|
|
2660
2660
|
s.setAttribute("style", d ? a + ";" + d : a);
|
|
2661
2661
|
});
|
|
2662
2662
|
}
|
|
2663
|
-
function
|
|
2663
|
+
function me(u) {
|
|
2664
2664
|
return u.replace(/[ﭐ-﷿ﹰ-ﻼ]+/g, (t) => t.normalize("NFKC"));
|
|
2665
2665
|
}
|
|
2666
|
-
function
|
|
2666
|
+
function yi(u) {
|
|
2667
2667
|
const t = u.createTreeWalker(u.body, NodeFilter.SHOW_TEXT, null);
|
|
2668
2668
|
let e;
|
|
2669
2669
|
for (; e = t.nextNode(); )
|
|
2670
|
-
/[ﭐ-﷿ﹰ-ﻼ]/.test(e.nodeValue || "") && (e.nodeValue =
|
|
2670
|
+
/[ﭐ-﷿ﹰ-ﻼ]/.test(e.nodeValue || "") && (e.nodeValue = me(e.nodeValue || ""));
|
|
2671
2671
|
}
|
|
2672
|
-
function
|
|
2673
|
-
const e =
|
|
2674
|
-
|
|
2672
|
+
function xi(u, t = "ltr") {
|
|
2673
|
+
const e = vi(u), i = new DOMParser().parseFromString(ui(u), "text/html");
|
|
2674
|
+
bi(i, e), /class="?Mso|mso-|urn:schemas-microsoft-com/i.test(i.body.innerHTML) && mi(i), fi(i), gi(i), dt(i.body, i), yi(i);
|
|
2675
2675
|
const s = (n) => {
|
|
2676
|
-
var
|
|
2677
|
-
return n && n.tagName === "P" && !((
|
|
2676
|
+
var l;
|
|
2677
|
+
return n && n.tagName === "P" && !((l = n.textContent) != null && l.trim()) && !n.querySelector("img,table");
|
|
2678
2678
|
};
|
|
2679
2679
|
for (; s(i.body.firstElementChild); ) i.body.firstElementChild.remove();
|
|
2680
2680
|
for (; s(i.body.lastElementChild); ) i.body.lastElementChild.remove();
|
|
2681
2681
|
return i.body.innerHTML.trim();
|
|
2682
2682
|
}
|
|
2683
|
-
function
|
|
2684
|
-
const t =
|
|
2683
|
+
function Ci(u) {
|
|
2684
|
+
const t = me(u).replace(/\r/g, ""), e = (i) => i.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
2685
2685
|
return /\n/.test(t) ? t.split(/\n{2,}/).map((i) => `<p dir="auto">${e(i).replace(/\n/g, "<br>") || "<br>"}</p>`).join("") : e(t);
|
|
2686
2686
|
}
|
|
2687
|
-
const
|
|
2688
|
-
function
|
|
2687
|
+
const wi = 10 * 1024 * 1024, fe = /^(https?:|data:image\/|blob:)/i;
|
|
2688
|
+
function oe(u, t) {
|
|
2689
2689
|
const e = [], i = "{\\" + t;
|
|
2690
2690
|
let s = 0;
|
|
2691
2691
|
for (; (s = u.indexOf(i, s)) !== -1; ) {
|
|
@@ -2694,127 +2694,127 @@ function le(u, t) {
|
|
|
2694
2694
|
s += i.length;
|
|
2695
2695
|
continue;
|
|
2696
2696
|
}
|
|
2697
|
-
let
|
|
2698
|
-
for (;
|
|
2699
|
-
const o = u[
|
|
2697
|
+
let l = 0, r = s;
|
|
2698
|
+
for (; r < u.length; r++) {
|
|
2699
|
+
const o = u[r];
|
|
2700
2700
|
if (o === "\\") {
|
|
2701
|
-
|
|
2701
|
+
r++;
|
|
2702
2702
|
continue;
|
|
2703
2703
|
}
|
|
2704
|
-
if (o === "{")
|
|
2705
|
-
else if (o === "}" && (
|
|
2704
|
+
if (o === "{") l++;
|
|
2705
|
+
else if (o === "}" && (l--, !l))
|
|
2706
2706
|
break;
|
|
2707
2707
|
}
|
|
2708
|
-
e.push({ start: s, end:
|
|
2708
|
+
e.push({ start: s, end: r + 1, body: u.slice(s + i.length, r) }), s = r + 1;
|
|
2709
2709
|
}
|
|
2710
2710
|
return e;
|
|
2711
2711
|
}
|
|
2712
|
-
function
|
|
2712
|
+
function Ti(u) {
|
|
2713
2713
|
const t = new Uint8Array(u.length / 2);
|
|
2714
2714
|
for (let e = 0; e < t.length; e++) t[e] = parseInt(u.substr(e * 2, 2), 16);
|
|
2715
2715
|
return t;
|
|
2716
2716
|
}
|
|
2717
|
-
function
|
|
2717
|
+
function Tt(u) {
|
|
2718
2718
|
let t = "";
|
|
2719
2719
|
for (let e = 0; e < u.length; e++) t += String.fromCharCode(u[e]);
|
|
2720
2720
|
return btoa(t);
|
|
2721
2721
|
}
|
|
2722
|
-
function
|
|
2722
|
+
function ae(u, t) {
|
|
2723
2723
|
t: for (let e = 0; e + t.length <= u.length; e++) {
|
|
2724
2724
|
for (let i = 0; i < t.length; i++) if (u[e + i] !== t[i]) continue t;
|
|
2725
2725
|
return e;
|
|
2726
2726
|
}
|
|
2727
2727
|
return -1;
|
|
2728
2728
|
}
|
|
2729
|
-
const
|
|
2730
|
-
function
|
|
2729
|
+
const Ei = [137, 80, 78, 71], Si = [255, 216, 255];
|
|
2730
|
+
function Mi(u) {
|
|
2731
2731
|
let t = null;
|
|
2732
2732
|
if (/\\pngblip/.test(u) ? t = "image/png" : /\\jpegblip/.test(u) ? t = "image/jpeg" : (/\\wmetafile\d*/.test(u) || /\\emfblip/.test(u)) && (t = "metafile"), !t) return null;
|
|
2733
2733
|
let e = u.replace(/\{[^{}]*\}/g, "").replace(/\\[a-z]+-?\d*\s?/gi, "").replace(/[^0-9a-fA-F]/g, "");
|
|
2734
2734
|
if (e.length % 2 && (e = e.slice(0, -1)), !e) return null;
|
|
2735
|
-
const i =
|
|
2735
|
+
const i = Ti(e);
|
|
2736
2736
|
if (t === "metafile") {
|
|
2737
|
-
const s =
|
|
2738
|
-
if (s >= 0) return "data:image/png;base64," +
|
|
2739
|
-
const n =
|
|
2740
|
-
return n >= 0 ? "data:image/jpeg;base64," +
|
|
2737
|
+
const s = ae(i, Ei);
|
|
2738
|
+
if (s >= 0) return "data:image/png;base64," + Tt(i.slice(s));
|
|
2739
|
+
const n = ae(i, Si);
|
|
2740
|
+
return n >= 0 ? "data:image/jpeg;base64," + Tt(i.slice(n)) : null;
|
|
2741
2741
|
}
|
|
2742
|
-
return "data:" + t + ";base64," +
|
|
2742
|
+
return "data:" + t + ";base64," + Tt(i);
|
|
2743
2743
|
}
|
|
2744
|
-
function
|
|
2744
|
+
function Li(u) {
|
|
2745
2745
|
if (!u || u.indexOf("\\pict") === -1) return [];
|
|
2746
2746
|
let t = u;
|
|
2747
|
-
|
|
2747
|
+
oe(u, "nonshppict").reverse().forEach((i) => {
|
|
2748
2748
|
t = t.slice(0, i.start) + t.slice(i.end);
|
|
2749
2749
|
});
|
|
2750
|
-
let e =
|
|
2751
|
-
return
|
|
2750
|
+
let e = wi;
|
|
2751
|
+
return oe(t, "pict").map((i) => {
|
|
2752
2752
|
if (e <= 0) return null;
|
|
2753
|
-
const s =
|
|
2753
|
+
const s = Mi(i.body);
|
|
2754
2754
|
return s && (e -= s.length * 0.75), s;
|
|
2755
2755
|
});
|
|
2756
2756
|
}
|
|
2757
|
-
function
|
|
2757
|
+
function ge(u, t) {
|
|
2758
2758
|
if (!u || !t.length) return { html: u, injected: [] };
|
|
2759
2759
|
const e = [];
|
|
2760
2760
|
let i = 0;
|
|
2761
2761
|
return { html: u.replace(/<img\b[^>]*>/gi, (n) => {
|
|
2762
|
-
const
|
|
2763
|
-
if (
|
|
2764
|
-
const
|
|
2765
|
-
return
|
|
2762
|
+
const l = (n.match(/\ssrc\s*=\s*["']?([^"'\s>]+)/i) || [])[1] || "";
|
|
2763
|
+
if (fe.test(l)) return n;
|
|
2764
|
+
const r = t[i++];
|
|
2765
|
+
return r ? (e.push(r), /\ssrc\s*=\s*["']/i.test(n) ? n.replace(/(\ssrc\s*=\s*)(["'])[^"']*\2/i, '$1"' + r + '"') : n.replace(/(\ssrc\s*=\s*)[^\s>]+/i, '$1"' + r + '"')) : n;
|
|
2766
2766
|
}), injected: e };
|
|
2767
2767
|
}
|
|
2768
|
-
function
|
|
2769
|
-
return !u || !t ? { html: u, injected: [] } :
|
|
2768
|
+
function ki(u, t) {
|
|
2769
|
+
return !u || !t ? { html: u, injected: [] } : ge(u, Li(t));
|
|
2770
2770
|
}
|
|
2771
|
-
function
|
|
2771
|
+
function Ai(u) {
|
|
2772
2772
|
const t = u.match(/<img\b[^>]*>/gi);
|
|
2773
2773
|
return t ? t.filter((e) => {
|
|
2774
2774
|
const i = (e.match(/\ssrc\s*=\s*["']?([^"'\s>]+)/i) || [])[1] || "";
|
|
2775
|
-
return !
|
|
2775
|
+
return !fe.test(i);
|
|
2776
2776
|
}).length : 0;
|
|
2777
2777
|
}
|
|
2778
|
-
function
|
|
2778
|
+
function Hi(u, t) {
|
|
2779
2779
|
const e = u.match(/^data:([^;,]+);base64,(.*)$/);
|
|
2780
2780
|
if (!e) return null;
|
|
2781
2781
|
const i = (e[1].split("/")[1] || "png").replace(/[^a-z0-9]/gi, "") || "png";
|
|
2782
2782
|
try {
|
|
2783
2783
|
const s = atob(e[2]), n = new Uint8Array(s.length);
|
|
2784
|
-
for (let
|
|
2784
|
+
for (let l = 0; l < s.length; l++) n[l] = s.charCodeAt(l);
|
|
2785
2785
|
return new File([n], t + "." + (i === "jpeg" ? "jpg" : i), { type: e[1] });
|
|
2786
2786
|
} catch {
|
|
2787
2787
|
return null;
|
|
2788
2788
|
}
|
|
2789
2789
|
}
|
|
2790
|
-
function
|
|
2790
|
+
function Ii(u) {
|
|
2791
2791
|
const t = new DataView(u), e = /* @__PURE__ */ new Map();
|
|
2792
2792
|
let i = -1;
|
|
2793
|
-
for (let
|
|
2794
|
-
if (t.getUint32(
|
|
2795
|
-
i =
|
|
2793
|
+
for (let r = u.byteLength - 22; r >= Math.max(0, u.byteLength - 22 - 65535); r--)
|
|
2794
|
+
if (t.getUint32(r, !0) === 101010256) {
|
|
2795
|
+
i = r;
|
|
2796
2796
|
break;
|
|
2797
2797
|
}
|
|
2798
2798
|
if (i < 0) throw new Error("EOCD not found");
|
|
2799
2799
|
const s = t.getUint16(i + 10, !0);
|
|
2800
2800
|
let n = t.getUint32(i + 16, !0);
|
|
2801
|
-
const
|
|
2802
|
-
for (let
|
|
2803
|
-
const o = t.getUint16(n + 10, !0), a = t.getUint32(n + 20, !0), d = t.getUint16(n + 28, !0), p = t.getUint16(n + 30, !0), m = t.getUint16(n + 32, !0),
|
|
2804
|
-
e.set(
|
|
2801
|
+
const l = new TextDecoder();
|
|
2802
|
+
for (let r = 0; r < s && t.getUint32(n, !0) === 33639248; r++) {
|
|
2803
|
+
const o = t.getUint16(n + 10, !0), a = t.getUint32(n + 20, !0), d = t.getUint16(n + 28, !0), p = t.getUint16(n + 30, !0), m = t.getUint16(n + 32, !0), v = t.getUint32(n + 42, !0), b = l.decode(new Uint8Array(u, n + 46, d));
|
|
2804
|
+
e.set(b, { name: b, method: o, compSize: a, localOffset: v }), n += 46 + d + p + m;
|
|
2805
2805
|
}
|
|
2806
2806
|
return e;
|
|
2807
2807
|
}
|
|
2808
|
-
async function
|
|
2808
|
+
async function ce(u, t) {
|
|
2809
2809
|
const e = new DataView(u, t.localOffset);
|
|
2810
2810
|
if (e.getUint32(0, !0) !== 67324752) throw new Error("Bad local header");
|
|
2811
|
-
const i = e.getUint16(26, !0), s = e.getUint16(28, !0), n = t.localOffset + 30 + i + s,
|
|
2812
|
-
if (t.method === 0) return
|
|
2811
|
+
const i = e.getUint16(26, !0), s = e.getUint16(28, !0), n = t.localOffset + 30 + i + s, l = new Uint8Array(u.slice(n, n + t.compSize));
|
|
2812
|
+
if (t.method === 0) return l;
|
|
2813
2813
|
if (t.method !== 8) throw new Error("Unsupported compression method " + t.method);
|
|
2814
|
-
const
|
|
2815
|
-
return new Uint8Array(await new Response(
|
|
2814
|
+
const r = new Blob([l]).stream().pipeThrough(new DecompressionStream("deflate-raw"));
|
|
2815
|
+
return new Uint8Array(await new Response(r).arrayBuffer());
|
|
2816
2816
|
}
|
|
2817
|
-
const
|
|
2817
|
+
const he = (u) => u.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """), ut = (u, t) => Array.from(u.children).filter((e) => e.localName === t), B = (u, ...t) => {
|
|
2818
2818
|
let e = u;
|
|
2819
2819
|
for (const i of t) {
|
|
2820
2820
|
if (!e) return null;
|
|
@@ -2831,7 +2831,7 @@ const ce = (u) => u.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, "
|
|
|
2831
2831
|
if (!e) return !1;
|
|
2832
2832
|
const i = q(e);
|
|
2833
2833
|
return i !== "false" && i !== "0";
|
|
2834
|
-
},
|
|
2834
|
+
}, de = {
|
|
2835
2835
|
yellow: "#FFFF00",
|
|
2836
2836
|
green: "#00FF00",
|
|
2837
2837
|
cyan: "#00FFFF",
|
|
@@ -2848,7 +2848,7 @@ const ce = (u) => u.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, "
|
|
|
2848
2848
|
lightGray: "#D3D3D3",
|
|
2849
2849
|
black: "#000000",
|
|
2850
2850
|
white: "#FFFFFF"
|
|
2851
|
-
},
|
|
2851
|
+
}, qi = {
|
|
2852
2852
|
png: "image/png",
|
|
2853
2853
|
jpg: "image/jpeg",
|
|
2854
2854
|
jpeg: "image/jpeg",
|
|
@@ -2856,13 +2856,13 @@ const ce = (u) => u.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, "
|
|
|
2856
2856
|
bmp: "image/bmp",
|
|
2857
2857
|
webp: "image/webp"
|
|
2858
2858
|
};
|
|
2859
|
-
function
|
|
2859
|
+
function Ri(u) {
|
|
2860
2860
|
let t = "";
|
|
2861
2861
|
for (let e = 0; e < u.length; e += 32768)
|
|
2862
2862
|
t += String.fromCharCode(...u.subarray(e, e + 32768));
|
|
2863
2863
|
return btoa(t);
|
|
2864
2864
|
}
|
|
2865
|
-
class
|
|
2865
|
+
class Pi {
|
|
2866
2866
|
constructor(t, e, i) {
|
|
2867
2867
|
this.rels = t, this.images = e, this.numFmt = i;
|
|
2868
2868
|
}
|
|
@@ -2873,12 +2873,12 @@ class qi {
|
|
|
2873
2873
|
};
|
|
2874
2874
|
for (const n of Array.from(t.children))
|
|
2875
2875
|
if (n.localName === "p") {
|
|
2876
|
-
const
|
|
2877
|
-
if (
|
|
2878
|
-
const
|
|
2879
|
-
for (; i.length >
|
|
2880
|
-
for (i.length ===
|
|
2881
|
-
e += `<${
|
|
2876
|
+
const l = this.paraList(n);
|
|
2877
|
+
if (l) {
|
|
2878
|
+
const r = l.ilvl + 1;
|
|
2879
|
+
for (; i.length > r; ) e += `</${i.pop()}>`;
|
|
2880
|
+
for (i.length === r && i[r - 1] !== l.type && (e += `</${i.pop()}>`); i.length < r; )
|
|
2881
|
+
e += `<${l.type}>`, i.push(l.type);
|
|
2882
2882
|
e += `<li>${this.runsOf(n) || "<br>"}</li>`;
|
|
2883
2883
|
continue;
|
|
2884
2884
|
}
|
|
@@ -2899,9 +2899,9 @@ class qi {
|
|
|
2899
2899
|
let s = "p";
|
|
2900
2900
|
const n = /^Heading([1-6])$/i.exec(i);
|
|
2901
2901
|
n ? s = "h" + n[1] : /^Title$/i.test(i) && (s = "h1");
|
|
2902
|
-
const
|
|
2903
|
-
|
|
2904
|
-
const o = this.runsOf(t), a =
|
|
2902
|
+
const l = [], r = q(B(t, "pPr", "jc"));
|
|
2903
|
+
r === "center" ? l.push("text-align:center") : r === "right" || r === "end" ? l.push("text-align:right") : (r === "both" || r === "distribute") && l.push("text-align:justify"), e && B(e, "bidi") && l.push("direction:rtl");
|
|
2904
|
+
const o = this.runsOf(t), a = l.length ? ` style="${l.join(";")}"` : "";
|
|
2905
2905
|
return `<${s}${a}>${o || "<br>"}</${s}>`;
|
|
2906
2906
|
}
|
|
2907
2907
|
runsOf(t) {
|
|
@@ -2912,8 +2912,8 @@ class qi {
|
|
|
2912
2912
|
let s = this.rels.get(q(i, "id")) || "";
|
|
2913
2913
|
const n = q(i, "anchor");
|
|
2914
2914
|
!s && n && (s = "#" + n);
|
|
2915
|
-
const
|
|
2916
|
-
e += s ? `<a href="${
|
|
2915
|
+
const l = this.runsOf(i);
|
|
2916
|
+
e += s ? `<a href="${he(s)}">${l}</a>` : l;
|
|
2917
2917
|
} else (i.localName === "smartTag" || i.localName === "ins") && (e += this.runsOf(i));
|
|
2918
2918
|
return e;
|
|
2919
2919
|
}
|
|
@@ -2921,14 +2921,14 @@ class qi {
|
|
|
2921
2921
|
const e = B(t, "rPr");
|
|
2922
2922
|
let i = "";
|
|
2923
2923
|
for (const p of Array.from(t.children))
|
|
2924
|
-
p.localName === "t" ? i +=
|
|
2924
|
+
p.localName === "t" ? i += he(p.textContent || "") : p.localName === "br" || p.localName === "cr" ? i += "<br>" : p.localName === "tab" ? i += " " : (p.localName === "drawing" || p.localName === "pict" || p.localName === "object") && (i += this.convertImage(p));
|
|
2925
2925
|
if (!i) return "";
|
|
2926
2926
|
const s = [], n = q(e ? B(e, "color") : null);
|
|
2927
2927
|
n && n !== "auto" && s.push("color:#" + n);
|
|
2928
|
-
const
|
|
2929
|
-
|
|
2930
|
-
const
|
|
2931
|
-
|
|
2928
|
+
const l = q(e ? B(e, "highlight") : null);
|
|
2929
|
+
l && de[l] && s.push("background-color:" + de[l]);
|
|
2930
|
+
const r = parseFloat(q(e ? B(e, "sz") : null));
|
|
2931
|
+
r && s.push("font-size:" + Math.round(r / 2 * (4 / 3)) + "px");
|
|
2932
2932
|
const o = e ? B(e, "rFonts") : null, a = q(o, "ascii") || q(o, "cs");
|
|
2933
2933
|
a && s.push(`font-family:'${a}'`), s.length && (i = `<span style="${s.join(";")}">${i}</span>`), at(e, "b") && (i = `<strong>${i}</strong>`), at(e, "i") && (i = `<em>${i}</em>`), at(e, "u") && q(B(e, "u")) !== "none" && (i = `<u>${i}</u>`), at(e, "strike") && (i = `<s>${i}</s>`);
|
|
2934
2934
|
const d = q(e ? B(e, "vertAlign") : null);
|
|
@@ -2936,135 +2936,209 @@ class qi {
|
|
|
2936
2936
|
}
|
|
2937
2937
|
convertImage(t) {
|
|
2938
2938
|
let e = "", i = 0;
|
|
2939
|
-
const s = (
|
|
2940
|
-
if (
|
|
2941
|
-
const o = parseFloat(
|
|
2939
|
+
const s = (r) => {
|
|
2940
|
+
if (r.localName === "blip" && (e = e || q(r, "embed") || q(r, "link")), r.localName === "imagedata" && (e = e || q(r, "id")), r.localName === "extent") {
|
|
2941
|
+
const o = parseFloat(r.getAttribute("cx") || "0");
|
|
2942
2942
|
o && (i = Math.round(o / 9525));
|
|
2943
2943
|
}
|
|
2944
|
-
for (const o of Array.from(
|
|
2944
|
+
for (const o of Array.from(r.children)) s(o);
|
|
2945
2945
|
};
|
|
2946
2946
|
if (s(t), !e) return "";
|
|
2947
2947
|
const n = this.images.get(e);
|
|
2948
2948
|
if (!n) return "";
|
|
2949
|
-
const
|
|
2950
|
-
return `<img src="${n}" alt=""${
|
|
2949
|
+
const l = i ? ` width="${i}"` : "";
|
|
2950
|
+
return `<img src="${n}" alt=""${l}>`;
|
|
2951
2951
|
}
|
|
2952
2952
|
convertTable(t) {
|
|
2953
2953
|
let e = '<table style="border-collapse:collapse;width:100%"><tbody>';
|
|
2954
|
-
for (const i of
|
|
2954
|
+
for (const i of ut(t, "tr")) {
|
|
2955
2955
|
e += "<tr>";
|
|
2956
|
-
for (const s of
|
|
2957
|
-
const n = parseInt(q(B(s, "tcPr", "gridSpan")) || "1", 10) || 1,
|
|
2958
|
-
let
|
|
2956
|
+
for (const s of ut(i, "tc")) {
|
|
2957
|
+
const n = parseInt(q(B(s, "tcPr", "gridSpan")) || "1", 10) || 1, l = n > 1 ? ` colspan="${n}"` : "";
|
|
2958
|
+
let r = "";
|
|
2959
2959
|
for (const o of Array.from(s.children))
|
|
2960
|
-
o.localName === "p" ?
|
|
2961
|
-
e += `<td style="border:1px solid #b9c2cc"${
|
|
2960
|
+
o.localName === "p" ? r += this.convertPara(o) : o.localName === "tbl" && (r += this.convertTable(o));
|
|
2961
|
+
e += `<td style="border:1px solid #b9c2cc"${l}>${r || "<br>"}</td>`;
|
|
2962
2962
|
}
|
|
2963
2963
|
e += "</tr>";
|
|
2964
2964
|
}
|
|
2965
2965
|
return e + "</tbody></table>";
|
|
2966
2966
|
}
|
|
2967
2967
|
}
|
|
2968
|
-
async function
|
|
2969
|
-
const t = u instanceof ArrayBuffer ? u : await u.arrayBuffer(), e =
|
|
2970
|
-
const
|
|
2971
|
-
return
|
|
2972
|
-
}, n = await s("word/document.xml"),
|
|
2973
|
-
let
|
|
2974
|
-
if (
|
|
2975
|
-
for (const
|
|
2976
|
-
if (
|
|
2977
|
-
|
|
2968
|
+
async function Bi(u) {
|
|
2969
|
+
const t = u instanceof ArrayBuffer ? u : await u.arrayBuffer(), e = Ii(t), i = new TextDecoder(), s = async (b) => {
|
|
2970
|
+
const f = e.get(b);
|
|
2971
|
+
return f ? new DOMParser().parseFromString(i.decode(await ce(t, f)), "application/xml") : null;
|
|
2972
|
+
}, n = await s("word/document.xml"), l = n == null ? void 0 : n.getElementsByTagName("*");
|
|
2973
|
+
let r = null;
|
|
2974
|
+
if (l) {
|
|
2975
|
+
for (const b of Array.from(l))
|
|
2976
|
+
if (b.localName === "body") {
|
|
2977
|
+
r = b;
|
|
2978
2978
|
break;
|
|
2979
2979
|
}
|
|
2980
2980
|
}
|
|
2981
|
-
if (!
|
|
2981
|
+
if (!r) throw new Error("word/document.xml missing or invalid");
|
|
2982
2982
|
const o = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), d = await s("word/_rels/document.xml.rels");
|
|
2983
2983
|
if (d)
|
|
2984
|
-
for (const
|
|
2985
|
-
if (
|
|
2986
|
-
const
|
|
2987
|
-
/hyperlink/i.test(
|
|
2984
|
+
for (const b of Array.from(d.getElementsByTagName("*"))) {
|
|
2985
|
+
if (b.localName !== "Relationship") continue;
|
|
2986
|
+
const f = b.getAttribute("Id") || "", y = b.getAttribute("Target") || "", C = b.getAttribute("Type") || "";
|
|
2987
|
+
/hyperlink/i.test(C) ? o.set(f, y) : /image/i.test(C) && a.set(f, y);
|
|
2988
2988
|
}
|
|
2989
2989
|
const p = /* @__PURE__ */ new Map();
|
|
2990
|
-
for (const [
|
|
2991
|
-
const
|
|
2992
|
-
if (!
|
|
2993
|
-
const E = (
|
|
2990
|
+
for (const [b, f] of a) {
|
|
2991
|
+
const y = f.startsWith("/") ? f.slice(1) : "word/" + f.replace(/^\.\//, ""), C = e.get(y);
|
|
2992
|
+
if (!C) continue;
|
|
2993
|
+
const E = (y.split(".").pop() || "").toLowerCase(), I = qi[E];
|
|
2994
2994
|
if (I)
|
|
2995
2995
|
try {
|
|
2996
|
-
p.set(
|
|
2996
|
+
p.set(b, `data:${I};base64,${Ri(await ce(t, C))}`);
|
|
2997
2997
|
} catch {
|
|
2998
2998
|
}
|
|
2999
2999
|
}
|
|
3000
|
-
const m = /* @__PURE__ */ new Map(),
|
|
3001
|
-
if (
|
|
3002
|
-
const
|
|
3003
|
-
for (const
|
|
3004
|
-
if (
|
|
3005
|
-
const
|
|
3006
|
-
|
|
3000
|
+
const m = /* @__PURE__ */ new Map(), v = await s("word/numbering.xml");
|
|
3001
|
+
if (v) {
|
|
3002
|
+
const b = /* @__PURE__ */ new Map(), f = Array.from(v.getElementsByTagName("*"));
|
|
3003
|
+
for (const y of f) {
|
|
3004
|
+
if (y.localName !== "abstractNum") continue;
|
|
3005
|
+
const C = q(y, "abstractNumId"), E = ut(y, "lvl").find((A) => q(A, "ilvl") === "0") || ut(y, "lvl")[0], I = E ? q(B(E, "numFmt")) : "";
|
|
3006
|
+
b.set(C, I === "bullet" ? "ul" : "ol");
|
|
3007
3007
|
}
|
|
3008
|
-
for (const
|
|
3009
|
-
if (
|
|
3010
|
-
const
|
|
3011
|
-
m.set(
|
|
3008
|
+
for (const y of f) {
|
|
3009
|
+
if (y.localName !== "num") continue;
|
|
3010
|
+
const C = q(y, "numId"), E = q(B(y, "abstractNumId"));
|
|
3011
|
+
m.set(C, b.get(E) || "ul");
|
|
3012
3012
|
}
|
|
3013
3013
|
}
|
|
3014
|
-
return new
|
|
3014
|
+
return new Pi(o, p, m).convertBody(r);
|
|
3015
3015
|
}
|
|
3016
|
-
const
|
|
3016
|
+
const Di = ["nw", "ne", "sw", "se"], Et = ["img-left", "img-right", "img-top", "img-center"], St = {
|
|
3017
3017
|
"img-left": "tplimgleft",
|
|
3018
3018
|
"img-right": "tplimgright",
|
|
3019
3019
|
"img-top": "tplimgtop",
|
|
3020
3020
|
"img-center": "tplimgcenter"
|
|
3021
|
-
},
|
|
3021
|
+
}, Ni = {
|
|
3022
3022
|
"img-left": h.tplleft,
|
|
3023
3023
|
"img-right": h.tplright,
|
|
3024
3024
|
"img-top": h.tpltop,
|
|
3025
3025
|
"img-center": h.tplcenter
|
|
3026
|
-
},
|
|
3027
|
-
let O = null, X = null,
|
|
3026
|
+
}, Oi = ".tox,.pop,.tblctx,.imgctx,.selctx,.dlg";
|
|
3027
|
+
let O = null, X = null, Lt = 0, ue = !1;
|
|
3028
3028
|
function ct() {
|
|
3029
|
-
clearTimeout(
|
|
3029
|
+
clearTimeout(Lt), X = null, O && O.classList.remove("show");
|
|
3030
3030
|
}
|
|
3031
|
-
function
|
|
3031
|
+
function Zi(u) {
|
|
3032
3032
|
const t = u.dataset.tip;
|
|
3033
3033
|
if (!t) return;
|
|
3034
|
-
X = u, clearTimeout(
|
|
3034
|
+
X = u, clearTimeout(Lt);
|
|
3035
3035
|
const e = O && O.classList.contains("show") ? 60 : 350;
|
|
3036
|
-
|
|
3036
|
+
Lt = window.setTimeout(() => {
|
|
3037
3037
|
if (X !== u || !document.contains(u)) return;
|
|
3038
3038
|
O || (O = document.createElement("div"), O.className = "etip", document.body.appendChild(O)), O.textContent = t, O.classList.add("show");
|
|
3039
3039
|
const i = u.getBoundingClientRect(), s = O.offsetWidth, n = O.offsetHeight;
|
|
3040
|
-
let
|
|
3041
|
-
|
|
3042
|
-
let
|
|
3043
|
-
|
|
3040
|
+
let l = i.left + i.width / 2 - s / 2;
|
|
3041
|
+
l = Math.max(6, Math.min(l, innerWidth - s - 6));
|
|
3042
|
+
let r = i.bottom + 7;
|
|
3043
|
+
r + n > innerHeight - 6 && (r = i.top - n - 7), O.style.left = l + "px", O.style.top = r + "px";
|
|
3044
3044
|
}, e);
|
|
3045
3045
|
}
|
|
3046
|
-
function
|
|
3047
|
-
|
|
3046
|
+
function Fi() {
|
|
3047
|
+
ue || (ue = !0, document.addEventListener("mouseover", (u) => {
|
|
3048
3048
|
const t = u.target, e = t.closest ? t.closest("[title],[data-tip]") : null;
|
|
3049
|
-
if (!e || !e.closest(
|
|
3049
|
+
if (!e || !e.closest(Oi) || e.closest(".earea")) {
|
|
3050
3050
|
e !== X && ct();
|
|
3051
3051
|
return;
|
|
3052
3052
|
}
|
|
3053
3053
|
const i = e.getAttribute("title");
|
|
3054
|
-
i && (e.dataset.tip = i, e.removeAttribute("title"), e.getAttribute("aria-label") || e.setAttribute("aria-label", i)), e !== X &&
|
|
3054
|
+
i && (e.dataset.tip = i, e.removeAttribute("title"), e.getAttribute("aria-label") || e.setAttribute("aria-label", i)), e !== X && Zi(e);
|
|
3055
3055
|
}), document.addEventListener("mouseout", (u) => {
|
|
3056
3056
|
X && !X.contains(u.relatedTarget) && ct();
|
|
3057
3057
|
}), document.addEventListener("mousedown", ct, !0), addEventListener("scroll", ct, !0));
|
|
3058
3058
|
}
|
|
3059
|
-
const
|
|
3060
|
-
function
|
|
3059
|
+
const _i = /[\u0590-\u05FF\u0600-\u06FF\u0750-\u077F\u0780-\u07BF\u08A0-\u08FF\uFB1D-\uFB4F\uFB50-\uFDFF\uFE70-\uFEFF]/, $i = new RegExp("\\p{L}", "u"), ji = "p,div,li,td,th,blockquote,h1,h2,h3,h4,h5,h6,pre,figcaption";
|
|
3060
|
+
function Wi(u) {
|
|
3061
3061
|
for (const t of u) {
|
|
3062
|
-
if (
|
|
3063
|
-
if (
|
|
3062
|
+
if (_i.test(t)) return "rtl";
|
|
3063
|
+
if ($i.test(t)) return "ltr";
|
|
3064
3064
|
}
|
|
3065
3065
|
return null;
|
|
3066
3066
|
}
|
|
3067
|
-
|
|
3067
|
+
const ht = ["top", "right", "bottom", "left"], Ui = /^(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset)$/i, Vi = /^(thin|medium|thick|[+-]?(\d+\.?\d*|\.\d+)(px|pt|em|rem|ex|ch|cm|mm|in|pc|q)?)$/i, zi = /^[+-]?0*(\.0*)?(px|pt|em|rem|ex|ch|cm|mm|in|pc|q)?$/i, Xi = /^border-(collapse|spacing|radius|image|block|inline|start|end)/i, Yi = /^border(?:-(top|right|bottom|left))?(?:-(width|style|color))?$/, Gi = /^(inherit|initial|unset|revert|revert-layer)$/i;
|
|
3068
|
+
function ve(u) {
|
|
3069
|
+
const t = [];
|
|
3070
|
+
let e = 0, i = "";
|
|
3071
|
+
for (const s of u)
|
|
3072
|
+
s === "(" ? e++ : s === ")" && e--, e === 0 && /\s/.test(s) ? (i && t.push(i), i = "") : i += s;
|
|
3073
|
+
return i && t.push(i), t;
|
|
3074
|
+
}
|
|
3075
|
+
function Ki(u) {
|
|
3076
|
+
const [t, e = t, i = t, s = e] = u;
|
|
3077
|
+
return [t, e, i, s];
|
|
3078
|
+
}
|
|
3079
|
+
function Qi(u) {
|
|
3080
|
+
const t = { width: "medium", style: "none", color: "" };
|
|
3081
|
+
return ve(u).forEach((e) => {
|
|
3082
|
+
Ui.test(e) ? t.style = e.toLowerCase() : Vi.test(e) ? t.width = e : t.color = e;
|
|
3083
|
+
}), t;
|
|
3084
|
+
}
|
|
3085
|
+
function Ji(u) {
|
|
3086
|
+
return !u || /^currentcolor$/i.test(u) ? "" : /^windowtext$/i.test(u) ? "#000000" : u;
|
|
3087
|
+
}
|
|
3088
|
+
function ts(u) {
|
|
3089
|
+
if (u.width === null && u.style === null && u.color === null) return "";
|
|
3090
|
+
const t = u.style ?? "solid";
|
|
3091
|
+
return t === "none" || t === "hidden" || u.width && zi.test(u.width) ? "none" : [u.width && u.width !== "medium" ? u.width : "", t, Ji(u.color || "")].filter(Boolean).join(" ");
|
|
3092
|
+
}
|
|
3093
|
+
function es(u) {
|
|
3094
|
+
u.querySelectorAll("table,td,th").forEach((t) => {
|
|
3095
|
+
const e = t.getAttribute("style") || "";
|
|
3096
|
+
if (!/border/i.test(e)) return;
|
|
3097
|
+
const i = {
|
|
3098
|
+
top: { width: null, style: null, color: null },
|
|
3099
|
+
right: { width: null, style: null, color: null },
|
|
3100
|
+
bottom: { width: null, style: null, color: null },
|
|
3101
|
+
left: { width: null, style: null, color: null }
|
|
3102
|
+
}, s = [];
|
|
3103
|
+
let n = !1, l = !1;
|
|
3104
|
+
if (e.split(";").forEach((a) => {
|
|
3105
|
+
const d = a.indexOf(":");
|
|
3106
|
+
if (d < 1) {
|
|
3107
|
+
a.trim() && s.push(a.trim());
|
|
3108
|
+
return;
|
|
3109
|
+
}
|
|
3110
|
+
const p = a.slice(0, d).trim().toLowerCase(), m = a.slice(d + 1).trim(), v = Yi.exec(p);
|
|
3111
|
+
if (!v || Xi.test(p)) {
|
|
3112
|
+
s.push(p + ":" + m);
|
|
3113
|
+
return;
|
|
3114
|
+
}
|
|
3115
|
+
if (Gi.test(m)) {
|
|
3116
|
+
l = !0;
|
|
3117
|
+
return;
|
|
3118
|
+
}
|
|
3119
|
+
n = !0;
|
|
3120
|
+
const b = v[1], f = v[2];
|
|
3121
|
+
if (f)
|
|
3122
|
+
if (b)
|
|
3123
|
+
i[b][f] = m;
|
|
3124
|
+
else {
|
|
3125
|
+
const y = Ki(ve(m));
|
|
3126
|
+
ht.forEach((C, E) => {
|
|
3127
|
+
i[C][f] = y[E];
|
|
3128
|
+
});
|
|
3129
|
+
}
|
|
3130
|
+
else {
|
|
3131
|
+
const y = Qi(m);
|
|
3132
|
+
(b ? [b] : ht.slice()).forEach((C) => {
|
|
3133
|
+
i[C] = { ...y };
|
|
3134
|
+
});
|
|
3135
|
+
}
|
|
3136
|
+
}), l || !n) return;
|
|
3137
|
+
const r = ht.map((a) => ts(i[a])), o = s.slice();
|
|
3138
|
+
r.every((a) => a && a === r[0]) ? o.push("border:" + r[0]) : ht.forEach((a, d) => r[d] && o.push(`border-${a}:` + r[d])), t.setAttribute("style", o.join(";"));
|
|
3139
|
+
});
|
|
3140
|
+
}
|
|
3141
|
+
function be(u) {
|
|
3068
3142
|
let t = "";
|
|
3069
3143
|
return u.childNodes.forEach((e) => {
|
|
3070
3144
|
if (e.nodeType === Node.TEXT_NODE)
|
|
@@ -3072,12 +3146,12 @@ function ge(u) {
|
|
|
3072
3146
|
else if (e.nodeType === Node.ELEMENT_NODE) {
|
|
3073
3147
|
const i = e, s = (i.getAttribute("dir") || "").toLowerCase();
|
|
3074
3148
|
if (s === "rtl" || s === "ltr") return;
|
|
3075
|
-
t +=
|
|
3149
|
+
t += be(i);
|
|
3076
3150
|
}
|
|
3077
3151
|
}), t;
|
|
3078
3152
|
}
|
|
3079
3153
|
var j;
|
|
3080
|
-
let
|
|
3154
|
+
let is = (j = class {
|
|
3081
3155
|
constructor(t) {
|
|
3082
3156
|
this.lang = "en", this.contentClass = "fable-content-" + j.instanceCounter++, this.contentStyleEl = null, this.savedRange = null, this.foreColor = "#000000", this.backColor = "#FACC15", this.openPop = null, this.subStack = [], this.popAnchor = null, this.dlgOvl = null, this.tblActive = null, this.tblCorner = null, this.tblColBars = [], this.tblCtx = null, this.tblCellMark = null, this.tblOpMark = null, this.tblOpMarkKind = null, this.imgActive = null, this.imgHandles = [], this.imgCtx = null, this.imgHideTimer = null, this.phActive = null, this.phCtx = null, this.phUploadTarget = null, this.vidActive = null, this.vidCtx = null, this.vidHideTimer = null, this.vphActive = null, this.vphCtx = null, this.vphUploadTarget = null, this.selCtx = null, this.tbrMore = null, this.tbrExpanded = !1, this.codeActive = null, this.codeCtx = null, this.tplActive = null, this.tplCtx = null, this.revisions = [], this.revTimer = null, this.draftTimer = null, this.draftStorageKey = "", this.listeners = [], this.isDestroyed = !1, this.options = {
|
|
3083
3157
|
target: t.target,
|
|
@@ -3093,20 +3167,20 @@ let ji = (j = class {
|
|
|
3093
3167
|
statusbar: t.statusbar ?? !0,
|
|
3094
3168
|
readonly: t.readonly ?? !1,
|
|
3095
3169
|
draftKey: t.draftKey ?? (typeof location < "u" ? location.pathname : "default"),
|
|
3096
|
-
fontFamilyFormats: t.fontFamilyFormats ??
|
|
3170
|
+
fontFamilyFormats: t.fontFamilyFormats ?? ii,
|
|
3097
3171
|
imageFileTypes: t.imageFileTypes ?? ["image/jpeg", "image/jpg", "image/png", "image/gif", "image/bmp", "image/webp"],
|
|
3098
3172
|
videoFileTypes: t.videoFileTypes ?? ["video/mp4", "video/webm", "video/ogg"]
|
|
3099
3173
|
}, this.imageUploadHandler = t.imageUploadHandler, this.onImageUploadError = t.onImageUploadError, this.videoUploadHandler = t.videoUploadHandler, this.onVideoUploadError = t.onVideoUploadError, this.contentStyle = t.contentStyle, this.applyTheme(t), this.lang = this.options.language, this.draftStorageKey = "tmclone-draft:" + this.options.draftKey, this.initDOM(), this.bindEvents(), this.initUI(), this.recordRevision(), this.stampExistingImages(), this.options.onReady(this);
|
|
3100
3174
|
}
|
|
3101
3175
|
t(t) {
|
|
3102
|
-
const e =
|
|
3176
|
+
const e = wt(this.lang)[t];
|
|
3103
3177
|
return typeof e == "string" ? e : e.join(",");
|
|
3104
3178
|
}
|
|
3105
3179
|
tArr(t) {
|
|
3106
|
-
return
|
|
3180
|
+
return wt(this.lang)[t];
|
|
3107
3181
|
}
|
|
3108
3182
|
dir() {
|
|
3109
|
-
return
|
|
3183
|
+
return wt(this.lang).dir;
|
|
3110
3184
|
}
|
|
3111
3185
|
/* ---------------------------------------------------------- DOM setup */
|
|
3112
3186
|
initDOM() {
|
|
@@ -3119,7 +3193,7 @@ let ji = (j = class {
|
|
|
3119
3193
|
</span>
|
|
3120
3194
|
`, this.sbHelp = this.statusbar.querySelector(".mid"), this.sbWords = this.statusbar.querySelector(".words");
|
|
3121
3195
|
const e = this.statusbar.querySelector(".grip");
|
|
3122
|
-
this.bindGrip(e), this.shell.appendChild(this.menubar), this.shell.appendChild(this.toolbar), this.shell.appendChild(this.ed), this.shell.appendChild(this.statusbar), this.contentStyle && (this.contentStyleEl = document.createElement("style"), this.contentStyleEl.textContent = this.scopeContentStyle(this.contentStyle), this.shell.appendChild(this.contentStyleEl)), t.appendChild(this.shell),
|
|
3196
|
+
this.bindGrip(e), this.shell.appendChild(this.menubar), this.shell.appendChild(this.toolbar), this.shell.appendChild(this.ed), this.shell.appendChild(this.statusbar), this.contentStyle && (this.contentStyleEl = document.createElement("style"), this.contentStyleEl.textContent = this.scopeContentStyle(this.contentStyle), this.shell.appendChild(this.contentStyleEl)), t.appendChild(this.shell), Fi(), this.options.statusbar || (this.statusbar.style.display = "none"), this.imgInput = document.createElement("input"), this.imgInput.type = "file", this.imgInput.accept = this.options.imageFileTypes.join(","), this.imgInput.style.display = "none", t.appendChild(this.imgInput), this.vidInput = document.createElement("input"), this.vidInput.type = "file", this.vidInput.accept = this.options.videoFileTypes.join(","), this.vidInput.style.display = "none", t.appendChild(this.vidInput), this.docInput = document.createElement("input"), this.docInput.type = "file", this.docInput.accept = ".docx,application/vnd.openxmlformats-officedocument.wordprocessingml.document", this.docInput.style.display = "none", t.appendChild(this.docInput);
|
|
3123
3197
|
}
|
|
3124
3198
|
/** Theme options land as CSS variables on the document root rather than the editor
|
|
3125
3199
|
* shell, because dialogs, popups and floating context toolbars are appended to
|
|
@@ -3139,12 +3213,12 @@ let ji = (j = class {
|
|
|
3139
3213
|
let e = 0, i = 0;
|
|
3140
3214
|
const s = (n) => {
|
|
3141
3215
|
e = n.clientY, i = this.ed.offsetHeight, n.preventDefault();
|
|
3142
|
-
const
|
|
3216
|
+
const l = (o) => {
|
|
3143
3217
|
this.ed.style.height = Math.max(120, i + o.clientY - e) + "px";
|
|
3144
|
-
},
|
|
3145
|
-
window.removeEventListener("mousemove",
|
|
3218
|
+
}, r = () => {
|
|
3219
|
+
window.removeEventListener("mousemove", l), window.removeEventListener("mouseup", r);
|
|
3146
3220
|
};
|
|
3147
|
-
window.addEventListener("mousemove",
|
|
3221
|
+
window.addEventListener("mousemove", l), window.addEventListener("mouseup", r);
|
|
3148
3222
|
};
|
|
3149
3223
|
t.addEventListener("mousedown", s), this.listeners.push(() => t.removeEventListener("mousedown", s));
|
|
3150
3224
|
}
|
|
@@ -3162,34 +3236,34 @@ let ji = (j = class {
|
|
|
3162
3236
|
}), this.on(this.ed, "keydown", (t) => {
|
|
3163
3237
|
t.altKey && t.key === "0" && (t.preventDefault(), this.helpDlg()), (t.key === "Delete" || t.key === "Backspace") && this.phActive && (t.preventDefault(), this.removeImgPlaceholder()), (t.key === "Delete" || t.key === "Backspace") && this.vphActive && (t.preventDefault(), this.removeVphPlaceholder()), t.key === "`" && !t.ctrlKey && !t.metaKey && !t.altKey && this.tryCodeTyping(t), t.key === "Enter" && !t.shiftKey && !t.ctrlKey && !t.metaKey && !t.altKey && this.tryExitBlockquote(t);
|
|
3164
3238
|
}), this.on(this.ed, "paste", (t) => this.handlePaste(t)), this.on(this.ed, "drop", (t) => {
|
|
3165
|
-
var n,
|
|
3239
|
+
var n, l, r, o;
|
|
3166
3240
|
t.preventDefault();
|
|
3167
3241
|
const e = t.target, i = (n = e.closest) == null ? void 0 : n.call(e, ".img-ph:not(.vid-ph)");
|
|
3168
3242
|
if (i && this.ed.contains(i) && !this.options.readonly) {
|
|
3169
|
-
const a = Array.from(((
|
|
3243
|
+
const a = Array.from(((l = t.dataTransfer) == null ? void 0 : l.files) || []).find((d) => d.type.startsWith("image/"));
|
|
3170
3244
|
a && this.readImageFileInto(a, i);
|
|
3171
3245
|
return;
|
|
3172
3246
|
}
|
|
3173
|
-
const s = (
|
|
3247
|
+
const s = (r = e.closest) == null ? void 0 : r.call(e, ".vid-ph");
|
|
3174
3248
|
if (s && this.ed.contains(s) && !this.options.readonly) {
|
|
3175
3249
|
const a = Array.from(((o = t.dataTransfer) == null ? void 0 : o.files) || []).find((d) => d.type.startsWith("video/"));
|
|
3176
3250
|
a && this.readVideoFileInto(a, s);
|
|
3177
3251
|
}
|
|
3178
3252
|
}), this.on(this.ed, "dragover", (t) => t.preventDefault()), this.on(this.ed, "mousedown", (t) => {
|
|
3179
|
-
var d, p, m,
|
|
3253
|
+
var d, p, m, v, b, f, y;
|
|
3180
3254
|
const e = t.target, i = (d = e.closest) == null ? void 0 : d.call(e, "table");
|
|
3181
3255
|
i && this.ed.contains(i) ? this.selectTableForResize(i) : this.clearTableHandles();
|
|
3182
3256
|
const s = (p = e.closest) == null ? void 0 : p.call(e, ".img-ph:not(.vid-ph)");
|
|
3183
3257
|
s && this.ed.contains(s) && !this.options.readonly ? (t.preventDefault(), this.ed.focus(), this.selectImgPlaceholder(s)) : this.clearImgPlaceholderSel();
|
|
3184
3258
|
const n = (m = e.closest) == null ? void 0 : m.call(e, ".vid-ph");
|
|
3185
3259
|
n && this.ed.contains(n) && !this.options.readonly ? (t.preventDefault(), this.ed.focus(), this.selectVphPlaceholder(n)) : this.clearVphPlaceholderSel();
|
|
3186
|
-
const
|
|
3187
|
-
|
|
3188
|
-
const
|
|
3189
|
-
|
|
3190
|
-
const o = (
|
|
3260
|
+
const l = (v = e.closest) == null ? void 0 : v.call(e, ".tpl");
|
|
3261
|
+
l && this.ed.contains(l) && !this.options.readonly ? this.selectTemplate(l) : this.clearTplSel();
|
|
3262
|
+
const r = (b = e.closest) == null ? void 0 : b.call(e, "pre.code-block");
|
|
3263
|
+
r && this.ed.contains(r) && !this.options.readonly ? (t.preventDefault(), this.selectCodeEl(r)) : this.clearCodeSel();
|
|
3264
|
+
const o = (f = e.closest) == null ? void 0 : f.call(e, "img");
|
|
3191
3265
|
o && this.ed.contains(o) && !this.options.readonly ? (t.preventDefault(), this.selectImage(o)) : this.clearImageHandles();
|
|
3192
|
-
const a = (
|
|
3266
|
+
const a = (y = e.closest) == null ? void 0 : y.call(e, "video, .video-embed");
|
|
3193
3267
|
a && this.ed.contains(a) && !this.options.readonly ? (t.preventDefault(), this.selectVideo(a)) : this.clearVidHandles();
|
|
3194
3268
|
}), this.on(this.ed, "mouseover", (t) => {
|
|
3195
3269
|
var i, s;
|
|
@@ -3197,11 +3271,11 @@ let ji = (j = class {
|
|
|
3197
3271
|
const e = (s = (i = t.target).closest) == null ? void 0 : s.call(i, "img");
|
|
3198
3272
|
e && this.ed.contains(e) && (this.cancelImgHide(), this.selectImage(e));
|
|
3199
3273
|
}), this.on(this.ed, "mouseout", (t) => {
|
|
3200
|
-
var s, n,
|
|
3274
|
+
var s, n, l, r;
|
|
3201
3275
|
const e = (n = (s = t.target).closest) == null ? void 0 : n.call(s, "img");
|
|
3202
3276
|
if (!e) return;
|
|
3203
3277
|
const i = t.relatedTarget;
|
|
3204
|
-
i && ((
|
|
3278
|
+
i && ((l = this.imgCtx) != null && l.contains(i) || this.imgHandles.some((o) => o.contains(i)) || ((r = i.closest) == null ? void 0 : r.call(i, "img")) === e) || this.scheduleImgHide();
|
|
3205
3279
|
}), this.on(this.ed, "scroll", () => {
|
|
3206
3280
|
this.positionTableHandles(), this.positionImageHandles(), this.positionImgPhCtx(), this.positionTplCtx(), this.positionVphCtx(), this.positionVidCtx(), this.positionCodeCtx();
|
|
3207
3281
|
}), this.onWin(
|
|
@@ -3283,37 +3357,40 @@ let ji = (j = class {
|
|
|
3283
3357
|
* content with no strongly-directional character anywhere falls back to the
|
|
3284
3358
|
* editor's current direction. */
|
|
3285
3359
|
getContentForEmail() {
|
|
3286
|
-
const t = (
|
|
3287
|
-
const a = (
|
|
3288
|
-
|
|
3360
|
+
const t = (r, o) => {
|
|
3361
|
+
const a = (r.getAttribute("style") || "").trim();
|
|
3362
|
+
r.setAttribute("style", a ? a.replace(/;?$/, "; ") + o : o);
|
|
3289
3363
|
}, e = document.createElement("div");
|
|
3290
3364
|
e.innerHTML = this.ed.innerHTML;
|
|
3291
3365
|
let i = null;
|
|
3292
|
-
e.querySelectorAll("[dir]").forEach((
|
|
3293
|
-
const o = (
|
|
3366
|
+
e.querySelectorAll("[dir]").forEach((r) => {
|
|
3367
|
+
const o = (r.getAttribute("dir") || "").toLowerCase();
|
|
3294
3368
|
if (o !== "rtl" && o !== "ltr") return;
|
|
3295
3369
|
const a = o;
|
|
3296
|
-
i || (i = a), /text-align\s*:/i.test(
|
|
3297
|
-
}), e.querySelectorAll(
|
|
3298
|
-
const o = (
|
|
3370
|
+
i || (i = a), /text-align\s*:/i.test(r.getAttribute("style") || "") || t(r, `text-align:${a === "rtl" ? "right" : "left"}`);
|
|
3371
|
+
}), e.querySelectorAll(ji).forEach((r) => {
|
|
3372
|
+
const o = (r.getAttribute("dir") || "").toLowerCase();
|
|
3299
3373
|
if (o === "rtl" || o === "ltr") return;
|
|
3300
|
-
const a =
|
|
3374
|
+
const a = Wi(be(r));
|
|
3301
3375
|
if (!a) return;
|
|
3302
|
-
i || (i = a),
|
|
3303
|
-
const d = /text-align\s*:/i.test(
|
|
3304
|
-
t(
|
|
3376
|
+
i || (i = a), r.setAttribute("dir", a);
|
|
3377
|
+
const d = /text-align\s*:/i.test(r.getAttribute("style") || "");
|
|
3378
|
+
t(r, d ? `direction:${a}` : `direction:${a};text-align:${a === "rtl" ? "right" : "left"}`);
|
|
3305
3379
|
});
|
|
3306
3380
|
const s = this.ed.querySelectorAll("img");
|
|
3307
|
-
e.querySelectorAll("img").forEach((
|
|
3308
|
-
if (
|
|
3381
|
+
e.querySelectorAll("img").forEach((r, o) => {
|
|
3382
|
+
if (r.closest(".tpl-media")) return;
|
|
3309
3383
|
const a = s[o], d = Math.round((a == null ? void 0 : a.getBoundingClientRect().width) || 0);
|
|
3310
|
-
d > 0 && !
|
|
3311
|
-
const p =
|
|
3312
|
-
d > 0 && !/(^|;)\s*width\s*:/i.test(p) && t(
|
|
3384
|
+
d > 0 && !r.getAttribute("width") && r.setAttribute("width", String(d));
|
|
3385
|
+
const p = r.getAttribute("style") || "";
|
|
3386
|
+
d > 0 && !/(^|;)\s*width\s*:/i.test(p) && t(r, `width:${d}px`), /max-width\s*:/i.test(r.getAttribute("style") || "") || t(r, "max-width:100%"), /(^|;)\s*height\s*:/i.test(r.getAttribute("style") || "") || t(r, "height:auto");
|
|
3387
|
+
}), es(e), e.querySelectorAll("table").forEach((r) => {
|
|
3388
|
+
const o = r.getAttribute("style") || "";
|
|
3389
|
+
/border-collapse\s*:/i.test(o) || t(r, "border-collapse:collapse"), !/border-spacing\s*:/i.test(o) && !r.hasAttribute("cellspacing") && r.setAttribute("cellspacing", "0");
|
|
3313
3390
|
});
|
|
3314
3391
|
const n = i || this.ed.getAttribute("dir") || this.dir();
|
|
3315
|
-
return e.querySelectorAll("table:not([dir])").forEach((
|
|
3316
|
-
|
|
3392
|
+
return e.querySelectorAll("table:not([dir])").forEach((r) => {
|
|
3393
|
+
r.setAttribute("dir", n), /direction\s*:/i.test(r.getAttribute("style") || "") || t(r, `direction:${n}`);
|
|
3317
3394
|
}), `<div dir="${n}" style="direction:${n};text-align:${n === "rtl" ? "right" : "left"}">${e.innerHTML}</div>`;
|
|
3318
3395
|
}
|
|
3319
3396
|
setContent(t) {
|
|
@@ -3329,7 +3406,7 @@ let ji = (j = class {
|
|
|
3329
3406
|
this.ed.focus();
|
|
3330
3407
|
}
|
|
3331
3408
|
async importWordFile(t) {
|
|
3332
|
-
const e = await
|
|
3409
|
+
const e = await Bi(t);
|
|
3333
3410
|
this.recordRevision(), this.setContent(e), this.recordRevision();
|
|
3334
3411
|
}
|
|
3335
3412
|
restoreDraft() {
|
|
@@ -3388,8 +3465,8 @@ let ji = (j = class {
|
|
|
3388
3465
|
t.preventDefault();
|
|
3389
3466
|
const n = document.createElement("p");
|
|
3390
3467
|
n.appendChild(document.createElement("br")), s.after(n), i.remove(), s.firstElementChild || s.remove();
|
|
3391
|
-
const
|
|
3392
|
-
|
|
3468
|
+
const l = document.createRange();
|
|
3469
|
+
l.setStart(n, 0), l.collapse(!0), e.removeAllRanges(), e.addRange(l), this.saveSel(), this.onChange();
|
|
3393
3470
|
}
|
|
3394
3471
|
selectedBlocks() {
|
|
3395
3472
|
const t = window.getSelection();
|
|
@@ -3439,8 +3516,8 @@ let ji = (j = class {
|
|
|
3439
3516
|
s.className = "revprev";
|
|
3440
3517
|
const n = document.createElement("button");
|
|
3441
3518
|
n.type = "button", n.className = "revrestore", n.textContent = this.t("restore");
|
|
3442
|
-
let
|
|
3443
|
-
const
|
|
3519
|
+
let l = this.revisions.length - 1;
|
|
3520
|
+
const r = new Intl.DateTimeFormat(this.lang === "ar" ? "ar-AE" : "en-GB", {
|
|
3444
3521
|
year: "numeric",
|
|
3445
3522
|
month: "short",
|
|
3446
3523
|
day: "numeric",
|
|
@@ -3448,21 +3525,21 @@ let ji = (j = class {
|
|
|
3448
3525
|
minute: "2-digit",
|
|
3449
3526
|
second: "2-digit"
|
|
3450
3527
|
}), o = {}, a = (d) => {
|
|
3451
|
-
|
|
3452
|
-
var
|
|
3453
|
-
return (
|
|
3528
|
+
l = d, this.revisions.forEach((p, m) => {
|
|
3529
|
+
var v;
|
|
3530
|
+
return (v = o[m]) == null ? void 0 : v.classList.toggle("on", m === d);
|
|
3454
3531
|
}), s.innerHTML = this.revisions[d].html, n.disabled = d === this.revisions.length - 1;
|
|
3455
3532
|
};
|
|
3456
3533
|
for (let d = this.revisions.length - 1; d >= 0; d--) {
|
|
3457
3534
|
const p = this.revisions[d], m = document.createElement("button");
|
|
3458
3535
|
m.type = "button";
|
|
3459
|
-
const
|
|
3460
|
-
m.innerHTML = `<span>${
|
|
3536
|
+
const v = (new DOMParser().parseFromString(p.html, "text/html").body.textContent || "").trim(), b = v ? v.split(/\s+/).length : 0, f = d === this.revisions.length - 1;
|
|
3537
|
+
m.innerHTML = `<span>${f ? this.t("currentver") : r.format(new Date(p.time))}</span><span class="wc">${b} ${this.t("words")}</span>`, m.addEventListener("click", () => a(d)), o[d] = m, i.appendChild(m);
|
|
3461
3538
|
}
|
|
3462
3539
|
i.append(n), n.addEventListener("click", () => {
|
|
3463
|
-
const d = this.revisions[
|
|
3540
|
+
const d = this.revisions[l];
|
|
3464
3541
|
d && (this.recordRevision(), this.setContent(d.html), this.recordRevision(), this.closeDlg());
|
|
3465
|
-
}), e.append(i, s), t.appendChild(e), a(
|
|
3542
|
+
}), e.append(i, s), t.appendChild(e), a(l);
|
|
3466
3543
|
});
|
|
3467
3544
|
}
|
|
3468
3545
|
/* ---------------------------------------------------------- popups / menus */
|
|
@@ -3499,10 +3576,10 @@ let ji = (j = class {
|
|
|
3499
3576
|
n.className = "pop sub", n.dir = this.dir(), t.subBuild ? t.subBuild(n) : t.sub && this.menuItems(n, t.sub), n.addEventListener("mousedown", (a) => {
|
|
3500
3577
|
a.target.tagName !== "INPUT" && a.preventDefault();
|
|
3501
3578
|
}), document.body.appendChild(n);
|
|
3502
|
-
let
|
|
3503
|
-
|
|
3579
|
+
let r = this.dir() === "rtl" ? i.left - n.offsetWidth + 2 : i.right - 2;
|
|
3580
|
+
r = Math.max(8, Math.min(r + scrollX, scrollX + innerWidth - n.offsetWidth - 8));
|
|
3504
3581
|
let o = i.top + scrollY - 6;
|
|
3505
|
-
o = Math.max(8 + scrollY, Math.min(o, scrollY + innerHeight - n.offsetHeight - 8)), n.style.left =
|
|
3582
|
+
o = Math.max(8 + scrollY, Math.min(o, scrollY + innerHeight - n.offsetHeight - 8)), n.style.left = r + "px", n.style.top = o + "px", this.subStack.push(n);
|
|
3506
3583
|
}
|
|
3507
3584
|
popup(t, e, i) {
|
|
3508
3585
|
if (this.openPop && this.popAnchor === t) {
|
|
@@ -3514,8 +3591,8 @@ let ji = (j = class {
|
|
|
3514
3591
|
s.className = "pop" + (i ? " " + i : ""), s.dir = this.dir(), e(s), document.body.appendChild(s);
|
|
3515
3592
|
const n = t.getBoundingClientRect();
|
|
3516
3593
|
s.style.minWidth = Math.max(160, Math.round(n.width)) + "px";
|
|
3517
|
-
let
|
|
3518
|
-
|
|
3594
|
+
let l = n.bottom + scrollY + 2;
|
|
3595
|
+
l = Math.max(8 + scrollY, Math.min(l, scrollY + innerHeight - s.offsetHeight - 8)), s.style.top = l + "px";
|
|
3519
3596
|
let o = this.dir() === "rtl" ? n.right - s.offsetWidth : n.left;
|
|
3520
3597
|
o = Math.max(8, Math.min(o + scrollX, scrollX + innerWidth - s.offsetWidth - 8)), s.style.left = o + "px", s.addEventListener("mousedown", (a) => {
|
|
3521
3598
|
a.target.tagName !== "INPUT" && a.preventDefault();
|
|
@@ -3531,18 +3608,18 @@ let ji = (j = class {
|
|
|
3531
3608
|
n.className = "mi" + (i.on ? " on" : ""), n.innerHTML = `<span class="ic">${i.icon || ""}</span><span class="prev" ${i.previewStyle ? `style="${i.previewStyle}"` : ""}>${i.label}</span>${i.shortcut ? `<span class="sc">${i.shortcut}</span>` : ""}${s ? `<span class="subarrow">${h.chev}</span>` : ""}`, n.addEventListener("click", () => {
|
|
3532
3609
|
i.action && (this.closePop(), i.action());
|
|
3533
3610
|
}), n.addEventListener("mouseenter", () => {
|
|
3534
|
-
var
|
|
3535
|
-
s ? this.openSubFor(i, n) : this.closeSubFrom(this.subLevelOf(t)), (
|
|
3611
|
+
var l;
|
|
3612
|
+
s ? this.openSubFor(i, n) : this.closeSubFrom(this.subLevelOf(t)), (l = i.hover) == null || l.call(i, !0);
|
|
3536
3613
|
}), n.addEventListener("mouseleave", () => {
|
|
3537
|
-
var
|
|
3538
|
-
return (
|
|
3614
|
+
var l;
|
|
3615
|
+
return (l = i.hover) == null ? void 0 : l.call(i, !1);
|
|
3539
3616
|
}), t.appendChild(n);
|
|
3540
3617
|
});
|
|
3541
3618
|
}
|
|
3542
3619
|
/* ---------------------------------------------------------- toolbar builders */
|
|
3543
3620
|
tbtn(t, e, i, s) {
|
|
3544
3621
|
const n = document.createElement("button");
|
|
3545
|
-
return n.className = "tbtn", n.type = "button", n.title = e, n.innerHTML = t, s && (n.dataset.id = s), n.addEventListener("mousedown", (
|
|
3622
|
+
return n.className = "tbtn", n.type = "button", n.title = e, n.innerHTML = t, s && (n.dataset.id = s), n.addEventListener("mousedown", (l) => l.preventDefault()), n.addEventListener("click", i), n;
|
|
3546
3623
|
}
|
|
3547
3624
|
/** Font-size increase / decrease step button. */
|
|
3548
3625
|
stepBtn(t) {
|
|
@@ -3558,10 +3635,10 @@ let ji = (j = class {
|
|
|
3558
3635
|
colorChips() {
|
|
3559
3636
|
const t = (s) => {
|
|
3560
3637
|
const n = document.createElement("button");
|
|
3561
|
-
return n.type = "button", n.className = "cchip", n.title = s, n.addEventListener("mousedown", (
|
|
3562
|
-
|
|
3638
|
+
return n.type = "button", n.className = "cchip", n.title = s, n.addEventListener("mousedown", (l) => {
|
|
3639
|
+
l.preventDefault(), this.saveSel();
|
|
3563
3640
|
}), n;
|
|
3564
|
-
}, e =
|
|
3641
|
+
}, e = li.map((s) => {
|
|
3565
3642
|
const n = t(this.t("forecolor"));
|
|
3566
3643
|
return n.style.background = s, n.addEventListener("click", () => this.applyColor("fore", s)), n;
|
|
3567
3644
|
}), i = t(this.t("forecolor"));
|
|
@@ -3575,17 +3652,17 @@ let ji = (j = class {
|
|
|
3575
3652
|
}
|
|
3576
3653
|
tsel(t, e, i, s) {
|
|
3577
3654
|
const n = document.createElement("button");
|
|
3578
|
-
return n.className = "tsel " + t, n.type = "button", n.dataset.id = e, n.innerHTML = `<span class="lbl empty">${i || ""}</span>${h.chev}`, n.addEventListener("mousedown", (
|
|
3579
|
-
|
|
3655
|
+
return n.className = "tsel " + t, n.type = "button", n.dataset.id = e, n.innerHTML = `<span class="lbl empty">${i || ""}</span>${h.chev}`, n.addEventListener("mousedown", (l) => {
|
|
3656
|
+
l.preventDefault(), this.saveSel();
|
|
3580
3657
|
}), n.addEventListener("click", () => s(n)), n;
|
|
3581
3658
|
}
|
|
3582
3659
|
setListStyle(t, e) {
|
|
3583
|
-
var n,
|
|
3660
|
+
var n, l;
|
|
3584
3661
|
this.restoreSel();
|
|
3585
3662
|
const i = window.getSelection();
|
|
3586
3663
|
if (!i) return;
|
|
3587
3664
|
let s = (n = this.closestBlock(i.anchorNode)) == null ? void 0 : n.closest(t);
|
|
3588
|
-
s || (this.exec(t === "ol" ? "insertOrderedList" : "insertUnorderedList"), s = (
|
|
3665
|
+
s || (this.exec(t === "ol" ? "insertOrderedList" : "insertUnorderedList"), s = (l = this.closestBlock(i.anchorNode)) == null ? void 0 : l.closest(t)), s && (s.style.listStyleType = e), this.saveSel(), this.onChange();
|
|
3589
3666
|
}
|
|
3590
3667
|
listMenu(t, e) {
|
|
3591
3668
|
var a;
|
|
@@ -3597,7 +3674,7 @@ let ji = (j = class {
|
|
|
3597
3674
|
] : [
|
|
3598
3675
|
["circle", h.ul_circle],
|
|
3599
3676
|
["square", h.ul_square]
|
|
3600
|
-
], n = this.tArr(e === "ol" ? "liststyles_ol" : "liststyles_ul").slice(1),
|
|
3677
|
+
], n = this.tArr(e === "ol" ? "liststyles_ol" : "liststyles_ul").slice(1), l = window.getSelection(), r = l ? (a = this.closestBlock(l.anchorNode)) == null ? void 0 : a.closest(e) : null, o = r ? r.style.listStyleType : "";
|
|
3601
3678
|
this.popup(t, (d) => {
|
|
3602
3679
|
this.menuItems(d, [
|
|
3603
3680
|
{
|
|
@@ -3608,11 +3685,11 @@ let ji = (j = class {
|
|
|
3608
3685
|
}
|
|
3609
3686
|
]), d.insertAdjacentHTML("beforeend", '<div class="sep"></div>');
|
|
3610
3687
|
const p = document.createElement("div");
|
|
3611
|
-
p.className = "mi-grid", s.forEach(([m,
|
|
3612
|
-
const
|
|
3613
|
-
|
|
3688
|
+
p.className = "mi-grid", s.forEach(([m, v], b) => {
|
|
3689
|
+
const f = document.createElement("button");
|
|
3690
|
+
f.className = "mi" + (o === m ? " on" : ""), f.innerHTML = `<span class="ic">${v}</span><span class="prev">${n[b]}</span>`, f.addEventListener("click", () => {
|
|
3614
3691
|
this.closePop(), this.setListStyle(e, m);
|
|
3615
|
-
}), p.appendChild(
|
|
3692
|
+
}), p.appendChild(f);
|
|
3616
3693
|
}), d.appendChild(p);
|
|
3617
3694
|
});
|
|
3618
3695
|
}
|
|
@@ -3621,7 +3698,7 @@ let ji = (j = class {
|
|
|
3621
3698
|
* table cell-background menu all show the identical popup. */
|
|
3622
3699
|
buildPaletteInto(t, e, i) {
|
|
3623
3700
|
const s = document.createElement("div");
|
|
3624
|
-
s.className = "cpal",
|
|
3701
|
+
s.className = "cpal", oi.forEach((p) => {
|
|
3625
3702
|
const m = document.createElement("button");
|
|
3626
3703
|
m.type = "button", m.style.background = p, m.title = p, m.addEventListener("click", () => {
|
|
3627
3704
|
this.closePop(), i(p);
|
|
@@ -3629,8 +3706,8 @@ let ji = (j = class {
|
|
|
3629
3706
|
}), t.appendChild(s), t.insertAdjacentHTML("beforeend", '<div class="sep"></div>');
|
|
3630
3707
|
const n = document.createElement("div");
|
|
3631
3708
|
n.className = "cfoot";
|
|
3632
|
-
const
|
|
3633
|
-
|
|
3709
|
+
const l = /^#[0-9a-f]{6}$/i.test(e) ? e : "#000000", r = document.createElement("div");
|
|
3710
|
+
r.className = "cswatch cur", r.title = this.t("currentcolor"), r.style.background = l, r.innerHTML = h.check;
|
|
3634
3711
|
const o = document.createElement("button");
|
|
3635
3712
|
o.type = "button", o.className = "cswatch nocolor", o.title = this.t("removecolor"), o.addEventListener("click", () => {
|
|
3636
3713
|
this.closePop(), i(null);
|
|
@@ -3638,9 +3715,9 @@ let ji = (j = class {
|
|
|
3638
3715
|
const a = document.createElement("label");
|
|
3639
3716
|
a.className = "cswatch cwheel", a.title = this.t("customcolor"), a.innerHTML = h.palette;
|
|
3640
3717
|
const d = document.createElement("input");
|
|
3641
|
-
d.type = "color", d.value =
|
|
3718
|
+
d.type = "color", d.value = l, d.addEventListener("change", () => {
|
|
3642
3719
|
this.closePop(), i(d.value);
|
|
3643
|
-
}), a.appendChild(d), n.append(
|
|
3720
|
+
}), a.appendChild(d), n.append(r, o, a), t.appendChild(n);
|
|
3644
3721
|
}
|
|
3645
3722
|
colorMenu(t, e) {
|
|
3646
3723
|
this.popup(
|
|
@@ -3670,7 +3747,7 @@ let ji = (j = class {
|
|
|
3670
3747
|
this.popup(t, (e) => this.menuItems(e, this.fontItems()));
|
|
3671
3748
|
}
|
|
3672
3749
|
sizeItems() {
|
|
3673
|
-
return
|
|
3750
|
+
return si.map((t) => ({
|
|
3674
3751
|
label: t,
|
|
3675
3752
|
on: this.currentSize() === t,
|
|
3676
3753
|
action: () => this.applyFontSize(t)
|
|
@@ -3686,19 +3763,19 @@ let ji = (j = class {
|
|
|
3686
3763
|
const t = window.getSelection();
|
|
3687
3764
|
if (!t) return;
|
|
3688
3765
|
if (!t.rangeCount) {
|
|
3689
|
-
const
|
|
3690
|
-
|
|
3766
|
+
const l = document.createRange();
|
|
3767
|
+
l.selectNodeContents(this.ed), l.collapse(!0), t.addRange(l);
|
|
3691
3768
|
}
|
|
3692
3769
|
if (!t.isCollapsed) return;
|
|
3693
3770
|
const e = t.getRangeAt(0), i = e.startContainer;
|
|
3694
3771
|
if (i.nodeType === 3) {
|
|
3695
|
-
const
|
|
3696
|
-
let
|
|
3697
|
-
for (;
|
|
3698
|
-
for (; o <
|
|
3699
|
-
if (o >
|
|
3772
|
+
const l = i.data;
|
|
3773
|
+
let r = e.startOffset, o = e.startOffset;
|
|
3774
|
+
for (; r > 0 && /\S/.test(l[r - 1]); ) r--;
|
|
3775
|
+
for (; o < l.length && /\S/.test(l[o]); ) o++;
|
|
3776
|
+
if (o > r) {
|
|
3700
3777
|
const a = document.createRange();
|
|
3701
|
-
a.setStart(i,
|
|
3778
|
+
a.setStart(i, r), a.setEnd(i, o), t.removeAllRanges(), t.addRange(a), this.savedRange = a.cloneRange();
|
|
3702
3779
|
return;
|
|
3703
3780
|
}
|
|
3704
3781
|
}
|
|
@@ -3723,7 +3800,7 @@ let ji = (j = class {
|
|
|
3723
3800
|
this.saveSel(), this.refreshState(), this.onChange();
|
|
3724
3801
|
}
|
|
3725
3802
|
stepFontSize(t) {
|
|
3726
|
-
const e = parseInt(this.currentSize(), 10) || 14, i = Math.min(
|
|
3803
|
+
const e = parseInt(this.currentSize(), 10) || 14, i = Math.min(ri, Math.max(ni, e + t));
|
|
3727
3804
|
i !== e && this.applyFontSize(i + "px");
|
|
3728
3805
|
}
|
|
3729
3806
|
/* ------------------------------------------------ case / spacing / link */
|
|
@@ -3732,14 +3809,14 @@ let ji = (j = class {
|
|
|
3732
3809
|
const e = window.getSelection();
|
|
3733
3810
|
if (!e || !e.rangeCount || e.isCollapsed) return;
|
|
3734
3811
|
const i = e.getRangeAt(0), s = document.createTreeWalker(this.ed, NodeFilter.SHOW_TEXT), n = [];
|
|
3735
|
-
let
|
|
3736
|
-
for (;
|
|
3737
|
-
n.forEach((
|
|
3738
|
-
const o =
|
|
3812
|
+
let l;
|
|
3813
|
+
for (; l = s.nextNode(); ) i.intersectsNode(l) && n.push(l);
|
|
3814
|
+
n.forEach((r) => {
|
|
3815
|
+
const o = r === i.startContainer ? i.startOffset : 0, a = r === i.endContainer ? i.endOffset : r.data.length;
|
|
3739
3816
|
if (a <= o) return;
|
|
3740
|
-
const d =
|
|
3817
|
+
const d = r.data.slice(o, a);
|
|
3741
3818
|
let p = d;
|
|
3742
|
-
t === "lower" ? p = d.toLowerCase() : t === "upper" ? p = d.toUpperCase() : p = d.replace(/(^|\s)(\S)/g, (m,
|
|
3819
|
+
t === "lower" ? p = d.toLowerCase() : t === "upper" ? p = d.toUpperCase() : p = d.replace(/(^|\s)(\S)/g, (m, v, b) => v + b.toUpperCase()), r.replaceData(o, a - o, p);
|
|
3743
3820
|
}), this.saveSel(), this.refreshState(), this.onChange();
|
|
3744
3821
|
}
|
|
3745
3822
|
caseItems() {
|
|
@@ -3775,13 +3852,13 @@ let ji = (j = class {
|
|
|
3775
3852
|
];
|
|
3776
3853
|
}
|
|
3777
3854
|
lineHeightMenu(t) {
|
|
3778
|
-
this.popup(t, (e) => this.menuItems(e, this.blockStyleItems("lineHeight",
|
|
3855
|
+
this.popup(t, (e) => this.menuItems(e, this.blockStyleItems("lineHeight", ee)));
|
|
3779
3856
|
}
|
|
3780
3857
|
wordSpacingMenu(t) {
|
|
3781
|
-
this.popup(t, (e) => this.menuItems(e, this.blockStyleItems("wordSpacing",
|
|
3858
|
+
this.popup(t, (e) => this.menuItems(e, this.blockStyleItems("wordSpacing", ie)));
|
|
3782
3859
|
}
|
|
3783
3860
|
letterSpacingMenu(t) {
|
|
3784
|
-
this.popup(t, (e) => this.menuItems(e, this.blockStyleItems("letterSpacing",
|
|
3861
|
+
this.popup(t, (e) => this.menuItems(e, this.blockStyleItems("letterSpacing", se)));
|
|
3785
3862
|
}
|
|
3786
3863
|
closestAnchor() {
|
|
3787
3864
|
const t = window.getSelection();
|
|
@@ -3827,14 +3904,14 @@ let ji = (j = class {
|
|
|
3827
3904
|
(s) => {
|
|
3828
3905
|
const n = document.createElement("div");
|
|
3829
3906
|
n.style.cssText = "display:flex;align-items:center;gap:10px;margin:10px 0;min-width:360px";
|
|
3830
|
-
const
|
|
3831
|
-
|
|
3907
|
+
const l = document.createElement("span");
|
|
3908
|
+
l.style.cssText = "width:60px;color:#556;flex:none", l.textContent = this.t("linkurl"), e = document.createElement("input"), e.type = "url", e.placeholder = "https://", e.style.cssText = "flex:1;border:1px solid #cfd6df;border-radius:6px;padding:7px 9px;font:14px inherit", e.value = (t == null ? void 0 : t.getAttribute("href")) || "", n.append(l, e), s.appendChild(n), setTimeout(() => e.focus(), 0);
|
|
3832
3909
|
},
|
|
3833
3910
|
i
|
|
3834
3911
|
);
|
|
3835
3912
|
}
|
|
3836
3913
|
blockItems() {
|
|
3837
|
-
return
|
|
3914
|
+
return re.map(([t]) => ({
|
|
3838
3915
|
label: this.blockLabel(t),
|
|
3839
3916
|
previewStyle: t.startsWith("h") ? `font-weight:700;font-size:${22 - 2 * +t[1]}px` : t === "pre" ? "font-family:monospace" : "",
|
|
3840
3917
|
on: this.currentBlock() === t,
|
|
@@ -3871,15 +3948,15 @@ let ji = (j = class {
|
|
|
3871
3948
|
s.className = "tgrid";
|
|
3872
3949
|
const n = document.createElement("div");
|
|
3873
3950
|
n.className = "tgridlbl", n.textContent = "1 × 1";
|
|
3874
|
-
const
|
|
3875
|
-
for (let
|
|
3951
|
+
const l = [];
|
|
3952
|
+
for (let r = 0; r < 8; r++)
|
|
3876
3953
|
for (let o = 0; o < 10; o++) {
|
|
3877
3954
|
const a = document.createElement("span");
|
|
3878
|
-
a.dataset.r = String(
|
|
3879
|
-
|
|
3955
|
+
a.dataset.r = String(r), a.dataset.c = String(o), a.addEventListener("mouseenter", () => {
|
|
3956
|
+
l.forEach((d) => d.classList.toggle("hot", +d.dataset.r <= r && +d.dataset.c <= o)), n.textContent = o + 1 + " × " + (r + 1);
|
|
3880
3957
|
}), a.addEventListener("click", () => {
|
|
3881
|
-
this.closePop(), this.insertTable(
|
|
3882
|
-
}),
|
|
3958
|
+
this.closePop(), this.insertTable(r + 1, o + 1), e == null || e();
|
|
3959
|
+
}), l.push(a), s.appendChild(a);
|
|
3883
3960
|
}
|
|
3884
3961
|
i.append(s, n), t.appendChild(i);
|
|
3885
3962
|
}
|
|
@@ -3964,17 +4041,17 @@ let ji = (j = class {
|
|
|
3964
4041
|
}
|
|
3965
4042
|
buildToolbar() {
|
|
3966
4043
|
this.toolbar.innerHTML = "";
|
|
3967
|
-
const t = this.options.toolbar === !0 ?
|
|
4044
|
+
const t = this.options.toolbar === !0 ? ti : this.options.toolbar, e = this.buildToolbarRegistry();
|
|
3968
4045
|
this.parseToolbarString(t).forEach((i) => {
|
|
3969
4046
|
const s = [];
|
|
3970
4047
|
i.forEach((n) => {
|
|
3971
|
-
const
|
|
3972
|
-
if (!
|
|
4048
|
+
const l = e[n];
|
|
4049
|
+
if (!l) {
|
|
3973
4050
|
console.warn(`FableEditor: unknown toolbar item "${n}"`);
|
|
3974
4051
|
return;
|
|
3975
4052
|
}
|
|
3976
|
-
const
|
|
3977
|
-
Array.isArray(
|
|
4053
|
+
const r = l();
|
|
4054
|
+
Array.isArray(r) ? s.push(...r) : s.push(r);
|
|
3978
4055
|
}), s.length && this.toolbar.appendChild(this.group(...s));
|
|
3979
4056
|
}), this.tbrMore = this.tbtn(h.more, this.t("more"), () => {
|
|
3980
4057
|
this.tbrExpanded = !this.tbrExpanded, this.updateToolbarOverflow();
|
|
@@ -4074,9 +4151,9 @@ let ji = (j = class {
|
|
|
4074
4151
|
{ label: this.t("fontsize"), subBuild: (s) => this.menuItems(s, this.sizeItems()) },
|
|
4075
4152
|
{ label: this.t("blocks"), subBuild: (s) => this.menuItems(s, this.blockItems()) },
|
|
4076
4153
|
{ label: this.t("align"), subBuild: (s) => this.menuItems(s, this.alignItems()) },
|
|
4077
|
-
{ label: this.t("lineheight"), icon: h.lineheight, subBuild: (s) => this.menuItems(s, this.blockStyleItems("lineHeight",
|
|
4078
|
-
{ label: this.t("wordspacing"), icon: h.wordspacing, subBuild: (s) => this.menuItems(s, this.blockStyleItems("wordSpacing",
|
|
4079
|
-
{ label: this.t("letterspacing"), icon: h.letterspacing, subBuild: (s) => this.menuItems(s, this.blockStyleItems("letterSpacing",
|
|
4154
|
+
{ label: this.t("lineheight"), icon: h.lineheight, subBuild: (s) => this.menuItems(s, this.blockStyleItems("lineHeight", ee)) },
|
|
4155
|
+
{ label: this.t("wordspacing"), icon: h.wordspacing, subBuild: (s) => this.menuItems(s, this.blockStyleItems("wordSpacing", ie)) },
|
|
4156
|
+
{ label: this.t("letterspacing"), icon: h.letterspacing, subBuild: (s) => this.menuItems(s, this.blockStyleItems("letterSpacing", se)) },
|
|
4080
4157
|
"|",
|
|
4081
4158
|
{ label: this.t("forecolor"), icon: h.palette, subBuild: (s) => this.buildPaletteInto(s, this.foreColor, (n) => this.applyColor("fore", n)) },
|
|
4082
4159
|
{ label: this.t("backcolor"), icon: h.backcolor, subBuild: (s) => this.buildPaletteInto(s, this.backColor, (n) => this.applyColor("back", n)) },
|
|
@@ -4146,7 +4223,7 @@ let ji = (j = class {
|
|
|
4146
4223
|
{ label: this.t("deltable"), icon: h.trash, action: () => this.tableOp("deltable") }
|
|
4147
4224
|
],
|
|
4148
4225
|
help: [this.mItem("helpttl", h.helpic, () => this.helpDlg(), "Alt+0")]
|
|
4149
|
-
}, e = this.options.menubar === !0 ?
|
|
4226
|
+
}, e = this.options.menubar === !0 ? ei : this.options.menubar, i = /* @__PURE__ */ new Set();
|
|
4150
4227
|
e.split(/\s+/).filter(Boolean).forEach((s) => {
|
|
4151
4228
|
if (i.has(s)) return;
|
|
4152
4229
|
if (i.add(s), !t[s]) {
|
|
@@ -4154,9 +4231,9 @@ let ji = (j = class {
|
|
|
4154
4231
|
return;
|
|
4155
4232
|
}
|
|
4156
4233
|
const n = document.createElement("button");
|
|
4157
|
-
n.type = "button", n.textContent = this.t(s), n.dataset.menuKey = s, n.addEventListener("mousedown", (
|
|
4158
|
-
|
|
4159
|
-
}), n.addEventListener("click", () => this.popup(n, (
|
|
4234
|
+
n.type = "button", n.textContent = this.t(s), n.dataset.menuKey = s, n.addEventListener("mousedown", (l) => {
|
|
4235
|
+
l.preventDefault(), this.saveSel();
|
|
4236
|
+
}), n.addEventListener("click", () => this.popup(n, (l) => this.menuItems(l, t[s]))), this.menubar.appendChild(n);
|
|
4160
4237
|
});
|
|
4161
4238
|
}
|
|
4162
4239
|
/* ---------------------------------------------------------- table ops */
|
|
@@ -4167,23 +4244,23 @@ let ji = (j = class {
|
|
|
4167
4244
|
if (!e) return;
|
|
4168
4245
|
const i = ((o = this.closestBlock(e.anchorNode)) == null ? void 0 : o.closest("td,th")) || (e.anchorNode && e.anchorNode.nodeType === 1 ? (d = (a = e.anchorNode).closest) == null ? void 0 : d.call(a, "td,th") : null);
|
|
4169
4246
|
if (!i) return;
|
|
4170
|
-
const s = i.parentElement, n = i.closest("table"),
|
|
4247
|
+
const s = i.parentElement, n = i.closest("table"), l = Array.from(s.children).indexOf(i), r = () => {
|
|
4171
4248
|
const p = s.cloneNode(!1);
|
|
4172
4249
|
return Array.from(s.children).forEach((m) => {
|
|
4173
|
-
const
|
|
4174
|
-
|
|
4250
|
+
const v = document.createElement("td"), b = m.getAttribute("style");
|
|
4251
|
+
b && v.setAttribute("style", b), v.style.removeProperty("background-color"), v.innerHTML = "<br>", p.appendChild(v);
|
|
4175
4252
|
}), p;
|
|
4176
4253
|
};
|
|
4177
|
-
if (t === "rowabove" && s.before(
|
|
4254
|
+
if (t === "rowabove" && s.before(r()), t === "rowbelow" && s.after(r()), t === "delrow") {
|
|
4178
4255
|
const p = s.parentElement;
|
|
4179
4256
|
s.remove(), p.querySelector("tr") || n.remove();
|
|
4180
4257
|
}
|
|
4181
4258
|
(t === "colbefore" || t === "colafter") && n.querySelectorAll("tr").forEach((p) => {
|
|
4182
|
-
const m = p.children[Math.min(
|
|
4183
|
-
|
|
4259
|
+
const m = p.children[Math.min(l, p.children.length - 1)], v = document.createElement("td"), b = m.getAttribute("style");
|
|
4260
|
+
b && v.setAttribute("style", b), v.style.removeProperty("width"), v.style.removeProperty("background-color"), v.innerHTML = "<br>", t === "colbefore" ? m.before(v) : m.after(v);
|
|
4184
4261
|
}), t === "delcol" && (n.querySelectorAll("tr").forEach((p) => {
|
|
4185
4262
|
var m;
|
|
4186
|
-
return (m = p.children[
|
|
4263
|
+
return (m = p.children[l]) == null ? void 0 : m.remove();
|
|
4187
4264
|
}), n.querySelector("td,th") || n.remove()), t === "deltable" && n.remove(), this.onChange(), this.positionTableHandles();
|
|
4188
4265
|
}
|
|
4189
4266
|
/** Reorders the current row/column: 'rowup'/'rowdown' swap the caret's row with
|
|
@@ -4209,10 +4286,10 @@ let ji = (j = class {
|
|
|
4209
4286
|
const a = o.children[n], d = o.children[n + 1];
|
|
4210
4287
|
a && d && d.after(a);
|
|
4211
4288
|
});
|
|
4212
|
-
const
|
|
4213
|
-
|
|
4214
|
-
const
|
|
4215
|
-
|
|
4289
|
+
const l = document.createRange();
|
|
4290
|
+
l.selectNodeContents(e), l.collapse(!0);
|
|
4291
|
+
const r = window.getSelection();
|
|
4292
|
+
r && (r.removeAllRanges(), r.addRange(l)), this.saveSel(), this.onChange(), this.positionTableHandles(), this.positionCellMarker();
|
|
4216
4293
|
}
|
|
4217
4294
|
/** Align the whole table via auto margins — same semantics as the align
|
|
4218
4295
|
* field in the table-properties dialog. */
|
|
@@ -4249,26 +4326,26 @@ let ji = (j = class {
|
|
|
4249
4326
|
tablePropsDlg() {
|
|
4250
4327
|
const t = this.tblActive;
|
|
4251
4328
|
if (!t) return;
|
|
4252
|
-
let e, i, s, n,
|
|
4253
|
-
const
|
|
4329
|
+
let e, i, s, n, l;
|
|
4330
|
+
const r = "display:flex;align-items:center;gap:10px;margin:10px 0", o = "width:120px;color:#556;flex:none", a = "flex:1;border:1px solid #cfd6df;border-radius:6px;padding:7px 9px;font:14px inherit", d = t.querySelector("td,th"), p = t.style.width || "", m = d && d.style.padding ? parseFloat(d.style.padding) : "", v = t.style.borderSpacing ? parseFloat(t.style.borderSpacing) : "", b = t.style.borderWidth ? parseFloat(t.style.borderWidth) : "", f = t.style.marginLeft, y = t.style.marginRight, C = f === "auto" && y === "auto" ? "center" : f === "auto" ? "right" : y === "auto" && f === "0" ? "left" : "";
|
|
4254
4331
|
this.dialog(
|
|
4255
4332
|
this.t("tablepropsttl"),
|
|
4256
4333
|
(E) => {
|
|
4257
4334
|
const I = (A, $) => {
|
|
4258
4335
|
const Z = document.createElement("div");
|
|
4259
|
-
Z.style.cssText =
|
|
4336
|
+
Z.style.cssText = r;
|
|
4260
4337
|
const F = document.createElement("span");
|
|
4261
4338
|
F.style.cssText = o, F.textContent = this.t(A), Z.append(F, $), E.appendChild(Z);
|
|
4262
4339
|
};
|
|
4263
|
-
e = document.createElement("input"), e.type = "text", e.style.cssText = a, e.placeholder = "e.g. 600px or 100%", e.value = p, I("tblwidth", e), i = document.createElement("input"), i.type = "number", i.min = "0", i.style.cssText = a, i.value = String(m), I("tblcellpadding", i), s = document.createElement("input"), s.type = "number", s.min = "0", s.style.cssText = a, s.value = String(
|
|
4340
|
+
e = document.createElement("input"), e.type = "text", e.style.cssText = a, e.placeholder = "e.g. 600px or 100%", e.value = p, I("tblwidth", e), i = document.createElement("input"), i.type = "number", i.min = "0", i.style.cssText = a, i.value = String(m), I("tblcellpadding", i), s = document.createElement("input"), s.type = "number", s.min = "0", s.style.cssText = a, s.value = String(v), I("tblcellspacing", s), n = document.createElement("input"), n.type = "number", n.min = "0", n.style.cssText = a, n.value = String(b), I("tblborder", n), l = document.createElement("select"), l.style.cssText = a, [
|
|
4264
4341
|
["", "alignnone"],
|
|
4265
4342
|
["left", "alignleft"],
|
|
4266
4343
|
["center", "aligncenter"],
|
|
4267
4344
|
["right", "alignright"]
|
|
4268
4345
|
].forEach(([A, $]) => {
|
|
4269
4346
|
const Z = document.createElement("option");
|
|
4270
|
-
Z.value = A, Z.textContent = this.t($), A ===
|
|
4271
|
-
}), I("tblalign",
|
|
4347
|
+
Z.value = A, Z.textContent = this.t($), A === C && (Z.selected = !0), l.appendChild(Z);
|
|
4348
|
+
}), I("tblalign", l);
|
|
4272
4349
|
},
|
|
4273
4350
|
[
|
|
4274
4351
|
{ label: this.t("cancel"), action: () => this.closeDlg() },
|
|
@@ -4281,7 +4358,7 @@ let ji = (j = class {
|
|
|
4281
4358
|
cellpadding: i.value.trim(),
|
|
4282
4359
|
cellspacing: s.value.trim(),
|
|
4283
4360
|
border: n.value.trim(),
|
|
4284
|
-
align:
|
|
4361
|
+
align: l.value
|
|
4285
4362
|
}), this.closeDlg(), this.onChange(), this.positionTableHandles();
|
|
4286
4363
|
}
|
|
4287
4364
|
}
|
|
@@ -4320,8 +4397,8 @@ let ji = (j = class {
|
|
|
4320
4397
|
formSelect(t, e) {
|
|
4321
4398
|
const i = document.createElement("select");
|
|
4322
4399
|
return i.style.cssText = "flex:1;border:1px solid #cfd6df;border-radius:6px;padding:7px 9px;font:14px inherit;background:#fff", t.forEach(([s, n]) => {
|
|
4323
|
-
const
|
|
4324
|
-
|
|
4400
|
+
const l = document.createElement("option");
|
|
4401
|
+
l.value = s, l.textContent = n, s === e && (l.selected = !0), i.appendChild(l);
|
|
4325
4402
|
}), i;
|
|
4326
4403
|
}
|
|
4327
4404
|
formBg(t) {
|
|
@@ -4331,8 +4408,8 @@ let ji = (j = class {
|
|
|
4331
4408
|
s.type = "color", s.value = i || "#ffffff", s.style.cssText = "width:36px;height:29px;border:1px solid #cfd6df;border-radius:4px;padding:1px;background:none;cursor:pointer";
|
|
4332
4409
|
const n = document.createElement("label");
|
|
4333
4410
|
n.style.cssText = "display:flex;align-items:center;gap:6px;cursor:pointer;color:#556";
|
|
4334
|
-
const
|
|
4335
|
-
return
|
|
4411
|
+
const l = document.createElement("input");
|
|
4412
|
+
return l.type = "checkbox", l.checked = !!i, n.append(l, document.createTextNode(this.t("fill"))), s.addEventListener("input", () => l.checked = !0), e.append(s, n), { wrap: e, color: s, fill: l };
|
|
4336
4413
|
}
|
|
4337
4414
|
setOrClear(t, e, i) {
|
|
4338
4415
|
i ? t.style.setProperty(e, /^(width|height)$/.test(e) && /^\d+$/.test(i) ? i + "px" : i) : t.style.removeProperty(e);
|
|
@@ -4343,11 +4420,11 @@ let ji = (j = class {
|
|
|
4343
4420
|
alert(this.t("nocell"));
|
|
4344
4421
|
return;
|
|
4345
4422
|
}
|
|
4346
|
-
let e, i, s, n,
|
|
4423
|
+
let e, i, s, n, l;
|
|
4347
4424
|
this.dialog(
|
|
4348
4425
|
this.t("cellprops").replace("…", ""),
|
|
4349
|
-
(
|
|
4350
|
-
e = this.formInput(t.style.width, "e.g. 120px / 25%"), this.formRow(
|
|
4426
|
+
(r) => {
|
|
4427
|
+
e = this.formInput(t.style.width, "e.g. 120px / 25%"), this.formRow(r, this.t("tblwidth"), e), i = this.formInput(t.style.height, "e.g. 40px"), this.formRow(r, this.t("tblheight"), i), s = this.formSelect(
|
|
4351
4428
|
[
|
|
4352
4429
|
["", this.t("alignnone")],
|
|
4353
4430
|
["left", this.t("alignleft")],
|
|
@@ -4355,7 +4432,7 @@ let ji = (j = class {
|
|
|
4355
4432
|
["right", this.t("alignright")]
|
|
4356
4433
|
],
|
|
4357
4434
|
t.style.textAlign || ""
|
|
4358
|
-
), this.formRow(
|
|
4435
|
+
), this.formRow(r, this.t("tblalign"), s), n = this.formSelect(
|
|
4359
4436
|
[
|
|
4360
4437
|
["", this.t("alignnone")],
|
|
4361
4438
|
["top", this.t("valigntop")],
|
|
@@ -4363,7 +4440,7 @@ let ji = (j = class {
|
|
|
4363
4440
|
["bottom", this.t("valignbottom")]
|
|
4364
4441
|
],
|
|
4365
4442
|
t.style.verticalAlign || ""
|
|
4366
|
-
), this.formRow(
|
|
4443
|
+
), this.formRow(r, this.t("valign"), n), l = this.formBg(t.style.backgroundColor || ""), this.formRow(r, this.t("backcolor"), l.wrap);
|
|
4367
4444
|
},
|
|
4368
4445
|
[
|
|
4369
4446
|
{ label: this.t("cancel"), action: () => this.closeDlg() },
|
|
@@ -4371,7 +4448,7 @@ let ji = (j = class {
|
|
|
4371
4448
|
label: this.t("save"),
|
|
4372
4449
|
primary: !0,
|
|
4373
4450
|
action: () => {
|
|
4374
|
-
this.setOrClear(t, "width", e.value.trim()), this.setOrClear(t, "height", i.value.trim()), this.setOrClear(t, "text-align", s.value), this.setOrClear(t, "vertical-align", n.value), this.setOrClear(t, "background-color",
|
|
4451
|
+
this.setOrClear(t, "width", e.value.trim()), this.setOrClear(t, "height", i.value.trim()), this.setOrClear(t, "text-align", s.value), this.setOrClear(t, "vertical-align", n.value), this.setOrClear(t, "background-color", l.fill.checked ? l.color.value : ""), this.closeDlg(), this.onChange(), this.positionTableHandles();
|
|
4375
4452
|
}
|
|
4376
4453
|
}
|
|
4377
4454
|
]
|
|
@@ -4409,11 +4486,11 @@ let ji = (j = class {
|
|
|
4409
4486
|
return;
|
|
4410
4487
|
}
|
|
4411
4488
|
const e = t.parentElement, i = t.closest("table"), s = Array.from(e.children).indexOf(t), n = Array.from(i.rows).map((o) => o.cells[s]).filter(Boolean);
|
|
4412
|
-
let
|
|
4489
|
+
let l, r;
|
|
4413
4490
|
this.dialog(
|
|
4414
4491
|
this.t("colprops").replace("…", ""),
|
|
4415
4492
|
(o) => {
|
|
4416
|
-
|
|
4493
|
+
l = this.formInput(t.style.width, "e.g. 120px / 25%"), this.formRow(o, this.t("tblwidth"), l), r = this.formBg(t.style.backgroundColor || ""), this.formRow(o, this.t("backcolor"), r.wrap);
|
|
4417
4494
|
},
|
|
4418
4495
|
[
|
|
4419
4496
|
{ label: this.t("cancel"), action: () => this.closeDlg() },
|
|
@@ -4422,7 +4499,7 @@ let ji = (j = class {
|
|
|
4422
4499
|
primary: !0,
|
|
4423
4500
|
action: () => {
|
|
4424
4501
|
n.forEach((o) => {
|
|
4425
|
-
this.setOrClear(o, "width",
|
|
4502
|
+
this.setOrClear(o, "width", l.value.trim()), this.setOrClear(o, "background-color", r.fill.checked ? r.color.value : "");
|
|
4426
4503
|
}), this.closeDlg(), this.onChange(), this.positionTableHandles();
|
|
4427
4504
|
}
|
|
4428
4505
|
}
|
|
@@ -4438,8 +4515,8 @@ let ji = (j = class {
|
|
|
4438
4515
|
const s = document.createElement("div");
|
|
4439
4516
|
s.className = "dlg", s.dir = this.dir(), s.innerHTML = `<header><span>${t}</span><button type="button">×</button></header>
|
|
4440
4517
|
<div class="body"></div><footer></footer>`, s.querySelector("header button").onclick = () => this.closeDlg(), e(s.querySelector(".body")), (i || [{ label: this.t("close"), primary: !0, action: () => this.closeDlg() }]).forEach((n) => {
|
|
4441
|
-
const
|
|
4442
|
-
|
|
4518
|
+
const l = document.createElement("button");
|
|
4519
|
+
l.type = "button", l.textContent = n.label, n.primary && (l.className = "pri"), l.onclick = n.action, s.querySelector("footer").appendChild(l);
|
|
4443
4520
|
}), this.dlgOvl.appendChild(s), this.dlgOvl.addEventListener("mousedown", (n) => {
|
|
4444
4521
|
n.target === this.dlgOvl && this.closeDlg();
|
|
4445
4522
|
}), document.body.appendChild(this.dlgOvl);
|
|
@@ -4503,31 +4580,31 @@ let ji = (j = class {
|
|
|
4503
4580
|
this.saveSel(), this.dialog(t, (s) => {
|
|
4504
4581
|
const n = document.createElement("div");
|
|
4505
4582
|
n.className = "chmap";
|
|
4506
|
-
const r = document.createElement("div");
|
|
4507
|
-
r.className = "chtabs";
|
|
4508
4583
|
const l = document.createElement("div");
|
|
4509
|
-
l.className = "
|
|
4584
|
+
l.className = "chtabs";
|
|
4585
|
+
const r = document.createElement("div");
|
|
4586
|
+
r.className = "chpanel";
|
|
4510
4587
|
const o = document.createElement("div");
|
|
4511
|
-
o.className = "chgrid" + (i ? " emgrid" : ""),
|
|
4588
|
+
o.className = "chgrid" + (i ? " emgrid" : ""), r.appendChild(o);
|
|
4512
4589
|
const a = (d) => {
|
|
4513
|
-
|
|
4590
|
+
l.querySelectorAll("button").forEach((p, m) => p.classList.toggle("on", m === d)), o.innerHTML = "", e[d].chars.forEach((p) => {
|
|
4514
4591
|
const m = document.createElement("button");
|
|
4515
4592
|
m.type = "button", m.textContent = p, m.onclick = () => {
|
|
4516
4593
|
this.closeDlg(), this.exec("insertText", p);
|
|
4517
4594
|
}, o.appendChild(m);
|
|
4518
|
-
}),
|
|
4595
|
+
}), r.scrollTop = 0;
|
|
4519
4596
|
};
|
|
4520
4597
|
e.forEach((d, p) => {
|
|
4521
4598
|
const m = document.createElement("button");
|
|
4522
|
-
m.type = "button", m.textContent = this.t(d.key), m.addEventListener("click", () => a(p)),
|
|
4523
|
-
}), n.append(
|
|
4599
|
+
m.type = "button", m.textContent = this.t(d.key), m.addEventListener("click", () => a(p)), l.appendChild(m);
|
|
4600
|
+
}), n.append(l, r), s.appendChild(n), a(0);
|
|
4524
4601
|
});
|
|
4525
4602
|
}
|
|
4526
4603
|
charMap() {
|
|
4527
|
-
this.glyphPickerDlg(this.t("charmap").replace("…", ""),
|
|
4604
|
+
this.glyphPickerDlg(this.t("charmap").replace("…", ""), ai, !1);
|
|
4528
4605
|
}
|
|
4529
4606
|
emojiMap() {
|
|
4530
|
-
this.glyphPickerDlg(this.t("emoji").replace("…", ""),
|
|
4607
|
+
this.glyphPickerDlg(this.t("emoji").replace("…", ""), ci, !0);
|
|
4531
4608
|
}
|
|
4532
4609
|
printDoc() {
|
|
4533
4610
|
const t = window.open("", "_blank");
|
|
@@ -4589,17 +4666,17 @@ let ji = (j = class {
|
|
|
4589
4666
|
const i = document.createElement("button");
|
|
4590
4667
|
i.type = "button", i.className = "txtbtn", i.textContent = this.t("insertimg");
|
|
4591
4668
|
const s = () => {
|
|
4592
|
-
const n = e.value.trim(),
|
|
4593
|
-
if (!
|
|
4669
|
+
const n = e.value.trim(), l = this.phActive;
|
|
4670
|
+
if (!l) return;
|
|
4594
4671
|
if (!/^(https?:|data:image\/|blob:)/i.test(n)) {
|
|
4595
4672
|
e.classList.add("err"), e.focus();
|
|
4596
4673
|
return;
|
|
4597
4674
|
}
|
|
4598
4675
|
i.disabled = !0, e.disabled = !0;
|
|
4599
|
-
const
|
|
4600
|
-
|
|
4676
|
+
const r = new Image();
|
|
4677
|
+
r.onload = () => this.replacePlaceholderWithImage(l, n, ""), r.onerror = () => {
|
|
4601
4678
|
i.disabled = !1, e.disabled = !1, e.classList.add("err"), e.focus();
|
|
4602
|
-
},
|
|
4679
|
+
}, r.src = n;
|
|
4603
4680
|
};
|
|
4604
4681
|
i.addEventListener("click", s), e.addEventListener("input", () => e.classList.remove("err")), e.addEventListener("keydown", (n) => {
|
|
4605
4682
|
n.key === "Enter" ? (n.preventDefault(), s()) : n.key === "Escape" && (n.stopPropagation(), this.renderPhCtxButtons());
|
|
@@ -4625,8 +4702,8 @@ let ji = (j = class {
|
|
|
4625
4702
|
s && (s.textContent = this.t("uploading")), this.imageUploadHandler(t).then((n) => {
|
|
4626
4703
|
this.ed.contains(e) && this.replacePlaceholderWithImage(e, n, i);
|
|
4627
4704
|
}).catch((n) => {
|
|
4628
|
-
var
|
|
4629
|
-
this.ed.contains(e) && (e.classList.remove("uploading"), e.classList.add("upload-error"), s && (s.textContent = this.t("uploadfailed")), (
|
|
4705
|
+
var l;
|
|
4706
|
+
this.ed.contains(e) && (e.classList.remove("uploading"), e.classList.add("upload-error"), s && (s.textContent = this.t("uploadfailed")), (l = this.onImageUploadError) == null || l.call(this, n, t));
|
|
4630
4707
|
});
|
|
4631
4708
|
}
|
|
4632
4709
|
replacePlaceholderWithImage(t, e, i) {
|
|
@@ -4664,8 +4741,8 @@ let ji = (j = class {
|
|
|
4664
4741
|
if (!this.ed.contains(t) || t.closest(".tpl-media") || t.getAttribute("width") || t.getAttribute("height") || t.style.width || t.style.height) return i(!1);
|
|
4665
4742
|
const n = t.naturalWidth;
|
|
4666
4743
|
if (!n) return i(!1);
|
|
4667
|
-
const
|
|
4668
|
-
t.setAttribute("width", String(
|
|
4744
|
+
const l = this.contentWidth(), r = Math.round(l > 0 ? Math.min(n, l) : n);
|
|
4745
|
+
t.setAttribute("width", String(r)), t.style.width = r + "px", t.style.height = "auto", i(!0);
|
|
4669
4746
|
};
|
|
4670
4747
|
t.complete && t.naturalWidth ? s() : (t.addEventListener("load", s, { once: !0 }), t.addEventListener("error", () => i(!1), { once: !0 }));
|
|
4671
4748
|
}
|
|
@@ -4740,20 +4817,20 @@ let ji = (j = class {
|
|
|
4740
4817
|
const i = document.createElement("button");
|
|
4741
4818
|
i.type = "button", i.className = "txtbtn", i.textContent = this.t("insertvideo");
|
|
4742
4819
|
const s = () => {
|
|
4743
|
-
const n = e.value.trim(),
|
|
4744
|
-
if (!
|
|
4820
|
+
const n = e.value.trim(), l = this.vphActive;
|
|
4821
|
+
if (!l) return;
|
|
4745
4822
|
if (!/^(https?:|data:video\/|blob:)/i.test(n)) {
|
|
4746
4823
|
e.classList.add("err"), e.focus();
|
|
4747
4824
|
return;
|
|
4748
4825
|
}
|
|
4749
|
-
const
|
|
4750
|
-
if (
|
|
4751
|
-
this.replacePlaceholderWithEmbed(
|
|
4826
|
+
const r = this.videoEmbedUrl(n);
|
|
4827
|
+
if (r) {
|
|
4828
|
+
this.replacePlaceholderWithEmbed(l, r);
|
|
4752
4829
|
return;
|
|
4753
4830
|
}
|
|
4754
4831
|
i.disabled = !0, e.disabled = !0;
|
|
4755
4832
|
const o = document.createElement("video");
|
|
4756
|
-
o.preload = "metadata", o.onloadedmetadata = () => this.replacePlaceholderWithVideo(
|
|
4833
|
+
o.preload = "metadata", o.onloadedmetadata = () => this.replacePlaceholderWithVideo(l, n, ""), o.onerror = () => {
|
|
4757
4834
|
i.disabled = !1, e.disabled = !1, e.classList.add("err"), e.focus();
|
|
4758
4835
|
}, o.src = n;
|
|
4759
4836
|
};
|
|
@@ -4781,8 +4858,8 @@ let ji = (j = class {
|
|
|
4781
4858
|
s && (s.textContent = this.t("uploading")), this.videoUploadHandler(t).then((n) => {
|
|
4782
4859
|
this.ed.contains(e) && this.replacePlaceholderWithVideo(e, n, i);
|
|
4783
4860
|
}).catch((n) => {
|
|
4784
|
-
var
|
|
4785
|
-
this.ed.contains(e) && (e.classList.remove("uploading"), e.classList.add("upload-error"), s && (s.textContent = this.t("uploadfailed")), (
|
|
4861
|
+
var l;
|
|
4862
|
+
this.ed.contains(e) && (e.classList.remove("uploading"), e.classList.add("upload-error"), s && (s.textContent = this.t("uploadfailed")), (l = this.onVideoUploadError) == null || l.call(this, n, t));
|
|
4786
4863
|
});
|
|
4787
4864
|
}
|
|
4788
4865
|
replacePlaceholderWithVideo(t, e, i) {
|
|
@@ -4826,14 +4903,14 @@ let ji = (j = class {
|
|
|
4826
4903
|
(d = this.vidCtx) == null || d.replaceWith(a), this.vidCtx = a, this.positionVidCtx();
|
|
4827
4904
|
}, s = (a) => {
|
|
4828
4905
|
this.setVideoAlign(t, a), i();
|
|
4829
|
-
}, n = t.style.float === "left",
|
|
4830
|
-
const
|
|
4831
|
-
return
|
|
4906
|
+
}, n = t.style.float === "left", l = t.style.float === "right", r = !n && !l && t.style.marginLeft === "auto" && t.style.marginRight === "auto", o = (a, d, p, m) => {
|
|
4907
|
+
const v = this.ctxBtn(a, d, m);
|
|
4908
|
+
return v.classList.toggle("on", p), v;
|
|
4832
4909
|
};
|
|
4833
4910
|
return e.append(
|
|
4834
4911
|
o(h.alignleft, this.t("alignleft"), n, () => s("left")),
|
|
4835
|
-
o(h.aligncenter, this.t("aligncenter"),
|
|
4836
|
-
o(h.alignright, this.t("alignright"),
|
|
4912
|
+
o(h.aligncenter, this.t("aligncenter"), r, () => s("center")),
|
|
4913
|
+
o(h.alignright, this.t("alignright"), l, () => s("right")),
|
|
4837
4914
|
this.ctxSep(),
|
|
4838
4915
|
o(h.trash, this.t("deletevideo"), !1, () => {
|
|
4839
4916
|
t.remove(), this.clearVidHandles(), this.onChange();
|
|
@@ -4875,8 +4952,8 @@ let ji = (j = class {
|
|
|
4875
4952
|
* (videoUploadHandler when configured, else inline base64). */
|
|
4876
4953
|
videoDlg() {
|
|
4877
4954
|
this.saveSel();
|
|
4878
|
-
let t, e, i, s, n,
|
|
4879
|
-
const
|
|
4955
|
+
let t, e, i, s, n, l;
|
|
4956
|
+
const r = (a, d) => {
|
|
4880
4957
|
const p = document.createElement("div");
|
|
4881
4958
|
p.className = "dfield";
|
|
4882
4959
|
const m = document.createElement("label");
|
|
@@ -4890,53 +4967,53 @@ let ji = (j = class {
|
|
|
4890
4967
|
(a) => {
|
|
4891
4968
|
const d = document.createElement("div");
|
|
4892
4969
|
d.className = "dtabs";
|
|
4893
|
-
const p = [], m = (
|
|
4894
|
-
const
|
|
4895
|
-
|
|
4970
|
+
const p = [], m = (f, y) => {
|
|
4971
|
+
const C = document.createElement("button");
|
|
4972
|
+
C.type = "button", C.textContent = this.t(f);
|
|
4896
4973
|
const E = document.createElement("div");
|
|
4897
|
-
E.className = "dtabpanel",
|
|
4974
|
+
E.className = "dtabpanel", y(E);
|
|
4898
4975
|
const I = p.length;
|
|
4899
|
-
p.push(E),
|
|
4900
|
-
},
|
|
4901
|
-
d.querySelectorAll("button").forEach((
|
|
4976
|
+
p.push(E), C.addEventListener("click", () => v(I)), d.appendChild(C);
|
|
4977
|
+
}, v = (f) => {
|
|
4978
|
+
d.querySelectorAll("button").forEach((y, C) => y.classList.toggle("on", C === f)), p.forEach((y, C) => y.style.display = C === f ? "" : "none");
|
|
4902
4979
|
};
|
|
4903
|
-
m("vidgeneral", (
|
|
4980
|
+
m("vidgeneral", (f) => {
|
|
4904
4981
|
t = o(), t.placeholder = this.t("videourlph");
|
|
4905
|
-
const
|
|
4906
|
-
|
|
4907
|
-
const
|
|
4908
|
-
|
|
4982
|
+
const y = document.createElement("div");
|
|
4983
|
+
y.className = "drow";
|
|
4984
|
+
const C = document.createElement("button");
|
|
4985
|
+
C.type = "button", C.className = "txtbtn", C.textContent = this.t("uploadvideo");
|
|
4909
4986
|
const E = document.createElement("input");
|
|
4910
|
-
E.type = "file", E.accept = this.options.videoFileTypes.join(","), E.style.display = "none",
|
|
4987
|
+
E.type = "file", E.accept = this.options.videoFileTypes.join(","), E.style.display = "none", C.addEventListener("click", () => {
|
|
4911
4988
|
E.value = "", E.click();
|
|
4912
4989
|
}), E.addEventListener("change", () => {
|
|
4913
4990
|
var Z;
|
|
4914
4991
|
const A = (Z = E.files) == null ? void 0 : Z[0];
|
|
4915
4992
|
if (!A) return;
|
|
4916
|
-
|
|
4993
|
+
C.disabled = !0, C.textContent = this.t("uploading");
|
|
4917
4994
|
const $ = (F) => {
|
|
4918
|
-
t.value = F,
|
|
4995
|
+
t.value = F, C.disabled = !1, C.textContent = this.t("uploadvideo");
|
|
4919
4996
|
};
|
|
4920
4997
|
if (this.videoUploadHandler)
|
|
4921
4998
|
this.videoUploadHandler(A).then($).catch((F) => {
|
|
4922
4999
|
var et;
|
|
4923
|
-
|
|
5000
|
+
C.disabled = !1, C.textContent = this.t("uploadfailed"), (et = this.onVideoUploadError) == null || et.call(this, F, A);
|
|
4924
5001
|
});
|
|
4925
5002
|
else {
|
|
4926
5003
|
const F = new FileReader();
|
|
4927
5004
|
F.onload = () => $(F.result), F.readAsDataURL(A);
|
|
4928
5005
|
}
|
|
4929
|
-
}),
|
|
5006
|
+
}), y.append(t, C, E), t.style.flex = "1", f.appendChild(r("vidsource", y));
|
|
4930
5007
|
const I = document.createElement("div");
|
|
4931
|
-
I.className = "drow", e = document.createElement("input"), e.type = "number", e.value = "560", i = document.createElement("input"), i.type = "number", i.value = "314", I.append(
|
|
4932
|
-
}), m("vidembed", (
|
|
4933
|
-
const
|
|
4934
|
-
|
|
4935
|
-
}), m("vidadvanced", (
|
|
4936
|
-
n = o(),
|
|
5008
|
+
I.className = "drow", e = document.createElement("input"), e.type = "number", e.value = "560", i = document.createElement("input"), i.type = "number", i.value = "314", I.append(r("tblwidth", e), r("tblheight", i)), f.appendChild(I);
|
|
5009
|
+
}), m("vidembed", (f) => {
|
|
5010
|
+
const y = document.createElement("p");
|
|
5011
|
+
y.textContent = this.t("vidembedhint"), y.style.cssText = "margin:0 0 8px;color:#556;font-size:13.5px", s = document.createElement("textarea"), s.style.cssText = "width:100%;box-sizing:border-box;height:160px", f.append(y, s);
|
|
5012
|
+
}), m("vidadvanced", (f) => {
|
|
5013
|
+
n = o(), l = o(), f.append(r("vidaltsource", n), r("vidposter", l));
|
|
4937
5014
|
});
|
|
4938
|
-
const
|
|
4939
|
-
|
|
5015
|
+
const b = document.createElement("div");
|
|
5016
|
+
b.className = "dtabbody", p.forEach((f) => b.appendChild(f)), a.append(d, b), v(0), setTimeout(() => t.focus(), 0);
|
|
4940
5017
|
},
|
|
4941
5018
|
[
|
|
4942
5019
|
{ label: this.t("cancel"), action: () => this.closeDlg() },
|
|
@@ -4950,15 +5027,15 @@ let ji = (j = class {
|
|
|
4950
5027
|
document.execCommand("insertHTML", !1, `<span class="video-embed" contenteditable="false">${a}</span>`), this.onChange();
|
|
4951
5028
|
return;
|
|
4952
5029
|
}
|
|
4953
|
-
const
|
|
4954
|
-
if (
|
|
4955
|
-
document.execCommand("insertHTML", !1, this.videoEmbedHTML(
|
|
5030
|
+
const v = this.videoEmbedUrl(d);
|
|
5031
|
+
if (v)
|
|
5032
|
+
document.execCommand("insertHTML", !1, this.videoEmbedHTML(v, p, m));
|
|
4956
5033
|
else {
|
|
4957
|
-
const
|
|
5034
|
+
const b = n.value.trim(), f = l.value.trim();
|
|
4958
5035
|
document.execCommand(
|
|
4959
5036
|
"insertHTML",
|
|
4960
5037
|
!1,
|
|
4961
|
-
`<video controls width="${p}" height="${m}"${
|
|
5038
|
+
`<video controls width="${p}" height="${m}"${f ? ` poster="${this.escapeAttr(f)}"` : ""}><source src="${this.escapeAttr(d)}">${b ? `<source src="${this.escapeAttr(b)}">` : ""}</video>`
|
|
4962
5039
|
);
|
|
4963
5040
|
}
|
|
4964
5041
|
this.onChange();
|
|
@@ -5016,13 +5093,13 @@ let ji = (j = class {
|
|
|
5016
5093
|
if (i.nodeType !== Node.TEXT_NODE || !this.ed.contains(i) || (d = i.parentElement) != null && d.closest("code, pre")) return;
|
|
5017
5094
|
const n = (i.textContent || "").slice(0, e.anchorOffset).match(/(?:^|[^`])`([^`]+)$/);
|
|
5018
5095
|
if (!n) return;
|
|
5019
|
-
const
|
|
5020
|
-
if (/^\s|\s$/.test(
|
|
5096
|
+
const l = n[1];
|
|
5097
|
+
if (/^\s|\s$/.test(l)) return;
|
|
5021
5098
|
t.preventDefault();
|
|
5022
|
-
const
|
|
5023
|
-
|
|
5099
|
+
const r = document.createRange();
|
|
5100
|
+
r.setStart(i, e.anchorOffset - l.length - 1), r.setEnd(i, e.anchorOffset), r.deleteContents();
|
|
5024
5101
|
const o = document.createElement("code");
|
|
5025
|
-
o.textContent =
|
|
5102
|
+
o.textContent = l, r.insertNode(o);
|
|
5026
5103
|
const a = document.createRange();
|
|
5027
5104
|
a.setStartAfter(o), a.collapse(!0), e.removeAllRanges(), e.addRange(a), this.saveSel(), this.onChange();
|
|
5028
5105
|
}
|
|
@@ -5036,22 +5113,22 @@ let ji = (j = class {
|
|
|
5036
5113
|
s.className = "dsel";
|
|
5037
5114
|
const n = document.createElement("button");
|
|
5038
5115
|
n.type = "button", n.className = "dsel-btn";
|
|
5039
|
-
const
|
|
5040
|
-
|
|
5041
|
-
const
|
|
5042
|
-
return
|
|
5116
|
+
const l = document.createElement("span");
|
|
5117
|
+
l.className = "lbl", l.textContent = ((o = t.find(([a]) => a === e)) == null ? void 0 : o[1]) || "", n.append(l), n.insertAdjacentHTML("beforeend", h.chev);
|
|
5118
|
+
const r = document.createElement("div");
|
|
5119
|
+
return r.className = "dsel-list", t.forEach(([a, d]) => {
|
|
5043
5120
|
const p = document.createElement("button");
|
|
5044
5121
|
p.type = "button", p.textContent = d, p.classList.toggle("on", a === i), p.addEventListener("click", () => {
|
|
5045
|
-
i = a,
|
|
5046
|
-
}),
|
|
5122
|
+
i = a, l.textContent = d, r.querySelectorAll("button").forEach((m) => m.classList.toggle("on", m === p)), s.classList.remove("open"), n.focus();
|
|
5123
|
+
}), r.appendChild(p);
|
|
5047
5124
|
}), n.addEventListener("click", () => {
|
|
5048
5125
|
var a;
|
|
5049
|
-
s.classList.toggle("open"), s.classList.contains("open") && ((a =
|
|
5126
|
+
s.classList.toggle("open"), s.classList.contains("open") && ((a = r.querySelector(".on")) == null || a.scrollIntoView({ block: "nearest" }));
|
|
5050
5127
|
}), s.addEventListener("focusout", (a) => {
|
|
5051
5128
|
s.contains(a.relatedTarget) || s.classList.remove("open");
|
|
5052
5129
|
}), s.addEventListener("keydown", (a) => {
|
|
5053
5130
|
a.key === "Escape" && s.classList.contains("open") && (a.stopPropagation(), s.classList.remove("open"), n.focus());
|
|
5054
|
-
}), s.append(n,
|
|
5131
|
+
}), s.append(n, r), { el: s, value: () => i };
|
|
5055
5132
|
}
|
|
5056
5133
|
/** Insert/edit-code-sample dialog: language dropdown + monospace textarea to
|
|
5057
5134
|
* paste or type code into. Inserts a non-editable <pre class="code-block">
|
|
@@ -5062,11 +5139,11 @@ let ji = (j = class {
|
|
|
5062
5139
|
this.dialog(
|
|
5063
5140
|
this.t("codedlgttl"),
|
|
5064
5141
|
(s) => {
|
|
5065
|
-
var
|
|
5142
|
+
var r;
|
|
5066
5143
|
const n = document.createElement("div");
|
|
5067
5144
|
n.className = "dfield";
|
|
5068
|
-
const
|
|
5069
|
-
|
|
5145
|
+
const l = document.createElement("label");
|
|
5146
|
+
l.textContent = this.t("codelang"), e = this.dlgSelect(ne, (t == null ? void 0 : t.dataset.lang) || "plain"), n.append(l, e.el), i = document.createElement("textarea"), i.className = "code-input", i.spellcheck = !1, i.value = ((r = t == null ? void 0 : t.querySelector("code")) == null ? void 0 : r.textContent) || "", i.placeholder = "const answer = 42;", s.append(n, i), setTimeout(() => i.focus(), 0);
|
|
5070
5147
|
},
|
|
5071
5148
|
[
|
|
5072
5149
|
{ label: this.t("cancel"), action: () => this.closeDlg() },
|
|
@@ -5074,11 +5151,11 @@ let ji = (j = class {
|
|
|
5074
5151
|
label: this.t("save"),
|
|
5075
5152
|
primary: !0,
|
|
5076
5153
|
action: () => {
|
|
5077
|
-
var
|
|
5078
|
-
const s = i.value.replace(/\s+$/, ""), n = e.value(),
|
|
5154
|
+
var r;
|
|
5155
|
+
const s = i.value.replace(/\s+$/, ""), n = e.value(), l = ((r = ne.find(([o]) => o === n)) == null ? void 0 : r[1]) || n;
|
|
5079
5156
|
if (this.closeDlg(), !!s.trim()) {
|
|
5080
5157
|
if (t) {
|
|
5081
|
-
t.dataset.lang = n, t.setAttribute("data-lang-label",
|
|
5158
|
+
t.dataset.lang = n, t.setAttribute("data-lang-label", l);
|
|
5082
5159
|
const o = t.querySelector("code") || t;
|
|
5083
5160
|
o.textContent = s, this.clearCodeSel(), this.onChange();
|
|
5084
5161
|
return;
|
|
@@ -5086,7 +5163,7 @@ let ji = (j = class {
|
|
|
5086
5163
|
this.restoreSel(), document.execCommand(
|
|
5087
5164
|
"insertHTML",
|
|
5088
5165
|
!1,
|
|
5089
|
-
`<pre class="code-block" contenteditable="false" data-lang="${n}" data-lang-label="${this.escapeAttr(
|
|
5166
|
+
`<pre class="code-block" contenteditable="false" data-lang="${n}" data-lang-label="${this.escapeAttr(l)}"><code>${this.escHtml(s)}</code></pre><p><br></p>`
|
|
5090
5167
|
), this.onChange();
|
|
5091
5168
|
}
|
|
5092
5169
|
}
|
|
@@ -5143,14 +5220,14 @@ let ji = (j = class {
|
|
|
5143
5220
|
/** Miniature div-based mockup of a layout, mirroring what the block looks
|
|
5144
5221
|
like in the editor: grey box = image slot, bars = heading/paragraph. */
|
|
5145
5222
|
tplPreviewHTML(t) {
|
|
5146
|
-
const e = '<span class="pv-img"></span>', i = '<span class="pv-h"></span>', s = (o) => `<span class="pv-l" style="width:${o}%"></span>`, n = (o) => `<span class="pv-col">${o}</span>`,
|
|
5147
|
-
return t === "img-left" ? `<span class="pv">${
|
|
5223
|
+
const e = '<span class="pv-img"></span>', i = '<span class="pv-h"></span>', s = (o) => `<span class="pv-l" style="width:${o}%"></span>`, n = (o) => `<span class="pv-col">${o}</span>`, l = (o) => `<span class="pv-row">${o}</span>`, r = n(i + s(100) + s(88));
|
|
5224
|
+
return t === "img-left" ? `<span class="pv">${l(e + r)}${s(100)}${s(72)}</span>` : t === "img-right" ? `<span class="pv">${l(r + e)}${s(100)}${s(72)}</span>` : t === "img-top" ? `<span class="pv pv-c">${e}${i}${s(100)}${s(72)}</span>` : `<span class="pv pv-c">${i}${s(100)}${s(72)}${e}</span>`;
|
|
5148
5225
|
}
|
|
5149
5226
|
buildTemplatePickInto(t, e) {
|
|
5150
5227
|
const i = document.createElement("div");
|
|
5151
|
-
i.className = "tplpick",
|
|
5228
|
+
i.className = "tplpick", Et.forEach((s) => {
|
|
5152
5229
|
const n = document.createElement("button");
|
|
5153
|
-
n.type = "button", n.className = "tpltile", n.title = this.t(
|
|
5230
|
+
n.type = "button", n.className = "tpltile", n.title = this.t(St[s]), n.innerHTML = this.tplPreviewHTML(s) + `<span class="tpllbl">${this.t(St[s])}</span>`, n.addEventListener("click", () => {
|
|
5154
5231
|
this.closePop(), this.insertTemplate(s), e == null || e();
|
|
5155
5232
|
}), i.appendChild(n);
|
|
5156
5233
|
}), t.appendChild(i);
|
|
@@ -5169,15 +5246,15 @@ let ji = (j = class {
|
|
|
5169
5246
|
}
|
|
5170
5247
|
renderTplCtxButtons() {
|
|
5171
5248
|
const t = this.tplCtx, e = this.tplActive;
|
|
5172
|
-
!t || !e || (t.innerHTML = "",
|
|
5173
|
-
const s = this.ctxBtn(
|
|
5249
|
+
!t || !e || (t.innerHTML = "", Et.forEach((i) => {
|
|
5250
|
+
const s = this.ctxBtn(Ni[i], this.t(St[i]), () => this.setTplLayout(i));
|
|
5174
5251
|
s.classList.toggle("on", e.classList.contains("tpl-" + i)), t.appendChild(s);
|
|
5175
5252
|
}), t.append(this.ctxSep(), this.ctxBtn(h.trash, this.t("deltemplate"), () => this.removeTemplate())), this.positionTplCtx());
|
|
5176
5253
|
}
|
|
5177
5254
|
setTplLayout(t) {
|
|
5178
5255
|
const e = this.tplActive;
|
|
5179
5256
|
if (!e) return;
|
|
5180
|
-
|
|
5257
|
+
Et.forEach((n) => e.classList.remove("tpl-" + n)), e.classList.add("tpl-" + t);
|
|
5181
5258
|
const i = e.querySelector(":scope > .tpl-media"), s = e.querySelector(":scope > .tpl-text");
|
|
5182
5259
|
i && s && (t === "img-center" ? e.appendChild(i) : e.insertBefore(i, s)), this.renderTplCtxButtons(), this.positionImgPhCtx(), this.positionImageHandles(), this.onChange();
|
|
5183
5260
|
}
|
|
@@ -5209,7 +5286,7 @@ let ji = (j = class {
|
|
|
5209
5286
|
/* ---------------------------------------------------------- table resize */
|
|
5210
5287
|
clearTableHandles() {
|
|
5211
5288
|
var t, e, i, s, n;
|
|
5212
|
-
(t = this.tblCorner) == null || t.remove(), this.tblCorner = null, this.tblColBars.forEach((
|
|
5289
|
+
(t = this.tblCorner) == null || t.remove(), this.tblCorner = null, this.tblColBars.forEach((l) => l.remove()), this.tblColBars = [], (e = this.tblCtx) == null || e.remove(), this.tblCtx = null, (i = this.tblCellMark) == null || i.remove(), this.tblCellMark = null, (s = this.tblOpMark) == null || s.remove(), this.tblOpMark = null, this.tblOpMarkKind = null, (n = this.tblActive) == null || n.classList.remove("tbl-selected"), this.tblActive = null;
|
|
5213
5290
|
}
|
|
5214
5291
|
/** Blue outline around the cell that holds the caret, so it is clear
|
|
5215
5292
|
which cell / row / column the table operations will target. */
|
|
@@ -5236,8 +5313,8 @@ let ji = (j = class {
|
|
|
5236
5313
|
return;
|
|
5237
5314
|
}
|
|
5238
5315
|
this.tblOpMark || (this.tblOpMark = document.createElement("div"), this.tblOpMark.className = "tbl-opmark", document.body.appendChild(this.tblOpMark));
|
|
5239
|
-
const i = this.tblActive.getBoundingClientRect(), s = e.getBoundingClientRect(), n = e.parentElement.getBoundingClientRect(),
|
|
5240
|
-
this.tblOpMark.style.left =
|
|
5316
|
+
const i = this.tblActive.getBoundingClientRect(), s = e.getBoundingClientRect(), n = e.parentElement.getBoundingClientRect(), l = t === "row" ? n.left : s.left, r = t === "row" ? n.top : i.top, o = t === "row" ? n.width : s.width, a = t === "row" ? n.height : i.height;
|
|
5317
|
+
this.tblOpMark.style.left = l + scrollX + "px", this.tblOpMark.style.top = r + scrollY + "px", this.tblOpMark.style.width = o + "px", this.tblOpMark.style.height = a + "px";
|
|
5241
5318
|
}
|
|
5242
5319
|
/** Lowest allowed top for floating context toolbars — keeps them from
|
|
5243
5320
|
covering the editor menubar/toolbar when the target sits on the first line. */
|
|
@@ -5246,7 +5323,7 @@ let ji = (j = class {
|
|
|
5246
5323
|
}
|
|
5247
5324
|
ctxBtn(t, e, i, s) {
|
|
5248
5325
|
const n = document.createElement("button");
|
|
5249
|
-
return n.type = "button", n.title = e, n.innerHTML = t, s && (n.dataset.id = s), n.addEventListener("mousedown", (
|
|
5326
|
+
return n.type = "button", n.title = e, n.innerHTML = t, s && (n.dataset.id = s), n.addEventListener("mousedown", (l) => l.preventDefault()), n.addEventListener("click", i), n;
|
|
5250
5327
|
}
|
|
5251
5328
|
ctxSep() {
|
|
5252
5329
|
const t = document.createElement("div");
|
|
@@ -5283,20 +5360,20 @@ let ji = (j = class {
|
|
|
5283
5360
|
this.clearTableHandles();
|
|
5284
5361
|
return;
|
|
5285
5362
|
}
|
|
5286
|
-
const t = this.ed.getAttribute("dir") === "rtl", e = this.tblActive.getBoundingClientRect(), i = e.top + scrollY, s = e.left + scrollX, n = e.right + scrollX,
|
|
5287
|
-
if (this.tblCorner && (this.tblCorner.style.top =
|
|
5363
|
+
const t = this.ed.getAttribute("dir") === "rtl", e = this.tblActive.getBoundingClientRect(), i = e.top + scrollY, s = e.left + scrollX, n = e.right + scrollX, l = e.bottom + scrollY;
|
|
5364
|
+
if (this.tblCorner && (this.tblCorner.style.top = l - 5 + "px", this.tblCorner.style.left = (t ? s - 5 : n - 5) + "px", this.tblCorner.style.cursor = t ? "nesw-resize" : "nwse-resize"), this.tblCtx) {
|
|
5288
5365
|
const o = this.tblCtx.offsetWidth, a = this.tblCtx.offsetHeight;
|
|
5289
5366
|
let d = s + (n - s) / 2 - o / 2;
|
|
5290
5367
|
d = Math.max(8 + scrollX, Math.min(d, scrollX + innerWidth - o - 8));
|
|
5291
5368
|
let p = i - a - 8;
|
|
5292
|
-
p < this.ctxMinTop() && (p =
|
|
5369
|
+
p < this.ctxMinTop() && (p = l + 8), this.tblCtx.style.left = d + "px", this.tblCtx.style.top = p + "px";
|
|
5293
5370
|
}
|
|
5294
5371
|
this.tblColBars.forEach((o) => o.remove()), this.tblColBars = [];
|
|
5295
|
-
const
|
|
5296
|
-
if (
|
|
5297
|
-
for (let o = 0; o <
|
|
5298
|
-
const a =
|
|
5299
|
-
p.className = "tbl-colbar", p.style.top = i + "px", p.style.left = d + "px", p.style.height =
|
|
5372
|
+
const r = this.tblActive.rows[0];
|
|
5373
|
+
if (r)
|
|
5374
|
+
for (let o = 0; o < r.cells.length - 1; o++) {
|
|
5375
|
+
const a = r.cells[o].getBoundingClientRect(), d = (t ? a.left : a.right) + scrollX, p = document.createElement("div");
|
|
5376
|
+
p.className = "tbl-colbar", p.style.top = i + "px", p.style.left = d + "px", p.style.height = l - i + "px", document.body.appendChild(p), p.addEventListener("mousedown", (m) => this.startColBarDrag(m, o)), this.tblColBars.push(p);
|
|
5300
5377
|
}
|
|
5301
5378
|
this.positionCellMarker(), this.positionOpMark();
|
|
5302
5379
|
}
|
|
@@ -5314,31 +5391,31 @@ let ji = (j = class {
|
|
|
5314
5391
|
const e = this.tblActive;
|
|
5315
5392
|
if (!e) return;
|
|
5316
5393
|
const i = this.ed.getAttribute("dir") === "rtl", s = t.clientX, n = e.getBoundingClientRect().width;
|
|
5317
|
-
e.style.tableLayout = e.style.tableLayout || "fixed", this.withNoTextSelect((
|
|
5318
|
-
const
|
|
5394
|
+
e.style.tableLayout = e.style.tableLayout || "fixed", this.withNoTextSelect((l) => {
|
|
5395
|
+
const r = (a) => {
|
|
5319
5396
|
const d = i ? -(a.clientX - s) : a.clientX - s;
|
|
5320
5397
|
e.style.width = Math.max(60, Math.round(n + d)) + "px", this.positionTableHandles();
|
|
5321
5398
|
}, o = () => {
|
|
5322
|
-
window.removeEventListener("mousemove",
|
|
5399
|
+
window.removeEventListener("mousemove", r), window.removeEventListener("mouseup", o), l(), this.onChange();
|
|
5323
5400
|
};
|
|
5324
|
-
window.addEventListener("mousemove",
|
|
5401
|
+
window.addEventListener("mousemove", r), window.addEventListener("mouseup", o);
|
|
5325
5402
|
});
|
|
5326
5403
|
}
|
|
5327
5404
|
startColBarDrag(t, e) {
|
|
5328
5405
|
t.preventDefault(), t.stopPropagation();
|
|
5329
5406
|
const i = this.tblActive;
|
|
5330
5407
|
if (!i) return;
|
|
5331
|
-
const s = this.ed.getAttribute("dir") === "rtl", n = Array.from(i.rows),
|
|
5332
|
-
if (!
|
|
5333
|
-
const o = t.clientX, a =
|
|
5408
|
+
const s = this.ed.getAttribute("dir") === "rtl", n = Array.from(i.rows), l = n.map((p) => p.cells[e]).filter(Boolean), r = n.map((p) => p.cells[e + 1]).filter(Boolean);
|
|
5409
|
+
if (!l.length || !r.length) return;
|
|
5410
|
+
const o = t.clientX, a = l[0].getBoundingClientRect().width, d = r[0].getBoundingClientRect().width;
|
|
5334
5411
|
i.style.tableLayout = "fixed", this.withNoTextSelect((p) => {
|
|
5335
|
-
const m = (
|
|
5336
|
-
const
|
|
5337
|
-
|
|
5338
|
-
},
|
|
5339
|
-
window.removeEventListener("mousemove", m), window.removeEventListener("mouseup",
|
|
5412
|
+
const m = (b) => {
|
|
5413
|
+
const f = (s ? -1 : 1) * (b.clientX - o);
|
|
5414
|
+
l.forEach((y) => y.style.width = Math.max(24, Math.round(a + f)) + "px"), r.forEach((y) => y.style.width = Math.max(24, Math.round(d - f)) + "px"), this.positionTableHandles();
|
|
5415
|
+
}, v = () => {
|
|
5416
|
+
window.removeEventListener("mousemove", m), window.removeEventListener("mouseup", v), p(), this.onChange();
|
|
5340
5417
|
};
|
|
5341
|
-
window.addEventListener("mousemove", m), window.addEventListener("mouseup",
|
|
5418
|
+
window.addEventListener("mousemove", m), window.addEventListener("mouseup", v);
|
|
5342
5419
|
});
|
|
5343
5420
|
}
|
|
5344
5421
|
/* ---------------------------------------------------------- image toolbar / resize */
|
|
@@ -5353,7 +5430,7 @@ let ji = (j = class {
|
|
|
5353
5430
|
this.cancelImgHide(), this.imgHandles.forEach((i) => i.remove()), this.imgHandles = [], (t = this.imgCtx) == null || t.remove(), this.imgCtx = null, (e = this.imgActive) == null || e.classList.remove("img-selected"), this.imgActive = null;
|
|
5354
5431
|
}
|
|
5355
5432
|
selectImage(t) {
|
|
5356
|
-
this.imgActive !== t && (this.clearImageHandles(), this.imgActive = t, t.classList.add("img-selected"), this.imgHandles =
|
|
5433
|
+
this.imgActive !== t && (this.clearImageHandles(), this.imgActive = t, t.classList.add("img-selected"), this.imgHandles = Di.map((e) => {
|
|
5357
5434
|
const i = document.createElement("div");
|
|
5358
5435
|
return i.className = "img-handle img-handle-" + e, i.dataset.corner = e, i.addEventListener("mousedown", (s) => this.startImageResizeDrag(s, e)), i.addEventListener("mouseenter", () => this.cancelImgHide()), i.addEventListener("mouseleave", () => this.scheduleImgHide()), document.body.appendChild(i), i;
|
|
5359
5436
|
}), this.imgCtx = this.buildImageCtxToolbar(t), this.positionImageHandles());
|
|
@@ -5367,14 +5444,14 @@ let ji = (j = class {
|
|
|
5367
5444
|
(d = this.imgCtx) == null || d.replaceWith(a), this.imgCtx = a, this.positionImageHandles();
|
|
5368
5445
|
}, s = (a) => {
|
|
5369
5446
|
this.setImageAlign(t, a), i();
|
|
5370
|
-
}, n = t.style.float === "left",
|
|
5371
|
-
const
|
|
5372
|
-
return
|
|
5447
|
+
}, n = t.style.float === "left", l = t.style.float === "right", r = !n && !l && t.style.marginLeft === "auto" && t.style.marginRight === "auto", o = (a, d, p, m) => {
|
|
5448
|
+
const v = this.ctxBtn(a, d, m);
|
|
5449
|
+
return v.classList.toggle("on", p), v;
|
|
5373
5450
|
};
|
|
5374
5451
|
return e.append(
|
|
5375
5452
|
o(h.alignleft, this.t("alignleft"), n, () => s("left")),
|
|
5376
|
-
o(h.aligncenter, this.t("aligncenter"),
|
|
5377
|
-
o(h.alignright, this.t("alignright"),
|
|
5453
|
+
o(h.aligncenter, this.t("aligncenter"), r, () => s("center")),
|
|
5454
|
+
o(h.alignright, this.t("alignright"), l, () => s("right")),
|
|
5378
5455
|
this.ctxSep(),
|
|
5379
5456
|
o(h.rotateleft, this.t("rotateleft"), !1, () => {
|
|
5380
5457
|
this.rotateImage(t, -90), i();
|
|
@@ -5416,19 +5493,19 @@ let ji = (j = class {
|
|
|
5416
5493
|
this.clearImageHandles();
|
|
5417
5494
|
return;
|
|
5418
5495
|
}
|
|
5419
|
-
const t = this.imgActive.getBoundingClientRect(), e = t.top + scrollY, i = t.left + scrollX, s = t.right + scrollX, n = t.bottom + scrollY,
|
|
5496
|
+
const t = this.imgActive.getBoundingClientRect(), e = t.top + scrollY, i = t.left + scrollX, s = t.right + scrollX, n = t.bottom + scrollY, l = {
|
|
5420
5497
|
nw: [i, e],
|
|
5421
5498
|
ne: [s, e],
|
|
5422
5499
|
sw: [i, n],
|
|
5423
5500
|
se: [s, n]
|
|
5424
5501
|
};
|
|
5425
|
-
if (this.imgHandles.forEach((
|
|
5426
|
-
const [o, a] = r
|
|
5427
|
-
|
|
5502
|
+
if (this.imgHandles.forEach((r) => {
|
|
5503
|
+
const [o, a] = l[r.dataset.corner];
|
|
5504
|
+
r.style.left = o - 5 + "px", r.style.top = a - 5 + "px";
|
|
5428
5505
|
}), this.imgCtx) {
|
|
5429
|
-
const
|
|
5430
|
-
let a = i + (s - i) / 2 -
|
|
5431
|
-
a = Math.max(8 + scrollX, Math.min(a, scrollX + innerWidth -
|
|
5506
|
+
const r = this.imgCtx.offsetWidth, o = this.imgCtx.offsetHeight;
|
|
5507
|
+
let a = i + (s - i) / 2 - r / 2;
|
|
5508
|
+
a = Math.max(8 + scrollX, Math.min(a, scrollX + innerWidth - r - 8));
|
|
5432
5509
|
let d = e - o - 8;
|
|
5433
5510
|
d < this.ctxMinTop() && (d = n + 8), this.imgCtx.style.left = a + "px", this.imgCtx.style.top = d + "px";
|
|
5434
5511
|
}
|
|
@@ -5438,12 +5515,12 @@ let ji = (j = class {
|
|
|
5438
5515
|
const i = this.imgActive;
|
|
5439
5516
|
if (!i) return;
|
|
5440
5517
|
this.cancelImgHide();
|
|
5441
|
-
const s = t.clientX, n = i.getBoundingClientRect().width,
|
|
5442
|
-
this.withNoTextSelect((
|
|
5518
|
+
const s = t.clientX, n = i.getBoundingClientRect().width, l = e === "nw" || e === "sw" ? -1 : 1;
|
|
5519
|
+
this.withNoTextSelect((r) => {
|
|
5443
5520
|
const o = (d) => {
|
|
5444
|
-
i.style.width = Math.max(24, Math.round(n +
|
|
5521
|
+
i.style.width = Math.max(24, Math.round(n + l * (d.clientX - s))) + "px", i.style.height = "auto", this.positionImageHandles();
|
|
5445
5522
|
}, a = () => {
|
|
5446
|
-
window.removeEventListener("mousemove", o), window.removeEventListener("mouseup", a),
|
|
5523
|
+
window.removeEventListener("mousemove", o), window.removeEventListener("mouseup", a), r();
|
|
5447
5524
|
const d = parseInt(i.style.width, 10);
|
|
5448
5525
|
d > 0 && !i.closest(".tpl-media") && (i.setAttribute("width", String(d)), i.removeAttribute("height")), this.onChange();
|
|
5449
5526
|
};
|
|
@@ -5486,7 +5563,7 @@ let ji = (j = class {
|
|
|
5486
5563
|
this.selCtx || (this.selCtx = this.buildSelToolbar()), this.positionSelToolbar(e);
|
|
5487
5564
|
}
|
|
5488
5565
|
buildSelToolbar() {
|
|
5489
|
-
var
|
|
5566
|
+
var r;
|
|
5490
5567
|
const t = document.createElement("div");
|
|
5491
5568
|
t.className = "selctx", t.dir = this.dir();
|
|
5492
5569
|
const e = this.ctxBtn(
|
|
@@ -5494,8 +5571,8 @@ let ji = (j = class {
|
|
|
5494
5571
|
this.t("forecolor"),
|
|
5495
5572
|
() => this.colorMenu(e, "fore")
|
|
5496
5573
|
), i = this.ctxBtn(h.backcolor, this.t("backcolor"), () => this.colorMenu(i, "back"));
|
|
5497
|
-
(
|
|
5498
|
-
const s = this.ctxBtn(h.caseic, this.t("changecase"), () => this.caseMenu(s)), n = this.ctxBtn(h.lineheight, this.t("lineheight"), () => this.lineHeightMenu(n)),
|
|
5574
|
+
(r = i.querySelector("svg")) == null || r.insertAdjacentHTML("afterend", '<span class="colorbar" data-cb="back"></span>');
|
|
5575
|
+
const s = this.ctxBtn(h.caseic, this.t("changecase"), () => this.caseMenu(s)), n = this.ctxBtn(h.lineheight, this.t("lineheight"), () => this.lineHeightMenu(n)), l = this.ctxBtn(h.wordspacing, this.t("wordspacing"), () => this.wordSpacingMenu(l));
|
|
5499
5576
|
return t.append(
|
|
5500
5577
|
this.ctxBtn(h.bold, this.t("bold"), () => this.exec("bold"), "bold"),
|
|
5501
5578
|
this.ctxBtn(h.italic, this.t("italic"), () => this.exec("italic"), "italic"),
|
|
@@ -5510,16 +5587,16 @@ let ji = (j = class {
|
|
|
5510
5587
|
this.ctxBtn(h.link, this.t("linkttl"), () => this.linkDlg()),
|
|
5511
5588
|
s,
|
|
5512
5589
|
n,
|
|
5513
|
-
|
|
5590
|
+
l
|
|
5514
5591
|
), t.addEventListener("mousedown", (o) => o.preventDefault()), document.body.appendChild(t), this.syncColorSwatches(t), t;
|
|
5515
5592
|
}
|
|
5516
5593
|
positionSelToolbar(t) {
|
|
5517
5594
|
if (!this.selCtx) return;
|
|
5518
|
-
const e = t.getBoundingClientRect(), i = e.top + scrollY, s = e.left + scrollX, n = e.right + scrollX,
|
|
5519
|
-
let a = s + (n - s) / 2 -
|
|
5520
|
-
a = Math.max(8 + scrollX, Math.min(a, scrollX + innerWidth -
|
|
5595
|
+
const e = t.getBoundingClientRect(), i = e.top + scrollY, s = e.left + scrollX, n = e.right + scrollX, l = e.bottom + scrollY, r = this.selCtx.offsetWidth, o = this.selCtx.offsetHeight;
|
|
5596
|
+
let a = s + (n - s) / 2 - r / 2;
|
|
5597
|
+
a = Math.max(8 + scrollX, Math.min(a, scrollX + innerWidth - r - 8));
|
|
5521
5598
|
let d = i - o - 8;
|
|
5522
|
-
d < this.ctxMinTop() && (d =
|
|
5599
|
+
d < this.ctxMinTop() && (d = l + 8), this.selCtx.style.left = a + "px", this.selCtx.style.top = d + "px";
|
|
5523
5600
|
}
|
|
5524
5601
|
repositionSelToolbar() {
|
|
5525
5602
|
if (!this.selCtx) return;
|
|
@@ -5566,23 +5643,23 @@ let ji = (j = class {
|
|
|
5566
5643
|
"justifyFull",
|
|
5567
5644
|
"insertOrderedList",
|
|
5568
5645
|
"insertUnorderedList"
|
|
5569
|
-
].forEach((
|
|
5570
|
-
const
|
|
5571
|
-
|
|
5572
|
-
}), ["h2", "h3", "blockquote"].forEach((
|
|
5573
|
-
const
|
|
5574
|
-
|
|
5646
|
+
].forEach((v) => {
|
|
5647
|
+
const b = p.querySelector(`[data-id=${v}]`);
|
|
5648
|
+
b && b.classList.toggle("on", e && document.queryCommandState(v));
|
|
5649
|
+
}), ["h2", "h3", "blockquote"].forEach((v) => {
|
|
5650
|
+
const b = p.querySelector(`[data-id=${v}]`);
|
|
5651
|
+
b && b.classList.toggle("on", e && i === v);
|
|
5575
5652
|
});
|
|
5576
5653
|
const m = p.querySelector("[data-id=code]");
|
|
5577
5654
|
m && m.classList.toggle("on", e && !!this.closestInlineCode());
|
|
5578
5655
|
});
|
|
5579
|
-
const n = t ? this.closestBlock(t.anchorNode) : null,
|
|
5580
|
-
(a = this.toolbar.querySelector("[data-id=ltr]")) == null || a.classList.toggle("on", e &&
|
|
5581
|
-
const
|
|
5582
|
-
const
|
|
5583
|
-
|
|
5656
|
+
const n = t ? this.closestBlock(t.anchorNode) : null, l = ((o = n == null ? void 0 : n.closest("[dir]")) == null ? void 0 : o.getAttribute("dir")) || this.ed.getAttribute("dir") || this.dir();
|
|
5657
|
+
(a = this.toolbar.querySelector("[data-id=ltr]")) == null || a.classList.toggle("on", e && l === "ltr"), (d = this.toolbar.querySelector("[data-id=rtl]")) == null || d.classList.toggle("on", e && l === "rtl");
|
|
5658
|
+
const r = (p, m, v) => {
|
|
5659
|
+
const b = this.toolbar.querySelector(`[data-id=${p}] .lbl`);
|
|
5660
|
+
b && (b.textContent = m || v || "", b.classList.toggle("empty", !m));
|
|
5584
5661
|
};
|
|
5585
|
-
|
|
5662
|
+
r("fontsel", this.currentFont()), r("sizesel", this.currentSize().replace("px", "")), e && r("blocksel", re.some((p) => p[0] === i) ? this.blockLabel(i) : this.t("para")), this.sbWords.textContent = this.countWords() + " " + this.t("words");
|
|
5586
5663
|
}
|
|
5587
5664
|
countWords() {
|
|
5588
5665
|
const t = (this.ed.textContent || "").trim();
|
|
@@ -5602,13 +5679,13 @@ let ji = (j = class {
|
|
|
5602
5679
|
return;
|
|
5603
5680
|
}
|
|
5604
5681
|
if (!i) {
|
|
5605
|
-
const n = e.getData("text/plain"),
|
|
5606
|
-
if (
|
|
5607
|
-
document.execCommand("insertHTML", !1, this.videoEmbedHTML(
|
|
5682
|
+
const n = e.getData("text/plain"), l = /^\S+$/.test(n.trim()) ? this.videoEmbedUrl(n.trim()) : null;
|
|
5683
|
+
if (l) {
|
|
5684
|
+
document.execCommand("insertHTML", !1, this.videoEmbedHTML(l)), this.onChange();
|
|
5608
5685
|
return;
|
|
5609
5686
|
}
|
|
5610
5687
|
}
|
|
5611
|
-
i ? this.pasteRichHTML(i, e, s) : (document.execCommand("insertHTML", !1,
|
|
5688
|
+
i ? this.pasteRichHTML(i, e, s) : (document.execCommand("insertHTML", !1, Ci(e.getData("text/plain"))), this.onChange());
|
|
5612
5689
|
}
|
|
5613
5690
|
/** Rich-HTML paste. Before the (untouched) paste engine runs, pictures Word left
|
|
5614
5691
|
* behind as unreadable file:// refs are pulled out of the clipboard's RTF flavor
|
|
@@ -5620,19 +5697,19 @@ let ji = (j = class {
|
|
|
5620
5697
|
let s = [];
|
|
5621
5698
|
const n = e.getData("text/rtf");
|
|
5622
5699
|
if (n) {
|
|
5623
|
-
const
|
|
5624
|
-
t =
|
|
5700
|
+
const l = ki(t, n);
|
|
5701
|
+
t = l.html, s = l.injected;
|
|
5625
5702
|
}
|
|
5626
|
-
if (i &&
|
|
5627
|
-
const
|
|
5628
|
-
if (
|
|
5629
|
-
const
|
|
5703
|
+
if (i && Ai(t) === 1) {
|
|
5704
|
+
const l = i.getAsFile();
|
|
5705
|
+
if (l) {
|
|
5706
|
+
const r = t;
|
|
5630
5707
|
this.saveSel();
|
|
5631
5708
|
const o = new FileReader();
|
|
5632
5709
|
o.onload = () => {
|
|
5633
|
-
const a =
|
|
5710
|
+
const a = ge(r, [o.result]);
|
|
5634
5711
|
this.finishRichPaste(a.html, s.concat(a.injected), !0);
|
|
5635
|
-
}, o.onerror = () => this.finishRichPaste(
|
|
5712
|
+
}, o.onerror = () => this.finishRichPaste(r, s, !0), o.readAsDataURL(l);
|
|
5636
5713
|
return;
|
|
5637
5714
|
}
|
|
5638
5715
|
}
|
|
@@ -5646,126 +5723,126 @@ let ji = (j = class {
|
|
|
5646
5723
|
this.insertPastedHTML(t, i);
|
|
5647
5724
|
return;
|
|
5648
5725
|
}
|
|
5649
|
-
const s = this.imageUploadHandler, n = e.filter((
|
|
5726
|
+
const s = this.imageUploadHandler, n = e.filter((l, r) => e.indexOf(l) === r);
|
|
5650
5727
|
i || this.saveSel(), Promise.all(
|
|
5651
|
-
n.map((
|
|
5652
|
-
const o =
|
|
5728
|
+
n.map((l, r) => {
|
|
5729
|
+
const o = Hi(l, "pasted-image-" + (r + 1));
|
|
5653
5730
|
return o ? s(o).catch((a) => {
|
|
5654
5731
|
var d;
|
|
5655
|
-
return (d = this.onImageUploadError) == null || d.call(this, a, o),
|
|
5656
|
-
}) : Promise.resolve(
|
|
5732
|
+
return (d = this.onImageUploadError) == null || d.call(this, a, o), l;
|
|
5733
|
+
}) : Promise.resolve(l);
|
|
5657
5734
|
})
|
|
5658
|
-
).then((
|
|
5659
|
-
let
|
|
5735
|
+
).then((l) => {
|
|
5736
|
+
let r = t;
|
|
5660
5737
|
n.forEach((o, a) => {
|
|
5661
|
-
|
|
5662
|
-
}), this.insertPastedHTML(
|
|
5738
|
+
l[a] !== o && (r = r.split(o).join(l[a]));
|
|
5739
|
+
}), this.insertPastedHTML(r, !0);
|
|
5663
5740
|
});
|
|
5664
5741
|
}
|
|
5665
5742
|
/** `deferred` means the insert is happening after an async hop, so the caret the
|
|
5666
5743
|
* paste started from has to be put back first. */
|
|
5667
5744
|
insertPastedHTML(t, e = !1) {
|
|
5668
|
-
e && this.restoreSel(), document.execCommand("insertHTML", !1,
|
|
5745
|
+
e && this.restoreSel(), document.execCommand("insertHTML", !1, xi(t, this.dir())), e && this.saveSel(), this.onChange();
|
|
5669
5746
|
}
|
|
5670
5747
|
/* ---------------------------------------------------------- init */
|
|
5671
5748
|
initUI() {
|
|
5672
5749
|
this.closePop(), this.closeDlg(), this.clearTableHandles(), this.clearImgPlaceholderSel(), this.clearVphPlaceholderSel(), this.clearVidHandles(), this.clearCodeSel(), this.shell.dir = this.dir(), this.ed.dir = this.dir(), this.options.menubar ? this.buildMenubar() : this.menubar.style.display = "none", this.options.toolbar ? this.buildToolbar() : this.toolbar.style.display = "none", this.sbHelp.textContent = this.t("statushelp"), this.refreshState();
|
|
5673
5750
|
}
|
|
5674
5751
|
}, j.instanceCounter = 0, j.TBR_COLLAPSE_MAX = 992, j);
|
|
5675
|
-
const
|
|
5676
|
-
({ value: u, defaultValue: t, onChange: e, onReady: i, className: s, style: n, ...
|
|
5677
|
-
const o = z(null), a = z(null), d = z(!1), p = z(u ?? t), m = z(null),
|
|
5678
|
-
return
|
|
5752
|
+
const ss = Xe(
|
|
5753
|
+
({ value: u, defaultValue: t, onChange: e, onReady: i, className: s, style: n, ...l }, r) => {
|
|
5754
|
+
const o = z(null), a = z(null), d = z(!1), p = z(u ?? t), m = z(null), v = z(e), b = z(i);
|
|
5755
|
+
return v.current = e, b.current = i, Ye(r, () => ({
|
|
5679
5756
|
getContent: () => {
|
|
5680
|
-
var
|
|
5681
|
-
return ((
|
|
5757
|
+
var f;
|
|
5758
|
+
return ((f = a.current) == null ? void 0 : f.getContent()) ?? "";
|
|
5682
5759
|
},
|
|
5683
5760
|
getContentForEmail: () => {
|
|
5684
|
-
var
|
|
5685
|
-
return ((
|
|
5761
|
+
var f;
|
|
5762
|
+
return ((f = a.current) == null ? void 0 : f.getContentForEmail()) ?? "";
|
|
5686
5763
|
},
|
|
5687
|
-
setContent: (
|
|
5688
|
-
var
|
|
5689
|
-
return (
|
|
5764
|
+
setContent: (f) => {
|
|
5765
|
+
var y;
|
|
5766
|
+
return (y = a.current) == null ? void 0 : y.setContent(f);
|
|
5690
5767
|
},
|
|
5691
|
-
insertContent: (
|
|
5692
|
-
var
|
|
5693
|
-
return (
|
|
5768
|
+
insertContent: (f) => {
|
|
5769
|
+
var y;
|
|
5770
|
+
return (y = a.current) == null ? void 0 : y.insertContent(f);
|
|
5694
5771
|
},
|
|
5695
|
-
setLanguage: (
|
|
5696
|
-
var
|
|
5697
|
-
return (
|
|
5772
|
+
setLanguage: (f) => {
|
|
5773
|
+
var y;
|
|
5774
|
+
return (y = a.current) == null ? void 0 : y.setLanguage(f);
|
|
5698
5775
|
},
|
|
5699
5776
|
focus: () => {
|
|
5700
|
-
var
|
|
5701
|
-
return (
|
|
5777
|
+
var f;
|
|
5778
|
+
return (f = a.current) == null ? void 0 : f.focus();
|
|
5702
5779
|
},
|
|
5703
5780
|
destroy: () => {
|
|
5704
|
-
var
|
|
5705
|
-
return (
|
|
5781
|
+
var f;
|
|
5782
|
+
return (f = a.current) == null ? void 0 : f.destroy();
|
|
5706
5783
|
},
|
|
5707
|
-
importWordFile: (
|
|
5708
|
-
var
|
|
5709
|
-
return ((
|
|
5784
|
+
importWordFile: (f) => {
|
|
5785
|
+
var y;
|
|
5786
|
+
return ((y = a.current) == null ? void 0 : y.importWordFile(f)) ?? Promise.resolve();
|
|
5710
5787
|
},
|
|
5711
5788
|
restoreDraft: () => {
|
|
5712
|
-
var
|
|
5713
|
-
return ((
|
|
5789
|
+
var f;
|
|
5790
|
+
return ((f = a.current) == null ? void 0 : f.restoreDraft()) ?? !1;
|
|
5714
5791
|
},
|
|
5715
5792
|
getRevisions: () => {
|
|
5716
|
-
var
|
|
5717
|
-
return ((
|
|
5793
|
+
var f;
|
|
5794
|
+
return ((f = a.current) == null ? void 0 : f.getRevisions()) ?? [];
|
|
5718
5795
|
}
|
|
5719
5796
|
})), lt(() => {
|
|
5720
5797
|
if (!o.current) return;
|
|
5721
|
-
const
|
|
5798
|
+
const f = new is({
|
|
5722
5799
|
target: o.current,
|
|
5723
5800
|
initialContent: p.current,
|
|
5724
|
-
onChange: (
|
|
5725
|
-
var
|
|
5726
|
-
d.current = !0, p.current =
|
|
5801
|
+
onChange: (y) => {
|
|
5802
|
+
var C;
|
|
5803
|
+
d.current = !0, p.current = y, (C = v.current) == null || C.call(v, y);
|
|
5727
5804
|
},
|
|
5728
|
-
onReady: (
|
|
5729
|
-
var
|
|
5730
|
-
return (
|
|
5805
|
+
onReady: (y) => {
|
|
5806
|
+
var C;
|
|
5807
|
+
return (C = b.current) == null ? void 0 : C.call(b, y);
|
|
5731
5808
|
},
|
|
5732
|
-
...
|
|
5809
|
+
...l
|
|
5733
5810
|
});
|
|
5734
|
-
return a.current =
|
|
5735
|
-
|
|
5811
|
+
return a.current = f, () => {
|
|
5812
|
+
f.destroy(), a.current = null;
|
|
5736
5813
|
};
|
|
5737
5814
|
}, []), lt(() => {
|
|
5738
|
-
var
|
|
5815
|
+
var f, y;
|
|
5739
5816
|
if (u !== void 0 && u !== p.current) {
|
|
5740
5817
|
if (d.current) {
|
|
5741
5818
|
d.current = !1;
|
|
5742
5819
|
return;
|
|
5743
5820
|
}
|
|
5744
|
-
if ((
|
|
5821
|
+
if ((f = o.current) != null && f.contains(document.activeElement)) {
|
|
5745
5822
|
m.current = u;
|
|
5746
5823
|
return;
|
|
5747
5824
|
}
|
|
5748
|
-
p.current = u, (
|
|
5825
|
+
p.current = u, (y = a.current) == null || y.setContent(u);
|
|
5749
5826
|
}
|
|
5750
5827
|
}, [u]), lt(() => {
|
|
5751
|
-
const
|
|
5752
|
-
if (!
|
|
5753
|
-
const
|
|
5828
|
+
const f = o.current;
|
|
5829
|
+
if (!f) return;
|
|
5830
|
+
const y = (C) => {
|
|
5754
5831
|
var A;
|
|
5755
5832
|
if (m.current === null) return;
|
|
5756
|
-
const E =
|
|
5757
|
-
if (E &&
|
|
5833
|
+
const E = C.relatedTarget;
|
|
5834
|
+
if (E && f.contains(E)) return;
|
|
5758
5835
|
const I = m.current;
|
|
5759
5836
|
m.current = null, p.current = I, (A = a.current) == null || A.setContent(I);
|
|
5760
5837
|
};
|
|
5761
|
-
return
|
|
5838
|
+
return f.addEventListener("focusout", y), () => f.removeEventListener("focusout", y);
|
|
5762
5839
|
}, []), lt(() => {
|
|
5763
|
-
var
|
|
5764
|
-
|
|
5765
|
-
}, [
|
|
5840
|
+
var f;
|
|
5841
|
+
l.language && ((f = a.current) == null || f.setLanguage(l.language));
|
|
5842
|
+
}, [l.language]), /* @__PURE__ */ Qe.jsx("div", { ref: o, className: s, style: n });
|
|
5766
5843
|
}
|
|
5767
5844
|
);
|
|
5768
|
-
|
|
5845
|
+
ss.displayName = "FableEditor";
|
|
5769
5846
|
export {
|
|
5770
|
-
|
|
5847
|
+
ss as FableEditor
|
|
5771
5848
|
};
|