@dxos/react-ui-editor 0.3.10-next.ef70620 → 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 (219) hide show
  1. package/dist/lib/browser/index.mjs +2814 -1096
  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 +63 -0
  5. package/dist/types/src/components/TextEditor/MarkdownEditor.stories.d.ts.map +1 -0
  6. package/dist/types/src/components/TextEditor/TextEditor.d.ts +9 -4
  7. package/dist/types/src/components/TextEditor/TextEditor.d.ts.map +1 -1
  8. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts +15 -4
  9. package/dist/types/src/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
  10. package/dist/types/src/components/TextEditor/automerge.stories.d.ts +20 -0
  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 +1 -1
  14. package/dist/types/src/components/TextEditor/index.d.ts.map +1 -1
  15. package/dist/types/src/components/TextEditor/yjs.stories.d.ts +1 -0
  16. package/dist/types/src/components/TextEditor/yjs.stories.d.ts.map +1 -1
  17. package/dist/types/src/extensions/autocomplete.d.ts +10 -0
  18. package/dist/types/src/extensions/autocomplete.d.ts.map +1 -0
  19. package/dist/types/src/extensions/automerge/automerge.d.ts +9 -0
  20. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -0
  21. package/dist/types/src/extensions/automerge/cursor.d.ts +5 -0
  22. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -0
  23. package/dist/types/src/extensions/automerge/defs.d.ts +26 -0
  24. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -0
  25. package/dist/types/src/extensions/automerge/index.d.ts +3 -0
  26. package/dist/types/src/extensions/automerge/index.d.ts.map +1 -0
  27. package/dist/types/src/{automerge/automerge-plugin/PatchSemaphore.d.ts → extensions/automerge/semaphore.d.ts} +8 -5
  28. package/dist/types/src/extensions/automerge/semaphore.d.ts.map +1 -0
  29. package/dist/types/src/extensions/automerge/update-automerge.d.ts +5 -0
  30. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -0
  31. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +5 -0
  32. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +1 -0
  33. package/dist/types/src/extensions/awareness.d.ts +46 -0
  34. package/dist/types/src/extensions/awareness.d.ts.map +1 -0
  35. package/dist/types/src/{components/TextEditor/extensions/basic/bundle.d.ts → extensions/basic.d.ts} +3 -2
  36. package/dist/types/src/extensions/basic.d.ts.map +1 -0
  37. package/dist/types/src/extensions/blast.d.ts +25 -0
  38. package/dist/types/src/extensions/blast.d.ts.map +1 -0
  39. package/dist/types/src/extensions/code.d.ts +2 -0
  40. package/dist/types/src/extensions/code.d.ts.map +1 -0
  41. package/dist/types/src/extensions/comments.d.ts +50 -0
  42. package/dist/types/src/extensions/comments.d.ts.map +1 -0
  43. package/dist/types/src/extensions/hr.d.ts +2 -0
  44. package/dist/types/src/extensions/hr.d.ts.map +1 -0
  45. package/dist/types/src/extensions/image.d.ts +4 -0
  46. package/dist/types/src/extensions/image.d.ts.map +1 -0
  47. package/dist/types/src/extensions/index.d.ts +19 -0
  48. package/dist/types/src/extensions/index.d.ts.map +1 -0
  49. package/dist/types/src/extensions/link.d.ts +12 -0
  50. package/dist/types/src/extensions/link.d.ts.map +1 -0
  51. package/dist/types/src/extensions/listener.d.ts +10 -0
  52. package/dist/types/src/extensions/listener.d.ts.map +1 -0
  53. package/dist/types/src/extensions/markdown/bundle.d.ts +17 -0
  54. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -0
  55. package/dist/types/src/extensions/markdown/highlight.d.ts +36 -0
  56. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -0
  57. package/dist/types/src/extensions/markdown/index.d.ts +3 -0
  58. package/dist/types/src/extensions/markdown/index.d.ts.map +1 -0
  59. package/dist/types/src/extensions/mention.d.ts +6 -0
  60. package/dist/types/src/extensions/mention.d.ts.map +1 -0
  61. package/dist/types/src/extensions/mermaid.d.ts +3 -0
  62. package/dist/types/src/extensions/mermaid.d.ts.map +1 -0
  63. package/dist/types/src/extensions/table.d.ts +8 -0
  64. package/dist/types/src/extensions/table.d.ts.map +1 -0
  65. package/dist/types/src/extensions/tasklist.d.ts +3 -0
  66. package/dist/types/src/extensions/tasklist.d.ts.map +1 -0
  67. package/dist/types/src/extensions/typewriter.d.ts +10 -0
  68. package/dist/types/src/extensions/typewriter.d.ts.map +1 -0
  69. package/dist/types/src/extensions/yjs/cursor.d.ts +4 -0
  70. package/dist/types/src/extensions/yjs/cursor.d.ts.map +1 -0
  71. package/dist/types/src/extensions/yjs/index.d.ts +2 -0
  72. package/dist/types/src/extensions/yjs/index.d.ts.map +1 -0
  73. package/dist/types/src/extensions/yjs/yjs.d.ts +4 -0
  74. package/dist/types/src/extensions/yjs/yjs.d.ts.map +1 -0
  75. package/dist/types/src/extensions/yjs/yjs.test.d.ts +2 -0
  76. package/dist/types/src/extensions/yjs/yjs.test.d.ts.map +1 -0
  77. package/dist/types/src/hooks/automerge.d.ts +3 -0
  78. package/dist/types/src/hooks/automerge.d.ts.map +1 -0
  79. package/dist/types/src/hooks/awareness-provider.d.ts +28 -0
  80. package/dist/types/src/hooks/awareness-provider.d.ts.map +1 -0
  81. package/dist/types/src/hooks/index.d.ts +2 -1
  82. package/dist/types/src/hooks/index.d.ts.map +1 -1
  83. package/dist/types/src/hooks/useTextModel.d.ts +23 -8
  84. package/dist/types/src/hooks/useTextModel.d.ts.map +1 -1
  85. package/dist/types/src/hooks/{yjs/space-provider.d.ts → yjs.d.ts} +8 -8
  86. package/dist/types/src/hooks/yjs.d.ts.map +1 -0
  87. package/dist/types/src/index.d.ts +3 -0
  88. package/dist/types/src/index.d.ts.map +1 -1
  89. package/dist/types/src/styles/cursors.d.ts.map +1 -0
  90. package/dist/types/src/styles/index.d.ts +1 -0
  91. package/dist/types/src/styles/index.d.ts.map +1 -1
  92. package/dist/types/src/styles/markdown.d.ts +14 -11
  93. package/dist/types/src/styles/markdown.d.ts.map +1 -1
  94. package/dist/types/src/testing/replicator.d.ts +2 -2
  95. package/dist/types/src/testing/replicator.d.ts.map +1 -1
  96. package/dist/types/src/themes/default.d.ts +17 -0
  97. package/dist/types/src/themes/default.d.ts.map +1 -0
  98. package/dist/types/src/themes/index.d.ts +2 -0
  99. package/dist/types/src/themes/index.d.ts.map +1 -0
  100. package/dist/types/src/util/cursor.d.ts +17 -0
  101. package/dist/types/src/util/cursor.d.ts.map +1 -0
  102. package/dist/types/src/util/index.d.ts +3 -0
  103. package/dist/types/src/util/index.d.ts.map +1 -0
  104. package/dist/types/src/util/util.d.ts +5 -0
  105. package/dist/types/src/util/util.d.ts.map +1 -0
  106. package/package.json +29 -33
  107. package/src/components/TextEditor/MarkdownEditor.stories.tsx +426 -0
  108. package/src/components/TextEditor/TextEditor.stories.tsx +70 -43
  109. package/src/components/TextEditor/TextEditor.tsx +98 -52
  110. package/src/{automerge → components/TextEditor}/automerge.stories.tsx +69 -7
  111. package/src/components/TextEditor/codemirror.stories.ts +3 -2
  112. package/src/components/TextEditor/index.ts +1 -1
  113. package/src/components/TextEditor/yjs.stories.tsx +1 -0
  114. package/src/extensions/autocomplete.ts +59 -0
  115. package/src/extensions/automerge/automerge.ts +94 -0
  116. package/src/extensions/automerge/cursor.ts +51 -0
  117. package/src/extensions/automerge/defs.ts +62 -0
  118. package/src/extensions/automerge/index.ts +6 -0
  119. package/src/{automerge/automerge-plugin/PatchSemaphore.ts → extensions/automerge/semaphore.ts} +24 -18
  120. package/src/{automerge/automerge-plugin/codeMirrorToAm.ts → extensions/automerge/update-automerge.ts} +8 -6
  121. package/src/{automerge/automerge-plugin/amToCodemirror.ts → extensions/automerge/update-codemirror.ts} +15 -4
  122. package/src/extensions/awareness.ts +316 -0
  123. package/src/{components/TextEditor/extensions/basic/bundle.ts → extensions/basic.ts} +8 -4
  124. package/src/extensions/blast.ts +373 -0
  125. package/src/extensions/code.ts +99 -0
  126. package/src/extensions/comments.ts +421 -0
  127. package/src/extensions/hr.ts +74 -0
  128. package/src/extensions/image.ts +69 -0
  129. package/src/extensions/index.ts +22 -0
  130. package/src/extensions/link.ts +192 -0
  131. package/src/extensions/listener.ts +35 -0
  132. package/src/extensions/markdown/bundle.ts +106 -0
  133. package/src/extensions/markdown/highlight.ts +204 -0
  134. package/src/{components/TextEditor/extensions → extensions}/markdown/index.ts +1 -1
  135. package/src/extensions/mention.ts +31 -0
  136. package/src/extensions/mermaid.ts +11 -0
  137. package/src/extensions/table.ts +132 -0
  138. package/src/extensions/tasklist.ts +121 -0
  139. package/src/extensions/typewriter.ts +68 -0
  140. package/src/extensions/yjs/cursor.ts +21 -0
  141. package/src/extensions/yjs/index.ts +5 -0
  142. package/src/extensions/yjs/yjs.test.ts +35 -0
  143. package/src/extensions/yjs/yjs.ts +16 -0
  144. package/src/hooks/automerge.ts +52 -0
  145. package/src/hooks/awareness-provider.ts +120 -0
  146. package/src/hooks/index.ts +2 -1
  147. package/src/hooks/useTextModel.ts +53 -67
  148. package/src/hooks/{yjs/space-provider.ts → yjs.ts} +71 -19
  149. package/src/index.ts +3 -0
  150. package/src/styles/index.ts +1 -0
  151. package/src/styles/markdown.ts +33 -24
  152. package/src/testing/replicator.ts +16 -21
  153. package/src/themes/default.ts +302 -0
  154. package/src/themes/index.ts +5 -0
  155. package/src/util/cursor.ts +29 -0
  156. package/src/util/index.ts +6 -0
  157. package/src/util/util.ts +18 -0
  158. package/dist/types/src/automerge/automerge-plugin/PatchSemaphore.d.ts.map +0 -1
  159. package/dist/types/src/automerge/automerge-plugin/amToCodemirror.d.ts +0 -6
  160. package/dist/types/src/automerge/automerge-plugin/amToCodemirror.d.ts.map +0 -1
  161. package/dist/types/src/automerge/automerge-plugin/codeMirrorToAm.d.ts +0 -7
  162. package/dist/types/src/automerge/automerge-plugin/codeMirrorToAm.d.ts.map +0 -1
  163. package/dist/types/src/automerge/automerge-plugin/handle.d.ts +0 -9
  164. package/dist/types/src/automerge/automerge-plugin/handle.d.ts.map +0 -1
  165. package/dist/types/src/automerge/automerge-plugin/index.d.ts +0 -3
  166. package/dist/types/src/automerge/automerge-plugin/index.d.ts.map +0 -1
  167. package/dist/types/src/automerge/automerge-plugin/plugin.d.ts +0 -26
  168. package/dist/types/src/automerge/automerge-plugin/plugin.d.ts.map +0 -1
  169. package/dist/types/src/automerge/automerge.stories.d.ts +0 -9
  170. package/dist/types/src/automerge/automerge.stories.d.ts.map +0 -1
  171. package/dist/types/src/components/TextEditor/extensions/basic/bundle.d.ts.map +0 -1
  172. package/dist/types/src/components/TextEditor/extensions/basic/index.d.ts +0 -3
  173. package/dist/types/src/components/TextEditor/extensions/basic/index.d.ts.map +0 -1
  174. package/dist/types/src/components/TextEditor/extensions/basic/theme.d.ts +0 -10
  175. package/dist/types/src/components/TextEditor/extensions/basic/theme.d.ts.map +0 -1
  176. package/dist/types/src/components/TextEditor/extensions/change.d.ts +0 -7
  177. package/dist/types/src/components/TextEditor/extensions/change.d.ts.map +0 -1
  178. package/dist/types/src/components/TextEditor/extensions/hyperlink/hyperlinkDecoration.d.ts +0 -11
  179. package/dist/types/src/components/TextEditor/extensions/hyperlink/hyperlinkDecoration.d.ts.map +0 -1
  180. package/dist/types/src/components/TextEditor/extensions/hyperlink/hyperlinkTooltip.d.ts +0 -8
  181. package/dist/types/src/components/TextEditor/extensions/hyperlink/hyperlinkTooltip.d.ts.map +0 -1
  182. package/dist/types/src/components/TextEditor/extensions/hyperlink/hyperlinkWidget.d.ts +0 -10
  183. package/dist/types/src/components/TextEditor/extensions/hyperlink/hyperlinkWidget.d.ts.map +0 -1
  184. package/dist/types/src/components/TextEditor/extensions/hyperlink/index.d.ts +0 -4
  185. package/dist/types/src/components/TextEditor/extensions/hyperlink/index.d.ts.map +0 -1
  186. package/dist/types/src/components/TextEditor/extensions/index.d.ts +0 -5
  187. package/dist/types/src/components/TextEditor/extensions/index.d.ts.map +0 -1
  188. package/dist/types/src/components/TextEditor/extensions/markdown/bundle.d.ts +0 -8
  189. package/dist/types/src/components/TextEditor/extensions/markdown/bundle.d.ts.map +0 -1
  190. package/dist/types/src/components/TextEditor/extensions/markdown/index.d.ts +0 -3
  191. package/dist/types/src/components/TextEditor/extensions/markdown/index.d.ts.map +0 -1
  192. package/dist/types/src/components/TextEditor/extensions/markdown/tags.d.ts +0 -17
  193. package/dist/types/src/components/TextEditor/extensions/markdown/tags.d.ts.map +0 -1
  194. package/dist/types/src/components/TextEditor/extensions/markdown/theme.d.ts +0 -21
  195. package/dist/types/src/components/TextEditor/extensions/markdown/theme.d.ts.map +0 -1
  196. package/dist/types/src/hooks/useCollaboration.d.ts +0 -9
  197. package/dist/types/src/hooks/useCollaboration.d.ts.map +0 -1
  198. package/dist/types/src/hooks/yjs/cursors.d.ts.map +0 -1
  199. package/dist/types/src/hooks/yjs/index.d.ts +0 -3
  200. package/dist/types/src/hooks/yjs/index.d.ts.map +0 -1
  201. package/dist/types/src/hooks/yjs/space-provider.d.ts.map +0 -1
  202. package/src/automerge/automerge-plugin/handle.ts +0 -14
  203. package/src/automerge/automerge-plugin/index.ts +0 -6
  204. package/src/automerge/automerge-plugin/plugin.ts +0 -133
  205. package/src/components/TextEditor/extensions/basic/index.ts +0 -6
  206. package/src/components/TextEditor/extensions/basic/theme.ts +0 -49
  207. package/src/components/TextEditor/extensions/change.ts +0 -22
  208. package/src/components/TextEditor/extensions/hyperlink/hyperlinkDecoration.ts +0 -99
  209. package/src/components/TextEditor/extensions/hyperlink/hyperlinkTooltip.tsx +0 -61
  210. package/src/components/TextEditor/extensions/hyperlink/hyperlinkWidget.tsx +0 -119
  211. package/src/components/TextEditor/extensions/hyperlink/index.ts +0 -7
  212. package/src/components/TextEditor/extensions/index.ts +0 -8
  213. package/src/components/TextEditor/extensions/markdown/bundle.ts +0 -99
  214. package/src/components/TextEditor/extensions/markdown/tags.ts +0 -38
  215. package/src/components/TextEditor/extensions/markdown/theme.ts +0 -265
  216. package/src/hooks/useCollaboration.ts +0 -45
  217. package/src/hooks/yjs/index.ts +0 -6
  218. /package/dist/types/src/{hooks/yjs → styles}/cursors.d.ts +0 -0
  219. /package/src/{hooks/yjs → styles}/cursors.ts +0 -0
@@ -1,38 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { styleTags, Tag } from '@lezer/highlight';
6
- import { type MarkdownConfig } from '@lezer/markdown';
7
-
8
- export const markdownTags = {
9
- headingMark: Tag.define(),
10
- quoteMark: Tag.define(),
11
- listMark: Tag.define(),
12
- linkMark: Tag.define(),
13
- emphasisMark: Tag.define(),
14
- codeMark: Tag.define(),
15
- codeText: Tag.define(),
16
- inlineCode: Tag.define(),
17
- url: Tag.define(),
18
- linkReference: Tag.define(),
19
- linkLabel: Tag.define(),
20
- };
21
-
22
- export const markdownTagsExtension: MarkdownConfig = {
23
- props: [
24
- styleTags({
25
- HeaderMark: markdownTags.headingMark,
26
- QuoteMark: markdownTags.quoteMark,
27
- ListMark: markdownTags.listMark,
28
- LinkMark: markdownTags.linkMark,
29
- EmphasisMark: markdownTags.emphasisMark,
30
- CodeMark: markdownTags.codeMark,
31
- CodeText: markdownTags.codeText,
32
- InlineCode: markdownTags.inlineCode,
33
- URL: markdownTags.url,
34
- LinkReference: markdownTags.linkReference,
35
- LinkLabel: markdownTags.linkLabel,
36
- }),
37
- ],
38
- };
@@ -1,265 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { markdownLanguage } from '@codemirror/lang-markdown';
6
- import { HighlightStyle } from '@codemirror/language';
7
- import { tags } from '@lezer/highlight';
8
- import get from 'lodash.get';
9
-
10
- import { markdownTags } from './tags';
11
- import { bold, heading, italic, mark, strikethrough, tokens, type ThemeStyles } from '../../../../styles';
12
-
13
- // TODO(burdon): Rationalize theme/colors. Hoist onto single property object.
14
- export const chalky = '#e5c07b';
15
- export const coral = '#e06c75';
16
- export const cyan = '#56b6c2';
17
- export const invalid = '#ffffff';
18
- export const ivory = '#abb2bf';
19
- export const stone = '#7d8799';
20
- export const malibu = '#61afef';
21
- export const sage = '#98c379';
22
- export const whiskey = '#d19a66';
23
- export const violet = '#c678dd';
24
- const _darkBackground = '#21252b';
25
- export const highlightBackground = '#2c313a';
26
- const _background = '#282c34';
27
- export const tooltipBackground = '#353a42';
28
- const _selection = '#3E4451';
29
-
30
- const monospace = get(tokens, 'fontFamily.mono', ['monospace']).join(',');
31
-
32
- /**
33
- * NOTE: The '&' prefix denotes the CM editor root.
34
- * https://codemirror.net/examples/styling
35
- */
36
- export const markdownTheme: ThemeStyles = {
37
- // TODO(thure): Consider whether these commented-out rules from one-dark-theme should be integrated.
38
- // '&': {
39
- // color: ivory,
40
- // backgroundColor: background
41
- // },
42
- // '.cm-cursor, .cm-dropCursor': { borderLeftColor: cursor },
43
- // '&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {
44
- // backgroundColor: selection
45
- // },
46
- // '.cm-panels': { backgroundColor: darkBackground, color: ivory },
47
- // '.cm-panels.cm-panels-top': { borderBottom: '2px solid black' },
48
- // '.cm-panels.cm-panels-bottom': { borderTop: '2px solid black' },
49
- // '.cm-searchMatch': {
50
- // backgroundColor: '#72a1ff59',
51
- // outline: '1px solid #457dff'
52
- // },
53
- // '.cm-searchMatch.cm-searchMatch-selected': {
54
- // backgroundColor: '#6199ff2f'
55
- // },
56
- // '.cm-activeLine': { backgroundColor: '#6699ff0b' },
57
- // '.cm-selectionMatch': { backgroundColor: '#aafe661a' },
58
- // '&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket': {
59
- // backgroundColor: '#bad0f847'
60
- // },
61
- // '.cm-gutters': {
62
- // backgroundColor: background,
63
- // color: stone,
64
- // border: 'none'
65
- // },
66
- // '.cm-activeLineGutter': {
67
- // backgroundColor: highlightBackground
68
- // },
69
- // '.cm-foldPlaceholder': {
70
- // backgroundColor: 'transparent',
71
- // border: 'none',
72
- // color: '#ddd'
73
- // },
74
-
75
- '& .cm-tooltip': {
76
- backgroundColor: 'transparent',
77
- border: 'none',
78
- },
79
- // '.dark & .cm-tooltip': {
80
- // border: 'none',
81
- // backgroundColor: tooltipBackground,
82
- // },
83
- // '.dark & .cm-tooltip .cm-tooltip-arrow:before': {
84
- // borderTopColor: 'transparent',
85
- // borderBottomColor: 'transparent',
86
- // },
87
- // '.dark & .cm-tooltip .cm-tooltip-arrow:after': {
88
- // borderTopColor: tooltipBackground,
89
- // borderBottomColor: tooltipBackground,
90
- // },
91
- // '.dark & .cm-tooltip-autocomplete': {
92
- // '& > ul > li[aria-selected]': {
93
- // backgroundColor: highlightBackground,
94
- // color: ivory,
95
- // },
96
- // },
97
- '&.cm-focused': {
98
- outline: 'none',
99
- },
100
- '& .cm-line': {
101
- paddingInline: 0,
102
- lineHeight: 1.6,
103
- minBlockSize: '1.6em',
104
- },
105
- '& .cm-line *': {
106
- lineHeight: 1.6,
107
- },
108
- '&.cm-focused .cm-selectionBackground, & .cm-selectionBackground': {
109
- background: get(tokens, 'extend.colors.primary.150', '#00ffff'),
110
- },
111
- '.dark & .cm-selectionBackground, .dark &.cm-focused .cm-selectionBackground': {
112
- background: get(tokens, 'extend.colors.primary.850', '#00ffff'),
113
- },
114
- '& .cm-selectionMatch': {
115
- background: get(tokens, 'extend.colors.primary.250', '#00ffff') + '44',
116
- },
117
- '.dark & .cm-selectionMatch': {
118
- background: get(tokens, 'extend.colors.primary.600', '#00ffff') + '44',
119
- },
120
- '& .cm-content': {
121
- padding: 0,
122
- caretColor: 'black',
123
- },
124
- '.dark & .cm-content': {
125
- caretColor: 'white',
126
- },
127
- '& .cm-cursor': {
128
- borderLeftColor: 'black',
129
- },
130
- '.dark & .cm-cursor': {
131
- borderLeftColor: 'white',
132
- },
133
- '.cm-placeholder': {
134
- fontFamily: get(tokens, 'fontFamily.body', []).join(','),
135
- },
136
- '& .cm-scroller': {
137
- fontFamily: get(tokens, 'fontFamily.mono', []).join(','),
138
- overflow: 'visible',
139
- },
140
- '& .cm-activeLine': {
141
- backgroundColor: 'transparent',
142
- },
143
- '.dark & .cm-activeLine': {
144
- backgroundColor: 'transparent',
145
- },
146
- '& .cm-ySelectionInfo': {
147
- fontFamily: get(tokens, 'fontFamily.body', []).join(','),
148
- padding: '2px 4px',
149
- marginBlockStart: '-4px',
150
- },
151
- '& .cm-ySelection, & .cm-selectionMatch': {
152
- paddingBlockStart: '.15em',
153
- paddingBlockEnd: '.15em',
154
- },
155
- '& .cm-ySelection, & .cm-yLineSelection': {
156
- mixBlendMode: 'multiply',
157
- },
158
- '.dark & .cm-ySelection, .dark & .cm-yLineSelection': {
159
- mixBlendMode: 'screen',
160
- },
161
- '& .cm-ySelectionCaret': {
162
- display: 'inline-block',
163
- insetBlockStart: '.1em',
164
- blockSize: '1.4em',
165
- verticalAlign: 'top',
166
- },
167
- '& .cm-yLineSelection': {
168
- margin: '0',
169
- },
170
- '.cm-link': {
171
- color: 'rgb(20 89 208)', // TODO(burdon): Rationalize.
172
- textDecorationLine: 'underline',
173
- textDecorationThickness: '1px',
174
- textUnderlineOffset: '2px',
175
- borderRadius: '.125rem',
176
- },
177
- // TODO(burdon): Document.
178
- ...Object.keys(get(tokens, 'extend.fontSize', {})).reduce((acc: Record<string, any>, fontSize) => {
179
- const height = get(tokens, ['extend', 'fontSize', fontSize, 1, 'lineHeight']);
180
- // TODO(thure): This appears to be the best or only way to set selection caret heights, but it's far more verbose than it needs to be.
181
- acc[`& .text-${fontSize} + .cm-ySelectionCaret`] = { height };
182
- acc[`& .text-${fontSize} + .cm-ySelection + .cm-ySelectionCaret`] = { height };
183
- acc[`& .text-${fontSize} + .cm-widgetBuffer + .cm-ySelectionCaret`] = { height };
184
- return acc;
185
- }, {}),
186
- };
187
-
188
- export const markdownHighlightStyle = HighlightStyle.define(
189
- [
190
- {
191
- tag: [
192
- tags.keyword,
193
- tags.name,
194
- tags.deleted,
195
- tags.character,
196
- tags.propertyName,
197
- tags.macroName,
198
- tags.color,
199
- tags.constant(tags.name),
200
- tags.standard(tags.name),
201
- tags.definition(tags.name),
202
- tags.separator,
203
- tags.typeName,
204
- tags.className,
205
- tags.number,
206
- tags.changed,
207
- tags.annotation,
208
- tags.modifier,
209
- tags.self,
210
- tags.namespace,
211
- tags.operator,
212
- tags.operatorKeyword,
213
- tags.escape,
214
- tags.regexp,
215
- tags.special(tags.string),
216
- tags.meta,
217
- tags.comment,
218
- tags.atom,
219
- tags.bool,
220
- tags.special(tags.variableName),
221
- tags.processingInstruction,
222
- tags.string,
223
- tags.inserted,
224
- tags.invalid,
225
- ],
226
- color: 'inherit !important',
227
- },
228
- {
229
- tag: [tags.link, tags.url],
230
- color: 'inherit !important',
231
- textDecoration: 'none !important',
232
- },
233
- {
234
- tag: [tags.function(tags.variableName), tags.labelName],
235
- color: malibu,
236
- fontFamily: monospace,
237
- },
238
- {
239
- tag: [
240
- markdownTags.codeMark,
241
- markdownTags.emphasisMark,
242
- markdownTags.headingMark,
243
- markdownTags.linkLabel,
244
- markdownTags.linkReference,
245
- markdownTags.listMark,
246
- markdownTags.quoteMark,
247
- markdownTags.url,
248
- tags.meta,
249
- tags.processingInstruction,
250
- ],
251
- class: mark,
252
- },
253
- { tag: [markdownTags.codeText, markdownTags.inlineCode], class: 'font-mono' },
254
- { tag: tags.emphasis, class: italic },
255
- { tag: tags.heading1, class: heading[1] },
256
- { tag: tags.heading2, class: heading[2] },
257
- { tag: tags.heading3, class: heading[3] },
258
- { tag: tags.heading4, class: heading[4] },
259
- { tag: tags.heading5, class: heading[5] },
260
- { tag: tags.heading6, class: heading[6] },
261
- { tag: tags.strikethrough, class: strikethrough },
262
- { tag: tags.strong, class: bold },
263
- ],
264
- { scope: markdownLanguage, all: { fontFamily: get(tokens, 'fontFamily.body', []).join(',') } },
265
- );
@@ -1,45 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import type { Extension } from '@codemirror/state';
6
- import { useEffect, useMemo } from 'react';
7
- import { yCollab } from 'y-codemirror.next';
8
-
9
- import { generateName } from '@dxos/display-name';
10
- import { isDocAccessor } from '@dxos/echo-schema';
11
- import type { ThemeMode } from '@dxos/react-ui';
12
- import { getColorForValue } from '@dxos/react-ui-theme';
13
- import { YText } from '@dxos/text-model';
14
-
15
- import type { EditorModel } from './useTextModel';
16
- import { automergePlugin } from '../automerge/automerge-plugin';
17
-
18
- /**
19
- * Replication and awareness (incl. remote selection).
20
- * https://codemirror.net/docs/ref/#collab
21
- */
22
- export const useCollaboration = (model: EditorModel, themeMode: ThemeMode): Extension | undefined => {
23
- const { provider, peer, content } = model;
24
- const extension = useMemo(() => {
25
- if (content instanceof YText) {
26
- return yCollab(content, provider?.awareness);
27
- } else if (isDocAccessor(content)) {
28
- return automergePlugin(content.handle, content.path);
29
- } else {
30
- return undefined;
31
- }
32
- }, []);
33
-
34
- useEffect(() => {
35
- if (provider && peer) {
36
- provider.awareness.setLocalStateField('user', {
37
- name: peer.name ?? generateName(peer.id),
38
- color: getColorForValue({ value: peer.id, type: 'color' }),
39
- colorLight: getColorForValue({ value: peer.id, themeMode, type: 'highlight' }),
40
- });
41
- }
42
- }, [provider, peer, themeMode]);
43
-
44
- return extension;
45
- };
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- export * from './cursors';
6
- export * from './space-provider';
File without changes