@quoreadmin/ui 1.10.26 → 1.10.29

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 (182) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index103.js +11 -6
  3. package/dist/index147.js +2 -2
  4. package/dist/index149.js +1 -1
  5. package/dist/index151.js +4 -4
  6. package/dist/index157.js +160 -160
  7. package/dist/index165.js +1 -1
  8. package/dist/index169.js +7 -7
  9. package/dist/index182.js +14 -14
  10. package/dist/index183.js +3 -3
  11. package/dist/index186.js +4 -4
  12. package/dist/index193.js +10 -10
  13. package/dist/index195.js +10 -10
  14. package/dist/index197.js +1228 -36
  15. package/dist/index199.js +5816 -1106
  16. package/dist/index200.js +209 -0
  17. package/dist/index201.js +19 -5922
  18. package/dist/index202.js +10 -199
  19. package/dist/index203.js +76 -33
  20. package/dist/index204.js +249 -14
  21. package/dist/index205.js +13678 -72
  22. package/dist/index206.js +27 -253
  23. package/dist/index207.js +48 -13669
  24. package/dist/index208.js +236 -25
  25. package/dist/index209.js +293 -45
  26. package/dist/index210.js +238 -179
  27. package/dist/index211.js +36 -311
  28. package/dist/index212.js +43 -296
  29. package/dist/index213.js +29 -84
  30. package/dist/index214.js +109 -400
  31. package/dist/index215.js +36 -22
  32. package/dist/index216.js +26 -33
  33. package/dist/index217.js +31 -111
  34. package/dist/index218.js +50 -35
  35. package/dist/index219.js +43 -26
  36. package/dist/index220.js +3 -35
  37. package/dist/index221.js +9 -51
  38. package/dist/index222.js +18 -42
  39. package/dist/index223.js +10 -4
  40. package/dist/index224.js +10 -9
  41. package/dist/index225.js +38 -18
  42. package/dist/index226.js +21 -10
  43. package/dist/index227.js +88 -10
  44. package/dist/index228.js +403 -35
  45. package/dist/index229.js +22 -21
  46. package/dist/index23.js +47 -27
  47. package/dist/index230.js +155 -121
  48. package/dist/index231.js +19 -37
  49. package/dist/index232.js +20 -80
  50. package/dist/index233.js +15 -13
  51. package/dist/index234.js +198 -19
  52. package/dist/index235.js +68 -18
  53. package/dist/index236.js +34 -20
  54. package/dist/index237.js +39 -19
  55. package/dist/index238.js +122 -156
  56. package/dist/index239.js +35 -225
  57. package/dist/index240.js +80 -37
  58. package/dist/index241.js +20 -10
  59. package/dist/index242.js +19 -160
  60. package/dist/index243.js +10 -10
  61. package/dist/index244.js +13 -15
  62. package/dist/index245.js +156 -194
  63. package/dist/index246.js +224 -66
  64. package/dist/index247.js +37 -34
  65. package/dist/index248.js +9 -39
  66. package/dist/index249.js +22 -3709
  67. package/dist/index250.js +22 -60
  68. package/dist/index251.js +20 -83
  69. package/dist/index252.js +823 -39
  70. package/dist/index253.js +685 -198
  71. package/dist/index254.js +175 -9
  72. package/dist/index255.js +22 -57
  73. package/dist/index256.js +20 -61
  74. package/dist/index257.js +20 -54
  75. package/dist/index258.js +3 -81
  76. package/dist/index259.js +170 -711
  77. package/dist/index260.js +127 -41
  78. package/dist/index261.js +1214 -55
  79. package/dist/index262.js +20 -11
  80. package/dist/index263.js +22 -705
  81. package/dist/index264.js +22 -820
  82. package/dist/index265.js +22 -15
  83. package/dist/index266.js +13 -15
  84. package/dist/index267.js +12 -12
  85. package/dist/index268.js +2 -836
  86. package/dist/index269.js +2 -702
  87. package/dist/index270.js +3703 -170
  88. package/dist/index271.js +60 -22
  89. package/dist/index272.js +83 -20
  90. package/dist/index273.js +52 -20
  91. package/dist/index274.js +215 -3
  92. package/dist/index275.js +10 -187
  93. package/dist/index276.js +52 -128
  94. package/dist/index277.js +52 -1214
  95. package/dist/index278.js +54 -20
  96. package/dist/index279.js +81 -22
  97. package/dist/index280.js +727 -21
  98. package/dist/index281.js +47 -29
  99. package/dist/index282.js +64 -20
  100. package/dist/index283.js +11 -20
  101. package/dist/index284.js +705 -2
  102. package/dist/index285.js +820 -2
  103. package/dist/index290.js +54 -2
  104. package/dist/index291.js +2 -2
  105. package/dist/index292.js +26 -3
  106. package/dist/index293.js +21 -26
  107. package/dist/index294.js +21 -53
  108. package/dist/index295.js +16 -26
  109. package/dist/index296.js +17 -22
  110. package/dist/index297.js +22 -21
  111. package/dist/index298.js +3 -16
  112. package/dist/index299.js +27 -17
  113. package/dist/index300.js +2 -23
  114. package/dist/index302.js +1 -1
  115. package/dist/index305.js +1 -1
  116. package/dist/index306.js +1 -1
  117. package/dist/index307.js +79 -15
  118. package/dist/index308.js +21 -83
  119. package/dist/index309.js +919 -186
  120. package/dist/index310.js +22 -246
  121. package/dist/index311.js +19 -78
  122. package/dist/index312.js +13 -15
  123. package/dist/index313.js +64 -930
  124. package/dist/index314.js +18 -21
  125. package/dist/index315.js +19 -20
  126. package/dist/index316.js +12 -10
  127. package/dist/index317.js +21 -68
  128. package/dist/index318.js +60 -16
  129. package/dist/index319.js +15 -19
  130. package/dist/index320.js +83 -21
  131. package/dist/index321.js +202 -22
  132. package/dist/index322.js +246 -63
  133. package/dist/index323.js +230 -32
  134. package/dist/index324.js +4 -263
  135. package/dist/index325.js +133 -5
  136. package/dist/index326.js +63 -145
  137. package/dist/index327.js +86 -68
  138. package/dist/index328.js +27 -89
  139. package/dist/index329.js +8 -28
  140. package/dist/index330.js +71 -12
  141. package/dist/index331.js +3 -74
  142. package/dist/index332.js +2 -4
  143. package/dist/index333.js +83 -2
  144. package/dist/index334.js +52 -82
  145. package/dist/index335.js +5 -57
  146. package/dist/index336.js +4 -5
  147. package/dist/index337.js +178 -4
  148. package/dist/index338.js +58 -181
  149. package/dist/index339.js +73 -61
  150. package/dist/index340.js +36 -74
  151. package/dist/index343.js +1 -1
  152. package/dist/index348.js +1 -1
  153. package/dist/index353.js +2 -2
  154. package/dist/index357.js +2 -2
  155. package/dist/index358.js +1 -1
  156. package/dist/index366.js +2 -2
  157. package/dist/index368.js +14 -12
  158. package/dist/index369.js +1 -2
  159. package/dist/index370.js +21 -17
  160. package/dist/index372.js +3 -6
  161. package/dist/index373.js +3 -4
  162. package/dist/index374.js +2 -2
  163. package/dist/index376.js +1 -1
  164. package/dist/index378.js +16 -28
  165. package/dist/index379.js +40 -53
  166. package/dist/index38.js +2 -2
  167. package/dist/index380.js +16 -97
  168. package/dist/index383.js +97 -16
  169. package/dist/index384.js +1 -1
  170. package/dist/index385.js +3 -3
  171. package/dist/index386.js +1 -1
  172. package/dist/index390.js +8 -10
  173. package/dist/index392.js +6 -9
  174. package/dist/index393.js +5 -11
  175. package/dist/index394.js +5 -7
  176. package/dist/index395.js +20 -23
  177. package/dist/index402.js +1 -1
  178. package/dist/index50.js +1 -1
  179. package/dist/src/components/event/event.d.ts +12 -0
  180. package/dist/src/components/event/event.stories.d.ts +2 -0
  181. package/package.json +2 -2
  182. package/dist/index198.js +0 -46
package/dist/index208.js CHANGED
@@ -1,29 +1,240 @@
1
- import { Extension as r } from "./index249.js";
2
- import { Blockquote as n } from "./index250.js";
3
- import { Bold as p } from "./index251.js";
4
- import { Code as f } from "./index252.js";
5
- import { CodeBlock as h } from "./index253.js";
6
- import { Document as u } from "./index254.js";
7
- import { HardBreak as l } from "./index255.js";
8
- import { Heading as a } from "./index256.js";
9
- import { HorizontalRule as c } from "./index257.js";
10
- import { Italic as d } from "./index258.js";
11
- import { Link as m } from "./index211.js";
12
- import { BulletList as g, ListItem as k, ListKeymap as B, OrderedList as L } from "./index259.js";
13
- import { Paragraph as x } from "./index260.js";
14
- import { Strike as b } from "./index261.js";
15
- import { Text as v } from "./index262.js";
16
- import { Underline as R } from "./index209.js";
17
- import { Dropcursor as K, Gapcursor as _, UndoRedo as I, TrailingNode as q } from "./index212.js";
18
- var y = r.create({
19
- name: "starterKit",
1
+ import { Mark as y, mergeAttributes as p, Extension as l } from "./index270.js";
2
+ var d = 20, u = (t, e = 0) => {
3
+ const r = [];
4
+ return !t.children.length || e > d || Array.from(t.children).forEach((o) => {
5
+ o.tagName === "SPAN" ? r.push(o) : o.children.length && r.push(...u(o, e + 1));
6
+ }), r;
7
+ }, f = (t) => {
8
+ if (!t.children.length)
9
+ return;
10
+ const e = u(t);
11
+ e && e.forEach((r) => {
12
+ var o, n;
13
+ const s = r.getAttribute("style"), i = (n = (o = r.parentElement) == null ? void 0 : o.closest("span")) == null ? void 0 : n.getAttribute("style");
14
+ r.setAttribute("style", `${i};${s}`);
15
+ });
16
+ }, c = y.create({
17
+ name: "textStyle",
18
+ priority: 101,
19
+ addOptions() {
20
+ return {
21
+ HTMLAttributes: {},
22
+ mergeNestedSpanStyles: !0
23
+ };
24
+ },
25
+ parseHTML() {
26
+ return [
27
+ {
28
+ tag: "span",
29
+ consuming: !1,
30
+ getAttrs: (t) => t.hasAttribute("style") ? (this.options.mergeNestedSpanStyles && f(t), {}) : !1
31
+ }
32
+ ];
33
+ },
34
+ renderHTML({ HTMLAttributes: t }) {
35
+ return ["span", p(this.options.HTMLAttributes, t), 0];
36
+ },
37
+ addCommands() {
38
+ return {
39
+ toggleTextStyle: (t) => ({ commands: e }) => e.toggleMark(this.name, t),
40
+ removeEmptyTextStyle: () => ({ tr: t }) => {
41
+ const { selection: e } = t;
42
+ return t.doc.nodesBetween(e.from, e.to, (r, o) => {
43
+ if (r.isTextblock)
44
+ return !0;
45
+ r.marks.filter((n) => n.type === this.type).some((n) => Object.values(n.attrs).some((s) => !!s)) || t.removeMark(o, o + r.nodeSize, this.type);
46
+ }), !0;
47
+ }
48
+ };
49
+ }
50
+ }), m = l.create({
51
+ name: "backgroundColor",
52
+ addOptions() {
53
+ return {
54
+ types: ["textStyle"]
55
+ };
56
+ },
57
+ addGlobalAttributes() {
58
+ return [
59
+ {
60
+ types: this.options.types,
61
+ attributes: {
62
+ backgroundColor: {
63
+ default: null,
64
+ parseHTML: (t) => {
65
+ var e;
66
+ const r = t.getAttribute("style");
67
+ if (r) {
68
+ const o = r.split(";").map((n) => n.trim()).filter(Boolean);
69
+ for (let n = o.length - 1; n >= 0; n -= 1) {
70
+ const s = o[n].split(":");
71
+ if (s.length >= 2) {
72
+ const i = s[0].trim().toLowerCase(), a = s.slice(1).join(":").trim();
73
+ if (i === "background-color")
74
+ return a.replace(/['"]+/g, "");
75
+ }
76
+ }
77
+ }
78
+ return (e = t.style.backgroundColor) == null ? void 0 : e.replace(/['"]+/g, "");
79
+ },
80
+ renderHTML: (t) => t.backgroundColor ? {
81
+ style: `background-color: ${t.backgroundColor}`
82
+ } : {}
83
+ }
84
+ }
85
+ }
86
+ ];
87
+ },
88
+ addCommands() {
89
+ return {
90
+ setBackgroundColor: (t) => ({ chain: e }) => e().setMark("textStyle", { backgroundColor: t }).run(),
91
+ unsetBackgroundColor: () => ({ chain: t }) => t().setMark("textStyle", { backgroundColor: null }).removeEmptyTextStyle().run()
92
+ };
93
+ }
94
+ }), g = l.create({
95
+ name: "color",
96
+ addOptions() {
97
+ return {
98
+ types: ["textStyle"]
99
+ };
100
+ },
101
+ addGlobalAttributes() {
102
+ return [
103
+ {
104
+ types: this.options.types,
105
+ attributes: {
106
+ color: {
107
+ default: null,
108
+ parseHTML: (t) => {
109
+ var e;
110
+ const r = t.getAttribute("style");
111
+ if (r) {
112
+ const o = r.split(";").map((n) => n.trim()).filter(Boolean);
113
+ for (let n = o.length - 1; n >= 0; n -= 1) {
114
+ const s = o[n].split(":");
115
+ if (s.length >= 2) {
116
+ const i = s[0].trim().toLowerCase(), a = s.slice(1).join(":").trim();
117
+ if (i === "color")
118
+ return a.replace(/['"]+/g, "");
119
+ }
120
+ }
121
+ }
122
+ return (e = t.style.color) == null ? void 0 : e.replace(/['"]+/g, "");
123
+ },
124
+ renderHTML: (t) => t.color ? {
125
+ style: `color: ${t.color}`
126
+ } : {}
127
+ }
128
+ }
129
+ }
130
+ ];
131
+ },
132
+ addCommands() {
133
+ return {
134
+ setColor: (t) => ({ chain: e }) => e().setMark("textStyle", { color: t }).run(),
135
+ unsetColor: () => ({ chain: t }) => t().setMark("textStyle", { color: null }).removeEmptyTextStyle().run()
136
+ };
137
+ }
138
+ }), h = l.create({
139
+ name: "fontFamily",
140
+ addOptions() {
141
+ return {
142
+ types: ["textStyle"]
143
+ };
144
+ },
145
+ addGlobalAttributes() {
146
+ return [
147
+ {
148
+ types: this.options.types,
149
+ attributes: {
150
+ fontFamily: {
151
+ default: null,
152
+ parseHTML: (t) => t.style.fontFamily,
153
+ renderHTML: (t) => t.fontFamily ? {
154
+ style: `font-family: ${t.fontFamily}`
155
+ } : {}
156
+ }
157
+ }
158
+ }
159
+ ];
160
+ },
161
+ addCommands() {
162
+ return {
163
+ setFontFamily: (t) => ({ chain: e }) => e().setMark("textStyle", { fontFamily: t }).run(),
164
+ unsetFontFamily: () => ({ chain: t }) => t().setMark("textStyle", { fontFamily: null }).removeEmptyTextStyle().run()
165
+ };
166
+ }
167
+ }), S = l.create({
168
+ name: "fontSize",
169
+ addOptions() {
170
+ return {
171
+ types: ["textStyle"]
172
+ };
173
+ },
174
+ addGlobalAttributes() {
175
+ return [
176
+ {
177
+ types: this.options.types,
178
+ attributes: {
179
+ fontSize: {
180
+ default: null,
181
+ parseHTML: (t) => t.style.fontSize,
182
+ renderHTML: (t) => t.fontSize ? {
183
+ style: `font-size: ${t.fontSize}`
184
+ } : {}
185
+ }
186
+ }
187
+ }
188
+ ];
189
+ },
190
+ addCommands() {
191
+ return {
192
+ setFontSize: (t) => ({ chain: e }) => e().setMark("textStyle", { fontSize: t }).run(),
193
+ unsetFontSize: () => ({ chain: t }) => t().setMark("textStyle", { fontSize: null }).removeEmptyTextStyle().run()
194
+ };
195
+ }
196
+ }), b = l.create({
197
+ name: "lineHeight",
198
+ addOptions() {
199
+ return {
200
+ types: ["textStyle"]
201
+ };
202
+ },
203
+ addGlobalAttributes() {
204
+ return [
205
+ {
206
+ types: this.options.types,
207
+ attributes: {
208
+ lineHeight: {
209
+ default: null,
210
+ parseHTML: (t) => t.style.lineHeight,
211
+ renderHTML: (t) => t.lineHeight ? {
212
+ style: `line-height: ${t.lineHeight}`
213
+ } : {}
214
+ }
215
+ }
216
+ }
217
+ ];
218
+ },
219
+ addCommands() {
220
+ return {
221
+ setLineHeight: (t) => ({ chain: e }) => e().setMark("textStyle", { lineHeight: t }).run(),
222
+ unsetLineHeight: () => ({ chain: t }) => t().setMark("textStyle", { lineHeight: null }).removeEmptyTextStyle().run()
223
+ };
224
+ }
225
+ });
226
+ l.create({
227
+ name: "textStyleKit",
20
228
  addExtensions() {
21
- var i, s, t, e;
22
- const o = [];
23
- return this.options.bold !== !1 && o.push(p.configure(this.options.bold)), this.options.blockquote !== !1 && o.push(n.configure(this.options.blockquote)), this.options.bulletList !== !1 && o.push(g.configure(this.options.bulletList)), this.options.code !== !1 && o.push(f.configure(this.options.code)), this.options.codeBlock !== !1 && o.push(h.configure(this.options.codeBlock)), this.options.document !== !1 && o.push(u.configure(this.options.document)), this.options.dropcursor !== !1 && o.push(K.configure(this.options.dropcursor)), this.options.gapcursor !== !1 && o.push(_.configure(this.options.gapcursor)), this.options.hardBreak !== !1 && o.push(l.configure(this.options.hardBreak)), this.options.heading !== !1 && o.push(a.configure(this.options.heading)), this.options.undoRedo !== !1 && o.push(I.configure(this.options.undoRedo)), this.options.horizontalRule !== !1 && o.push(c.configure(this.options.horizontalRule)), this.options.italic !== !1 && o.push(d.configure(this.options.italic)), this.options.listItem !== !1 && o.push(k.configure(this.options.listItem)), this.options.listKeymap !== !1 && o.push(B.configure((i = this.options) == null ? void 0 : i.listKeymap)), this.options.link !== !1 && o.push(m.configure((s = this.options) == null ? void 0 : s.link)), this.options.orderedList !== !1 && o.push(L.configure(this.options.orderedList)), this.options.paragraph !== !1 && o.push(x.configure(this.options.paragraph)), this.options.strike !== !1 && o.push(b.configure(this.options.strike)), this.options.text !== !1 && o.push(v.configure(this.options.text)), this.options.underline !== !1 && o.push(R.configure((t = this.options) == null ? void 0 : t.underline)), this.options.trailingNode !== !1 && o.push(q.configure((e = this.options) == null ? void 0 : e.trailingNode)), o;
229
+ const t = [];
230
+ return this.options.backgroundColor !== !1 && t.push(m.configure(this.options.backgroundColor)), this.options.color !== !1 && t.push(g.configure(this.options.color)), this.options.fontFamily !== !1 && t.push(h.configure(this.options.fontFamily)), this.options.fontSize !== !1 && t.push(S.configure(this.options.fontSize)), this.options.lineHeight !== !1 && t.push(b.configure(this.options.lineHeight)), this.options.textStyle !== !1 && t.push(c.configure(this.options.textStyle)), t;
24
231
  }
25
- }), M = y;
232
+ });
26
233
  export {
27
- y as StarterKit,
28
- M as default
234
+ m as BackgroundColor,
235
+ g as Color,
236
+ h as FontFamily,
237
+ S as FontSize,
238
+ b as LineHeight,
239
+ c as TextStyle
29
240
  };
package/dist/index209.js CHANGED
@@ -1,65 +1,313 @@
1
- import { Mark as s, mergeAttributes as d } from "./index249.js";
2
- var u = s.create({
3
- name: "underline",
1
+ import { Mark as x, markPasteRule as b, mergeAttributes as v, combineTransactionSteps as w, getChangedRanges as T, findChildrenInRange as _, getMarksBetween as O, getAttributes as R } from "./index270.js";
2
+ import { registerCustomProtocol as C, tokenize as H, find as M, reset as U } from "./index284.js";
3
+ import { Plugin as g, PluginKey as A } from "./index285.js";
4
+ var P = "[\0-   ᠎ -\u2029  ]", B = new RegExp(P), I = new RegExp(`${P}$`), W = new RegExp(P, "g");
5
+ function $(t) {
6
+ return t.length === 1 ? t[0].isLink : t.length === 3 && t[1].isLink ? ["()", "[]"].includes(t[0].value + t[2].value) : !1;
7
+ }
8
+ function z(t) {
9
+ return new g({
10
+ key: new A("autolink"),
11
+ appendTransaction: (e, r, o) => {
12
+ const n = e.some((a) => a.docChanged) && !r.doc.eq(o.doc), l = e.some((a) => a.getMeta("preventAutolink"));
13
+ if (!n || l)
14
+ return;
15
+ const { tr: i } = o, d = w(r.doc, [...e]);
16
+ if (T(d).forEach(({ newRange: a }) => {
17
+ const f = _(o.doc, a, (h) => h.isTextblock);
18
+ let c, k;
19
+ if (f.length > 1)
20
+ c = f[0], k = o.doc.textBetween(
21
+ c.pos,
22
+ c.pos + c.node.nodeSize,
23
+ void 0,
24
+ " "
25
+ );
26
+ else if (f.length) {
27
+ const h = o.doc.textBetween(a.from, a.to, " ", " ");
28
+ if (!I.test(h))
29
+ return;
30
+ c = f[0], k = o.doc.textBetween(c.pos, a.to, void 0, " ");
31
+ }
32
+ if (c && k) {
33
+ const h = k.split(B).filter(Boolean);
34
+ if (h.length <= 0)
35
+ return !1;
36
+ const m = h[h.length - 1], E = c.pos + k.lastIndexOf(m);
37
+ if (!m)
38
+ return !1;
39
+ const L = H(m).map((s) => s.toObject(t.defaultProtocol));
40
+ if (!$(L))
41
+ return !1;
42
+ L.filter((s) => s.isLink).map((s) => ({
43
+ ...s,
44
+ from: E + s.start + 1,
45
+ to: E + s.end + 1
46
+ })).filter((s) => o.schema.marks.code ? !o.doc.rangeHasMark(s.from, s.to, o.schema.marks.code) : !0).filter((s) => t.validate(s.value)).filter((s) => t.shouldAutoLink(s.value)).forEach((s) => {
47
+ O(s.from, s.to, o.doc).some((y) => y.mark.type === t.type) || i.addMark(
48
+ s.from,
49
+ s.to,
50
+ t.type.create({
51
+ href: s.href
52
+ })
53
+ );
54
+ });
55
+ }
56
+ }), !!i.steps.length)
57
+ return i;
58
+ }
59
+ });
60
+ }
61
+ function N(t) {
62
+ return new g({
63
+ key: new A("handleClickLink"),
64
+ props: {
65
+ handleClick: (e, r, o) => {
66
+ var n, l;
67
+ if (o.button !== 0 || !e.editable)
68
+ return !1;
69
+ let i = null;
70
+ if (o.target instanceof HTMLAnchorElement)
71
+ i = o.target;
72
+ else {
73
+ const u = o.target;
74
+ if (!u)
75
+ return !1;
76
+ const a = t.editor.view.dom;
77
+ i = u.closest("a"), i && !a.contains(i) && (i = null);
78
+ }
79
+ if (!i)
80
+ return !1;
81
+ let d = !1;
82
+ if (t.enableClickSelection && (d = t.editor.commands.extendMarkRange(t.type.name)), t.openOnClick) {
83
+ const u = R(e.state, t.type.name), a = (n = i.href) != null ? n : u.href, f = (l = i.target) != null ? l : u.target;
84
+ a && (window.open(a, f), d = !0);
85
+ }
86
+ return d;
87
+ }
88
+ }
89
+ });
90
+ }
91
+ function V(t) {
92
+ return new g({
93
+ key: new A("handlePasteLink"),
94
+ props: {
95
+ handlePaste: (e, r, o) => {
96
+ const { shouldAutoLink: n } = t, { state: l } = e, { selection: i } = l, { empty: d } = i;
97
+ if (d)
98
+ return !1;
99
+ let u = "";
100
+ o.content.forEach((f) => {
101
+ u += f.textContent;
102
+ });
103
+ const a = M(u, { defaultProtocol: t.defaultProtocol }).find(
104
+ (f) => f.isLink && f.value === u
105
+ );
106
+ return !u || !a || n !== void 0 && !n(a.value) ? !1 : t.editor.commands.setMark(t.type, {
107
+ href: a.href
108
+ });
109
+ }
110
+ }
111
+ });
112
+ }
113
+ function p(t, e) {
114
+ const r = ["http", "https", "ftp", "ftps", "mailto", "tel", "callto", "sms", "cid", "xmpp"];
115
+ return e && e.forEach((o) => {
116
+ const n = typeof o == "string" ? o : o.scheme;
117
+ n && r.push(n);
118
+ }), !t || t.replace(W, "").match(
119
+ new RegExp(
120
+ // eslint-disable-next-line no-useless-escape
121
+ `^(?:(?:${r.join("|")}):|[^a-z]|[a-z0-9+.-]+(?:[^a-z+.-:]|$))`,
122
+ "i"
123
+ )
124
+ );
125
+ }
126
+ var X = x.create({
127
+ name: "link",
128
+ priority: 1e3,
129
+ keepOnSplit: !1,
130
+ exitable: !0,
131
+ onCreate() {
132
+ this.options.validate && !this.options.shouldAutoLink && (this.options.shouldAutoLink = this.options.validate, console.warn("The `validate` option is deprecated. Rename to the `shouldAutoLink` option instead.")), this.options.protocols.forEach((t) => {
133
+ if (typeof t == "string") {
134
+ C(t);
135
+ return;
136
+ }
137
+ C(t.scheme, t.optionalSlashes);
138
+ });
139
+ },
140
+ onDestroy() {
141
+ U();
142
+ },
143
+ inclusive() {
144
+ return this.options.autolink;
145
+ },
4
146
  addOptions() {
5
147
  return {
6
- HTMLAttributes: {}
148
+ openOnClick: !0,
149
+ enableClickSelection: !1,
150
+ linkOnPaste: !0,
151
+ autolink: !0,
152
+ protocols: [],
153
+ defaultProtocol: "http",
154
+ HTMLAttributes: {
155
+ target: "_blank",
156
+ rel: "noopener noreferrer nofollow",
157
+ class: null
158
+ },
159
+ isAllowedUri: (t, e) => !!p(t, e.protocols),
160
+ validate: (t) => !!t,
161
+ shouldAutoLink: (t) => {
162
+ const e = /^[a-z][a-z0-9+.-]*:\/\//i.test(t), r = /^[a-z][a-z0-9+.-]*:/i.test(t);
163
+ if (e || r && !t.includes("@"))
164
+ return !0;
165
+ const n = (t.includes("@") ? t.split("@").pop() : t).split(/[/?#:]/)[0];
166
+ return !(/^\d{1,3}(\.\d{1,3}){3}$/.test(n) || !/\./.test(n));
167
+ }
168
+ };
169
+ },
170
+ addAttributes() {
171
+ return {
172
+ href: {
173
+ default: null,
174
+ parseHTML(t) {
175
+ return t.getAttribute("href");
176
+ }
177
+ },
178
+ target: {
179
+ default: this.options.HTMLAttributes.target
180
+ },
181
+ rel: {
182
+ default: this.options.HTMLAttributes.rel
183
+ },
184
+ class: {
185
+ default: this.options.HTMLAttributes.class
186
+ },
187
+ title: {
188
+ default: null
189
+ }
7
190
  };
8
191
  },
9
192
  parseHTML() {
10
193
  return [
11
194
  {
12
- tag: "u"
13
- },
14
- {
15
- style: "text-decoration",
16
- consuming: !1,
17
- getAttrs: (e) => e.includes("underline") ? {} : !1
195
+ tag: "a[href]",
196
+ getAttrs: (t) => {
197
+ const e = t.getAttribute("href");
198
+ return !e || !this.options.isAllowedUri(e, {
199
+ defaultValidate: (r) => !!p(r, this.options.protocols),
200
+ protocols: this.options.protocols,
201
+ defaultProtocol: this.options.defaultProtocol
202
+ }) ? !1 : null;
203
+ }
18
204
  }
19
205
  ];
20
206
  },
21
- renderHTML({ HTMLAttributes: e }) {
22
- return ["u", d(this.options.HTMLAttributes, e), 0];
23
- },
24
- parseMarkdown(e, n) {
25
- return n.applyMark(this.name || "underline", n.parseInline(e.tokens || []));
207
+ renderHTML({ HTMLAttributes: t }) {
208
+ return this.options.isAllowedUri(t.href, {
209
+ defaultValidate: (e) => !!p(e, this.options.protocols),
210
+ protocols: this.options.protocols,
211
+ defaultProtocol: this.options.defaultProtocol
212
+ }) ? ["a", v(this.options.HTMLAttributes, t), 0] : ["a", v(this.options.HTMLAttributes, { ...t, href: "" }), 0];
26
213
  },
27
- renderMarkdown(e, n) {
28
- return `++${n.renderChildren(e)}++`;
29
- },
30
- markdownTokenizer: {
31
- name: "underline",
32
- level: "inline",
33
- start(e) {
34
- return e.indexOf("++");
35
- },
36
- tokenize(e, n, i) {
37
- const r = /^(\+\+)([\s\S]+?)(\+\+)/.exec(e);
38
- if (!r)
39
- return;
40
- const t = r[2].trim();
41
- return {
42
- type: "underline",
43
- raw: r[0],
44
- text: t,
45
- tokens: i.inlineTokens(t)
46
- };
47
- }
214
+ markdownTokenName: "link",
215
+ parseMarkdown: (t, e) => e.applyMark("link", e.parseInline(t.tokens || []), {
216
+ href: t.href,
217
+ title: t.title || null
218
+ }),
219
+ renderMarkdown: (t, e) => {
220
+ var r, o, n, l;
221
+ const i = (o = (r = t.attrs) == null ? void 0 : r.href) != null ? o : "", d = (l = (n = t.attrs) == null ? void 0 : n.title) != null ? l : "", u = e.renderChildren(t);
222
+ return d ? `[${u}](${i} "${d}")` : `[${u}](${i})`;
48
223
  },
49
224
  addCommands() {
50
225
  return {
51
- setUnderline: () => ({ commands: e }) => e.setMark(this.name),
52
- toggleUnderline: () => ({ commands: e }) => e.toggleMark(this.name),
53
- unsetUnderline: () => ({ commands: e }) => e.unsetMark(this.name)
226
+ setLink: (t) => ({ chain: e }) => {
227
+ const { href: r } = t;
228
+ return this.options.isAllowedUri(r, {
229
+ defaultValidate: (o) => !!p(o, this.options.protocols),
230
+ protocols: this.options.protocols,
231
+ defaultProtocol: this.options.defaultProtocol
232
+ }) ? e().setMark(this.name, t).setMeta("preventAutolink", !0).run() : !1;
233
+ },
234
+ toggleLink: (t) => ({ chain: e }) => {
235
+ const { href: r } = t || {};
236
+ return r && !this.options.isAllowedUri(r, {
237
+ defaultValidate: (o) => !!p(o, this.options.protocols),
238
+ protocols: this.options.protocols,
239
+ defaultProtocol: this.options.defaultProtocol
240
+ }) ? !1 : e().toggleMark(this.name, t, { extendEmptyMarkRange: !0 }).setMeta("preventAutolink", !0).run();
241
+ },
242
+ unsetLink: () => ({ chain: t }) => t().unsetMark(this.name, { extendEmptyMarkRange: !0 }).setMeta("preventAutolink", !0).run()
54
243
  };
55
244
  },
56
- addKeyboardShortcuts() {
57
- return {
58
- "Mod-u": () => this.editor.commands.toggleUnderline(),
59
- "Mod-U": () => this.editor.commands.toggleUnderline()
60
- };
245
+ addPasteRules() {
246
+ return [
247
+ b({
248
+ find: (t) => {
249
+ const e = [];
250
+ if (t) {
251
+ const { protocols: r, defaultProtocol: o } = this.options, n = M(t).filter(
252
+ (l) => l.isLink && this.options.isAllowedUri(l.value, {
253
+ defaultValidate: (i) => !!p(i, r),
254
+ protocols: r,
255
+ defaultProtocol: o
256
+ })
257
+ );
258
+ n.length && n.forEach((l) => {
259
+ this.options.shouldAutoLink(l.value) && e.push({
260
+ text: l.value,
261
+ data: {
262
+ href: l.href
263
+ },
264
+ index: l.start
265
+ });
266
+ });
267
+ }
268
+ return e;
269
+ },
270
+ type: this.type,
271
+ getAttributes: (t) => {
272
+ var e;
273
+ return {
274
+ href: (e = t.data) == null ? void 0 : e.href
275
+ };
276
+ }
277
+ })
278
+ ];
279
+ },
280
+ addProseMirrorPlugins() {
281
+ const t = [], { protocols: e, defaultProtocol: r } = this.options;
282
+ return this.options.autolink && t.push(
283
+ z({
284
+ type: this.type,
285
+ defaultProtocol: this.options.defaultProtocol,
286
+ validate: (o) => this.options.isAllowedUri(o, {
287
+ defaultValidate: (n) => !!p(n, e),
288
+ protocols: e,
289
+ defaultProtocol: r
290
+ }),
291
+ shouldAutoLink: this.options.shouldAutoLink
292
+ })
293
+ ), t.push(
294
+ N({
295
+ type: this.type,
296
+ editor: this.editor,
297
+ openOnClick: this.options.openOnClick === "whenNotEditable" ? !0 : this.options.openOnClick,
298
+ enableClickSelection: this.options.enableClickSelection
299
+ })
300
+ ), this.options.linkOnPaste && t.push(
301
+ V({
302
+ editor: this.editor,
303
+ defaultProtocol: this.options.defaultProtocol,
304
+ type: this.type,
305
+ shouldAutoLink: this.options.shouldAutoLink
306
+ })
307
+ ), t;
61
308
  }
62
309
  });
63
310
  export {
64
- u as Underline
311
+ X as Link,
312
+ p as isAllowedUri
65
313
  };