@dxos/react-ui-editor 0.8.4-main.c4373fc → 0.8.4-main.c85a9c8dae

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 (422) hide show
  1. package/dist/lib/browser/index.mjs +1143 -8424
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +1143 -8423
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/components/Editor/Editor.d.ts +43 -21
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +23 -0
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  11. package/dist/types/src/components/EditorContent/EditorContent.d.ts +31 -0
  12. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +1 -0
  13. package/dist/types/src/components/EditorContent/controller.d.ts +10 -0
  14. package/dist/types/src/components/EditorContent/controller.d.ts.map +1 -0
  15. package/dist/types/src/components/EditorContent/index.d.ts +3 -0
  16. package/dist/types/src/components/EditorContent/index.d.ts.map +1 -0
  17. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +36 -0
  18. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  20. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  22. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  24. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +46 -0
  26. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  28. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  30. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  32. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +28 -2
  34. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  35. package/dist/types/src/components/EditorToolbar/actions.d.ts +25 -0
  36. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorToolbar/blocks.d.ts +9 -7
  38. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/formatting.d.ts +9 -7
  40. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/headings.d.ts +9 -7
  42. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/image.d.ts +5 -11
  44. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/index.d.ts +2 -1
  46. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/search.d.ts +5 -11
  48. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +11 -0
  50. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +1 -0
  51. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +10 -8
  52. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  53. package/dist/types/src/components/index.d.ts +4 -2
  54. package/dist/types/src/components/index.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useTextEditor.d.ts +4 -8
  56. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  57. package/dist/types/src/index.d.ts +0 -8
  58. package/dist/types/src/index.d.ts.map +1 -1
  59. package/dist/types/src/{extensions/automerge/automerge.stories.d.ts → stories/Automerge.stories.d.ts} +5 -8
  60. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  61. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -1
  62. package/dist/types/src/stories/Comments.stories.d.ts +4 -3
  63. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  64. package/dist/types/src/stories/EditorToolbar.stories.d.ts +4 -4
  65. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  66. package/dist/types/src/stories/Experimental.stories.d.ts +4 -3
  67. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  68. package/dist/types/src/stories/Markdown.stories.d.ts +4 -3
  69. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  70. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/{CommandMenu.stories.d.ts → Popover.stories.d.ts} +6 -5
  72. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  73. package/dist/types/src/stories/Preview.stories.d.ts +5 -3
  74. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  76. package/dist/types/src/stories/TextEditor.stories.d.ts +4 -4
  77. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  78. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  79. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  80. package/dist/types/src/stories/components/EditorStory.d.ts +9 -18
  81. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  82. package/dist/types/src/stories/components/util.d.ts +3 -3
  83. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  84. package/dist/types/src/translations.d.ts +5 -5
  85. package/dist/types/src/translations.d.ts.map +1 -1
  86. package/dist/types/src/util/index.d.ts +0 -5
  87. package/dist/types/src/util/index.d.ts.map +1 -1
  88. package/dist/types/src/util/react.d.ts +6 -5
  89. package/dist/types/src/util/react.d.ts.map +1 -1
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +68 -72
  92. package/src/components/Editor/Editor.stories.tsx +95 -0
  93. package/src/components/Editor/Editor.tsx +167 -56
  94. package/src/components/EditorContent/EditorContent.tsx +83 -0
  95. package/src/components/EditorContent/controller.ts +50 -0
  96. package/src/components/EditorContent/index.ts +6 -0
  97. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +228 -0
  98. package/src/components/EditorMenuProvider/index.ts +10 -0
  99. package/src/components/EditorMenuProvider/menu-presets.ts +124 -0
  100. package/src/components/EditorMenuProvider/menu.ts +70 -0
  101. package/src/components/EditorMenuProvider/popover.ts +285 -0
  102. package/src/components/EditorMenuProvider/useEditorMenu.ts +179 -0
  103. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  104. package/src/components/EditorPreviewProvider/index.ts +5 -0
  105. package/src/components/EditorToolbar/EditorToolbar.tsx +102 -105
  106. package/src/components/EditorToolbar/{lists.ts → actions.ts} +48 -17
  107. package/src/components/EditorToolbar/blocks.ts +7 -7
  108. package/src/components/EditorToolbar/formatting.ts +7 -7
  109. package/src/components/EditorToolbar/headings.ts +20 -17
  110. package/src/components/EditorToolbar/image.ts +10 -3
  111. package/src/components/EditorToolbar/index.ts +3 -7
  112. package/src/components/EditorToolbar/search.ts +10 -3
  113. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  114. package/src/components/EditorToolbar/view-mode.ts +7 -6
  115. package/src/components/index.ts +6 -2
  116. package/src/hooks/useTextEditor.ts +33 -27
  117. package/src/index.ts +0 -10
  118. package/src/stories/Automerge.stories.tsx +174 -0
  119. package/src/stories/CommandDialog.stories.tsx +18 -26
  120. package/src/stories/Comments.stories.tsx +48 -44
  121. package/src/stories/EditorToolbar.stories.tsx +36 -21
  122. package/src/stories/Experimental.stories.tsx +6 -8
  123. package/src/stories/Markdown.stories.tsx +16 -16
  124. package/src/stories/Outliner.stories.tsx +20 -21
  125. package/src/stories/Popover.stories.tsx +158 -0
  126. package/src/stories/Preview.stories.tsx +100 -81
  127. package/src/stories/Tags.stories.tsx +36 -13
  128. package/src/stories/TextEditor.stories.tsx +16 -48
  129. package/src/stories/Theme.stories.tsx +61 -0
  130. package/src/stories/components/EditorStory.tsx +32 -25
  131. package/src/stories/components/util.tsx +60 -31
  132. package/src/translations.ts +4 -4
  133. package/src/util/index.ts +1 -6
  134. package/src/util/react.tsx +8 -13
  135. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  136. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  137. package/dist/lib/browser/testing/index.mjs +0 -76
  138. package/dist/lib/browser/testing/index.mjs.map +0 -7
  139. package/dist/lib/browser/types/index.mjs +0 -13
  140. package/dist/lib/browser/types/index.mjs.map +0 -7
  141. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  142. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  143. package/dist/lib/node-esm/testing/index.mjs +0 -78
  144. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  145. package/dist/lib/node-esm/types/index.mjs +0 -14
  146. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  147. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts +0 -38
  148. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts.map +0 -1
  149. package/dist/types/src/components/CommandMenu/index.d.ts +0 -2
  150. package/dist/types/src/components/CommandMenu/index.d.ts.map +0 -1
  151. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  152. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  153. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  154. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  155. package/dist/types/src/defaults.d.ts +0 -14
  156. package/dist/types/src/defaults.d.ts.map +0 -1
  157. package/dist/types/src/extensions/annotations.d.ts +0 -9
  158. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  159. package/dist/types/src/extensions/autocomplete.d.ts +0 -26
  160. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  161. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  162. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  163. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  164. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  165. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  166. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  167. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  168. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  169. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  170. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  171. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  172. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  173. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  174. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  175. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  177. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  178. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  179. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  180. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  181. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  182. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  183. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  184. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  185. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  186. package/dist/types/src/extensions/blast.d.ts +0 -25
  187. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  188. package/dist/types/src/extensions/command-dialog/action.d.ts +0 -17
  189. package/dist/types/src/extensions/command-dialog/action.d.ts.map +0 -1
  190. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts +0 -6
  191. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts.map +0 -1
  192. package/dist/types/src/extensions/command-dialog/hint.d.ts +0 -19
  193. package/dist/types/src/extensions/command-dialog/hint.d.ts.map +0 -1
  194. package/dist/types/src/extensions/command-dialog/index.d.ts +0 -4
  195. package/dist/types/src/extensions/command-dialog/index.d.ts.map +0 -1
  196. package/dist/types/src/extensions/command-dialog/state.d.ts +0 -16
  197. package/dist/types/src/extensions/command-dialog/state.d.ts.map +0 -1
  198. package/dist/types/src/extensions/command-dialog/typeahead.d.ts +0 -22
  199. package/dist/types/src/extensions/command-dialog/typeahead.d.ts.map +0 -1
  200. package/dist/types/src/extensions/command-menu/command-menu.d.ts +0 -20
  201. package/dist/types/src/extensions/command-menu/command-menu.d.ts.map +0 -1
  202. package/dist/types/src/extensions/command-menu/index.d.ts +0 -3
  203. package/dist/types/src/extensions/command-menu/index.d.ts.map +0 -1
  204. package/dist/types/src/extensions/command-menu/placeholder.d.ts +0 -10
  205. package/dist/types/src/extensions/command-menu/placeholder.d.ts.map +0 -1
  206. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts +0 -24
  207. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts.map +0 -1
  208. package/dist/types/src/extensions/comments.d.ts +0 -95
  209. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  210. package/dist/types/src/extensions/debug.d.ts +0 -3
  211. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  212. package/dist/types/src/extensions/dnd.d.ts +0 -9
  213. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  214. package/dist/types/src/extensions/factories.d.ts +0 -83
  215. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  216. package/dist/types/src/extensions/floating-menu.d.ts +0 -7
  217. package/dist/types/src/extensions/floating-menu.d.ts.map +0 -1
  218. package/dist/types/src/extensions/focus.d.ts +0 -7
  219. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  220. package/dist/types/src/extensions/folding.d.ts +0 -7
  221. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  222. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  223. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  224. package/dist/types/src/extensions/index.d.ts +0 -27
  225. package/dist/types/src/extensions/index.d.ts.map +0 -1
  226. package/dist/types/src/extensions/json.d.ts +0 -7
  227. package/dist/types/src/extensions/json.d.ts.map +0 -1
  228. package/dist/types/src/extensions/listener.d.ts +0 -11
  229. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  230. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  231. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  232. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  233. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  234. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  235. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  236. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  237. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  238. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  239. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  240. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  241. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  242. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  243. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  244. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  245. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  246. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  247. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  248. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  249. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  250. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  251. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  252. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  253. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  254. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  255. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  256. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  257. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  258. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  259. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  260. package/dist/types/src/extensions/mention.d.ts +0 -7
  261. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  262. package/dist/types/src/extensions/modes.d.ts +0 -10
  263. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  264. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  265. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  266. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  267. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  268. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  269. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  270. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  271. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  272. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  273. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  274. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  275. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  276. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  277. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  278. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  279. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  280. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  281. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  282. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  283. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  284. package/dist/types/src/extensions/preview/preview.d.ts +0 -29
  285. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  286. package/dist/types/src/extensions/selection.d.ts +0 -24
  287. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  288. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  289. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  290. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  291. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  292. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  293. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  294. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  295. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  296. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -72
  297. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  298. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  299. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  300. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  301. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  302. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  303. package/dist/types/src/styles/index.d.ts +0 -4
  304. package/dist/types/src/styles/index.d.ts.map +0 -1
  305. package/dist/types/src/styles/markdown.d.ts +0 -8
  306. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  307. package/dist/types/src/styles/theme.d.ts +0 -38
  308. package/dist/types/src/styles/theme.d.ts.map +0 -1
  309. package/dist/types/src/styles/tokens.d.ts +0 -3
  310. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  311. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  312. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  313. package/dist/types/src/testing/index.d.ts +0 -3
  314. package/dist/types/src/testing/index.d.ts.map +0 -1
  315. package/dist/types/src/testing/util.d.ts +0 -3
  316. package/dist/types/src/testing/util.d.ts.map +0 -1
  317. package/dist/types/src/types/index.d.ts +0 -2
  318. package/dist/types/src/types/index.d.ts.map +0 -1
  319. package/dist/types/src/types/types.d.ts +0 -21
  320. package/dist/types/src/types/types.d.ts.map +0 -1
  321. package/dist/types/src/util/cursor.d.ts +0 -31
  322. package/dist/types/src/util/cursor.d.ts.map +0 -1
  323. package/dist/types/src/util/debug.d.ts +0 -17
  324. package/dist/types/src/util/debug.d.ts.map +0 -1
  325. package/dist/types/src/util/decorations.d.ts +0 -4
  326. package/dist/types/src/util/decorations.d.ts.map +0 -1
  327. package/dist/types/src/util/dom.d.ts +0 -10
  328. package/dist/types/src/util/dom.d.ts.map +0 -1
  329. package/dist/types/src/util/facet.d.ts +0 -3
  330. package/dist/types/src/util/facet.d.ts.map +0 -1
  331. package/src/components/CommandMenu/CommandMenu.tsx +0 -348
  332. package/src/components/CommandMenu/index.ts +0 -5
  333. package/src/components/EditorToolbar/util.ts +0 -76
  334. package/src/defaults.ts +0 -52
  335. package/src/extensions/annotations.ts +0 -55
  336. package/src/extensions/autocomplete.ts +0 -219
  337. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  338. package/src/extensions/automerge/automerge.test.tsx +0 -78
  339. package/src/extensions/automerge/automerge.ts +0 -86
  340. package/src/extensions/automerge/cursor.ts +0 -28
  341. package/src/extensions/automerge/defs.ts +0 -31
  342. package/src/extensions/automerge/index.ts +0 -5
  343. package/src/extensions/automerge/sync.ts +0 -75
  344. package/src/extensions/automerge/update-automerge.ts +0 -50
  345. package/src/extensions/automerge/update-codemirror.ts +0 -115
  346. package/src/extensions/autoscroll.ts +0 -157
  347. package/src/extensions/awareness/awareness-provider.ts +0 -127
  348. package/src/extensions/awareness/awareness.ts +0 -315
  349. package/src/extensions/awareness/index.ts +0 -6
  350. package/src/extensions/blast.ts +0 -363
  351. package/src/extensions/command-dialog/action.ts +0 -55
  352. package/src/extensions/command-dialog/command-dialog.ts +0 -34
  353. package/src/extensions/command-dialog/hint.ts +0 -103
  354. package/src/extensions/command-dialog/index.ts +0 -7
  355. package/src/extensions/command-dialog/state.ts +0 -90
  356. package/src/extensions/command-dialog/typeahead.ts +0 -129
  357. package/src/extensions/command-menu/command-menu.ts +0 -210
  358. package/src/extensions/command-menu/index.ts +0 -6
  359. package/src/extensions/command-menu/placeholder.ts +0 -113
  360. package/src/extensions/command-menu/useCommandMenu.ts +0 -134
  361. package/src/extensions/comments.ts +0 -597
  362. package/src/extensions/debug.ts +0 -15
  363. package/src/extensions/dnd.ts +0 -37
  364. package/src/extensions/factories.ts +0 -284
  365. package/src/extensions/floating-menu.ts +0 -126
  366. package/src/extensions/focus.ts +0 -36
  367. package/src/extensions/folding.tsx +0 -44
  368. package/src/extensions/hashtag.tsx +0 -68
  369. package/src/extensions/index.ts +0 -30
  370. package/src/extensions/json.ts +0 -57
  371. package/src/extensions/listener.ts +0 -38
  372. package/src/extensions/markdown/action.ts +0 -117
  373. package/src/extensions/markdown/bundle.ts +0 -93
  374. package/src/extensions/markdown/changes.test.ts +0 -26
  375. package/src/extensions/markdown/changes.ts +0 -149
  376. package/src/extensions/markdown/debug.ts +0 -44
  377. package/src/extensions/markdown/decorate.ts +0 -601
  378. package/src/extensions/markdown/formatting.test.ts +0 -498
  379. package/src/extensions/markdown/formatting.ts +0 -1267
  380. package/src/extensions/markdown/highlight.ts +0 -183
  381. package/src/extensions/markdown/image.ts +0 -118
  382. package/src/extensions/markdown/index.ts +0 -13
  383. package/src/extensions/markdown/link.ts +0 -50
  384. package/src/extensions/markdown/parser.test.ts +0 -75
  385. package/src/extensions/markdown/styles.ts +0 -135
  386. package/src/extensions/markdown/table.ts +0 -150
  387. package/src/extensions/mention.ts +0 -41
  388. package/src/extensions/modes.ts +0 -41
  389. package/src/extensions/outliner/commands.ts +0 -270
  390. package/src/extensions/outliner/editor.test.ts +0 -33
  391. package/src/extensions/outliner/editor.ts +0 -184
  392. package/src/extensions/outliner/index.ts +0 -7
  393. package/src/extensions/outliner/outliner.test.ts +0 -100
  394. package/src/extensions/outliner/outliner.ts +0 -167
  395. package/src/extensions/outliner/selection.ts +0 -50
  396. package/src/extensions/outliner/tree.test.ts +0 -168
  397. package/src/extensions/outliner/tree.ts +0 -317
  398. package/src/extensions/preview/index.ts +0 -5
  399. package/src/extensions/preview/preview.ts +0 -190
  400. package/src/extensions/selection.ts +0 -100
  401. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  402. package/src/extensions/tags/extended-markdown.ts +0 -78
  403. package/src/extensions/tags/index.ts +0 -7
  404. package/src/extensions/tags/streamer.ts +0 -243
  405. package/src/extensions/tags/xml-tags.ts +0 -393
  406. package/src/extensions/tags/xml-util.ts +0 -94
  407. package/src/extensions/typewriter.ts +0 -68
  408. package/src/stories/CommandMenu.stories.tsx +0 -158
  409. package/src/styles/index.ts +0 -7
  410. package/src/styles/markdown.ts +0 -26
  411. package/src/styles/theme.ts +0 -268
  412. package/src/styles/tokens.ts +0 -17
  413. package/src/testing/PreviewPopover.tsx +0 -78
  414. package/src/testing/index.ts +0 -6
  415. package/src/testing/util.ts +0 -7
  416. package/src/types/index.ts +0 -5
  417. package/src/types/types.ts +0 -32
  418. package/src/util/cursor.ts +0 -56
  419. package/src/util/debug.ts +0 -64
  420. package/src/util/decorations.ts +0 -21
  421. package/src/util/dom.ts +0 -34
  422. package/src/util/facet.ts +0 -13
@@ -1,284 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';
6
- import { defaultKeymap, history, historyKeymap, indentWithTab, standardKeymap } from '@codemirror/commands';
7
- import { bracketMatching } from '@codemirror/language';
8
- import { searchKeymap } from '@codemirror/search';
9
- import { type ChangeSpec, EditorState, type Extension, type TransactionSpec } from '@codemirror/state';
10
- import {
11
- EditorView,
12
- type KeyBinding,
13
- ViewPlugin,
14
- drawSelection,
15
- dropCursor,
16
- highlightActiveLine,
17
- keymap,
18
- lineNumbers,
19
- placeholder,
20
- scrollPastEnd,
21
- } from '@codemirror/view';
22
- import { vscodeDarkInit, vscodeDarkStyle, vscodeLightInit, vscodeLightStyle } from '@uiw/codemirror-theme-vscode';
23
- import defaultsDeep from 'lodash.defaultsdeep';
24
- import merge from 'lodash.merge';
25
-
26
- import { generateName } from '@dxos/display-name';
27
- import { log } from '@dxos/log';
28
- import { type DocAccessor, type Space } from '@dxos/react-client/echo';
29
- import { type Identity } from '@dxos/react-client/halo';
30
- import { type ThemeMode } from '@dxos/react-ui';
31
- import { type HuePalette } from '@dxos/react-ui-theme';
32
- import { hexToHue, isTruthy } from '@dxos/util';
33
-
34
- import { editorGutter, editorMonospace } from '../defaults';
35
- import { type ThemeStyles, defaultTheme } from '../styles';
36
-
37
- import { automerge } from './automerge';
38
- import { SpaceAwarenessProvider, awareness } from './awareness';
39
- import { focus } from './focus';
40
-
41
- //
42
- // Basic
43
- //
44
-
45
- export const filterChars = (chars: RegExp) => {
46
- return EditorState.transactionFilter.of((transaction) => {
47
- if (!transaction.docChanged) return transaction;
48
-
49
- const changes: ChangeSpec[] = [];
50
- transaction.changes.iterChanges((fromA, toA, fromB, toB, text) => {
51
- const inserted = text.toString();
52
- const filtered = inserted.replace(chars, '');
53
- if (inserted !== filtered) {
54
- changes.push({
55
- from: fromB,
56
- to: toB,
57
- insert: filtered,
58
- });
59
- }
60
- });
61
-
62
- if (changes.length) {
63
- return [transaction, { changes, sequential: true } as TransactionSpec];
64
- }
65
- return transaction;
66
- });
67
- };
68
-
69
- /**
70
- * https://codemirror.net/docs/extensions
71
- * https://github.com/codemirror/basic-setup
72
- * https://github.com/codemirror/basic-setup/blob/main/src/codemirror.ts
73
- * https://github.com/codemirror/theme-one-dark
74
- */
75
- export type BasicExtensionsOptions = {
76
- allowMultipleSelections?: boolean;
77
- bracketMatching?: boolean;
78
- closeBrackets?: boolean;
79
- dropCursor?: boolean;
80
- drawSelection?: boolean;
81
- editable?: boolean;
82
- focus?: boolean;
83
- highlightActiveLine?: boolean;
84
- history?: boolean;
85
- indentWithTab?: boolean;
86
- keymap?: null | 'default' | 'standard';
87
- lineNumbers?: boolean;
88
- /** If false then do not set a max-width or side margin on the editor. */
89
- lineWrapping?: boolean;
90
- monospace?: boolean;
91
- placeholder?: string;
92
- /** If true user cannot edit the text, but they can still select and copy it. */
93
- readOnly?: boolean;
94
- search?: boolean;
95
- /** NOTE: Do not use with stack sections. */
96
- scrollPastEnd?: boolean;
97
- standardKeymap?: boolean;
98
- tabSize?: number;
99
- };
100
-
101
- const defaultBasicOptions: BasicExtensionsOptions = {
102
- allowMultipleSelections: true,
103
- bracketMatching: true,
104
- closeBrackets: true,
105
- drawSelection: true,
106
- focus: true,
107
- history: true,
108
- keymap: 'standard',
109
- lineWrapping: true,
110
- search: false,
111
- } as const;
112
-
113
- const keymaps: { [key: string]: readonly KeyBinding[] } = {
114
- // https://codemirror.net/docs/ref/#commands.standardKeymap
115
- standard: standardKeymap,
116
- // https://codemirror.net/docs/ref/#commands.defaultKeymap
117
- default: defaultKeymap,
118
- };
119
-
120
- export const createBasicExtensions = (_props?: BasicExtensionsOptions): Extension => {
121
- const props = defaultsDeep({}, _props, defaultBasicOptions);
122
- return [
123
- // NOTE: Doesn't catch errors in keymap functions.
124
- EditorView.exceptionSink.of((err) => {
125
- log.catch(err);
126
- }),
127
-
128
- props.allowMultipleSelections && EditorState.allowMultipleSelections.of(true),
129
- props.bracketMatching && bracketMatching(),
130
- props.closeBrackets && closeBrackets(),
131
- props.dropCursor && dropCursor(),
132
- props.drawSelection && drawSelection({ cursorBlinkRate: 1_200 }),
133
- props.editable !== undefined && EditorView.editable.of(props.editable),
134
- props.focus && focus,
135
- props.highlightActiveLine && highlightActiveLine(),
136
- props.history && history(),
137
- props.lineNumbers && [lineNumbers(), editorGutter],
138
- props.lineWrapping && EditorView.lineWrapping,
139
- props.monospace && editorMonospace,
140
- props.placeholder && placeholder(props.placeholder),
141
- props.readOnly !== undefined && EditorState.readOnly.of(props.readOnly),
142
- props.scrollPastEnd && scrollPastEnd(),
143
- props.tabSize && EditorState.tabSize.of(props.tabSize),
144
-
145
- // https://codemirror.net/docs/ref/#view.KeyBinding
146
- keymap.of(
147
- [
148
- ...((props.keymap && keymaps[props.keymap]) ?? []),
149
- // NOTE: Tabs are also configured by markdown extension.
150
- // https://codemirror.net/docs/ref/#commands.indentWithTab
151
- ...(props.indentWithTab ? [indentWithTab] : []),
152
- // https://codemirror.net/docs/ref/#autocomplete.closeBracketsKeymap
153
- ...(props.closeBrackets ? closeBracketsKeymap : []),
154
- // https://codemirror.net/docs/ref/#commands.historyKeymap
155
- ...(props.history ? historyKeymap : []),
156
- // https://codemirror.net/docs/ref/#search.searchKeymap
157
- ...(props.search ? searchKeymap : []),
158
- // Disable bindings that conflict with system shortcuts.
159
- // TODO(burdon): Catalog global shortcuts.
160
- {
161
- key: 'Mod-Shift-k',
162
- preventDefault: true,
163
- run: () => true,
164
- },
165
- ].filter(isTruthy),
166
- ),
167
- ].filter(isTruthy);
168
- };
169
-
170
- //
171
- // Theme
172
- //
173
-
174
- export type ThemeExtensionsOptions = {
175
- themeMode?: ThemeMode;
176
- styles?: ThemeStyles;
177
- syntaxHighlighting?: boolean;
178
- slots?: {
179
- editor?: {
180
- className?: string;
181
- };
182
- scroll?: {
183
- className?: string;
184
- };
185
- content?: {
186
- className?: string;
187
- };
188
- };
189
- };
190
-
191
- export const grow: ThemeExtensionsOptions['slots'] = {
192
- editor: {
193
- className: 'is-full bs-full',
194
- },
195
- } as const;
196
-
197
- export const fullWidth: ThemeExtensionsOptions['slots'] = {
198
- editor: {
199
- className: 'is-full',
200
- },
201
- } as const;
202
-
203
- export const defaultThemeSlots = grow;
204
-
205
- const semanticTokensSettings = {
206
- settings: {
207
- background: 'var(--dx-baseSurface)',
208
- foreground: 'var(--dx-baseText)',
209
- },
210
- };
211
-
212
- export const defaultStyles = {
213
- dark: vscodeDarkStyle,
214
- light: vscodeLightStyle,
215
- };
216
-
217
- /**
218
- * https://codemirror.net/examples/styling
219
- */
220
- export const createThemeExtensions = ({
221
- themeMode,
222
- styles,
223
- syntaxHighlighting: syntaxHighlightingProps,
224
- slots: slotsParam,
225
- }: ThemeExtensionsOptions = {}): Extension => {
226
- const slots = defaultsDeep({}, slotsParam, defaultThemeSlots);
227
- return [
228
- EditorView.darkTheme.of(themeMode === 'dark'),
229
- EditorView.baseTheme(styles ? merge({}, defaultTheme, styles) : defaultTheme),
230
- syntaxHighlightingProps && [
231
- themeMode === 'dark' ? vscodeDarkInit(semanticTokensSettings) : vscodeLightInit(semanticTokensSettings),
232
- ],
233
- slots.editor?.className && EditorView.editorAttributes.of({ class: slots.editor.className }),
234
- slots.content?.className && EditorView.contentAttributes.of({ class: slots.content.className }),
235
- slots.scroll?.className &&
236
- ViewPlugin.fromClass(
237
- class {
238
- constructor(view: EditorView) {
239
- view.scrollDOM.classList.add(...slots.scroll.className.split(/\s+/));
240
- }
241
- },
242
- ),
243
- ].filter(isTruthy);
244
- };
245
-
246
- //
247
- // Data
248
- //
249
-
250
- export type DataExtensionsProps<T> = {
251
- id: string;
252
- text?: DocAccessor<T>;
253
- space?: Space;
254
- identity?: Identity | null;
255
- };
256
-
257
- // TODO(burdon): Move out of react-ui-editor (remove echo deps).
258
- export const createDataExtensions = <T>({ id, text, space, identity }: DataExtensionsProps<T>): Extension[] => {
259
- const extensions: Extension[] = [];
260
- if (text) {
261
- extensions.push(automerge(text));
262
- }
263
-
264
- if (space && identity) {
265
- const peerId = identity?.identityKey.toHex();
266
- const hue = (identity?.profile?.data?.hue as HuePalette | undefined) ?? hexToHue(peerId ?? '0');
267
- extensions.push(
268
- awareness(
269
- new SpaceAwarenessProvider({
270
- space,
271
- channel: `awareness.${id}`,
272
- peerId: identity.identityKey.toHex(),
273
- info: {
274
- darkColor: `var(--dx-${hue}Cursor)`,
275
- lightColor: `var(--dx-${hue}Cursor)`,
276
- displayName: identity.profile?.displayName ?? generateName(identity.identityKey.toHex()),
277
- },
278
- }),
279
- ),
280
- );
281
- }
282
-
283
- return extensions;
284
- };
@@ -1,126 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';
6
-
7
- import { type CleanupFn, addEventListener } from '@dxos/async';
8
-
9
- export type FloatingMenuOptions = {
10
- icon?: string;
11
- height?: number;
12
- padding?: number;
13
- };
14
-
15
- export const floatingMenu = (options: FloatingMenuOptions = {}) => [
16
- ViewPlugin.fromClass(
17
- class {
18
- view: EditorView;
19
- tag: HTMLElement;
20
- rafId?: number | null;
21
- cleanup?: CleanupFn;
22
-
23
- constructor(view: EditorView) {
24
- this.view = view;
25
-
26
- // Position context.
27
- const container = view.scrollDOM;
28
- if (getComputedStyle(container).position === 'static') {
29
- container.style.position = 'relative';
30
- }
31
-
32
- {
33
- const icon = document.createElement('dx-icon');
34
- icon.setAttribute('icon', options.icon ?? 'ph--dots-three-vertical--regular');
35
-
36
- this.tag = document.createElement('dx-anchor');
37
- this.tag.classList.add('cm-floating-menu-trigger');
38
- this.tag.appendChild(icon);
39
- }
40
-
41
- container.appendChild(this.tag);
42
-
43
- // Listen for scroll events.
44
- const handler = () => this.scheduleUpdate();
45
- this.cleanup = addEventListener(container, 'scroll', handler);
46
- this.scheduleUpdate();
47
- }
48
-
49
- destroy() {
50
- this.cleanup?.();
51
- this.tag.remove();
52
- if (this.rafId != null) {
53
- cancelAnimationFrame(this.rafId);
54
- }
55
- }
56
-
57
- update(update: ViewUpdate) {
58
- this.tag.dataset.focused = update.view.hasFocus ? 'true' : 'false';
59
- if (!update.view.hasFocus) {
60
- return;
61
- }
62
-
63
- // TODO(burdon): Timer to fade in/out.
64
- /*if (update.transactions.some((tr) => tr.effects.some((effect) => effect.is(openEffect)))) {
65
- this.tag.style.display = 'none';
66
- this.tag.classList.add('opacity-10');
67
- } else if (update.transactions.some((tr) => tr.effects.some((effect) => effect.is(closeEffect)))) {
68
- this.tag.style.display = '';
69
- } else */ if (
70
- update.docChanged ||
71
- update.focusChanged ||
72
- update.geometryChanged ||
73
- update.selectionSet ||
74
- update.viewportChanged
75
- ) {
76
- this.scheduleUpdate();
77
- }
78
- }
79
-
80
- updateButtonPosition() {
81
- const { x, width } = this.view.contentDOM.getBoundingClientRect();
82
-
83
- const pos = this.view.state.selection.main.head;
84
- const line = this.view.lineBlockAt(pos);
85
- const coords = this.view.coordsAtPos(line.from);
86
- if (!coords) {
87
- return;
88
- }
89
-
90
- const lineHeight = coords.bottom - coords.top;
91
- const dy = (lineHeight - (options.height ?? 32)) / 2;
92
-
93
- const offsetTop = coords.top + dy;
94
- const offsetLeft = x + width + (options.padding ?? 8);
95
-
96
- this.tag.style.top = `${offsetTop}px`;
97
- this.tag.style.left = `${offsetLeft}px`;
98
- this.tag.style.display = '';
99
- }
100
-
101
- scheduleUpdate() {
102
- if (this.rafId != null) {
103
- cancelAnimationFrame(this.rafId);
104
- }
105
-
106
- this.rafId = requestAnimationFrame(this.updateButtonPosition.bind(this));
107
- }
108
- },
109
- ),
110
-
111
- EditorView.theme({
112
- '.cm-floating-menu-trigger': {
113
- position: 'fixed',
114
- padding: '0',
115
- border: 'none',
116
- opacity: '0',
117
- display: 'grid',
118
- placeContent: 'center',
119
- width: '2rem',
120
- height: '2rem',
121
- },
122
- '&:focus-within .cm-floating-menu-trigger': {
123
- opacity: '1',
124
- },
125
- }),
126
- ];
@@ -1,36 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { StateEffect, StateField } from '@codemirror/state';
6
- import { EditorView } from '@codemirror/view';
7
-
8
- const focusEffect = StateEffect.define<boolean>();
9
-
10
- export const focusField = StateField.define<boolean>({
11
- create: () => false,
12
- update: (value, tr) => {
13
- for (const effect of tr.effects) {
14
- if (effect.is(focusEffect)) {
15
- return effect.value;
16
- }
17
- }
18
-
19
- return value;
20
- },
21
- });
22
-
23
- /**
24
- * Manage focus.
25
- */
26
- export const focus = [
27
- focusField,
28
- EditorView.domEventHandlers({
29
- focus: (_event, view) => {
30
- requestAnimationFrame(() => view.dispatch({ effects: focusEffect.of(true) }));
31
- },
32
- blur: (_event, view) => {
33
- requestAnimationFrame(() => view.dispatch({ effects: focusEffect.of(false) }));
34
- },
35
- }),
36
- ];
@@ -1,44 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { codeFolding, foldGutter } from '@codemirror/language';
6
- import { type Extension } from '@codemirror/state';
7
- import { EditorView } from '@codemirror/view';
8
- import React from 'react';
9
-
10
- import { Domino, Icon } from '@dxos/react-ui';
11
-
12
- import { renderRoot } from '../util';
13
-
14
- export type FoldingOptions = {};
15
-
16
- /**
17
- * https://codemirror.net/examples/gutter
18
- */
19
- export const folding = (_props: FoldingOptions = {}): Extension => [
20
- codeFolding({
21
- placeholderDOM: () => {
22
- return document.createElement('span'); // Collapse content.
23
- },
24
- }),
25
- foldGutter({
26
- markerDOM: (open) => {
27
- return renderRoot(
28
- Domino.of('div').classNames('flex h-full items-center').build(),
29
- // TODO(burdon): Use sprite directly.
30
- <Icon icon='ph--caret-right--bold' size={3} classNames={['mx-3 cursor-pointer', open && 'rotate-90']} />,
31
- );
32
- },
33
- }),
34
- EditorView.theme({
35
- '.cm-foldGutter': {
36
- opacity: 0.3,
37
- transition: 'opacity 0.3s',
38
- width: '32px',
39
- },
40
- '.cm-foldGutter:hover': {
41
- opacity: 1,
42
- },
43
- }),
44
- ];
@@ -1,68 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type Extension } from '@codemirror/state';
6
- import {
7
- Decoration,
8
- type DecorationSet,
9
- EditorView,
10
- MatchDecorator,
11
- ViewPlugin,
12
- type ViewUpdate,
13
- WidgetType,
14
- } from '@codemirror/view';
15
-
16
- import { getHashStyles, mx } from '@dxos/react-ui-theme';
17
-
18
- class TagWidget extends WidgetType {
19
- constructor(private _text: string) {
20
- super();
21
- }
22
-
23
- toDOM(): HTMLSpanElement {
24
- const span = document.createElement('span');
25
- span.className = mx('cm-tag', getHashStyles(this._text).surface);
26
- span.textContent = this._text;
27
- return span;
28
- }
29
- }
30
-
31
- const tagMatcher = new MatchDecorator({
32
- regexp: /#(\w+)\W/g,
33
- decoration: (match) =>
34
- Decoration.replace({
35
- widget: new TagWidget(match[1]),
36
- }),
37
- });
38
-
39
- // TODO(burdon): Autocomplete from existing tags?
40
- export const hashtag = (): Extension => [
41
- ViewPlugin.fromClass(
42
- class {
43
- tags: DecorationSet;
44
- constructor(view: EditorView) {
45
- this.tags = tagMatcher.createDeco(view);
46
- }
47
-
48
- update(update: ViewUpdate) {
49
- this.tags = tagMatcher.updateDeco(update, this.tags);
50
- }
51
- },
52
- {
53
- decorations: (instance) => instance.tags,
54
- provide: (plugin) =>
55
- EditorView.atomicRanges.of((view) => {
56
- return view.plugin(plugin)?.tags || Decoration.none;
57
- }),
58
- },
59
- ),
60
-
61
- EditorView.theme({
62
- '.cm-tag': {
63
- borderRadius: '4px',
64
- marginRight: '6px',
65
- padding: '2px 6px',
66
- },
67
- }),
68
- ];
@@ -1,30 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- export * from './annotations';
6
- export * from './autocomplete';
7
- export * from './autoscroll';
8
- export * from './automerge';
9
- export * from './awareness';
10
- export * from './blast';
11
- export * from './command-dialog';
12
- export * from './command-menu';
13
- export * from './comments';
14
- export * from './debug';
15
- export * from './dnd';
16
- export * from './factories';
17
- export * from './floating-menu';
18
- export * from './focus';
19
- export * from './folding';
20
- export * from './hashtag';
21
- export * from './json';
22
- export * from './listener';
23
- export * from './markdown';
24
- export * from './mention';
25
- export * from './modes';
26
- export * from './outliner';
27
- export * from './preview';
28
- export * from './selection';
29
- export * from './tags';
30
- export * from './typewriter';
@@ -1,57 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { json, jsonParseLinter } from '@codemirror/lang-json';
6
- import { type LintSource, linter } from '@codemirror/lint';
7
- import { type Extension } from '@codemirror/state';
8
- import Ajv, { type ValidateFunction } from 'ajv';
9
-
10
- import { type JsonSchemaType } from '@dxos/echo/internal';
11
-
12
- export type JsonExtensionsOptions = {
13
- schema?: JsonSchemaType;
14
- };
15
-
16
- export const createJsonExtensions = ({ schema }: JsonExtensionsOptions = {}): Extension => {
17
- let lintSource: LintSource = jsonParseLinter();
18
- if (schema) {
19
- // NOTE: Relaxing strict mode to allow additional custom schema properties.
20
- const ajv = new Ajv({ allErrors: false, strict: false });
21
- const validate = ajv.compile(schema);
22
- lintSource = schemaLinter(validate);
23
- }
24
-
25
- return [json(), linter(lintSource)];
26
- };
27
-
28
- const schemaLinter =
29
- (validate: ValidateFunction): LintSource =>
30
- (view) => {
31
- try {
32
- const jsonText = view.state.doc.toString();
33
- const jsonData = JSON.parse(jsonText);
34
- const valid = validate(jsonData);
35
- if (valid) {
36
- return [];
37
- }
38
-
39
- return (
40
- validate.errors?.map((err: any) => ({
41
- from: 0,
42
- to: jsonText.length,
43
- severity: 'error',
44
- message: `${err.instancePath || '(root)'} ${err.message}`,
45
- })) ?? []
46
- );
47
- } catch (err: unknown) {
48
- return [
49
- {
50
- from: 0,
51
- to: view.state.doc.length,
52
- severity: 'error',
53
- message: 'Invalid JSON: ' + (err as Error).message,
54
- },
55
- ];
56
- }
57
- };
@@ -1,38 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { type Extension } from '@codemirror/state';
6
- import { EditorView } from '@codemirror/view';
7
-
8
- import { documentId } from './selection';
9
-
10
- export type ListenerOptions = {
11
- onFocus?: (focusing: boolean) => void;
12
- onChange?: (text: string, id: string) => void;
13
- };
14
-
15
- /**
16
- * Event listener.
17
- * @deprecated Use EditorView.updateListener and listen for specific update events.
18
- */
19
- export const listener = ({ onFocus, onChange }: ListenerOptions): Extension => {
20
- const extensions: Extension[] = [];
21
-
22
- onFocus &&
23
- extensions.push(
24
- EditorView.focusChangeEffect.of((_, focusing) => {
25
- onFocus(focusing);
26
- return null;
27
- }),
28
- );
29
-
30
- onChange &&
31
- extensions.push(
32
- EditorView.updateListener.of((update) => {
33
- onChange(update.state.doc.toString(), update.state.facet(documentId));
34
- }),
35
- );
36
-
37
- return extensions;
38
- };