@dxos/react-ui-editor 0.3.10 → 0.3.11-main.008b7c6

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 (211) hide show
  1. package/dist/lib/browser/index.mjs +1537 -847
  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/MarkdownEditor.stories.d.ts +14 -10
  5. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +1 -1
  6. package/dist/types/src/components/TextEditor/TextEditor.d.ts +3 -2
  7. package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
  8. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +3 -0
  9. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
  10. package/dist/types/src/{hooks/automerge → components/TextEditor}/automerge.stories.d.ts +6 -2
  11. package/dist/types/src/components/TextEditor/automerge.stories.d.ts.map +1 -0
  12. package/dist/types/src/components/TextEditor/codemirror.stories.d.ts.map +1 -1
  13. package/dist/types/src/components/TextEditor/index.d.ts +0 -2
  14. package/dist/types/src/components/TextEditor/index.d.ts.map +1 -1
  15. package/dist/types/src/{hooks/yjs → components/TextEditor}/yjs.stories.d.ts +1 -1
  16. package/dist/types/src/components/TextEditor/yjs.stories.d.ts.map +1 -0
  17. package/dist/types/src/extensions/autocomplete.d.ts.map +1 -0
  18. package/dist/types/src/extensions/automerge/automerge.d.ts +9 -0
  19. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -0
  20. package/dist/types/src/extensions/automerge/cursor.d.ts +5 -0
  21. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -0
  22. package/dist/types/src/extensions/automerge/defs.d.ts +26 -0
  23. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -0
  24. package/dist/types/src/extensions/automerge/index.d.ts +3 -0
  25. package/dist/types/src/extensions/automerge/index.d.ts.map +1 -0
  26. package/dist/types/src/{hooks/automerge/PatchSemaphore.d.ts → extensions/automerge/semaphore.d.ts} +5 -5
  27. package/dist/types/src/extensions/automerge/semaphore.d.ts.map +1 -0
  28. package/dist/types/src/extensions/automerge/update-automerge.d.ts +5 -0
  29. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -0
  30. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +5 -0
  31. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +1 -0
  32. package/dist/types/src/extensions/awareness.d.ts +46 -0
  33. package/dist/types/src/extensions/awareness.d.ts.map +1 -0
  34. package/dist/types/src/extensions/basic.d.ts.map +1 -0
  35. package/dist/types/src/extensions/blast.d.ts.map +1 -0
  36. package/dist/types/src/extensions/code.d.ts.map +1 -0
  37. package/dist/types/src/extensions/comments.d.ts +50 -0
  38. package/dist/types/src/extensions/comments.d.ts.map +1 -0
  39. package/dist/types/src/extensions/hr.d.ts +2 -0
  40. package/dist/types/src/extensions/hr.d.ts.map +1 -0
  41. package/dist/types/src/extensions/image.d.ts.map +1 -0
  42. package/dist/types/src/{components/TextEditor/extensions → extensions}/index.d.ts +6 -3
  43. package/dist/types/src/extensions/index.d.ts.map +1 -0
  44. package/dist/types/src/{components/TextEditor/extensions → extensions}/link.d.ts +1 -0
  45. package/dist/types/src/extensions/link.d.ts.map +1 -0
  46. package/dist/types/src/extensions/listener.d.ts +10 -0
  47. package/dist/types/src/extensions/listener.d.ts.map +1 -0
  48. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -0
  49. package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/highlight.d.ts +0 -1
  50. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -0
  51. package/dist/types/src/extensions/markdown/index.d.ts.map +1 -0
  52. package/dist/types/src/extensions/mention.d.ts.map +1 -0
  53. package/dist/types/src/extensions/mermaid.d.ts +3 -0
  54. package/dist/types/src/extensions/mermaid.d.ts.map +1 -0
  55. package/dist/types/src/extensions/table.d.ts.map +1 -0
  56. package/dist/types/src/extensions/tasklist.d.ts.map +1 -0
  57. package/dist/types/src/{components/TextEditor/extensions/demo.d.ts → extensions/typewriter.d.ts} +2 -3
  58. package/dist/types/src/extensions/typewriter.d.ts.map +1 -0
  59. package/dist/types/src/extensions/yjs/cursor.d.ts +4 -0
  60. package/dist/types/src/extensions/yjs/cursor.d.ts.map +1 -0
  61. package/dist/types/src/extensions/yjs/index.d.ts +2 -0
  62. package/dist/types/src/extensions/yjs/index.d.ts.map +1 -0
  63. package/dist/types/src/extensions/yjs/yjs.d.ts +4 -0
  64. package/dist/types/src/extensions/yjs/yjs.d.ts.map +1 -0
  65. package/dist/types/src/extensions/yjs/yjs.test.d.ts +2 -0
  66. package/dist/types/src/extensions/yjs/yjs.test.d.ts.map +1 -0
  67. package/dist/types/src/hooks/automerge.d.ts +3 -0
  68. package/dist/types/src/hooks/automerge.d.ts.map +1 -0
  69. package/dist/types/src/hooks/awareness-provider.d.ts +28 -0
  70. package/dist/types/src/hooks/awareness-provider.d.ts.map +1 -0
  71. package/dist/types/src/hooks/index.d.ts +2 -0
  72. package/dist/types/src/hooks/index.d.ts.map +1 -1
  73. package/dist/types/src/hooks/useTextModel.d.ts +20 -11
  74. package/dist/types/src/hooks/useTextModel.d.ts.map +1 -1
  75. package/dist/types/src/hooks/{yjs/space-provider.d.ts → yjs.d.ts} +8 -8
  76. package/dist/types/src/hooks/yjs.d.ts.map +1 -0
  77. package/dist/types/src/index.d.ts +3 -0
  78. package/dist/types/src/index.d.ts.map +1 -1
  79. package/dist/types/src/styles/cursors.d.ts.map +1 -0
  80. package/dist/types/src/styles/index.d.ts +1 -0
  81. package/dist/types/src/styles/index.d.ts.map +1 -1
  82. package/dist/types/src/testing/replicator.d.ts +2 -2
  83. package/dist/types/src/testing/replicator.d.ts.map +1 -1
  84. package/dist/types/src/{components/TextEditor/themes → themes}/default.d.ts +5 -13
  85. package/dist/types/src/themes/default.d.ts.map +1 -0
  86. package/dist/types/src/themes/index.d.ts.map +1 -0
  87. package/dist/types/src/util/cursor.d.ts +17 -0
  88. package/dist/types/src/util/cursor.d.ts.map +1 -0
  89. package/dist/types/src/util/index.d.ts +3 -0
  90. package/dist/types/src/util/index.d.ts.map +1 -0
  91. package/dist/types/src/util/util.d.ts +5 -0
  92. package/dist/types/src/util/util.d.ts.map +1 -0
  93. package/package.json +25 -20
  94. package/src/components/TextEditor/MarkdownEditor.stories.tsx +130 -71
  95. package/src/components/TextEditor/TextEditor.stories.tsx +15 -2
  96. package/src/components/TextEditor/TextEditor.tsx +30 -26
  97. package/src/{hooks/automerge → components/TextEditor}/automerge.stories.tsx +67 -8
  98. package/src/components/TextEditor/codemirror.stories.ts +3 -2
  99. package/src/components/TextEditor/index.ts +0 -3
  100. package/src/{hooks/yjs → components/TextEditor}/yjs.stories.tsx +1 -1
  101. package/src/extensions/automerge/automerge.ts +94 -0
  102. package/src/extensions/automerge/cursor.ts +51 -0
  103. package/src/extensions/automerge/defs.ts +62 -0
  104. package/src/extensions/automerge/index.ts +6 -0
  105. package/src/{hooks/automerge/PatchSemaphore.ts → extensions/automerge/semaphore.ts} +18 -15
  106. package/src/{hooks/automerge/translation/codemirror-to-automerge.ts → extensions/automerge/update-automerge.ts} +6 -7
  107. package/src/{hooks/automerge/translation/automerge-to-codemirror.ts → extensions/automerge/update-codemirror.ts} +14 -11
  108. package/src/extensions/awareness.ts +316 -0
  109. package/src/{components/TextEditor/extensions → extensions}/code.ts +13 -13
  110. package/src/extensions/comments.ts +421 -0
  111. package/src/extensions/hr.ts +74 -0
  112. package/src/{components/TextEditor/extensions → extensions}/image.ts +3 -1
  113. package/src/{components/TextEditor/extensions → extensions}/index.ts +6 -3
  114. package/src/{components/TextEditor/extensions → extensions}/link.ts +66 -10
  115. package/src/extensions/listener.ts +35 -0
  116. package/src/{components/TextEditor/extensions → extensions}/markdown/highlight.ts +6 -9
  117. package/src/extensions/mermaid.ts +11 -0
  118. package/src/{components/TextEditor/extensions → extensions}/table.ts +14 -1
  119. package/src/{components/TextEditor/extensions/demo.ts → extensions/typewriter.ts} +2 -3
  120. package/src/extensions/yjs/cursor.ts +21 -0
  121. package/src/extensions/yjs/index.ts +5 -0
  122. package/src/extensions/yjs/yjs.test.ts +35 -0
  123. package/src/extensions/yjs/yjs.ts +16 -0
  124. package/src/hooks/automerge.ts +52 -0
  125. package/src/hooks/awareness-provider.ts +120 -0
  126. package/src/hooks/index.ts +2 -0
  127. package/src/hooks/useTextModel.ts +43 -79
  128. package/src/hooks/{yjs/space-provider.ts → yjs.ts} +71 -19
  129. package/src/index.ts +3 -0
  130. package/src/styles/index.ts +1 -0
  131. package/src/testing/replicator.ts +10 -16
  132. package/src/{components/TextEditor/themes → themes}/default.ts +61 -38
  133. package/src/util/cursor.ts +29 -0
  134. package/src/util/index.ts +6 -0
  135. package/src/util/util.ts +18 -0
  136. package/dist/types/src/components/TextEditor/extensions/autocomplete.d.ts.map +0 -1
  137. package/dist/types/src/components/TextEditor/extensions/basic.d.ts.map +0 -1
  138. package/dist/types/src/components/TextEditor/extensions/blast.d.ts.map +0 -1
  139. package/dist/types/src/components/TextEditor/extensions/code.d.ts.map +0 -1
  140. package/dist/types/src/components/TextEditor/extensions/comments.d.ts +0 -18
  141. package/dist/types/src/components/TextEditor/extensions/comments.d.ts.map +0 -1
  142. package/dist/types/src/components/TextEditor/extensions/demo.d.ts.map +0 -1
  143. package/dist/types/src/components/TextEditor/extensions/experimental.d.ts +0 -10
  144. package/dist/types/src/components/TextEditor/extensions/experimental.d.ts.map +0 -1
  145. package/dist/types/src/components/TextEditor/extensions/highlight.d.ts +0 -24
  146. package/dist/types/src/components/TextEditor/extensions/highlight.d.ts.map +0 -1
  147. package/dist/types/src/components/TextEditor/extensions/image.d.ts.map +0 -1
  148. package/dist/types/src/components/TextEditor/extensions/index.d.ts.map +0 -1
  149. package/dist/types/src/components/TextEditor/extensions/link.d.ts.map +0 -1
  150. package/dist/types/src/components/TextEditor/extensions/listener.d.ts +0 -9
  151. package/dist/types/src/components/TextEditor/extensions/listener.d.ts.map +0 -1
  152. package/dist/types/src/components/TextEditor/extensions/markdown/bundle.d.ts.map +0 -1
  153. package/dist/types/src/components/TextEditor/extensions/markdown/highlight.d.ts.map +0 -1
  154. package/dist/types/src/components/TextEditor/extensions/markdown/index.d.ts.map +0 -1
  155. package/dist/types/src/components/TextEditor/extensions/mention.d.ts.map +0 -1
  156. package/dist/types/src/components/TextEditor/extensions/table.d.ts.map +0 -1
  157. package/dist/types/src/components/TextEditor/extensions/tasklist.d.ts.map +0 -1
  158. package/dist/types/src/components/TextEditor/extensions/tooltip.d.ts +0 -12
  159. package/dist/types/src/components/TextEditor/extensions/tooltip.d.ts.map +0 -1
  160. package/dist/types/src/components/TextEditor/themes/default.d.ts.map +0 -1
  161. package/dist/types/src/components/TextEditor/themes/index.d.ts.map +0 -1
  162. package/dist/types/src/hooks/automerge/PatchSemaphore.d.ts.map +0 -1
  163. package/dist/types/src/hooks/automerge/automerge.stories.d.ts.map +0 -1
  164. package/dist/types/src/hooks/automerge/handle.d.ts +0 -9
  165. package/dist/types/src/hooks/automerge/handle.d.ts.map +0 -1
  166. package/dist/types/src/hooks/automerge/index.d.ts +0 -3
  167. package/dist/types/src/hooks/automerge/index.d.ts.map +0 -1
  168. package/dist/types/src/hooks/automerge/plugin.d.ts +0 -26
  169. package/dist/types/src/hooks/automerge/plugin.d.ts.map +0 -1
  170. package/dist/types/src/hooks/automerge/translation/automerge-to-codemirror.d.ts +0 -5
  171. package/dist/types/src/hooks/automerge/translation/automerge-to-codemirror.d.ts.map +0 -1
  172. package/dist/types/src/hooks/automerge/translation/codemirror-to-automerge.d.ts +0 -6
  173. package/dist/types/src/hooks/automerge/translation/codemirror-to-automerge.d.ts.map +0 -1
  174. package/dist/types/src/hooks/automerge/translation/index.d.ts +0 -3
  175. package/dist/types/src/hooks/automerge/translation/index.d.ts.map +0 -1
  176. package/dist/types/src/hooks/yjs/cursors.d.ts.map +0 -1
  177. package/dist/types/src/hooks/yjs/index.d.ts +0 -3
  178. package/dist/types/src/hooks/yjs/index.d.ts.map +0 -1
  179. package/dist/types/src/hooks/yjs/space-provider.d.ts.map +0 -1
  180. package/dist/types/src/hooks/yjs/yjs.stories.d.ts.map +0 -1
  181. package/src/components/TextEditor/extensions/comments.ts +0 -173
  182. package/src/components/TextEditor/extensions/experimental.tsx +0 -114
  183. package/src/components/TextEditor/extensions/highlight.ts +0 -128
  184. package/src/components/TextEditor/extensions/listener.ts +0 -23
  185. package/src/components/TextEditor/extensions/tooltip.tsx +0 -61
  186. package/src/hooks/automerge/handle.ts +0 -14
  187. package/src/hooks/automerge/index.ts +0 -6
  188. package/src/hooks/automerge/plugin.ts +0 -134
  189. package/src/hooks/automerge/translation/index.ts +0 -6
  190. package/src/hooks/yjs/index.ts +0 -6
  191. /package/dist/types/src/{components/TextEditor/extensions → extensions}/autocomplete.d.ts +0 -0
  192. /package/dist/types/src/{components/TextEditor/extensions → extensions}/basic.d.ts +0 -0
  193. /package/dist/types/src/{components/TextEditor/extensions → extensions}/blast.d.ts +0 -0
  194. /package/dist/types/src/{components/TextEditor/extensions → extensions}/code.d.ts +0 -0
  195. /package/dist/types/src/{components/TextEditor/extensions → extensions}/image.d.ts +0 -0
  196. /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/bundle.d.ts +0 -0
  197. /package/dist/types/src/{components/TextEditor/extensions → extensions}/markdown/index.d.ts +0 -0
  198. /package/dist/types/src/{components/TextEditor/extensions → extensions}/mention.d.ts +0 -0
  199. /package/dist/types/src/{components/TextEditor/extensions → extensions}/table.d.ts +0 -0
  200. /package/dist/types/src/{components/TextEditor/extensions → extensions}/tasklist.d.ts +0 -0
  201. /package/dist/types/src/{hooks/yjs → styles}/cursors.d.ts +0 -0
  202. /package/dist/types/src/{components/TextEditor/themes → themes}/index.d.ts +0 -0
  203. /package/src/{components/TextEditor/extensions → extensions}/autocomplete.ts +0 -0
  204. /package/src/{components/TextEditor/extensions → extensions}/basic.ts +0 -0
  205. /package/src/{components/TextEditor/extensions → extensions}/blast.ts +0 -0
  206. /package/src/{components/TextEditor/extensions → extensions}/markdown/bundle.ts +0 -0
  207. /package/src/{components/TextEditor/extensions → extensions}/markdown/index.ts +0 -0
  208. /package/src/{components/TextEditor/extensions → extensions}/mention.ts +0 -0
  209. /package/src/{components/TextEditor/extensions → extensions}/tasklist.ts +0 -0
  210. /package/src/{hooks/yjs → styles}/cursors.ts +0 -0
  211. /package/src/{components/TextEditor/themes → themes}/index.ts +0 -0
package/src/index.ts CHANGED
@@ -4,6 +4,9 @@
4
4
 
5
5
  export { TextKind } from '@dxos/protocols/proto/dxos/echo/model/text';
6
6
  export { Doc, YText, YXmlFragment } from '@dxos/text-model';
7
+ export { type Extension } from '@codemirror/state';
7
8
 
8
9
  export * from './components';
10
+ export * from './extensions';
9
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
 
@@ -169,7 +164,6 @@ export class Replicator {
169
164
  id: doc.guid,
170
165
  text: () => content.toString(),
171
166
  content,
172
- ranges: [],
173
167
  awareness: provider.awareness,
174
168
  peer: { id },
175
169
  };
@@ -3,9 +3,11 @@
3
3
  //
4
4
 
5
5
  import get from 'lodash.get';
6
- import { type StyleSpec } from 'style-mod';
7
6
 
8
- import { tokens } from '../../../styles';
7
+ import { type ThemeStyles, tokens } from '../styles';
8
+
9
+ // TODO(burdon): Can we erase All of the default CM styles?
10
+ // TODO(burdon): Theme styles seem to be added multiple times?
9
11
 
10
12
  /**
11
13
  * Minimal styles.
@@ -18,19 +20,31 @@ import { tokens } from '../../../styles';
18
20
  * NOTE: Use one of '&', '&light', and '&dark' prefix to scope instance.
19
21
  * NOTE: `light` and `dark` selectors are preprocessed by CodeMirror and can only be in the base theme.
20
22
  */
21
- export const defaultTheme: {
22
- [selector: string]: StyleSpec;
23
- } = {
23
+ export const defaultTheme: ThemeStyles = {
24
24
  //
25
25
  // Main layout:
26
- // <div class=".cm-editor .cm-focused">
27
- // <div class=".cm-scroller">
28
- // <div class=".cm-content" role="textbox" contenteditable="true">
29
- // <div class=".cm-line" />
26
+ // https://codemirror.net/examples/styling
27
+ //
28
+ // <div class="cm-editor [cm-focused] [generated classes]">
29
+ // <div class="cm-scroller">
30
+ // <div class="cm-gutters">
31
+ // <div class="cm-gutter [...]">
32
+ // <div class="cm-gutterElement">...</div>
33
+ // </div>
34
+ // </div>
35
+ // <div class="cm-content" role="textbox" contenteditable="true">
36
+ // <div class="cm-line"></div>
37
+ // </div>
38
+ // <div class="cm-selectionLayer">
39
+ // <div class="cm-selectionBackground"></div>
40
+ // </div>
41
+ // <div class="cm-cursorLayer">
42
+ // <div class="cm-cursor"></div>
30
43
  // </div>
31
44
  // </div>
32
45
  // </div>
33
46
  //
47
+
34
48
  '&': {},
35
49
  '&.cm-focused': {
36
50
  outline: 'none',
@@ -39,9 +53,10 @@ export const defaultTheme: {
39
53
  overflow: 'visible',
40
54
  fontFamily: get(tokens, 'fontFamily.mono', []).join(','),
41
55
  },
56
+
42
57
  '& .cm-content': {
43
58
  padding: 0,
44
- // Base font size (otherwise defined by HTML tag, which might be different for storybook).
59
+ // NOTE: Base font size (otherwise defined by HTML tag, which might be different for storybook).
45
60
  fontSize: '16px',
46
61
  },
47
62
  '&light .cm-content': {
@@ -72,31 +87,41 @@ export const defaultTheme: {
72
87
  '& .cm-line': {
73
88
  paddingInline: 0,
74
89
  },
75
- '& .cm-line *': {},
76
90
  '& .cm-activeLine': {
77
- backgroundColor: 'transparent',
91
+ background: 'inherit',
78
92
  },
79
93
 
80
94
  //
81
- // selection
95
+ // Selection
82
96
  //
83
97
 
84
- '&light .cm-selectionBackground, &light.cm-focused .cm-selectionBackground': {
85
- background: get(tokens, 'extend.colors.primary.150', '#00ffff'),
98
+ '&light .cm-selectionBackground': {
99
+ background: get(tokens, 'extend.colors.primary.100'),
86
100
  },
87
- '&dark .cm-selectionBackground, &dark.cm-focused .cm-selectionBackground': {
88
- background: get(tokens, 'extend.colors.primary.850', '#00ffff'),
101
+ '&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground': {
102
+ background: get(tokens, 'extend.colors.primary.200'),
89
103
  },
90
- '&light .cm-selectionMatch': {
91
- background: get(tokens, 'extend.colors.primary.250', '#00ffff') + '44',
104
+ '&dark .cm-selectionBackground': {
105
+ background: get(tokens, 'extend.colors.primary.700'),
92
106
  },
93
- '&dark .cm-selectionMatch': {
94
- background: get(tokens, 'extend.colors.primary.600', '#00ffff') + '44',
107
+ '&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground': {
108
+ background: get(tokens, 'extend.colors.primary.600'),
109
+ },
110
+
111
+ //
112
+ // Search
113
+ //
114
+
115
+ '&light .cm-searchMatch': {
116
+ backgroundColor: get(tokens, 'extend.colors.yellow.100'),
117
+ },
118
+ '&dark .cm-searchMatch': {
119
+ backgroundColor: get(tokens, 'extend.colors.yellow.700'),
95
120
  },
96
121
 
97
122
  //
98
123
  // collaboration
99
- // TODO(burdon): Review classnames (YJS dependent?)
124
+ // TODO(burdon): Review classnames (YJS dependent?) Note: e2e tests depend on this class.
100
125
  //
101
126
 
102
127
  '&light .cm-ySelection, &light .cm-yLineSelection': {
@@ -211,6 +236,7 @@ export const defaultTheme: {
211
236
 
212
237
  /**
213
238
  * Panels
239
+ * TODO(burdon): Needs styling attention (esp. dark mode).
214
240
  * https://github.com/codemirror/search/blob/main/src/search.ts#L745
215
241
  *
216
242
  * Find/replace panel.
@@ -226,7 +252,6 @@ export const defaultTheme: {
226
252
  */
227
253
  '& .cm-panels': {
228
254
  border: `1px solid ${get(tokens, 'extend.colors.neutral.200')}`,
229
- borderBottom: 'none',
230
255
  },
231
256
  '& .cm-panel': {
232
257
  background: get(tokens, 'extend.colors.neutral.50'),
@@ -236,20 +261,22 @@ export const defaultTheme: {
236
261
  margin: '4px',
237
262
  fontFamily: get(tokens, 'fontFamily.body', []).join(','),
238
263
  background: get(tokens, 'extend.colors.neutral.100'),
264
+ backgroundImage: 'none',
239
265
  border: 'none',
266
+ '&:hover': {
267
+ background: get(tokens, 'extend.colors.neutral.200'),
268
+ },
269
+ '&:active': {
270
+ background: get(tokens, 'extend.colors.neutral.300'),
271
+ backgroundImage: 'none',
272
+ },
240
273
  },
241
-
242
- '& .cm-searchMatch': {
243
- backgroundColor: get(tokens, 'extend.colors.yellow.100'),
244
- },
245
- '& .cm-searchMatch.cm-searchMatch-selected': {
246
- backgroundColor: get(tokens, 'extend.colors.primary.100'),
274
+ '& .cm-panel input[type=checkbox]': {
275
+ marginRight: '0.4rem !important',
247
276
  },
248
277
  };
249
278
 
250
- export const textTheme: {
251
- [selector: string]: StyleSpec;
252
- } = {
279
+ export const textTheme: ThemeStyles = {
253
280
  '& .cm-scroller': {
254
281
  fontFamily: get(tokens, 'fontFamily.body', []).join(','),
255
282
  },
@@ -258,18 +285,14 @@ export const textTheme: {
258
285
  },
259
286
  };
260
287
 
261
- export const markdownTheme: {
262
- [selector: string]: StyleSpec;
263
- } = {
288
+ export const markdownTheme: ThemeStyles = {
264
289
  // NOTE: Must leave base font family as is (i.e., monospace) due to fenced code blocks.
265
290
  '& .cm-placeholder': {
266
291
  fontFamily: get(tokens, 'fontFamily.body', []).join(','),
267
292
  },
268
293
  };
269
294
 
270
- export const codeTheme: {
271
- [selector: string]: StyleSpec;
272
- } = {
295
+ export const codeTheme: ThemeStyles = {
273
296
  '& .cm-scroller': {
274
297
  fontFamily: get(tokens, 'fontFamily.mono', []).join(','),
275
298
  },
@@ -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';
@@ -0,0 +1,18 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { log } from '@dxos/log';
6
+
7
+ /**
8
+ * CodeMirror callbacks swallow errors so wrap handlers.
9
+ */
10
+ // TODO(burdon): Figure out how to systematize this.
11
+ export const callbackWrapper = <T extends Function>(fn: T): T =>
12
+ ((...args: any[]) => {
13
+ try {
14
+ return fn(...args);
15
+ } catch (error) {
16
+ log.catch(error);
17
+ }
18
+ }) as unknown as T;
@@ -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":"AAmDA,eAAO,MAAM,IAAI,+CA+ChB,CAAC"}
@@ -1,18 +0,0 @@
1
- import { type Extension } from '@codemirror/state';
2
- import { type Rect } from '@codemirror/view';
3
- type CommentsInfo = {
4
- active?: string;
5
- items?: {
6
- id: string;
7
- pos: number;
8
- location: Rect | null;
9
- }[];
10
- };
11
- export type CommentsOptions = {
12
- key?: string;
13
- onCreate?: (from: number, to: number) => string | void;
14
- onUpdate?: (info: CommentsInfo) => void;
15
- };
16
- export declare const comments: (options?: CommentsOptions) => Extension;
17
- export {};
18
- //# sourceMappingURL=comments.d.ts.map
@@ -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,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAGL,KAAK,IAAI,EAOV,MAAM,kBAAkB,CAAC;AAqC1B,KAAK,YAAY,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACvD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CACzC,CAAC;AAKF,eAAO,MAAM,QAAQ,aAAa,eAAe,KAAQ,SA0GxD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/demo.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;;;GAGG;AACH,eAAO,MAAM,IAAI,sBAA0C,WAAW,KAAQ,SAgD7E,CAAC"}
@@ -1,10 +0,0 @@
1
- import { type Extension } from '@codemirror/state';
2
- import { type DecorationSet, MatchDecorator, ViewPlugin, type ViewUpdate } from '@codemirror/view';
3
- export declare const styles: Extension;
4
- export declare function hyperLinkExtension(): ViewPlugin<{
5
- readonly decorator: MatchDecorator;
6
- decorations: DecorationSet;
7
- update(update: ViewUpdate): void;
8
- }>;
9
- export declare const hyperlinkWidget: Extension;
10
- //# sourceMappingURL=experimental.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"experimental.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/experimental.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAEL,KAAK,aAAa,EAElB,cAAc,EACd,UAAU,EACV,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAG1B,eAAO,MAAM,MAAM,WAYjB,CAAC;AAiDH,wBAAgB,kBAAkB;wBAGR,cAAc;;mBAOnB,UAAU;GAwB9B;AAED,eAAO,MAAM,eAAe,EAAE,SAA0C,CAAC"}
@@ -1,24 +0,0 @@
1
- import { type Extension, StateField } from '@codemirror/state';
2
- import { EditorView } from '@codemirror/view';
3
- import { type DocumentRange } from '../../../hooks';
4
- type HighlightRange = DocumentRange & {
5
- active?: boolean;
6
- };
7
- /**
8
- * Update field set.
9
- */
10
- export declare const useHighlights: (view: EditorView | undefined, ranges?: HighlightRange[]) => void;
11
- /**
12
- * State field that tracks highlight ranges.
13
- */
14
- export declare const highlightStateField: StateField<HighlightRange[]>;
15
- /**
16
- * Decorate ranges.
17
- */
18
- export declare const highlightDecorations: Extension;
19
- export type HighlightOptions = {
20
- onChange?: (active?: string) => {};
21
- };
22
- export declare const highlight: (options?: HighlightOptions) => Extension;
23
- export {};
24
- //# sourceMappingURL=highlight.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/highlight.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAc,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAsBpD,KAAK,cAAc,GAAG,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAK3D;;GAEG;AAEH,eAAO,MAAM,aAAa,SAAU,UAAU,GAAG,SAAS,WAAU,cAAc,EAAE,SAMnF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,8BAW9B,CAAC;AAEH;;GAEG;AAEH,eAAO,MAAM,oBAAoB,WAiB/B,CAAC;AAoCH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,EAAE,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,SAAS,aAAa,gBAAgB,KAAQ,SAE1D,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,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,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;AAO3B,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,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,SAMhD,CAAC"}
@@ -1,9 +0,0 @@
1
- import { StateField } from '@codemirror/state';
2
- export type ListenerOptions = {
3
- onChange: (text: string) => void;
4
- };
5
- /**
6
- * Based on https://github.com/codemirror/dev/issues/44#issuecomment-789093799
7
- */
8
- export declare const listener: ({ onChange }: ListenerOptions) => StateField<null>;
9
- //# sourceMappingURL=listener.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/listener.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,QAAQ,iBAAkB,eAAe,qBAWrD,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;AAmB7D;;;;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":"table.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/table.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,KAAK,QAAQ,EAAmB,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAMnH,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,12 +0,0 @@
1
- import { type Extension } from '@codemirror/state';
2
- export type TooltipOptions = {
3
- onHover: (el: Element, url: string) => void;
4
- regexp?: RegExp;
5
- };
6
- /**
7
- * https://codemirror.net/examples/tooltip
8
- * https://codemirror.net/docs/ref/#view.hoverTooltip
9
- * https://github.com/codemirror/view/blob/main/src/tooltip.ts
10
- */
11
- export declare const tooltip: ({ onHover, regexp }: TooltipOptions) => Extension;
12
- //# sourceMappingURL=tooltip.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/extensions/tooltip.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAOnD,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,OAAO,wBAA8C,cAAc,KAAG,SAuC/E,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../../../src/components/TextEditor/themes/default.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAI3C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,EAAE;IACzB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAkO/B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE;IACtB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAQ/B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE;IAC1B,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAM/B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE;IACtB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAQ/B,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":"PatchSemaphore.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/automerge/PatchSemaphore.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;AAGlH,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 +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,wBAGE;AAEF,eAAO,MAAM,OAAO;;CAEnB,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;AAGlE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,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,5 +0,0 @@
1
- import { type EditorSelection } from '@codemirror/state';
2
- import { type EditorView } from '@codemirror/view';
3
- import { type Patch, type Prop } from '@dxos/automerge/automerge';
4
- export declare const automergeToCodemirror: (view: EditorView, selection: EditorSelection, target: Prop[], patches: Patch[]) => void;
5
- //# sourceMappingURL=automerge-to-codemirror.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"automerge-to-codemirror.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/automerge/translation/automerge-to-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,qBAAqB,SAC1B,UAAU,aACL,eAAe,UAClB,IAAI,EAAE,WACL,KAAK,EAAE,SAkBjB,CAAC"}
@@ -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 codemirrorToAutomerge: (field: Field, handle: IDocHandle, transactions: Transaction[], state: EditorState) => Heads | undefined;
6
- //# sourceMappingURL=codemirror-to-automerge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codemirror-to-automerge.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/automerge/translation/codemirror-to-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,WAAW,CAAC;AAC5C,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,eAAO,MAAM,qBAAqB,yBAExB,UAAU,gBACJ,WAAW,EAAE,SACpB,WAAW,KACjB,KAAK,GAAG,SAyBV,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './automerge-to-codemirror';
2
- export * from './codemirror-to-automerge';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/automerge/translation/index.ts"],"names":[],"mappings":"AAIA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,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