@dxos/react-ui-editor 0.8.4-main.f9ba587 → 0.8.4-main.fffef41

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 (374) hide show
  1. package/dist/lib/browser/{chunk-22UMM3QJ.mjs → chunk-HL3YF6WC.mjs} +2 -2
  2. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +8336 -6713
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types/index.mjs +1 -1
  7. package/dist/lib/node-esm/{chunk-YXYQPV6R.mjs → chunk-YJZGD3LY.mjs} +2 -2
  8. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +7 -0
  9. package/dist/lib/node-esm/index.mjs +8336 -6713
  10. package/dist/lib/node-esm/index.mjs.map +4 -4
  11. package/dist/lib/node-esm/meta.json +1 -1
  12. package/dist/lib/node-esm/types/index.mjs +1 -1
  13. package/dist/types/src/components/Editor/Editor.d.ts +37 -15
  14. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  15. package/dist/types/src/components/Editor/Editor.stories.d.ts +20 -0
  16. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  17. package/dist/types/src/components/EditorContent/EditorContent.d.ts +29 -0
  18. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorContent/EditorContent.stories.d.ts +26 -0
  20. package/dist/types/src/components/EditorContent/EditorContent.stories.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorContent/controller.d.ts +10 -0
  22. package/dist/types/src/components/EditorContent/controller.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorContent/index.d.ts +3 -0
  24. package/dist/types/src/components/EditorContent/index.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +36 -0
  26. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/index.d.ts +7 -0
  28. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  30. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  32. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +47 -0
  34. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  35. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  36. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorMenuProvider/util.d.ts +8 -0
  38. package/dist/types/src/components/EditorMenuProvider/util.d.ts.map +1 -0
  39. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  40. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  41. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  42. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  43. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +26 -2
  44. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/actions.d.ts +39 -0
  46. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +1 -0
  47. package/dist/types/src/components/EditorToolbar/blocks.d.ts +3 -3
  48. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/formatting.d.ts +3 -3
  50. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  51. package/dist/types/src/components/EditorToolbar/headings.d.ts +3 -3
  52. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  53. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  54. package/dist/types/src/components/EditorToolbar/index.d.ts +2 -1
  55. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  56. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  57. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +11 -0
  58. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +1 -0
  59. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +3 -3
  60. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  61. package/dist/types/src/components/index.d.ts +4 -2
  62. package/dist/types/src/components/index.d.ts.map +1 -1
  63. package/dist/types/src/defaults.d.ts.map +1 -1
  64. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts +17 -0
  65. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts.map +1 -0
  66. package/dist/types/src/extensions/autocomplete/index.d.ts +5 -0
  67. package/dist/types/src/extensions/autocomplete/index.d.ts.map +1 -0
  68. package/dist/types/src/extensions/autocomplete/match.d.ts +13 -0
  69. package/dist/types/src/extensions/autocomplete/match.d.ts.map +1 -0
  70. package/dist/types/src/extensions/autocomplete/placeholder.d.ts +20 -0
  71. package/dist/types/src/extensions/autocomplete/placeholder.d.ts.map +1 -0
  72. package/dist/types/src/extensions/autocomplete/typeahead.d.ts +10 -0
  73. package/dist/types/src/extensions/autocomplete/typeahead.d.ts.map +1 -0
  74. package/dist/types/src/extensions/automerge/automerge.d.ts +1 -1
  75. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  76. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +10 -19
  77. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
  78. package/dist/types/src/extensions/automerge/cursor.d.ts +1 -1
  79. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -1
  80. package/dist/types/src/extensions/automerge/defs.d.ts +1 -1
  81. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
  82. package/dist/types/src/extensions/automerge/sync.d.ts +3 -3
  83. package/dist/types/src/extensions/automerge/sync.d.ts.map +1 -1
  84. package/dist/types/src/extensions/automerge/update-automerge.d.ts +1 -1
  85. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
  86. package/dist/types/src/extensions/autoscroll.d.ts +20 -0
  87. package/dist/types/src/extensions/autoscroll.d.ts.map +1 -0
  88. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +1 -1
  89. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +1 -1
  90. package/dist/types/src/extensions/blocks.d.ts +2 -0
  91. package/dist/types/src/extensions/blocks.d.ts.map +1 -0
  92. package/dist/types/src/extensions/bookmarks.d.ts +12 -0
  93. package/dist/types/src/extensions/bookmarks.d.ts.map +1 -0
  94. package/dist/types/src/extensions/comments.d.ts +1 -1
  95. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  96. package/dist/types/src/extensions/dnd.d.ts.map +1 -1
  97. package/dist/types/src/extensions/factories.d.ts +20 -19
  98. package/dist/types/src/extensions/factories.d.ts.map +1 -1
  99. package/dist/types/src/extensions/focus.d.ts.map +1 -1
  100. package/dist/types/src/extensions/folding.d.ts.map +1 -1
  101. package/dist/types/src/extensions/index.d.ts +10 -1
  102. package/dist/types/src/extensions/index.d.ts.map +1 -1
  103. package/dist/types/src/extensions/json.d.ts +1 -1
  104. package/dist/types/src/extensions/json.d.ts.map +1 -1
  105. package/dist/types/src/extensions/listener.d.ts +8 -6
  106. package/dist/types/src/extensions/listener.d.ts.map +1 -1
  107. package/dist/types/src/extensions/markdown/action.d.ts.map +1 -1
  108. package/dist/types/src/extensions/markdown/bundle.d.ts +8 -2
  109. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
  110. package/dist/types/src/extensions/markdown/changes.d.ts +1 -1
  111. package/dist/types/src/extensions/markdown/changes.d.ts.map +1 -1
  112. package/dist/types/src/extensions/markdown/decorate.d.ts +9 -1
  113. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  114. package/dist/types/src/extensions/markdown/formatting.d.ts +2 -4
  115. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
  116. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +1 -1
  117. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
  118. package/dist/types/src/extensions/markdown/image.d.ts.map +1 -1
  119. package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
  120. package/dist/types/src/extensions/modal.d.ts +7 -0
  121. package/dist/types/src/extensions/modal.d.ts.map +1 -0
  122. package/dist/types/src/extensions/modes.d.ts +1 -1
  123. package/dist/types/src/extensions/modes.d.ts.map +1 -1
  124. package/dist/types/src/extensions/outliner/menu.d.ts +8 -0
  125. package/dist/types/src/extensions/outliner/menu.d.ts.map +1 -0
  126. package/dist/types/src/extensions/outliner/outliner.d.ts +1 -1
  127. package/dist/types/src/extensions/outliner/outliner.d.ts.map +1 -1
  128. package/dist/types/src/extensions/outliner/selection.d.ts.map +1 -1
  129. package/dist/types/src/extensions/outliner/tree.d.ts +2 -2
  130. package/dist/types/src/extensions/outliner/tree.d.ts.map +1 -1
  131. package/dist/types/src/extensions/preview/preview.d.ts +8 -8
  132. package/dist/types/src/extensions/preview/preview.d.ts.map +1 -1
  133. package/dist/types/src/extensions/replacer.d.ts +21 -0
  134. package/dist/types/src/extensions/replacer.d.ts.map +1 -0
  135. package/dist/types/src/extensions/replacer.test.d.ts +2 -0
  136. package/dist/types/src/extensions/replacer.test.d.ts.map +1 -0
  137. package/dist/types/src/extensions/scrolling.d.ts +78 -0
  138. package/dist/types/src/extensions/scrolling.d.ts.map +1 -0
  139. package/dist/types/src/extensions/state.d.ts +2 -0
  140. package/dist/types/src/extensions/state.d.ts.map +1 -0
  141. package/dist/types/src/extensions/submit.d.ts +10 -0
  142. package/dist/types/src/extensions/submit.d.ts.map +1 -0
  143. package/dist/types/src/extensions/tab.d.ts +4 -0
  144. package/dist/types/src/extensions/tab.d.ts.map +1 -0
  145. package/dist/types/src/extensions/tags/extended-markdown.d.ts +10 -0
  146. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +1 -0
  147. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +2 -0
  148. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +1 -0
  149. package/dist/types/src/extensions/tags/index.d.ts +4 -0
  150. package/dist/types/src/extensions/tags/index.d.ts.map +1 -0
  151. package/dist/types/src/extensions/tags/streamer.d.ts +12 -0
  152. package/dist/types/src/extensions/tags/streamer.d.ts.map +1 -0
  153. package/dist/types/src/extensions/tags/xml-tags.d.ts +97 -0
  154. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +1 -0
  155. package/dist/types/src/extensions/tags/xml-util.d.ts +10 -0
  156. package/dist/types/src/extensions/tags/xml-util.d.ts.map +1 -0
  157. package/dist/types/src/hooks/useTextEditor.d.ts +5 -9
  158. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  159. package/dist/types/src/stories/CommandDialog.stories.d.ts +14 -0
  160. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -0
  161. package/dist/types/src/stories/Comments.stories.d.ts +21 -10
  162. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  163. package/dist/types/src/stories/EditorToolbar.stories.d.ts +39 -3
  164. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  165. package/dist/types/src/stories/Experimental.stories.d.ts +22 -13
  166. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  167. package/dist/types/src/stories/Markdown.stories.d.ts +32 -43
  168. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  169. package/dist/types/src/stories/Outliner.stories.d.ts +15 -21
  170. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  171. package/dist/types/src/stories/Popover.stories.d.ts +20 -0
  172. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  173. package/dist/types/src/stories/Preview.stories.d.ts +22 -7
  174. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  175. package/dist/types/src/stories/Tags.stories.d.ts +16 -0
  176. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -0
  177. package/dist/types/src/stories/TextEditor.stories.d.ts +37 -52
  178. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  179. package/dist/types/src/stories/components/EditorStory.d.ts +8 -9
  180. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  181. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  182. package/dist/types/src/styles/theme.d.ts.map +1 -1
  183. package/dist/types/src/translations.d.ts +1 -1
  184. package/dist/types/src/types/types.d.ts +2 -2
  185. package/dist/types/src/types/types.d.ts.map +1 -1
  186. package/dist/types/src/util/cursor.d.ts.map +1 -1
  187. package/dist/types/src/util/debug.d.ts +5 -1
  188. package/dist/types/src/util/debug.d.ts.map +1 -1
  189. package/dist/types/src/util/decorations.d.ts +4 -0
  190. package/dist/types/src/util/decorations.d.ts.map +1 -0
  191. package/dist/types/src/util/dom.d.ts +2 -12
  192. package/dist/types/src/util/dom.d.ts.map +1 -1
  193. package/dist/types/src/util/index.d.ts +1 -0
  194. package/dist/types/src/util/index.d.ts.map +1 -1
  195. package/dist/types/src/util/react.d.ts +1 -1
  196. package/dist/types/src/util/react.d.ts.map +1 -1
  197. package/dist/types/tsconfig.tsbuildinfo +1 -1
  198. package/package.json +72 -67
  199. package/src/components/Editor/Editor.stories.tsx +89 -0
  200. package/src/components/Editor/Editor.tsx +160 -25
  201. package/src/components/EditorContent/EditorContent.stories.tsx +70 -0
  202. package/src/components/EditorContent/EditorContent.tsx +70 -0
  203. package/src/components/EditorContent/controller.ts +50 -0
  204. package/src/components/EditorContent/index.ts +6 -0
  205. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +233 -0
  206. package/src/components/EditorMenuProvider/index.ts +11 -0
  207. package/src/components/EditorMenuProvider/menu-presets.ts +123 -0
  208. package/src/components/EditorMenuProvider/menu.ts +71 -0
  209. package/src/components/EditorMenuProvider/popover.ts +287 -0
  210. package/src/components/EditorMenuProvider/useEditorMenu.ts +175 -0
  211. package/src/components/EditorMenuProvider/util.ts +31 -0
  212. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +82 -0
  213. package/src/components/EditorPreviewProvider/index.ts +5 -0
  214. package/src/components/EditorToolbar/EditorToolbar.tsx +116 -96
  215. package/src/components/EditorToolbar/actions.ts +86 -0
  216. package/src/components/EditorToolbar/blocks.ts +23 -25
  217. package/src/components/EditorToolbar/formatting.ts +23 -25
  218. package/src/components/EditorToolbar/headings.ts +17 -9
  219. package/src/components/EditorToolbar/image.ts +9 -5
  220. package/src/components/EditorToolbar/index.ts +3 -7
  221. package/src/components/EditorToolbar/search.ts +9 -5
  222. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  223. package/src/components/EditorToolbar/view-mode.ts +12 -6
  224. package/src/components/index.ts +8 -2
  225. package/src/defaults.ts +5 -2
  226. package/src/extensions/autocomplete/autocomplete.ts +151 -0
  227. package/src/extensions/autocomplete/index.ts +8 -0
  228. package/src/extensions/autocomplete/match.ts +46 -0
  229. package/src/extensions/{command → autocomplete}/placeholder.ts +22 -18
  230. package/src/extensions/{command → autocomplete}/typeahead.ts +8 -50
  231. package/src/extensions/automerge/automerge.stories.tsx +32 -25
  232. package/src/extensions/automerge/automerge.ts +31 -11
  233. package/src/extensions/automerge/cursor.ts +1 -1
  234. package/src/extensions/automerge/defs.ts +1 -1
  235. package/src/extensions/automerge/sync.ts +9 -5
  236. package/src/extensions/automerge/update-automerge.ts +2 -2
  237. package/src/extensions/autoscroll.ts +163 -0
  238. package/src/extensions/awareness/awareness-provider.ts +2 -2
  239. package/src/extensions/awareness/awareness.ts +2 -2
  240. package/src/extensions/blocks.ts +131 -0
  241. package/src/extensions/bookmarks.ts +75 -0
  242. package/src/extensions/comments.ts +20 -14
  243. package/src/extensions/dnd.ts +1 -1
  244. package/src/extensions/factories.ts +56 -37
  245. package/src/extensions/focus.ts +5 -4
  246. package/src/extensions/folding.tsx +3 -6
  247. package/src/extensions/hashtag.tsx +2 -2
  248. package/src/extensions/index.ts +10 -1
  249. package/src/extensions/json.ts +1 -1
  250. package/src/extensions/listener.ts +14 -20
  251. package/src/extensions/markdown/action.ts +2 -1
  252. package/src/extensions/markdown/bundle.ts +40 -6
  253. package/src/extensions/markdown/changes.ts +1 -1
  254. package/src/extensions/markdown/decorate.ts +32 -22
  255. package/src/extensions/markdown/formatting.test.ts +6 -6
  256. package/src/extensions/markdown/formatting.ts +11 -13
  257. package/src/extensions/markdown/highlight.ts +2 -2
  258. package/src/extensions/markdown/image.ts +5 -6
  259. package/src/extensions/markdown/link.ts +3 -0
  260. package/src/extensions/markdown/table.ts +13 -7
  261. package/src/extensions/mention.ts +1 -1
  262. package/src/extensions/modal.ts +24 -0
  263. package/src/extensions/modes.ts +2 -2
  264. package/src/extensions/{command/floating-menu.ts → outliner/menu.ts} +16 -21
  265. package/src/extensions/outliner/outliner.test.ts +3 -2
  266. package/src/extensions/outliner/outliner.ts +8 -7
  267. package/src/extensions/outliner/selection.ts +1 -1
  268. package/src/extensions/outliner/tree.test.ts +3 -2
  269. package/src/extensions/outliner/tree.ts +2 -2
  270. package/src/extensions/preview/index.ts +1 -1
  271. package/src/extensions/preview/preview.ts +69 -69
  272. package/src/extensions/replacer.test.ts +75 -0
  273. package/src/extensions/replacer.ts +93 -0
  274. package/src/extensions/scrolling.ts +189 -0
  275. package/src/extensions/selection.ts +3 -3
  276. package/src/extensions/state.ts +7 -0
  277. package/src/extensions/submit.ts +62 -0
  278. package/src/extensions/tab.ts +29 -0
  279. package/src/extensions/tags/extended-markdown.test.ts +262 -0
  280. package/src/extensions/tags/extended-markdown.ts +78 -0
  281. package/src/extensions/tags/index.ts +7 -0
  282. package/src/extensions/tags/streamer.ts +243 -0
  283. package/src/extensions/tags/xml-tags.ts +500 -0
  284. package/src/extensions/tags/xml-util.ts +94 -0
  285. package/src/extensions/typewriter.ts +1 -1
  286. package/src/hooks/useTextEditor.ts +31 -43
  287. package/src/stories/CommandDialog.stories.tsx +83 -0
  288. package/src/stories/Comments.stories.tsx +17 -14
  289. package/src/stories/EditorToolbar.stories.tsx +21 -20
  290. package/src/stories/Experimental.stories.tsx +17 -13
  291. package/src/stories/Markdown.stories.tsx +26 -22
  292. package/src/stories/Outliner.stories.tsx +51 -39
  293. package/src/stories/Popover.stories.tsx +162 -0
  294. package/src/stories/Preview.stories.tsx +57 -52
  295. package/src/stories/Tags.stories.tsx +95 -0
  296. package/src/stories/TextEditor.stories.tsx +42 -61
  297. package/src/stories/components/EditorStory.tsx +36 -24
  298. package/src/stories/components/util.tsx +40 -8
  299. package/src/styles/markdown.ts +1 -1
  300. package/src/styles/theme.ts +18 -15
  301. package/src/translations.ts +1 -1
  302. package/src/types/types.ts +1 -1
  303. package/src/util/cursor.ts +2 -1
  304. package/src/util/debug.ts +7 -2
  305. package/src/util/decorations.ts +21 -0
  306. package/src/util/dom.ts +5 -27
  307. package/src/util/index.ts +1 -0
  308. package/src/util/react.tsx +1 -1
  309. package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +0 -7
  310. package/dist/lib/browser/testing/index.mjs +0 -6
  311. package/dist/lib/browser/testing/index.mjs.map +0 -7
  312. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +0 -7
  313. package/dist/lib/node-esm/testing/index.mjs +0 -8
  314. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  315. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  316. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  317. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  318. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  319. package/dist/types/src/components/Popover/CommandMenu.d.ts +0 -34
  320. package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
  321. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -21
  322. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
  323. package/dist/types/src/components/Popover/RefPopover.d.ts +0 -34
  324. package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
  325. package/dist/types/src/components/Popover/index.d.ts +0 -4
  326. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  327. package/dist/types/src/extensions/autocomplete.d.ts +0 -13
  328. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  329. package/dist/types/src/extensions/command/action.d.ts +0 -17
  330. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  331. package/dist/types/src/extensions/command/command-menu.d.ts +0 -20
  332. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  333. package/dist/types/src/extensions/command/command.d.ts +0 -6
  334. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  335. package/dist/types/src/extensions/command/floating-menu.d.ts +0 -7
  336. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  337. package/dist/types/src/extensions/command/hint.d.ts +0 -24
  338. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  339. package/dist/types/src/extensions/command/index.d.ts +0 -7
  340. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  341. package/dist/types/src/extensions/command/placeholder.d.ts +0 -10
  342. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  343. package/dist/types/src/extensions/command/state.d.ts +0 -16
  344. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  345. package/dist/types/src/extensions/command/typeahead.d.ts +0 -22
  346. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  347. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
  348. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  349. package/dist/types/src/stories/Command.stories.d.ts +0 -7
  350. package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
  351. package/dist/types/src/stories/CommandMenu.stories.d.ts +0 -13
  352. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  353. package/dist/types/src/testing/index.d.ts +0 -2
  354. package/dist/types/src/testing/index.d.ts.map +0 -1
  355. package/dist/types/src/testing/util.d.ts +0 -2
  356. package/dist/types/src/testing/util.d.ts.map +0 -1
  357. package/src/components/EditorToolbar/lists.ts +0 -59
  358. package/src/components/EditorToolbar/util.ts +0 -65
  359. package/src/components/Popover/CommandMenu.tsx +0 -279
  360. package/src/components/Popover/RefDropdownMenu.tsx +0 -85
  361. package/src/components/Popover/RefPopover.tsx +0 -99
  362. package/src/components/Popover/index.ts +0 -7
  363. package/src/extensions/autocomplete.ts +0 -69
  364. package/src/extensions/command/action.ts +0 -56
  365. package/src/extensions/command/command-menu.ts +0 -210
  366. package/src/extensions/command/command.ts +0 -34
  367. package/src/extensions/command/hint.ts +0 -102
  368. package/src/extensions/command/index.ts +0 -10
  369. package/src/extensions/command/state.ts +0 -89
  370. package/src/extensions/command/useCommandMenu.ts +0 -118
  371. package/src/stories/Command.stories.tsx +0 -97
  372. package/src/stories/CommandMenu.stories.tsx +0 -159
  373. package/src/testing/index.ts +0 -5
  374. package/src/testing/util.ts +0 -5
@@ -2,32 +2,17 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { javascript } from '@codemirror/lang-javascript';
8
6
  import { openSearchPanel } from '@codemirror/search';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
9
8
  import React from 'react';
10
9
 
11
10
  import { log } from '@dxos/log';
12
- import { withLayout, withTheme, type Meta } from '@dxos/storybook-utils';
11
+ import { withTheme } from '@dxos/react-ui/testing';
13
12
 
14
- import {
15
- EditorStory,
16
- allExtensions,
17
- content,
18
- defaultExtensions,
19
- global,
20
- largeWithImages,
21
- links,
22
- longText,
23
- names,
24
- renderLinkButton,
25
- text,
26
- } from './components';
27
13
  import { editorMonospace } from '../defaults';
28
14
  import {
29
15
  InputModeExtensions,
30
- autocomplete,
31
16
  decorateMarkdown,
32
17
  folding,
33
18
  image,
@@ -37,14 +22,29 @@ import {
37
22
  staticCompletion,
38
23
  typeahead,
39
24
  } from '../extensions';
40
- import { str } from '../testing';
25
+ import { str } from '../util';
26
+
27
+ import {
28
+ EditorStory,
29
+ allExtensions,
30
+ content,
31
+ defaultExtensions,
32
+ global,
33
+ largeWithImages,
34
+ longText,
35
+ names,
36
+ text,
37
+ } from './components';
41
38
 
42
- const meta: Meta<typeof EditorStory> = {
39
+ const meta = {
43
40
  title: 'ui/react-ui-editor/TextEditor',
44
41
  component: EditorStory,
45
- decorators: [withTheme, withLayout({ fullscreen: true })],
46
- parameters: { layout: 'fullscreen', controls: { disable: true } },
47
- };
42
+ decorators: [withTheme],
43
+ parameters: {
44
+ layout: 'fullscreen',
45
+ controls: { disable: true },
46
+ },
47
+ } satisfies Meta<typeof EditorStory>;
48
48
 
49
49
  export default meta;
50
50
 
@@ -52,7 +52,9 @@ export default meta;
52
52
  // Default
53
53
  //
54
54
 
55
- export const Default = {
55
+ type Story = StoryObj<typeof meta>;
56
+
57
+ export const Default: Story = {
56
58
  render: () => <EditorStory text={text} extensions={defaultExtensions} />,
57
59
  };
58
60
 
@@ -60,7 +62,7 @@ export const Default = {
60
62
  // Everything
61
63
  //
62
64
 
63
- export const Everything = {
65
+ export const Everything: Story = {
64
66
  render: () => <EditorStory text={text} extensions={allExtensions} selection={{ anchor: 99, head: 110 }} />,
65
67
  };
66
68
 
@@ -68,7 +70,7 @@ export const Everything = {
68
70
  // Empty
69
71
  //
70
72
 
71
- export const Empty = {
73
+ export const Empty: Story = {
72
74
  render: () => <EditorStory extensions={defaultExtensions} />,
73
75
  };
74
76
 
@@ -76,7 +78,7 @@ export const Empty = {
76
78
  // Readonly
77
79
  //
78
80
 
79
- export const Readonly = {
81
+ export const Readonly: Story = {
80
82
  render: () => <EditorStory text={text} extensions={defaultExtensions} readOnly />,
81
83
  };
82
84
 
@@ -84,7 +86,7 @@ export const Readonly = {
84
86
  // No Extensions
85
87
  //
86
88
 
87
- export const NoExtensions = {
89
+ export const NoExtensions: Story = {
88
90
  render: () => <EditorStory text={text} />,
89
91
  };
90
92
 
@@ -92,7 +94,7 @@ export const NoExtensions = {
92
94
  // Vim
93
95
  //
94
96
 
95
- export const Vim = {
97
+ export const Vim: Story = {
96
98
  render: () => (
97
99
  <EditorStory
98
100
  text={str('# Vim Mode', '', 'The distant future. The year 2000.', '', content.paragraphs)}
@@ -105,16 +107,16 @@ export const Vim = {
105
107
  // Listener
106
108
  //
107
109
 
108
- export const Listener = {
110
+ export const Listener: Story = {
109
111
  render: () => (
110
112
  <EditorStory
111
113
  text={str('# Listener', '', content.footer)}
112
114
  extensions={[
113
115
  listener({
114
- onFocus: (focusing) => {
116
+ onFocus: ({ focusing }) => {
115
117
  log.info('listener', { focusing });
116
118
  },
117
- onChange: (text) => {
119
+ onChange: ({ text }) => {
118
120
  log.info('listener', { text });
119
121
  },
120
122
  }),
@@ -127,7 +129,7 @@ export const Listener = {
127
129
  // Folding
128
130
  //
129
131
 
130
- export const Folding = {
132
+ export const Folding: Story = {
131
133
  render: () => <EditorStory text={text} extensions={[folding()]} />,
132
134
  };
133
135
 
@@ -135,7 +137,7 @@ export const Folding = {
135
137
  // Scrolling
136
138
  //
137
139
 
138
- export const Scrolling = {
140
+ export const Scrolling: Story = {
139
141
  render: () => (
140
142
  <EditorStory
141
143
  text={str('# Large Document', '', longText)}
@@ -147,13 +149,13 @@ export const Scrolling = {
147
149
  ),
148
150
  };
149
151
 
150
- export const ScrollingWithImages = {
152
+ export const ScrollingWithImages: Story = {
151
153
  render: () => (
152
154
  <EditorStory text={str('# Large Document', '', largeWithImages)} extensions={[decorateMarkdown(), image()]} />
153
155
  ),
154
156
  };
155
157
 
156
- export const ScrollTo = {
158
+ export const ScrollTo: Story = {
157
159
  render: () => {
158
160
  // NOTE: Selection won't appear if text is reformatted.
159
161
  const word = 'Scroll to here...';
@@ -174,7 +176,7 @@ export const ScrollTo = {
174
176
  // Typescript
175
177
  //
176
178
 
177
- export const Typescript = {
179
+ export const Typescript: Story = {
178
180
  render: () => (
179
181
  <EditorStory
180
182
  text={content.typescript}
@@ -184,38 +186,17 @@ export const Typescript = {
184
186
  ),
185
187
  };
186
188
 
187
- //
188
- // Autocomplete
189
- //
190
-
191
- export const Autocomplete = {
192
- render: () => (
193
- <EditorStory
194
- text={str('# Autocomplete', '', 'Press Ctrl-Space...', content.footer)}
195
- extensions={[
196
- decorateMarkdown({ renderLinkButton }),
197
- autocomplete({
198
- onSearch: (text) => {
199
- return links.filter(({ label }) => label.toLowerCase().includes(text.toLowerCase()));
200
- },
201
- }),
202
- ]}
203
- />
204
- ),
205
- };
206
-
207
189
  //
208
190
  // Typeahead
209
191
  //
210
192
 
211
- const completions = ['type', 'AND', 'OR', 'NOT', 'dxos.org'];
193
+ const completions = ['hello world!', 'dxos.org'];
212
194
 
213
- export const Typeahead = {
195
+ export const Typeahead: Story = {
214
196
  render: () => (
215
197
  <EditorStory
216
198
  text={str('# Typeahead', '')}
217
199
  extensions={[
218
- decorateMarkdown({ renderLinkButton }),
219
200
  typeahead({
220
201
  onComplete: staticCompletion(completions, { minLength: 2 }),
221
202
  }),
@@ -228,7 +209,7 @@ export const Typeahead = {
228
209
  // Mention
229
210
  //
230
211
 
231
- export const Mention = {
212
+ export const Mention: Story = {
232
213
  render: () => (
233
214
  <EditorStory
234
215
  text={str('# Mention', '', 'Type @...', content.footer)}
@@ -245,7 +226,7 @@ export const Mention = {
245
226
  // Search
246
227
  //
247
228
 
248
- export const Search = {
229
+ export const Search: Story = {
249
230
  render: () => (
250
231
  <EditorStory
251
232
  text={str('# Search', text)}
@@ -3,39 +3,41 @@
3
3
  //
4
4
 
5
5
  import { type EditorView } from '@codemirror/view';
6
- import React, { type ReactNode, forwardRef, useEffect, useState, useImperativeHandle, useMemo } from 'react';
6
+ import React, { type ReactNode, forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
7
7
 
8
- import { Expando } from '@dxos/echo-schema';
8
+ import { createDocAccessor, createObject } from '@dxos/client/echo';
9
+ import { Expando } from '@dxos/echo/internal';
10
+ import { live } from '@dxos/echo/internal';
9
11
  import { invariant } from '@dxos/invariant';
10
12
  import { PublicKey } from '@dxos/keys';
11
- import { live } from '@dxos/live-object';
12
- import { createDocAccessor, createObject } from '@dxos/react-client/echo';
13
- import { useForwardedRef, useThemeContext } from '@dxos/react-ui';
13
+ import { log } from '@dxos/log';
14
+ import { useMergeRefs, useThemeContext } from '@dxos/react-ui';
14
15
  import { useAttentionAttributes } from '@dxos/react-ui-attention';
15
16
  import { JsonFilter } from '@dxos/react-ui-syntax-highlighter';
16
17
  import { mx } from '@dxos/react-ui-theme';
17
18
  import { isNonNullable } from '@dxos/util';
18
19
 
19
- import { editorSlots, editorGutter } from '../../defaults';
20
+ import { type EditorController, createEditorController } from '../../components';
21
+ import { editorGutter, editorSlots } from '../../defaults';
20
22
  import {
21
23
  type DebugNode,
22
24
  type ThemeExtensionsOptions,
23
- createDataExtensions,
24
25
  createBasicExtensions,
26
+ createDataExtensions,
25
27
  createMarkdownExtensions,
26
28
  createThemeExtensions,
27
29
  debugTree,
30
+ decorateMarkdown,
28
31
  } from '../../extensions';
29
- import { useTextEditor, type UseTextEditorProps } from '../../hooks';
32
+ import { type UseTextEditorProps, useTextEditor } from '../../hooks';
30
33
 
31
34
  // Type definitions.
32
35
  export type DebugMode = 'raw' | 'tree' | 'raw+tree';
33
36
 
34
37
  const defaultId = 'editor-' + PublicKey.random().toHex().slice(0, 8);
35
38
 
36
- export type StoryProps = Pick<UseTextEditorProps, 'scrollTo' | 'selection' | 'extensions'> &
39
+ export type StoryProps = Pick<UseTextEditorProps, 'id' | 'scrollTo' | 'selection' | 'extensions'> &
37
40
  Pick<ThemeExtensionsOptions, 'slots'> & {
38
- id?: string;
39
41
  debug?: DebugMode;
40
42
  debugCustom?: (view: EditorView) => ReactNode;
41
43
  text?: string;
@@ -46,25 +48,28 @@ export type StoryProps = Pick<UseTextEditorProps, 'scrollTo' | 'selection' | 'ex
46
48
  onReady?: (view: EditorView) => void;
47
49
  };
48
50
 
49
- export const EditorStory = forwardRef<EditorView | undefined, StoryProps>(
50
- ({ debug, debugCustom, text, extensions: _extensions, ...props }, forwardedRef) => {
51
- const attentionAttrs = useAttentionAttributes('testing');
51
+ export const EditorStory = forwardRef<EditorController, StoryProps>(
52
+ ({ debug, debugCustom, text, extensions: extensionsParam, ...props }, forwardedRef) => {
53
+ const controllerRef = useRef<EditorController>(null);
54
+ const mergedRef = useMergeRefs([controllerRef, forwardedRef]);
55
+
56
+ const attentionAttrs = useAttentionAttributes('test-panel');
52
57
  const [tree, setTree] = useState<DebugNode>();
53
58
  const [object] = useState(createObject(live(Expando, { content: text ?? '' })));
54
- const viewRef = useForwardedRef(forwardedRef);
55
- const view = viewRef.current;
59
+
56
60
  const extensions = useMemo(
57
- () => (debug ? [_extensions, debugTree(setTree)].filter(isNonNullable) : _extensions),
58
- [debug, _extensions],
61
+ () => (debug ? [extensionsParam, debugTree(setTree)].filter(isNonNullable) : extensionsParam),
62
+ [debug, extensionsParam],
59
63
  );
60
64
 
65
+ const view = controllerRef.current?.view;
61
66
  return (
62
- <div className={mx('w-full h-full grid overflow-hidden', debug && 'grid-cols-2 lg:grid-cols-[1fr_600px]')}>
63
- <EditorComponent ref={viewRef} object={object} text={text} extensions={extensions} {...props} />
67
+ <div className={mx('is-full bs-full grid overflow-hidden', debug && 'grid-cols-2 lg:grid-cols-[1fr_600px]')}>
68
+ <EditorComponent ref={mergedRef} object={object} text={text} extensions={extensions} {...props} />
64
69
 
65
70
  {debug && (
66
71
  <div
67
- className='grid h-full auto-rows-fr border-l border-separator divide-y divide-separator overflow-hidden'
72
+ className='grid bs-full auto-rows-fr border-l border-separator divide-y divide-separator overflow-hidden'
68
73
  {...attentionAttrs}
69
74
  >
70
75
  {view && debugCustom?.(view)}
@@ -83,8 +88,10 @@ export const EditorStory = forwardRef<EditorView | undefined, StoryProps>(
83
88
 
84
89
  /**
85
90
  * Default story component.
91
+ * @deprecated
86
92
  */
87
- export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
93
+ // TODO(burdon): Replace with <Editor.Root>
94
+ export const EditorComponent = forwardRef<EditorController, StoryProps>(
88
95
  (
89
96
  {
90
97
  id = defaultId,
@@ -112,9 +119,10 @@ export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
112
119
  initialValue: text,
113
120
  extensions: [
114
121
  createDataExtensions({ id, text: createDocAccessor(object, ['content']) }),
115
- createBasicExtensions({ readOnly, placeholder, lineNumbers, scrollPastEnd: true }),
116
- createMarkdownExtensions({ themeMode }),
122
+ createBasicExtensions({ readOnly, placeholder, lineNumbers, scrollPastEnd: true, search: true }),
123
+ createMarkdownExtensions(),
117
124
  createThemeExtensions({ themeMode, syntaxHighlighting: true, slots }),
125
+ decorateMarkdown(),
118
126
  editorGutter,
119
127
  extensions || [],
120
128
  ],
@@ -122,7 +130,11 @@ export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
122
130
  [id, object, extensions, themeMode],
123
131
  );
124
132
 
125
- useImperativeHandle(forwardedRef, () => view, [view]);
133
+ // External controller.
134
+ useImperativeHandle(forwardedRef, () => {
135
+ log.info('view updated', { id });
136
+ return createEditorController(view);
137
+ }, [id, view]);
126
138
 
127
139
  useEffect(() => {
128
140
  if (view) {
@@ -19,14 +19,14 @@ import {
19
19
  linkTooltip,
20
20
  table,
21
21
  } from '../../extensions';
22
- import { str } from '../../testing';
23
- import { createRenderer } from '../../util';
22
+ import { createRenderer, str } from '../../util';
24
23
 
25
24
  export const num = () => faker.number.int({ min: 0, max: 9999 }).toLocaleString();
26
25
 
27
26
  export const img = '![dxos](https://dxos.network/dxos-logotype-blue.png)';
28
27
 
29
28
  export const code = str(
29
+ // prettier-ignore
30
30
  '// Code',
31
31
  'const Component = () => {',
32
32
  ' const x = 100;',
@@ -38,7 +38,7 @@ export const code = str(
38
38
  // Content blocks for stories
39
39
  export const content = {
40
40
  tasks: str(
41
- //
41
+ // prettier-ignore
42
42
  '### TaskList',
43
43
  '',
44
44
  `- [x] ${faker.lorem.sentences()}`,
@@ -50,7 +50,7 @@ export const content = {
50
50
  ),
51
51
 
52
52
  bullets: str(
53
- //
53
+ // prettier-ignore
54
54
  '### BulletList',
55
55
  '',
56
56
  `- ${faker.lorem.sentences()}`,
@@ -62,7 +62,7 @@ export const content = {
62
62
  ),
63
63
 
64
64
  numbered: str(
65
- //
65
+ // prettier-ignore
66
66
  '### OrderedList (part 1)',
67
67
  '',
68
68
  `1. ${faker.lorem.sentences()}`,
@@ -81,11 +81,34 @@ export const content = {
81
81
 
82
82
  typescript: code,
83
83
 
84
- codeblocks: str('### Code', '', '```bash', '$ ls -las', '```', '', '```tsx', code, '```', ''),
84
+ codeblocks: str(
85
+ // prettier-ignore
86
+ '### Code',
87
+ '',
88
+ '```bash',
89
+ '$ ls -las',
90
+ '```',
91
+ '',
92
+ '```tsx',
93
+ code,
94
+ '```',
95
+ '',
96
+ ),
85
97
 
86
- comment: str('<!--', 'A comment', '-->', '', 'No comment.', 'Partial comment. <!-- comment. -->'),
98
+ comment: str(
99
+ // prettier-ignore
100
+ '### Comment',
101
+ '',
102
+ '<!--',
103
+ 'A comment',
104
+ '-->',
105
+ '',
106
+ 'Partial comment. <!-- comment. -->',
107
+ '',
108
+ ),
87
109
 
88
110
  links: str(
111
+ // prettier-ignore
89
112
  '### Links',
90
113
  '',
91
114
  'This is a naked link https://dxos.org within a sentence.',
@@ -97,6 +120,7 @@ export const content = {
97
120
  ),
98
121
 
99
122
  table: str(
123
+ // prettier-ignore
100
124
  '### Tables',
101
125
  '',
102
126
  `| ${faker.lorem.word().padStart(12)} | ${faker.lorem.word().padStart(12)} | ${faker.lorem.word().padStart(12)} |`,
@@ -113,9 +137,16 @@ export const content = {
113
137
  ...[1, 2, 3, 4, 5, 6].map((level) => ['#'.repeat(level) + ` Heading ${level}`, faker.lorem.sentences(), '']).flat(),
114
138
  ),
115
139
 
116
- formatting: str('### Formatting', '', 'This this is **bold**, ~~strikethrough~~, _italic_, and `f(INLINE)`.', ''),
140
+ formatting: str(
141
+ // prettier-ignore
142
+ '### Formatting',
143
+ '',
144
+ 'This this is **bold**, ~~strikethrough~~, _italic_, and `f(INLINE)`.',
145
+ '',
146
+ ),
117
147
 
118
148
  blockquotes: str(
149
+ // prettier-ignore
119
150
  '### Blockquotes',
120
151
  '',
121
152
  '> This is a block quote.',
@@ -154,6 +185,7 @@ export const text = str(
154
185
  '---',
155
186
  '## Misc',
156
187
  content.codeblocks,
188
+ content.comment,
157
189
  content.table,
158
190
  content.image,
159
191
  content.footer,
@@ -21,6 +21,6 @@ export const theme = {
21
21
  codeMark: 'font-mono text-primary-500',
22
22
  mark: 'opacity-50',
23
23
  heading: (level: HeadingLevel) => {
24
- return mx(headings[level], 'dark:text-primary-400');
24
+ return mx(headings[level], 'dark:text-neutral-400');
25
25
  },
26
26
  };
@@ -64,7 +64,7 @@ export const defaultTheme: ThemeStyles = {
64
64
  fontFamily: fontBody,
65
65
  // NOTE: Base font size (otherwise defined by HTML tag, which might be different for storybook).
66
66
  fontSize: '16px',
67
- lineHeight: 1.5,
67
+ lineHeight: '24px',
68
68
  color: 'unset',
69
69
  },
70
70
 
@@ -74,22 +74,21 @@ export const defaultTheme: ThemeStyles = {
74
74
  */
75
75
  '.cm-gutters': {
76
76
  borderRight: 'none',
77
- background: 'transparent',
78
77
  },
79
78
  '.cm-gutter': {},
80
79
  '.cm-gutter.cm-lineNumbers': {
81
80
  paddingRight: '4px',
82
- borderRight: '1px solid var(--dx-separator)',
81
+ borderRight: '1px solid var(--dx-subduedSeparator)',
82
+ color: 'var(--dx-subduedText)',
83
83
  },
84
84
  '.cm-gutter.cm-lineNumbers .cm-gutterElement': {
85
85
  minWidth: '40px',
86
- alignContent: 'center',
87
86
  },
88
87
  /**
89
- * Height is set to match the corresponding line.
88
+ * Height is set to match the corresponding line (which may have wrapped).
90
89
  */
91
90
  '.cm-gutterElement': {
92
- alignItems: 'center',
91
+ lineHeight: '24px',
93
92
  fontSize: '12px',
94
93
  },
95
94
 
@@ -97,6 +96,7 @@ export const defaultTheme: ThemeStyles = {
97
96
  * Line.
98
97
  */
99
98
  '.cm-line': {
99
+ lineHeight: '24px',
100
100
  paddingInline: 0,
101
101
  },
102
102
  '.cm-activeLine': {
@@ -110,6 +110,7 @@ export const defaultTheme: ThemeStyles = {
110
110
  borderLeft: '2px solid var(--dx-cmCursor)',
111
111
  },
112
112
  '.cm-placeholder': {
113
+ fontFamily: fontBody,
113
114
  color: 'var(--dx-placeholder)',
114
115
  },
115
116
 
@@ -165,10 +166,10 @@ export const defaultTheme: ThemeStyles = {
165
166
  * https://github.com/codemirror/autocomplete/blob/main/src/completion.ts
166
167
  */
167
168
  '.cm-tooltip.cm-tooltip-autocomplete': {
168
- marginTop: '4px',
169
- marginLeft: '-3px',
170
- borderColor: 'var(--dx-separator)',
171
- borderTop: 'none',
169
+ marginTop: '6px',
170
+ marginLeft: '-10px',
171
+ border: '2px solid var(--dx-separator)',
172
+ borderRadius: '4px',
172
173
  },
173
174
  '.cm-tooltip.cm-tooltip-autocomplete > ul': {
174
175
  maxHeight: '20em',
@@ -177,12 +178,12 @@ export const defaultTheme: ThemeStyles = {
177
178
  padding: '4px',
178
179
  },
179
180
  '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {
180
- background: 'var(--dx-hoverSurface)',
181
+ background: 'var(--dx-activeSurface)',
182
+ color: 'var(--dx-activeSurfaceText)',
181
183
  },
182
184
  '.cm-tooltip.cm-tooltip-autocomplete > ul > completion-section': {
183
185
  paddingLeft: '4px !important',
184
- borderBottom: 'none !important',
185
- color: 'var(--dx-accentText)',
186
+ color: 'var(--dx-hoverSurfaceText)',
186
187
  },
187
188
 
188
189
  '.cm-completionInfo': {
@@ -196,10 +197,12 @@ export const defaultTheme: ThemeStyles = {
196
197
  },
197
198
  '.cm-completionLabel': {
198
199
  fontFamily: fontBody,
200
+ color: 'var(--dx-description)',
201
+ padding: '0 4px',
199
202
  },
200
203
  '.cm-completionMatchedText': {
201
204
  textDecoration: 'none !important',
202
- opacity: 0.5,
205
+ color: 'var(--dx-baseText)',
203
206
  },
204
207
 
205
208
  /**
@@ -233,7 +236,7 @@ export const defaultTheme: ThemeStyles = {
233
236
  outline: '1px solid transparent',
234
237
  },
235
238
  '.cm-panel input, .cm-panel button': {
236
- backgroundColor: 'var(--dx-input)',
239
+ backgroundColor: 'var(--dx-inputSurface)',
237
240
  },
238
241
  '.cm-panel input:focus, .cm-panel button:focus': {
239
242
  outline: '1px solid var(--dx-neutralFocusIndicator)',
@@ -24,8 +24,8 @@ export const translations = [
24
24
  'selection overlaps existing comment label': 'Selection overlaps existing comment',
25
25
  'select text to comment label': 'Select text to comment',
26
26
  'image label': 'Insert image',
27
- 'heading label': 'Heading level',
28
27
  'table label': 'Create table',
28
+ 'heading label': 'Heading level',
29
29
  'heading level label_zero': 'Paragraph',
30
30
  'heading level label_one': 'Heading level {{count}}',
31
31
  'heading level label_other': 'Heading level {{count}}',
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { type EditorView } from '@codemirror/view';
6
- import { Schema } from 'effect';
6
+ import * as Schema from 'effect/Schema';
7
7
 
8
8
  // Runtime data structure.
9
9
  export type Range = {
@@ -4,9 +4,10 @@
4
4
 
5
5
  import { type EditorState } from '@codemirror/state';
6
6
 
7
- import { singleValueFacet } from './facet';
8
7
  import { type Range } from '../types';
9
8
 
9
+ import { singleValueFacet } from './facet';
10
+
10
11
  /**
11
12
  * Determines if two ranges overlap.
12
13
  * A range is considered to overlap if there is any intersection
package/src/util/debug.ts CHANGED
@@ -7,12 +7,17 @@ import { type EditorView } from '@codemirror/view';
7
7
 
8
8
  import { log } from '@dxos/log';
9
9
 
10
- export const wrapWithCatch = (fn: (...args: any[]) => any) => {
10
+ /**
11
+ * @deprecated Use `trim` from `@dxos/util`.
12
+ */
13
+ export const str = (...lines: string[]) => lines.join('\n');
14
+
15
+ export const wrapWithCatch = (fn: (...args: any[]) => any, label?: string) => {
11
16
  return (...args: any[]) => {
12
17
  try {
13
18
  return fn(...args);
14
19
  } catch (err) {
15
- log.catch(err);
20
+ log.catch(err, { label });
16
21
  }
17
22
  };
18
23
  };
@@ -0,0 +1,21 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Range } from '@codemirror/state';
6
+ import { type Decoration, type DecorationSet } from '@codemirror/view';
7
+
8
+ export const decorationSetToArray = (deco: DecorationSet): readonly Range<Decoration>[] => {
9
+ const ranges: Range<Decoration>[] = [];
10
+ const iter = deco.iter();
11
+ while (iter.value) {
12
+ ranges.push({
13
+ from: iter.from,
14
+ to: iter.to,
15
+ value: iter.value,
16
+ });
17
+ iter.next();
18
+ }
19
+
20
+ return ranges;
21
+ };