@vizel/core 0.0.1-alpha.1 → 0.0.1-alpha.2

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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +13 -13
  3. package/dist/index.js +141 -141
  4. package/dist/index10.js +70 -110
  5. package/dist/index11.js +135 -168
  6. package/dist/index12.js +83 -74
  7. package/dist/index13.js +13 -134
  8. package/dist/index14.js +13 -146
  9. package/dist/index15.js +303 -15
  10. package/dist/index16.js +69 -14
  11. package/dist/index17.js +26 -295
  12. package/dist/index18.js +2 -2
  13. package/dist/index19.js +355 -24
  14. package/dist/index20.js +25 -264
  15. package/dist/index21.js +85 -68
  16. package/dist/index22.js +97 -353
  17. package/dist/index23.js +66 -84
  18. package/dist/index24.js +12 -36
  19. package/dist/index25.js +53 -92
  20. package/dist/index26.js +132 -96
  21. package/dist/index27.js +59 -126
  22. package/dist/index28.js +37 -53
  23. package/dist/index29.js +19 -62
  24. package/dist/index3.js +165 -60
  25. package/dist/index30.js +9 -37
  26. package/dist/index31.js +143 -19
  27. package/dist/index32.js +264 -11
  28. package/dist/index33.js +92 -9
  29. package/dist/index36.js +1 -1
  30. package/dist/index37.js +41 -57
  31. package/dist/index38.js +64 -4
  32. package/dist/index39.js +4 -123
  33. package/dist/index4.js +10 -86
  34. package/dist/index40.js +111 -315
  35. package/dist/index41.js +321 -481
  36. package/dist/index42.js +481 -42
  37. package/dist/index43.js +143 -138
  38. package/dist/index44.js +1 -1
  39. package/dist/index45.js +1 -1
  40. package/dist/index46.js +1 -1
  41. package/dist/index48.js +3 -3
  42. package/dist/index49.js +158 -1458
  43. package/dist/index5.js +132 -10
  44. package/dist/index50.js +1561 -5
  45. package/dist/index51.js +1408 -1467
  46. package/dist/index52.js +704 -183
  47. package/dist/index53.js +5 -723
  48. package/dist/index6.js +48 -131
  49. package/dist/index61.js +1 -1
  50. package/dist/index62.js +1 -1
  51. package/dist/index65.js +1 -1
  52. package/dist/index66.js +53 -1059
  53. package/dist/index67.js +1059 -53
  54. package/dist/index69.js +90 -3
  55. package/dist/index7.js +228 -409
  56. package/dist/index70.js +3 -90
  57. package/dist/index8.js +111 -45
  58. package/dist/index9.js +409 -228
  59. package/package.json +54 -80
package/dist/index40.js CHANGED
@@ -1,329 +1,125 @@
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 "./index41.js";
3
- import { GapCursor as H } from "./index52.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,
38
- addOptions() {
39
- return {
40
- persist: !1,
41
- openClassName: "is-open",
42
- HTMLAttributes: {}
1
+ import x from "@tiptap/extension-code-block";
2
+ import { findChildren as p } from "@tiptap/core";
3
+ import { Plugin as y, PluginKey as w } from "./index42.js";
4
+ import { Decoration as N, DecorationSet as L } from "./index51.js";
5
+ import C from "./index53.js";
6
+ function v(e, i = []) {
7
+ return e.flatMap((t) => {
8
+ const a = [...i, ...t.properties ? t.properties.className : []];
9
+ return t.children ? v(t.children, a) : {
10
+ text: t.value,
11
+ classes: a
43
12
  };
44
- },
45
- addAttributes() {
46
- return this.options.persist ? {
47
- open: {
48
- default: !1,
49
- parseHTML: (t) => t.hasAttribute("open"),
50
- renderHTML: ({ open: t }) => t ? { open: "" } : {}
13
+ });
14
+ }
15
+ function f(e) {
16
+ return e.value || e.children || [];
17
+ }
18
+ function P(e) {
19
+ return !!C.getLanguage(e);
20
+ }
21
+ function m({
22
+ doc: e,
23
+ name: i,
24
+ lowlight: t,
25
+ defaultLanguage: a
26
+ }) {
27
+ const n = [];
28
+ return p(e, (r) => r.type.name === i).forEach((r) => {
29
+ var u;
30
+ let l = r.pos + 1;
31
+ const s = r.node.attrs.language || a, h = t.listLanguages(), d = s && (h.includes(s) || P(s) || (u = t.registered) != null && u.call(t, s)) ? f(t.highlight(s, r.node.textContent)) : f(t.highlightAuto(r.node.textContent));
32
+ v(d).forEach((g) => {
33
+ const o = l + g.text.length;
34
+ if (g.classes.length) {
35
+ const c = N.inline(l, o, {
36
+ class: g.classes.join(" ")
37
+ });
38
+ n.push(c);
51
39
  }
52
- } : [];
53
- },
54
- parseHTML() {
55
- return [
56
- {
57
- tag: "details"
40
+ l = o;
41
+ });
42
+ }), L.create(e, n);
43
+ }
44
+ function _(e) {
45
+ return typeof e == "function";
46
+ }
47
+ function A({
48
+ name: e,
49
+ lowlight: i,
50
+ defaultLanguage: t
51
+ }) {
52
+ if (!["highlight", "highlightAuto", "listLanguages"].every((n) => _(i[n])))
53
+ throw Error("You should provide an instance of lowlight to use the code-block-lowlight extension");
54
+ const a = new y({
55
+ key: new w("lowlight"),
56
+ state: {
57
+ init: (n, { doc: r }) => m({
58
+ doc: r,
59
+ name: e,
60
+ lowlight: i,
61
+ defaultLanguage: t
62
+ }),
63
+ apply: (n, r, u, l) => {
64
+ const s = u.selection.$head.parent.type.name, h = l.selection.$head.parent.type.name, d = p(u.doc, (o) => o.type.name === e), g = p(l.doc, (o) => o.type.name === e);
65
+ return n.docChanged && // Apply decorations if:
66
+ // selection includes named node,
67
+ ([s, h].includes(e) || // OR transaction adds/removes named node,
68
+ g.length !== d.length || // OR transaction has changes that completely encapsulte a node
69
+ // (for example, a transaction that affects the entire document).
70
+ // Such transactions can happen during collab syncing via y-prosemirror, for example.
71
+ n.steps.some((o) => (
72
+ // @ts-ignore
73
+ o.from !== void 0 && // @ts-ignore
74
+ o.to !== void 0 && d.some((c) => (
75
+ // @ts-ignore
76
+ c.pos >= o.from && // @ts-ignore
77
+ c.pos + c.node.nodeSize <= o.to
78
+ ))
79
+ ))) ? m({
80
+ doc: n.doc,
81
+ name: e,
82
+ lowlight: i,
83
+ defaultLanguage: t
84
+ }) : r.map(n.mapping, n.doc);
58
85
  }
59
- ];
60
- },
61
- renderHTML({ HTMLAttributes: t }) {
62
- return ["details", v(this.options.HTMLAttributes, t), 0];
63
- },
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)
121
- };
122
- };
123
- },
124
- addCommands() {
125
- 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();
86
+ },
87
+ props: {
88
+ decorations(n) {
89
+ return a.getState(n);
160
90
  }
161
- };
162
- },
163
- addKeyboardShortcuts() {
91
+ }
92
+ });
93
+ return a;
94
+ }
95
+ var D = x.extend({
96
+ addOptions() {
97
+ var e;
164
98
  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")
99
+ ...(e = this.parent) == null ? void 0 : e.call(this),
100
+ lowlight: {},
101
+ languageClassPrefix: "language-",
102
+ exitOnTripleEnter: !0,
103
+ exitOnArrowDown: !0,
104
+ defaultLanguage: null,
105
+ enableTabIndentation: !1,
106
+ tabSize: 4,
107
+ HTMLAttributes: {}
194
108
  };
195
109
  },
196
110
  addProseMirrorPlugins() {
111
+ var e;
197
112
  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
- }
113
+ ...((e = this.parent) == null ? void 0 : e.call(this)) || [],
114
+ A({
115
+ name: this.name,
116
+ lowlight: this.options.lowlight,
117
+ defaultLanguage: this.options.defaultLanguage
221
118
  })
222
119
  ];
223
120
  }
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
- });
121
+ }), S = D;
325
122
  export {
326
- j as Details,
327
- q as DetailsContent,
328
- _ as DetailsSummary
123
+ D as CodeBlockLowlight,
124
+ S as default
329
125
  };