@clevertask/scribe 0.1.12 → 0.1.14

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 (91) hide show
  1. package/README.md +51 -1
  2. package/dist/{BarMenu-5M9g9Y1j.js → BarMenu-x4sf3ECS.js} +1 -1
  3. package/dist/assets/index.css +1 -1
  4. package/dist/components/Menu/BarMenu.js +1 -1
  5. package/dist/components/Menu/BubbleMenu.js +2 -2
  6. package/dist/components/Menu/CalloutBubbleMenu.js +2 -2
  7. package/dist/components/Menu/ExternalLinkDisplayOptions.d.ts +13 -0
  8. package/dist/components/Menu/ExternalLinkDisplayOptions.d.ts.map +1 -0
  9. package/dist/components/Menu/ExternalLinkDisplayOptions.js +90 -0
  10. package/dist/components/Menu/LinkBubbleMenu.d.ts.map +1 -1
  11. package/dist/components/Menu/LinkBubbleMenu.js +161 -61
  12. package/dist/components/Menu/LinkEditor.d.ts +9 -0
  13. package/dist/components/Menu/LinkEditor.d.ts.map +1 -1
  14. package/dist/components/Menu/LinkEditor.js +117 -64
  15. package/dist/components/Menu/Mobile/ListOptionBar.js +1 -1
  16. package/dist/components/Menu/TableBubbleMenu.js +2 -2
  17. package/dist/components/Menu/contextualMenuOwner.d.ts +1 -1
  18. package/dist/components/Menu/contextualMenuOwner.d.ts.map +1 -1
  19. package/dist/components/Menu/contextualMenuOwner.js +9 -6
  20. package/dist/components/Menu/linkBubbleMenuPlugin.d.ts +24 -1
  21. package/dist/components/Menu/linkBubbleMenuPlugin.d.ts.map +1 -1
  22. package/dist/components/Menu/linkBubbleMenuPlugin.js +43 -6
  23. package/dist/components/Scribe/extension/callout.js +1 -1
  24. package/dist/components/Scribe/extension/emoji/suggest.js +1 -1
  25. package/dist/components/Scribe/extension/extension-link.js +1 -1
  26. package/dist/components/Scribe/extension/extension-markdown-paste.js +2 -2
  27. package/dist/components/Scribe/extension/extension-selectedText.js +1 -1
  28. package/dist/components/Scribe/extension/external-link-preview/attributes.d.ts +18 -0
  29. package/dist/components/Scribe/extension/external-link-preview/attributes.d.ts.map +1 -0
  30. package/dist/components/Scribe/extension/external-link-preview/attributes.js +82 -0
  31. package/dist/components/Scribe/extension/external-link-preview/commands.d.ts +53 -0
  32. package/dist/components/Scribe/extension/external-link-preview/commands.d.ts.map +1 -0
  33. package/dist/components/Scribe/extension/external-link-preview/commands.js +134 -0
  34. package/dist/components/Scribe/extension/external-link-preview/index.d.ts +13 -0
  35. package/dist/components/Scribe/extension/external-link-preview/index.d.ts.map +1 -0
  36. package/dist/components/Scribe/extension/external-link-preview/index.js +138 -0
  37. package/dist/components/Scribe/extension/external-link-preview/node-view.d.ts +3 -0
  38. package/dist/components/Scribe/extension/external-link-preview/node-view.d.ts.map +1 -0
  39. package/dist/components/Scribe/extension/external-link-preview/node-view.js +97 -0
  40. package/dist/components/Scribe/extension/external-link-preview/normalization.d.ts +7 -0
  41. package/dist/components/Scribe/extension/external-link-preview/normalization.d.ts.map +1 -0
  42. package/dist/components/Scribe/extension/external-link-preview/normalization.js +21 -0
  43. package/dist/components/Scribe/extension/external-link-preview/paste.d.ts +8 -0
  44. package/dist/components/Scribe/extension/external-link-preview/paste.d.ts.map +1 -0
  45. package/dist/components/Scribe/extension/external-link-preview/paste.js +54 -0
  46. package/dist/components/Scribe/extension/external-link-preview/policy.d.ts +7 -0
  47. package/dist/components/Scribe/extension/external-link-preview/policy.d.ts.map +1 -0
  48. package/dist/components/Scribe/extension/external-link-preview/policy.js +38 -0
  49. package/dist/components/Scribe/extension/external-link-preview/render-html.d.ts +7 -0
  50. package/dist/components/Scribe/extension/external-link-preview/render-html.d.ts.map +1 -0
  51. package/dist/components/Scribe/extension/external-link-preview/render-html.js +62 -0
  52. package/dist/components/Scribe/extension/external-link-preview/resolver.d.ts +23 -0
  53. package/dist/components/Scribe/extension/external-link-preview/resolver.d.ts.map +1 -0
  54. package/dist/components/Scribe/extension/external-link-preview/resolver.js +118 -0
  55. package/dist/components/Scribe/extension/external-link-preview/serialization.d.ts +10 -0
  56. package/dist/components/Scribe/extension/external-link-preview/serialization.d.ts.map +1 -0
  57. package/dist/components/Scribe/extension/external-link-preview/serialization.js +69 -0
  58. package/dist/components/Scribe/extension/external-link-preview/types.d.ts +53 -0
  59. package/dist/components/Scribe/extension/external-link-preview/types.d.ts.map +1 -0
  60. package/dist/components/Scribe/extension/external-link-preview/types.js +4 -0
  61. package/dist/components/Scribe/extension/index.d.ts +1 -1
  62. package/dist/components/Scribe/extension/index.d.ts.map +1 -1
  63. package/dist/components/Scribe/extension/index.js +1 -1
  64. package/dist/components/Scribe/extension/resizable-table.js +1 -1
  65. package/dist/components/Scribe/extension/slashCommand/index.js +1 -1
  66. package/dist/components/Scribe/extension/slashCommand/renderItems.js +1 -1
  67. package/dist/components/Scribe/extension/tableOfContents.js +1 -1
  68. package/dist/components/Scribe/index.d.ts +14 -0
  69. package/dist/components/Scribe/index.d.ts.map +1 -1
  70. package/dist/components/Scribe/index.js +5 -5
  71. package/dist/{dist-Dw4STOPE.js → dist-DDjaA1Pn.js} +309 -150
  72. package/dist/{dist-DFua_Xbu.js → dist-tNcpTcFT.js} +893 -430
  73. package/dist/{extension-_8uh0Ik9.js → extension-dRUfQQo6.js} +2097 -2059
  74. package/dist/{extension-link-CjfUZ90W.js → extension-link-RYtPpHwt.js} +52 -51
  75. package/dist/{html-to-markdown-C920nQtn.js → html-to-markdown-nbQ6qHyO.js} +173 -162
  76. package/dist/main.css +148 -0
  77. package/dist/main.d.ts +1 -0
  78. package/dist/main.d.ts.map +1 -1
  79. package/dist/main.js +12 -9
  80. package/dist/{markdown-to-html-CW0Nb9Ye.js → markdown-to-html-B-KKCZRs.js} +115 -111
  81. package/dist/{menus-_EXlLMjz.js → menus-U2HdvQnu.js} +18 -18
  82. package/dist/{resizable-table-Ddw3l6DJ.js → resizable-table-m0AzovsZ.js} +42 -24
  83. package/dist/{slashCommand-CxX07Nbk.js → slashCommand-CtvgnL0Z.js} +2 -2
  84. package/dist/utils/create-scribe-editor.d.ts +4 -1
  85. package/dist/utils/create-scribe-editor.d.ts.map +1 -1
  86. package/dist/utils/html-to-markdown.d.ts.map +1 -1
  87. package/dist/utils/html-to-markdown.js +1 -1
  88. package/dist/utils/index.js +7 -7
  89. package/dist/utils/markdown-to-html.d.ts.map +1 -1
  90. package/dist/utils/markdown-to-html.js +1 -1
  91. package/package.json +48 -48
@@ -1,30 +1,31 @@
1
1
  import { t as e } from "./purify.es-BES4pJF7.js";
2
+ import { normalizeExternalLinkPreviewElement as t, normalizeExternalLinkPreviewsInTree as n } from "./components/Scribe/extension/external-link-preview/serialization.js";
2
3
  //#region node_modules/.pnpm/turndown@7.2.4/node_modules/turndown/lib/turndown.browser.es.js
3
- function t(e) {
4
+ function r(e) {
4
5
  for (var t = 1; t < arguments.length; t++) {
5
6
  var n = arguments[t];
6
7
  for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]);
7
8
  }
8
9
  return e;
9
10
  }
10
- function n(e, t) {
11
+ function i(e, t) {
11
12
  return Array(t + 1).join(e);
12
13
  }
13
- function r(e) {
14
+ function a(e) {
14
15
  return e.replace(/^\n*/, "");
15
16
  }
16
- function i(e) {
17
+ function o(e) {
17
18
  for (var t = e.length; t > 0 && e[t - 1] === "\n";) t--;
18
19
  return e.substring(0, t);
19
20
  }
20
- function a(e) {
21
- return i(r(e));
22
- }
23
- var o = /* @__PURE__ */ "ADDRESS.ARTICLE.ASIDE.AUDIO.BLOCKQUOTE.BODY.CANVAS.CENTER.DD.DIR.DIV.DL.DT.FIELDSET.FIGCAPTION.FIGURE.FOOTER.FORM.FRAMESET.H1.H2.H3.H4.H5.H6.HEADER.HGROUP.HR.HTML.ISINDEX.LI.MAIN.MENU.NAV.NOFRAMES.NOSCRIPT.OL.OUTPUT.P.PRE.SECTION.TABLE.TBODY.TD.TFOOT.TH.THEAD.TR.UL".split(".");
24
21
  function s(e) {
25
- return m(e, o);
22
+ return o(a(e));
26
23
  }
27
- var c = [
24
+ var c = /* @__PURE__ */ "ADDRESS.ARTICLE.ASIDE.AUDIO.BLOCKQUOTE.BODY.CANVAS.CENTER.DD.DIR.DIV.DL.DT.FIELDSET.FIGCAPTION.FIGURE.FOOTER.FORM.FRAMESET.H1.H2.H3.H4.H5.H6.HEADER.HGROUP.HR.HTML.ISINDEX.LI.MAIN.MENU.NAV.NOFRAMES.NOSCRIPT.OL.OUTPUT.P.PRE.SECTION.TABLE.TBODY.TD.TFOOT.TH.THEAD.TR.UL".split(".");
25
+ function l(e) {
26
+ return g(e, c);
27
+ }
28
+ var u = [
28
29
  "AREA",
29
30
  "BASE",
30
31
  "BR",
@@ -42,13 +43,13 @@ var c = [
42
43
  "TRACK",
43
44
  "WBR"
44
45
  ];
45
- function l(e) {
46
- return m(e, c);
46
+ function d(e) {
47
+ return g(e, u);
47
48
  }
48
- function u(e) {
49
- return h(e, c);
49
+ function f(e) {
50
+ return _(e, u);
50
51
  }
51
- var d = [
52
+ var p = [
52
53
  "A",
53
54
  "TABLE",
54
55
  "THEAD",
@@ -61,21 +62,21 @@ var d = [
61
62
  "AUDIO",
62
63
  "VIDEO"
63
64
  ];
64
- function f(e) {
65
- return m(e, d);
65
+ function m(e) {
66
+ return g(e, p);
66
67
  }
67
- function p(e) {
68
- return h(e, d);
68
+ function h(e) {
69
+ return _(e, p);
69
70
  }
70
- function m(e, t) {
71
+ function g(e, t) {
71
72
  return t.indexOf(e.nodeName) >= 0;
72
73
  }
73
- function h(e, t) {
74
+ function _(e, t) {
74
75
  return e.getElementsByTagName && t.some(function(t) {
75
76
  return e.getElementsByTagName(t).length;
76
77
  });
77
78
  }
78
- var g = [
79
+ var v = [
79
80
  [/\\/g, "\\\\"],
80
81
  [/\*/g, "\\*"],
81
82
  [/^-/g, "\\-"],
@@ -90,23 +91,23 @@ var g = [
90
91
  [/_/g, "\\_"],
91
92
  [/^(\d+)\. /g, "$1\\. "]
92
93
  ];
93
- function _(e) {
94
- return g.reduce(function(e, t) {
94
+ function y(e) {
95
+ return v.reduce(function(e, t) {
95
96
  return e.replace(t[0], t[1]);
96
97
  }, e);
97
98
  }
98
- var v = {};
99
- v.paragraph = {
99
+ var b = {};
100
+ b.paragraph = {
100
101
  filter: "p",
101
102
  replacement: function(e) {
102
103
  return "\n\n" + e + "\n\n";
103
104
  }
104
- }, v.lineBreak = {
105
+ }, b.lineBreak = {
105
106
  filter: "br",
106
107
  replacement: function(e, t, n) {
107
108
  return n.br + "\n";
108
109
  }
109
- }, v.heading = {
110
+ }, b.heading = {
110
111
  filter: [
111
112
  "h1",
112
113
  "h2",
@@ -115,72 +116,72 @@ v.paragraph = {
115
116
  "h5",
116
117
  "h6"
117
118
  ],
118
- replacement: function(e, t, r) {
119
- var i = Number(t.nodeName.charAt(1));
120
- if (r.headingStyle === "setext" && i < 3) {
121
- var a = n(i === 1 ? "=" : "-", e.length);
119
+ replacement: function(e, t, n) {
120
+ var r = Number(t.nodeName.charAt(1));
121
+ if (n.headingStyle === "setext" && r < 3) {
122
+ var a = i(r === 1 ? "=" : "-", e.length);
122
123
  return "\n\n" + e + "\n" + a + "\n\n";
123
124
  }
124
- return "\n\n" + n("#", i) + " " + e + "\n\n";
125
+ return "\n\n" + i("#", r) + " " + e + "\n\n";
125
126
  }
126
- }, v.blockquote = {
127
+ }, b.blockquote = {
127
128
  filter: "blockquote",
128
129
  replacement: function(e) {
129
- return e = a(e).replace(/^/gm, "> "), "\n\n" + e + "\n\n";
130
+ return e = s(e).replace(/^/gm, "> "), "\n\n" + e + "\n\n";
130
131
  }
131
- }, v.list = {
132
+ }, b.list = {
132
133
  filter: ["ul", "ol"],
133
134
  replacement: function(e, t) {
134
135
  var n = t.parentNode;
135
136
  return n.nodeName === "LI" && n.lastElementChild === t ? "\n" + e : "\n\n" + e + "\n\n";
136
137
  }
137
- }, v.listItem = {
138
+ }, b.listItem = {
138
139
  filter: "li",
139
140
  replacement: function(e, t, n) {
140
141
  var r = n.bulletListMarker + " ", i = t.parentNode;
141
142
  if (i.nodeName === "OL") {
142
- var o = i.getAttribute("start"), s = Array.prototype.indexOf.call(i.children, t);
143
- r = (o ? Number(o) + s : s + 1) + ". ";
143
+ var a = i.getAttribute("start"), o = Array.prototype.indexOf.call(i.children, t);
144
+ r = (a ? Number(a) + o : o + 1) + ". ";
144
145
  }
145
146
  var c = /\n$/.test(e);
146
- return e = a(e) + (c ? "\n" : ""), e = e.replace(/\n/gm, "\n" + " ".repeat(r.length)), r + e + (t.nextSibling ? "\n" : "");
147
+ return e = s(e) + (c ? "\n" : ""), e = e.replace(/\n/gm, "\n" + " ".repeat(r.length)), r + e + (t.nextSibling ? "\n" : "");
147
148
  }
148
- }, v.indentedCodeBlock = {
149
+ }, b.indentedCodeBlock = {
149
150
  filter: function(e, t) {
150
151
  return t.codeBlockStyle === "indented" && e.nodeName === "PRE" && e.firstChild && e.firstChild.nodeName === "CODE";
151
152
  },
152
153
  replacement: function(e, t, n) {
153
154
  return "\n\n " + t.firstChild.textContent.replace(/\n/g, "\n ") + "\n\n";
154
155
  }
155
- }, v.fencedCodeBlock = {
156
+ }, b.fencedCodeBlock = {
156
157
  filter: function(e, t) {
157
158
  return t.codeBlockStyle === "fenced" && e.nodeName === "PRE" && e.firstChild && e.firstChild.nodeName === "CODE";
158
159
  },
159
- replacement: function(e, t, r) {
160
- for (var i = ((t.firstChild.getAttribute("class") || "").match(/language-(\S+)/) || [null, ""])[1], a = t.firstChild.textContent, o = r.fence.charAt(0), s = 3, c = RegExp("^" + o + "{3,}", "gm"), l; l = c.exec(a);) l[0].length >= s && (s = l[0].length + 1);
161
- var u = n(o, s);
162
- return "\n\n" + u + i + "\n" + a.replace(/\n$/, "") + "\n" + u + "\n\n";
160
+ replacement: function(e, t, n) {
161
+ for (var r = ((t.firstChild.getAttribute("class") || "").match(/language-(\S+)/) || [null, ""])[1], a = t.firstChild.textContent, o = n.fence.charAt(0), s = 3, c = RegExp("^" + o + "{3,}", "gm"), l; l = c.exec(a);) l[0].length >= s && (s = l[0].length + 1);
162
+ var u = i(o, s);
163
+ return "\n\n" + u + r + "\n" + a.replace(/\n$/, "") + "\n" + u + "\n\n";
163
164
  }
164
- }, v.horizontalRule = {
165
+ }, b.horizontalRule = {
165
166
  filter: "hr",
166
167
  replacement: function(e, t, n) {
167
168
  return "\n\n" + n.hr + "\n\n";
168
169
  }
169
- }, v.inlineLink = {
170
+ }, b.inlineLink = {
170
171
  filter: function(e, t) {
171
172
  return t.linkStyle === "inlined" && e.nodeName === "A" && e.getAttribute("href");
172
173
  },
173
174
  replacement: function(e, t) {
174
- var n = b(t.getAttribute("href")), r = x(y(t.getAttribute("title"))), i = r ? " \"" + r + "\"" : "";
175
+ var n = S(t.getAttribute("href")), r = C(x(t.getAttribute("title"))), i = r ? " \"" + r + "\"" : "";
175
176
  return "[" + e + "](" + n + i + ")";
176
177
  }
177
- }, v.referenceLink = {
178
+ }, b.referenceLink = {
178
179
  filter: function(e, t) {
179
180
  return t.linkStyle === "referenced" && e.nodeName === "A" && e.getAttribute("href");
180
181
  },
181
182
  replacement: function(e, t, n) {
182
- var r = b(t.getAttribute("href")), i = y(t.getAttribute("title"));
183
- i &&= " \"" + x(i) + "\"";
183
+ var r = S(t.getAttribute("href")), i = x(t.getAttribute("title"));
184
+ i &&= " \"" + C(i) + "\"";
184
185
  var a, o;
185
186
  switch (n.linkReferenceStyle) {
186
187
  case "collapsed":
@@ -200,17 +201,17 @@ v.paragraph = {
200
201
  var t = "";
201
202
  return this.references.length && (t = "\n\n" + this.references.join("\n") + "\n\n", this.references = []), t;
202
203
  }
203
- }, v.emphasis = {
204
+ }, b.emphasis = {
204
205
  filter: ["em", "i"],
205
206
  replacement: function(e, t, n) {
206
207
  return e.trim() ? n.emDelimiter + e + n.emDelimiter : "";
207
208
  }
208
- }, v.strong = {
209
+ }, b.strong = {
209
210
  filter: ["strong", "b"],
210
211
  replacement: function(e, t, n) {
211
212
  return e.trim() ? n.strongDelimiter + e + n.strongDelimiter : "";
212
213
  }
213
- }, v.code = {
214
+ }, b.code = {
214
215
  filter: function(e) {
215
216
  var t = e.previousSibling || e.nextSibling, n = e.parentNode.nodeName === "PRE" && !t;
216
217
  return e.nodeName === "CODE" && !n;
@@ -221,27 +222,27 @@ v.paragraph = {
221
222
  for (var t = /^`|^ .*?[^ ].* $|`$/.test(e) ? " " : "", n = "`", r = e.match(/`+/gm) || []; r.indexOf(n) !== -1;) n += "`";
222
223
  return n + t + e + t + n;
223
224
  }
224
- }, v.image = {
225
+ }, b.image = {
225
226
  filter: "img",
226
227
  replacement: function(e, t) {
227
- var n = _(y(t.getAttribute("alt"))), r = b(t.getAttribute("src") || ""), i = y(t.getAttribute("title")), a = i ? " \"" + x(i) + "\"" : "";
228
+ var n = y(x(t.getAttribute("alt"))), r = S(t.getAttribute("src") || ""), i = x(t.getAttribute("title")), a = i ? " \"" + C(i) + "\"" : "";
228
229
  return r ? "![" + n + "](" + r + a + ")" : "";
229
230
  }
230
231
  };
231
- function y(e) {
232
+ function x(e) {
232
233
  return e ? e.replace(/(\n+\s*)+/g, "\n") : "";
233
234
  }
234
- function b(e) {
235
+ function S(e) {
235
236
  var t = e.replace(/([<>()])/g, "\\$1");
236
237
  return t.indexOf(" ") >= 0 ? "<" + t + ">" : t;
237
238
  }
238
- function x(e) {
239
+ function C(e) {
239
240
  return e.replace(/"/g, "\\\"");
240
241
  }
241
- function S(e) {
242
+ function w(e) {
242
243
  for (var t in this.options = e, this._keep = [], this._remove = [], this.blankRule = { replacement: e.blankReplacement }, this.keepReplacement = e.keepReplacement, this.defaultRule = { replacement: e.defaultReplacement }, this.array = [], e.rules) this.array.push(e.rules[t]);
243
244
  }
244
- S.prototype = {
245
+ w.prototype = {
245
246
  add: function(e, t) {
246
247
  this.array.unshift(t);
247
248
  },
@@ -262,13 +263,13 @@ S.prototype = {
262
263
  forNode: function(e) {
263
264
  if (e.isBlank) return this.blankRule;
264
265
  var t;
265
- return (t = C(this.array, e, this.options)) || (t = C(this._keep, e, this.options)) || (t = C(this._remove, e, this.options)) ? t : this.defaultRule;
266
+ return (t = T(this.array, e, this.options)) || (t = T(this._keep, e, this.options)) || (t = T(this._remove, e, this.options)) ? t : this.defaultRule;
266
267
  },
267
268
  forEach: function(e) {
268
269
  for (var t = 0; t < this.array.length; t++) e(this.array[t], t);
269
270
  }
270
271
  };
271
- function C(e, t, n) {
272
+ function T(e, t, n) {
272
273
  for (var r = 0; r < e.length; r++) {
273
274
  var i = e[r];
274
275
  if (ee(i, t, n)) return i;
@@ -284,48 +285,48 @@ function ee(e, t, n) {
284
285
  if (r.call(e, t, n)) return !0;
285
286
  } else throw TypeError("`filter` needs to be a string, array, or function");
286
287
  }
287
- function w(e) {
288
+ function E(e) {
288
289
  var t = e.element, n = e.isBlock, r = e.isVoid, i = e.isPre || function(e) {
289
290
  return e.nodeName === "PRE";
290
291
  };
291
292
  if (!(!t.firstChild || i(t))) {
292
- for (var a = null, o = !1, s = null, c = E(s, t, i); c !== t;) {
293
+ for (var a = null, o = !1, s = null, c = O(s, t, i); c !== t;) {
293
294
  if (c.nodeType === 3 || c.nodeType === 4) {
294
295
  var l = c.data.replace(/[ \r\n\t]+/g, " ");
295
296
  if ((!a || / $/.test(a.data)) && !o && l[0] === " " && (l = l.substr(1)), !l) {
296
- c = T(c);
297
+ c = D(c);
297
298
  continue;
298
299
  }
299
300
  c.data = l, a = c;
300
301
  } else if (c.nodeType === 1) n(c) || c.nodeName === "BR" ? (a && (a.data = a.data.replace(/ $/, "")), a = null, o = !1) : r(c) || i(c) ? (a = null, o = !0) : a && (o = !1);
301
302
  else {
302
- c = T(c);
303
+ c = D(c);
303
304
  continue;
304
305
  }
305
- var u = E(s, c, i);
306
+ var u = O(s, c, i);
306
307
  s = c, c = u;
307
308
  }
308
- a && (a.data = a.data.replace(/ $/, ""), a.data || T(a));
309
+ a && (a.data = a.data.replace(/ $/, ""), a.data || D(a));
309
310
  }
310
311
  }
311
- function T(e) {
312
+ function D(e) {
312
313
  var t = e.nextSibling || e.parentNode;
313
314
  return e.parentNode.removeChild(e), t;
314
315
  }
315
- function E(e, t, n) {
316
+ function O(e, t, n) {
316
317
  return e && e.parentNode === t || n(t) ? t.nextSibling || t.parentNode : t.firstChild || t.nextSibling || t.parentNode;
317
318
  }
318
- var D = typeof window < "u" ? window : {};
319
- function O() {
320
- var e = D.DOMParser, t = !1;
319
+ var k = typeof window < "u" ? window : {};
320
+ function A() {
321
+ var e = k.DOMParser, t = !1;
321
322
  try {
322
323
  new e().parseFromString("", "text/html") && (t = !0);
323
324
  } catch {}
324
325
  return t;
325
326
  }
326
- function k() {
327
+ function te() {
327
328
  var e = function() {};
328
- return A() ? e.prototype.parseFromString = function(e) {
329
+ return ne() ? e.prototype.parseFromString = function(e) {
329
330
  var t = new window.ActiveXObject("htmlfile");
330
331
  return t.designMode = "on", t.open(), t.write(e), t.close(), t;
331
332
  } : e.prototype.parseFromString = function(e) {
@@ -333,50 +334,50 @@ function k() {
333
334
  return t.open(), t.write(e), t.close(), t;
334
335
  }, e;
335
336
  }
336
- function A() {
337
+ function ne() {
337
338
  var e = !1;
338
339
  try {
339
340
  document.implementation.createHTMLDocument("").open();
340
341
  } catch {
341
- D.ActiveXObject && (e = !0);
342
+ k.ActiveXObject && (e = !0);
342
343
  }
343
344
  return e;
344
345
  }
345
- var te = O() ? D.DOMParser : k();
346
- function ne(e, t) {
347
- var n = typeof e == "string" ? re().parseFromString("<x-turndown id=\"turndown-root\">" + e + "</x-turndown>", "text/html").getElementById("turndown-root") : e.cloneNode(!0);
348
- return w({
346
+ var re = A() ? k.DOMParser : te();
347
+ function ie(e, t) {
348
+ var n = typeof e == "string" ? ae().parseFromString("<x-turndown id=\"turndown-root\">" + e + "</x-turndown>", "text/html").getElementById("turndown-root") : e.cloneNode(!0);
349
+ return E({
349
350
  element: n,
350
- isBlock: s,
351
- isVoid: l,
352
- isPre: t.preformattedCode ? ie : null
351
+ isBlock: l,
352
+ isVoid: d,
353
+ isPre: t.preformattedCode ? M : null
353
354
  }), n;
354
355
  }
355
356
  var j;
356
- function re() {
357
- return j ||= new te(), j;
357
+ function ae() {
358
+ return j ||= new re(), j;
358
359
  }
359
- function ie(e) {
360
+ function M(e) {
360
361
  return e.nodeName === "PRE" || e.nodeName === "CODE";
361
362
  }
362
- function M(e, t) {
363
- return e.isBlock = s(e), e.isCode = e.nodeName === "CODE" || e.parentNode.isCode, e.isBlank = N(e), e.flankingWhitespace = P(e, t), e;
363
+ function N(e, t) {
364
+ return e.isBlock = l(e), e.isCode = e.nodeName === "CODE" || e.parentNode.isCode, e.isBlank = P(e), e.flankingWhitespace = F(e, t), e;
364
365
  }
365
- function N(e) {
366
- return !l(e) && !f(e) && /^\s*$/i.test(e.textContent) && !u(e) && !p(e);
366
+ function P(e) {
367
+ return !d(e) && !m(e) && /^\s*$/i.test(e.textContent) && !f(e) && !h(e);
367
368
  }
368
- function P(e, t) {
369
+ function F(e, t) {
369
370
  if (e.isBlock || t.preformattedCode && e.isCode) return {
370
371
  leading: "",
371
372
  trailing: ""
372
373
  };
373
- var n = F(e.textContent);
374
- return n.leadingAscii && I("left", e, t) && (n.leading = n.leadingNonAscii), n.trailingAscii && I("right", e, t) && (n.trailing = n.trailingNonAscii), {
374
+ var n = I(e.textContent);
375
+ return n.leadingAscii && L("left", e, t) && (n.leading = n.leadingNonAscii), n.trailingAscii && L("right", e, t) && (n.trailing = n.trailingNonAscii), {
375
376
  leading: n.leading,
376
377
  trailing: n.trailing
377
378
  };
378
379
  }
379
- function F(e) {
380
+ function I(e) {
380
381
  var t = e.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/);
381
382
  return {
382
383
  leading: t[1],
@@ -387,15 +388,15 @@ function F(e) {
387
388
  trailingAscii: t[6]
388
389
  };
389
390
  }
390
- function I(e, t, n) {
391
+ function L(e, t, n) {
391
392
  var r, i, a;
392
- return e === "left" ? (r = t.previousSibling, i = / $/) : (r = t.nextSibling, i = /^ /), r && (r.nodeType === 3 ? a = i.test(r.nodeValue) : n.preformattedCode && r.nodeName === "CODE" ? a = !1 : r.nodeType === 1 && !s(r) && (a = i.test(r.textContent))), a;
393
+ return e === "left" ? (r = t.previousSibling, i = / $/) : (r = t.nextSibling, i = /^ /), r && (r.nodeType === 3 ? a = i.test(r.nodeValue) : n.preformattedCode && r.nodeName === "CODE" ? a = !1 : r.nodeType === 1 && !l(r) && (a = i.test(r.textContent))), a;
393
394
  }
394
- var L = Array.prototype.reduce;
395
- function R(e) {
396
- if (!(this instanceof R)) return new R(e);
397
- var n = {
398
- rules: v,
395
+ var R = Array.prototype.reduce;
396
+ function z(e) {
397
+ if (!(this instanceof z)) return new z(e);
398
+ var t = {
399
+ rules: b,
399
400
  headingStyle: "setext",
400
401
  hr: "* * *",
401
402
  bulletListMarker: "*",
@@ -417,14 +418,14 @@ function R(e) {
417
418
  return t.isBlock ? "\n\n" + e + "\n\n" : e;
418
419
  }
419
420
  };
420
- this.options = t({}, n, e), this.rules = new S(this.options);
421
+ this.options = r({}, t, e), this.rules = new w(this.options);
421
422
  }
422
- R.prototype = {
423
+ z.prototype = {
423
424
  turndown: function(e) {
424
- if (!U(e)) throw TypeError(e + " is not a string, or an element/document/fragment node.");
425
+ if (!W(e)) throw TypeError(e + " is not a string, or an element/document/fragment node.");
425
426
  if (e === "") return "";
426
- var t = z.call(this, new ne(e, this.options));
427
- return B.call(this, t);
427
+ var t = B.call(this, new ie(e, this.options));
428
+ return V.call(this, t);
428
429
  },
429
430
  use: function(e) {
430
431
  if (Array.isArray(e)) for (var t = 0; t < e.length; t++) this.use(e[t]);
@@ -442,47 +443,47 @@ R.prototype = {
442
443
  return this.rules.remove(e), this;
443
444
  },
444
445
  escape: function(e) {
445
- return _(e);
446
+ return y(e);
446
447
  }
447
448
  };
448
- function z(e) {
449
+ function B(e) {
449
450
  var t = this;
450
- return L.call(e.childNodes, function(e, n) {
451
- n = new M(n, t.options);
451
+ return R.call(e.childNodes, function(e, n) {
452
+ n = new N(n, t.options);
452
453
  var r = "";
453
- return n.nodeType === 3 ? r = n.isCode ? n.nodeValue : t.escape(n.nodeValue) : n.nodeType === 1 && (r = V.call(t, n)), H(e, r);
454
+ return n.nodeType === 3 ? r = n.isCode ? n.nodeValue : t.escape(n.nodeValue) : n.nodeType === 1 && (r = H.call(t, n)), U(e, r);
454
455
  }, "");
455
456
  }
456
- function B(e) {
457
+ function V(e) {
457
458
  var t = this;
458
459
  return this.rules.forEach(function(n) {
459
- typeof n.append == "function" && (e = H(e, n.append(t.options)));
460
+ typeof n.append == "function" && (e = U(e, n.append(t.options)));
460
461
  }), e.replace(/^[\t\r\n]+/, "").replace(/[\t\r\n\s]+$/, "");
461
462
  }
462
- function V(e) {
463
- var t = this.rules.forNode(e), n = z.call(this, e), r = e.flankingWhitespace;
463
+ function H(e) {
464
+ var t = this.rules.forNode(e), n = B.call(this, e), r = e.flankingWhitespace;
464
465
  return (r.leading || r.trailing) && (n = n.trim()), r.leading + t.replacement(n, e, this.options) + r.trailing;
465
466
  }
466
- function H(e, t) {
467
- var n = i(e), a = r(t), o = Math.max(e.length - n.length, t.length - a.length);
468
- return n + "\n\n".substring(0, o) + a;
467
+ function U(e, t) {
468
+ var n = o(e), r = a(t), i = Math.max(e.length - n.length, t.length - r.length);
469
+ return n + "\n\n".substring(0, i) + r;
469
470
  }
470
- function U(e) {
471
+ function W(e) {
471
472
  return e != null && (typeof e == "string" || e.nodeType && (e.nodeType === 1 || e.nodeType === 9 || e.nodeType === 11));
472
473
  }
473
474
  //#endregion
474
475
  //#region lib/utils/html-to-markdown.ts
475
- var W = "scribe-table-break", G = /* @__PURE__ */ new Set([
476
+ var G = "scribe-table-break", K = /* @__PURE__ */ new Set([
476
477
  "info",
477
478
  "tip",
478
479
  "warning",
479
480
  "caution"
480
- ]), K = [
481
+ ]), q = [
481
482
  "width",
482
483
  "min-width",
483
484
  "max-width",
484
485
  "text-align"
485
- ], q = (/* @__PURE__ */ "address.article.aside.blockquote.details.dialog.dd.div.dl.dt.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hr.li.main.menu.nav.ol.p.pre.section.summary.table.ul".split(".")).join(","), ae = /* @__PURE__ */ new Set([
486
+ ], J = (/* @__PURE__ */ "address.article.aside.blockquote.details.dialog.dd.div.dl.dt.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hr.li.main.menu.nav.ol.p.pre.section.summary.table.ul".split(".")).join(","), oe = /* @__PURE__ */ new Set([
486
487
  "A",
487
488
  "B",
488
489
  "BR",
@@ -493,92 +494,100 @@ var W = "scribe-table-break", G = /* @__PURE__ */ new Set([
493
494
  "IMG",
494
495
  "S",
495
496
  "STRONG"
496
- ]), J = (e) => ae.has(e.tagName) || e.tagName === "SPAN" && e.getAttribute("data-type") === "latex", Y = (e) => J(e) && Array.from(e.querySelectorAll("*")).every(J), X = (e) => e.nodeType !== Node.TEXT_NODE || !!e.textContent?.trim(), oe = (e) => {
497
- let t = Array.from(e.childNodes).filter(X);
498
- return t.length === 0 ? !0 : t.length === 1 && t[0] instanceof HTMLParagraphElement ? !t[0].querySelector(q) && Array.from(t[0].children).every(Y) : t.every((e) => !(e instanceof Element) && e.nodeType === Node.TEXT_NODE || e instanceof Element && !e.matches(q) && !e.querySelector(q) && Y(e));
499
- }, se = (e) => e.hasAttribute("width") || /(?:^|;)\s*width\s*:/i.test(e.getAttribute("style") ?? "") ? !0 : Array.from(e.querySelectorAll("th, td, col")).some((e) => !!(e.hasAttribute("colwidth") || e.hasAttribute("width") || /(?:^|;)\s*width\s*:/i.test(e.getAttribute("style") ?? ""))), ce = (e) => {
497
+ ]), Y = (e) => oe.has(e.tagName) || e.tagName === "SPAN" && e.getAttribute("data-type") === "latex", X = (e) => Y(e) && Array.from(e.querySelectorAll("*")).every(Y), Z = (e) => e.nodeType !== Node.TEXT_NODE || !!e.textContent?.trim(), se = (e) => {
498
+ let t = Array.from(e.childNodes).filter(Z);
499
+ return t.length === 0 ? !0 : t.length === 1 && t[0] instanceof HTMLParagraphElement ? !t[0].querySelector(J) && Array.from(t[0].children).every(X) : t.every((e) => !(e instanceof Element) && e.nodeType === Node.TEXT_NODE || e instanceof Element && !e.matches(J) && !e.querySelector(J) && X(e));
500
+ }, ce = (e) => e.hasAttribute("width") || /(?:^|;)\s*width\s*:/i.test(e.getAttribute("style") ?? "") ? !0 : Array.from(e.querySelectorAll("th, td, col")).some((e) => !!(e.hasAttribute("colwidth") || e.hasAttribute("width") || /(?:^|;)\s*width\s*:/i.test(e.getAttribute("style") ?? ""))), le = (e) => {
500
501
  let t = e.style.textAlign.trim().toLowerCase(), n = (e.getAttribute("align") ?? "").trim().toLowerCase();
501
502
  if (t && n && t !== n) return;
502
503
  let r = t || n;
503
504
  if (!r) return null;
504
505
  if (r === "left" || r === "center" || r === "right") return r;
505
- }, le = (e) => {
506
- if (e.caption || e.tFoot || se(e)) return null;
506
+ }, ue = (e) => {
507
+ if (e.caption || e.tFoot || ce(e)) return null;
507
508
  let t = Array.from(e.rows), n = t[0]?.cells.length ?? 0;
508
509
  if (t.length === 0 || n === 0) return null;
509
510
  let r = t.map((e) => Array.from(e.cells));
510
- if (r.some((t, r) => t.length !== n || t.some((t) => t.closest("table") !== e || t.colSpan !== 1 || t.rowSpan !== 1 || !oe(t) || (r === 0 ? t.tagName !== "TH" : t.tagName !== "TD")))) return null;
511
+ if (r.some((t, r) => t.length !== n || t.some((t) => t.closest("table") !== e || t.colSpan !== 1 || t.rowSpan !== 1 || !se(t) || (r === 0 ? t.tagName !== "TH" : t.tagName !== "TD")))) return null;
511
512
  let i = r[0].map((e, t) => {
512
- let n = r.map((e) => ce(e[t])), i = n[0];
513
+ let n = r.map((e) => le(e[t])), i = n[0];
513
514
  if (!(i === void 0 || n.some((e) => e !== i))) return i;
514
515
  });
515
516
  return i.some((e) => e === void 0) ? null : {
516
517
  rows: r,
517
518
  alignments: i
518
519
  };
519
- }, ue = (e, t) => {
520
- let n = Array.from(t.childNodes).filter(X), r = (n.length === 1 && n[0] instanceof HTMLParagraphElement ? n[0] : t).cloneNode(!0);
520
+ }, de = (e, t) => {
521
+ let n = Array.from(t.childNodes).filter(Z), r = (n.length === 1 && n[0] instanceof HTMLParagraphElement ? n[0] : t).cloneNode(!0);
521
522
  r.querySelectorAll("br").forEach((e) => {
522
- e.replaceWith(e.ownerDocument.createTextNode(W));
523
+ e.replaceWith(e.ownerDocument.createTextNode(G));
523
524
  });
524
- let i = e.turndown(r.innerHTML).split(W).join("<br>").split("|").join("\\|").trim();
525
+ let i = e.turndown(r.innerHTML).split(G).join("<br>").split("|").join("\\|").trim();
525
526
  return /[\r\n]/.test(i) ? null : i;
526
- }, Z = (e) => {
527
+ }, Q = (e) => {
527
528
  let t = e.cloneNode(!0);
528
529
  return t.querySelectorAll("span[data-type=\"latex\"]").forEach((e) => {
529
530
  e.textContent === "•" && (e.textContent = "");
530
- }), $(t), t.outerHTML;
531
- }, Q = (e) => {
531
+ }), $(t), n(t), t.outerHTML;
532
+ }, fe = (e) => {
532
533
  let t = e?.trim().toLowerCase();
533
- return t && G.has(t) ? t : "info";
534
- }, de = (e) => {
535
- let t = Q(e.getAttribute("data-variant"));
534
+ return t && K.has(t) ? t : "info";
535
+ }, pe = (e) => {
536
+ let t = fe(e.getAttribute("data-variant"));
536
537
  Array.from(e.attributes).forEach((t) => {
537
538
  t.name !== "data-type" && t.name !== "data-variant" && t.name !== "role" && e.removeAttribute(t.name);
538
539
  }), e.setAttribute("data-type", "callout"), e.setAttribute("data-variant", t), e.setAttribute("role", "note");
539
- }, fe = (e) => {
540
- let t = e.matches("table, col, th, td") ? K.map((t) => [t, e.style.getPropertyValue(t)]).filter(([, e]) => !!e) : [];
540
+ }, me = (e) => {
541
+ let t = e.matches("table, col, th, td") ? q.map((t) => [t, e.style.getPropertyValue(t)]).filter(([, e]) => !!e) : [];
541
542
  e.removeAttribute("style"), t.forEach(([t, n]) => {
542
543
  e.style.setProperty(t, n);
543
544
  });
544
545
  }, $ = (e) => {
545
546
  [...e.matches("aside[data-type=\"callout\"]") ? [e] : [], ...Array.from(e.querySelectorAll("aside[data-type=\"callout\"]"))].forEach((e) => {
546
547
  [e, ...Array.from(e.querySelectorAll("*"))].forEach((e) => {
547
- fe(e), Array.from(e.attributes).forEach((t) => {
548
+ me(e), Array.from(e.attributes).forEach((t) => {
548
549
  t.name.toLowerCase().startsWith("on") && e.removeAttribute(t.name);
549
550
  });
550
- }), de(e);
551
+ }), pe(e);
551
552
  });
552
- }, pe = (e) => {
553
+ }, he = (e) => {
553
554
  let t = e.cloneNode(!0);
554
555
  return t.querySelectorAll("span[data-type=\"latex\"]").forEach((e) => {
555
556
  e.textContent === "•" && (e.textContent = "");
556
- }), $(t), t.outerHTML;
557
- }, me = (e) => {
557
+ }), $(t), n(t), t.outerHTML;
558
+ }, ge = (e) => {
559
+ let n = e.cloneNode(!0);
560
+ return t(n) ? n.outerHTML : n.textContent ?? "";
561
+ }, _e = (e) => {
562
+ e.addRule("scribeExternalLinkPreview", {
563
+ filter: (e) => e.nodeName === "SPAN" && e.getAttribute("data-type") === "external-link-preview",
564
+ replacement: (e, t) => ge(t)
565
+ });
566
+ }, ve = (e) => {
558
567
  e.addRule("scribeCallout", {
559
568
  filter: (e) => e.nodeName === "ASIDE" && e.getAttribute("data-type") === "callout",
560
- replacement: (e, t) => `\n\n${pe(t)}\n\n`
569
+ replacement: (e, t) => `\n\n${he(t)}\n\n`
561
570
  });
562
- }, he = (e) => {
571
+ }, ye = (e) => {
563
572
  e.addRule("scribeTable", {
564
573
  filter: "table",
565
574
  replacement: (t, n) => {
566
- let r = n, i = le(r);
567
- if (!i) return `\n\n${Z(r)}\n\n`;
568
- let { rows: a, alignments: o } = i, s = a.map((t) => t.map((t) => ue(e, t)));
569
- if (s.some((e) => e.some((e) => e === null))) return `\n\n${Z(r)}\n\n`;
575
+ let r = n, i = ue(r);
576
+ if (!i) return `\n\n${Q(r)}\n\n`;
577
+ let { rows: a, alignments: o } = i, s = a.map((t) => t.map((t) => de(e, t)));
578
+ if (s.some((e) => e.some((e) => e === null))) return `\n\n${Q(r)}\n\n`;
570
579
  let c = s.map((e) => `| ${e.join(" | ")} |`), l = `| ${o.map((e) => e === "left" ? ":---" : e === "center" ? ":---:" : e === "right" ? "---:" : "---").join(" | ")} |`;
571
580
  return c.splice(1, 0, l), `\n\n${c.join("\n")}\n\n`;
572
581
  }
573
582
  });
574
- }, ge = (t) => {
575
- let n = new R({
583
+ }, be = (t) => {
584
+ let r = new z({
576
585
  headingStyle: "atx",
577
586
  hr: "---",
578
587
  bulletListMarker: "-",
579
588
  codeBlockStyle: "fenced"
580
589
  });
581
- return n.addRule("latex", {
590
+ r.addRule("latex", {
582
591
  filter: function(e) {
583
592
  return e.nodeName === "SPAN" && e.getAttribute("data-type") === "latex";
584
593
  },
@@ -586,12 +595,14 @@ var W = "scribe-table-break", G = /* @__PURE__ */ new Set([
586
595
  let n = t, r = n.getAttribute("data-content") || "";
587
596
  return n.getAttribute("data-display-mode") === "true" ? `\n\n$$\n${r}\n$$\n\n` : `$${r}$`;
588
597
  }
589
- }), n.addRule("strikethrough", {
598
+ }), r.addRule("strikethrough", {
590
599
  filter: ["del", "s"],
591
600
  replacement: function(e) {
592
601
  return "~~" + e + "~~";
593
602
  }
594
- }), me(n), he(n), n.turndown(e.sanitize(((e) => e.replace(/<span([^>]+data-type="latex"[^>]*)><\/span>/g, "<span$1>•</span>"))(t), { ADD_ATTR: ["colwidth"] }));
603
+ }), ve(r), ye(r), _e(r);
604
+ let i = e.sanitize(((e) => e.replace(/<span([^>]+data-type="latex"[^>]*)><\/span>/g, "<span$1>•</span>"))(t), { ADD_ATTR: ["colwidth"] }), a = document.createElement("div");
605
+ return a.innerHTML = i, n(a), r.turndown(a.innerHTML);
595
606
  };
596
607
  //#endregion
597
- export { ge as t };
608
+ export { be as t };