@dxos/react-ui-editor 0.3.11-main.9bacd9f → 0.3.11-main.9c729f3

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 (195) hide show
  1. package/dist/lib/browser/index.mjs +1460 -986
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
  5. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +3 -0
  6. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
  7. package/dist/types/src/{hooks/automerge → components/TextEditor}/automerge.stories.d.ts +6 -1
  8. package/dist/types/src/components/TextEditor/automerge.stories.d.ts.map +1 -0
  9. package/dist/types/src/components/TextEditor/codemirror.stories.d.ts.map +1 -1
  10. package/dist/types/src/components/TextEditor/index.d.ts +0 -2
  11. package/dist/types/src/components/TextEditor/index.d.ts.map +1 -1
  12. package/dist/types/src/{hooks/yjs → components/TextEditor}/yjs.stories.d.ts +1 -1
  13. package/dist/types/src/components/TextEditor/yjs.stories.d.ts.map +1 -0
  14. package/dist/types/src/extensions/autocomplete.d.ts.map +1 -0
  15. package/dist/types/src/extensions/automerge/automerge.d.ts +9 -0
  16. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -0
  17. package/dist/types/src/extensions/automerge/cursor.d.ts +5 -0
  18. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -0
  19. package/dist/types/src/extensions/automerge/defs.d.ts +26 -0
  20. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -0
  21. package/dist/types/src/extensions/automerge/index.d.ts +3 -0
  22. package/dist/types/src/extensions/automerge/index.d.ts.map +1 -0
  23. package/dist/types/src/{hooks → extensions}/automerge/semaphore.d.ts +4 -4
  24. package/dist/types/src/extensions/automerge/semaphore.d.ts.map +1 -0
  25. package/dist/types/src/extensions/automerge/update-automerge.d.ts +5 -0
  26. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -0
  27. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +1 -0
  28. package/dist/types/src/extensions/awareness.d.ts +46 -0
  29. package/dist/types/src/extensions/awareness.d.ts.map +1 -0
  30. package/dist/types/src/extensions/basic.d.ts.map +1 -0
  31. package/dist/types/src/extensions/blast.d.ts.map +1 -0
  32. package/dist/types/src/extensions/code.d.ts.map +1 -0
  33. package/dist/types/src/{components/TextEditor/extensions → extensions}/comments.d.ts +4 -2
  34. package/dist/types/src/extensions/comments.d.ts.map +1 -0
  35. package/dist/types/src/extensions/hr.d.ts.map +1 -0
  36. package/dist/types/src/extensions/image.d.ts.map +1 -0
  37. package/dist/types/src/{components/TextEditor/extensions → extensions}/index.d.ts +3 -0
  38. package/dist/types/src/extensions/index.d.ts.map +1 -0
  39. package/dist/types/src/extensions/link.d.ts.map +1 -0
  40. package/dist/types/src/extensions/listener.d.ts.map +1 -0
  41. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -0
  42. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -0
  43. package/dist/types/src/extensions/markdown/index.d.ts.map +1 -0
  44. package/dist/types/src/extensions/mention.d.ts.map +1 -0
  45. package/dist/types/src/extensions/mermaid.d.ts.map +1 -0
  46. package/dist/types/src/extensions/table.d.ts.map +1 -0
  47. package/dist/types/src/extensions/tasklist.d.ts.map +1 -0
  48. package/dist/types/src/extensions/typewriter.d.ts.map +1 -0
  49. package/dist/types/src/extensions/yjs/cursor.d.ts +4 -0
  50. package/dist/types/src/extensions/yjs/cursor.d.ts.map +1 -0
  51. package/dist/types/src/extensions/yjs/index.d.ts +2 -0
  52. package/dist/types/src/extensions/yjs/index.d.ts.map +1 -0
  53. package/dist/types/src/extensions/yjs/yjs.d.ts +4 -0
  54. package/dist/types/src/extensions/yjs/yjs.d.ts.map +1 -0
  55. package/dist/types/src/extensions/yjs/yjs.test.d.ts.map +1 -0
  56. package/dist/types/src/hooks/automerge.d.ts +3 -0
  57. package/dist/types/src/hooks/automerge.d.ts.map +1 -0
  58. package/dist/types/src/hooks/awareness-provider.d.ts +28 -0
  59. package/dist/types/src/hooks/awareness-provider.d.ts.map +1 -0
  60. package/dist/types/src/hooks/index.d.ts +2 -0
  61. package/dist/types/src/hooks/index.d.ts.map +1 -1
  62. package/dist/types/src/hooks/useTextModel.d.ts +9 -8
  63. package/dist/types/src/hooks/useTextModel.d.ts.map +1 -1
  64. package/dist/types/src/hooks/{yjs/space-provider.d.ts → yjs.d.ts} +8 -8
  65. package/dist/types/src/hooks/yjs.d.ts.map +1 -0
  66. package/dist/types/src/index.d.ts +2 -0
  67. package/dist/types/src/index.d.ts.map +1 -1
  68. package/dist/types/src/styles/cursors.d.ts.map +1 -0
  69. package/dist/types/src/styles/index.d.ts +1 -0
  70. package/dist/types/src/styles/index.d.ts.map +1 -1
  71. package/dist/types/src/testing/replicator.d.ts +2 -2
  72. package/dist/types/src/testing/replicator.d.ts.map +1 -1
  73. package/dist/types/src/{components/TextEditor/themes → themes}/default.d.ts +1 -1
  74. package/dist/types/src/themes/default.d.ts.map +1 -0
  75. package/dist/types/src/themes/index.d.ts.map +1 -0
  76. package/dist/types/src/util/cursor.d.ts +17 -0
  77. package/dist/types/src/util/cursor.d.ts.map +1 -0
  78. package/dist/types/src/util/index.d.ts +3 -0
  79. package/dist/types/src/util/index.d.ts.map +1 -0
  80. package/dist/types/src/util/util.d.ts.map +1 -0
  81. package/package.json +22 -21
  82. package/src/components/TextEditor/MarkdownEditor.stories.tsx +1 -1
  83. package/src/components/TextEditor/TextEditor.stories.tsx +14 -1
  84. package/src/components/TextEditor/TextEditor.tsx +3 -3
  85. package/src/{hooks/automerge → components/TextEditor}/automerge.stories.tsx +66 -6
  86. package/src/components/TextEditor/codemirror.stories.ts +3 -2
  87. package/src/components/TextEditor/index.ts +0 -3
  88. package/src/{hooks/yjs → components/TextEditor}/yjs.stories.tsx +1 -1
  89. package/src/extensions/automerge/automerge.ts +94 -0
  90. package/src/extensions/automerge/cursor.ts +51 -0
  91. package/src/extensions/automerge/defs.ts +62 -0
  92. package/src/extensions/automerge/index.ts +6 -0
  93. package/src/{hooks → extensions}/automerge/semaphore.ts +14 -12
  94. package/src/{hooks → extensions}/automerge/update-automerge.ts +5 -6
  95. package/src/{hooks → extensions}/automerge/update-codemirror.ts +13 -5
  96. package/src/extensions/awareness.ts +316 -0
  97. package/src/{components/TextEditor/extensions → extensions}/code.ts +1 -1
  98. package/src/{components/TextEditor/extensions → extensions}/comments.ts +51 -19
  99. package/src/{components/TextEditor/extensions → extensions}/hr.ts +1 -1
  100. package/src/{components/TextEditor/extensions → extensions}/index.ts +3 -0
  101. package/src/{components/TextEditor/extensions → extensions}/markdown/highlight.ts +1 -1
  102. package/src/{components/TextEditor/extensions → extensions}/typewriter.ts +1 -1
  103. package/src/extensions/yjs/cursor.ts +21 -0
  104. package/src/extensions/yjs/index.ts +5 -0
  105. package/src/{hooks → extensions}/yjs/yjs.test.ts +1 -25
  106. package/src/extensions/yjs/yjs.ts +16 -0
  107. package/src/hooks/automerge.ts +52 -0
  108. package/src/hooks/awareness-provider.ts +120 -0
  109. package/src/hooks/index.ts +2 -0
  110. package/src/hooks/useTextModel.ts +20 -93
  111. package/src/hooks/{yjs/space-provider.ts → yjs.ts} +71 -19
  112. package/src/index.ts +2 -0
  113. package/src/styles/index.ts +1 -0
  114. package/src/testing/replicator.ts +10 -15
  115. package/src/{components/TextEditor/themes → themes}/default.ts +1 -1
  116. package/src/util/cursor.ts +29 -0
  117. package/src/util/index.ts +6 -0
  118. package/dist/types/src/components/TextEditor/extensions/autocomplete.d.ts.map +0 -1
  119. package/dist/types/src/components/TextEditor/extensions/basic.d.ts.map +0 -1
  120. package/dist/types/src/components/TextEditor/extensions/blast.d.ts.map +0 -1
  121. package/dist/types/src/components/TextEditor/extensions/code.d.ts.map +0 -1
  122. package/dist/types/src/components/TextEditor/extensions/comments.d.ts.map +0 -1
  123. package/dist/types/src/components/TextEditor/extensions/hr.d.ts.map +0 -1
  124. package/dist/types/src/components/TextEditor/extensions/image.d.ts.map +0 -1
  125. package/dist/types/src/components/TextEditor/extensions/index.d.ts.map +0 -1
  126. package/dist/types/src/components/TextEditor/extensions/link.d.ts.map +0 -1
  127. package/dist/types/src/components/TextEditor/extensions/listener.d.ts.map +0 -1
  128. package/dist/types/src/components/TextEditor/extensions/markdown/bundle.d.ts.map +0 -1
  129. package/dist/types/src/components/TextEditor/extensions/markdown/highlight.d.ts.map +0 -1
  130. package/dist/types/src/components/TextEditor/extensions/markdown/index.d.ts.map +0 -1
  131. package/dist/types/src/components/TextEditor/extensions/mention.d.ts.map +0 -1
  132. package/dist/types/src/components/TextEditor/extensions/mermaid.d.ts.map +0 -1
  133. package/dist/types/src/components/TextEditor/extensions/table.d.ts.map +0 -1
  134. package/dist/types/src/components/TextEditor/extensions/tasklist.d.ts.map +0 -1
  135. package/dist/types/src/components/TextEditor/extensions/typewriter.d.ts.map +0 -1
  136. package/dist/types/src/components/TextEditor/extensions/util.d.ts.map +0 -1
  137. package/dist/types/src/components/TextEditor/themes/default.d.ts.map +0 -1
  138. package/dist/types/src/components/TextEditor/themes/index.d.ts.map +0 -1
  139. package/dist/types/src/hooks/automerge/automerge.stories.d.ts.map +0 -1
  140. package/dist/types/src/hooks/automerge/handle.d.ts +0 -9
  141. package/dist/types/src/hooks/automerge/handle.d.ts.map +0 -1
  142. package/dist/types/src/hooks/automerge/index.d.ts +0 -3
  143. package/dist/types/src/hooks/automerge/index.d.ts.map +0 -1
  144. package/dist/types/src/hooks/automerge/plugin.d.ts +0 -26
  145. package/dist/types/src/hooks/automerge/plugin.d.ts.map +0 -1
  146. package/dist/types/src/hooks/automerge/semaphore.d.ts.map +0 -1
  147. package/dist/types/src/hooks/automerge/update-automerge.d.ts +0 -6
  148. package/dist/types/src/hooks/automerge/update-automerge.d.ts.map +0 -1
  149. package/dist/types/src/hooks/automerge/update-codemirror.d.ts.map +0 -1
  150. package/dist/types/src/hooks/yjs/cursors.d.ts.map +0 -1
  151. package/dist/types/src/hooks/yjs/index.d.ts +0 -3
  152. package/dist/types/src/hooks/yjs/index.d.ts.map +0 -1
  153. package/dist/types/src/hooks/yjs/space-provider.d.ts.map +0 -1
  154. package/dist/types/src/hooks/yjs/yjs.stories.d.ts.map +0 -1
  155. package/dist/types/src/hooks/yjs/yjs.test.d.ts.map +0 -1
  156. package/src/hooks/automerge/handle.ts +0 -14
  157. package/src/hooks/automerge/index.ts +0 -6
  158. package/src/hooks/automerge/plugin.ts +0 -134
  159. package/src/hooks/yjs/index.ts +0 -6
  160. /package/dist/types/src/{components/TextEditor/extensions → extensions}/autocomplete.d.ts +0 -0
  161. /package/dist/types/src/{hooks → extensions}/automerge/update-codemirror.d.ts +0 -0
  162. /package/dist/types/src/{components/TextEditor/extensions → extensions}/basic.d.ts +0 -0
  163. /package/dist/types/src/{components/TextEditor/extensions → extensions}/blast.d.ts +0 -0
  164. /package/dist/types/src/{components/TextEditor/extensions → extensions}/code.d.ts +0 -0
  165. /package/dist/types/src/{components/TextEditor/extensions → extensions}/hr.d.ts +0 -0
  166. /package/dist/types/src/{components/TextEditor/extensions → extensions}/image.d.ts +0 -0
  167. /package/dist/types/src/{components/TextEditor/extensions → extensions}/link.d.ts +0 -0
  168. /package/dist/types/src/{components/TextEditor/extensions → extensions}/listener.d.ts +0 -0
  169. /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/bundle.d.ts +0 -0
  170. /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/highlight.d.ts +0 -0
  171. /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/index.d.ts +0 -0
  172. /package/dist/types/src/{components/TextEditor/extensions → extensions}/mention.d.ts +0 -0
  173. /package/dist/types/src/{components/TextEditor/extensions → extensions}/mermaid.d.ts +0 -0
  174. /package/dist/types/src/{components/TextEditor/extensions → extensions}/table.d.ts +0 -0
  175. /package/dist/types/src/{components/TextEditor/extensions → extensions}/tasklist.d.ts +0 -0
  176. /package/dist/types/src/{components/TextEditor/extensions → extensions}/typewriter.d.ts +0 -0
  177. /package/dist/types/src/{hooks → extensions}/yjs/yjs.test.d.ts +0 -0
  178. /package/dist/types/src/{hooks/yjs → styles}/cursors.d.ts +0 -0
  179. /package/dist/types/src/{components/TextEditor/themes → themes}/index.d.ts +0 -0
  180. /package/dist/types/src/{components/TextEditor/extensions → util}/util.d.ts +0 -0
  181. /package/src/{components/TextEditor/extensions → extensions}/autocomplete.ts +0 -0
  182. /package/src/{components/TextEditor/extensions → extensions}/basic.ts +0 -0
  183. /package/src/{components/TextEditor/extensions → extensions}/blast.ts +0 -0
  184. /package/src/{components/TextEditor/extensions → extensions}/image.ts +0 -0
  185. /package/src/{components/TextEditor/extensions → extensions}/link.ts +0 -0
  186. /package/src/{components/TextEditor/extensions → extensions}/listener.ts +0 -0
  187. /package/src/{components/TextEditor/extensions → extensions}/markdown/bundle.ts +0 -0
  188. /package/src/{components/TextEditor/extensions → extensions}/markdown/index.ts +0 -0
  189. /package/src/{components/TextEditor/extensions → extensions}/mention.ts +0 -0
  190. /package/src/{components/TextEditor/extensions → extensions}/mermaid.ts +0 -0
  191. /package/src/{components/TextEditor/extensions → extensions}/table.ts +0 -0
  192. /package/src/{components/TextEditor/extensions → extensions}/tasklist.ts +0 -0
  193. /package/src/{hooks/yjs → styles}/cursors.ts +0 -0
  194. /package/src/{components/TextEditor/themes → themes}/index.ts +0 -0
  195. /package/src/{components/TextEditor/extensions → util}/util.ts +0 -0
@@ -5,14 +5,62 @@
5
5
  import * as decoding from 'lib0/decoding';
6
6
  import * as encoding from 'lib0/encoding';
7
7
  import { Observable } from 'lib0/observable';
8
- import * as awarenessProtocol from 'y-protocols/awareness';
8
+ import * as YP from 'y-protocols/awareness';
9
+ import * as Y from 'yjs';
9
10
  import { type Doc } from 'yjs';
10
11
 
12
+ import { invariant } from '@dxos/invariant';
11
13
  import { log } from '@dxos/log';
12
14
  import { type Space } from '@dxos/react-client/echo';
13
15
  import { type GossipMessage } from '@dxos/react-client/mesh';
14
-
15
- type Awareness = awarenessProtocol.Awareness;
16
+ import type { YText } from '@dxos/text-model';
17
+ import { arrayToString, stringToArray } from '@dxos/util';
18
+
19
+ import { type EditorModel, modelState, type Range, type UseTextModelProps } from './useTextModel';
20
+ import { yjs } from '../extensions';
21
+
22
+ export const createYjsModel = ({ identity, space, text }: UseTextModelProps): EditorModel => {
23
+ invariant(text?.doc && text?.content);
24
+ const provider = space
25
+ ? new YAwarenessProvider({ space, doc: text.doc, channel: `yjs.awareness.${text.id}` })
26
+ : undefined;
27
+
28
+ const model: EditorModel = {
29
+ id: text.doc.guid,
30
+ content: text.content,
31
+ text: () => text.content!.toString(),
32
+ // https://github.com/yjs/yjs?tab=readme-ov-file#relative-positions
33
+ // TODO(dmaretskyi): Refactor as cursor-converter.
34
+ getCursorFromRange: (range: Range) => {
35
+ const from = Y.encodeRelativePosition(Y.createRelativePositionFromTypeIndex(text.content as YText, range.from));
36
+ const to = Y.encodeRelativePosition(Y.createRelativePositionFromTypeIndex(text.content as YText, range.to, -1));
37
+ return [arrayToString(from), arrayToString(to)].join(':');
38
+ },
39
+ getRangeFromCursor: (cursor: string) => {
40
+ invariant(text.doc);
41
+ const parts = cursor.split(':');
42
+ const from = Y.createAbsolutePositionFromRelativePosition(
43
+ Y.decodeRelativePosition(stringToArray(parts[0])),
44
+ text.doc,
45
+ );
46
+ const to = Y.createAbsolutePositionFromRelativePosition(
47
+ Y.decodeRelativePosition(stringToArray(parts[1])),
48
+ text.doc,
49
+ );
50
+ return from && to ? { from: from.index, to: to.index } : undefined;
51
+ },
52
+ extension: [modelState.init(() => model), yjs(text.content as YText, provider?.awareness)],
53
+ awareness: provider?.awareness,
54
+ peer: identity
55
+ ? {
56
+ id: identity.identityKey.toHex(),
57
+ name: identity.profile?.displayName,
58
+ }
59
+ : undefined,
60
+ };
61
+
62
+ return model;
63
+ };
16
64
 
17
65
  // Based on https://github.com/yjs/y-webrtc/blob/88baab2/src/y-webrtc.js.
18
66
 
@@ -22,16 +70,26 @@ const messageQueryAwareness = 3;
22
70
  /**
23
71
  * Yjs awareness provider on top of a DXOS space.
24
72
  */
25
- export class SpaceAwarenessProvider extends Observable<any> {
73
+ export class YAwarenessProvider extends Observable<any> {
26
74
  private readonly _space: Space;
27
- private readonly _awareness: Awareness;
75
+ private readonly _awareness: YP.Awareness;
28
76
  private readonly _clientId: number;
29
77
  private readonly _channel: string;
30
78
 
31
- constructor({ space, doc, channel, awareness }: { space: Space; doc: Doc; channel: string; awareness?: Awareness }) {
79
+ constructor({
80
+ space,
81
+ doc,
82
+ channel,
83
+ awareness,
84
+ }: {
85
+ space: Space;
86
+ doc: Doc;
87
+ channel: string;
88
+ awareness?: YP.Awareness;
89
+ }) {
32
90
  super();
33
91
  this._space = space;
34
- this._awareness = awareness ?? new awarenessProtocol.Awareness(doc);
92
+ this._awareness = awareness ?? new YP.Awareness(doc);
35
93
  this._channel = channel;
36
94
  this._clientId = doc.clientID;
37
95
 
@@ -52,14 +110,11 @@ export class SpaceAwarenessProvider extends Observable<any> {
52
110
  // Post local awareness state.
53
111
  const encoderAwarenessState = encoding.createEncoder();
54
112
  encoding.writeVarUint(encoderAwarenessState, messageAwareness);
55
- encoding.writeVarUint8Array(
56
- encoderAwarenessState,
57
- awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this._clientId]),
58
- );
113
+ encoding.writeVarUint8Array(encoderAwarenessState, YP.encodeAwarenessUpdate(this.awareness, [this._clientId]));
59
114
  void this._space.postMessage(this._channel, encoding.toUint8Array(encoderAwarenessState));
60
115
  }
61
116
 
62
- get awareness(): Awareness {
117
+ get awareness(): YP.Awareness {
63
118
  return this._awareness;
64
119
  }
65
120
 
@@ -68,10 +123,7 @@ export class SpaceAwarenessProvider extends Observable<any> {
68
123
  const changedClients = added.concat(updated).concat(removed);
69
124
  const encoderAwareness = encoding.createEncoder();
70
125
  encoding.writeVarUint(encoderAwareness, messageAwareness);
71
- encoding.writeVarUint8Array(
72
- encoderAwareness,
73
- awarenessProtocol.encodeAwarenessUpdate(this._awareness, changedClients),
74
- );
126
+ encoding.writeVarUint8Array(encoderAwareness, YP.encodeAwarenessUpdate(this._awareness, changedClients));
75
127
  void this._space.postMessage(this._channel, encoding.toUint8Array(encoderAwareness));
76
128
  }
77
129
 
@@ -92,7 +144,7 @@ export class SpaceAwarenessProvider extends Observable<any> {
92
144
  let sendReply = false;
93
145
  switch (messageType) {
94
146
  case messageAwareness: {
95
- awarenessProtocol.applyAwarenessUpdate(this._awareness, decoding.readVarUint8Array(decoder), this);
147
+ YP.applyAwarenessUpdate(this._awareness, decoding.readVarUint8Array(decoder), this);
96
148
  break;
97
149
  }
98
150
 
@@ -100,7 +152,7 @@ export class SpaceAwarenessProvider extends Observable<any> {
100
152
  encoding.writeVarUint(encoder, messageAwareness);
101
153
  encoding.writeVarUint8Array(
102
154
  encoder,
103
- awarenessProtocol.encodeAwarenessUpdate(this._awareness, Array.from(this._awareness.getStates().keys())),
155
+ YP.encodeAwarenessUpdate(this._awareness, Array.from(this._awareness.getStates().keys())),
104
156
  );
105
157
  sendReply = true;
106
158
  break;
@@ -121,6 +173,6 @@ export class SpaceAwarenessProvider extends Observable<any> {
121
173
  }
122
174
 
123
175
  private _handleBeforeUnload() {
124
- awarenessProtocol.removeAwarenessStates(this._awareness, [this._clientId], 'window unload');
176
+ YP.removeAwarenessStates(this._awareness, [this._clientId], 'window unload');
125
177
  }
126
178
  }
package/src/index.ts CHANGED
@@ -7,4 +7,6 @@ export { Doc, YText, YXmlFragment } from '@dxos/text-model';
7
7
  export { type Extension } from '@codemirror/state';
8
8
 
9
9
  export * from './components';
10
+ export * from './extensions';
10
11
  export * from './hooks';
12
+ export * from './themes';
@@ -2,5 +2,6 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ export * from './cursors';
5
6
  export * from './markdown';
6
7
  export * from './tokens';
@@ -7,7 +7,7 @@ import * as decoding from 'lib0/decoding';
7
7
  import * as encoding from 'lib0/encoding';
8
8
  import { Observable } from 'lib0/observable';
9
9
  import { useMemo } from 'react';
10
- import * as awarenessProtocol from 'y-protocols/awareness';
10
+ import * as YP from 'y-protocols/awareness';
11
11
  import * as syncProtocol from 'y-protocols/sync';
12
12
  import { Doc } from 'yjs';
13
13
 
@@ -15,9 +15,10 @@ import { Event } from '@dxos/async';
15
15
  import { log } from '@dxos/log';
16
16
  import { TextKind } from '@dxos/protocols/proto/dxos/echo/model/text';
17
17
 
18
- import { cursorColor, type EditorModel } from '../hooks';
18
+ import { type EditorModel } from '../hooks';
19
+ import { cursorColor } from '../styles';
19
20
 
20
- type Awareness = awarenessProtocol.Awareness;
21
+ type Awareness = YP.Awareness;
21
22
 
22
23
  const messageSync = 0;
23
24
  const messageAwareness = 1;
@@ -35,7 +36,7 @@ export class AwarenessProvider extends Observable<any> {
35
36
  super();
36
37
  this._remoteUpdate = update;
37
38
  this._doc = doc;
38
- this._awareness = awareness ?? new awarenessProtocol.Awareness(doc);
39
+ this._awareness = awareness ?? new YP.Awareness(doc);
39
40
 
40
41
  this._doc.on('update', this._handleDocUpdate.bind(this));
41
42
  this._awareness.on('update', this._handleAwarenessUpdate.bind(this));
@@ -55,10 +56,7 @@ export class AwarenessProvider extends Observable<any> {
55
56
  // Post local awareness state.
56
57
  const encoderAwarenessState = encoding.createEncoder();
57
58
  encoding.writeVarUint(encoderAwarenessState, messageAwareness);
58
- encoding.writeVarUint8Array(
59
- encoderAwarenessState,
60
- awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this._doc.clientID]),
61
- );
59
+ encoding.writeVarUint8Array(encoderAwarenessState, YP.encodeAwarenessUpdate(this.awareness, [this._doc.clientID]));
62
60
  void this._remoteUpdate.emit(encoding.toUint8Array(encoderAwarenessState));
63
61
  }
64
62
 
@@ -79,10 +77,7 @@ export class AwarenessProvider extends Observable<any> {
79
77
  const changedClients = added.concat(updated).concat(removed);
80
78
  const encoderAwareness = encoding.createEncoder();
81
79
  encoding.writeVarUint(encoderAwareness, messageAwareness);
82
- encoding.writeVarUint8Array(
83
- encoderAwareness,
84
- awarenessProtocol.encodeAwarenessUpdate(this._awareness, changedClients),
85
- );
80
+ encoding.writeVarUint8Array(encoderAwareness, YP.encodeAwarenessUpdate(this._awareness, changedClients));
86
81
  this._remoteUpdate.emit(encoding.toUint8Array(encoderAwareness));
87
82
  }
88
83
 
@@ -109,7 +104,7 @@ export class AwarenessProvider extends Observable<any> {
109
104
  }
110
105
 
111
106
  case messageAwareness: {
112
- awarenessProtocol.applyAwarenessUpdate(this._awareness, decoding.readVarUint8Array(decoder), this);
107
+ YP.applyAwarenessUpdate(this._awareness, decoding.readVarUint8Array(decoder), this);
113
108
  break;
114
109
  }
115
110
 
@@ -117,7 +112,7 @@ export class AwarenessProvider extends Observable<any> {
117
112
  encoding.writeVarUint(encoder, messageAwareness);
118
113
  encoding.writeVarUint8Array(
119
114
  encoder,
120
- awarenessProtocol.encodeAwarenessUpdate(this._awareness, Array.from(this._awareness.getStates().keys())),
115
+ YP.encodeAwarenessUpdate(this._awareness, Array.from(this._awareness.getStates().keys())),
121
116
  );
122
117
  sendReply = true;
123
118
  break;
@@ -138,7 +133,7 @@ export class AwarenessProvider extends Observable<any> {
138
133
  }
139
134
 
140
135
  private _handleBeforeUnload() {
141
- awarenessProtocol.removeAwarenessStates(this._awareness, [this._doc.clientID], 'window unload');
136
+ YP.removeAwarenessStates(this._awareness, [this._doc.clientID], 'window unload');
142
137
  }
143
138
  }
144
139
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  import get from 'lodash.get';
6
6
 
7
- import { type ThemeStyles, tokens } from '../../../styles';
7
+ import { type ThemeStyles, tokens } from '../styles';
8
8
 
9
9
  // TODO(burdon): Can we erase All of the default CM styles?
10
10
  // TODO(burdon): Theme styles seem to be added multiple times?
@@ -0,0 +1,29 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { Facet } from '@codemirror/state';
6
+
7
+ /**
8
+ * Converts indexes into the text document into stable peer-independent cursors.
9
+ *
10
+ * See:
11
+ * - https://automerge.org/automerge/api-docs/js/functions/next.getCursor.html
12
+ * - https://github.com/yjs/yjs?tab=readme-ov-file#relative-positions
13
+ *
14
+ * @param {assoc} number Negative values will associate the cursor with the previous character
15
+ * while positive - with the next one.
16
+ */
17
+ export interface CursorConverter {
18
+ toCursor(position: number, assoc?: -1 | 1 | undefined): string;
19
+ fromCursor(cursor: string): number;
20
+ }
21
+
22
+ const DEFAULT_CURSOR_CONVERTER: CursorConverter = {
23
+ toCursor: (position) => position.toString(),
24
+ fromCursor: (cursor) => parseInt(cursor),
25
+ };
26
+
27
+ export const CursorConverter = Facet.define<CursorConverter, CursorConverter>({
28
+ combine: (providers) => providers[0] ?? DEFAULT_CURSOR_CONVERTER,
29
+ });
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './cursor';
6
+ export * from './util';
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/autocomplete.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,UAAU,EAGhB,MAAM,0BAA0B,CAAC;AAGlC,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,iBAAkB,mBAAmB,4CAgC7D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/basic.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,WAAW,uDAAwD,kBAAkB,KAAG,SAAS,EAa5E,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blast.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/blast.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMnD,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,gBAAgB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,qBAAqB,EAAE;QAAE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IACpE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YAU5B,CAAC;AAEF,eAAO,MAAM,KAAK,aAAa,QAAQ,YAAY,CAAC,KAAoB,SAmEvE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/code.ts"],"names":[],"mappings":"AAuDA,eAAO,MAAM,IAAI,+CA2ChB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/comments.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAA2B,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAWL,KAAK,IAAI,EACV,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAc,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AA+B7F,KAAK,eAAe,GAAG;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAGF,KAAK,oBAAoB,GAAG,KAAK,GAC/B,YAAY,GAAG;IAEb,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,CAAC;AAEJ,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG;IAC5C,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,eAAe;WAA+B,WAAW;cAAY,YAAY,EAAE;EAAK,CAAC;AA+FtG,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACjD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,aAAa,eAAe,KAAQ,SA+LxD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hr.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/hr.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,EAAE,+CAsBd,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/image.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,mBAAmB,CAAC;AAG3B,MAAM,MAAM,YAAY,GAAG,EAAE,CAAC;AAE9B,eAAO,MAAM,KAAK,aAAa,YAAY,KAAQ,SAMlD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/link.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,mBAAmB,CAAC;AAW3B,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,IAAI,aAAa,WAAW,KAAQ,SAyDhD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/listener.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,0BAA2B,eAAe,KAAG,SAmBjE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/TextEditor/extensions/markdown/bundle.ts"],"names":[],"mappings":"AAUA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAYhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AAEH,eAAO,MAAM,cAAc,wDAIxB,qBAAqB,KAAG,SAAS,EA6CnC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/TextEditor/extensions/markdown/highlight.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAmB,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,KAAK,cAAc,EAAS,MAAM,iBAAiB,CAAC;AAgB7D;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAgBxB,CAAC;AAaF,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAKlD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,cAAe,OAAO,mBAgIxD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/TextEditor/extensions/markdown/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mention.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/mention.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,OAAO,iBAAkB,cAAc,KAAG,SAmBtD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mermaid.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/mermaid.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,eAAO,MAAM,OAAO,QAAO,SAE1B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/table.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,KAAK,QAAQ,EAAmB,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AASnH,MAAM,MAAM,YAAY,GAAG,EAAE,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,KAAK,aAAa,YAAY,8BAM1C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tasklist.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/tasklist.ts"],"names":[],"mappings":"AA+DA,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC;AAEjC,eAAO,MAAM,QAAQ,aAAa,eAAe,4CAuDhD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"typewriter.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/typewriter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,UAAU,sBAA0C,WAAW,KAAQ,SAgDnF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/util.ts"],"names":[],"mappings":"AAMA;;GAEG;AAEH,eAAO,MAAM,eAAe,kCAOR,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/themes/default.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,iBAAiB,CAAC;AAK3D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,EAAE,WA8P1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAK3B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/themes/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"automerge.stories.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/automerge/automerge.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,uBAAuB,CAAC;AAQ/B,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,IAAI,EAAE,CAAC;CACd,CAAC;;;;;;AA+DF,wBAIE;AAEF,eAAO,MAAM,OAAO,IAAK,CAAC"}
@@ -1,9 +0,0 @@
1
- import type * as A from '@dxos/automerge/automerge';
2
- export type IDocHandle<T = any> = {
3
- docSync(): A.Doc<T> | undefined;
4
- change(callback: A.ChangeFn<T>, options?: A.ChangeOptions<T>): void;
5
- changeAt(heads: A.Heads, callback: A.ChangeFn<T>, options?: A.ChangeOptions<T>): string[] | undefined;
6
- addListener(event: 'change', listener: () => void): void;
7
- removeListener(event: 'change', listener: () => void): void;
8
- };
9
- //# sourceMappingURL=handle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/automerge/handle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,CAAC,MAAM,2BAA2B,CAAC;AAEpD,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,GAAG,IAAI;IAChC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACpE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IAEtG,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACzD,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAC7D,CAAC"}
@@ -1,3 +0,0 @@
1
- export { type IDocHandle } from './handle';
2
- export { automergePlugin, type AutomergePlugin } from './plugin';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/automerge/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC"}
@@ -1,26 +0,0 @@
1
- import { type EditorState, type Extension, StateEffect, StateField, type Transaction, type TransactionSpec } from '@codemirror/state';
2
- import * as automerge from '@dxos/automerge/automerge';
3
- import { type Heads, type Prop } from '@dxos/automerge/automerge';
4
- import { type IDocHandle } from './handle';
5
- export type Value = {
6
- lastHeads: Heads;
7
- path: Prop[];
8
- unreconciledTransactions: Transaction[];
9
- };
10
- type UpdateHeads = {
11
- newHeads: Heads;
12
- };
13
- export declare const effectType: import("@codemirror/state").StateEffectType<UpdateHeads>;
14
- export declare const updateHeads: (newHeads: automerge.next.Heads) => StateEffect<UpdateHeads>;
15
- export declare const getLastHeads: (state: EditorState, field: Field) => automerge.next.Heads;
16
- export declare const getPath: (state: EditorState, field: Field) => Prop[];
17
- export type Field = StateField<Value>;
18
- export type AutomergePlugin = {
19
- extension: Extension;
20
- };
21
- export declare const automergePlugin: (handle: IDocHandle, path: Prop[]) => AutomergePlugin;
22
- export declare const reconcileAnnotationType: import("@codemirror/state").AnnotationType<unknown>;
23
- export declare const isReconcileTx: (tr: Transaction) => boolean;
24
- export declare const makeReconcile: (tr: TransactionSpec) => void;
25
- export {};
26
- //# sourceMappingURL=plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/automerge/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EAEd,WAAW,EACX,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,wBAAwB,EAAE,WAAW,EAAE,CAAC;CACzC,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,KAAK,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,UAAU,0DAAsC,CAAC;AAE9D,eAAO,MAAM,WAAW,sCAAsB,YAAY,WAAW,CAAgC,CAAC;AAEtG,eAAO,MAAM,YAAY,UAAW,WAAW,uCAAsD,CAAC;AAEtG,eAAO,MAAM,OAAO,UAAW,WAAW,mBAAiB,IAAI,EAA6B,CAAC;AAE7F,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAMtC,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,UAAU,QAAQ,IAAI,EAAE,KAAG,eA+DlE,CAAC;AAEF,eAAO,MAAM,uBAAuB,qDAA+B,CAAC;AAEpE,eAAO,MAAM,aAAa,OAAQ,WAAW,KAAG,OAAmD,CAAC;AAEpG,eAAO,MAAM,aAAa,OAAQ,eAAe,SAchD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"semaphore.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/automerge/semaphore.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,KAAK,KAAK,EAA8E,MAAM,UAAU,CAAC;AAIlH,KAAK,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,KAAK,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAE7B,KAAK,QAAQ,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,SAAS,CAAC;AAE3F;;GAEG;AACH,qBAAa,cAAc;IACzB,MAAM,EAAG,KAAK,CAAC;IACf,YAAY,UAAS;IACrB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAM;gBAEjB,KAAK,CAAC,EAAE,KAAK;IAMzB,SAAS,WAAY,UAAU,QAAQ,UAAU,UA0C/C;CACH"}
@@ -1,6 +0,0 @@
1
- import { type EditorState, type Transaction } from '@codemirror/state';
2
- import { type Heads } from '@dxos/automerge/automerge';
3
- import { type IDocHandle } from './handle';
4
- import { type Field } from './plugin';
5
- export declare const updateAutomerge: (field: Field, handle: IDocHandle, transactions: Transaction[], state: EditorState) => Heads | undefined;
6
- //# sourceMappingURL=update-automerge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-automerge.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/automerge/update-automerge.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,WAAW,EAAa,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElF,OAAO,EAAc,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,eAAO,MAAM,eAAe,yBAElB,UAAU,gBACJ,WAAW,EAAE,SACpB,WAAW,KACjB,KAAK,GAAG,SAyBV,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-codemirror.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/automerge/update-codemirror.ts"],"names":[],"mappings":"AAMA,OAAO,EAA8B,KAAK,eAAe,EAAoB,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,IAAI,EAGV,MAAM,2BAA2B,CAAC;AAInC,eAAO,MAAM,gBAAgB,SAAU,UAAU,aAAa,eAAe,UAAU,IAAI,EAAE,WAAW,KAAK,EAAE,SAiB9G,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursors.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/yjs/cursors.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,WAAW;;;CAAsD,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './cursors';
2
- export * from './space-provider';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/yjs/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"space-provider.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/yjs/space-provider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAG/B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGrD,KAAK,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAO7C;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,UAAU,CAAC,GAAG,CAAC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE;IA+BlH,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,mBAAmB;CAG5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"yjs.stories.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/yjs/yjs.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAEpB,OAAO,KAAmB,MAAM,OAAO,CAAC;;;;;;AAWxC,wBAIE;AA+BF,eAAO,MAAM,OAAO;;CAGnB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"yjs.test.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/yjs/yjs.test.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import type * as A from '@dxos/automerge/automerge';
6
-
7
- export type IDocHandle<T = any> = {
8
- docSync(): A.Doc<T> | undefined;
9
- change(callback: A.ChangeFn<T>, options?: A.ChangeOptions<T>): void;
10
- changeAt(heads: A.Heads, callback: A.ChangeFn<T>, options?: A.ChangeOptions<T>): string[] | undefined;
11
-
12
- addListener(event: 'change', listener: () => void): void;
13
- removeListener(event: 'change', listener: () => void): void;
14
- };
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- export { type IDocHandle } from './handle';
6
- export { automergePlugin, type AutomergePlugin } from './plugin';