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

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 (414) hide show
  1. package/dist/lib/browser/index.mjs +1407 -7549
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/translations.mjs +39 -0
  5. package/dist/lib/browser/translations.mjs.map +7 -0
  6. package/dist/lib/node-esm/index.mjs +1407 -7548
  7. package/dist/lib/node-esm/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/meta.json +1 -1
  9. package/dist/lib/node-esm/translations.mjs +41 -0
  10. package/dist/lib/node-esm/translations.mjs.map +7 -0
  11. package/dist/types/src/components/Editor/Editor.d.ts +54 -15
  12. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  13. package/dist/types/src/components/Editor/Editor.stories.d.ts +23 -0
  14. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  15. package/dist/types/src/components/Editor/EditorView.d.ts +31 -0
  16. package/dist/types/src/components/Editor/EditorView.d.ts.map +1 -0
  17. package/dist/types/src/components/Editor/controller.d.ts +10 -0
  18. package/dist/types/src/components/Editor/controller.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +34 -0
  20. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  22. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  24. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  26. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +47 -0
  28. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  30. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  32. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  34. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  35. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +28 -2
  36. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  37. package/dist/types/src/components/EditorToolbar/blocks.d.ts +4 -17
  38. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/formatting.d.ts +4 -17
  40. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/headings.d.ts +4 -17
  42. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/image.d.ts +3 -15
  44. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/index.d.ts +1 -1
  46. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/lists.d.ts +4 -17
  48. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/search.d.ts +3 -15
  50. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  51. package/dist/types/src/components/EditorToolbar/types.d.ts +6 -0
  52. package/dist/types/src/components/EditorToolbar/types.d.ts.map +1 -0
  53. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +5 -18
  54. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  55. package/dist/types/src/components/index.d.ts +2 -2
  56. package/dist/types/src/components/index.d.ts.map +1 -1
  57. package/dist/types/src/extensions/Assistant.stories.d.ts +10 -0
  58. package/dist/types/src/extensions/Assistant.stories.d.ts.map +1 -0
  59. package/dist/types/src/extensions/assistant-extension.d.ts +24 -0
  60. package/dist/types/src/extensions/assistant-extension.d.ts.map +1 -0
  61. package/dist/types/src/extensions/index.d.ts +1 -22
  62. package/dist/types/src/extensions/index.d.ts.map +1 -1
  63. package/dist/types/src/hooks/index.d.ts +1 -0
  64. package/dist/types/src/hooks/index.d.ts.map +1 -1
  65. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts +25 -0
  66. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts.map +1 -0
  67. package/dist/types/src/hooks/useTextEditor.d.ts +6 -10
  68. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  69. package/dist/types/src/index.d.ts +0 -9
  70. package/dist/types/src/index.d.ts.map +1 -1
  71. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  72. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  73. package/dist/types/src/stories/Comments.stories.d.ts +22 -10
  74. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/EditorToolbar.stories.d.ts +42 -4
  76. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/Experimental.stories.d.ts +23 -13
  78. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Markdown.stories.d.ts +33 -43
  80. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  81. package/dist/types/src/stories/Outliner.stories.d.ts +16 -22
  82. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/Popover.stories.d.ts +20 -0
  84. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  85. package/dist/types/src/stories/Preview.stories.d.ts +23 -7
  86. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  87. package/dist/types/src/stories/Tags.stories.d.ts +16 -0
  88. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -0
  89. package/dist/types/src/stories/TextEditor.stories.d.ts +38 -52
  90. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  91. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  92. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  93. package/dist/types/src/stories/components/EditorStory.d.ts +11 -23
  94. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  95. package/dist/types/src/stories/components/util.d.ts +4 -3
  96. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  97. package/dist/types/src/translations.d.ts +26 -26
  98. package/dist/types/src/translations.d.ts.map +1 -1
  99. package/dist/types/src/util/index.d.ts +0 -4
  100. package/dist/types/src/util/index.d.ts.map +1 -1
  101. package/dist/types/src/util/react.d.ts +7 -6
  102. package/dist/types/src/util/react.d.ts.map +1 -1
  103. package/dist/types/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +95 -82
  105. package/src/components/Editor/Editor.stories.tsx +89 -0
  106. package/src/components/Editor/Editor.tsx +175 -24
  107. package/src/components/Editor/EditorView.tsx +84 -0
  108. package/src/components/Editor/controller.ts +50 -0
  109. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +226 -0
  110. package/src/components/EditorMenuProvider/index.ts +10 -0
  111. package/src/components/EditorMenuProvider/menu-presets.ts +125 -0
  112. package/src/components/EditorMenuProvider/menu.ts +70 -0
  113. package/src/components/EditorMenuProvider/popover.ts +286 -0
  114. package/src/components/EditorMenuProvider/useEditorMenu.ts +180 -0
  115. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  116. package/src/components/EditorPreviewProvider/index.ts +5 -0
  117. package/src/components/EditorToolbar/EditorToolbar.tsx +92 -103
  118. package/src/components/EditorToolbar/blocks.ts +53 -48
  119. package/src/components/EditorToolbar/formatting.ts +42 -46
  120. package/src/components/EditorToolbar/headings.ts +47 -45
  121. package/src/components/EditorToolbar/image.ts +16 -10
  122. package/src/components/EditorToolbar/index.ts +2 -7
  123. package/src/components/EditorToolbar/lists.ts +40 -41
  124. package/src/components/EditorToolbar/search.ts +16 -10
  125. package/src/components/EditorToolbar/types.ts +8 -0
  126. package/src/components/EditorToolbar/view-mode.ts +40 -40
  127. package/src/components/index.ts +3 -2
  128. package/src/extensions/Assistant.stories.tsx +112 -0
  129. package/src/extensions/assistant-extension.tsx +223 -0
  130. package/src/extensions/index.ts +2 -23
  131. package/src/hooks/index.ts +1 -0
  132. package/src/hooks/useBasicMarkdownExtensions.ts +55 -0
  133. package/src/hooks/useTextEditor.ts +39 -45
  134. package/src/index.ts +0 -13
  135. package/src/stories/Automerge.stories.tsx +174 -0
  136. package/src/stories/Comments.stories.tsx +59 -51
  137. package/src/stories/EditorToolbar.stories.tsx +50 -62
  138. package/src/stories/Experimental.stories.tsx +24 -22
  139. package/src/stories/Markdown.stories.tsx +37 -33
  140. package/src/stories/Outliner.stories.tsx +54 -44
  141. package/src/stories/Popover.stories.tsx +157 -0
  142. package/src/stories/Preview.stories.tsx +114 -95
  143. package/src/stories/Tags.stories.tsx +104 -0
  144. package/src/stories/TextEditor.stories.tsx +50 -75
  145. package/src/stories/Theme.stories.tsx +61 -0
  146. package/src/stories/components/EditorStory.tsx +50 -35
  147. package/src/stories/components/util.tsx +90 -59
  148. package/src/translations.ts +30 -25
  149. package/src/util/index.ts +1 -5
  150. package/src/util/react.tsx +9 -14
  151. package/dist/lib/browser/chunk-22UMM3QJ.mjs +0 -22
  152. package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +0 -7
  153. package/dist/lib/browser/testing/index.mjs +0 -6
  154. package/dist/lib/browser/testing/index.mjs.map +0 -7
  155. package/dist/lib/browser/types/index.mjs +0 -13
  156. package/dist/lib/browser/types/index.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs +0 -24
  158. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +0 -7
  159. package/dist/lib/node-esm/testing/index.mjs +0 -8
  160. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  161. package/dist/lib/node-esm/types/index.mjs +0 -14
  162. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  163. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  164. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  165. package/dist/types/src/components/Popover/CommandMenu.d.ts +0 -34
  166. package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
  167. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -21
  168. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
  169. package/dist/types/src/components/Popover/RefPopover.d.ts +0 -34
  170. package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
  171. package/dist/types/src/components/Popover/index.d.ts +0 -4
  172. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  173. package/dist/types/src/defaults.d.ts +0 -14
  174. package/dist/types/src/defaults.d.ts.map +0 -1
  175. package/dist/types/src/extensions/annotations.d.ts +0 -9
  176. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  177. package/dist/types/src/extensions/autocomplete.d.ts +0 -13
  178. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  179. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  180. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  181. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -56
  182. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  183. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  184. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  185. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  186. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  187. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  188. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  189. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  190. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  191. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  192. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  193. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  194. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  195. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  196. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  197. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  198. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  199. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  200. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  201. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  202. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  203. package/dist/types/src/extensions/blast.d.ts +0 -25
  204. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  205. package/dist/types/src/extensions/command/action.d.ts +0 -17
  206. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  207. package/dist/types/src/extensions/command/command-menu.d.ts +0 -20
  208. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  209. package/dist/types/src/extensions/command/command.d.ts +0 -6
  210. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  211. package/dist/types/src/extensions/command/floating-menu.d.ts +0 -7
  212. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  213. package/dist/types/src/extensions/command/hint.d.ts +0 -24
  214. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  215. package/dist/types/src/extensions/command/index.d.ts +0 -7
  216. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  217. package/dist/types/src/extensions/command/placeholder.d.ts +0 -10
  218. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  219. package/dist/types/src/extensions/command/state.d.ts +0 -16
  220. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  221. package/dist/types/src/extensions/command/typeahead.d.ts +0 -22
  222. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  223. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
  224. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  225. package/dist/types/src/extensions/comments.d.ts +0 -95
  226. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  227. package/dist/types/src/extensions/debug.d.ts +0 -3
  228. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  229. package/dist/types/src/extensions/dnd.d.ts +0 -9
  230. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  231. package/dist/types/src/extensions/factories.d.ts +0 -82
  232. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  233. package/dist/types/src/extensions/focus.d.ts +0 -7
  234. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  235. package/dist/types/src/extensions/folding.d.ts +0 -7
  236. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  237. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  238. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  239. package/dist/types/src/extensions/json.d.ts +0 -7
  240. package/dist/types/src/extensions/json.d.ts.map +0 -1
  241. package/dist/types/src/extensions/listener.d.ts +0 -11
  242. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  243. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  244. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  245. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -16
  246. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  247. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  248. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  249. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  250. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  251. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  252. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  253. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -17
  254. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  255. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  256. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  257. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  258. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  259. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  260. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  261. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  262. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  263. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  264. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  265. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  266. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  267. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  268. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  269. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  270. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  271. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  272. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  273. package/dist/types/src/extensions/mention.d.ts +0 -7
  274. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  275. package/dist/types/src/extensions/modes.d.ts +0 -10
  276. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  277. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  278. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  279. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  280. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  281. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  282. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  283. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  284. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  285. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  286. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  287. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  288. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  289. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  290. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  291. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  292. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  293. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  294. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  295. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  296. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  297. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  298. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  299. package/dist/types/src/extensions/selection.d.ts +0 -24
  300. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  301. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  302. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  303. package/dist/types/src/stories/Command.stories.d.ts +0 -7
  304. package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
  305. package/dist/types/src/stories/CommandMenu.stories.d.ts +0 -13
  306. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  307. package/dist/types/src/styles/index.d.ts +0 -4
  308. package/dist/types/src/styles/index.d.ts.map +0 -1
  309. package/dist/types/src/styles/markdown.d.ts +0 -8
  310. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  311. package/dist/types/src/styles/theme.d.ts +0 -38
  312. package/dist/types/src/styles/theme.d.ts.map +0 -1
  313. package/dist/types/src/styles/tokens.d.ts +0 -3
  314. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  315. package/dist/types/src/testing/index.d.ts +0 -2
  316. package/dist/types/src/testing/index.d.ts.map +0 -1
  317. package/dist/types/src/testing/util.d.ts +0 -2
  318. package/dist/types/src/testing/util.d.ts.map +0 -1
  319. package/dist/types/src/types/index.d.ts +0 -2
  320. package/dist/types/src/types/index.d.ts.map +0 -1
  321. package/dist/types/src/types/types.d.ts +0 -21
  322. package/dist/types/src/types/types.d.ts.map +0 -1
  323. package/dist/types/src/util/cursor.d.ts +0 -31
  324. package/dist/types/src/util/cursor.d.ts.map +0 -1
  325. package/dist/types/src/util/debug.d.ts +0 -17
  326. package/dist/types/src/util/debug.d.ts.map +0 -1
  327. package/dist/types/src/util/dom.d.ts +0 -20
  328. package/dist/types/src/util/dom.d.ts.map +0 -1
  329. package/dist/types/src/util/facet.d.ts +0 -3
  330. package/dist/types/src/util/facet.d.ts.map +0 -1
  331. package/src/components/EditorToolbar/util.ts +0 -65
  332. package/src/components/Popover/CommandMenu.tsx +0 -279
  333. package/src/components/Popover/RefDropdownMenu.tsx +0 -85
  334. package/src/components/Popover/RefPopover.tsx +0 -99
  335. package/src/components/Popover/index.ts +0 -7
  336. package/src/defaults.ts +0 -49
  337. package/src/extensions/annotations.ts +0 -55
  338. package/src/extensions/autocomplete.ts +0 -69
  339. package/src/extensions/automerge/automerge.stories.tsx +0 -142
  340. package/src/extensions/automerge/automerge.test.tsx +0 -78
  341. package/src/extensions/automerge/automerge.ts +0 -85
  342. package/src/extensions/automerge/cursor.ts +0 -28
  343. package/src/extensions/automerge/defs.ts +0 -31
  344. package/src/extensions/automerge/index.ts +0 -5
  345. package/src/extensions/automerge/sync.ts +0 -75
  346. package/src/extensions/automerge/update-automerge.ts +0 -50
  347. package/src/extensions/automerge/update-codemirror.ts +0 -115
  348. package/src/extensions/awareness/awareness-provider.ts +0 -127
  349. package/src/extensions/awareness/awareness.ts +0 -315
  350. package/src/extensions/awareness/index.ts +0 -6
  351. package/src/extensions/blast.ts +0 -363
  352. package/src/extensions/command/action.ts +0 -56
  353. package/src/extensions/command/command-menu.ts +0 -210
  354. package/src/extensions/command/command.ts +0 -34
  355. package/src/extensions/command/floating-menu.ts +0 -133
  356. package/src/extensions/command/hint.ts +0 -102
  357. package/src/extensions/command/index.ts +0 -10
  358. package/src/extensions/command/placeholder.ts +0 -113
  359. package/src/extensions/command/state.ts +0 -89
  360. package/src/extensions/command/typeahead.ts +0 -129
  361. package/src/extensions/command/useCommandMenu.ts +0 -118
  362. package/src/extensions/comments.ts +0 -592
  363. package/src/extensions/debug.ts +0 -15
  364. package/src/extensions/dnd.ts +0 -37
  365. package/src/extensions/factories.ts +0 -259
  366. package/src/extensions/focus.ts +0 -35
  367. package/src/extensions/folding.tsx +0 -46
  368. package/src/extensions/hashtag.tsx +0 -68
  369. package/src/extensions/json.ts +0 -57
  370. package/src/extensions/listener.ts +0 -38
  371. package/src/extensions/markdown/action.ts +0 -116
  372. package/src/extensions/markdown/bundle.ts +0 -71
  373. package/src/extensions/markdown/changes.test.ts +0 -26
  374. package/src/extensions/markdown/changes.ts +0 -149
  375. package/src/extensions/markdown/debug.ts +0 -44
  376. package/src/extensions/markdown/decorate.ts +0 -591
  377. package/src/extensions/markdown/formatting.test.ts +0 -498
  378. package/src/extensions/markdown/formatting.ts +0 -1267
  379. package/src/extensions/markdown/highlight.ts +0 -183
  380. package/src/extensions/markdown/image.ts +0 -119
  381. package/src/extensions/markdown/index.ts +0 -13
  382. package/src/extensions/markdown/link.ts +0 -47
  383. package/src/extensions/markdown/parser.test.ts +0 -75
  384. package/src/extensions/markdown/styles.ts +0 -135
  385. package/src/extensions/markdown/table.ts +0 -144
  386. package/src/extensions/mention.ts +0 -41
  387. package/src/extensions/modes.ts +0 -41
  388. package/src/extensions/outliner/commands.ts +0 -270
  389. package/src/extensions/outliner/editor.test.ts +0 -33
  390. package/src/extensions/outliner/editor.ts +0 -184
  391. package/src/extensions/outliner/index.ts +0 -7
  392. package/src/extensions/outliner/outliner.test.ts +0 -99
  393. package/src/extensions/outliner/outliner.ts +0 -166
  394. package/src/extensions/outliner/selection.ts +0 -50
  395. package/src/extensions/outliner/tree.test.ts +0 -167
  396. package/src/extensions/outliner/tree.ts +0 -317
  397. package/src/extensions/preview/index.ts +0 -5
  398. package/src/extensions/preview/preview.ts +0 -193
  399. package/src/extensions/selection.ts +0 -100
  400. package/src/extensions/typewriter.ts +0 -68
  401. package/src/stories/Command.stories.tsx +0 -97
  402. package/src/stories/CommandMenu.stories.tsx +0 -159
  403. package/src/styles/index.ts +0 -7
  404. package/src/styles/markdown.ts +0 -26
  405. package/src/styles/theme.ts +0 -266
  406. package/src/styles/tokens.ts +0 -17
  407. package/src/testing/index.ts +0 -5
  408. package/src/testing/util.ts +0 -5
  409. package/src/types/index.ts +0 -5
  410. package/src/types/types.ts +0 -32
  411. package/src/util/cursor.ts +0 -55
  412. package/src/util/debug.ts +0 -64
  413. package/src/util/dom.ts +0 -56
  414. package/src/util/facet.ts +0 -13
@@ -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.View classNames='p-2' extensions={ext1} initialValue={createText(false)} />
38
+ </Editor.Root>
39
+ <Editor.Root>
40
+ <Editor.View 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
+ };
@@ -3,64 +3,67 @@
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 { Obj } from '@dxos/echo';
9
+ import { TestSchema } from '@dxos/echo/testing';
9
10
  import { invariant } from '@dxos/invariant';
10
11
  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';
12
+ import { log } from '@dxos/log';
13
+ import { useMergeRefs, useThemeContext } from '@dxos/react-ui';
14
14
  import { useAttentionAttributes } from '@dxos/react-ui-attention';
15
- import { JsonFilter } from '@dxos/react-ui-syntax-highlighter';
16
- import { mx } from '@dxos/react-ui-theme';
17
- import { isNonNullable } from '@dxos/util';
18
-
19
- import { editorSlots, editorGutter } from '../../defaults';
15
+ import { Syntax } from '@dxos/react-ui-syntax-highlighter';
20
16
  import {
21
17
  type DebugNode,
22
18
  type ThemeExtensionsOptions,
23
- createDataExtensions,
24
19
  createBasicExtensions,
25
20
  createMarkdownExtensions,
26
21
  createThemeExtensions,
27
22
  debugTree,
28
- } from '../../extensions';
29
- import { useTextEditor, type UseTextEditorProps } from '../../hooks';
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';
29
+ import { type UseTextEditorProps, useTextEditor } from '../../hooks';
30
30
 
31
31
  // Type definitions.
32
32
  export type DebugMode = 'raw' | 'tree' | 'raw+tree';
33
33
 
34
34
  const defaultId = 'editor-' + PublicKey.random().toHex().slice(0, 8);
35
35
 
36
- export type StoryProps = Pick<UseTextEditorProps, 'scrollTo' | 'selection' | 'extensions'> &
36
+ export type EditorStoryProps = Pick<UseTextEditorProps, 'id' | 'scrollTo' | 'selection' | 'extensions'> &
37
37
  Pick<ThemeExtensionsOptions, 'slots'> & {
38
- id?: string;
39
38
  debug?: DebugMode;
40
39
  debugCustom?: (view: EditorView) => ReactNode;
41
40
  text?: string;
42
- object?: Expando;
41
+ object?: Obj.OfShape<TestSchema.Expando>;
43
42
  readOnly?: boolean;
44
43
  placeholder?: string;
45
44
  lineNumbers?: boolean;
45
+ monospace?: boolean;
46
46
  onReady?: (view: EditorView) => void;
47
47
  };
48
48
 
49
- export const EditorStory = forwardRef<EditorView | undefined, StoryProps>(
50
- ({ debug, debugCustom, text, extensions: _extensions, ...props }, forwardedRef) => {
51
- const attentionAttrs = useAttentionAttributes('testing');
49
+ export const EditorStory = forwardRef<EditorController, EditorStoryProps>(
50
+ ({ debug, debugCustom, text, extensions: extensionsProp, ...props }, forwardedRef) => {
51
+ const controllerRef = useRef<EditorController>(null);
52
+ const mergedRef = useMergeRefs([controllerRef, forwardedRef]);
53
+
54
+ const attentionAttrs = useAttentionAttributes('test-panel');
52
55
  const [tree, setTree] = useState<DebugNode>();
53
- const [object] = useState(createObject(live(Expando, { content: text ?? '' })));
54
- const viewRef = useForwardedRef(forwardedRef);
55
- const view = viewRef.current;
56
+ const [object] = useState(Obj.make(TestSchema.Expando, { content: text ?? '' }));
57
+
56
58
  const extensions = useMemo(
57
- () => (debug ? [_extensions, debugTree(setTree)].filter(isNonNullable) : _extensions),
58
- [debug, _extensions],
59
+ () => (debug ? [extensionsProp, debugTree(setTree)].filter(isNonNullable) : extensionsProp),
60
+ [debug, extensionsProp],
59
61
  );
60
62
 
63
+ const view = controllerRef.current?.view;
61
64
  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} />
65
+ <div className={mx('dx-container grid', debug && 'grid-cols-2 lg:grid-cols-[1fr_600px]')}>
66
+ <EditorComponent ref={mergedRef} object={object} text={text} extensions={extensions} {...props} />
64
67
 
65
68
  {debug && (
66
69
  <div
@@ -73,7 +76,16 @@ export const EditorStory = forwardRef<EditorView | undefined, StoryProps>(
73
76
  {view?.state.doc.toString()}
74
77
  </pre>
75
78
  )}
76
- {(debug === 'tree' || debug === 'raw+tree') && <JsonFilter data={tree} classNames='p-1 text-xs' />}
79
+ {(debug === 'tree' || debug === 'raw+tree') && (
80
+ <Syntax.Root data={tree}>
81
+ <Syntax.Content>
82
+ <Syntax.Filter />
83
+ <Syntax.Viewport>
84
+ <Syntax.Code classNames='p-1 text-xs' />
85
+ </Syntax.Viewport>
86
+ </Syntax.Content>
87
+ </Syntax.Root>
88
+ )}
77
89
  </div>
78
90
  )}
79
91
  </div>
@@ -84,7 +96,7 @@ export const EditorStory = forwardRef<EditorView | undefined, StoryProps>(
84
96
  /**
85
97
  * Default story component.
86
98
  */
87
- export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
99
+ const EditorComponent = forwardRef<EditorController, EditorStoryProps>(
88
100
  (
89
101
  {
90
102
  id = defaultId,
@@ -93,10 +105,11 @@ export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
93
105
  readOnly,
94
106
  placeholder = 'New document.',
95
107
  lineNumbers,
108
+ monospace,
96
109
  scrollTo,
97
110
  selection,
98
111
  extensions,
99
- slots = editorSlots,
112
+ slots = documentSlots,
100
113
  onReady,
101
114
  },
102
115
  forwardedRef,
@@ -111,18 +124,20 @@ export const EditorComponent = forwardRef<EditorView | undefined, StoryProps>(
111
124
  selection,
112
125
  initialValue: text,
113
126
  extensions: [
114
- createDataExtensions({ id, text: createDocAccessor(object, ['content']) }),
115
- createBasicExtensions({ readOnly, placeholder, lineNumbers, scrollPastEnd: true }),
116
- createMarkdownExtensions({ themeMode }),
117
- createThemeExtensions({ themeMode, syntaxHighlighting: true, slots }),
118
- editorGutter,
127
+ createBasicExtensions({ readOnly, placeholder, lineNumbers, scrollPastEnd: true, search: true }),
128
+ createThemeExtensions({ monospace, themeMode, syntaxHighlighting: true, slots }),
129
+ createMarkdownExtensions(),
119
130
  extensions || [],
120
131
  ],
121
132
  }),
122
133
  [id, object, extensions, themeMode],
123
134
  );
124
135
 
125
- useImperativeHandle(forwardedRef, () => view, [view]);
136
+ // External controller.
137
+ useImperativeHandle(forwardedRef, () => {
138
+ log.info('view updated', { id });
139
+ return createEditorController(view);
140
+ }, [id, view]);
126
141
 
127
142
  useEffect(() => {
128
143
  if (view) {
@@ -4,12 +4,9 @@
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,
15
12
  decorateMarkdown,
@@ -18,15 +15,18 @@ import {
18
15
  image,
19
16
  linkTooltip,
20
17
  table,
21
- } from '../../extensions';
22
- import { str } from '../../testing';
23
- import { createRenderer } from '../../util';
18
+ } from '@dxos/ui-editor';
19
+ import { type RenderCallback } from '@dxos/ui-editor/types';
20
+ import { safeUrl } from '@dxos/util';
21
+
22
+ import { str } from '../../util';
24
23
 
25
- export const num = () => faker.number.int({ min: 0, max: 9999 }).toLocaleString();
24
+ export const num = () => random.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,54 +38,77 @@ 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
- `- [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
 
52
52
  bullets: str(
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
 
64
64
  numbered: str(
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
 
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,9 +120,10 @@ export const content = {
97
120
  ),
98
121
 
99
122
  table: str(
123
+ // prettier-ignore
100
124
  '### Tables',
101
125
  '',
102
- `| ${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)} |`,
103
127
  `|-${''.padStart(12, '-')}-|-${''.padStart(12, '-')}-|-${''.padStart(12, '-')}-|`,
104
128
  `| ${num().padStart(12)} | ${num().padStart(12)} | ${num().padStart(12)} |`,
105
129
  `| ${num().padStart(12)} | ${num().padStart(12)} | ${num().padStart(12)} |`,
@@ -110,12 +134,21 @@ export const content = {
110
134
  image: str('### Image', '', img),
111
135
 
112
136
  headings: str(
113
- ...[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(),
114
140
  ),
115
141
 
116
- formatting: str('### Formatting', '', 'This this is **bold**, ~~strikethrough~~, _italic_, and `f(INLINE)`.', ''),
142
+ formatting: str(
143
+ // prettier-ignore
144
+ '### Formatting',
145
+ '',
146
+ 'This this is **bold**, ~~strikethrough~~, _italic_, and `f(INLINE)`.',
147
+ '',
148
+ ),
117
149
 
118
150
  blockquotes: str(
151
+ // prettier-ignore
119
152
  '### Blockquotes',
120
153
  '',
121
154
  '> This is a block quote.',
@@ -128,7 +161,7 @@ export const content = {
128
161
  '',
129
162
  ),
130
163
 
131
- paragraphs: str(...faker.helpers.multiple(() => [faker.lorem.paragraph(), ''], { count: 3 }).flat()),
164
+ paragraphs: str(...random.helpers.multiple(() => [random.lorem.paragraph(), ''], { count: 3 }).flat()),
132
165
 
133
166
  footer: str('', '', '', '', ''),
134
167
  };
@@ -154,6 +187,7 @@ export const text = str(
154
187
  '---',
155
188
  '## Misc',
156
189
  content.codeblocks,
190
+ content.comment,
157
191
  content.table,
158
192
  content.image,
159
193
  content.footer,
@@ -172,30 +206,27 @@ export const links: Completion[] = [
172
206
  export const names = ['adam', 'alice', 'alison', 'bob', 'carol', 'charlie', 'sayuri', 'shoko'];
173
207
 
174
208
  const hover =
175
- 'rounded-sm text-baseText text-primary-600 hover:text-primary-500 dark:text-primary-300 hover:dark:text-primary-200';
176
-
177
- const LinkTooltip: FC<{ url: string }> = ({ url }) => {
178
- const web = new URL(url);
179
- return (
180
- <a href={url} target='_blank' rel='noreferrer' className={mx(hover, 'flex items-center gap-2')}>
181
- {web.origin}
182
- <Icon icon='ph--arrow-square-out--regular' size={4} />
183
- </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,
184
218
  );
185
219
  };
186
220
 
187
- export const renderLinkTooltip = createRenderer(LinkTooltip);
188
-
189
- const LinkButton: FC<{ url: string }> = ({ url }) => {
190
- return (
191
- <a href={url} target='_blank' rel='noreferrer' className={mx(hover)}>
192
- <Icon icon='ph--arrow-square-out--regular' size={4} classNames='inline-block mis-1 mb-[3px]' />
193
- </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,
194
227
  );
195
228
  };
196
229
 
197
- export const renderLinkButton = createRenderer(LinkButton);
198
-
199
230
  // Shared extensions.
200
231
  export const defaultExtensions: Extension[] = [
201
232
  decorateMarkdown({ renderLinkButton, selectionChangeDelay: 100 }),
@@ -213,18 +244,18 @@ export const allExtensions: Extension[] = [
213
244
  ];
214
245
 
215
246
  // Long text for scrolling stories.
216
- export const longText = faker.helpers
217
- .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 })
218
249
  .join('\n\n');
219
250
 
220
- export const largeWithImages = faker.helpers
221
- .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 })
222
253
  .flatMap((x) => x)
223
254
  .join('\n\n');
224
255
 
225
256
  export const headings = str(
226
257
  ...[1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 2, 3, 3, 2, 2, 6, 1]
227
- .map((level) => ['#'.repeat(level) + ' ' + faker.lorem.sentence(3), faker.lorem.sentences(), ''])
258
+ .map((level) => ['#'.repeat(level) + ' ' + random.lorem.sentence(3), random.lorem.sentences(), ''])
228
259
  .flat(),
229
260
  );
230
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
- 'heading label': 'Heading level',
28
- 'table label': 'Create table',
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,9 +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 './debug';
7
- export * from './dom';
8
- export * from './facet';
9
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/types';
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
- <Props extends object>(Component: FC<Props>): RenderCallback<Props> =>
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 { Schema } from "effect";
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-22UMM3QJ.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 { Schema } from 'effect';\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,SAASA,cAAc;AAoBhB,IAAMC,kBAAkB;EAAC;EAAW;EAAY;;AAChD,IAAMC,iBAAiBC,OAAOC,MAAK,GAAIH,gBAAgBI,IAAI,CAACC,SAASH,OAAOI,QAAQD,IAAAA,CAAAA,CAAAA;AAGpF,IAAME,mBAAmB;EAAC;EAAW;EAAO;;AAC5C,IAAMC,kBAAkBN,OAAOC,MAAK,GAAII,iBAAiBH,IAAI,CAACC,SAASH,OAAOI,QAAQD,IAAAA,CAAAA,CAAAA;",
6
- "names": ["Schema", "EditorViewModes", "EditorViewMode", "Schema", "Union", "map", "mode", "Literal", "EditorInputModes", "EditorInputMode"]
7
- }
@@ -1,6 +0,0 @@
1
- // src/testing/util.ts
2
- var str = (...lines) => lines.join("\n");
3
- export {
4
- str
5
- };
6
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/testing/util.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nexport const str = (...lines: string[]) => lines.join('\\n');\n"],
5
- "mappings": ";AAIO,IAAMA,MAAM,IAAIC,UAAoBA,MAAMC,KAAK,IAAA;",
6
- "names": ["str", "lines", "join"]
7
- }