@dxos/react-ui-editor 0.8.4-main.72ec0f3 → 0.8.4-main.74a063c4e0

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 (404) hide show
  1. package/dist/lib/browser/index.mjs +718 -8598
  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 +711 -8590
  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 +8 -2
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +4 -1
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -1
  11. package/dist/types/src/components/EditorContent/EditorContent.d.ts +4 -2
  12. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +1 -1
  13. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +2 -4
  14. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -1
  15. package/dist/types/src/components/EditorMenuProvider/index.d.ts +0 -1
  16. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -1
  17. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -1
  18. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -1
  19. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +1 -2
  20. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -1
  21. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -1
  22. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +1 -1
  23. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -1
  24. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +7 -5
  25. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  26. package/dist/types/src/components/EditorToolbar/blocks.d.ts +3 -16
  27. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  28. package/dist/types/src/components/EditorToolbar/formatting.d.ts +3 -16
  29. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  30. package/dist/types/src/components/EditorToolbar/headings.d.ts +3 -16
  31. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  32. package/dist/types/src/components/EditorToolbar/image.d.ts +3 -15
  33. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  34. package/dist/types/src/components/EditorToolbar/index.d.ts +0 -1
  35. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  36. package/dist/types/src/components/EditorToolbar/lists.d.ts +6 -0
  37. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -0
  38. package/dist/types/src/components/EditorToolbar/search.d.ts +3 -15
  39. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  40. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +4 -4
  41. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +1 -1
  42. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +4 -17
  43. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  44. package/dist/types/src/components/index.d.ts.map +1 -1
  45. package/dist/types/src/hooks/useTextEditor.d.ts +1 -1
  46. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  47. package/dist/types/src/index.d.ts +0 -8
  48. package/dist/types/src/index.d.ts.map +1 -1
  49. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  50. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  51. package/dist/types/src/stories/Comments.stories.d.ts +3 -2
  52. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  53. package/dist/types/src/stories/EditorToolbar.stories.d.ts +27 -27
  54. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  55. package/dist/types/src/stories/Experimental.stories.d.ts +3 -2
  56. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  57. package/dist/types/src/stories/Markdown.stories.d.ts +3 -2
  58. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  59. package/dist/types/src/stories/Outliner.stories.d.ts +2 -2
  60. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  61. package/dist/types/src/stories/Popover.stories.d.ts +2 -2
  62. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -1
  63. package/dist/types/src/stories/Preview.stories.d.ts +3 -2
  64. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  65. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  66. package/dist/types/src/stories/TextEditor.stories.d.ts +3 -2
  67. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  68. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  69. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  70. package/dist/types/src/stories/components/EditorStory.d.ts +9 -20
  71. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  72. package/dist/types/src/stories/components/util.d.ts +3 -3
  73. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  74. package/dist/types/src/translations.d.ts +26 -26
  75. package/dist/types/src/translations.d.ts.map +1 -1
  76. package/dist/types/src/util/index.d.ts +0 -5
  77. package/dist/types/src/util/index.d.ts.map +1 -1
  78. package/dist/types/src/util/react.d.ts +6 -5
  79. package/dist/types/src/util/react.d.ts.map +1 -1
  80. package/dist/types/tsconfig.tsbuildinfo +1 -1
  81. package/package.json +65 -66
  82. package/src/components/Editor/Editor.stories.tsx +17 -12
  83. package/src/components/Editor/Editor.tsx +21 -10
  84. package/src/components/EditorContent/EditorContent.tsx +19 -7
  85. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +23 -30
  86. package/src/components/EditorMenuProvider/index.ts +0 -1
  87. package/src/components/EditorMenuProvider/menu-presets.ts +3 -1
  88. package/src/components/EditorMenuProvider/menu.ts +1 -2
  89. package/src/components/EditorMenuProvider/popover.ts +1 -3
  90. package/src/components/EditorMenuProvider/useEditorMenu.ts +9 -4
  91. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +6 -9
  92. package/src/components/EditorToolbar/EditorToolbar.tsx +33 -66
  93. package/src/components/EditorToolbar/blocks.ts +54 -48
  94. package/src/components/EditorToolbar/formatting.ts +45 -48
  95. package/src/components/EditorToolbar/headings.ts +43 -50
  96. package/src/components/EditorToolbar/image.ts +16 -14
  97. package/src/components/EditorToolbar/index.ts +0 -1
  98. package/src/components/EditorToolbar/lists.ts +57 -0
  99. package/src/components/EditorToolbar/search.ts +16 -14
  100. package/src/components/EditorToolbar/useEditorToolbar.ts +6 -6
  101. package/src/components/EditorToolbar/view-mode.ts +35 -42
  102. package/src/components/index.ts +0 -2
  103. package/src/hooks/useTextEditor.ts +9 -3
  104. package/src/index.ts +0 -10
  105. package/src/stories/Automerge.stories.tsx +173 -0
  106. package/src/stories/Comments.stories.tsx +47 -43
  107. package/src/stories/EditorToolbar.stories.tsx +57 -27
  108. package/src/stories/Experimental.stories.tsx +10 -12
  109. package/src/stories/Markdown.stories.tsx +16 -16
  110. package/src/stories/Outliner.stories.tsx +8 -10
  111. package/src/stories/Popover.stories.tsx +27 -32
  112. package/src/stories/Preview.stories.tsx +67 -53
  113. package/src/stories/Tags.stories.tsx +24 -15
  114. package/src/stories/TextEditor.stories.tsx +13 -19
  115. package/src/stories/Theme.stories.tsx +61 -0
  116. package/src/stories/components/EditorStory.tsx +31 -30
  117. package/src/stories/components/util.tsx +51 -52
  118. package/src/translations.ts +30 -25
  119. package/src/util/index.ts +1 -6
  120. package/src/util/react.tsx +8 -13
  121. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  122. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  123. package/dist/lib/browser/types/index.mjs +0 -13
  124. package/dist/lib/browser/types/index.mjs.map +0 -7
  125. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  126. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  127. package/dist/lib/node-esm/types/index.mjs +0 -14
  128. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  129. package/dist/types/src/components/EditorContent/EditorContent.stories.d.ts +0 -26
  130. package/dist/types/src/components/EditorContent/EditorContent.stories.d.ts.map +0 -1
  131. package/dist/types/src/components/EditorMenuProvider/util.d.ts +0 -8
  132. package/dist/types/src/components/EditorMenuProvider/util.d.ts.map +0 -1
  133. package/dist/types/src/components/EditorToolbar/actions.d.ts +0 -39
  134. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +0 -1
  135. package/dist/types/src/defaults.d.ts +0 -14
  136. package/dist/types/src/defaults.d.ts.map +0 -1
  137. package/dist/types/src/extensions/annotations.d.ts +0 -9
  138. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  139. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts +0 -17
  140. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts.map +0 -1
  141. package/dist/types/src/extensions/autocomplete/index.d.ts +0 -5
  142. package/dist/types/src/extensions/autocomplete/index.d.ts.map +0 -1
  143. package/dist/types/src/extensions/autocomplete/match.d.ts +0 -13
  144. package/dist/types/src/extensions/autocomplete/match.d.ts.map +0 -1
  145. package/dist/types/src/extensions/autocomplete/placeholder.d.ts +0 -20
  146. package/dist/types/src/extensions/autocomplete/placeholder.d.ts.map +0 -1
  147. package/dist/types/src/extensions/autocomplete/typeahead.d.ts +0 -10
  148. package/dist/types/src/extensions/autocomplete/typeahead.d.ts.map +0 -1
  149. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  150. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  151. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -47
  152. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  153. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  154. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  155. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  156. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  157. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  158. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  159. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  160. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  161. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  162. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  163. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  164. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  165. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  166. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  167. package/dist/types/src/extensions/autoscroll.d.ts +0 -20
  168. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  169. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  170. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  171. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  172. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  173. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  174. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  175. package/dist/types/src/extensions/blast.d.ts +0 -25
  176. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  177. package/dist/types/src/extensions/blocks.d.ts +0 -2
  178. package/dist/types/src/extensions/blocks.d.ts.map +0 -1
  179. package/dist/types/src/extensions/bookmarks.d.ts +0 -12
  180. package/dist/types/src/extensions/bookmarks.d.ts.map +0 -1
  181. package/dist/types/src/extensions/comments.d.ts +0 -95
  182. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  183. package/dist/types/src/extensions/debug.d.ts +0 -3
  184. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  185. package/dist/types/src/extensions/dnd.d.ts +0 -9
  186. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  187. package/dist/types/src/extensions/factories.d.ts +0 -83
  188. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  189. package/dist/types/src/extensions/focus.d.ts +0 -7
  190. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  191. package/dist/types/src/extensions/folding.d.ts +0 -7
  192. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  193. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  194. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  195. package/dist/types/src/extensions/index.d.ts +0 -32
  196. package/dist/types/src/extensions/index.d.ts.map +0 -1
  197. package/dist/types/src/extensions/json.d.ts +0 -7
  198. package/dist/types/src/extensions/json.d.ts.map +0 -1
  199. package/dist/types/src/extensions/listener.d.ts +0 -13
  200. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  201. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  202. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  203. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  204. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  205. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  206. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  207. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  208. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  209. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  210. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  211. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  212. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  213. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -61
  214. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  215. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  216. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  217. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  218. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  219. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  220. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  221. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  222. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  223. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  224. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  225. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  226. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  227. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  228. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  229. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  230. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  231. package/dist/types/src/extensions/mention.d.ts +0 -7
  232. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  233. package/dist/types/src/extensions/modal.d.ts +0 -7
  234. package/dist/types/src/extensions/modal.d.ts.map +0 -1
  235. package/dist/types/src/extensions/modes.d.ts +0 -10
  236. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  237. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  238. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  239. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  240. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  241. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  242. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  243. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  244. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  245. package/dist/types/src/extensions/outliner/menu.d.ts +0 -8
  246. package/dist/types/src/extensions/outliner/menu.d.ts.map +0 -1
  247. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  248. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  249. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  250. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  251. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  252. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  253. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  254. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  255. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  256. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  257. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  258. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  259. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  260. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  261. package/dist/types/src/extensions/replacer.d.ts +0 -21
  262. package/dist/types/src/extensions/replacer.d.ts.map +0 -1
  263. package/dist/types/src/extensions/replacer.test.d.ts +0 -2
  264. package/dist/types/src/extensions/replacer.test.d.ts.map +0 -1
  265. package/dist/types/src/extensions/scrolling.d.ts +0 -78
  266. package/dist/types/src/extensions/scrolling.d.ts.map +0 -1
  267. package/dist/types/src/extensions/selection.d.ts +0 -24
  268. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  269. package/dist/types/src/extensions/state.d.ts +0 -2
  270. package/dist/types/src/extensions/state.d.ts.map +0 -1
  271. package/dist/types/src/extensions/submit.d.ts +0 -10
  272. package/dist/types/src/extensions/submit.d.ts.map +0 -1
  273. package/dist/types/src/extensions/tab.d.ts +0 -4
  274. package/dist/types/src/extensions/tab.d.ts.map +0 -1
  275. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  276. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  277. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  278. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  279. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  280. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  281. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  282. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  283. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -97
  284. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  285. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  286. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  287. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  288. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  289. package/dist/types/src/stories/CommandDialog.stories.d.ts +0 -14
  290. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +0 -1
  291. package/dist/types/src/styles/index.d.ts +0 -4
  292. package/dist/types/src/styles/index.d.ts.map +0 -1
  293. package/dist/types/src/styles/markdown.d.ts +0 -8
  294. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  295. package/dist/types/src/styles/theme.d.ts +0 -38
  296. package/dist/types/src/styles/theme.d.ts.map +0 -1
  297. package/dist/types/src/styles/tokens.d.ts +0 -3
  298. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  299. package/dist/types/src/types/index.d.ts +0 -2
  300. package/dist/types/src/types/index.d.ts.map +0 -1
  301. package/dist/types/src/types/types.d.ts +0 -21
  302. package/dist/types/src/types/types.d.ts.map +0 -1
  303. package/dist/types/src/util/cursor.d.ts +0 -31
  304. package/dist/types/src/util/cursor.d.ts.map +0 -1
  305. package/dist/types/src/util/debug.d.ts +0 -21
  306. package/dist/types/src/util/debug.d.ts.map +0 -1
  307. package/dist/types/src/util/decorations.d.ts +0 -4
  308. package/dist/types/src/util/decorations.d.ts.map +0 -1
  309. package/dist/types/src/util/dom.d.ts +0 -10
  310. package/dist/types/src/util/dom.d.ts.map +0 -1
  311. package/dist/types/src/util/facet.d.ts +0 -3
  312. package/dist/types/src/util/facet.d.ts.map +0 -1
  313. package/src/components/EditorContent/EditorContent.stories.tsx +0 -70
  314. package/src/components/EditorMenuProvider/util.ts +0 -31
  315. package/src/components/EditorToolbar/actions.ts +0 -86
  316. package/src/defaults.ts +0 -52
  317. package/src/extensions/annotations.ts +0 -55
  318. package/src/extensions/autocomplete/autocomplete.ts +0 -151
  319. package/src/extensions/autocomplete/index.ts +0 -8
  320. package/src/extensions/autocomplete/match.ts +0 -46
  321. package/src/extensions/autocomplete/placeholder.ts +0 -117
  322. package/src/extensions/autocomplete/typeahead.ts +0 -87
  323. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  324. package/src/extensions/automerge/automerge.test.tsx +0 -78
  325. package/src/extensions/automerge/automerge.ts +0 -105
  326. package/src/extensions/automerge/cursor.ts +0 -28
  327. package/src/extensions/automerge/defs.ts +0 -31
  328. package/src/extensions/automerge/index.ts +0 -5
  329. package/src/extensions/automerge/sync.ts +0 -79
  330. package/src/extensions/automerge/update-automerge.ts +0 -50
  331. package/src/extensions/automerge/update-codemirror.ts +0 -115
  332. package/src/extensions/autoscroll.ts +0 -163
  333. package/src/extensions/awareness/awareness-provider.ts +0 -127
  334. package/src/extensions/awareness/awareness.ts +0 -315
  335. package/src/extensions/awareness/index.ts +0 -6
  336. package/src/extensions/blast.ts +0 -363
  337. package/src/extensions/blocks.ts +0 -131
  338. package/src/extensions/bookmarks.ts +0 -75
  339. package/src/extensions/comments.ts +0 -598
  340. package/src/extensions/debug.ts +0 -15
  341. package/src/extensions/dnd.ts +0 -37
  342. package/src/extensions/factories.ts +0 -278
  343. package/src/extensions/focus.ts +0 -36
  344. package/src/extensions/folding.tsx +0 -43
  345. package/src/extensions/hashtag.tsx +0 -68
  346. package/src/extensions/index.ts +0 -35
  347. package/src/extensions/json.ts +0 -57
  348. package/src/extensions/listener.ts +0 -32
  349. package/src/extensions/markdown/action.ts +0 -117
  350. package/src/extensions/markdown/bundle.ts +0 -105
  351. package/src/extensions/markdown/changes.test.ts +0 -26
  352. package/src/extensions/markdown/changes.ts +0 -149
  353. package/src/extensions/markdown/debug.ts +0 -44
  354. package/src/extensions/markdown/decorate.ts +0 -601
  355. package/src/extensions/markdown/formatting.test.ts +0 -498
  356. package/src/extensions/markdown/formatting.ts +0 -1265
  357. package/src/extensions/markdown/highlight.ts +0 -183
  358. package/src/extensions/markdown/image.ts +0 -118
  359. package/src/extensions/markdown/index.ts +0 -13
  360. package/src/extensions/markdown/link.ts +0 -50
  361. package/src/extensions/markdown/parser.test.ts +0 -75
  362. package/src/extensions/markdown/styles.ts +0 -135
  363. package/src/extensions/markdown/table.ts +0 -150
  364. package/src/extensions/mention.ts +0 -41
  365. package/src/extensions/modal.ts +0 -24
  366. package/src/extensions/modes.ts +0 -41
  367. package/src/extensions/outliner/commands.ts +0 -270
  368. package/src/extensions/outliner/editor.test.ts +0 -33
  369. package/src/extensions/outliner/editor.ts +0 -184
  370. package/src/extensions/outliner/index.ts +0 -7
  371. package/src/extensions/outliner/menu.ts +0 -128
  372. package/src/extensions/outliner/outliner.test.ts +0 -100
  373. package/src/extensions/outliner/outliner.ts +0 -167
  374. package/src/extensions/outliner/selection.ts +0 -50
  375. package/src/extensions/outliner/tree.test.ts +0 -168
  376. package/src/extensions/outliner/tree.ts +0 -317
  377. package/src/extensions/preview/index.ts +0 -5
  378. package/src/extensions/preview/preview.ts +0 -193
  379. package/src/extensions/replacer.test.ts +0 -75
  380. package/src/extensions/replacer.ts +0 -93
  381. package/src/extensions/scrolling.ts +0 -189
  382. package/src/extensions/selection.ts +0 -100
  383. package/src/extensions/state.ts +0 -7
  384. package/src/extensions/submit.ts +0 -62
  385. package/src/extensions/tab.ts +0 -29
  386. package/src/extensions/tags/extended-markdown.test.ts +0 -262
  387. package/src/extensions/tags/extended-markdown.ts +0 -78
  388. package/src/extensions/tags/index.ts +0 -7
  389. package/src/extensions/tags/streamer.ts +0 -243
  390. package/src/extensions/tags/xml-tags.ts +0 -500
  391. package/src/extensions/tags/xml-util.ts +0 -94
  392. package/src/extensions/typewriter.ts +0 -68
  393. package/src/stories/CommandDialog.stories.tsx +0 -83
  394. package/src/styles/index.ts +0 -7
  395. package/src/styles/markdown.ts +0 -26
  396. package/src/styles/theme.ts +0 -269
  397. package/src/styles/tokens.ts +0 -17
  398. package/src/types/index.ts +0 -5
  399. package/src/types/types.ts +0 -32
  400. package/src/util/cursor.ts +0 -56
  401. package/src/util/debug.ts +0 -69
  402. package/src/util/decorations.ts +0 -21
  403. package/src/util/dom.ts +0 -34
  404. package/src/util/facet.ts +0 -13
@@ -8,21 +8,19 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React from 'react';
9
9
 
10
10
  import { log } from '@dxos/log';
11
- import { withTheme } from '@dxos/react-ui/testing';
12
-
13
- import { editorMonospace } from '../defaults';
11
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
14
12
  import {
15
13
  InputModeExtensions,
16
14
  decorateMarkdown,
17
15
  folding,
18
16
  image,
17
+ join,
19
18
  listener,
20
19
  mention,
21
20
  selectionState,
22
21
  staticCompletion,
23
22
  typeahead,
24
- } from '../extensions';
25
- import { str } from '../util';
23
+ } from '@dxos/ui-editor';
26
24
 
27
25
  import {
28
26
  EditorStory,
@@ -39,7 +37,7 @@ import {
39
37
  const meta = {
40
38
  title: 'ui/react-ui-editor/TextEditor',
41
39
  component: EditorStory,
42
- decorators: [withTheme],
40
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
43
41
  parameters: {
44
42
  layout: 'fullscreen',
45
43
  controls: { disable: true },
@@ -97,7 +95,7 @@ export const NoExtensions: Story = {
97
95
  export const Vim: Story = {
98
96
  render: () => (
99
97
  <EditorStory
100
- text={str('# Vim Mode', '', 'The distant future. The year 2000.', '', content.paragraphs)}
98
+ text={join('# Vim Mode', '', 'The distant future. The year 2000.', '', content.paragraphs)}
101
99
  extensions={[defaultExtensions, InputModeExtensions.vim]}
102
100
  />
103
101
  ),
@@ -110,7 +108,7 @@ export const Vim: Story = {
110
108
  export const Listener: Story = {
111
109
  render: () => (
112
110
  <EditorStory
113
- text={str('# Listener', '', content.footer)}
111
+ text={join('# Listener', '', content.footer)}
114
112
  extensions={[
115
113
  listener({
116
114
  onFocus: ({ focusing }) => {
@@ -140,7 +138,7 @@ export const Folding: Story = {
140
138
  export const Scrolling: Story = {
141
139
  render: () => (
142
140
  <EditorStory
143
- text={str('# Large Document', '', longText)}
141
+ text={join('# Large Document', '', longText)}
144
142
  extensions={selectionState({
145
143
  setState: (id, state) => global.set(id, state),
146
144
  getState: (id) => global.get(id),
@@ -151,7 +149,7 @@ export const Scrolling: Story = {
151
149
 
152
150
  export const ScrollingWithImages: Story = {
153
151
  render: () => (
154
- <EditorStory text={str('# Large Document', '', largeWithImages)} extensions={[decorateMarkdown(), image()]} />
152
+ <EditorStory text={join('# Large Document', '', largeWithImages)} extensions={[decorateMarkdown(), image()]} />
155
153
  ),
156
154
  };
157
155
 
@@ -159,7 +157,7 @@ export const ScrollTo: Story = {
159
157
  render: () => {
160
158
  // NOTE: Selection won't appear if text is reformatted.
161
159
  const word = 'Scroll to here...';
162
- const text = str('# Scroll To', longText, '', word, '', longText);
160
+ const text = join('# Scroll To', longText, '', word, '', longText);
163
161
  const idx = text.indexOf(word);
164
162
  return (
165
163
  <EditorStory
@@ -178,11 +176,7 @@ export const ScrollTo: Story = {
178
176
 
179
177
  export const Typescript: Story = {
180
178
  render: () => (
181
- <EditorStory
182
- text={content.typescript}
183
- lineNumbers
184
- extensions={[editorMonospace, javascript({ typescript: true })]}
185
- />
179
+ <EditorStory text={content.typescript} lineNumbers monospace extensions={javascript({ typescript: true })} />
186
180
  ),
187
181
  };
188
182
 
@@ -195,7 +189,7 @@ const completions = ['hello world!', 'dxos.org'];
195
189
  export const Typeahead: Story = {
196
190
  render: () => (
197
191
  <EditorStory
198
- text={str('# Typeahead', '')}
192
+ text={join('# Typeahead', '')}
199
193
  extensions={[
200
194
  typeahead({
201
195
  onComplete: staticCompletion(completions, { minLength: 2 }),
@@ -212,7 +206,7 @@ export const Typeahead: Story = {
212
206
  export const Mention: Story = {
213
207
  render: () => (
214
208
  <EditorStory
215
- text={str('# Mention', '', 'Type @...', content.footer)}
209
+ text={join('# Mention', '', 'Type @...', content.footer)}
216
210
  extensions={[
217
211
  mention({
218
212
  onSearch: (text) => names.filter((name) => name.toLowerCase().startsWith(text.toLowerCase())),
@@ -229,7 +223,7 @@ export const Mention: Story = {
229
223
  export const Search: Story = {
230
224
  render: () => (
231
225
  <EditorStory
232
- text={str('# Search', text)}
226
+ text={join('# Search', text)}
233
227
  extensions={defaultExtensions}
234
228
  onReady={(view) => openSearchPanel(view)}
235
229
  />
@@ -0,0 +1,61 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { useMemo } from 'react';
7
+
8
+ import { useThemeContext } from '@dxos/react-ui';
9
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
10
+ import { createBasicExtensions, createThemeExtensions } from '@dxos/ui-editor';
11
+
12
+ import { Editor } from '../components';
13
+
14
+ const createText = (monospace?: boolean) =>
15
+ [`${monospace ? 'monospace' : 'body'}`, 'Hello world', '0123456789'].join('\n');
16
+
17
+ const DefaultStory = () => {
18
+ const { themeMode } = useThemeContext();
19
+ const [ext1, ext2] = useMemo(
20
+ () => [
21
+ //
22
+ [
23
+ createBasicExtensions({ placeholder: 'Enter text', search: true }),
24
+ createThemeExtensions({ themeMode, monospace: false }),
25
+ ],
26
+ [
27
+ createBasicExtensions({ placeholder: 'Enter text', search: true }),
28
+ createThemeExtensions({ themeMode, monospace: true }),
29
+ ],
30
+ ],
31
+ [],
32
+ );
33
+
34
+ return (
35
+ <div className='w-full grid grid-cols-2 gap-2'>
36
+ <Editor.Root>
37
+ <Editor.Content classNames='p-2' extensions={ext1} initialValue={createText(false)} />
38
+ </Editor.Root>
39
+ <Editor.Root>
40
+ <Editor.Content classNames='p-2' extensions={ext2} initialValue={createText(true)} />
41
+ </Editor.Root>
42
+ </div>
43
+ );
44
+ };
45
+
46
+ const meta: Meta<typeof DefaultStory> = {
47
+ title: 'ui/react-ui-editor/Theme',
48
+ component: DefaultStory,
49
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
50
+ parameters: {
51
+ layout: 'fullscreen',
52
+ },
53
+ };
54
+
55
+ export default meta;
56
+
57
+ type Story = StoryObj<typeof meta>;
58
+
59
+ export const Default: Story = {
60
+ args: {},
61
+ };
@@ -5,30 +5,27 @@
5
5
  import { type EditorView } from '@codemirror/view';
6
6
  import React, { type ReactNode, forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
7
7
 
8
- import { createDocAccessor, createObject } from '@dxos/client/echo';
9
- import { Expando } from '@dxos/echo/internal';
10
- import { live } from '@dxos/echo/internal';
8
+ import { Obj } from '@dxos/echo';
9
+ import { TestSchema } from '@dxos/echo/testing';
11
10
  import { invariant } from '@dxos/invariant';
12
11
  import { PublicKey } from '@dxos/keys';
13
12
  import { log } from '@dxos/log';
14
13
  import { useMergeRefs, useThemeContext } from '@dxos/react-ui';
15
14
  import { useAttentionAttributes } from '@dxos/react-ui-attention';
16
- import { JsonFilter } from '@dxos/react-ui-syntax-highlighter';
17
- import { mx } from '@dxos/react-ui-theme';
18
- import { isNonNullable } from '@dxos/util';
19
-
20
- import { type EditorController, createEditorController } from '../../components';
21
- import { editorGutter, editorSlots } from '../../defaults';
15
+ import { Json } from '@dxos/react-ui-syntax-highlighter';
22
16
  import {
23
17
  type DebugNode,
24
18
  type ThemeExtensionsOptions,
25
19
  createBasicExtensions,
26
- createDataExtensions,
27
20
  createMarkdownExtensions,
28
21
  createThemeExtensions,
29
22
  debugTree,
30
- decorateMarkdown,
31
- } from '../../extensions';
23
+ documentSlots,
24
+ } from '@dxos/ui-editor';
25
+ import { mx } from '@dxos/ui-theme';
26
+ import { isNonNullable } from '@dxos/util';
27
+
28
+ import { type EditorController, createEditorController } from '../../components';
32
29
  import { type UseTextEditorProps, useTextEditor } from '../../hooks';
33
30
 
34
31
  // Type definitions.
@@ -36,40 +33,41 @@ export type DebugMode = 'raw' | 'tree' | 'raw+tree';
36
33
 
37
34
  const defaultId = 'editor-' + PublicKey.random().toHex().slice(0, 8);
38
35
 
39
- export type StoryProps = Pick<UseTextEditorProps, 'id' | 'scrollTo' | 'selection' | 'extensions'> &
36
+ export type EditorStoryProps = Pick<UseTextEditorProps, 'id' | 'scrollTo' | 'selection' | 'extensions'> &
40
37
  Pick<ThemeExtensionsOptions, 'slots'> & {
41
38
  debug?: DebugMode;
42
39
  debugCustom?: (view: EditorView) => ReactNode;
43
40
  text?: string;
44
- object?: Expando;
41
+ object?: Obj.OfShape<TestSchema.Expando>;
45
42
  readOnly?: boolean;
46
43
  placeholder?: string;
47
44
  lineNumbers?: boolean;
45
+ monospace?: boolean;
48
46
  onReady?: (view: EditorView) => void;
49
47
  };
50
48
 
51
- export const EditorStory = forwardRef<EditorController, StoryProps>(
52
- ({ debug, debugCustom, text, extensions: extensionsParam, ...props }, forwardedRef) => {
49
+ export const EditorStory = forwardRef<EditorController, EditorStoryProps>(
50
+ ({ debug, debugCustom, text, extensions: extensionsProp, ...props }, forwardedRef) => {
53
51
  const controllerRef = useRef<EditorController>(null);
54
52
  const mergedRef = useMergeRefs([controllerRef, forwardedRef]);
55
53
 
56
54
  const attentionAttrs = useAttentionAttributes('test-panel');
57
55
  const [tree, setTree] = useState<DebugNode>();
58
- const [object] = useState(createObject(live(Expando, { content: text ?? '' })));
56
+ const [object] = useState(Obj.make(TestSchema.Expando, { content: text ?? '' }));
59
57
 
60
58
  const extensions = useMemo(
61
- () => (debug ? [extensionsParam, debugTree(setTree)].filter(isNonNullable) : extensionsParam),
62
- [debug, extensionsParam],
59
+ () => (debug ? [extensionsProp, debugTree(setTree)].filter(isNonNullable) : extensionsProp),
60
+ [debug, extensionsProp],
63
61
  );
64
62
 
65
63
  const view = controllerRef.current?.view;
66
64
  return (
67
- <div className={mx('is-full bs-full grid overflow-hidden', debug && 'grid-cols-2 lg:grid-cols-[1fr_600px]')}>
65
+ <div className={mx('dx-container grid', debug && 'grid-cols-2 lg:grid-cols-[1fr_600px]')}>
68
66
  <EditorComponent ref={mergedRef} object={object} text={text} extensions={extensions} {...props} />
69
67
 
70
68
  {debug && (
71
69
  <div
72
- className='grid bs-full auto-rows-fr border-l border-separator divide-y divide-separator overflow-hidden'
70
+ className='grid h-full auto-rows-fr border-l border-separator divide-y divide-separator overflow-hidden'
73
71
  {...attentionAttrs}
74
72
  >
75
73
  {view && debugCustom?.(view)}
@@ -78,7 +76,14 @@ export const EditorStory = forwardRef<EditorController, StoryProps>(
78
76
  {view?.state.doc.toString()}
79
77
  </pre>
80
78
  )}
81
- {(debug === 'tree' || debug === 'raw+tree') && <JsonFilter data={tree} classNames='p-1 text-xs' />}
79
+ {(debug === 'tree' || debug === 'raw+tree') && (
80
+ <Json.Root data={tree}>
81
+ <Json.Content>
82
+ <Json.Filter />
83
+ <Json.Data classNames='p-1 text-xs' />
84
+ </Json.Content>
85
+ </Json.Root>
86
+ )}
82
87
  </div>
83
88
  )}
84
89
  </div>
@@ -88,10 +93,8 @@ export const EditorStory = forwardRef<EditorController, StoryProps>(
88
93
 
89
94
  /**
90
95
  * Default story component.
91
- * @deprecated
92
96
  */
93
- // TODO(burdon): Replace with <Editor.Root>
94
- export const EditorComponent = forwardRef<EditorController, StoryProps>(
97
+ const EditorComponent = forwardRef<EditorController, EditorStoryProps>(
95
98
  (
96
99
  {
97
100
  id = defaultId,
@@ -100,10 +103,11 @@ export const EditorComponent = forwardRef<EditorController, StoryProps>(
100
103
  readOnly,
101
104
  placeholder = 'New document.',
102
105
  lineNumbers,
106
+ monospace,
103
107
  scrollTo,
104
108
  selection,
105
109
  extensions,
106
- slots = editorSlots,
110
+ slots = documentSlots,
107
111
  onReady,
108
112
  },
109
113
  forwardedRef,
@@ -118,12 +122,9 @@ export const EditorComponent = forwardRef<EditorController, StoryProps>(
118
122
  selection,
119
123
  initialValue: text,
120
124
  extensions: [
121
- createDataExtensions({ id, text: createDocAccessor(object, ['content']) }),
122
125
  createBasicExtensions({ readOnly, placeholder, lineNumbers, scrollPastEnd: true, search: true }),
126
+ createThemeExtensions({ monospace, themeMode, syntaxHighlighting: true, slots }),
123
127
  createMarkdownExtensions(),
124
- createThemeExtensions({ themeMode, syntaxHighlighting: true, slots }),
125
- decorateMarkdown(),
126
- editorGutter,
127
128
  extensions || [],
128
129
  ],
129
130
  }),
@@ -4,24 +4,24 @@
4
4
 
5
5
  import { type Completion } from '@codemirror/autocomplete';
6
6
  import { type Extension } from '@codemirror/state';
7
- import React, { type FC } from 'react';
8
-
9
- import { faker } from '@dxos/random';
10
- import { Icon } from '@dxos/react-ui';
11
- import { mx } from '@dxos/react-ui-theme';
12
7
 
8
+ import { random } from '@dxos/random';
9
+ import { Domino } from '@dxos/ui';
13
10
  import {
14
11
  type EditorSelectionState,
12
+ type RenderCallback,
15
13
  decorateMarkdown,
16
14
  folding,
17
15
  formattingKeymap,
18
16
  image,
19
17
  linkTooltip,
20
18
  table,
21
- } from '../../extensions';
22
- import { createRenderer, str } from '../../util';
19
+ } from '@dxos/ui-editor';
20
+ import { safeUrl } from '@dxos/util';
21
+
22
+ import { str } from '../../util';
23
23
 
24
- export const num = () => faker.number.int({ min: 0, max: 9999 }).toLocaleString();
24
+ export const num = () => random.number.int({ min: 0, max: 9999 }).toLocaleString();
25
25
 
26
26
  export const img = '![dxos](https://dxos.network/dxos-logotype-blue.png)';
27
27
 
@@ -41,11 +41,11 @@ export const content = {
41
41
  // prettier-ignore
42
42
  '### TaskList',
43
43
  '',
44
- `- [x] ${faker.lorem.sentences()}`,
45
- `- [ ] ${faker.lorem.sentences()}`,
46
- ` - [ ] ${faker.lorem.sentences()}`,
47
- ` - [ ] ${faker.lorem.sentences()}`,
48
- ` - [x] ${faker.lorem.sentences()}`,
44
+ `- [x] ${random.lorem.sentences()}`,
45
+ `- [ ] ${random.lorem.sentences()}`,
46
+ ` - [ ] ${random.lorem.sentences()}`,
47
+ ` - [ ] ${random.lorem.sentences()}`,
48
+ ` - [x] ${random.lorem.sentences()}`,
49
49
  '',
50
50
  ),
51
51
 
@@ -53,11 +53,11 @@ export const content = {
53
53
  // prettier-ignore
54
54
  '### BulletList',
55
55
  '',
56
- `- ${faker.lorem.sentences()}`,
57
- `- ${faker.lorem.sentences()}`,
58
- ` - ${faker.lorem.sentences()}`,
59
- ` - ${faker.lorem.sentences()}`,
60
- `- ${faker.lorem.sentences()}`,
56
+ `- ${random.lorem.sentences()}`,
57
+ `- ${random.lorem.sentences()}`,
58
+ ` - ${random.lorem.sentences()}`,
59
+ ` - ${random.lorem.sentences()}`,
60
+ `- ${random.lorem.sentences()}`,
61
61
  '',
62
62
  ),
63
63
 
@@ -65,17 +65,17 @@ export const content = {
65
65
  // prettier-ignore
66
66
  '### OrderedList (part 1)',
67
67
  '',
68
- `1. ${faker.lorem.sentences()}`,
69
- `1. ${faker.lorem.sentences()}`,
70
- `1. ${faker.lorem.sentences()}`,
71
- ` 1. ${faker.lorem.sentences()}`,
72
- ` 1. ${faker.lorem.sentences()}`,
73
- ` 1. ${faker.lorem.sentences()}`,
74
- `1. ${faker.lorem.sentences()}`,
68
+ `1. ${random.lorem.sentences()}`,
69
+ `1. ${random.lorem.sentences()}`,
70
+ `1. ${random.lorem.sentences()}`,
71
+ ` 1. ${random.lorem.sentences()}`,
72
+ ` 1. ${random.lorem.sentences()}`,
73
+ ` 1. ${random.lorem.sentences()}`,
74
+ `1. ${random.lorem.sentences()}`,
75
75
  '',
76
76
  '### OrderedList (part 2)',
77
77
  '',
78
- `1. ${faker.lorem.sentences()}`,
78
+ `1. ${random.lorem.sentences()}`,
79
79
  '',
80
80
  ),
81
81
 
@@ -123,7 +123,7 @@ export const content = {
123
123
  // prettier-ignore
124
124
  '### Tables',
125
125
  '',
126
- `| ${faker.lorem.word().padStart(12)} | ${faker.lorem.word().padStart(12)} | ${faker.lorem.word().padStart(12)} |`,
126
+ `| ${random.lorem.word().padStart(12)} | ${random.lorem.word().padStart(12)} | ${random.lorem.word().padStart(12)} |`,
127
127
  `|-${''.padStart(12, '-')}-|-${''.padStart(12, '-')}-|-${''.padStart(12, '-')}-|`,
128
128
  `| ${num().padStart(12)} | ${num().padStart(12)} | ${num().padStart(12)} |`,
129
129
  `| ${num().padStart(12)} | ${num().padStart(12)} | ${num().padStart(12)} |`,
@@ -134,7 +134,9 @@ export const content = {
134
134
  image: str('### Image', '', img),
135
135
 
136
136
  headings: str(
137
- ...[1, 2, 3, 4, 5, 6].map((level) => ['#'.repeat(level) + ` Heading ${level}`, faker.lorem.sentences(), '']).flat(),
137
+ ...[1, 2, 3, 4, 5, 6]
138
+ .map((level) => ['#'.repeat(level) + ` Heading ${level}`, random.lorem.sentences(), ''])
139
+ .flat(),
138
140
  ),
139
141
 
140
142
  formatting: str(
@@ -159,7 +161,7 @@ export const content = {
159
161
  '',
160
162
  ),
161
163
 
162
- paragraphs: str(...faker.helpers.multiple(() => [faker.lorem.paragraph(), ''], { count: 3 }).flat()),
164
+ paragraphs: str(...random.helpers.multiple(() => [random.lorem.paragraph(), ''], { count: 3 }).flat()),
163
165
 
164
166
  footer: str('', '', '', '', ''),
165
167
  };
@@ -204,30 +206,27 @@ export const links: Completion[] = [
204
206
  export const names = ['adam', 'alice', 'alison', 'bob', 'carol', 'charlie', 'sayuri', 'shoko'];
205
207
 
206
208
  const hover =
207
- 'rounded-sm text-baseText text-primary-600 hover:text-primary-500 dark:text-primary-300 hover:dark:text-primary-200';
208
-
209
- const LinkTooltip: FC<{ url: string }> = ({ url }) => {
210
- const web = new URL(url);
211
- return (
212
- <a href={url} target='_blank' rel='noreferrer' className={mx(hover, 'flex items-center gap-2')}>
213
- {web.origin}
214
- <Icon icon='ph--arrow-square-out--regular' size={4} />
215
- </a>
209
+ 'rounded-xs text-base-surface-text text-primary-600 hover:text-primary-500 dark:text-primary-300 hover:dark:text-primary-200';
210
+
211
+ export const renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {
212
+ el.appendChild(
213
+ Domino.of('a')
214
+ .attributes({ href: url, target: '_blank', rel: 'noreferrer', 'aria-label': 'Open link' })
215
+ .classNames(hover, 'flex items-center gap-2')
216
+ .text(safeUrl(url)?.toString() ?? url)
217
+ .append(Domino.svg('ph--arrow-square-out--regular')).root,
216
218
  );
217
219
  };
218
220
 
219
- export const renderLinkTooltip = createRenderer(LinkTooltip);
220
-
221
- const LinkButton: FC<{ url: string }> = ({ url }) => {
222
- return (
223
- <a href={url} target='_blank' rel='noreferrer' className={mx(hover)}>
224
- <Icon icon='ph--arrow-square-out--regular' size={4} classNames='inline-block mis-1 mb-[3px]' />
225
- </a>
221
+ export const renderLinkButton: RenderCallback<{ url: string }> = (el, { url }) => {
222
+ el.appendChild(
223
+ Domino.of('span')
224
+ .attributes({ 'aria-hidden': 'true' })
225
+ .classNames(hover, 'ms-1 inline-block align-[-0.125em]')
226
+ .append(Domino.svg('ph--arrow-square-out--regular')).root,
226
227
  );
227
228
  };
228
229
 
229
- export const renderLinkButton = createRenderer(LinkButton);
230
-
231
230
  // Shared extensions.
232
231
  export const defaultExtensions: Extension[] = [
233
232
  decorateMarkdown({ renderLinkButton, selectionChangeDelay: 100 }),
@@ -245,18 +244,18 @@ export const allExtensions: Extension[] = [
245
244
  ];
246
245
 
247
246
  // Long text for scrolling stories.
248
- export const longText = faker.helpers
249
- .multiple(() => faker.lorem.paragraph({ min: 8, max: 16 }), { count: 20 })
247
+ export const longText = random.helpers
248
+ .multiple(() => random.lorem.paragraph({ min: 8, max: 16 }), { count: 20 })
250
249
  .join('\n\n');
251
250
 
252
- export const largeWithImages = faker.helpers
253
- .multiple(() => [faker.lorem.paragraph({ min: 12, max: 16 }), img], { count: 20 })
251
+ export const largeWithImages = random.helpers
252
+ .multiple(() => [random.lorem.paragraph({ min: 12, max: 16 }), img], { count: 20 })
254
253
  .flatMap((x) => x)
255
254
  .join('\n\n');
256
255
 
257
256
  export const headings = str(
258
257
  ...[1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 2, 3, 3, 2, 2, 6, 1]
259
- .map((level) => ['#'.repeat(level) + ' ' + faker.lorem.sentence(3), faker.lorem.sentences(), ''])
258
+ .map((level) => ['#'.repeat(level) + ' ' + random.lorem.sentence(3), random.lorem.sentences(), ''])
260
259
  .flat(),
261
260
  );
262
261
 
@@ -4,36 +4,41 @@
4
4
 
5
5
  import { type Resource } from '@dxos/react-ui';
6
6
 
7
- export const translationKey = 'react-ui-editor';
7
+ export const translationKey = '@dxos/react-ui-editor';
8
8
 
9
9
  export const translations = [
10
10
  {
11
11
  'en-US': {
12
12
  [translationKey]: {
13
- 'strong label': 'Bold',
14
- 'emphasis label': 'Italics',
15
- 'strikethrough label': 'Strikethrough',
16
- 'code label': 'Code',
17
- 'link label': 'Link',
18
- 'list-bullet label': 'Bullet list',
19
- 'list-ordered label': 'Numbered list',
20
- 'list-task label': 'Task list',
21
- 'blockquote label': 'Block quote',
22
- 'codeblock label': 'Code block',
23
- 'comment label': 'Create comment',
24
- 'selection overlaps existing comment label': 'Selection overlaps existing comment',
25
- 'select text to comment label': 'Select text to comment',
26
- 'image label': 'Insert image',
27
- 'table label': 'Create table',
28
- 'heading label': 'Heading level',
29
- 'heading level label_zero': 'Paragraph',
30
- 'heading level label_one': 'Heading level {{count}}',
31
- 'heading level label_other': 'Heading level {{count}}',
32
- 'view mode label': 'Editor view',
33
- 'preview mode label': 'Live preview',
34
- 'readonly mode label': 'Read only',
35
- 'search label': 'Search',
36
- 'source mode label': 'Source',
13
+ 'comment.label': 'Create comment',
14
+ 'image.label': 'Insert image',
15
+ 'search.label': 'Search',
16
+
17
+ 'block.label': 'Block',
18
+ 'block.blockquote.label': 'Block quote',
19
+ 'block.codeblock.label': 'Code block',
20
+ 'block.table.label': 'Create table',
21
+
22
+ 'formatting.label': 'Formatting',
23
+ 'formatting.strong.label': 'Bold',
24
+ 'formatting.emphasis.label': 'Italics',
25
+ 'formatting.strikethrough.label': 'Strikethrough',
26
+ 'formatting.code.label': 'Code',
27
+ 'formatting.link.label': 'Link',
28
+
29
+ 'list.bullet.label': 'Bullet list',
30
+ 'list.ordered.label': 'Numbered list',
31
+ 'list.task.label': 'Task list',
32
+
33
+ 'heading.label': 'Heading level',
34
+ 'heading-level.label_zero': 'Paragraph',
35
+ 'heading-level.label_one': 'Heading level {{count}}',
36
+ 'heading-level.label_other': 'Heading level {{count}}',
37
+
38
+ 'view-mode.label': 'Editor view',
39
+ 'view-mode.preview.label': 'Markdown',
40
+ 'view-mode.source.label': 'Plain text',
41
+ 'view-mode.readonly.label': 'Read only',
37
42
  },
38
43
  },
39
44
  },
package/src/util/index.ts CHANGED
@@ -1,10 +1,5 @@
1
1
  //
2
- // Copyright 2024 DXOS.org
2
+ // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './cursor';
6
- export * from './decorations';
7
- export * from './debug';
8
- export * from './dom';
9
- export * from './facet';
10
5
  export * from './react';
@@ -2,30 +2,25 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import React, { type FC, type ReactNode } from 'react';
5
+ import React, { type FC } from 'react';
6
6
  import { createRoot } from 'react-dom/client';
7
7
 
8
8
  import { ThemeProvider, Tooltip } from '@dxos/react-ui';
9
- import { defaultTx } from '@dxos/react-ui-theme';
9
+ import { type RenderCallback } from '@dxos/ui-editor';
10
+ import { defaultTx } from '@dxos/ui-theme';
10
11
 
11
- import { type RenderCallback } from '../types';
12
-
13
- /** @deprecated */
14
- // TODO(wittjosiah): Replace with portals which are lighter weight and inherit context from the main react tree.
15
- export const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {
16
- createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);
17
- return root;
18
- };
12
+ /**
13
+ * @deprecated Use `trim` from `@dxos/util`.
14
+ */
15
+ export const str = (...lines: string[]) => lines.join('\n');
19
16
 
20
17
  /**
21
- * Utility to create a renderer for a React component.
22
18
  * @deprecated
23
19
  */
24
20
  export const createRenderer =
25
21
  <TProps extends object>(Component: FC<TProps>): RenderCallback<TProps> =>
26
22
  (el, props) => {
27
- renderRoot(
28
- el,
23
+ createRoot(el).render(
29
24
  <ThemeProvider tx={defaultTx}>
30
25
  <Tooltip.Provider>
31
26
  <Component {...props} />
@@ -1,22 +0,0 @@
1
- // src/types/types.ts
2
- import * as Schema from "effect/Schema";
3
- var EditorViewModes = [
4
- "preview",
5
- "readonly",
6
- "source"
7
- ];
8
- var EditorViewMode = Schema.Union(...EditorViewModes.map((mode) => Schema.Literal(mode)));
9
- var EditorInputModes = [
10
- "default",
11
- "vim",
12
- "vscode"
13
- ];
14
- var EditorInputMode = Schema.Union(...EditorInputModes.map((mode) => Schema.Literal(mode)));
15
-
16
- export {
17
- EditorViewModes,
18
- EditorViewMode,
19
- EditorInputModes,
20
- EditorInputMode
21
- };
22
- //# sourceMappingURL=chunk-HL3YF6WC.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport * as Schema from 'effect/Schema';\n\n// Runtime data structure.\nexport type Range = {\n from: number;\n to: number;\n};\n\n// Persistent data structure.\n// TODO(burdon): Rename annotation?\nexport type Comment = {\n id: string;\n cursor?: string;\n};\n\n/**\n * Callback that renders into a DOM element within the editor.\n */\nexport type RenderCallback<Props extends object> = (el: HTMLElement, props: Props, view: EditorView) => void;\n\nexport const EditorViewModes = ['preview', 'readonly', 'source'] as const;\nexport const EditorViewMode = Schema.Union(...EditorViewModes.map((mode) => Schema.Literal(mode)));\nexport type EditorViewMode = Schema.Schema.Type<typeof EditorViewMode>;\n\nexport const EditorInputModes = ['default', 'vim', 'vscode'] as const;\nexport const EditorInputMode = Schema.Union(...EditorInputModes.map((mode) => Schema.Literal(mode)));\nexport type EditorInputMode = Schema.Schema.Type<typeof EditorInputMode>;\n"],
5
- "mappings": ";AAKA,YAAYA,YAAY;AAoBjB,IAAMC,kBAAkB;EAAC;EAAW;EAAY;;AAChD,IAAMC,iBAAwBC,aAAK,GAAIF,gBAAgBG,IAAI,CAACC,SAAgBC,eAAQD,IAAAA,CAAAA,CAAAA;AAGpF,IAAME,mBAAmB;EAAC;EAAW;EAAO;;AAC5C,IAAMC,kBAAyBL,aAAK,GAAII,iBAAiBH,IAAI,CAACC,SAAgBC,eAAQD,IAAAA,CAAAA,CAAAA;",
6
- "names": ["Schema", "EditorViewModes", "EditorViewMode", "Union", "map", "mode", "Literal", "EditorInputModes", "EditorInputMode"]
7
- }