@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.
Files changed (90) hide show
  1. package/esm/ExtensionYjs.d.ts +3 -11
  2. package/esm/ExtensionYjs.d.ts.map +1 -1
  3. package/esm/ExtensionYjs.js +38 -45
  4. package/esm/ExtensionYjs.js.map +1 -1
  5. package/esm/WebsocketProvider.d.ts +69 -0
  6. package/esm/WebsocketProvider.d.ts.map +1 -0
  7. package/esm/WebsocketProvider.js +354 -0
  8. package/esm/WebsocketProvider.js.map +1 -0
  9. package/esm/YjsProvider.d.ts +48 -0
  10. package/esm/YjsProvider.d.ts.map +1 -0
  11. package/esm/YjsProvider.js +12 -0
  12. package/esm/YjsProvider.js.map +1 -0
  13. package/esm/_dnt.shims.d.ts +2 -0
  14. package/esm/_dnt.shims.d.ts.map +1 -0
  15. package/esm/_dnt.shims.js +58 -0
  16. package/esm/_dnt.shims.js.map +1 -0
  17. package/esm/binding/BindingMetadata.d.ts +6 -0
  18. package/esm/binding/BindingMetadata.d.ts.map +1 -0
  19. package/esm/binding/BindingMetadata.js +2 -0
  20. package/esm/binding/BindingMetadata.js.map +1 -0
  21. package/esm/binding/PmYjsBinding.d.ts +41 -0
  22. package/esm/binding/PmYjsBinding.d.ts.map +1 -0
  23. package/esm/binding/PmYjsBinding.js +190 -0
  24. package/esm/binding/PmYjsBinding.js.map +1 -0
  25. package/esm/binding/convertUtils.d.ts +48 -0
  26. package/esm/binding/convertUtils.d.ts.map +1 -0
  27. package/esm/binding/convertUtils.js +80 -0
  28. package/esm/binding/convertUtils.js.map +1 -0
  29. package/esm/{createNodeFromYElement.d.ts → binding/createNodeFromYElement.d.ts} +1 -1
  30. package/esm/binding/createNodeFromYElement.d.ts.map +1 -0
  31. package/esm/{createNodeFromYElement.js → binding/createNodeFromYElement.js} +2 -2
  32. package/esm/binding/createNodeFromYElement.js.map +1 -0
  33. package/esm/{updateYFragment.d.ts → binding/updateYFragment.d.ts} +3 -3
  34. package/esm/binding/updateYFragment.d.ts.map +1 -0
  35. package/esm/{updateYFragment.js → binding/updateYFragment.js} +10 -7
  36. package/esm/binding/updateYFragment.js.map +1 -0
  37. package/esm/lib.d.ts +1 -7
  38. package/esm/lib.d.ts.map +1 -1
  39. package/esm/lib.js +1 -200
  40. package/esm/lib.js.map +1 -1
  41. package/esm/position.d.ts +8 -0
  42. package/esm/position.d.ts.map +1 -0
  43. package/esm/position.js +165 -0
  44. package/esm/position.js.map +1 -0
  45. package/esm/ui/selection.d.ts +29 -0
  46. package/esm/ui/selection.d.ts.map +1 -0
  47. package/esm/ui/selection.js +129 -0
  48. package/esm/ui/selection.js.map +1 -0
  49. package/esm/yPositionPlugin.d.ts +6 -1
  50. package/esm/yPositionPlugin.d.ts.map +1 -1
  51. package/esm/yPositionPlugin.js +91 -50
  52. package/esm/yPositionPlugin.js.map +1 -1
  53. package/esm/ySyncPlugin.d.ts +5 -22
  54. package/esm/ySyncPlugin.d.ts.map +1 -1
  55. package/esm/ySyncPlugin.js +54 -116
  56. package/esm/ySyncPlugin.js.map +1 -1
  57. package/esm/yUndoPlugin.d.ts +11 -10
  58. package/esm/yUndoPlugin.d.ts.map +1 -1
  59. package/esm/yUndoPlugin.js +90 -52
  60. package/esm/yUndoPlugin.js.map +1 -1
  61. package/package.json +9 -6
  62. package/src/ExtensionYjs.ts +55 -67
  63. package/src/WebsocketProvider.ts +516 -0
  64. package/src/YjsProvider.ts +75 -0
  65. package/src/_dnt.shims.ts +60 -0
  66. package/src/binding/BindingMetadata.ts +6 -0
  67. package/src/binding/PmYjsBinding.ts +300 -0
  68. package/src/binding/convertUtils.ts +124 -0
  69. package/src/{createNodeFromYElement.ts → binding/createNodeFromYElement.ts} +3 -3
  70. package/src/{updateYFragment.ts → binding/updateYFragment.ts} +15 -8
  71. package/src/lib.ts +4 -230
  72. package/src/position.ts +191 -0
  73. package/src/ui/selection.ts +216 -0
  74. package/src/yPositionPlugin.ts +122 -74
  75. package/src/ySyncPlugin.ts +87 -170
  76. package/src/yUndoPlugin.ts +113 -62
  77. package/esm/ProsemirrorBinding.d.ts +0 -60
  78. package/esm/ProsemirrorBinding.d.ts.map +0 -1
  79. package/esm/ProsemirrorBinding.js +0 -405
  80. package/esm/ProsemirrorBinding.js.map +0 -1
  81. package/esm/createNodeFromYElement.d.ts.map +0 -1
  82. package/esm/createNodeFromYElement.js.map +0 -1
  83. package/esm/updateYFragment.d.ts.map +0 -1
  84. package/esm/updateYFragment.js.map +0 -1
  85. package/esm/userColors.d.ts +0 -5
  86. package/esm/userColors.d.ts.map +0 -1
  87. package/esm/userColors.js +0 -11
  88. package/esm/userColors.js.map +0 -1
  89. package/src/ProsemirrorBinding.ts +0 -607
  90. 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 './keys.js';
4
- import * as utils from './utils.js';
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.isOMark.has(mark.type.name)) {
13
- meta.isOMark.set(mark.type.name, !mark.type.excludes(mark.type));
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
- }, ySyncPluginKey);
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,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AA2B9E,eAAO,MAAM,OAAO,GAAI,MAAM,UAAU,EAAE,QAAG,EAAE,UAAK,SAYnD,CAAC;AAEF;;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"}
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
- import * as Y from 'yjs';
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":"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"}
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"}
@@ -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"}