@vizel/core 0.0.1-alpha.5 → 0.0.1-alpha.6

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 (49) hide show
  1. package/dist/index10.js +1 -1
  2. package/dist/index11.js +2 -2
  3. package/dist/index14.js +1 -1
  4. package/dist/index20.js +2 -2
  5. package/dist/index21.js +2 -2
  6. package/dist/index22.js +3 -3
  7. package/dist/index26.js +1 -1
  8. package/dist/index3.js +1 -1
  9. package/dist/index31.js +2 -2
  10. package/dist/index34.js +16 -63
  11. package/dist/index35.js +58 -4
  12. package/dist/index36.js +15 -123
  13. package/dist/index37.js +42 -305
  14. package/dist/index38.js +4 -487
  15. package/dist/index39.js +112 -37
  16. package/dist/index4.js +1 -1
  17. package/dist/index40.js +301 -653
  18. package/dist/index41.js +487 -4
  19. package/dist/index42.js +48 -4
  20. package/dist/index43.js +647 -206
  21. package/dist/index44.js +4 -82
  22. package/dist/index45.js +4 -17
  23. package/dist/index46.js +237 -57
  24. package/dist/index47.js +82 -15
  25. package/dist/index48.js +5 -5
  26. package/dist/index49.js +1458 -158
  27. package/dist/index5.js +1 -1
  28. package/dist/index50.js +5 -1502
  29. package/dist/index51.js +202 -5
  30. package/dist/index54.js +21 -84
  31. package/dist/index55.js +10 -246
  32. package/dist/index56.js +7 -3
  33. package/dist/index57.js +7 -1231
  34. package/dist/index58.js +11 -731
  35. package/dist/index59.js +19 -21
  36. package/dist/index6.js +1 -1
  37. package/dist/index60.js +25 -10
  38. package/dist/index61.js +83 -6
  39. package/dist/index62.js +245 -7
  40. package/dist/index63.js +3 -14
  41. package/dist/index64.js +1230 -17
  42. package/dist/index65.js +733 -24
  43. package/dist/index66.js +1059 -53
  44. package/dist/index67.js +53 -1059
  45. package/dist/index68.js +3 -90
  46. package/dist/index70.js +90 -3
  47. package/dist/index8.js +1 -1
  48. package/dist/index9.js +1 -1
  49. package/package.json +1 -1
package/dist/index37.js CHANGED
@@ -1,329 +1,66 @@
1
- import { Node as L, createBlockMarkdownSpec as N, isActive as F, findChildren as b, defaultBlockAt as x, findParentNode as w, mergeAttributes as v } from "@tiptap/core";
2
- import { Plugin as z, PluginKey as G, TextSelection as R, Selection as D } from "./index38.js";
3
- import { GapCursor as H } from "./index49.js";
4
- var S = (t, s) => s.view.domAtPos(t).node.offsetParent !== null, W = (t, s, o) => {
5
- for (let e = t.depth; e > 0; e -= 1) {
6
- const n = t.node(e), c = s(n), r = S(t.start(e), o);
7
- if (c && r)
8
- return {
9
- pos: e > 0 ? t.before(e) : 0,
10
- start: t.start(e),
11
- depth: e,
12
- node: n
13
- };
14
- }
15
- }, O = (t, s) => {
16
- const { state: o, view: e, extensionManager: n } = t, { schema: c, selection: r } = o, { empty: d, $anchor: l } = r, i = !!n.extensions.find((u) => u.name === "gapCursor");
17
- if (!d || l.parent.type !== c.nodes.detailsSummary || !i || s === "right" && l.parentOffset !== l.parent.nodeSize - 2)
18
- return !1;
19
- const a = w((u) => u.type === c.nodes.details)(r);
20
- if (!a)
21
- return !1;
22
- const p = b(a.node, (u) => u.type === c.nodes.detailsContent);
23
- if (!p.length || S(a.start + p[0].pos + 1, t))
24
- return !1;
25
- const m = o.doc.resolve(a.pos + a.node.nodeSize), h = H.findFrom(m, 1, !1);
26
- if (!h)
27
- return !1;
28
- const { tr: y } = o, C = new H(h);
29
- return y.setSelection(C), y.scrollIntoView(), e.dispatch(y), !0;
30
- }, j = L.create({
31
- name: "details",
32
- content: "detailsSummary detailsContent",
33
- group: "block",
34
- defining: !0,
35
- isolating: !0,
36
- // @ts-ignore reason: `allowGapCursor` is not a valid property by default, but the `GapCursor` extension adds it to the Nodeconfig type
37
- allowGapCursor: !1,
1
+ import { Mark as d, mergeAttributes as a } from "@tiptap/core";
2
+ var s = d.create({
3
+ name: "underline",
38
4
  addOptions() {
39
5
  return {
40
- persist: !1,
41
- openClassName: "is-open",
42
6
  HTMLAttributes: {}
43
7
  };
44
8
  },
45
- addAttributes() {
46
- return this.options.persist ? {
47
- open: {
48
- default: !1,
49
- parseHTML: (t) => t.hasAttribute("open"),
50
- renderHTML: ({ open: t }) => t ? { open: "" } : {}
51
- }
52
- } : [];
53
- },
54
9
  parseHTML() {
55
10
  return [
56
11
  {
57
- tag: "details"
12
+ tag: "u"
13
+ },
14
+ {
15
+ style: "text-decoration",
16
+ consuming: !1,
17
+ getAttrs: (e) => e.includes("underline") ? {} : !1
58
18
  }
59
19
  ];
60
20
  },
61
- renderHTML({ HTMLAttributes: t }) {
62
- return ["details", v(this.options.HTMLAttributes, t), 0];
21
+ renderHTML({ HTMLAttributes: e }) {
22
+ return ["u", a(this.options.HTMLAttributes, e), 0];
63
23
  },
64
- ...N({
65
- nodeName: "details",
66
- content: "block"
67
- }),
68
- addNodeView() {
69
- return ({ editor: t, getPos: s, node: o, HTMLAttributes: e }) => {
70
- const n = document.createElement("div"), c = v(this.options.HTMLAttributes, e, {
71
- "data-type": this.name
72
- });
73
- Object.entries(c).forEach(([i, a]) => n.setAttribute(i, a));
74
- const r = document.createElement("button");
75
- r.type = "button", n.append(r);
76
- const d = document.createElement("div");
77
- n.append(d);
78
- const l = (i) => {
79
- if (i !== void 0)
80
- if (i) {
81
- if (n.classList.contains(this.options.openClassName))
82
- return;
83
- n.classList.add(this.options.openClassName);
84
- } else {
85
- if (!n.classList.contains(this.options.openClassName))
86
- return;
87
- n.classList.remove(this.options.openClassName);
88
- }
89
- else
90
- n.classList.toggle(this.options.openClassName);
91
- const a = new Event("toggleDetailsContent"), p = d.querySelector(':scope > div[data-type="detailsContent"]');
92
- p?.dispatchEvent(a);
93
- };
94
- return o.attrs.open && setTimeout(() => l()), r.addEventListener("click", () => {
95
- if (l(), !this.options.persist) {
96
- t.commands.focus(void 0, { scrollIntoView: !1 });
97
- return;
98
- }
99
- if (t.isEditable && typeof s == "function") {
100
- const { from: i, to: a } = t.state.selection;
101
- t.chain().command(({ tr: p }) => {
102
- const f = s();
103
- if (!f)
104
- return !1;
105
- const m = p.doc.nodeAt(f);
106
- return m?.type !== this.type ? !1 : (p.setNodeMarkup(f, void 0, {
107
- open: !m.attrs.open
108
- }), !0);
109
- }).setTextSelection({
110
- from: i,
111
- to: a
112
- }).focus(void 0, { scrollIntoView: !1 }).run();
113
- }
114
- }), {
115
- dom: n,
116
- contentDOM: d,
117
- ignoreMutation(i) {
118
- return i.type === "selection" ? !1 : !n.contains(i.target) || n === i.target;
119
- },
120
- update: (i) => i.type !== this.type ? !1 : (i.attrs.open !== void 0 && l(i.attrs.open), !0)
24
+ parseMarkdown(e, n) {
25
+ return n.applyMark(this.name || "underline", n.parseInline(e.tokens || []));
26
+ },
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)
121
46
  };
122
- };
47
+ }
123
48
  },
124
49
  addCommands() {
125
50
  return {
126
- setDetails: () => ({ state: t, chain: s }) => {
127
- var o;
128
- const { schema: e, selection: n } = t, { $from: c, $to: r } = n, d = c.blockRange(r);
129
- if (!d)
130
- return !1;
131
- const l = t.doc.slice(d.start, d.end);
132
- if (!e.nodes.detailsContent.contentMatch.matchFragment(l.content))
133
- return !1;
134
- const a = ((o = l.toJSON()) == null ? void 0 : o.content) || [];
135
- return s().insertContentAt(
136
- { from: d.start, to: d.end },
137
- {
138
- type: this.name,
139
- content: [
140
- {
141
- type: "detailsSummary"
142
- },
143
- {
144
- type: "detailsContent",
145
- content: a
146
- }
147
- ]
148
- }
149
- ).setTextSelection(d.start + 2).run();
150
- },
151
- unsetDetails: () => ({ state: t, chain: s }) => {
152
- const { selection: o, schema: e } = t, n = w((u) => u.type === this.type)(o);
153
- if (!n)
154
- return !1;
155
- const c = b(n.node, (u) => u.type === e.nodes.detailsSummary), r = b(n.node, (u) => u.type === e.nodes.detailsContent);
156
- if (!c.length || !r.length)
157
- return !1;
158
- const d = c[0], l = r[0], i = n.pos, a = t.doc.resolve(i), p = i + n.node.nodeSize, f = { from: i, to: p }, m = l.node.content.toJSON() || [], h = a.parent.type.contentMatch.defaultType, C = [h?.create(null, d.node.content).toJSON(), ...m];
159
- return s().insertContentAt(f, C).setTextSelection(i + 1).run();
160
- }
51
+ setUnderline: () => ({ commands: e }) => e.setMark(this.name),
52
+ toggleUnderline: () => ({ commands: e }) => e.toggleMark(this.name),
53
+ unsetUnderline: () => ({ commands: e }) => e.unsetMark(this.name)
161
54
  };
162
55
  },
163
56
  addKeyboardShortcuts() {
164
57
  return {
165
- Backspace: () => {
166
- const { schema: t, selection: s } = this.editor.state, { empty: o, $anchor: e } = s;
167
- return !o || e.parent.type !== t.nodes.detailsSummary ? !1 : e.parentOffset !== 0 ? this.editor.commands.command(({ tr: n }) => {
168
- const c = e.pos - 1, r = e.pos;
169
- return n.delete(c, r), !0;
170
- }) : this.editor.commands.unsetDetails();
171
- },
172
- // Creates a new node below it if it is closed.
173
- // Otherwise inside `DetailsContent`.
174
- Enter: ({ editor: t }) => {
175
- const { state: s, view: o } = t, { schema: e, selection: n } = s, { $head: c } = n;
176
- if (c.parent.type !== e.nodes.detailsSummary)
177
- return !1;
178
- const r = S(c.after() + 1, t), d = r ? s.doc.nodeAt(c.after()) : c.node(-2);
179
- if (!d)
180
- return !1;
181
- const l = r ? 0 : c.indexAfter(-1), i = x(d.contentMatchAt(l));
182
- if (!i || !d.canReplaceWith(l, l, i))
183
- return !1;
184
- const a = i.createAndFill();
185
- if (!a)
186
- return !1;
187
- const p = r ? c.after() + 1 : c.after(-1), f = s.tr.replaceWith(p, p, a), m = f.doc.resolve(p), h = D.near(m, 1);
188
- return f.setSelection(h), f.scrollIntoView(), o.dispatch(f), !0;
189
- },
190
- // The default gapcursor implementation can’t handle hidden content, so we need to fix this.
191
- ArrowRight: ({ editor: t }) => O(t, "right"),
192
- // The default gapcursor implementation can’t handle hidden content, so we need to fix this.
193
- ArrowDown: ({ editor: t }) => O(t, "down")
58
+ "Mod-u": () => this.editor.commands.toggleUnderline(),
59
+ "Mod-U": () => this.editor.commands.toggleUnderline()
194
60
  };
195
- },
196
- addProseMirrorPlugins() {
197
- return [
198
- // This plugin prevents text selections within the hidden content in `DetailsContent`.
199
- // The cursor is moved to the next visible position.
200
- new z({
201
- key: new G("detailsSelection"),
202
- appendTransaction: (t, s, o) => {
203
- const { editor: e, type: n } = this;
204
- if (e.view.composing || !t.some((u) => u.selectionSet) || !s.selection.empty || !o.selection.empty || !F(o, n.name))
205
- return;
206
- const { $from: l } = o.selection;
207
- if (S(l.pos, e))
208
- return;
209
- const a = W(l, (u) => u.type === n, e);
210
- if (!a)
211
- return;
212
- const p = b(
213
- a.node,
214
- (u) => u.type === o.schema.nodes.detailsSummary
215
- );
216
- if (!p.length)
217
- return;
218
- const f = p[0], h = (s.selection.from < o.selection.from ? "forward" : "backward") === "forward" ? a.start + f.pos : a.pos + f.pos + f.node.nodeSize, y = R.create(o.doc, h);
219
- return o.tr.setSelection(y);
220
- }
221
- })
222
- ];
223
61
  }
224
- }), q = L.create({
225
- name: "detailsContent",
226
- content: "block+",
227
- defining: !0,
228
- selectable: !1,
229
- addOptions() {
230
- return {
231
- HTMLAttributes: {}
232
- };
233
- },
234
- parseHTML() {
235
- return [
236
- {
237
- tag: `div[data-type="${this.name}"]`
238
- }
239
- ];
240
- },
241
- renderHTML({ HTMLAttributes: t }) {
242
- return ["div", v(this.options.HTMLAttributes, t, { "data-type": this.name }), 0];
243
- },
244
- addNodeView() {
245
- return ({ HTMLAttributes: t }) => {
246
- const s = document.createElement("div"), o = v(this.options.HTMLAttributes, t, {
247
- "data-type": this.name,
248
- hidden: "hidden"
249
- });
250
- return Object.entries(o).forEach(([e, n]) => s.setAttribute(e, n)), s.addEventListener("toggleDetailsContent", () => {
251
- s.toggleAttribute("hidden");
252
- }), {
253
- dom: s,
254
- contentDOM: s,
255
- ignoreMutation(e) {
256
- return e.type === "selection" ? !1 : !s.contains(e.target) || s === e.target;
257
- },
258
- update: (e) => e.type === this.type
259
- };
260
- };
261
- },
262
- addKeyboardShortcuts() {
263
- return {
264
- // Escape node on double enter
265
- Enter: ({ editor: t }) => {
266
- const { state: s, view: o } = t, { selection: e } = s, { $from: n, empty: c } = e, r = w(($) => $.type === this.type)(e);
267
- if (!c || !r || !r.node.childCount)
268
- return !1;
269
- const d = n.index(r.depth), { childCount: l } = r.node;
270
- if (!(l === d + 1))
271
- return !1;
272
- const a = r.node.type.contentMatch.defaultType, p = a?.createAndFill();
273
- if (!p)
274
- return !1;
275
- const f = s.doc.resolve(r.pos + 1), m = l - 1, h = r.node.child(m), y = f.posAtIndex(m, r.depth);
276
- if (!h.eq(p))
277
- return !1;
278
- const u = n.node(-3);
279
- if (!u)
280
- return !1;
281
- const A = n.indexAfter(-3), M = x(u.contentMatchAt(A));
282
- if (!M || !u.canReplaceWith(A, A, M))
283
- return !1;
284
- const E = M.createAndFill();
285
- if (!E)
286
- return !1;
287
- const { tr: g } = s, T = n.after(-2);
288
- g.replaceWith(T, T, E);
289
- const k = g.doc.resolve(T), I = D.near(k, 1);
290
- g.setSelection(I);
291
- const V = y, P = y + h.nodeSize;
292
- return g.delete(V, P), g.scrollIntoView(), o.dispatch(g), !0;
293
- }
294
- };
295
- },
296
- ...N({
297
- nodeName: "detailsContent"
298
- })
299
- }), _ = L.create({
300
- name: "detailsSummary",
301
- content: "text*",
302
- defining: !0,
303
- selectable: !1,
304
- isolating: !0,
305
- addOptions() {
306
- return {
307
- HTMLAttributes: {}
308
- };
309
- },
310
- parseHTML() {
311
- return [
312
- {
313
- tag: "summary"
314
- }
315
- ];
316
- },
317
- renderHTML({ HTMLAttributes: t }) {
318
- return ["summary", v(this.options.HTMLAttributes, t), 0];
319
- },
320
- ...N({
321
- nodeName: "detailsSummary",
322
- content: "inline"
323
- })
324
- });
62
+ }), l = s;
325
63
  export {
326
- j as Details,
327
- q as DetailsContent,
328
- _ as DetailsSummary
64
+ s as Underline,
65
+ l as default
329
66
  };