@vizel/core 0.0.1-alpha.1

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 (77) hide show
  1. package/README.md +44 -0
  2. package/dist/components.css +1 -0
  3. package/dist/components.css.map +1 -0
  4. package/dist/index.d.ts +2642 -0
  5. package/dist/index.js +150 -0
  6. package/dist/index10.js +118 -0
  7. package/dist/index11.js +174 -0
  8. package/dist/index12.js +78 -0
  9. package/dist/index13.js +141 -0
  10. package/dist/index14.js +150 -0
  11. package/dist/index15.js +20 -0
  12. package/dist/index16.js +17 -0
  13. package/dist/index17.js +308 -0
  14. package/dist/index18.js +52 -0
  15. package/dist/index19.js +29 -0
  16. package/dist/index2.js +93 -0
  17. package/dist/index20.js +268 -0
  18. package/dist/index21.js +72 -0
  19. package/dist/index22.js +360 -0
  20. package/dist/index23.js +87 -0
  21. package/dist/index24.js +39 -0
  22. package/dist/index25.js +95 -0
  23. package/dist/index26.js +104 -0
  24. package/dist/index27.js +136 -0
  25. package/dist/index28.js +56 -0
  26. package/dist/index29.js +69 -0
  27. package/dist/index3.js +69 -0
  28. package/dist/index30.js +40 -0
  29. package/dist/index31.js +26 -0
  30. package/dist/index32.js +15 -0
  31. package/dist/index33.js +12 -0
  32. package/dist/index34.js +19 -0
  33. package/dist/index35.js +60 -0
  34. package/dist/index36.js +17 -0
  35. package/dist/index37.js +66 -0
  36. package/dist/index38.js +6 -0
  37. package/dist/index39.js +125 -0
  38. package/dist/index4.js +89 -0
  39. package/dist/index40.js +329 -0
  40. package/dist/index41.js +489 -0
  41. package/dist/index42.js +50 -0
  42. package/dist/index43.js +676 -0
  43. package/dist/index44.js +6 -0
  44. package/dist/index45.js +6 -0
  45. package/dist/index46.js +240 -0
  46. package/dist/index47.js +84 -0
  47. package/dist/index48.js +288 -0
  48. package/dist/index49.js +1504 -0
  49. package/dist/index5.js +13 -0
  50. package/dist/index50.js +7 -0
  51. package/dist/index51.js +1563 -0
  52. package/dist/index52.js +204 -0
  53. package/dist/index53.js +725 -0
  54. package/dist/index54.js +23 -0
  55. package/dist/index55.js +12 -0
  56. package/dist/index56.js +9 -0
  57. package/dist/index57.js +10 -0
  58. package/dist/index58.js +16 -0
  59. package/dist/index59.js +21 -0
  60. package/dist/index6.js +135 -0
  61. package/dist/index60.js +27 -0
  62. package/dist/index61.js +86 -0
  63. package/dist/index62.js +248 -0
  64. package/dist/index63.js +1234 -0
  65. package/dist/index64.js +736 -0
  66. package/dist/index65.js +5 -0
  67. package/dist/index66.js +1063 -0
  68. package/dist/index67.js +57 -0
  69. package/dist/index68.js +100 -0
  70. package/dist/index69.js +6 -0
  71. package/dist/index7.js +456 -0
  72. package/dist/index70.js +93 -0
  73. package/dist/index8.js +52 -0
  74. package/dist/index9.js +275 -0
  75. package/dist/styles.css +1 -0
  76. package/dist/styles.css.map +1 -0
  77. package/package.json +109 -0
@@ -0,0 +1,23 @@
1
+ const e = Object.freeze({
2
+ left: 0,
3
+ top: 0,
4
+ width: 16,
5
+ height: 16
6
+ }), t = Object.freeze({
7
+ rotate: 0,
8
+ vFlip: !1,
9
+ hFlip: !1
10
+ }), o = Object.freeze({
11
+ ...e,
12
+ ...t
13
+ }), n = Object.freeze({
14
+ ...o,
15
+ body: "",
16
+ hidden: !1
17
+ });
18
+ export {
19
+ n as defaultExtendedIconProps,
20
+ e as defaultIconDimensions,
21
+ o as defaultIconProps,
22
+ t as defaultIconTransformations
23
+ };
@@ -0,0 +1,12 @@
1
+ import { defaultIconTransformations as t } from "./index54.js";
2
+ const e = Object.freeze({
3
+ width: null,
4
+ height: null
5
+ }), n = Object.freeze({
6
+ ...e,
7
+ ...t
8
+ });
9
+ export {
10
+ n as defaultIconCustomisations,
11
+ e as defaultIconSizeCustomisations
12
+ };
@@ -0,0 +1,9 @@
1
+ function n(r, e) {
2
+ const t = {};
3
+ !r.hFlip != !e.hFlip && (t.hFlip = !0), !r.vFlip != !e.vFlip && (t.vFlip = !0);
4
+ const i = ((r.rotate || 0) + (e.rotate || 0)) % 4;
5
+ return i && (t.rotate = i), t;
6
+ }
7
+ export {
8
+ n as mergeIconTransformations
9
+ };
@@ -0,0 +1,10 @@
1
+ import { defaultExtendedIconProps as f, defaultIconTransformations as r } from "./index54.js";
2
+ import { mergeIconTransformations as t } from "./index56.js";
3
+ function a(e, i) {
4
+ const n = t(e, i);
5
+ for (const o in f) o in r ? o in e && !(o in n) && (n[o] = r[o]) : o in i ? n[o] = i[o] : o in e && (n[o] = e[o]);
6
+ return n;
7
+ }
8
+ export {
9
+ a as mergeIconData
10
+ };
@@ -0,0 +1,16 @@
1
+ function u(o, i) {
2
+ const s = o.icons, e = o.aliases || /* @__PURE__ */ Object.create(null), t = /* @__PURE__ */ Object.create(null);
3
+ function r(c) {
4
+ if (s[c]) return t[c] = [];
5
+ if (!(c in t)) {
6
+ t[c] = null;
7
+ const n = e[c] && e[c].parent, l = n && r(n);
8
+ l && (t[c] = [n].concat(l));
9
+ }
10
+ return t[c];
11
+ }
12
+ return (i || Object.keys(s).concat(Object.keys(e))).forEach(r), t;
13
+ }
14
+ export {
15
+ u as getIconsTree
16
+ };
@@ -0,0 +1,21 @@
1
+ const h = /(-?[0-9.]*[0-9]+[0-9.]*)/g, a = /^-?[0-9.]*[0-9]+[0-9.]*$/g;
2
+ function o(t, f, e) {
3
+ if (f === 1) return t;
4
+ if (e = e || 100, typeof t == "number") return Math.ceil(t * f * e) / e;
5
+ if (typeof t != "string") return t;
6
+ const l = t.split(h);
7
+ if (l === null || !l.length) return t;
8
+ const n = [];
9
+ let u = l.shift(), s = a.test(u);
10
+ for (; ; ) {
11
+ if (s) {
12
+ const r = parseFloat(u);
13
+ isNaN(r) ? n.push(u) : n.push(Math.ceil(r * f * e) / e);
14
+ } else n.push(u);
15
+ if (u = l.shift(), u === void 0) return n.join("");
16
+ s = !s;
17
+ }
18
+ }
19
+ export {
20
+ o as calculateSize
21
+ };
package/dist/index6.js ADDED
@@ -0,0 +1,135 @@
1
+ import H from "./index39.js";
2
+ import { createLowlight as T, all as V } from "lowlight";
3
+ import { renderVizelIcon as S } from "./index26.js";
4
+ const w = T(V);
5
+ function N() {
6
+ return w.listLanguages().sort((t, p) => t.localeCompare(p)).map((t) => ({
7
+ id: t,
8
+ // Capitalize first letter for display name
9
+ name: t.charAt(0).toUpperCase() + t.slice(1)
10
+ }));
11
+ }
12
+ function O() {
13
+ return N().map((u) => u.id);
14
+ }
15
+ function W(u) {
16
+ const t = u.toLowerCase();
17
+ return N().find((p) => p.id === t);
18
+ }
19
+ function q(u = {}) {
20
+ const {
21
+ defaultLanguage: t = "plaintext",
22
+ lineNumbers: p = !1,
23
+ lowlight: x = w
24
+ } = u;
25
+ return [H.extend({
26
+ addAttributes() {
27
+ return {
28
+ ...this.parent?.(),
29
+ language: {
30
+ default: t,
31
+ parseHTML: (n) => n.getAttribute("data-language") || n.querySelector("code")?.getAttribute("class")?.replace("language-", "") || t,
32
+ renderHTML: (n) => ({
33
+ "data-language": n.language || t,
34
+ class: `language-${n.language || t}`
35
+ })
36
+ },
37
+ lineNumbers: {
38
+ default: p,
39
+ parseHTML: (n) => n.getAttribute("data-line-numbers") === "true",
40
+ renderHTML: (n) => n.lineNumbers ? { "data-line-numbers": "true" } : {}
41
+ }
42
+ };
43
+ },
44
+ addNodeView() {
45
+ return ({ node: n, getPos: f, editor: d }) => {
46
+ const g = document.createElement("div");
47
+ g.classList.add("vizel-code-block"), n.attrs.lineNumbers && g.classList.add("vizel-code-block-line-numbers");
48
+ const o = document.createElement("div");
49
+ o.classList.add("vizel-code-block-language-selector"), o.setAttribute("contenteditable", "false");
50
+ const l = document.createElement("input");
51
+ l.type = "text", l.classList.add("vizel-code-block-language-input"), l.value = n.attrs.language || t, l.placeholder = "language";
52
+ const k = `vizel-languages-${Math.random().toString(36).slice(2, 9)}`, v = document.createElement("datalist");
53
+ v.id = k, l.setAttribute("list", k);
54
+ for (const e of N()) {
55
+ const a = document.createElement("option");
56
+ a.value = e.id, a.label = e.name, v.appendChild(a);
57
+ }
58
+ const C = () => {
59
+ const e = typeof f == "function" ? f() : null;
60
+ if (e != null) {
61
+ const a = l.value.toLowerCase().trim() || t;
62
+ l.value = a;
63
+ const { tr: c } = d.state, i = d.state.doc.nodeAt(e);
64
+ i && (c.setNodeMarkup(e, void 0, {
65
+ ...i.attrs,
66
+ language: a
67
+ }), d.view.dispatch(c));
68
+ }
69
+ };
70
+ l.addEventListener("change", C), l.addEventListener("blur", C), l.addEventListener("keydown", (e) => {
71
+ e.key === "Enter" && (e.preventDefault(), e.stopPropagation(), C(), l.blur());
72
+ });
73
+ const s = document.createElement("button");
74
+ s.type = "button", s.classList.add("vizel-code-block-line-numbers-toggle"), s.innerHTML = S("listOrdered", { width: 16, height: 16 }), n.attrs.lineNumbers && s.classList.add("active"), s.title = n.attrs.lineNumbers ? "Hide line numbers" : "Show line numbers", o.appendChild(s), o.appendChild(l), o.appendChild(v);
75
+ const L = document.createElement("div");
76
+ L.classList.add("vizel-code-block-container");
77
+ const r = document.createElement("div");
78
+ r.classList.add("vizel-code-block-gutter"), r.setAttribute("contenteditable", "false"), r.setAttribute("aria-hidden", "true");
79
+ const E = document.createElement("pre"), b = document.createElement("code");
80
+ b.classList.add(`language-${n.attrs.language || t}`), E.appendChild(b), L.appendChild(r), L.appendChild(E), g.appendChild(o), g.appendChild(L);
81
+ const z = () => {
82
+ const e = b.textContent || "", a = e.split(`
83
+ `), c = e.endsWith(`
84
+ `) && a.length > 1 ? a.length - 1 : Math.max(1, a.length);
85
+ if (r.children.length !== c) {
86
+ r.innerHTML = "";
87
+ for (let i = 1; i <= c; i++) {
88
+ const m = document.createElement("div");
89
+ m.classList.add("vizel-code-block-line-number"), m.textContent = String(i), r.appendChild(m);
90
+ }
91
+ }
92
+ };
93
+ n.attrs.lineNumbers && setTimeout(z, 0);
94
+ let A = n.attrs.language, h = n.attrs.lineNumbers;
95
+ s.addEventListener("click", (e) => {
96
+ e.preventDefault(), e.stopPropagation();
97
+ const a = typeof f == "function" ? f() : null;
98
+ if (a != null) {
99
+ const c = !h, { tr: i } = d.state, m = d.state.doc.nodeAt(a);
100
+ m && (i.setNodeMarkup(a, void 0, {
101
+ ...m.attrs,
102
+ lineNumbers: c
103
+ }), d.view.dispatch(i));
104
+ }
105
+ });
106
+ const M = (e) => {
107
+ A = e, l.value = e || t, b.className = `language-${e || t}`;
108
+ }, y = (e) => {
109
+ h = e, g.classList.toggle("vizel-code-block-line-numbers", e), s.classList.toggle("active", e), s.title = e ? "Hide line numbers" : "Show line numbers";
110
+ };
111
+ return {
112
+ dom: g,
113
+ contentDOM: b,
114
+ update(e) {
115
+ return e.type.name !== "codeBlock" ? !1 : (e.attrs.language !== A && M(e.attrs.language), e.attrs.lineNumbers !== h && y(e.attrs.lineNumbers), h && setTimeout(z, 0), !0);
116
+ },
117
+ ignoreMutation(e) {
118
+ return r.contains(e.target) || o.contains(e.target);
119
+ }
120
+ };
121
+ };
122
+ }
123
+ }).configure({
124
+ lowlight: x,
125
+ defaultLanguage: t
126
+ })];
127
+ }
128
+ export {
129
+ H as CodeBlockLowlight,
130
+ q as createVizelCodeBlockExtension,
131
+ W as findVizelLanguage,
132
+ O as getAllVizelLanguageIds,
133
+ N as getVizelRegisteredLanguages,
134
+ w as lowlight
135
+ };
@@ -0,0 +1,27 @@
1
+ function l(e, i = "defs") {
2
+ let f = "";
3
+ const s = e.indexOf("<" + i);
4
+ for (; s >= 0; ) {
5
+ const d = e.indexOf(">", s), r = e.indexOf("</" + i);
6
+ if (d === -1 || r === -1) break;
7
+ const n = e.indexOf(">", r);
8
+ if (n === -1) break;
9
+ f += e.slice(d + 1, r).trim(), e = e.slice(0, s).trim() + e.slice(n + 1);
10
+ }
11
+ return {
12
+ defs: f,
13
+ content: e
14
+ };
15
+ }
16
+ function t(e, i) {
17
+ return e ? "<defs>" + e + "</defs>" + i : i;
18
+ }
19
+ function u(e, i, f) {
20
+ const s = l(e);
21
+ return t(s.defs, i + s.content + f);
22
+ }
23
+ export {
24
+ t as mergeDefsAndContent,
25
+ l as splitSVGDefs,
26
+ u as wrapSVGContent
27
+ };
@@ -0,0 +1,86 @@
1
+ import { Plugin as w } from "./index41.js";
2
+ import { dropPoint as v } from "./index64.js";
3
+ function y(m = {}) {
4
+ return new w({
5
+ view(e) {
6
+ return new C(e, m);
7
+ }
8
+ });
9
+ }
10
+ class C {
11
+ constructor(e, t) {
12
+ var i;
13
+ this.editorView = e, this.cursorPos = null, this.element = null, this.timeout = -1, this.width = (i = t.width) !== null && i !== void 0 ? i : 1, this.color = t.color === !1 ? void 0 : t.color || "black", this.class = t.class, this.handlers = ["dragover", "dragend", "drop", "dragleave"].map((s) => {
14
+ let d = (r) => {
15
+ this[s](r);
16
+ };
17
+ return e.dom.addEventListener(s, d), { name: s, handler: d };
18
+ });
19
+ }
20
+ destroy() {
21
+ this.handlers.forEach(({ name: e, handler: t }) => this.editorView.dom.removeEventListener(e, t));
22
+ }
23
+ update(e, t) {
24
+ this.cursorPos != null && t.doc != e.state.doc && (this.cursorPos > e.state.doc.content.size ? this.setCursor(null) : this.updateOverlay());
25
+ }
26
+ setCursor(e) {
27
+ e != this.cursorPos && (this.cursorPos = e, e == null ? (this.element.parentNode.removeChild(this.element), this.element = null) : this.updateOverlay());
28
+ }
29
+ updateOverlay() {
30
+ let e = this.editorView.state.doc.resolve(this.cursorPos), t = !e.parent.inlineContent, i, s = this.editorView.dom, d = s.getBoundingClientRect(), r = d.width / s.offsetWidth, h = d.height / s.offsetHeight;
31
+ if (t) {
32
+ let o = e.nodeBefore, n = e.nodeAfter;
33
+ if (o || n) {
34
+ let a = this.editorView.nodeDOM(this.cursorPos - (o ? o.nodeSize : 0));
35
+ if (a) {
36
+ let c = a.getBoundingClientRect(), u = o ? c.bottom : c.top;
37
+ o && n && (u = (u + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2);
38
+ let g = this.width / 2 * h;
39
+ i = { left: c.left, right: c.right, top: u - g, bottom: u + g };
40
+ }
41
+ }
42
+ }
43
+ if (!i) {
44
+ let o = this.editorView.coordsAtPos(this.cursorPos), n = this.width / 2 * r;
45
+ i = { left: o.left - n, right: o.left + n, top: o.top, bottom: o.bottom };
46
+ }
47
+ let l = this.editorView.dom.offsetParent;
48
+ this.element || (this.element = l.appendChild(document.createElement("div")), this.class && (this.element.className = this.class), this.element.style.cssText = "position: absolute; z-index: 50; pointer-events: none;", this.color && (this.element.style.backgroundColor = this.color)), this.element.classList.toggle("prosemirror-dropcursor-block", t), this.element.classList.toggle("prosemirror-dropcursor-inline", !t);
49
+ let f, p;
50
+ if (!l || l == document.body && getComputedStyle(l).position == "static")
51
+ f = -pageXOffset, p = -pageYOffset;
52
+ else {
53
+ let o = l.getBoundingClientRect(), n = o.width / l.offsetWidth, a = o.height / l.offsetHeight;
54
+ f = o.left - l.scrollLeft * n, p = o.top - l.scrollTop * a;
55
+ }
56
+ this.element.style.left = (i.left - f) / r + "px", this.element.style.top = (i.top - p) / h + "px", this.element.style.width = (i.right - i.left) / r + "px", this.element.style.height = (i.bottom - i.top) / h + "px";
57
+ }
58
+ scheduleRemoval(e) {
59
+ clearTimeout(this.timeout), this.timeout = setTimeout(() => this.setCursor(null), e);
60
+ }
61
+ dragover(e) {
62
+ if (!this.editorView.editable)
63
+ return;
64
+ let t = this.editorView.posAtCoords({ left: e.clientX, top: e.clientY }), i = t && t.inside >= 0 && this.editorView.state.doc.nodeAt(t.inside), s = i && i.type.spec.disableDropCursor, d = typeof s == "function" ? s(this.editorView, t, e) : s;
65
+ if (t && !d) {
66
+ let r = t.pos;
67
+ if (this.editorView.dragging && this.editorView.dragging.slice) {
68
+ let h = v(this.editorView.state.doc, r, this.editorView.dragging.slice);
69
+ h != null && (r = h);
70
+ }
71
+ this.setCursor(r), this.scheduleRemoval(5e3);
72
+ }
73
+ }
74
+ dragend() {
75
+ this.scheduleRemoval(20);
76
+ }
77
+ drop() {
78
+ this.scheduleRemoval(20);
79
+ }
80
+ dragleave(e) {
81
+ this.editorView.dom.contains(e.relatedTarget) || this.setCursor(null);
82
+ }
83
+ }
84
+ export {
85
+ y as dropCursor
86
+ };
@@ -0,0 +1,248 @@
1
+ import P from "./index68.js";
2
+ import { Mapping as k } from "./index64.js";
3
+ import { Plugin as H, PluginKey as O } from "./index41.js";
4
+ const D = 500;
5
+ class c {
6
+ constructor(t, e) {
7
+ this.items = t, this.eventCount = e;
8
+ }
9
+ // Pop the latest event off the branch's history and apply it
10
+ // to a document transform.
11
+ popEvent(t, e) {
12
+ if (this.eventCount == 0)
13
+ return null;
14
+ let i = this.items.length;
15
+ for (; ; i--)
16
+ if (this.items.get(i - 1).selection) {
17
+ --i;
18
+ break;
19
+ }
20
+ let s, p;
21
+ e && (s = this.remapping(i, this.items.length), p = s.maps.length);
22
+ let l = t.tr, r, m, u = [], f = [];
23
+ return this.items.forEach((a, o) => {
24
+ if (!a.step) {
25
+ s || (s = this.remapping(i, o + 1), p = s.maps.length), p--, f.push(a);
26
+ return;
27
+ }
28
+ if (s) {
29
+ f.push(new g(a.map));
30
+ let d = a.step.map(s.slice(p)), v;
31
+ d && l.maybeStep(d).doc && (v = l.mapping.maps[l.mapping.maps.length - 1], u.push(new g(v, void 0, void 0, u.length + f.length))), p--, v && s.appendMap(v, p);
32
+ } else
33
+ l.maybeStep(a.step);
34
+ if (a.selection)
35
+ return r = s ? a.selection.map(s.slice(p)) : a.selection, m = new c(this.items.slice(0, i).append(f.reverse().concat(u)), this.eventCount - 1), !1;
36
+ }, this.items.length, 0), { remaining: m, transform: l, selection: r };
37
+ }
38
+ // Create a new branch with the given transform added.
39
+ addTransform(t, e, i, s) {
40
+ let p = [], l = this.eventCount, r = this.items, m = !s && r.length ? r.get(r.length - 1) : null;
41
+ for (let f = 0; f < t.steps.length; f++) {
42
+ let a = t.steps[f].invert(t.docs[f]), o = new g(t.mapping.maps[f], a, e), d;
43
+ (d = m && m.merge(o)) && (o = d, f ? p.pop() : r = r.slice(0, r.length - 1)), p.push(o), e && (l++, e = void 0), s || (m = o);
44
+ }
45
+ let u = l - i.depth;
46
+ return u > y && (r = x(r, u), l -= u), new c(r.append(p), l);
47
+ }
48
+ remapping(t, e) {
49
+ let i = new k();
50
+ return this.items.forEach((s, p) => {
51
+ let l = s.mirrorOffset != null && p - s.mirrorOffset >= t ? i.maps.length - s.mirrorOffset : void 0;
52
+ i.appendMap(s.map, l);
53
+ }, t, e), i;
54
+ }
55
+ addMaps(t) {
56
+ return this.eventCount == 0 ? this : new c(this.items.append(t.map((e) => new g(e))), this.eventCount);
57
+ }
58
+ // When the collab module receives remote changes, the history has
59
+ // to know about those, so that it can adjust the steps that were
60
+ // rebased on top of the remote changes, and include the position
61
+ // maps for the remote changes in its array of items.
62
+ rebased(t, e) {
63
+ if (!this.eventCount)
64
+ return this;
65
+ let i = [], s = Math.max(0, this.items.length - e), p = t.mapping, l = t.steps.length, r = this.eventCount;
66
+ this.items.forEach((o) => {
67
+ o.selection && r--;
68
+ }, s);
69
+ let m = e;
70
+ this.items.forEach((o) => {
71
+ let d = p.getMirror(--m);
72
+ if (d == null)
73
+ return;
74
+ l = Math.min(l, d);
75
+ let v = p.maps[d];
76
+ if (o.step) {
77
+ let S = t.steps[d].invert(t.docs[d]), E = o.selection && o.selection.map(p.slice(m + 1, d));
78
+ E && r++, i.push(new g(v, S, E));
79
+ } else
80
+ i.push(new g(v));
81
+ }, s);
82
+ let u = [];
83
+ for (let o = e; o < l; o++)
84
+ u.push(new g(p.maps[o]));
85
+ let f = this.items.slice(0, s).append(u).append(i), a = new c(f, r);
86
+ return a.emptyItemCount() > D && (a = a.compress(this.items.length - i.length)), a;
87
+ }
88
+ emptyItemCount() {
89
+ let t = 0;
90
+ return this.items.forEach((e) => {
91
+ e.step || t++;
92
+ }), t;
93
+ }
94
+ // Compressing a branch means rewriting it to push the air (map-only
95
+ // items) out. During collaboration, these naturally accumulate
96
+ // because each remote change adds one. The `upto` argument is used
97
+ // to ensure that only the items below a given level are compressed,
98
+ // because `rebased` relies on a clean, untouched set of items in
99
+ // order to associate old items with rebased steps.
100
+ compress(t = this.items.length) {
101
+ let e = this.remapping(0, t), i = e.maps.length, s = [], p = 0;
102
+ return this.items.forEach((l, r) => {
103
+ if (r >= t)
104
+ s.push(l), l.selection && p++;
105
+ else if (l.step) {
106
+ let m = l.step.map(e.slice(i)), u = m && m.getMap();
107
+ if (i--, u && e.appendMap(u, i), m) {
108
+ let f = l.selection && l.selection.map(e.slice(i));
109
+ f && p++;
110
+ let a = new g(u.invert(), m, f), o, d = s.length - 1;
111
+ (o = s.length && s[d].merge(a)) ? s[d] = o : s.push(a);
112
+ }
113
+ } else l.map && i--;
114
+ }, this.items.length, 0), new c(P.from(s.reverse()), p);
115
+ }
116
+ }
117
+ c.empty = new c(P.empty, 0);
118
+ function x(n, t) {
119
+ let e;
120
+ return n.forEach((i, s) => {
121
+ if (i.selection && t-- == 0)
122
+ return e = s, !1;
123
+ }), n.slice(e);
124
+ }
125
+ class g {
126
+ constructor(t, e, i, s) {
127
+ this.map = t, this.step = e, this.selection = i, this.mirrorOffset = s;
128
+ }
129
+ merge(t) {
130
+ if (this.step && t.step && !t.selection) {
131
+ let e = t.step.merge(this.step);
132
+ if (e)
133
+ return new g(e.getMap().invert(), e, this.selection);
134
+ }
135
+ }
136
+ }
137
+ class h {
138
+ constructor(t, e, i, s, p) {
139
+ this.done = t, this.undone = e, this.prevRanges = i, this.prevTime = s, this.prevComposition = p;
140
+ }
141
+ }
142
+ const y = 20;
143
+ function F(n, t, e, i) {
144
+ let s = e.getMeta(w), p;
145
+ if (s)
146
+ return s.historyState;
147
+ e.getMeta(j) && (n = new h(n.done, n.undone, null, 0, -1));
148
+ let l = e.getMeta("appendedTransaction");
149
+ if (e.steps.length == 0)
150
+ return n;
151
+ if (l && l.getMeta(w))
152
+ return l.getMeta(w).redo ? new h(n.done.addTransform(e, void 0, i, M(t)), n.undone, I(e.mapping.maps), n.prevTime, n.prevComposition) : new h(n.done, n.undone.addTransform(e, void 0, i, M(t)), null, n.prevTime, n.prevComposition);
153
+ if (e.getMeta("addToHistory") !== !1 && !(l && l.getMeta("addToHistory") === !1)) {
154
+ let r = e.getMeta("composition"), m = n.prevTime == 0 || !l && n.prevComposition != r && (n.prevTime < (e.time || 0) - i.newGroupDelay || !G(e, n.prevRanges)), u = l ? C(n.prevRanges, e.mapping) : I(e.mapping.maps);
155
+ return new h(n.done.addTransform(e, m ? t.selection.getBookmark() : void 0, i, M(t)), c.empty, u, e.time, r ?? n.prevComposition);
156
+ } else return (p = e.getMeta("rebased")) ? new h(n.done.rebased(e, p), n.undone.rebased(e, p), C(n.prevRanges, e.mapping), n.prevTime, n.prevComposition) : new h(n.done.addMaps(e.mapping.maps), n.undone.addMaps(e.mapping.maps), C(n.prevRanges, e.mapping), n.prevTime, n.prevComposition);
157
+ }
158
+ function G(n, t) {
159
+ if (!t)
160
+ return !1;
161
+ if (!n.docChanged)
162
+ return !0;
163
+ let e = !1;
164
+ return n.mapping.maps[0].forEach((i, s) => {
165
+ for (let p = 0; p < t.length; p += 2)
166
+ i <= t[p + 1] && s >= t[p] && (e = !0);
167
+ }), e;
168
+ }
169
+ function I(n) {
170
+ let t = [];
171
+ for (let e = n.length - 1; e >= 0 && t.length == 0; e--)
172
+ n[e].forEach((i, s, p, l) => t.push(p, l));
173
+ return t;
174
+ }
175
+ function C(n, t) {
176
+ if (!n)
177
+ return null;
178
+ let e = [];
179
+ for (let i = 0; i < n.length; i += 2) {
180
+ let s = t.map(n[i], 1), p = t.map(n[i + 1], -1);
181
+ s <= p && e.push(s, p);
182
+ }
183
+ return e;
184
+ }
185
+ function K(n, t, e) {
186
+ let i = M(t), s = w.get(t).spec.config, p = (e ? n.undone : n.done).popEvent(t, i);
187
+ if (!p)
188
+ return null;
189
+ let l = p.selection.resolve(p.transform.doc), r = (e ? n.done : n.undone).addTransform(p.transform, t.selection.getBookmark(), s, i), m = new h(e ? r : p.remaining, e ? p.remaining : r, null, 0, -1);
190
+ return p.transform.setSelection(l).setMeta(w, { redo: e, historyState: m });
191
+ }
192
+ let T = !1, b = null;
193
+ function M(n) {
194
+ let t = n.plugins;
195
+ if (b != t) {
196
+ T = !1, b = t;
197
+ for (let e = 0; e < t.length; e++)
198
+ if (t[e].spec.historyPreserveItems) {
199
+ T = !0;
200
+ break;
201
+ }
202
+ }
203
+ return T;
204
+ }
205
+ const w = new O("history"), j = new O("closeHistory");
206
+ function W(n = {}) {
207
+ return n = {
208
+ depth: n.depth || 100,
209
+ newGroupDelay: n.newGroupDelay || 500
210
+ }, new H({
211
+ key: w,
212
+ state: {
213
+ init() {
214
+ return new h(c.empty, c.empty, null, 0, -1);
215
+ },
216
+ apply(t, e, i) {
217
+ return F(e, i, t, n);
218
+ }
219
+ },
220
+ config: n,
221
+ props: {
222
+ handleDOMEvents: {
223
+ beforeinput(t, e) {
224
+ let i = e.inputType, s = i == "historyUndo" ? A : i == "historyRedo" ? U : null;
225
+ return !s || !t.editable ? !1 : (e.preventDefault(), s(t.state, t.dispatch));
226
+ }
227
+ }
228
+ }
229
+ });
230
+ }
231
+ function R(n, t) {
232
+ return (e, i) => {
233
+ let s = w.getState(e);
234
+ if (!s || (n ? s.undone : s.done).eventCount == 0)
235
+ return !1;
236
+ if (i) {
237
+ let p = K(s, e, n);
238
+ p && i(t ? p.scrollIntoView() : p);
239
+ }
240
+ return !0;
241
+ };
242
+ }
243
+ const A = R(!1, !0), U = R(!0, !0);
244
+ export {
245
+ W as history,
246
+ U as redo,
247
+ A as undo
248
+ };