@aeriz/wysiwyg 1.0.3 → 1.0.4

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.
Files changed (64) hide show
  1. package/README.md +37 -13
  2. package/dist/adapters/shared.cjs +1 -1
  3. package/dist/adapters/shared.js +11 -11
  4. package/dist/aeriz-wysiwyg-adapter.js +1 -1
  5. package/dist/aeriz-wysiwyg-adapter.min.js +1 -1
  6. package/dist/aeriz-wysiwyg-jquery.js +1 -1
  7. package/dist/aeriz-wysiwyg-jquery.min.js +1 -1
  8. package/dist/aeriz-wysiwyg-wc.js +1 -1
  9. package/dist/aeriz-wysiwyg-wc.min.js +1 -1
  10. package/dist/aeriz-wysiwyg.cjs +3773 -1926
  11. package/dist/aeriz-wysiwyg.css +554 -38
  12. package/dist/aeriz-wysiwyg.esm.js +3773 -1926
  13. package/dist/aeriz-wysiwyg.esm.min.js +4271 -2658
  14. package/dist/aeriz-wysiwyg.js +3773 -1926
  15. package/dist/aeriz-wysiwyg.min.cjs +36 -34
  16. package/dist/aeriz-wysiwyg.min.css +1 -1
  17. package/dist/aeriz-wysiwyg.min.js +40 -38
  18. package/dist/server.cjs +24 -22
  19. package/dist/server.js +444 -312
  20. package/dist-types/adapters/shared.d.ts.map +1 -1
  21. package/dist-types/cjs/core/AerizEditor.d.cts +180 -7
  22. package/dist-types/cjs/core/block-meta.d.cts +66 -0
  23. package/dist-types/cjs/core/block-policy.d.cts +43 -0
  24. package/dist-types/cjs/core/blocks.d.cts +47 -4
  25. package/dist-types/cjs/core/history.d.cts +86 -0
  26. package/dist-types/cjs/core/i18n.d.cts +12 -0
  27. package/dist-types/cjs/core/import-html.d.cts +1 -0
  28. package/dist-types/cjs/core/import-markdown.d.cts +0 -4
  29. package/dist-types/cjs/core/input-rules.d.cts +46 -0
  30. package/dist-types/cjs/core/selection.d.cts +46 -0
  31. package/dist-types/cjs/core/table-ops.d.cts +30 -0
  32. package/dist-types/cjs/index.d.cts +2 -0
  33. package/dist-types/core/AerizEditor.d.ts +180 -7
  34. package/dist-types/core/AerizEditor.d.ts.map +1 -1
  35. package/dist-types/core/block-meta.d.ts +66 -0
  36. package/dist-types/core/block-meta.d.ts.map +1 -1
  37. package/dist-types/core/block-policy.d.ts +43 -0
  38. package/dist-types/core/block-policy.d.ts.map +1 -0
  39. package/dist-types/core/blocks.d.ts +47 -4
  40. package/dist-types/core/blocks.d.ts.map +1 -1
  41. package/dist-types/core/history.d.ts +86 -0
  42. package/dist-types/core/history.d.ts.map +1 -0
  43. package/dist-types/core/i18n.d.ts +12 -0
  44. package/dist-types/core/i18n.d.ts.map +1 -1
  45. package/dist-types/core/import-html.d.ts +1 -0
  46. package/dist-types/core/import-html.d.ts.map +1 -1
  47. package/dist-types/core/import-markdown.d.ts +0 -4
  48. package/dist-types/core/import-markdown.d.ts.map +1 -1
  49. package/dist-types/core/input-rules.d.ts +46 -0
  50. package/dist-types/core/input-rules.d.ts.map +1 -0
  51. package/dist-types/core/plain-text.d.ts.map +1 -1
  52. package/dist-types/core/render-string.d.ts.map +1 -1
  53. package/dist-types/core/selection.d.ts +46 -0
  54. package/dist-types/core/selection.d.ts.map +1 -0
  55. package/dist-types/core/snapshot.d.ts.map +1 -1
  56. package/dist-types/core/table-ops.d.ts +30 -0
  57. package/dist-types/core/table-ops.d.ts.map +1 -0
  58. package/dist-types/index.d.ts +2 -0
  59. package/dist-types/index.d.ts.map +1 -1
  60. package/dist-types/ui/Toolbar.d.ts.map +1 -1
  61. package/dist-types/ui/dialogs.d.ts.map +1 -1
  62. package/dist-types/ui/icons.d.ts.map +1 -1
  63. package/dist-types/ui/popovers.d.ts.map +1 -1
  64. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -1,26 +1,103 @@
1
- function U(e) {
1
+ function Z(e) {
2
2
  return e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : e < 1024 * 1024 * 1024 ? `${(e / 1024 / 1024).toFixed(1)} MB` : `${(e / 1024 / 1024 / 1024).toFixed(1)} GB`;
3
3
  }
4
- function W(e, n) {
4
+ function X(e, t) {
5
5
  if (e) {
6
- const t = e.lastIndexOf(".");
7
- if (t > 0 && t < e.length - 1)
8
- return e.slice(t + 1).toUpperCase();
6
+ const n = e.lastIndexOf(".");
7
+ if (n > 0 && n < e.length - 1)
8
+ return e.slice(n + 1).toUpperCase();
9
9
  }
10
- return n ? (n.split("/").pop() ?? "").toUpperCase() : "";
10
+ return t ? (t.split("/").pop() ?? "").toUpperCase() : "";
11
11
  }
12
- function j(e) {
12
+ function U(e) {
13
13
  try {
14
14
  return new URL(e).hostname;
15
15
  } catch {
16
16
  return "";
17
17
  }
18
18
  }
19
- function P(e) {
20
- const n = j(e);
21
- return n ? `https://www.google.com/s2/favicons?domain=${encodeURIComponent(n)}&sz=64` : "";
19
+ function J(e) {
20
+ const t = U(e);
21
+ return t ? `https://www.google.com/s2/favicons?domain=${encodeURIComponent(t)}&sz=64` : "";
22
+ }
23
+ const Q = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg>', ee = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>', te = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture", N = "https://www.youtube-nocookie.com/embed/", ne = "파일", re = "data-block-id", ie = /[​-‍]/g, oe = [
24
+ "id",
25
+ "class",
26
+ "dir",
27
+ "lang",
28
+ "title"
29
+ ], ce = /* @__PURE__ */ new Set([
30
+ "div",
31
+ "section",
32
+ "article",
33
+ "aside",
34
+ "header",
35
+ "footer",
36
+ "main",
37
+ "nav",
38
+ "details",
39
+ "summary",
40
+ "figure",
41
+ "figcaption",
42
+ "address",
43
+ "fieldset",
44
+ "dl",
45
+ "dt",
46
+ "dd",
47
+ "small",
48
+ "span"
49
+ ]);
50
+ function se(e) {
51
+ if (!e) return "div";
52
+ const t = e.toLowerCase();
53
+ return ce.has(t) ? t : "div";
54
+ }
55
+ function ae(...e) {
56
+ const t = /* @__PURE__ */ new Set();
57
+ for (const n of e)
58
+ if (n)
59
+ for (const r of n.split(/\s+/))
60
+ r && t.add(r);
61
+ return [...t].join(" ");
62
+ }
63
+ const le = "aw-task-list", ue = "data-checked", de = /* @__PURE__ */ new Set([
64
+ "http:",
65
+ "https:",
66
+ "mailto:",
67
+ "tel:",
68
+ "ftp:",
69
+ "sms:"
70
+ ]), fe = /* @__PURE__ */ new Set([
71
+ "http:",
72
+ "https:",
73
+ "blob:"
74
+ ]), pe = /^data:image\/[a-z0-9.+-]+[,;]/i;
75
+ function H(e) {
76
+ return e.replace($e, "");
77
+ }
78
+ const $e = new RegExp("[\\u0000-\\u0020\\u007f]", "g");
79
+ function q(e) {
80
+ const t = /^([a-z][a-z0-9+.-]*):/i.exec(e);
81
+ return t && t[1] ? `${t[1].toLowerCase()}:` : null;
22
82
  }
23
- const V = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg>', G = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>', K = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture", O = "https://www.youtube-nocookie.com/embed/", Y = "파일", Z = "data-block-id", z = /* @__PURE__ */ new Set([
83
+ function C(e) {
84
+ if (!e) return "";
85
+ const t = e.trim();
86
+ if (!t) return "";
87
+ const n = q(H(t));
88
+ return n === null || de.has(n) ? t : "";
89
+ }
90
+ function T(e) {
91
+ if (!e) return "";
92
+ const t = e.trim();
93
+ if (!t) return "";
94
+ const n = H(t), r = q(n);
95
+ return r === null ? t : r === "data:" ? pe.test(n) ? t : "" : fe.has(r) ? t : "";
96
+ }
97
+ function D(e) {
98
+ return e && /^[A-Za-z0-9_-]{6,20}$/.test(e) ? e : "";
99
+ }
100
+ const W = /* @__PURE__ */ new Set([
24
101
  "area",
25
102
  "base",
26
103
  "br",
@@ -35,14 +112,14 @@ const V = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-wid
35
112
  "source",
36
113
  "track",
37
114
  "wbr"
38
- ]), X = /* @__PURE__ */ new Set(["script", "style"]), J = /* @__PURE__ */ new Map([
115
+ ]), me = /* @__PURE__ */ new Set(["script", "style"]), ge = /* @__PURE__ */ new Map([
39
116
  ["li", /* @__PURE__ */ new Set(["li"])],
40
117
  ["p", /* @__PURE__ */ new Set(["p", "div", "ul", "ol", "blockquote", "pre", "table", "h1", "h2", "h3", "h4", "h5", "h6"])],
41
118
  ["td", /* @__PURE__ */ new Set(["td", "th", "tr"])],
42
119
  ["th", /* @__PURE__ */ new Set(["td", "th", "tr"])],
43
120
  ["tr", /* @__PURE__ */ new Set(["tr"])],
44
121
  ["option", /* @__PURE__ */ new Set(["option"])]
45
- ]), Q = {
122
+ ]), he = {
46
123
  amp: "&",
47
124
  lt: "<",
48
125
  gt: ">",
@@ -73,138 +150,138 @@ const V = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-wid
73
150
  laquo: "«",
74
151
  raquo: "»"
75
152
  };
76
- function w(e) {
153
+ function y(e) {
77
154
  return e.includes("&") ? e.replace(
78
155
  /&(#[Xx][0-9A-Fa-f]+|#\d+|[A-Za-z][A-Za-z0-9]{1,31});/g,
79
- (n, t) => {
80
- if (t.charCodeAt(0) === 35) {
81
- const i = t[1] === "x" || t[1] === "X", o = i ? t.slice(2) : t.slice(1), a = Number.parseInt(o, i ? 16 : 10);
82
- if (!Number.isFinite(a) || a < 0 || a > 1114111 || a >= 55296 && a <= 57343) return n;
156
+ (t, n) => {
157
+ if (n.charCodeAt(0) === 35) {
158
+ const i = n[1] === "x" || n[1] === "X", o = i ? n.slice(2) : n.slice(1), c = Number.parseInt(o, i ? 16 : 10);
159
+ if (!Number.isFinite(c) || c < 0 || c > 1114111 || c >= 55296 && c <= 57343) return t;
83
160
  try {
84
- return String.fromCodePoint(a);
161
+ return String.fromCodePoint(c);
85
162
  } catch {
86
- return n;
163
+ return t;
87
164
  }
88
165
  }
89
- return Q[t.toLowerCase()] ?? n;
166
+ return he[n.toLowerCase()] ?? t;
90
167
  }
91
168
  ) : e;
92
169
  }
93
- function h(e) {
170
+ function g(e) {
94
171
  return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
95
172
  }
96
173
  function f(e) {
97
- return h(e).replace(/"/g, "&quot;");
174
+ return g(e).replace(/"/g, "&quot;");
98
175
  }
99
- function ee(e) {
100
- const n = {}, t = /([^\s/=>"']+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;
176
+ function be(e) {
177
+ const t = {}, n = /([^\s/=>"']+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;
101
178
  let r;
102
- for (; (r = t.exec(e)) !== null; ) {
179
+ for (; (r = n.exec(e)) !== null; ) {
103
180
  const i = r[1];
104
181
  if (!i) continue;
105
182
  const o = r[2] ?? r[3] ?? r[4] ?? "";
106
- n[i.toLowerCase()] = w(o);
183
+ t[i.toLowerCase()] = y(o);
107
184
  }
108
- return n;
185
+ return t;
109
186
  }
110
- function y(e) {
111
- const n = [], t = [], r = () => {
112
- const c = t[t.length - 1];
113
- return c ? c.children : n;
114
- }, i = (c) => {
115
- if (c.length === 0) return;
116
- const d = r(), u = d[d.length - 1];
117
- u && u.type === "text" ? u.value += c : d.push({ type: "text", value: c });
118
- }, o = (c) => {
119
- var d;
120
- for (let u = t.length - 1; u >= 0; u--)
121
- if (((d = t[u]) == null ? void 0 : d.tag) === c) {
122
- t.length = u;
187
+ function S(e) {
188
+ const t = [], n = [], r = () => {
189
+ const a = n[n.length - 1];
190
+ return a ? a.children : t;
191
+ }, i = (a) => {
192
+ if (a.length === 0) return;
193
+ const s = r(), u = s[s.length - 1];
194
+ u && u.type === "text" ? u.value += a : s.push({ type: "text", value: a });
195
+ }, o = (a) => {
196
+ var s;
197
+ for (let u = n.length - 1; u >= 0; u--)
198
+ if (((s = n[u]) == null ? void 0 : s.tag) === a) {
199
+ n.length = u;
123
200
  return;
124
201
  }
125
202
  };
126
- let a = 0;
127
- for (; a < e.length; ) {
128
- const c = e.indexOf("<", a);
129
- if (c < 0) {
130
- i(w(e.slice(a)));
203
+ let c = 0;
204
+ for (; c < e.length; ) {
205
+ const a = e.indexOf("<", c);
206
+ if (a < 0) {
207
+ i(y(e.slice(c)));
131
208
  break;
132
209
  }
133
- if (c > a && i(w(e.slice(a, c))), e.startsWith("<!--", c)) {
134
- const $ = e.indexOf("-->", c + 4);
135
- a = $ < 0 ? e.length : $ + 3;
210
+ if (a > c && i(y(e.slice(c, a))), e.startsWith("<!--", a)) {
211
+ const m = e.indexOf("-->", a + 4);
212
+ c = m < 0 ? e.length : m + 3;
136
213
  continue;
137
214
  }
138
- if (e.startsWith("<!", c) || e.startsWith("<?", c)) {
139
- const $ = e.indexOf(">", c + 2);
140
- a = $ < 0 ? e.length : $ + 1;
215
+ if (e.startsWith("<!", a) || e.startsWith("<?", a)) {
216
+ const m = e.indexOf(">", a + 2);
217
+ c = m < 0 ? e.length : m + 1;
141
218
  continue;
142
219
  }
143
- const d = e.indexOf(">", c + 1);
144
- if (d < 0) {
145
- i(w(e.slice(c)));
220
+ const s = e.indexOf(">", a + 1);
221
+ if (s < 0) {
222
+ i(y(e.slice(a)));
146
223
  break;
147
224
  }
148
- const u = e.slice(c + 1, d);
149
- if (a = d + 1, u.startsWith("/")) {
150
- const $ = u.slice(1).trim().toLowerCase();
151
- $ && o($);
225
+ const u = e.slice(a + 1, s);
226
+ if (c = s + 1, u.startsWith("/")) {
227
+ const m = u.slice(1).trim().toLowerCase();
228
+ m && o(m);
152
229
  continue;
153
230
  }
154
- const s = /^([A-Za-z][^\s/>]*)/.exec(u);
155
- if (!s || !s[1]) {
156
- i(w(e.slice(c, a)));
231
+ const d = /^([A-Za-z][^\s/>]*)/.exec(u);
232
+ if (!d || !d[1]) {
233
+ i(y(e.slice(a, c)));
157
234
  continue;
158
235
  }
159
- const l = s[1].toLowerCase(), p = u.slice(s[1].length), g = /\/\s*$/.test(p), x = ee(g ? p.replace(/\/\s*$/, "") : p);
160
- if (X.has(l)) {
161
- const $ = new RegExp(`</${l}\\s*>`, "i"), D = e.slice(a), L = $.exec(D);
162
- a = L ? a + L.index + L[0].length : e.length;
236
+ const l = d[1].toLowerCase(), $ = u.slice(d[1].length), h = /\/\s*$/.test($), p = be(h ? $.replace(/\/\s*$/, "") : $);
237
+ if (me.has(l)) {
238
+ const m = new RegExp(`</${l}\\s*>`, "i"), Y = e.slice(c), I = m.exec(Y);
239
+ c = I ? c + I.index + I[0].length : e.length;
163
240
  continue;
164
241
  }
165
- const M = t[t.length - 1];
166
- if (M) {
167
- const $ = J.get(M.tag);
168
- $ != null && $.has(l) && t.pop();
242
+ const A = n[n.length - 1];
243
+ if (A) {
244
+ const m = ge.get(A.tag);
245
+ m != null && m.has(l) && n.pop();
169
246
  }
170
- const N = { type: "element", tag: l, attrs: x, children: [] };
171
- r().push(N), !g && !z.has(l) && t.push(N);
247
+ const z = { type: "element", tag: l, attrs: p, children: [] };
248
+ r().push(z), !h && !W.has(l) && n.push(z);
172
249
  }
173
- return n;
250
+ return t;
174
251
  }
175
- function R(e) {
176
- let n = "";
177
- for (const t of e) {
178
- if (t.type === "text") {
179
- n += h(t.value);
252
+ function M(e) {
253
+ let t = "";
254
+ for (const n of e) {
255
+ if (n.type === "text") {
256
+ t += g(n.value);
180
257
  continue;
181
258
  }
182
- const r = Object.entries(t.attrs).map(([i, o]) => o === "" ? ` ${i}` : ` ${i}="${f(o)}"`).join("");
183
- if (z.has(t.tag)) {
184
- n += `<${t.tag}${r}>`;
259
+ const r = Object.entries(n.attrs).map(([i, o]) => o === "" ? ` ${i}` : ` ${i}="${f(o)}"`).join("");
260
+ if (W.has(n.tag)) {
261
+ t += `<${n.tag}${r}>`;
185
262
  continue;
186
263
  }
187
- n += `<${t.tag}${r}>${R(t.children)}</${t.tag}>`;
264
+ t += `<${n.tag}${r}>${M(n.children)}</${n.tag}>`;
188
265
  }
189
- return n;
266
+ return t;
190
267
  }
191
- function I(e) {
192
- let n = "";
193
- for (const t of e) {
194
- if (t.type === "text") {
195
- n += t.value;
268
+ function R(e) {
269
+ let t = "";
270
+ for (const n of e) {
271
+ if (n.type === "text") {
272
+ t += n.value;
196
273
  continue;
197
274
  }
198
- if (t.tag === "br") {
199
- n += `
275
+ if (n.tag === "br") {
276
+ t += `
200
277
  `;
201
278
  continue;
202
279
  }
203
- n += I(t.children);
280
+ t += R(n.children);
204
281
  }
205
- return n;
282
+ return t;
206
283
  }
207
- const te = /* @__PURE__ */ new Set([
284
+ const ke = /* @__PURE__ */ new Set([
208
285
  "address",
209
286
  "article",
210
287
  "aside",
@@ -242,42 +319,43 @@ const te = /* @__PURE__ */ new Set([
242
319
  "tr",
243
320
  "ul"
244
321
  ]);
245
- function A(e) {
246
- let n = "";
247
- for (const t of e) {
248
- if (t.type === "text") {
249
- n += t.value;
322
+ function x(e) {
323
+ let t = "";
324
+ for (const n of e) {
325
+ if (n.type === "text") {
326
+ t += n.value;
250
327
  continue;
251
328
  }
252
- if (t.tag === "br") {
253
- n += `
329
+ if (n.tag === "br") {
330
+ t += `
254
331
  `;
255
332
  continue;
256
333
  }
257
- const r = te.has(t.tag);
258
- r && n !== "" && !n.endsWith(`
259
- `) && (n += `
260
- `), n += A(t.children), r && !n.endsWith(`
261
- `) && (n += `
334
+ const r = ke.has(n.tag);
335
+ r && t !== "" && !t.endsWith(`
336
+ `) && (t += `
337
+ `), t += x(n.children), r && !t.endsWith(`
338
+ `) && (t += `
262
339
  `);
263
340
  }
264
- return n;
341
+ return t;
265
342
  }
266
- function S(e, n) {
343
+ function _(e, t) {
267
344
  return e.filter(
268
- (t) => t.type === "element" && t.tag === n
345
+ (n) => n.type === "element" && n.tag === t
269
346
  );
270
347
  }
271
- const be = 1;
272
- function ne(e) {
273
- const n = e.version;
274
- return typeof n == "number" && Number.isFinite(n) && n > 0 ? n : 1;
348
+ const Ue = 1;
349
+ function we(e) {
350
+ const t = e.version;
351
+ return typeof t == "number" && Number.isFinite(t) && t > 0 ? t : 1;
275
352
  }
276
- const re = /* @__PURE__ */ new Set([
353
+ const ye = /* @__PURE__ */ new Set([
277
354
  "paragraph",
278
355
  "heading",
279
356
  "bulletList",
280
357
  "orderedList",
358
+ "taskList",
281
359
  "blockquote",
282
360
  "codeBlock",
283
361
  "image",
@@ -289,175 +367,225 @@ const re = /* @__PURE__ */ new Set([
289
367
  "importedHtml",
290
368
  "unknown"
291
369
  ]);
292
- function C(e) {
293
- return e.map((n) => F(n));
370
+ function O(e) {
371
+ return e.map((t) => K(t));
294
372
  }
295
- function F(e) {
296
- const n = re.has(e.kind) ? e.kind : "unknown", t = Math.max(ne(e), 1);
373
+ function K(e) {
374
+ const t = ye.has(e.kind) ? e.kind : "unknown", n = Math.max(we(e), 1);
297
375
  return {
298
376
  ...e,
299
- kind: n,
300
- version: t,
377
+ kind: t,
378
+ version: n,
301
379
  html: typeof e.html == "string" ? e.html : ""
302
380
  };
303
381
  }
304
- function ke(e, n = {}) {
305
- const t = n.blockIds !== !1, r = C(e).map((o) => q(o, { blockIds: t })).join("");
306
- return n.wrapper !== "content" ? r : `<div class="aeriz-wysiwyg aeriz-wysiwyg-viewer"${n.theme ? ` data-theme="${n.theme}"` : ""}><div class="aw-content-wrap"><div class="aw-content">${r}</div></div></div>`;
382
+ function He(e, t = {}) {
383
+ const n = t.blockIds !== !1, r = O(e).map((o) => P(o, { blockIds: n })).join("");
384
+ return t.wrapper !== "content" ? r : `<div class="aeriz-wysiwyg aeriz-wysiwyg-viewer"${t.theme ? ` data-theme="${t.theme}"` : ""}><div class="aw-content-wrap"><div class="aw-content">${r}</div></div></div>`;
307
385
  }
308
- function we(e, n = {}) {
309
- return q(F(e), n);
386
+ function qe(e, t = {}) {
387
+ return P(K(e), t);
310
388
  }
311
- function q(e, n = {}) {
312
- const t = n.blockIds === !1 ? "" : ` ${Z}="${f(e.id)}"`, r = e.html, i = e.style ? ` style="${f(e.style)}"` : "";
389
+ function P(e, t = {}) {
390
+ const n = t.blockIds === !1 ? "" : ` ${re}="${f(e.id)}"`, r = Ae(e.html), i = (e.style ? ` style="${f(e.style)}"` : "") + Se(e.attributes), o = (c) => {
391
+ var s;
392
+ const a = ae(c, (s = e.attributes) == null ? void 0 : s.class);
393
+ return a ? ` class="${f(a)}"` : "";
394
+ };
313
395
  switch (e.kind) {
314
396
  case "paragraph":
315
- return `<p${t}${i}>${r || "<br>"}</p>`;
316
- case "unknown":
317
- return `<div${t}${i}>${r || "<br>"}</div>`;
397
+ return `<p${n}${i}>${r || "<br>"}</p>`;
398
+ case "unknown": {
399
+ const c = se(e.attrs.tag);
400
+ return `<${c}${n}${i}>${r || "<br>"}</${c}>`;
401
+ }
318
402
  case "heading": {
319
- const o = ie(e.attrs.level);
320
- return `<h${o}${t}${i}>${r || "<br>"}</h${o}>`;
403
+ const c = Ee(e.attrs.level);
404
+ return `<h${c}${n}${i}>${r || "<br>"}</h${c}>`;
321
405
  }
322
406
  case "bulletList":
323
- return `<ul${t}${i}>${r || "<li><br></li>"}</ul>`;
407
+ return `<ul${n}${i}>${r || "<li><br></li>"}</ul>`;
324
408
  case "orderedList":
325
- return `<ol${t}${i}>${r || "<li><br></li>"}</ol>`;
409
+ return `<ol${n}${i}>${r || "<li><br></li>"}</ol>`;
410
+ case "taskList":
411
+ return `<ul${o(le)}${n}${i}>${r || "<li><br></li>"}</ul>`;
326
412
  case "blockquote":
327
- return `<blockquote${t}${i}>${r || "<p><br></p>"}</blockquote>`;
413
+ return `<blockquote${n}${i}>${r || "<p><br></p>"}</blockquote>`;
328
414
  case "codeBlock": {
329
- if (r) return `<pre${t}${i}>${r}</pre>`;
330
- const o = e.attrs.language, a = o ? ` data-language="${f(o)}"` : "";
331
- return `<pre${t}${i}><code${a}></code></pre>`;
415
+ if (r) return `<pre${n}${i}>${r}</pre>`;
416
+ const c = e.attrs.language, a = c ? ` data-language="${f(c)}"` : "";
417
+ return `<pre${n}${i}><code${a}></code></pre>`;
332
418
  }
333
419
  case "table":
334
- return `<table${t}${i}>${r || oe(e.attrs.rows, e.attrs.cols)}</table>`;
420
+ return `<table${n}${i}>${r || xe(e.attrs.rows, e.attrs.cols)}</table>`;
335
421
  case "hr":
336
- return `<hr${t}${i}>`;
422
+ return `<hr${n}${i}>`;
337
423
  case "image":
338
- return r ? `<figure${t}${i}>${T(r)}</figure>` : ce(e.attrs, t, i);
424
+ return r ? `<figure${n}${i}>${L(r)}</figure>` : _e(e.attrs, n, i);
339
425
  case "youtube": {
340
- if (!r) return ae(e.attrs, t, i);
341
- const o = e.attrs.videoId;
342
- return `<div class="aw-youtube-embed"${o ? ` data-youtube-id="${f(o)}"` : ""}${t}${i}>${T(r)}</div>`;
426
+ if (!r)
427
+ return Le(e.attrs, n, i, o);
428
+ const c = D(e.attrs.videoId), a = c ? ` data-youtube-id="${f(c)}"` : "";
429
+ return `<div${o("aw-youtube-embed")}${a}${n}${i}>${L(r)}</div>`;
343
430
  }
344
431
  case "linkCard":
345
- return se(e.attrs, t, i, r);
432
+ return Ce(e.attrs, n, i, r, o);
346
433
  case "file":
347
- return le(e.attrs, t, i, r);
434
+ return Ie(e.attrs, n, i, r, o);
348
435
  case "importedHtml": {
349
- const o = e.attrs.importedStyle, a = e.attrs.importedClass, c = e.style ? i : o ? ` style="${f(o)}"` : "";
350
- return `<div data-imported-html="true"${a ? ` class="${f(a)}"` : ""}${c}${t}>${r}</div>`;
436
+ const c = e.attrs.importedStyle, a = e.style ? i : c ? ` style="${f(c)}"` : "";
437
+ return `<div data-imported-html="true"${o(e.attrs.importedClass)}${a}${n}>${r}</div>`;
351
438
  }
352
439
  default:
353
440
  return "";
354
441
  }
355
442
  }
356
- const _ = /aw-block-align-controls|aw-resize-handle/;
357
- function T(e) {
358
- if (!_.test(e)) return e;
359
- const n = y(e).filter(
360
- (t) => !(t.type === "element" && _.test(t.attrs.class ?? ""))
443
+ function Se(e) {
444
+ if (!e) return "";
445
+ let t = "";
446
+ for (const n of oe) {
447
+ if (n === "class") continue;
448
+ const r = e[n];
449
+ r === void 0 || r === "" || (t += ` ${n}="${f(r)}"`);
450
+ }
451
+ return t;
452
+ }
453
+ const B = /\s(href|src)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>]+))/gi;
454
+ function Ae(e) {
455
+ return !e || !Te(e) && !ve.test(e) ? e : M(S(e).map(G));
456
+ }
457
+ const ve = /<iframe[\s>]/i;
458
+ function Te(e) {
459
+ B.lastIndex = 0;
460
+ let t;
461
+ for (; (t = B.exec(e)) !== null; ) {
462
+ const n = (t[1] ?? "").toLowerCase(), r = y(t[2] ?? t[3] ?? t[4] ?? "");
463
+ if (!(n === "href" ? C(r) : T(r))) return !0;
464
+ }
465
+ return !1;
466
+ }
467
+ function G(e) {
468
+ if (e.type !== "element") return e;
469
+ const t = e.tag === "iframe", n = {};
470
+ for (const [r, i] of Object.entries(e.attrs))
471
+ r === "href" && !C(i) || r === "src" && !(t ? i.startsWith(N) : T(i)) || (n[r] = i);
472
+ return { ...e, attrs: n, children: e.children.map(G) };
473
+ }
474
+ const j = /aw-block-align-controls|aw-resize-handle/;
475
+ function L(e) {
476
+ if (!j.test(e)) return e;
477
+ const t = S(e).filter(
478
+ (n) => !(n.type === "element" && j.test(n.attrs.class ?? ""))
361
479
  );
362
- return R(n);
480
+ return M(t);
363
481
  }
364
- function ie(e) {
482
+ function Ee(e) {
365
483
  return e === void 0 || e < 1 ? 1 : e > 6 ? 6 : e;
366
484
  }
367
- function oe(e, n) {
368
- const t = Math.max(1, Number.isFinite(e) ? e : 1), r = Math.max(1, Number.isFinite(n) ? n : 1);
369
- return `<tbody>${`<tr>${"<td><br></td>".repeat(r)}</tr>`.repeat(t)}</tbody>`;
370
- }
371
- function ce(e, n, t) {
372
- const r = t || (e.wrapperStyle ? ` style="${f(e.wrapperStyle)}"` : ""), i = e.src ? ` src="${f(e.src)}"` : "", o = ` alt="${f(e.alt ?? "")}"`;
373
- return `<figure${n}${r}><img${i}${o}></figure>`;
374
- }
375
- function ae(e, n, t) {
376
- const r = e.videoId ?? "", i = t || (e.wrapperStyle ? ` style="${f(e.wrapperStyle)}"` : ""), o = r ? ` data-youtube-id="${f(r)}"` : "", a = r ? ` src="${f(`${O}${r}`)}"` : "";
377
- return `<div class="aw-youtube-embed"${o}${n}${i}><iframe${a} allow="${f(K)}" allowfullscreen frameborder="0" referrerpolicy="strict-origin-when-cross-origin"></iframe></div>`;
378
- }
379
- function se(e, n, t, r) {
380
- const i = e.href ?? "#", o = e.text && e.text.length > 0 ? e.text : j(i) || i, a = e.description ?? "", c = e.image ?? "", d = e.favicon ?? P(i), s = `<a class="${c ? "aw-link-card aw-link-card-with-image" : "aw-link-card"}" href="${f(i)}" target="_blank" rel="noopener"${n}${t}>`;
381
- if (r) return `${s}${T(r)}</a>`;
382
- let l = s;
383
- return c && (l += `<img class="aw-link-card-image" src="${f(c)}" alt="" loading="lazy">`), l += '<span class="aw-link-card-body">', l += `<span class="aw-link-card-title">${h(o)}</span>`, a && (l += `<span class="aw-link-card-desc">${h(a)}</span>`), l += '<span class="aw-link-card-url">', d && (l += `<img class="aw-link-card-favicon" src="${f(d)}" alt="" loading="lazy">`), l += `<span class="aw-link-card-url-text">${h(i)}</span>`, l += "</span></span></a>", l;
384
- }
385
- function le(e, n, t, r) {
386
- const i = e.fileSrc ? ` href="${f(e.fileSrc)}"` : "", o = e.fileName ? ` data-file-name="${f(e.fileName)}"` : "", a = e.fileSize !== void 0 ? ` data-file-size="${f(String(e.fileSize))}"` : "", c = e.fileType ? ` data-file-type="${f(e.fileType)}"` : "", d = ` download="${f(e.fileName ?? "")}"`, u = [], s = W(e.fileName, e.fileType);
387
- s && u.push(s), e.fileSize !== void 0 && u.push(U(e.fileSize));
388
- const l = `<a class="aw-file-attachment" target="_blank" rel="noopener"${i}${d}${o}${a}${c}${n}${t}>`;
389
- if (r) return `${l}${T(r)}</a>`;
390
- let p = l;
391
- return p += `<span class="aw-file-icon" aria-hidden="true">${V}</span>`, p += '<span class="aw-file-meta">', p += `<span class="aw-file-name">${h(e.fileName ?? Y)}</span>`, u.length > 0 && (p += `<span class="aw-file-info">${h(u.join(" · "))}</span>`), p += "</span>", p += `<span class="aw-file-action" aria-hidden="true">${G}</span>`, p += "</a>", p;
392
- }
393
- const ue = /([\\`*_[\]<])/g, de = /^([#>|+-]|\d+\.)/;
394
- function ye(e, n = {}) {
395
- const t = n.bullet ?? "-", r = n.gfmTables !== !1, i = [];
396
- for (const o of C(e)) {
397
- const a = fe(o, t, r);
398
- a !== "" && i.push(a);
485
+ function xe(e, t) {
486
+ const n = Math.max(1, Number.isFinite(e) ? e : 1), r = Math.max(1, Number.isFinite(t) ? t : 1);
487
+ return `<tbody>${`<tr>${"<td><br></td>".repeat(r)}</tr>`.repeat(n)}</tbody>`;
488
+ }
489
+ function _e(e, t, n) {
490
+ const r = n || (e.wrapperStyle ? ` style="${f(e.wrapperStyle)}"` : ""), i = T(e.src), o = i ? ` src="${f(i)}"` : "", c = ` alt="${f(e.alt ?? "")}"`, a = e.caption ? `<figcaption>${g(e.caption)}</figcaption>` : "";
491
+ return `<figure${t}${r}><img${o}${c}>${a}</figure>`;
492
+ }
493
+ function Le(e, t, n, r) {
494
+ const i = D(e.videoId), o = n || (e.wrapperStyle ? ` style="${f(e.wrapperStyle)}"` : ""), c = i ? ` data-youtube-id="${f(i)}"` : "", a = i ? ` src="${f(`${N}${i}`)}"` : "";
495
+ return `<div${r("aw-youtube-embed")}${c}${t}${o}><iframe${a} allow="${f(te)}" allowfullscreen frameborder="0" referrerpolicy="strict-origin-when-cross-origin"></iframe></div>`;
496
+ }
497
+ function Ce(e, t, n, r, i) {
498
+ const o = C(e.href) || "#", c = e.text && e.text.length > 0 ? e.text : U(o) || o, a = e.description ?? "", s = T(e.image), u = e.favicon ? T(e.favicon) : J(o), l = `<a${i(s ? "aw-link-card aw-link-card-with-image" : "aw-link-card")} href="${f(o)}" target="_blank" rel="noopener"${t}${n}>`;
499
+ if (r) return `${l}${L(r)}</a>`;
500
+ let $ = l;
501
+ return s && ($ += `<img class="aw-link-card-image" src="${f(s)}" alt="" loading="lazy">`), $ += '<span class="aw-link-card-body">', $ += `<span class="aw-link-card-title">${g(c)}</span>`, a && ($ += `<span class="aw-link-card-desc">${g(a)}</span>`), $ += '<span class="aw-link-card-url">', u && ($ += `<img class="aw-link-card-favicon" src="${f(u)}" alt="" loading="lazy">`), $ += `<span class="aw-link-card-url-text">${g(o)}</span>`, $ += "</span></span></a>", $;
502
+ }
503
+ function Ie(e, t, n, r, i) {
504
+ const o = C(e.fileSrc), c = o ? ` href="${f(o)}"` : "", a = e.fileName ? ` data-file-name="${f(e.fileName)}"` : "", s = e.fileSize !== void 0 ? ` data-file-size="${f(String(e.fileSize))}"` : "", u = e.fileType ? ` data-file-type="${f(e.fileType)}"` : "", d = ` download="${f(e.fileName ?? "")}"`, l = [], $ = X(e.fileName, e.fileType);
505
+ $ && l.push($), e.fileSize !== void 0 && l.push(Z(e.fileSize));
506
+ const h = `<a${i("aw-file-attachment")} target="_blank" rel="noopener"${c}${d}${a}${s}${u}${t}${n}>`;
507
+ if (r) return `${h}${L(r)}</a>`;
508
+ let p = h;
509
+ return p += `<span class="aw-file-icon" aria-hidden="true">${Q}</span>`, p += '<span class="aw-file-meta">', p += `<span class="aw-file-name">${g(e.fileName ?? ne)}</span>`, l.length > 0 && (p += `<span class="aw-file-info">${g(l.join(" · "))}</span>`), p += "</span>", p += `<span class="aw-file-action" aria-hidden="true">${ee}</span>`, p += "</a>", p;
510
+ }
511
+ const Ne = /([\\`*_[\]<])/g, Me = /^([#>|+-]|\d+\.)/;
512
+ function De(e, t = {}) {
513
+ const n = t.bullet ?? "-", r = t.gfmTables !== !1, i = [];
514
+ for (const o of O(e)) {
515
+ const c = Re(o, n, r);
516
+ c !== "" && i.push(c);
399
517
  }
400
518
  return i.length > 0 ? `${i.join(`
401
519
 
402
520
  `)}
403
521
  ` : "";
404
522
  }
405
- function fe(e, n, t) {
406
- var i, o, a;
407
- const r = y(e.html);
523
+ function Re(e, t, n) {
524
+ var i, o, c, a;
525
+ const r = S(e.html);
408
526
  switch (e.kind) {
409
527
  case "paragraph":
410
528
  case "unknown": {
411
- const c = m(r).trim();
412
- return c === "" ? "" : B(c);
529
+ const s = k(r).trim();
530
+ return s === "" ? "" : F(s);
413
531
  }
414
532
  case "heading": {
415
- const c = Math.min(6, Math.max(1, e.attrs.level ?? 1)), d = m(r).trim();
416
- return d === "" ? "" : `${"#".repeat(c)} ${d}`;
533
+ const s = Math.min(6, Math.max(1, e.attrs.level ?? 1)), u = k(r).trim();
534
+ return u === "" ? "" : `${"#".repeat(s)} ${u}`;
417
535
  }
418
536
  case "bulletList":
419
- return E(r, { ordered: !1, bullet: n, depth: 0 });
537
+ return E(r, { ordered: !1, bullet: t, depth: 0 });
420
538
  case "orderedList":
421
- return E(r, { ordered: !0, bullet: n, depth: 0 });
539
+ return E(r, { ordered: !0, bullet: t, depth: 0 });
540
+ case "taskList":
541
+ return E(r, {
542
+ ordered: !1,
543
+ bullet: t,
544
+ depth: 0,
545
+ task: !0
546
+ });
422
547
  case "blockquote": {
423
- const c = S(r, "p"), u = (c.length > 0 ? c.map((s) => m(s.children).trim()) : [m(r).trim()]).filter((s) => s !== "").join(`
548
+ const s = _(r, "p"), d = (s.length > 0 ? s.map((l) => k(l.children).trim()) : [k(r).trim()]).filter((l) => l !== "").join(`
424
549
 
425
550
  `).split(`
426
- `).map((s) => s === "" ? ">" : `> ${s}`);
427
- return u.length > 0 && u[0] !== void 0 ? u.join(`
551
+ `).map((l) => l === "" ? ">" : `> ${l}`);
552
+ return d.length > 0 && d[0] !== void 0 ? d.join(`
428
553
  `) : "";
429
554
  }
430
555
  case "codeBlock": {
431
- const c = S(r, "code")[0], d = I(c ? c.children : r).replace(/\n$/, ""), u = e.attrs.language ?? (c == null ? void 0 : c.attrs["data-language"]) ?? "", s = "`".repeat(Math.max(3, H(d) + 1));
432
- return `${s}${u}
433
- ${d}
434
- ${s}`;
556
+ const s = _(r, "code")[0], u = R(s ? s.children : r).replace(/\n$/, ""), d = e.attrs.language ?? (s == null ? void 0 : s.attrs["data-language"]) ?? "", l = "`".repeat(Math.max(3, V(u) + 1));
557
+ return `${l}${d}
558
+ ${u}
559
+ ${l}`;
435
560
  }
436
561
  case "image": {
437
- const c = e.attrs.src ?? "";
438
- return c === "" ? "" : `![${k(e.attrs.alt ?? "")}](${v(c)})`;
562
+ const s = e.attrs.src ?? "";
563
+ if (s === "") return "";
564
+ const u = `![${b(e.attrs.alt ?? "")}](${v(s)})`, d = (i = e.attrs.caption) == null ? void 0 : i.trim();
565
+ return d ? `${u}
566
+ *${b(d)}*` : u;
439
567
  }
440
568
  case "table":
441
- return t ? pe(r) : `<table>${e.html}</table>`;
569
+ return n ? Oe(r) : `<table>${e.html}</table>`;
442
570
  case "hr":
443
571
  return "---";
444
572
  case "linkCard": {
445
- const c = e.attrs.href ?? "";
446
- if (c === "") return "";
447
- const d = ((i = e.attrs.text) == null ? void 0 : i.trim()) || c, u = `[${k(d)}](${v(c)})`, s = (o = e.attrs.description) == null ? void 0 : o.trim();
448
- return s ? `${u}
573
+ const s = e.attrs.href ?? "";
574
+ if (s === "") return "";
575
+ const u = ((o = e.attrs.text) == null ? void 0 : o.trim()) || s, d = `[${b(u)}](${v(s)})`, l = (c = e.attrs.description) == null ? void 0 : c.trim();
576
+ return l ? `${d}
449
577
 
450
- ${B(k(s))}` : u;
578
+ ${F(b(l))}` : d;
451
579
  }
452
580
  case "youtube": {
453
- const c = e.attrs.videoId;
454
- return c ? `[YouTube](${O}${encodeURIComponent(c)})` : "";
581
+ const s = e.attrs.videoId;
582
+ return s ? `[YouTube](${N}${encodeURIComponent(s)})` : "";
455
583
  }
456
584
  case "file": {
457
- const c = e.attrs.fileSrc ?? "";
458
- if (c === "") return "";
459
- const d = ((a = e.attrs.fileName) == null ? void 0 : a.trim()) || c;
460
- return `[${k(d)}](${v(c)})`;
585
+ const s = e.attrs.fileSrc ?? "";
586
+ if (s === "") return "";
587
+ const u = ((a = e.attrs.fileName) == null ? void 0 : a.trim()) || s;
588
+ return `[${b(u)}](${v(s)})`;
461
589
  }
462
590
  case "importedHtml":
463
591
  return e.html.trim();
@@ -465,202 +593,206 @@ ${B(k(s))}` : u;
465
593
  return "";
466
594
  }
467
595
  }
468
- function E(e, n) {
469
- const t = S(e, "li");
470
- if (t.length === 0) return "";
471
- const r = " ".repeat(n.depth), i = [];
472
- return t.forEach((o, a) => {
473
- const c = [], d = [];
474
- for (const g of o.children)
475
- g.type === "element" && (g.tag === "ul" || g.tag === "ol") ? d.push(g) : c.push(g);
476
- const u = n.ordered ? `${a + 1}.` : n.bullet, s = m(c).trim(), l = `${r}${" ".repeat(u.length + 1)}`, p = s.split(`
596
+ function E(e, t) {
597
+ const n = _(e, "li");
598
+ if (n.length === 0) return "";
599
+ const r = " ".repeat(t.depth), i = [];
600
+ return n.forEach((o, c) => {
601
+ const a = [], s = [];
602
+ for (const p of o.children)
603
+ p.type === "element" && (p.tag === "ul" || p.tag === "ol") ? s.push(p) : a.push(p);
604
+ const u = t.ordered ? `${c + 1}.` : t.bullet, d = t.task ? `${u} ${o.attrs[ue] === "true" ? "[x]" : "[ ]"}` : u, l = k(a).trim(), $ = `${r}${" ".repeat(d.length + 1)}`, h = l.split(`
477
605
  `).join(`
478
- ${l}`);
479
- i.push(`${r}${u} ${p}`);
480
- for (const g of d) {
481
- const x = E(g.children, {
482
- ordered: g.tag === "ol",
483
- bullet: n.bullet,
484
- depth: n.depth + 1
606
+ ${$}`);
607
+ i.push(`${r}${d} ${h}`);
608
+ for (const p of s) {
609
+ const A = E(p.children, {
610
+ ordered: p.tag === "ol",
611
+ bullet: t.bullet,
612
+ depth: t.depth + 1
485
613
  });
486
- x !== "" && i.push(x);
614
+ A !== "" && i.push(A);
487
615
  }
488
616
  }), i.join(`
489
617
  `);
490
618
  }
491
- function pe(e) {
492
- const n = [], t = (s) => {
493
- for (const l of s)
619
+ function Oe(e) {
620
+ const t = [], n = (d) => {
621
+ for (const l of d)
494
622
  if (l.type === "element") {
495
623
  if (l.tag === "tr") {
496
- n.push(l);
624
+ t.push(l);
497
625
  continue;
498
626
  }
499
- (l.tag === "tbody" || l.tag === "thead" || l.tag === "tfoot") && t(l.children);
627
+ (l.tag === "tbody" || l.tag === "thead" || l.tag === "tfoot") && n(l.children);
500
628
  }
501
629
  };
502
- if (t(e), n.length === 0) return "";
503
- const r = n.map(
504
- (s) => s.children.filter(
630
+ if (n(e), t.length === 0) return "";
631
+ const r = t.map(
632
+ (d) => d.children.filter(
505
633
  (l) => l.type === "element" && (l.tag === "td" || l.tag === "th")
506
- ).map((l) => $e(l.children))
507
- ), i = r.reduce((s, l) => Math.max(s, l.length), 0);
634
+ ).map((l) => ze(l.children))
635
+ ), i = r.reduce((d, l) => Math.max(d, l.length), 0);
508
636
  if (i === 0) return "";
509
- const o = (s) => s.length === i ? s : [...s, ...Array(i - s.length).fill("")], [a, ...c] = r.map(o);
637
+ const o = (d) => d.length === i ? d : [...d, ...Array(i - d.length).fill("")], [c, ...a] = r.map(o);
510
638
  return [
511
- `| ${(a ?? Array(i).fill("")).join(" | ")} |`,
639
+ `| ${(c ?? Array(i).fill("")).join(" | ")} |`,
512
640
  `| ${Array(i).fill("---").join(" | ")} |`,
513
- ...c.map((s) => `| ${s.join(" | ")} |`)
641
+ ...a.map((d) => `| ${d.join(" | ")} |`)
514
642
  ].join(`
515
643
  `);
516
644
  }
517
- function $e(e) {
518
- return m(e, { inTableCell: !0 }).replace(/\n+/g, "<br>").replace(/\|/g, "\\|").trim();
645
+ function ze(e) {
646
+ return k(e, { inTableCell: !0 }).replace(/\n+/g, "<br>").replace(/\|/g, "\\|").trim();
519
647
  }
520
- function m(e, n = {}) {
521
- let t = "";
648
+ function k(e, t = {}) {
649
+ let n = "";
522
650
  for (const r of e) {
523
651
  if (r.type === "text") {
524
- t += k(r.value);
652
+ n += b(r.value);
525
653
  continue;
526
654
  }
527
- const i = () => m(r.children, n);
655
+ const i = () => k(r.children, t);
528
656
  switch (r.tag) {
529
657
  case "br":
530
- t += n.inTableCell ? `
658
+ n += t.inTableCell ? `
531
659
  ` : `
532
660
  `;
533
661
  break;
534
662
  case "b":
535
663
  case "strong": {
536
664
  const o = i();
537
- t += o.trim() === "" ? o : `**${o}**`;
665
+ n += o.trim() === "" ? o : `**${o}**`;
538
666
  break;
539
667
  }
540
668
  case "i":
541
669
  case "em": {
542
670
  const o = i();
543
- t += o.trim() === "" ? o : `*${o}*`;
671
+ n += o.trim() === "" ? o : `*${o}*`;
544
672
  break;
545
673
  }
546
674
  case "s":
547
675
  case "del":
548
676
  case "strike": {
549
677
  const o = i();
550
- t += o.trim() === "" ? o : `~~${o}~~`;
678
+ n += o.trim() === "" ? o : `~~${o}~~`;
551
679
  break;
552
680
  }
553
681
  case "code": {
554
- const o = I(r.children), a = "`".repeat(H(o) + 1), c = o.startsWith("`") || o.endsWith("`") ? " " : "";
555
- t += `${a}${c}${o}${c}${a}`;
682
+ const o = R(r.children), c = "`".repeat(V(o) + 1), a = o.startsWith("`") || o.endsWith("`") ? " " : "";
683
+ n += `${c}${a}${o}${a}${c}`;
556
684
  break;
557
685
  }
558
686
  case "a": {
559
- const o = r.attrs.href, a = i();
560
- t += o ? `[${a}](${v(o)})` : a;
687
+ const o = r.attrs.href, c = i();
688
+ n += o ? `[${c}](${v(o)})` : c;
561
689
  break;
562
690
  }
563
691
  case "img": {
564
692
  const o = r.attrs.src;
565
- o && (t += `![${k(r.attrs.alt ?? "")}](${v(o)})`);
693
+ o && (n += `![${b(r.attrs.alt ?? "")}](${v(o)})`);
566
694
  break;
567
695
  }
568
696
  case "u":
569
697
  case "sub":
570
698
  case "sup":
571
699
  case "mark":
572
- t += `<${r.tag}>${i()}</${r.tag}>`;
700
+ n += `<${r.tag}>${i()}</${r.tag}>`;
573
701
  break;
574
702
  default:
575
- t += i();
703
+ n += i();
576
704
  break;
577
705
  }
578
706
  }
579
- return t;
707
+ return n;
580
708
  }
581
- function k(e) {
582
- return e.replace(ue, "\\$1");
709
+ function b(e) {
710
+ return e.replace(Ne, "\\$1");
583
711
  }
584
- function B(e) {
585
- return e.replace(de, "\\$1");
712
+ function F(e) {
713
+ return e.replace(Me, "\\$1");
586
714
  }
587
- function H(e) {
588
- let n = 0, t = 0;
715
+ function V(e) {
716
+ let t = 0, n = 0;
589
717
  for (const r of e)
590
- r === "`" ? (t += 1, t > n && (n = t)) : t = 0;
591
- return n;
718
+ r === "`" ? (n += 1, n > t && (t = n)) : n = 0;
719
+ return t;
592
720
  }
593
721
  function v(e) {
594
- const n = e.trim();
595
- return /[\s()]/.test(n) ? `<${n.replace(/[<>]/g, "")}>` : n;
722
+ const t = e.trim();
723
+ return /[\s()]/.test(t) ? `<${t.replace(/[<>]/g, "")}>` : t;
596
724
  }
597
- function ve(e, n = {}) {
598
- const t = n.blockSeparator ?? `
725
+ function We(e, t = {}) {
726
+ const n = t.blockSeparator ?? `
599
727
 
600
- `, r = n.cellSeparator ?? " ", i = [];
601
- for (const o of C(e)) {
602
- const a = ge(o, r);
603
- a !== "" && i.push(a);
728
+ `, r = t.cellSeparator ?? " ", i = [];
729
+ for (const o of O(e)) {
730
+ const c = Be(o, r);
731
+ c !== "" && i.push(c);
604
732
  }
605
- return i.join(t);
733
+ return i.join(n);
606
734
  }
607
- function ge(e, n) {
735
+ function Be(e, t) {
608
736
  switch (e.kind) {
609
737
  case "hr":
610
738
  case "youtube":
611
739
  return "";
612
740
  case "image":
613
- return b(e.attrs.alt ?? "");
741
+ return w(
742
+ [e.attrs.alt, e.attrs.caption].filter(Boolean).join(`
743
+ `)
744
+ );
614
745
  case "linkCard":
615
- return b(e.attrs.text ?? e.attrs.href ?? "");
746
+ return w(e.attrs.text ?? e.attrs.href ?? "");
616
747
  case "file":
617
- return b(e.attrs.fileName ?? "");
748
+ return w(e.attrs.fileName ?? "");
618
749
  case "bulletList":
619
750
  case "orderedList":
620
- return S(y(e.html), "li").map((r) => b(A(r.children))).filter((r) => r !== "").join(`
751
+ case "taskList":
752
+ return _(S(e.html), "li").map((r) => w(x(r.children))).filter((r) => r !== "").join(`
621
753
  `);
622
754
  case "table":
623
- return me(y(e.html), n);
755
+ return je(S(e.html), t);
624
756
  default:
625
- return b(A(y(e.html)));
757
+ return w(x(S(e.html)));
626
758
  }
627
759
  }
628
- function me(e, n) {
629
- const t = [], r = (i) => {
760
+ function je(e, t) {
761
+ const n = [], r = (i) => {
630
762
  for (const o of i)
631
- o.type === "element" && (o.tag === "tr" ? t.push(o) : ["tbody", "thead", "tfoot"].includes(o.tag) && r(o.children));
763
+ o.type === "element" && (o.tag === "tr" ? n.push(o) : ["tbody", "thead", "tfoot"].includes(o.tag) && r(o.children));
632
764
  };
633
- return r(e), t.map(
765
+ return r(e), n.map(
634
766
  (i) => i.children.filter(
635
767
  (o) => o.type === "element" && (o.tag === "td" || o.tag === "th")
636
- ).map((o) => b(A(o.children)).replace(/\n+/g, " ")).join(n)
637
- ).filter((i) => i.replace(new RegExp(he(n), "g"), "").trim() !== "").join(`
768
+ ).map((o) => w(x(o.children)).replace(/\n+/g, " ")).join(t)
769
+ ).filter((i) => i.replace(new RegExp(Fe(t), "g"), "").trim() !== "").join(`
638
770
  `);
639
771
  }
640
- function b(e) {
641
- return e.replace(/[​-‍]/g, "").split(`
642
- `).map((n) => n.replace(/[^\S\n]+/g, " ").trim()).join(`
772
+ function w(e) {
773
+ return e.replace(ie, "").split(`
774
+ `).map((t) => t.replace(/[^\S\n]+/g, " ").trim()).join(`
643
775
  `).replace(/\n{3,}/g, `
644
776
 
645
777
  `).trim();
646
778
  }
647
- function he(e) {
779
+ function Fe(e) {
648
780
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
649
781
  }
650
782
  export {
651
- be as SNAPSHOT_VERSION,
652
- ye as blocksToMarkdown,
653
- ve as blocksToPlainText,
654
- w as decodeEntities,
783
+ Ue as SNAPSHOT_VERSION,
784
+ De as blocksToMarkdown,
785
+ We as blocksToPlainText,
786
+ y as decodeEntities,
655
787
  f as escapeAttr,
656
- h as escapeHtml,
657
- y as parseHtmlFragment,
658
- we as renderBlockToHTML,
659
- ke as renderBlocksToHTML,
660
- R as serializeNodes,
661
- ne as snapshotVersionOf,
662
- I as textOf,
663
- A as textWithBlockBreaks,
664
- F as upgradeSnapshot,
665
- C as upgradeSnapshots
788
+ g as escapeHtml,
789
+ S as parseHtmlFragment,
790
+ qe as renderBlockToHTML,
791
+ He as renderBlocksToHTML,
792
+ M as serializeNodes,
793
+ we as snapshotVersionOf,
794
+ R as textOf,
795
+ x as textWithBlockBreaks,
796
+ K as upgradeSnapshot,
797
+ O as upgradeSnapshots
666
798
  };