@kerebron/extension-yjs 0.6.6 → 0.7.0
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/esm/ExtensionYjs.d.ts +3 -11
- package/esm/ExtensionYjs.d.ts.map +1 -1
- package/esm/ExtensionYjs.js +38 -45
- package/esm/ExtensionYjs.js.map +1 -1
- package/esm/WebsocketProvider.d.ts +69 -0
- package/esm/WebsocketProvider.d.ts.map +1 -0
- package/esm/WebsocketProvider.js +354 -0
- package/esm/WebsocketProvider.js.map +1 -0
- package/esm/YjsProvider.d.ts +48 -0
- package/esm/YjsProvider.d.ts.map +1 -0
- package/esm/YjsProvider.js +12 -0
- package/esm/YjsProvider.js.map +1 -0
- package/esm/_dnt.shims.d.ts +2 -0
- package/esm/_dnt.shims.d.ts.map +1 -0
- package/esm/_dnt.shims.js +58 -0
- package/esm/_dnt.shims.js.map +1 -0
- package/esm/binding/BindingMetadata.d.ts +6 -0
- package/esm/binding/BindingMetadata.d.ts.map +1 -0
- package/esm/binding/BindingMetadata.js +2 -0
- package/esm/binding/BindingMetadata.js.map +1 -0
- package/esm/binding/PmYjsBinding.d.ts +41 -0
- package/esm/binding/PmYjsBinding.d.ts.map +1 -0
- package/esm/binding/PmYjsBinding.js +190 -0
- package/esm/binding/PmYjsBinding.js.map +1 -0
- package/esm/binding/convertUtils.d.ts +48 -0
- package/esm/binding/convertUtils.d.ts.map +1 -0
- package/esm/binding/convertUtils.js +80 -0
- package/esm/binding/convertUtils.js.map +1 -0
- package/esm/{createNodeFromYElement.d.ts → binding/createNodeFromYElement.d.ts} +1 -1
- package/esm/binding/createNodeFromYElement.d.ts.map +1 -0
- package/esm/{createNodeFromYElement.js → binding/createNodeFromYElement.js} +2 -2
- package/esm/binding/createNodeFromYElement.js.map +1 -0
- package/esm/{updateYFragment.d.ts → binding/updateYFragment.d.ts} +3 -3
- package/esm/binding/updateYFragment.d.ts.map +1 -0
- package/esm/{updateYFragment.js → binding/updateYFragment.js} +10 -7
- package/esm/binding/updateYFragment.js.map +1 -0
- package/esm/lib.d.ts +1 -7
- package/esm/lib.d.ts.map +1 -1
- package/esm/lib.js +1 -200
- package/esm/lib.js.map +1 -1
- package/esm/position.d.ts +8 -0
- package/esm/position.d.ts.map +1 -0
- package/esm/position.js +165 -0
- package/esm/position.js.map +1 -0
- package/esm/ui/selection.d.ts +29 -0
- package/esm/ui/selection.d.ts.map +1 -0
- package/esm/ui/selection.js +129 -0
- package/esm/ui/selection.js.map +1 -0
- package/esm/yPositionPlugin.d.ts +6 -1
- package/esm/yPositionPlugin.d.ts.map +1 -1
- package/esm/yPositionPlugin.js +91 -50
- package/esm/yPositionPlugin.js.map +1 -1
- package/esm/ySyncPlugin.d.ts +5 -22
- package/esm/ySyncPlugin.d.ts.map +1 -1
- package/esm/ySyncPlugin.js +54 -116
- package/esm/ySyncPlugin.js.map +1 -1
- package/esm/yUndoPlugin.d.ts +11 -10
- package/esm/yUndoPlugin.d.ts.map +1 -1
- package/esm/yUndoPlugin.js +90 -52
- package/esm/yUndoPlugin.js.map +1 -1
- package/package.json +9 -6
- package/src/ExtensionYjs.ts +55 -67
- package/src/WebsocketProvider.ts +516 -0
- package/src/YjsProvider.ts +75 -0
- package/src/_dnt.shims.ts +60 -0
- package/src/binding/BindingMetadata.ts +6 -0
- package/src/binding/PmYjsBinding.ts +300 -0
- package/src/binding/convertUtils.ts +124 -0
- package/src/{createNodeFromYElement.ts → binding/createNodeFromYElement.ts} +3 -3
- package/src/{updateYFragment.ts → binding/updateYFragment.ts} +15 -8
- package/src/lib.ts +4 -230
- package/src/position.ts +191 -0
- package/src/ui/selection.ts +216 -0
- package/src/yPositionPlugin.ts +122 -74
- package/src/ySyncPlugin.ts +87 -170
- package/src/yUndoPlugin.ts +113 -62
- package/esm/ProsemirrorBinding.d.ts +0 -60
- package/esm/ProsemirrorBinding.d.ts.map +0 -1
- package/esm/ProsemirrorBinding.js +0 -405
- package/esm/ProsemirrorBinding.js.map +0 -1
- package/esm/createNodeFromYElement.d.ts.map +0 -1
- package/esm/createNodeFromYElement.js.map +0 -1
- package/esm/updateYFragment.d.ts.map +0 -1
- package/esm/updateYFragment.js.map +0 -1
- package/esm/userColors.d.ts +0 -5
- package/esm/userColors.d.ts.map +0 -1
- package/esm/userColors.js +0 -11
- package/esm/userColors.js.map +0 -1
- package/src/ProsemirrorBinding.ts +0 -607
- package/src/userColors.ts +0 -10
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Y from 'yjs';
|
|
2
2
|
import { simpleDiff } from 'lib0/diff';
|
|
3
|
-
import { ySyncPluginKey } from '
|
|
4
|
-
import * as utils from '
|
|
3
|
+
import { ySyncPluginKey } from '../keys.js';
|
|
4
|
+
import * as utils from '../utils.js';
|
|
5
5
|
const hashedMarkNameRegex = /(.*)(--[a-zA-Z0-9+/=]{8})$/;
|
|
6
6
|
export const yattr2markname = (attrName) => hashedMarkNameRegex.exec(attrName)?.[1] ?? attrName;
|
|
7
7
|
const marksToAttributes = (marks, meta) => {
|
|
@@ -9,8 +9,8 @@ const marksToAttributes = (marks, meta) => {
|
|
|
9
9
|
marks.forEach((mark) => {
|
|
10
10
|
if (mark.type.name !== 'ychange') {
|
|
11
11
|
let isOverlapping = true;
|
|
12
|
-
if (!meta.
|
|
13
|
-
meta.
|
|
12
|
+
if (!meta.isOverlappingMark.has(mark.type.name)) {
|
|
13
|
+
meta.isOverlappingMark.set(mark.type.name, !mark.type.excludes(mark.type));
|
|
14
14
|
isOverlapping = false;
|
|
15
15
|
}
|
|
16
16
|
pattrs[isOverlapping
|
|
@@ -194,7 +194,8 @@ const updateYText = (ytext, ptexts, meta) => {
|
|
|
194
194
|
* @private
|
|
195
195
|
* @unstable
|
|
196
196
|
*/
|
|
197
|
-
export const updateYFragment = (ydoc, yDomFragment, pNode, meta) => {
|
|
197
|
+
export const updateYFragment = (ydoc, yDomFragment, pNode, meta, addToYjsHistory) => {
|
|
198
|
+
const origin = ySyncPluginKey;
|
|
198
199
|
if (yDomFragment instanceof Y.XmlElement &&
|
|
199
200
|
yDomFragment.nodeName !== pNode.type.name) {
|
|
200
201
|
throw new Error('node name mismatch!');
|
|
@@ -257,7 +258,9 @@ export const updateYFragment = (ydoc, yDomFragment, pNode, meta) => {
|
|
|
257
258
|
}
|
|
258
259
|
}
|
|
259
260
|
}
|
|
260
|
-
ydoc.transact(() => {
|
|
261
|
+
ydoc.transact((ytr) => {
|
|
262
|
+
ytr.meta.set('updateYFragment', 1);
|
|
263
|
+
ytr.meta.set('addToYjsHistory', addToYjsHistory);
|
|
261
264
|
// try to compare and update
|
|
262
265
|
while (yChildCnt - left - right > 0 && pChildCnt - left - right > 0) {
|
|
263
266
|
const leftY = yChildren[left];
|
|
@@ -328,6 +331,6 @@ export const updateYFragment = (ydoc, yDomFragment, pNode, meta) => {
|
|
|
328
331
|
}
|
|
329
332
|
yDomFragment.insert(left, ins);
|
|
330
333
|
}
|
|
331
|
-
},
|
|
334
|
+
}, origin);
|
|
332
335
|
};
|
|
333
336
|
//# sourceMappingURL=updateYFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateYFragment.js","sourceRoot":"","sources":["../../src/binding/updateYFragment.ts"],"names":[],"mappings":"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"}
|
package/esm/lib.d.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import * as Y from 'yjs';
|
|
2
|
-
import { type EditorView } from 'prosemirror-view';
|
|
3
2
|
import { type Node } from 'prosemirror-model';
|
|
3
|
+
export type TransactFunc<T> = (f: (arg0?: Y.Transaction) => T, origin?: any) => T;
|
|
4
4
|
/**
|
|
5
5
|
* Either a node if type is YXmlElement or an Array of text nodes if YXmlText
|
|
6
6
|
*/
|
|
7
7
|
export type ProsemirrorMapping = Map<Y.AbstractType<any>, Node | Array<Node>>;
|
|
8
|
-
export declare const setMeta: (view: EditorView, key: any, value: any) => void;
|
|
9
|
-
/**
|
|
10
|
-
* Transforms a Prosemirror based absolute position to a Yjs Cursor (relative position in the Yjs model).
|
|
11
|
-
*/
|
|
12
|
-
export declare const absolutePositionToRelativePosition: (pos: number, type: Y.XmlFragment, mapping: ProsemirrorMapping) => any;
|
|
13
|
-
export declare const relativePositionToAbsolutePosition: (yDoc: Y.Doc, documentType: Y.XmlFragment, relPos: any, mapping: ProsemirrorMapping) => null | number;
|
|
14
8
|
//# sourceMappingURL=lib.d.ts.map
|
package/esm/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAC5B,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,EAC9B,MAAM,CAAC,EAAE,GAAG,KACT,CAAC,CAAC;AAEP;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC"}
|
package/esm/lib.js
CHANGED
|
@@ -1,201 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { ySyncPluginKey } from './keys.js';
|
|
3
|
-
/**
|
|
4
|
-
* Is null if no timeout is in progress.
|
|
5
|
-
* Is defined if a timeout is in progress.
|
|
6
|
-
* Maps from view
|
|
7
|
-
*/
|
|
8
|
-
let viewsToUpdate = null;
|
|
9
|
-
const updateMetas = () => {
|
|
10
|
-
const ups = viewsToUpdate;
|
|
11
|
-
viewsToUpdate = null;
|
|
12
|
-
if (!ups) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
ups.forEach((metas, view) => {
|
|
16
|
-
const tr = view.state.tr;
|
|
17
|
-
const syncState = ySyncPluginKey.getState(view.state);
|
|
18
|
-
if (syncState && syncState.binding && !syncState.binding.isDestroyed) {
|
|
19
|
-
metas.forEach((val, key) => {
|
|
20
|
-
tr.setMeta(key, val);
|
|
21
|
-
});
|
|
22
|
-
view.dispatch(tr);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
export const setMeta = (view, key, value) => {
|
|
27
|
-
if (!viewsToUpdate) {
|
|
28
|
-
viewsToUpdate = new Map();
|
|
29
|
-
setTimeout(updateMetas, 0);
|
|
30
|
-
}
|
|
31
|
-
let subMap = viewsToUpdate.get(view);
|
|
32
|
-
if (subMap === undefined) {
|
|
33
|
-
subMap = new Map();
|
|
34
|
-
viewsToUpdate.set(view, subMap);
|
|
35
|
-
}
|
|
36
|
-
subMap.set(key, value);
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Transforms a Prosemirror based absolute position to a Yjs Cursor (relative position in the Yjs model).
|
|
40
|
-
*/
|
|
41
|
-
export const absolutePositionToRelativePosition = (pos, type, mapping) => {
|
|
42
|
-
if (pos === 0) {
|
|
43
|
-
// if the type is later populated, we want to retain the 0 position (hence assoc=-1)
|
|
44
|
-
return Y.createRelativePositionFromTypeIndex(type, 0, type.length === 0 ? -1 : 0);
|
|
45
|
-
}
|
|
46
|
-
let n = type._first === null
|
|
47
|
-
? null
|
|
48
|
-
: /** @type {Y.ContentType} */ (type._first.content).type;
|
|
49
|
-
while (n !== null && type !== n) {
|
|
50
|
-
if (n instanceof Y.XmlText) {
|
|
51
|
-
if (n._length >= pos) {
|
|
52
|
-
return Y.createRelativePositionFromTypeIndex(n, pos, type.length === 0 ? -1 : 0);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
pos -= n._length;
|
|
56
|
-
}
|
|
57
|
-
if (n._item !== null && n._item.next !== null) {
|
|
58
|
-
n = /** @type {Y.ContentType} */ (n._item.next.content).type;
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
do {
|
|
62
|
-
n = n._item === null ? null : n._item.parent;
|
|
63
|
-
pos--;
|
|
64
|
-
} while (n !== type && n !== null && n._item !== null && n._item.next === null);
|
|
65
|
-
if (n !== null && n !== type) {
|
|
66
|
-
// @ts-gnore we know that n.next !== null because of above loop conditition
|
|
67
|
-
n = n._item === null
|
|
68
|
-
? null
|
|
69
|
-
: /** @type {Y.ContentType} */ ( /** @type Y.Item */(n._item.next)
|
|
70
|
-
.content).type;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
const pNodeSize =
|
|
76
|
-
/** @type {any} */ (mapping.get(n) || { nodeSize: 0 }).nodeSize;
|
|
77
|
-
if (n._first !== null && pos < pNodeSize) {
|
|
78
|
-
n = /** @type {Y.ContentType} */ (n._first.content).type;
|
|
79
|
-
pos--;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
if (pos === 1 && n._length === 0 && pNodeSize > 1) {
|
|
83
|
-
// edge case, should end in this paragraph
|
|
84
|
-
return new Y.RelativePosition(n._item === null ? null : n._item.id, n._item === null ? Y.findRootTypeKey(n) : null, null);
|
|
85
|
-
}
|
|
86
|
-
pos -= pNodeSize;
|
|
87
|
-
if (n._item !== null && n._item.next !== null) {
|
|
88
|
-
n = /** @type {Y.ContentType} */ (n._item.next.content).type;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
if (pos === 0) {
|
|
92
|
-
// set to end of n.parent
|
|
93
|
-
n = n._item === null ? n : n._item.parent;
|
|
94
|
-
return new Y.RelativePosition(n._item === null ? null : n._item.id, n._item === null ? Y.findRootTypeKey(n) : null, null);
|
|
95
|
-
}
|
|
96
|
-
do {
|
|
97
|
-
n = n._item.parent;
|
|
98
|
-
pos--;
|
|
99
|
-
} while (n !== type && /** @type {Y.Item} */ (n._item).next === null);
|
|
100
|
-
// if n is null at this point, we have an unexpected case
|
|
101
|
-
if (n !== type) {
|
|
102
|
-
// We know that n._item.next is defined because of above loop condition
|
|
103
|
-
n =
|
|
104
|
-
/** @type {Y.ContentType} */ ( /** @type {Y.Item} */( /** @type {Y.Item} */(n
|
|
105
|
-
._item).next).content).type;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (n === null) {
|
|
111
|
-
throw new Error('Unexpected case');
|
|
112
|
-
}
|
|
113
|
-
if (pos === 0 && n.constructor !== Y.XmlText && n !== type) { // TODO: set to <= 0
|
|
114
|
-
return createRelativePosition(n._item.parent, n._item);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return Y.createRelativePositionFromTypeIndex(type, type._length, type.length === 0 ? -1 : 0);
|
|
118
|
-
};
|
|
119
|
-
const createRelativePosition = (type, item) => {
|
|
120
|
-
let typeid = null;
|
|
121
|
-
let tname = null;
|
|
122
|
-
if (type._item === null) {
|
|
123
|
-
tname = Y.findRootTypeKey(type);
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
typeid = Y.createID(type._item.id.client, type._item.id.clock);
|
|
127
|
-
}
|
|
128
|
-
return new Y.RelativePosition(typeid, tname, item.id);
|
|
129
|
-
};
|
|
130
|
-
export const relativePositionToAbsolutePosition = (yDoc, documentType, relPos, mapping) => {
|
|
131
|
-
const decodedPos = Y.createAbsolutePositionFromRelativePosition(relPos, yDoc);
|
|
132
|
-
if (decodedPos === null ||
|
|
133
|
-
(decodedPos.type !== documentType &&
|
|
134
|
-
!Y.isParentOf(documentType, decodedPos.type._item))) {
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
|
-
let type = decodedPos.type;
|
|
138
|
-
let pos = 0;
|
|
139
|
-
if (type instanceof Y.XmlText) {
|
|
140
|
-
pos = decodedPos.index;
|
|
141
|
-
}
|
|
142
|
-
else if (type._item === null || !type._item.deleted) {
|
|
143
|
-
let n = type._first;
|
|
144
|
-
let i = 0;
|
|
145
|
-
while (i < type._length && i < decodedPos.index && n !== null) {
|
|
146
|
-
if (!n.deleted) {
|
|
147
|
-
const t = n.content.type;
|
|
148
|
-
i++;
|
|
149
|
-
if (t instanceof Y.XmlText) {
|
|
150
|
-
pos += t._length;
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
const node = mapping.get(t);
|
|
154
|
-
if (Array.isArray(node)) {
|
|
155
|
-
pos += node.reduce((prev, curr) => prev + curr?.nodeSize || 0, 0);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
pos += node?.nodeSize || 0;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
n = n.right;
|
|
163
|
-
}
|
|
164
|
-
pos += 1; // increase because we go out of n
|
|
165
|
-
}
|
|
166
|
-
while (type !== documentType && type._item !== null) {
|
|
167
|
-
const parent = type._item.parent;
|
|
168
|
-
if (parent instanceof Y.ID || parent === null) {
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
if (parent._item === null || !parent._item.deleted) {
|
|
172
|
-
pos += 1; // the start tag
|
|
173
|
-
let n = /** @type {Y.AbstractType} */ (parent)._first;
|
|
174
|
-
// now iterate until we found type
|
|
175
|
-
while (n !== null) {
|
|
176
|
-
const contentType = n.content.type;
|
|
177
|
-
if (contentType === type) {
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
if (!n.deleted) {
|
|
181
|
-
if (contentType instanceof Y.XmlText) {
|
|
182
|
-
pos += contentType._length;
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
const node = mapping.get(contentType);
|
|
186
|
-
if (Array.isArray(node)) {
|
|
187
|
-
pos += node.reduce((prev, curr) => prev + curr?.nodeSize || 0, 0);
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
pos += node?.nodeSize || 0;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
n = n.right;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
type = parent;
|
|
198
|
-
}
|
|
199
|
-
return pos - 1; // we don't count the most outer tag, because it is a fragment
|
|
200
|
-
};
|
|
1
|
+
export {};
|
|
201
2
|
//# sourceMappingURL=lib.js.map
|
package/esm/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
import { ProsemirrorMapping } from './lib.js';
|
|
3
|
+
/**
|
|
4
|
+
* Transforms a Prosemirror based absolute position to a Yjs Cursor (relative position in the Yjs model).
|
|
5
|
+
*/
|
|
6
|
+
export declare const absolutePositionToRelativePosition: (pos: number, type: Y.XmlFragment, mapping: ProsemirrorMapping) => any;
|
|
7
|
+
export declare const relativePositionToAbsolutePosition: (yDoc: Y.Doc, documentType: Y.XmlFragment, relPos: any, mapping: ProsemirrorMapping) => null | number;
|
|
8
|
+
//# sourceMappingURL=position.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../src/position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,kCAAkC,GAC7C,KAAK,MAAM,EACX,MAAM,CAAC,CAAC,WAAW,EACnB,SAAS,kBAAkB,KAC1B,GA+FF,CAAC;AAaF,eAAO,MAAM,kCAAkC,GAC7C,MAAM,CAAC,CAAC,GAAG,EACX,cAAc,CAAC,CAAC,WAAW,EAC3B,QAAQ,GAAG,EACX,SAAS,kBAAkB,KAC1B,IAAI,GAAG,MAmET,CAAC"}
|
package/esm/position.js
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
/**
|
|
3
|
+
* Transforms a Prosemirror based absolute position to a Yjs Cursor (relative position in the Yjs model).
|
|
4
|
+
*/
|
|
5
|
+
export const absolutePositionToRelativePosition = (pos, type, mapping) => {
|
|
6
|
+
if (pos === 0) {
|
|
7
|
+
// if the type is later populated, we want to retain the 0 position (hence assoc=-1)
|
|
8
|
+
return Y.createRelativePositionFromTypeIndex(type, 0, type.length === 0 ? -1 : 0);
|
|
9
|
+
}
|
|
10
|
+
let n = type._first === null
|
|
11
|
+
? null
|
|
12
|
+
: /** @type {Y.ContentType} */ (type._first.content).type;
|
|
13
|
+
while (n !== null && type !== n) {
|
|
14
|
+
if (n instanceof Y.XmlText) {
|
|
15
|
+
if (n._length >= pos) {
|
|
16
|
+
return Y.createRelativePositionFromTypeIndex(n, pos, type.length === 0 ? -1 : 0);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
pos -= n._length;
|
|
20
|
+
}
|
|
21
|
+
if (n._item !== null && n._item.next !== null) {
|
|
22
|
+
n = /** @type {Y.ContentType} */ (n._item.next.content).type;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
do {
|
|
26
|
+
n = n._item === null ? null : n._item.parent;
|
|
27
|
+
pos--;
|
|
28
|
+
} while (n !== type && n !== null && n._item !== null && n._item.next === null);
|
|
29
|
+
if (n !== null && n !== type) {
|
|
30
|
+
// @ts-gnore we know that n.next !== null because of above loop conditition
|
|
31
|
+
n = n._item === null
|
|
32
|
+
? null
|
|
33
|
+
: /** @type {Y.ContentType} */ ( /** @type Y.Item */(n._item.next)
|
|
34
|
+
.content).type;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const pNodeSize =
|
|
40
|
+
/** @type {any} */ (mapping.get(n) || { nodeSize: 0 }).nodeSize;
|
|
41
|
+
if (n._first !== null && pos < pNodeSize) {
|
|
42
|
+
n = /** @type {Y.ContentType} */ (n._first.content).type;
|
|
43
|
+
pos--;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
if (pos === 1 && n._length === 0 && pNodeSize > 1) {
|
|
47
|
+
// edge case, should end in this paragraph
|
|
48
|
+
return new Y.RelativePosition(n._item === null ? null : n._item.id, n._item === null ? Y.findRootTypeKey(n) : null, null);
|
|
49
|
+
}
|
|
50
|
+
pos -= pNodeSize;
|
|
51
|
+
if (n._item !== null && n._item.next !== null) {
|
|
52
|
+
n = /** @type {Y.ContentType} */ (n._item.next.content).type;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
if (pos === 0) {
|
|
56
|
+
// set to end of n.parent
|
|
57
|
+
n = n._item === null ? n : n._item.parent;
|
|
58
|
+
return new Y.RelativePosition(n._item === null ? null : n._item.id, n._item === null ? Y.findRootTypeKey(n) : null, null);
|
|
59
|
+
}
|
|
60
|
+
do {
|
|
61
|
+
n = n._item.parent;
|
|
62
|
+
pos--;
|
|
63
|
+
} while (n !== type && /** @type {Y.Item} */ (n._item).next === null);
|
|
64
|
+
// if n is null at this point, we have an unexpected case
|
|
65
|
+
if (n !== type) {
|
|
66
|
+
// We know that n._item.next is defined because of above loop condition
|
|
67
|
+
n =
|
|
68
|
+
/** @type {Y.ContentType} */ ( /** @type {Y.Item} */( /** @type {Y.Item} */(n
|
|
69
|
+
._item).next).content).type;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (n === null) {
|
|
75
|
+
throw new Error('Unexpected case');
|
|
76
|
+
}
|
|
77
|
+
if (pos === 0 && n.constructor !== Y.XmlText && n !== type) { // TODO: set to <= 0
|
|
78
|
+
return createRelativePosition(n._item.parent, n._item);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return Y.createRelativePositionFromTypeIndex(type, type._length, type.length === 0 ? -1 : 0);
|
|
82
|
+
};
|
|
83
|
+
const createRelativePosition = (type, item) => {
|
|
84
|
+
let typeid = null;
|
|
85
|
+
let tname = null;
|
|
86
|
+
if (type._item === null) {
|
|
87
|
+
tname = Y.findRootTypeKey(type);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
typeid = Y.createID(type._item.id.client, type._item.id.clock);
|
|
91
|
+
}
|
|
92
|
+
return new Y.RelativePosition(typeid, tname, item.id);
|
|
93
|
+
};
|
|
94
|
+
export const relativePositionToAbsolutePosition = (yDoc, documentType, relPos, mapping) => {
|
|
95
|
+
const decodedPos = Y.createAbsolutePositionFromRelativePosition(relPos, yDoc);
|
|
96
|
+
if (decodedPos === null ||
|
|
97
|
+
(decodedPos.type !== documentType &&
|
|
98
|
+
!Y.isParentOf(documentType, decodedPos.type._item))) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
let type = decodedPos.type;
|
|
102
|
+
let pos = 0;
|
|
103
|
+
if (type instanceof Y.XmlText) {
|
|
104
|
+
pos = decodedPos.index;
|
|
105
|
+
}
|
|
106
|
+
else if (type._item === null || !type._item.deleted) {
|
|
107
|
+
let n = type._first;
|
|
108
|
+
let i = 0;
|
|
109
|
+
while (i < type._length && i < decodedPos.index && n !== null) {
|
|
110
|
+
if (!n.deleted) {
|
|
111
|
+
const t = n.content.type;
|
|
112
|
+
i++;
|
|
113
|
+
if (t instanceof Y.XmlText) {
|
|
114
|
+
pos += t._length;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const node = mapping.get(t);
|
|
118
|
+
if (Array.isArray(node)) {
|
|
119
|
+
pos += node.reduce((prev, curr) => prev + curr?.nodeSize || 0, 0);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
pos += node?.nodeSize || 0;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
n = n.right;
|
|
127
|
+
}
|
|
128
|
+
pos += 1; // increase because we go out of n
|
|
129
|
+
}
|
|
130
|
+
while (type !== documentType && type._item !== null) {
|
|
131
|
+
const parent = type._item.parent;
|
|
132
|
+
if (parent instanceof Y.ID || parent === null) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (parent._item === null || !parent._item.deleted) {
|
|
136
|
+
pos += 1; // the start tag
|
|
137
|
+
let n = /** @type {Y.AbstractType} */ (parent)._first;
|
|
138
|
+
// now iterate until we found type
|
|
139
|
+
while (n !== null) {
|
|
140
|
+
const contentType = n.content.type;
|
|
141
|
+
if (contentType === type) {
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
if (!n.deleted) {
|
|
145
|
+
if (contentType instanceof Y.XmlText) {
|
|
146
|
+
pos += contentType._length;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
const node = mapping.get(contentType);
|
|
150
|
+
if (Array.isArray(node)) {
|
|
151
|
+
pos += node.reduce((prev, curr) => prev + curr?.nodeSize || 0, 0);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
pos += node?.nodeSize || 0;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
n = n.right;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
type = parent;
|
|
162
|
+
}
|
|
163
|
+
return pos - 1; // we don't count the most outer tag, because it is a fragment
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=position.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["../src/position.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
import { EditorState, Transaction } from 'prosemirror-state';
|
|
3
|
+
import { YjsData } from '../binding/PmYjsBinding.js';
|
|
4
|
+
import { ProsemirrorMapping } from '../lib.js';
|
|
5
|
+
import { CoreEditor } from '@kerebron/editor';
|
|
6
|
+
interface TransactionSelection {
|
|
7
|
+
type: string;
|
|
8
|
+
anchor: Y.RelativePosition;
|
|
9
|
+
head: Y.RelativePosition;
|
|
10
|
+
}
|
|
11
|
+
export declare const getRelativeSelection: (xmlFragment: Y.XmlFragment, mapping: ProsemirrorMapping, state: EditorState) => TransactionSelection;
|
|
12
|
+
export declare class SelectionStash {
|
|
13
|
+
private yjs;
|
|
14
|
+
private mapping;
|
|
15
|
+
private editor;
|
|
16
|
+
private readonly beforeAllTransactions;
|
|
17
|
+
private readonly afterAllTransactions;
|
|
18
|
+
private _beforeTransactionSelection;
|
|
19
|
+
private _domSelectionInView;
|
|
20
|
+
constructor(yjs: YjsData, mapping: ProsemirrorMapping, editor: CoreEditor);
|
|
21
|
+
destroy(): void;
|
|
22
|
+
store(): void;
|
|
23
|
+
overwrite(transactionSelection: TransactionSelection): void;
|
|
24
|
+
restore(tr: Transaction): void;
|
|
25
|
+
_isLocalCursorInView(): boolean;
|
|
26
|
+
_isDomSelectionInView(): boolean;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../src/ui/selection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAEL,WAAW,EAIX,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAK/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,CAAC,gBAAgB,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,gBAAgB,CAAC;CAC1B;AA+CD,eAAO,MAAM,oBAAoB,GAC/B,aAAa,CAAC,CAAC,WAAW,EAC1B,SAAS,kBAAkB,EAC3B,OAAO,WAAW,KACjB,oBAYD,CAAC;AAeH,qBAAa,cAAc;IAQvB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IAThB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAa;IAElD,OAAO,CAAC,2BAA2B,CAAqC;IACxE,OAAO,CAAC,mBAAmB,CAAkB;gBAGnC,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,UAAU;IAsB5B,OAAO;IAKP,KAAK;IAQL,SAAS,CAAC,oBAAoB,EAAE,oBAAoB;IAIpD,OAAO,CAAC,EAAE,EAAE,WAAW;IAcvB,oBAAoB,IAAI,OAAO;IAkB/B,qBAAqB,IAAI,OAAO;CAgCjC"}
|