@lunejs/admin-ui 0.1.5 → 0.2.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.
- package/dist/_virtual/index10.js +5 -2
- package/dist/_virtual/index11.js +4 -0
- package/dist/_virtual/index6.js +3 -3
- package/dist/_virtual/index8.js +3 -5
- package/dist/lib/api/codegen/graphql.d.ts +1 -0
- package/dist/lib/api/codegen/graphql.js +8 -8
- package/dist/lib/collections/components/collection-details/cards/general-card.js +20 -14
- package/dist/lib/custom-fields/components/details/is-list/custom-field-is-list.js +6 -4
- package/dist/lib/custom-fields/components/details/use-form/form-schema.d.ts +1 -0
- package/dist/lib/custom-fields/components/details/use-form/form-schema.js +4 -3
- package/dist/lib/custom-fields/components/fields/color.js +3 -3
- package/dist/lib/custom-fields/components/fields/custom-field.js +44 -36
- package/dist/lib/custom-fields/components/fields/rich-text.d.ts +8 -0
- package/dist/lib/custom-fields/components/fields/rich-text.js +17 -0
- package/dist/lib/custom-fields/components/fields/shared/primitive.d.ts +2 -1
- package/dist/lib/custom-fields/components/fields/shared/primitive.js +67 -61
- package/dist/lib/custom-fields/utils/custom-field.utils.js +63 -51
- package/dist/lib/dashboard/pages/dashboard-page.js +5 -5
- package/dist/lib/product/components/product-details/cards/general-product-card.js +18 -12
- package/dist/lib/translate/components/form/translate-form-row-data.d.ts +2 -1
- package/dist/lib/translate/components/form/translate-form-row-data.js +51 -19
- package/dist/lib/translate/components/form/translate-rich-text.d.ts +8 -0
- package/dist/lib/translate/components/form/translate-rich-text.js +65 -0
- package/dist/lib/translate/components/product-form/custom-fields/translate-product-custom-fields.js +95 -63
- package/dist/lib/translate/components/product-form/translate-product-form.js +19 -18
- package/dist/node_modules/@tiptap/core/dist/index.js +3566 -0
- package/dist/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js +17 -0
- package/dist/node_modules/@tiptap/extension-bold/dist/index.js +80 -0
- package/dist/node_modules/@tiptap/extension-document/dist/index.js +13 -0
- package/dist/node_modules/@tiptap/extension-heading/dist/index.js +64 -0
- package/dist/node_modules/@tiptap/extension-italic/dist/index.js +78 -0
- package/dist/node_modules/@tiptap/extension-link/dist/index.js +305 -0
- package/dist/node_modules/@tiptap/extension-list/dist/index.js +713 -0
- package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js +42 -0
- package/dist/node_modules/@tiptap/extension-table/dist/index.js +380 -0
- package/dist/node_modules/@tiptap/extension-text/dist/index.js +14 -0
- package/dist/node_modules/@tiptap/extension-text-style/dist/index.js +240 -0
- package/dist/node_modules/@tiptap/extension-underline/dist/index.js +66 -0
- package/dist/node_modules/@tiptap/extensions/dist/index.js +288 -0
- package/dist/node_modules/@tiptap/react/dist/index.js +482 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +1 -1
- package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js +1 -1
- package/dist/node_modules/eventemitter3/index.js +1 -1
- package/dist/node_modules/eventemitter3/index2.js +1 -1
- package/dist/node_modules/fast-equals/dist/es/index.js +324 -0
- package/dist/node_modules/linkifyjs/dist/linkify.js +707 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/baseline.js +10 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/between-horizontal-end.js +10 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/between-vertical-end.js +10 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/bold.js +11 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/grid-2x2-plus.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/grid-2x2-x.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/italic.js +10 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/layout-list.js +13 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/link.js +9 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/list-ordered.js +13 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/table-columns-split.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/table-rows-split.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/table.js +11 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/underline.js +9 -0
- package/dist/node_modules/orderedmap/dist/index.js +103 -0
- package/dist/node_modules/prosemirror-commands/dist/index.js +388 -0
- package/dist/node_modules/prosemirror-dropcursor/dist/index.js +86 -0
- package/dist/node_modules/prosemirror-gapcursor/dist/index.js +204 -0
- package/dist/node_modules/prosemirror-history/dist/index.js +248 -0
- package/dist/node_modules/prosemirror-keymap/dist/index.js +62 -0
- package/dist/node_modules/prosemirror-model/dist/index.js +2733 -0
- package/dist/node_modules/prosemirror-schema-list/dist/index.js +88 -0
- package/dist/node_modules/prosemirror-state/dist/index.js +822 -0
- package/dist/node_modules/prosemirror-tables/dist/index.js +1446 -0
- package/dist/node_modules/prosemirror-transform/dist/index.js +1520 -0
- package/dist/node_modules/prosemirror-view/dist/index.js +3772 -0
- package/dist/node_modules/react-is/index.js +1 -1
- package/dist/node_modules/recharts/es6/util/Events.js +1 -1
- package/dist/node_modules/recharts/es6/util/ReactUtils.js +1 -1
- package/dist/node_modules/rope-sequence/dist/index.js +100 -0
- package/dist/node_modules/use-sync-external-store/shim/index.js +1 -1
- package/dist/node_modules/w3c-keyname/index.js +93 -0
- package/dist/packages/lune-ui/dist/_virtual/index3.js +2 -5
- package/dist/packages/lune-ui/dist/_virtual/index6.js +5 -2
- package/dist/packages/lune-ui/dist/components/popover.js +15 -11
- package/dist/packages/lune-ui/dist/components/select.js +6 -6
- package/dist/packages/lune-ui/dist/form/form-date-picker.js +2 -2
- package/dist/packages/lune-ui/dist/form/form.js +4 -4
- package/dist/packages/lune-ui/dist/node_modules/@radix-ui/react-popover/dist/index.js +39 -38
- package/dist/packages/lune-ui/dist/node_modules/prop-types/index.js +1 -1
- package/dist/packages/lune-ui/dist/packages/lune-ui/node_modules/recharts/es6/util/Events.js +1 -1
- package/dist/shared/components/color-picker/color-picker.d.ts +2 -1
- package/dist/shared/components/color-picker/color-picker.js +11 -11
- package/dist/shared/components/data-table/data-table-filter.js +4 -4
- package/dist/shared/components/rich-editor/rich-editor.d.ts +8 -0
- package/dist/shared/components/rich-editor/rich-editor.js +97 -0
- package/dist/shared/components/rich-editor/toolbar/bold/rich-editor-toolbar-bold.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/bold/rich-editor-toolbar-bold.js +66 -0
- package/dist/shared/components/rich-editor/toolbar/color/rich-editor-toolbar-color.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/color/rich-editor-toolbar-color.js +66 -0
- package/dist/shared/components/rich-editor/toolbar/heading/rich-editor-toolbar-heading.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/heading/rich-editor-toolbar-heading.js +115 -0
- package/dist/shared/components/rich-editor/toolbar/italic/rich-editor-toolbar-italic.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/italic/rich-editor-toolbar-italic.js +66 -0
- package/dist/shared/components/rich-editor/toolbar/link/rich-editor-toolbar-link-form.d.ts +2 -0
- package/dist/shared/components/rich-editor/toolbar/link/rich-editor-toolbar-link-form.js +103 -0
- package/dist/shared/components/rich-editor/toolbar/link/rich-editor-toolbar-link.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/link/rich-editor-toolbar-link.js +64 -0
- package/dist/shared/components/rich-editor/toolbar/ol-list/rich-editor-toolbar-ul-list.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/ol-list/rich-editor-toolbar-ul-list.js +66 -0
- package/dist/shared/components/rich-editor/toolbar/table/rich-editor-toolbar-table.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/table/rich-editor-toolbar-table.js +108 -0
- package/dist/shared/components/rich-editor/toolbar/toolbar.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/toolbar.js +64 -0
- package/dist/shared/components/rich-editor/toolbar/ul-list/rich-editor-toolbar-ul-list.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/ul-list/rich-editor-toolbar-ul-list.js +66 -0
- package/dist/shared/components/rich-editor/toolbar/underline/rich-editor-toolbar-underline.d.ts +1 -0
- package/dist/shared/components/rich-editor/toolbar/underline/rich-editor-toolbar-underline.js +66 -0
- package/package.json +6 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Plugin as w } from "../../prosemirror-state/dist/index.js";
|
|
2
|
+
import { dropPoint as v } from "../../prosemirror-transform/dist/index.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,204 @@
|
|
|
1
|
+
import { keydownHandler as v } from "../../prosemirror-keymap/dist/index.js";
|
|
2
|
+
import { Plugin as w, TextSelection as m, NodeSelection as x, Selection as u } from "../../prosemirror-state/dist/index.js";
|
|
3
|
+
import { Fragment as h, Slice as g } from "../../prosemirror-model/dist/index.js";
|
|
4
|
+
import { DecorationSet as S, Decoration as A } from "../../prosemirror-view/dist/index.js";
|
|
5
|
+
class i extends u {
|
|
6
|
+
/**
|
|
7
|
+
Create a gap cursor.
|
|
8
|
+
*/
|
|
9
|
+
constructor(e) {
|
|
10
|
+
super(e, e);
|
|
11
|
+
}
|
|
12
|
+
map(e, t) {
|
|
13
|
+
let o = e.resolve(t.map(this.head));
|
|
14
|
+
return i.valid(o) ? new i(o) : u.near(o);
|
|
15
|
+
}
|
|
16
|
+
content() {
|
|
17
|
+
return g.empty;
|
|
18
|
+
}
|
|
19
|
+
eq(e) {
|
|
20
|
+
return e instanceof i && e.head == this.head;
|
|
21
|
+
}
|
|
22
|
+
toJSON() {
|
|
23
|
+
return { type: "gapcursor", pos: this.head };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
@internal
|
|
27
|
+
*/
|
|
28
|
+
static fromJSON(e, t) {
|
|
29
|
+
if (typeof t.pos != "number")
|
|
30
|
+
throw new RangeError("Invalid input for GapCursor.fromJSON");
|
|
31
|
+
return new i(e.resolve(t.pos));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
@internal
|
|
35
|
+
*/
|
|
36
|
+
getBookmark() {
|
|
37
|
+
return new d(this.anchor);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
@internal
|
|
41
|
+
*/
|
|
42
|
+
static valid(e) {
|
|
43
|
+
let t = e.parent;
|
|
44
|
+
if (t.isTextblock || !b(e) || !y(e))
|
|
45
|
+
return !1;
|
|
46
|
+
let o = t.type.spec.allowGapCursor;
|
|
47
|
+
if (o != null)
|
|
48
|
+
return o;
|
|
49
|
+
let r = t.contentMatchAt(e.index()).defaultType;
|
|
50
|
+
return r && r.isTextblock;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
@internal
|
|
54
|
+
*/
|
|
55
|
+
static findGapCursorFrom(e, t, o = !1) {
|
|
56
|
+
e: for (; ; ) {
|
|
57
|
+
if (!o && i.valid(e))
|
|
58
|
+
return e;
|
|
59
|
+
let r = e.pos, s = null;
|
|
60
|
+
for (let l = e.depth; ; l--) {
|
|
61
|
+
let a = e.node(l);
|
|
62
|
+
if (t > 0 ? e.indexAfter(l) < a.childCount : e.index(l) > 0) {
|
|
63
|
+
s = a.child(t > 0 ? e.indexAfter(l) : e.index(l) - 1);
|
|
64
|
+
break;
|
|
65
|
+
} else if (l == 0)
|
|
66
|
+
return null;
|
|
67
|
+
r += t;
|
|
68
|
+
let f = e.doc.resolve(r);
|
|
69
|
+
if (i.valid(f))
|
|
70
|
+
return f;
|
|
71
|
+
}
|
|
72
|
+
for (; ; ) {
|
|
73
|
+
let l = t > 0 ? s.firstChild : s.lastChild;
|
|
74
|
+
if (!l) {
|
|
75
|
+
if (s.isAtom && !s.isText && !x.isSelectable(s)) {
|
|
76
|
+
e = e.doc.resolve(r + s.nodeSize * t), o = !1;
|
|
77
|
+
continue e;
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
s = l, r += t;
|
|
82
|
+
let a = e.doc.resolve(r);
|
|
83
|
+
if (i.valid(a))
|
|
84
|
+
return a;
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
i.prototype.visible = !1;
|
|
91
|
+
i.findFrom = i.findGapCursorFrom;
|
|
92
|
+
u.jsonID("gapcursor", i);
|
|
93
|
+
class d {
|
|
94
|
+
constructor(e) {
|
|
95
|
+
this.pos = e;
|
|
96
|
+
}
|
|
97
|
+
map(e) {
|
|
98
|
+
return new d(e.map(this.pos));
|
|
99
|
+
}
|
|
100
|
+
resolve(e) {
|
|
101
|
+
let t = e.resolve(this.pos);
|
|
102
|
+
return i.valid(t) ? new i(t) : u.near(t);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function C(n) {
|
|
106
|
+
return n.isAtom || n.spec.isolating || n.spec.createGapCursor;
|
|
107
|
+
}
|
|
108
|
+
function b(n) {
|
|
109
|
+
for (let e = n.depth; e >= 0; e--) {
|
|
110
|
+
let t = n.index(e), o = n.node(e);
|
|
111
|
+
if (t == 0) {
|
|
112
|
+
if (o.type.spec.isolating)
|
|
113
|
+
return !0;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
for (let r = o.child(t - 1); ; r = r.lastChild) {
|
|
117
|
+
if (r.childCount == 0 && !r.inlineContent || C(r.type))
|
|
118
|
+
return !0;
|
|
119
|
+
if (r.inlineContent)
|
|
120
|
+
return !1;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return !0;
|
|
124
|
+
}
|
|
125
|
+
function y(n) {
|
|
126
|
+
for (let e = n.depth; e >= 0; e--) {
|
|
127
|
+
let t = n.indexAfter(e), o = n.node(e);
|
|
128
|
+
if (t == o.childCount) {
|
|
129
|
+
if (o.type.spec.isolating)
|
|
130
|
+
return !0;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
for (let r = o.child(t); ; r = r.firstChild) {
|
|
134
|
+
if (r.childCount == 0 && !r.inlineContent || C(r.type))
|
|
135
|
+
return !0;
|
|
136
|
+
if (r.inlineContent)
|
|
137
|
+
return !1;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return !0;
|
|
141
|
+
}
|
|
142
|
+
function B() {
|
|
143
|
+
return new w({
|
|
144
|
+
props: {
|
|
145
|
+
decorations: F,
|
|
146
|
+
createSelectionBetween(n, e, t) {
|
|
147
|
+
return e.pos == t.pos && i.valid(t) ? new i(t) : null;
|
|
148
|
+
},
|
|
149
|
+
handleClick: T,
|
|
150
|
+
handleKeyDown: k,
|
|
151
|
+
handleDOMEvents: { beforeinput: D }
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
const k = v({
|
|
156
|
+
ArrowLeft: c("horiz", -1),
|
|
157
|
+
ArrowRight: c("horiz", 1),
|
|
158
|
+
ArrowUp: c("vert", -1),
|
|
159
|
+
ArrowDown: c("vert", 1)
|
|
160
|
+
});
|
|
161
|
+
function c(n, e) {
|
|
162
|
+
const t = n == "vert" ? e > 0 ? "down" : "up" : e > 0 ? "right" : "left";
|
|
163
|
+
return function(o, r, s) {
|
|
164
|
+
let l = o.selection, a = e > 0 ? l.$to : l.$from, f = l.empty;
|
|
165
|
+
if (l instanceof m) {
|
|
166
|
+
if (!s.endOfTextblock(t) || a.depth == 0)
|
|
167
|
+
return !1;
|
|
168
|
+
f = !1, a = o.doc.resolve(e > 0 ? a.after() : a.before());
|
|
169
|
+
}
|
|
170
|
+
let p = i.findGapCursorFrom(a, e, f);
|
|
171
|
+
return p ? (r && r(o.tr.setSelection(new i(p))), !0) : !1;
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function T(n, e, t) {
|
|
175
|
+
if (!n || !n.editable)
|
|
176
|
+
return !1;
|
|
177
|
+
let o = n.state.doc.resolve(e);
|
|
178
|
+
if (!i.valid(o))
|
|
179
|
+
return !1;
|
|
180
|
+
let r = n.posAtCoords({ left: t.clientX, top: t.clientY });
|
|
181
|
+
return r && r.inside > -1 && x.isSelectable(n.state.doc.nodeAt(r.inside)) ? !1 : (n.dispatch(n.state.tr.setSelection(new i(o))), !0);
|
|
182
|
+
}
|
|
183
|
+
function D(n, e) {
|
|
184
|
+
if (e.inputType != "insertCompositionText" || !(n.state.selection instanceof i))
|
|
185
|
+
return !1;
|
|
186
|
+
let { $from: t } = n.state.selection, o = t.parent.contentMatchAt(t.index()).findWrapping(n.state.schema.nodes.text);
|
|
187
|
+
if (!o)
|
|
188
|
+
return !1;
|
|
189
|
+
let r = h.empty;
|
|
190
|
+
for (let l = o.length - 1; l >= 0; l--)
|
|
191
|
+
r = h.from(o[l].createAndFill(null, r));
|
|
192
|
+
let s = n.state.tr.replace(t.pos, t.pos, new g(r, 0, 0));
|
|
193
|
+
return s.setSelection(m.near(s.doc.resolve(t.pos + 1))), n.dispatch(s), !1;
|
|
194
|
+
}
|
|
195
|
+
function F(n) {
|
|
196
|
+
if (!(n.selection instanceof i))
|
|
197
|
+
return null;
|
|
198
|
+
let e = document.createElement("div");
|
|
199
|
+
return e.className = "ProseMirror-gapcursor", S.create(n.doc, [A.widget(n.selection.head, e, { key: "gapcursor" })]);
|
|
200
|
+
}
|
|
201
|
+
export {
|
|
202
|
+
i as GapCursor,
|
|
203
|
+
B as gapCursor
|
|
204
|
+
};
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import P from "../../rope-sequence/dist/index.js";
|
|
2
|
+
import { Mapping as k } from "../../prosemirror-transform/dist/index.js";
|
|
3
|
+
import { Plugin as H, PluginKey as O } from "../../prosemirror-state/dist/index.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
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { keyName as u, base as c } from "../../w3c-keyname/index.js";
|
|
2
|
+
import { Plugin as d } from "../../prosemirror-state/dist/index.js";
|
|
3
|
+
const p = typeof navigator < "u" && /Mac|iP(hone|[oa]d)/.test(navigator.platform), y = typeof navigator < "u" && /Win/.test(navigator.platform);
|
|
4
|
+
function m(e) {
|
|
5
|
+
let r = e.split(/-(?!$)/), t = r[r.length - 1];
|
|
6
|
+
t == "Space" && (t = " ");
|
|
7
|
+
let i, f, o, a;
|
|
8
|
+
for (let l = 0; l < r.length - 1; l++) {
|
|
9
|
+
let s = r[l];
|
|
10
|
+
if (/^(cmd|meta|m)$/i.test(s))
|
|
11
|
+
a = !0;
|
|
12
|
+
else if (/^a(lt)?$/i.test(s))
|
|
13
|
+
i = !0;
|
|
14
|
+
else if (/^(c|ctrl|control)$/i.test(s))
|
|
15
|
+
f = !0;
|
|
16
|
+
else if (/^s(hift)?$/i.test(s))
|
|
17
|
+
o = !0;
|
|
18
|
+
else if (/^mod$/i.test(s))
|
|
19
|
+
p ? a = !0 : f = !0;
|
|
20
|
+
else
|
|
21
|
+
throw new Error("Unrecognized modifier name: " + s);
|
|
22
|
+
}
|
|
23
|
+
return i && (t = "Alt-" + t), f && (t = "Ctrl-" + t), a && (t = "Meta-" + t), o && (t = "Shift-" + t), t;
|
|
24
|
+
}
|
|
25
|
+
function h(e) {
|
|
26
|
+
let r = /* @__PURE__ */ Object.create(null);
|
|
27
|
+
for (let t in e)
|
|
28
|
+
r[m(t)] = e[t];
|
|
29
|
+
return r;
|
|
30
|
+
}
|
|
31
|
+
function n(e, r, t = !0) {
|
|
32
|
+
return r.altKey && (e = "Alt-" + e), r.ctrlKey && (e = "Ctrl-" + e), r.metaKey && (e = "Meta-" + e), t && r.shiftKey && (e = "Shift-" + e), e;
|
|
33
|
+
}
|
|
34
|
+
function k(e) {
|
|
35
|
+
return new d({ props: { handleKeyDown: K(e) } });
|
|
36
|
+
}
|
|
37
|
+
function K(e) {
|
|
38
|
+
let r = h(e);
|
|
39
|
+
return function(t, i) {
|
|
40
|
+
let f = u(i), o, a = r[n(f, i)];
|
|
41
|
+
if (a && a(t.state, t.dispatch, t))
|
|
42
|
+
return !0;
|
|
43
|
+
if (f.length == 1 && f != " ") {
|
|
44
|
+
if (i.shiftKey) {
|
|
45
|
+
let l = r[n(f, i, !1)];
|
|
46
|
+
if (l && l(t.state, t.dispatch, t))
|
|
47
|
+
return !0;
|
|
48
|
+
}
|
|
49
|
+
if ((i.altKey || i.metaKey || i.ctrlKey) && // Ctrl-Alt may be used for AltGr on Windows
|
|
50
|
+
!(y && i.ctrlKey && i.altKey) && (o = c[i.keyCode]) && o != f) {
|
|
51
|
+
let l = r[n(o, i)];
|
|
52
|
+
if (l && l(t.state, t.dispatch, t))
|
|
53
|
+
return !0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return !1;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export {
|
|
60
|
+
K as keydownHandler,
|
|
61
|
+
k as keymap
|
|
62
|
+
};
|