@quoreadmin/ui 1.10.10 → 1.10.11

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 (226) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index105.js +1 -1
  3. package/dist/index111.js +1 -1
  4. package/dist/index115.js +1 -1
  5. package/dist/index136.js +1 -1
  6. package/dist/index138.js +146 -146
  7. package/dist/index151.js +2 -2
  8. package/dist/index162.js +1 -1
  9. package/dist/index173.js +2 -2
  10. package/dist/index180.js +228 -1151
  11. package/dist/index182.js +14 -14
  12. package/dist/index183.js +96 -266
  13. package/dist/index184.js +2 -106
  14. package/dist/index185.js +1376 -2
  15. package/dist/index187.js +20 -0
  16. package/dist/index188.js +12 -12
  17. package/dist/index189.js +10 -10
  18. package/dist/index190.js +12 -12
  19. package/dist/index191.js +21 -14
  20. package/dist/index192.js +757 -23
  21. package/dist/index193.js +1144 -759
  22. package/dist/index194.js +1234 -1144
  23. package/dist/index195.js +11248 -1205
  24. package/dist/index196.js +1135 -11213
  25. package/dist/index198.js +17 -17
  26. package/dist/index201.js +29 -29
  27. package/dist/index202.js +2 -2
  28. package/dist/index203.js +2 -2
  29. package/dist/index204.js +1 -1
  30. package/dist/index206.js +2 -2
  31. package/dist/index208.js +14 -14
  32. package/dist/index209.js +1 -1
  33. package/dist/index210.js +1 -1
  34. package/dist/index211.js +3 -3
  35. package/dist/index212.js +6 -6
  36. package/dist/index213.js +158 -30
  37. package/dist/index214.js +224 -112
  38. package/dist/index215.js +32 -31
  39. package/dist/index216.js +10 -26
  40. package/dist/index217.js +83 -31
  41. package/dist/index218.js +404 -48
  42. package/dist/index219.js +22 -43
  43. package/dist/index220.js +32 -3
  44. package/dist/index221.js +116 -9
  45. package/dist/index222.js +35 -18
  46. package/dist/index223.js +26 -10
  47. package/dist/index224.js +36 -10
  48. package/dist/index225.js +48 -36
  49. package/dist/index226.js +43 -21
  50. package/dist/index227.js +3 -87
  51. package/dist/index228.js +9 -407
  52. package/dist/index229.js +19 -22
  53. package/dist/index230.js +10 -127
  54. package/dist/index231.js +9 -37
  55. package/dist/index232.js +39 -80
  56. package/dist/index233.js +21 -20
  57. package/dist/index234.js +126 -19
  58. package/dist/index235.js +34 -16
  59. package/dist/index236.js +80 -20
  60. package/dist/index237.js +9 -9
  61. package/dist/index238.js +19 -160
  62. package/dist/index239.js +11 -11
  63. package/dist/index240.js +13 -15
  64. package/dist/index241.js +19 -198
  65. package/dist/index242.js +140 -49
  66. package/dist/index243.js +20 -34
  67. package/dist/index244.js +21 -39
  68. package/dist/index245.js +194 -156
  69. package/dist/index246.js +66 -224
  70. package/dist/index247.js +34 -37
  71. package/dist/index248.js +39 -9
  72. package/dist/index249.js +253 -22
  73. package/dist/index250.js +7 -21
  74. package/dist/index251.js +138 -20
  75. package/dist/index252.js +78 -831
  76. package/dist/index253.js +21 -701
  77. package/dist/index254.js +22 -176
  78. package/dist/index255.js +13 -15
  79. package/dist/index256.js +836 -20
  80. package/dist/index257.js +701 -19
  81. package/dist/index258.js +176 -3
  82. package/dist/index259.js +21 -186
  83. package/dist/index260.js +19 -132
  84. package/dist/index261.js +20 -1223
  85. package/dist/index262.js +3 -20
  86. package/dist/index263.js +186 -21
  87. package/dist/index264.js +132 -21
  88. package/dist/index265.js +1223 -29
  89. package/dist/index266.js +12 -12
  90. package/dist/index267.js +15 -13
  91. package/dist/index268.js +22 -2
  92. package/dist/index269.js +29 -2
  93. package/dist/index270.js +20 -3636
  94. package/dist/index271.js +20 -55
  95. package/dist/index272.js +2 -77
  96. package/dist/index273.js +2 -52
  97. package/dist/index274.js +2 -215
  98. package/dist/index275.js +79 -10
  99. package/dist/index276.js +3623 -44
  100. package/dist/index277.js +35 -41
  101. package/dist/index278.js +59 -36
  102. package/dist/index279.js +21 -44
  103. package/dist/index280.js +176 -687
  104. package/dist/index281.js +9 -41
  105. package/dist/index282.js +39 -46
  106. package/dist/index283.js +60 -10
  107. package/dist/index284.js +46 -697
  108. package/dist/index285.js +73 -818
  109. package/dist/index286.js +708 -235
  110. package/dist/index287.js +41 -7
  111. package/dist/index288.js +60 -134
  112. package/dist/index289.js +11 -83
  113. package/dist/index290.js +705 -2
  114. package/dist/index291.js +814 -73
  115. package/dist/index292.js +3 -54
  116. package/dist/index293.js +26 -25
  117. package/dist/index294.js +53 -21
  118. package/dist/index295.js +17 -13
  119. package/dist/index296.js +22 -16
  120. package/dist/index297.js +22 -17
  121. package/dist/index298.js +15 -22
  122. package/dist/index299.js +17 -3
  123. package/dist/index300.js +23 -27
  124. package/dist/index301.js +73 -256
  125. package/dist/index302.js +21 -5
  126. package/dist/index303.js +925 -130
  127. package/dist/index304.js +21 -72
  128. package/dist/index305.js +18 -85
  129. package/dist/index306.js +19 -28
  130. package/dist/index307.js +68 -15
  131. package/dist/index308.js +19 -75
  132. package/dist/index309.js +19 -4
  133. package/dist/index310.js +22 -2
  134. package/dist/index311.js +21 -82
  135. package/dist/index312.js +63 -53
  136. package/dist/index313.js +260 -4
  137. package/dist/index314.js +5 -4
  138. package/dist/index315.js +127 -166
  139. package/dist/index316.js +68 -58
  140. package/dist/index317.js +85 -73
  141. package/dist/index318.js +25 -75
  142. package/dist/index319.js +14 -20
  143. package/dist/index320.js +66 -926
  144. package/dist/index321.js +3 -21
  145. package/dist/index322.js +2 -20
  146. package/dist/index323.js +82 -19
  147. package/dist/index324.js +52 -68
  148. package/dist/index325.js +6 -19
  149. package/dist/index326.js +5 -19
  150. package/dist/index327.js +178 -21
  151. package/dist/index328.js +62 -21
  152. package/dist/index329.js +74 -62
  153. package/dist/index330.js +37 -1534
  154. package/dist/index331.js +1494 -346
  155. package/dist/index332.js +330 -2675
  156. package/dist/index333.js +2717 -72
  157. package/dist/index334.js +75 -3781
  158. package/dist/index335.js +3780 -48
  159. package/dist/index336.js +60 -15
  160. package/dist/index337.js +15 -84
  161. package/dist/index338.js +70 -188
  162. package/dist/index339.js +176 -220
  163. package/dist/index340.js +240 -31
  164. package/dist/index341.js +9 -8
  165. package/dist/index342.js +10 -13
  166. package/dist/index343.js +13 -54
  167. package/dist/index344.js +10 -12
  168. package/dist/index345.js +15 -12
  169. package/dist/index346.js +8 -57
  170. package/dist/index347.js +12 -51
  171. package/dist/index348.js +49 -25
  172. package/dist/index349.js +12 -2
  173. package/dist/index350.js +14 -5
  174. package/dist/index351.js +58 -2
  175. package/dist/index352.js +52 -23
  176. package/dist/index353.js +28 -38
  177. package/dist/index354.js +2 -2
  178. package/dist/index355.js +4 -10
  179. package/dist/index356.js +2 -20
  180. package/dist/index357.js +22 -9
  181. package/dist/index358.js +40 -9
  182. package/dist/index359.js +2 -17
  183. package/dist/index360.js +11 -2
  184. package/dist/index361.js +20 -9
  185. package/dist/index362.js +2 -10
  186. package/dist/index363.js +8 -13
  187. package/dist/index364.js +19 -18
  188. package/dist/index365.js +19 -56
  189. package/dist/index366.js +63 -28
  190. package/dist/index367.js +37 -7
  191. package/dist/index368.js +16 -49
  192. package/dist/index369.js +57 -7
  193. package/dist/index370.js +27 -10
  194. package/dist/index371.js +7 -7
  195. package/dist/index372.js +51 -27
  196. package/dist/index373.js +7 -2
  197. package/dist/index374.js +11 -69
  198. package/dist/index375.js +6 -166
  199. package/dist/index376.js +28 -20
  200. package/dist/index377.js +2 -20
  201. package/dist/index378.js +67 -61
  202. package/dist/index379.js +166 -36
  203. package/dist/index380.js +1 -1
  204. package/dist/index381.js +3 -3
  205. package/dist/index384.js +17 -13
  206. package/dist/index385.js +13 -7
  207. package/dist/index386.js +7 -12
  208. package/dist/index387.js +11 -4
  209. package/dist/index388.js +5 -33
  210. package/dist/index389.js +33 -31
  211. package/dist/index390.js +29 -26
  212. package/dist/index391.js +26 -59
  213. package/dist/index392.js +60 -16
  214. package/dist/index393.js +95 -98
  215. package/dist/index394.js +100 -90
  216. package/dist/index395.js +91 -98
  217. package/dist/index401.js +1 -1
  218. package/dist/index402.js +2 -2
  219. package/dist/index50.js +2 -2
  220. package/dist/index62.js +1 -1
  221. package/dist/index78.js +1 -1
  222. package/dist/index88.js +1 -1
  223. package/dist/index92.js +1 -1
  224. package/dist/index98.js +2 -2
  225. package/package.json +1 -1
  226. package/dist/index186.js +0 -1378
package/dist/index280.js CHANGED
@@ -1,728 +1,217 @@
1
- import { Node as g, wrappingInputRule as b, mergeAttributes as L, renderNestedMarkdownContent as $, Extension as S, isNodeActive as I, isAtStartOfNode as K, isAtEndOfNode as V, getNodeType as O, getNodeAtPosition as X, getRenderedAttributes as z, parseIndentedBlocks as x } from "./index270.js";
2
- var F = Object.defineProperty, G = (t, e) => {
3
- for (var s in e)
4
- F(t, s, { get: e[s], enumerable: !0 });
5
- }, W = "listItem", w = "textStyle", C = /^\s*([-+*])\s$/, q = g.create({
6
- name: "bulletList",
1
+ import { Node as k, textblockTypeInputRule as S, mergeAttributes as C } from "./index276.js";
2
+ import { Plugin as w, PluginKey as B, TextSelection as T, Selection as L } from "./index291.js";
3
+ var y = 4, M = /^```([a-z]+)?[\s\n]$/, N = /^~~~([a-z]+)?[\s\n]$/, $ = k.create({
4
+ name: "codeBlock",
7
5
  addOptions() {
8
6
  return {
9
- itemTypeName: "listItem",
10
- HTMLAttributes: {},
11
- keepMarks: !1,
12
- keepAttributes: !1
13
- };
14
- },
15
- group: "block list",
16
- content() {
17
- return `${this.options.itemTypeName}+`;
18
- },
19
- parseHTML() {
20
- return [{ tag: "ul" }];
21
- },
22
- renderHTML({ HTMLAttributes: t }) {
23
- return ["ul", L(this.options.HTMLAttributes, t), 0];
24
- },
25
- markdownTokenName: "list",
26
- parseMarkdown: (t, e) => t.type !== "list" || t.ordered ? [] : {
27
- type: "bulletList",
28
- content: t.items ? e.parseChildren(t.items) : []
29
- },
30
- renderMarkdown: (t, e) => t.content ? e.renderChildren(t.content, `
31
- `) : "",
32
- markdownOptions: {
33
- indentsContent: !0
34
- },
35
- addCommands() {
36
- return {
37
- toggleBulletList: () => ({ commands: t, chain: e }) => this.options.keepAttributes ? e().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(W, this.editor.getAttributes(w)).run() : t.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks)
38
- };
39
- },
40
- addKeyboardShortcuts() {
41
- return {
42
- "Mod-Shift-8": () => this.editor.commands.toggleBulletList()
7
+ languageClassPrefix: "language-",
8
+ exitOnTripleEnter: !0,
9
+ exitOnArrowDown: !0,
10
+ defaultLanguage: null,
11
+ enableTabIndentation: !1,
12
+ tabSize: y,
13
+ HTMLAttributes: {}
43
14
  };
44
15
  },
45
- addInputRules() {
46
- let t = b({
47
- find: C,
48
- type: this.type
49
- });
50
- return (this.options.keepMarks || this.options.keepAttributes) && (t = b({
51
- find: C,
52
- type: this.type,
53
- keepMarks: this.options.keepMarks,
54
- keepAttributes: this.options.keepAttributes,
55
- getAttributes: () => this.editor.getAttributes(w),
56
- editor: this.editor
57
- })), [t];
58
- }
59
- }), Y = g.create({
60
- name: "listItem",
61
- addOptions() {
16
+ content: "text*",
17
+ marks: "",
18
+ group: "block",
19
+ code: !0,
20
+ defining: !0,
21
+ addAttributes() {
62
22
  return {
63
- HTMLAttributes: {},
64
- bulletListTypeName: "bulletList",
65
- orderedListTypeName: "orderedList"
23
+ language: {
24
+ default: this.options.defaultLanguage,
25
+ parseHTML: (e) => {
26
+ var t;
27
+ const { languageClassPrefix: r } = this.options;
28
+ if (!r)
29
+ return null;
30
+ const o = [...((t = e.firstElementChild) == null ? void 0 : t.classList) || []].filter((s) => s.startsWith(r)).map((s) => s.replace(r, ""))[0];
31
+ return o || null;
32
+ },
33
+ rendered: !1
34
+ }
66
35
  };
67
36
  },
68
- content: "paragraph block*",
69
- defining: !0,
70
37
  parseHTML() {
71
38
  return [
72
39
  {
73
- tag: "li"
40
+ tag: "pre",
41
+ preserveWhitespace: "full"
74
42
  }
75
43
  ];
76
44
  },
77
- renderHTML({ HTMLAttributes: t }) {
78
- return ["li", L(this.options.HTMLAttributes, t), 0];
79
- },
80
- markdownTokenName: "list_item",
81
- parseMarkdown: (t, e) => {
82
- if (t.type !== "list_item")
83
- return [];
84
- let s = [];
85
- if (t.tokens && t.tokens.length > 0)
86
- if (t.tokens.some((n) => n.type === "paragraph"))
87
- s = e.parseChildren(t.tokens);
88
- else {
89
- const n = t.tokens[0];
90
- if (n && n.type === "text" && n.tokens && n.tokens.length > 0) {
91
- if (s = [
92
- {
93
- type: "paragraph",
94
- content: e.parseInline(n.tokens)
95
- }
96
- ], t.tokens.length > 1) {
97
- const c = t.tokens.slice(1), a = e.parseChildren(c);
98
- s.push(...a);
99
- }
100
- } else
101
- s = e.parseChildren(t.tokens);
102
- }
103
- return s.length === 0 && (s = [
104
- {
105
- type: "paragraph",
106
- content: []
107
- }
108
- ]), {
109
- type: "listItem",
110
- content: s
111
- };
112
- },
113
- renderMarkdown: (t, e, s) => $(
114
- t,
115
- e,
116
- (r) => {
117
- var n, i;
118
- return r.parentType === "bulletList" ? "- " : r.parentType === "orderedList" ? `${(((i = (n = r.meta) == null ? void 0 : n.parentAttrs) == null ? void 0 : i.start) || 1) + r.index}. ` : "- ";
119
- },
120
- s
121
- ),
122
- addKeyboardShortcuts() {
123
- return {
124
- Enter: () => this.editor.commands.splitListItem(this.name),
125
- Tab: () => this.editor.commands.sinkListItem(this.name),
126
- "Shift-Tab": () => this.editor.commands.liftListItem(this.name)
127
- };
128
- }
129
- }), J = {};
130
- G(J, {
131
- findListItemPos: () => y,
132
- getNextListDepth: () => A,
133
- handleBackspace: () => T,
134
- handleDelete: () => M,
135
- hasListBefore: () => _,
136
- hasListItemAfter: () => Q,
137
- hasListItemBefore: () => P,
138
- listItemHasSubList: () => D,
139
- nextListIsDeeper: () => R,
140
- nextListIsHigher: () => j
141
- });
142
- var y = (t, e) => {
143
- const { $from: s } = e.selection, r = O(t, e.schema);
144
- let n = null, i = s.depth, c = s.pos, a = null;
145
- for (; i > 0 && a === null; )
146
- n = s.node(i), n.type === r ? a = i : (i -= 1, c -= 1);
147
- return a === null ? null : { $pos: e.doc.resolve(c), depth: a };
148
- }, A = (t, e) => {
149
- const s = y(t, e);
150
- if (!s)
151
- return !1;
152
- const [, r] = X(e, t, s.$pos.pos + 4);
153
- return r;
154
- }, _ = (t, e, s) => {
155
- const { $anchor: r } = t.selection, n = Math.max(0, r.pos - 2), i = t.doc.resolve(n).node();
156
- return !(!i || !s.includes(i.type.name));
157
- }, P = (t, e) => {
158
- var s;
159
- const { $anchor: r } = e.selection, n = e.doc.resolve(r.pos - 2);
160
- return !(n.index() === 0 || ((s = n.nodeBefore) == null ? void 0 : s.type.name) !== t);
161
- }, D = (t, e, s) => {
162
- if (!s)
163
- return !1;
164
- const r = O(t, e.schema);
165
- let n = !1;
166
- return s.descendants((i) => {
167
- i.type === r && (n = !0);
168
- }), n;
169
- }, T = (t, e, s) => {
170
- if (t.commands.undoInputRule())
171
- return !0;
172
- if (t.state.selection.from !== t.state.selection.to)
173
- return !1;
174
- if (!I(t.state, e) && _(t.state, e, s)) {
175
- const { $anchor: a } = t.state.selection, u = t.state.doc.resolve(a.before() - 1), p = [];
176
- u.node().descendants((l, d) => {
177
- l.type.name === e && p.push({ node: l, pos: d });
178
- });
179
- const h = p.at(-1);
180
- if (!h)
181
- return !1;
182
- const o = t.state.doc.resolve(u.start() + h.pos + 1);
183
- return t.chain().cut({ from: a.start() - 1, to: a.end() + 1 }, o.end()).joinForward().run();
184
- }
185
- if (!I(t.state, e) || !K(t.state))
186
- return !1;
187
- const r = y(e, t.state);
188
- if (!r)
189
- return !1;
190
- const i = t.state.doc.resolve(r.$pos.pos - 2).node(r.depth), c = D(e, t.state, i);
191
- return P(e, t.state) && !c ? t.commands.joinItemBackward() : t.chain().liftListItem(e).run();
192
- }, R = (t, e) => {
193
- const s = A(t, e), r = y(t, e);
194
- return !r || !s ? !1 : s > r.depth;
195
- }, j = (t, e) => {
196
- const s = A(t, e), r = y(t, e);
197
- return !r || !s ? !1 : s < r.depth;
198
- }, M = (t, e) => {
199
- if (!I(t.state, e) || !V(t.state, e))
200
- return !1;
201
- const { selection: s } = t.state, { $from: r, $to: n } = s;
202
- return !s.empty && r.sameParent(n) ? !1 : R(e, t.state) ? t.chain().focus(t.state.selection.from + 4).lift(e).joinBackward().run() : j(e, t.state) ? t.chain().joinForward().joinBackward().run() : t.commands.joinItemForward();
203
- }, Q = (t, e) => {
204
- var s;
205
- const { $anchor: r } = e.selection, n = e.doc.resolve(r.pos - r.parentOffset - 2);
206
- return !(n.index() === n.parent.childCount - 1 || ((s = n.nodeAfter) == null ? void 0 : s.type.name) !== t);
207
- }, U = S.create({
208
- name: "listKeymap",
209
- addOptions() {
210
- return {
211
- listTypes: [
45
+ renderHTML({ node: e, HTMLAttributes: t }) {
46
+ return [
47
+ "pre",
48
+ C(this.options.HTMLAttributes, t),
49
+ [
50
+ "code",
212
51
  {
213
- itemName: "listItem",
214
- wrapperNames: ["bulletList", "orderedList"]
52
+ class: e.attrs.language ? this.options.languageClassPrefix + e.attrs.language : null
215
53
  },
216
- {
217
- itemName: "taskItem",
218
- wrapperNames: ["taskList"]
219
- }
54
+ 0
220
55
  ]
221
- };
222
- },
223
- addKeyboardShortcuts() {
224
- return {
225
- Delete: ({ editor: t }) => {
226
- let e = !1;
227
- return this.options.listTypes.forEach(({ itemName: s }) => {
228
- t.state.schema.nodes[s] !== void 0 && M(t, s) && (e = !0);
229
- }), e;
230
- },
231
- "Mod-Delete": ({ editor: t }) => {
232
- let e = !1;
233
- return this.options.listTypes.forEach(({ itemName: s }) => {
234
- t.state.schema.nodes[s] !== void 0 && M(t, s) && (e = !0);
235
- }), e;
236
- },
237
- Backspace: ({ editor: t }) => {
238
- let e = !1;
239
- return this.options.listTypes.forEach(({ itemName: s, wrapperNames: r }) => {
240
- t.state.schema.nodes[s] !== void 0 && T(t, s, r) && (e = !0);
241
- }), e;
242
- },
243
- "Mod-Backspace": ({ editor: t }) => {
244
- let e = !1;
245
- return this.options.listTypes.forEach(({ itemName: s, wrapperNames: r }) => {
246
- t.state.schema.nodes[s] !== void 0 && T(t, s, r) && (e = !0);
247
- }), e;
248
- }
249
- };
250
- }
251
- }), N = /^(\s*)(\d+)\.\s+(.*)$/, Z = /^\s/;
252
- function tt(t) {
253
- const e = [];
254
- let s = 0, r = 0;
255
- for (; s < t.length; ) {
256
- const n = t[s], i = n.match(N);
257
- if (!i)
258
- break;
259
- const [, c, a, u] = i, p = c.length;
260
- let h = u, o = s + 1;
261
- const l = [n];
262
- for (; o < t.length; ) {
263
- const d = t[o];
264
- if (d.match(N))
265
- break;
266
- if (d.trim() === "")
267
- l.push(d), h += `
268
- `, o += 1;
269
- else if (d.match(Z))
270
- l.push(d), h += `
271
- ${d.slice(p + 2)}`, o += 1;
272
- else
273
- break;
274
- }
275
- e.push({
276
- indent: p,
277
- number: parseInt(a, 10),
278
- content: h.trim(),
279
- raw: l.join(`
280
- `)
281
- }), r = o, s = o;
282
- }
283
- return [e, r];
284
- }
285
- function B(t, e, s) {
286
- var r;
287
- const n = [];
288
- let i = 0;
289
- for (; i < t.length; ) {
290
- const c = t[i];
291
- if (c.indent === e) {
292
- const a = c.content.split(`
293
- `), u = ((r = a[0]) == null ? void 0 : r.trim()) || "", p = [];
294
- u && p.push({
295
- type: "paragraph",
296
- raw: u,
297
- tokens: s.inlineTokens(u)
298
- });
299
- const h = a.slice(1).join(`
300
- `).trim();
301
- if (h) {
302
- const d = s.blockTokens(h);
303
- p.push(...d);
304
- }
305
- let o = i + 1;
306
- const l = [];
307
- for (; o < t.length && t[o].indent > e; )
308
- l.push(t[o]), o += 1;
309
- if (l.length > 0) {
310
- const d = Math.min(...l.map((m) => m.indent)), k = B(l, d, s);
311
- p.push({
312
- type: "list",
313
- ordered: !0,
314
- start: l[0].number,
315
- items: k,
316
- raw: l.map((m) => m.raw).join(`
317
- `)
318
- });
319
- }
320
- n.push({
321
- type: "list_item",
322
- raw: c.raw,
323
- tokens: p
324
- }), i = o;
325
- } else
326
- i += 1;
327
- }
328
- return n;
329
- }
330
- function et(t, e) {
331
- return t.map((s) => {
332
- if (s.type !== "list_item")
333
- return e.parseChildren([s])[0];
334
- const r = [];
335
- return s.tokens && s.tokens.length > 0 && s.tokens.forEach((n) => {
336
- if (n.type === "paragraph" || n.type === "list" || n.type === "blockquote" || n.type === "code")
337
- r.push(...e.parseChildren([n]));
338
- else if (n.type === "text" && n.tokens) {
339
- const i = e.parseChildren([n]);
340
- r.push({
341
- type: "paragraph",
342
- content: i
343
- });
344
- } else {
345
- const i = e.parseChildren([n]);
346
- i.length > 0 && r.push(...i);
347
- }
348
- }), {
349
- type: "listItem",
350
- content: r
351
- };
352
- });
353
- }
354
- var st = "listItem", E = "textStyle", H = /^(\d+)\.\s$/, nt = g.create({
355
- name: "orderedList",
356
- addOptions() {
357
- return {
358
- itemTypeName: "listItem",
359
- HTMLAttributes: {},
360
- keepMarks: !1,
361
- keepAttributes: !1
362
- };
363
- },
364
- group: "block list",
365
- content() {
366
- return `${this.options.itemTypeName}+`;
367
- },
368
- addAttributes() {
369
- return {
370
- start: {
371
- default: 1,
372
- parseHTML: (t) => t.hasAttribute("start") ? parseInt(t.getAttribute("start") || "", 10) : 1
373
- },
374
- type: {
375
- default: null,
376
- parseHTML: (t) => t.getAttribute("type")
377
- }
378
- };
379
- },
380
- parseHTML() {
381
- return [
382
- {
383
- tag: "ol"
384
- }
385
56
  ];
386
57
  },
387
- renderHTML({ HTMLAttributes: t }) {
388
- const { start: e, ...s } = t;
389
- return e === 1 ? ["ol", L(this.options.HTMLAttributes, s), 0] : ["ol", L(this.options.HTMLAttributes, t), 0];
390
- },
391
- markdownTokenName: "list",
392
- parseMarkdown: (t, e) => {
393
- if (t.type !== "list" || !t.ordered)
394
- return [];
395
- const s = t.start || 1, r = t.items ? et(t.items, e) : [];
396
- return s !== 1 ? {
397
- type: "orderedList",
398
- attrs: { start: s },
399
- content: r
400
- } : {
401
- type: "orderedList",
402
- content: r
403
- };
404
- },
405
- renderMarkdown: (t, e) => t.content ? e.renderChildren(t.content, `
406
- `) : "",
407
- markdownTokenizer: {
408
- name: "orderedList",
409
- level: "block",
410
- start: (t) => {
411
- const e = t.match(/^(\s*)(\d+)\.\s+/), s = e?.index;
412
- return s !== void 0 ? s : -1;
413
- },
414
- tokenize: (t, e, s) => {
415
- var r;
416
- const n = t.split(`
417
- `), [i, c] = tt(n);
418
- if (i.length === 0)
419
- return;
420
- const a = B(i, 0, s);
421
- return a.length === 0 ? void 0 : {
422
- type: "list",
423
- ordered: !0,
424
- start: ((r = i[0]) == null ? void 0 : r.number) || 1,
425
- items: a,
426
- raw: n.slice(0, c).join(`
427
- `)
428
- };
429
- }
430
- },
431
- markdownOptions: {
432
- indentsContent: !0
58
+ markdownTokenName: "code",
59
+ parseMarkdown: (e, t) => {
60
+ var r;
61
+ return ((r = e.raw) == null ? void 0 : r.startsWith("```")) === !1 && e.codeBlockStyle !== "indented" ? [] : t.createNode(
62
+ "codeBlock",
63
+ { language: e.lang || null },
64
+ e.text ? [t.createTextNode(e.text)] : []
65
+ );
66
+ },
67
+ renderMarkdown: (e, t) => {
68
+ var r;
69
+ let n = "";
70
+ const a = ((r = e.attrs) == null ? void 0 : r.language) || "";
71
+ return e.content ? n = [`\`\`\`${a}`, t.renderChildren(e.content), "```"].join(`
72
+ `) : n = `\`\`\`${a}
73
+
74
+ \`\`\``, n;
433
75
  },
434
76
  addCommands() {
435
77
  return {
436
- toggleOrderedList: () => ({ commands: t, chain: e }) => this.options.keepAttributes ? e().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(st, this.editor.getAttributes(E)).run() : t.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks)
78
+ setCodeBlock: (e) => ({ commands: t }) => t.setNode(this.name, e),
79
+ toggleCodeBlock: (e) => ({ commands: t }) => t.toggleNode(this.name, "paragraph", e)
437
80
  };
438
81
  },
439
82
  addKeyboardShortcuts() {
440
83
  return {
441
- "Mod-Shift-7": () => this.editor.commands.toggleOrderedList()
442
- };
443
- },
444
- addInputRules() {
445
- let t = b({
446
- find: H,
447
- type: this.type,
448
- getAttributes: (e) => ({ start: +e[1] }),
449
- joinPredicate: (e, s) => s.childCount + s.attrs.start === +e[1]
450
- });
451
- return (this.options.keepMarks || this.options.keepAttributes) && (t = b({
452
- find: H,
453
- type: this.type,
454
- keepMarks: this.options.keepMarks,
455
- keepAttributes: this.options.keepAttributes,
456
- getAttributes: (e) => ({ start: +e[1], ...this.editor.getAttributes(E) }),
457
- joinPredicate: (e, s) => s.childCount + s.attrs.start === +e[1],
458
- editor: this.editor
459
- })), [t];
460
- }
461
- }), rt = /^\s*(\[([( |x])?\])\s$/, it = g.create({
462
- name: "taskItem",
463
- addOptions() {
464
- return {
465
- nested: !1,
466
- HTMLAttributes: {},
467
- taskListTypeName: "taskList",
468
- a11y: void 0
469
- };
470
- },
471
- content() {
472
- return this.options.nested ? "paragraph block*" : "paragraph+";
473
- },
474
- defining: !0,
475
- addAttributes() {
476
- return {
477
- checked: {
478
- default: !1,
479
- keepOnSplit: !1,
480
- parseHTML: (t) => {
481
- const e = t.getAttribute("data-checked");
482
- return e === "" || e === "true";
483
- },
484
- renderHTML: (t) => ({
485
- "data-checked": t.checked
486
- })
487
- }
488
- };
489
- },
490
- parseHTML() {
491
- return [
492
- {
493
- tag: `li[data-type="${this.name}"]`,
494
- priority: 51
495
- }
496
- ];
497
- },
498
- renderHTML({ node: t, HTMLAttributes: e }) {
499
- return [
500
- "li",
501
- L(this.options.HTMLAttributes, e, {
502
- "data-type": this.name
503
- }),
504
- [
505
- "label",
506
- [
507
- "input",
508
- {
509
- type: "checkbox",
510
- checked: t.attrs.checked ? "checked" : null
84
+ "Mod-Alt-c": () => this.editor.commands.toggleCodeBlock(),
85
+ // remove code block when at start of document or code block is empty
86
+ Backspace: () => {
87
+ const { empty: e, $anchor: t } = this.editor.state.selection, r = t.pos === 1;
88
+ return !e || t.parent.type.name !== this.name ? !1 : r || !t.parent.textContent.length ? this.editor.commands.clearNodes() : !1;
89
+ },
90
+ // handle tab indentation
91
+ Tab: ({ editor: e }) => {
92
+ var t;
93
+ if (!this.options.enableTabIndentation)
94
+ return !1;
95
+ const r = (t = this.options.tabSize) != null ? t : y, { state: n } = e, { selection: a } = n, { $from: o, empty: s } = a;
96
+ if (o.parent.type !== this.type)
97
+ return !1;
98
+ const i = " ".repeat(r);
99
+ return s ? e.commands.insertContent(i) : e.commands.command(({ tr: l }) => {
100
+ const { from: c, to: f } = a, u = n.doc.textBetween(c, f, `
101
+ `, `
102
+ `).split(`
103
+ `).map((p) => i + p).join(`
104
+ `);
105
+ return l.replaceWith(c, f, n.schema.text(u)), !0;
106
+ });
107
+ },
108
+ // handle shift+tab reverse indentation
109
+ "Shift-Tab": ({ editor: e }) => {
110
+ var t;
111
+ if (!this.options.enableTabIndentation)
112
+ return !1;
113
+ const r = (t = this.options.tabSize) != null ? t : y, { state: n } = e, { selection: a } = n, { $from: o, empty: s } = a;
114
+ return o.parent.type !== this.type ? !1 : s ? e.commands.command(({ tr: i }) => {
115
+ var l;
116
+ const { pos: c } = o, f = o.start(), h = o.end(), u = n.doc.textBetween(f, h, `
117
+ `, `
118
+ `).split(`
119
+ `);
120
+ let p = 0, g = 0;
121
+ const b = c - f;
122
+ for (let d = 0; d < u.length; d += 1) {
123
+ if (g + u[d].length >= b) {
124
+ p = d;
125
+ break;
126
+ }
127
+ g += u[d].length + 1;
511
128
  }
512
- ],
513
- ["span"]
514
- ],
515
- ["div", 0]
516
- ];
517
- },
518
- parseMarkdown: (t, e) => {
519
- const s = [];
520
- if (t.tokens && t.tokens.length > 0 ? s.push(e.createNode("paragraph", {}, e.parseInline(t.tokens))) : t.text ? s.push(e.createNode("paragraph", {}, [e.createNode("text", { text: t.text })])) : s.push(e.createNode("paragraph", {}, [])), t.nestedTokens && t.nestedTokens.length > 0) {
521
- const r = e.parseChildren(t.nestedTokens);
522
- s.push(...r);
523
- }
524
- return e.createNode("taskItem", { checked: t.checked || !1 }, s);
525
- },
526
- renderMarkdown: (t, e) => {
527
- var s;
528
- const n = `- [${(s = t.attrs) != null && s.checked ? "x" : " "}] `;
529
- return $(t, e, n);
530
- },
531
- addKeyboardShortcuts() {
532
- const t = {
533
- Enter: () => this.editor.commands.splitListItem(this.name),
534
- "Shift-Tab": () => this.editor.commands.liftListItem(this.name)
535
- };
536
- return this.options.nested ? {
537
- ...t,
538
- Tab: () => this.editor.commands.sinkListItem(this.name)
539
- } : t;
540
- },
541
- addNodeView() {
542
- return ({ node: t, HTMLAttributes: e, getPos: s, editor: r }) => {
543
- const n = document.createElement("li"), i = document.createElement("label"), c = document.createElement("span"), a = document.createElement("input"), u = document.createElement("div"), p = (o) => {
544
- var l, d;
545
- a.ariaLabel = ((d = (l = this.options.a11y) == null ? void 0 : l.checkboxLabel) == null ? void 0 : d.call(l, o, a.checked)) || `Task item checkbox for ${o.textContent || "empty task item"}`;
546
- };
547
- p(t), i.contentEditable = "false", a.type = "checkbox", a.addEventListener("mousedown", (o) => o.preventDefault()), a.addEventListener("change", (o) => {
548
- if (!r.isEditable && !this.options.onReadOnlyChecked) {
549
- a.checked = !a.checked;
550
- return;
551
- }
552
- const { checked: l } = o.target;
553
- r.isEditable && typeof s == "function" && r.chain().focus(void 0, { scrollIntoView: !1 }).command(({ tr: d }) => {
554
- const k = s();
555
- if (typeof k != "number")
556
- return !1;
557
- const m = d.doc.nodeAt(k);
558
- return d.setNodeMarkup(k, void 0, {
559
- ...m?.attrs,
560
- checked: l
561
- }), !0;
562
- }).run(), !r.isEditable && this.options.onReadOnlyChecked && (this.options.onReadOnlyChecked(t, l) || (a.checked = !a.checked));
563
- }), Object.entries(this.options.HTMLAttributes).forEach(([o, l]) => {
564
- n.setAttribute(o, l);
565
- }), n.dataset.checked = t.attrs.checked, a.checked = t.attrs.checked, i.append(a, c), n.append(i, u), Object.entries(e).forEach(([o, l]) => {
566
- n.setAttribute(o, l);
567
- });
568
- let h = new Set(Object.keys(e));
569
- return {
570
- dom: n,
571
- contentDOM: u,
572
- update: (o) => {
573
- if (o.type !== this.type)
574
- return !1;
575
- n.dataset.checked = o.attrs.checked, a.checked = o.attrs.checked, p(o);
576
- const l = r.extensionManager.attributes, d = z(o, l), k = new Set(Object.keys(d)), m = this.options.HTMLAttributes;
577
- return h.forEach((f) => {
578
- k.has(f) || (f in m ? n.setAttribute(f, m[f]) : n.removeAttribute(f));
579
- }), Object.entries(d).forEach(([f, v]) => {
580
- v == null ? f in m ? n.setAttribute(f, m[f]) : n.removeAttribute(f) : n.setAttribute(f, v);
581
- }), h = k, !0;
582
- }
583
- };
129
+ const A = ((l = u[p].match(/^ */)) == null ? void 0 : l[0]) || "", v = Math.min(A.length, r);
130
+ if (v === 0)
131
+ return !0;
132
+ let m = f;
133
+ for (let d = 0; d < p; d += 1)
134
+ m += u[d].length + 1;
135
+ return i.delete(m, m + v), c - m <= v && i.setSelection(T.create(i.doc, m)), !0;
136
+ }) : e.commands.command(({ tr: i }) => {
137
+ const { from: l, to: c } = a, x = n.doc.textBetween(l, c, `
138
+ `, `
139
+ `).split(`
140
+ `).map((u) => {
141
+ var p;
142
+ const g = ((p = u.match(/^ */)) == null ? void 0 : p[0]) || "", b = Math.min(g.length, r);
143
+ return u.slice(b);
144
+ }).join(`
145
+ `);
146
+ return i.replaceWith(l, c, n.schema.text(x)), !0;
147
+ });
148
+ },
149
+ // exit node on triple enter
150
+ Enter: ({ editor: e }) => {
151
+ if (!this.options.exitOnTripleEnter)
152
+ return !1;
153
+ const { state: t } = e, { selection: r } = t, { $from: n, empty: a } = r;
154
+ if (!a || n.parent.type !== this.type)
155
+ return !1;
156
+ const o = n.parentOffset === n.parent.nodeSize - 2, s = n.parent.textContent.endsWith(`
157
+
158
+ `);
159
+ return !o || !s ? !1 : e.chain().command(({ tr: i }) => (i.delete(n.pos - 2, n.pos), !0)).exitCode().run();
160
+ },
161
+ // exit node on arrow down
162
+ ArrowDown: ({ editor: e }) => {
163
+ if (!this.options.exitOnArrowDown)
164
+ return !1;
165
+ const { state: t } = e, { selection: r, doc: n } = t, { $from: a, empty: o } = r;
166
+ if (!o || a.parent.type !== this.type || !(a.parentOffset === a.parent.nodeSize - 2))
167
+ return !1;
168
+ const i = a.after();
169
+ return i === void 0 ? !1 : n.nodeAt(i) ? e.commands.command(({ tr: c }) => (c.setSelection(L.near(n.resolve(i))), !0)) : e.commands.exitCode();
170
+ }
584
171
  };
585
172
  },
586
173
  addInputRules() {
587
174
  return [
588
- b({
589
- find: rt,
175
+ S({
176
+ find: M,
177
+ type: this.type,
178
+ getAttributes: (e) => ({
179
+ language: e[1]
180
+ })
181
+ }),
182
+ S({
183
+ find: N,
590
184
  type: this.type,
591
- getAttributes: (t) => ({
592
- checked: t[t.length - 1] === "x"
185
+ getAttributes: (e) => ({
186
+ language: e[1]
593
187
  })
594
188
  })
595
189
  ];
596
- }
597
- }), at = g.create({
598
- name: "taskList",
599
- addOptions() {
600
- return {
601
- itemTypeName: "taskItem",
602
- HTMLAttributes: {}
603
- };
604
190
  },
605
- group: "block list",
606
- content() {
607
- return `${this.options.itemTypeName}+`;
608
- },
609
- parseHTML() {
191
+ addProseMirrorPlugins() {
610
192
  return [
611
- {
612
- tag: `ul[data-type="${this.name}"]`,
613
- priority: 51
614
- }
615
- ];
616
- },
617
- renderHTML({ HTMLAttributes: t }) {
618
- return ["ul", L(this.options.HTMLAttributes, t, { "data-type": this.name }), 0];
619
- },
620
- parseMarkdown: (t, e) => e.createNode("taskList", {}, e.parseChildren(t.items || [])),
621
- renderMarkdown: (t, e) => t.content ? e.renderChildren(t.content, `
622
- `) : "",
623
- markdownTokenizer: {
624
- name: "taskList",
625
- level: "block",
626
- start(t) {
627
- var e;
628
- const s = (e = t.match(/^\s*[-+*]\s+\[([ xX])\]\s+/)) == null ? void 0 : e.index;
629
- return s !== void 0 ? s : -1;
630
- },
631
- tokenize(t, e, s) {
632
- const r = (i) => {
633
- const c = x(
634
- i,
635
- {
636
- itemPattern: /^(\s*)([-+*])\s+\[([ xX])\]\s+(.*)$/,
637
- extractItemData: (a) => ({
638
- indentLevel: a[1].length,
639
- mainContent: a[4],
640
- checked: a[3].toLowerCase() === "x"
641
- }),
642
- createToken: (a, u) => ({
643
- type: "taskItem",
644
- raw: "",
645
- mainContent: a.mainContent,
646
- indentLevel: a.indentLevel,
647
- checked: a.checked,
648
- text: a.mainContent,
649
- tokens: s.inlineTokens(a.mainContent),
650
- nestedTokens: u
651
- }),
652
- // Allow recursive nesting
653
- customNestedParser: r
654
- },
655
- s
656
- );
657
- return c ? [
658
- {
659
- type: "taskList",
660
- raw: c.raw,
661
- items: c.items
193
+ // this plugin creates a code block for pasted content from VS Code
194
+ // we can also detect the copied code language
195
+ new w({
196
+ key: new B("codeBlockVSCodeHandler"),
197
+ props: {
198
+ handlePaste: (e, t) => {
199
+ if (!t.clipboardData || this.editor.isActive(this.type.name))
200
+ return !1;
201
+ const r = t.clipboardData.getData("text/plain"), n = t.clipboardData.getData("vscode-editor-data"), a = n ? JSON.parse(n) : void 0, o = a?.mode;
202
+ if (!r || !o)
203
+ return !1;
204
+ const { tr: s, schema: i } = e.state, l = i.text(r.replace(/\r\n?/g, `
205
+ `));
206
+ return s.replaceSelectionWith(this.type.create({ language: o }, l)), s.selection.$from.parent.type !== this.type && s.setSelection(T.near(s.doc.resolve(Math.max(0, s.selection.from - 2)))), s.setMeta("paste", !0), e.dispatch(s), !0;
662
207
  }
663
- ] : s.blockTokens(i);
664
- }, n = x(
665
- t,
666
- {
667
- itemPattern: /^(\s*)([-+*])\s+\[([ xX])\]\s+(.*)$/,
668
- extractItemData: (i) => ({
669
- indentLevel: i[1].length,
670
- mainContent: i[4],
671
- checked: i[3].toLowerCase() === "x"
672
- }),
673
- createToken: (i, c) => ({
674
- type: "taskItem",
675
- raw: "",
676
- mainContent: i.mainContent,
677
- indentLevel: i.indentLevel,
678
- checked: i.checked,
679
- text: i.mainContent,
680
- tokens: s.inlineTokens(i.mainContent),
681
- nestedTokens: c
682
- }),
683
- // Use the recursive parser for nested content
684
- customNestedParser: r
685
- },
686
- s
687
- );
688
- if (n)
689
- return {
690
- type: "taskList",
691
- raw: n.raw,
692
- items: n.items
693
- };
694
- }
695
- },
696
- markdownOptions: {
697
- indentsContent: !0
698
- },
699
- addCommands() {
700
- return {
701
- toggleTaskList: () => ({ commands: t }) => t.toggleList(this.name, this.options.itemTypeName)
702
- };
703
- },
704
- addKeyboardShortcuts() {
705
- return {
706
- "Mod-Shift-9": () => this.editor.commands.toggleTaskList()
707
- };
708
- }
709
- });
710
- S.create({
711
- name: "listKit",
712
- addExtensions() {
713
- const t = [];
714
- return this.options.bulletList !== !1 && t.push(q.configure(this.options.bulletList)), this.options.listItem !== !1 && t.push(Y.configure(this.options.listItem)), this.options.listKeymap !== !1 && t.push(U.configure(this.options.listKeymap)), this.options.orderedList !== !1 && t.push(nt.configure(this.options.orderedList)), this.options.taskItem !== !1 && t.push(it.configure(this.options.taskItem)), this.options.taskList !== !1 && t.push(at.configure(this.options.taskList)), t;
208
+ }
209
+ })
210
+ ];
715
211
  }
716
212
  });
717
213
  export {
718
- q as BulletList,
719
- Y as ListItem,
720
- U as ListKeymap,
721
- nt as OrderedList,
722
- it as TaskItem,
723
- at as TaskList,
724
- C as bulletListInputRegex,
725
- rt as inputRegex,
726
- J as listHelpers,
727
- H as orderedListInputRegex
214
+ $ as CodeBlock,
215
+ M as backtickInputRegex,
216
+ N as tildeInputRegex
728
217
  };