@dxos/react-ui-editor 0.8.3 → 0.8.4-main.1c7ec43d41

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 (411) hide show
  1. package/dist/lib/browser/index.mjs +1414 -7503
  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 +1414 -7503
  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 +58 -0
  12. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -0
  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/Editor/index.d.ts +2 -0
  20. package/dist/types/src/components/Editor/index.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +34 -0
  22. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  24. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  26. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  28. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +47 -0
  30. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  32. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  34. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  35. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  36. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +28 -2
  38. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/blocks.d.ts +4 -17
  40. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/formatting.d.ts +4 -17
  42. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/headings.d.ts +4 -17
  44. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/image.d.ts +3 -15
  46. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/index.d.ts +1 -1
  48. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/lists.d.ts +4 -17
  50. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  51. package/dist/types/src/components/EditorToolbar/search.d.ts +3 -15
  52. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  53. package/dist/types/src/components/EditorToolbar/types.d.ts +6 -0
  54. package/dist/types/src/components/EditorToolbar/types.d.ts.map +1 -0
  55. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +5 -18
  56. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  57. package/dist/types/src/components/index.d.ts +3 -2
  58. package/dist/types/src/components/index.d.ts.map +1 -1
  59. package/dist/types/src/extensions/Assistant.stories.d.ts +10 -0
  60. package/dist/types/src/extensions/Assistant.stories.d.ts.map +1 -0
  61. package/dist/types/src/extensions/assistant-extension.d.ts +24 -0
  62. package/dist/types/src/extensions/assistant-extension.d.ts.map +1 -0
  63. package/dist/types/src/extensions/index.d.ts +1 -22
  64. package/dist/types/src/extensions/index.d.ts.map +1 -1
  65. package/dist/types/src/hooks/index.d.ts +1 -0
  66. package/dist/types/src/hooks/index.d.ts.map +1 -1
  67. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts +25 -0
  68. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts.map +1 -0
  69. package/dist/types/src/hooks/useTextEditor.d.ts +6 -10
  70. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  71. package/dist/types/src/index.d.ts +0 -9
  72. package/dist/types/src/index.d.ts.map +1 -1
  73. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  74. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  75. package/dist/types/src/stories/Comments.stories.d.ts +22 -10
  76. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/EditorToolbar.stories.d.ts +43 -5
  78. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Experimental.stories.d.ts +23 -13
  80. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  81. package/dist/types/src/stories/Markdown.stories.d.ts +33 -43
  82. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/Outliner.stories.d.ts +16 -22
  84. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  85. package/dist/types/src/stories/Popover.stories.d.ts +20 -0
  86. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  87. package/dist/types/src/stories/Preview.stories.d.ts +23 -7
  88. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  89. package/dist/types/src/stories/Tags.stories.d.ts +16 -0
  90. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -0
  91. package/dist/types/src/stories/TextEditor.stories.d.ts +38 -52
  92. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  93. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  94. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  95. package/dist/types/src/stories/components/EditorStory.d.ts +11 -23
  96. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  97. package/dist/types/src/stories/components/util.d.ts +4 -3
  98. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  99. package/dist/types/src/translations.d.ts +29 -30
  100. package/dist/types/src/translations.d.ts.map +1 -1
  101. package/dist/types/src/util/index.d.ts +0 -4
  102. package/dist/types/src/util/index.d.ts.map +1 -1
  103. package/dist/types/src/util/react.d.ts +7 -6
  104. package/dist/types/src/util/react.d.ts.map +1 -1
  105. package/dist/types/tsconfig.tsbuildinfo +1 -1
  106. package/package.json +95 -79
  107. package/src/components/Editor/Editor.stories.tsx +89 -0
  108. package/src/components/Editor/Editor.tsx +190 -0
  109. package/src/components/Editor/EditorView.tsx +103 -0
  110. package/src/components/Editor/controller.ts +50 -0
  111. package/src/components/Editor/index.ts +5 -0
  112. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +226 -0
  113. package/src/components/EditorMenuProvider/index.ts +10 -0
  114. package/src/components/EditorMenuProvider/menu-presets.ts +125 -0
  115. package/src/components/EditorMenuProvider/menu.ts +70 -0
  116. package/src/components/EditorMenuProvider/popover.ts +287 -0
  117. package/src/components/EditorMenuProvider/useEditorMenu.ts +180 -0
  118. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  119. package/src/components/EditorPreviewProvider/index.ts +5 -0
  120. package/src/components/EditorToolbar/EditorToolbar.tsx +92 -103
  121. package/src/components/EditorToolbar/blocks.ts +53 -48
  122. package/src/components/EditorToolbar/formatting.ts +42 -46
  123. package/src/components/EditorToolbar/headings.ts +47 -45
  124. package/src/components/EditorToolbar/image.ts +16 -10
  125. package/src/components/EditorToolbar/index.ts +2 -7
  126. package/src/components/EditorToolbar/lists.ts +40 -41
  127. package/src/components/EditorToolbar/search.ts +16 -10
  128. package/src/components/EditorToolbar/types.ts +8 -0
  129. package/src/components/EditorToolbar/view-mode.ts +40 -40
  130. package/src/components/index.ts +4 -2
  131. package/src/extensions/Assistant.stories.tsx +112 -0
  132. package/src/extensions/assistant-extension.tsx +223 -0
  133. package/src/extensions/index.ts +2 -23
  134. package/src/hooks/index.ts +1 -0
  135. package/src/hooks/useBasicMarkdownExtensions.ts +55 -0
  136. package/src/hooks/useTextEditor.ts +39 -45
  137. package/src/index.ts +0 -13
  138. package/src/stories/Automerge.stories.tsx +174 -0
  139. package/src/stories/Comments.stories.tsx +59 -51
  140. package/src/stories/EditorToolbar.stories.tsx +50 -63
  141. package/src/stories/Experimental.stories.tsx +24 -22
  142. package/src/stories/Markdown.stories.tsx +37 -33
  143. package/src/stories/Outliner.stories.tsx +54 -44
  144. package/src/stories/Popover.stories.tsx +157 -0
  145. package/src/stories/Preview.stories.tsx +114 -95
  146. package/src/stories/Tags.stories.tsx +104 -0
  147. package/src/stories/TextEditor.stories.tsx +51 -76
  148. package/src/stories/Theme.stories.tsx +61 -0
  149. package/src/stories/components/EditorStory.tsx +50 -35
  150. package/src/stories/components/util.tsx +90 -59
  151. package/src/translations.ts +34 -27
  152. package/src/util/index.ts +1 -5
  153. package/src/util/react.tsx +9 -14
  154. package/dist/lib/browser/testing/index.mjs +0 -6
  155. package/dist/lib/browser/testing/index.mjs.map +0 -7
  156. package/dist/lib/node/index.cjs +0 -7754
  157. package/dist/lib/node/index.cjs.map +0 -7
  158. package/dist/lib/node/meta.json +0 -1
  159. package/dist/lib/node/testing/index.cjs +0 -29
  160. package/dist/lib/node/testing/index.cjs.map +0 -7
  161. package/dist/lib/node-esm/testing/index.mjs +0 -8
  162. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  163. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -50
  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 -17
  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 -64
  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 -17
  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.d.ts +0 -14
  320. package/dist/types/src/types.d.ts.map +0 -1
  321. package/dist/types/src/util/cursor.d.ts +0 -31
  322. package/dist/types/src/util/cursor.d.ts.map +0 -1
  323. package/dist/types/src/util/debug.d.ts +0 -17
  324. package/dist/types/src/util/debug.d.ts.map +0 -1
  325. package/dist/types/src/util/dom.d.ts +0 -20
  326. package/dist/types/src/util/dom.d.ts.map +0 -1
  327. package/dist/types/src/util/facet.d.ts +0 -3
  328. package/dist/types/src/util/facet.d.ts.map +0 -1
  329. package/src/components/EditorToolbar/util.ts +0 -64
  330. package/src/components/Popover/CommandMenu.tsx +0 -279
  331. package/src/components/Popover/RefDropdownMenu.tsx +0 -79
  332. package/src/components/Popover/RefPopover.tsx +0 -99
  333. package/src/components/Popover/index.ts +0 -7
  334. package/src/defaults.ts +0 -49
  335. package/src/extensions/annotations.ts +0 -55
  336. package/src/extensions/autocomplete.ts +0 -69
  337. package/src/extensions/automerge/automerge.stories.tsx +0 -140
  338. package/src/extensions/automerge/automerge.test.tsx +0 -78
  339. package/src/extensions/automerge/automerge.ts +0 -85
  340. package/src/extensions/automerge/cursor.ts +0 -28
  341. package/src/extensions/automerge/defs.ts +0 -31
  342. package/src/extensions/automerge/index.ts +0 -5
  343. package/src/extensions/automerge/sync.ts +0 -75
  344. package/src/extensions/automerge/update-automerge.ts +0 -50
  345. package/src/extensions/automerge/update-codemirror.ts +0 -115
  346. package/src/extensions/awareness/awareness-provider.ts +0 -127
  347. package/src/extensions/awareness/awareness.ts +0 -315
  348. package/src/extensions/awareness/index.ts +0 -6
  349. package/src/extensions/blast.ts +0 -376
  350. package/src/extensions/command/action.ts +0 -56
  351. package/src/extensions/command/command-menu.ts +0 -210
  352. package/src/extensions/command/command.ts +0 -34
  353. package/src/extensions/command/floating-menu.ts +0 -133
  354. package/src/extensions/command/hint.ts +0 -102
  355. package/src/extensions/command/index.ts +0 -10
  356. package/src/extensions/command/placeholder.ts +0 -113
  357. package/src/extensions/command/state.ts +0 -89
  358. package/src/extensions/command/typeahead.ts +0 -116
  359. package/src/extensions/command/useCommandMenu.ts +0 -118
  360. package/src/extensions/comments.ts +0 -592
  361. package/src/extensions/debug.ts +0 -15
  362. package/src/extensions/dnd.ts +0 -37
  363. package/src/extensions/factories.ts +0 -240
  364. package/src/extensions/focus.ts +0 -35
  365. package/src/extensions/folding.tsx +0 -46
  366. package/src/extensions/hashtag.tsx +0 -68
  367. package/src/extensions/json.ts +0 -57
  368. package/src/extensions/listener.ts +0 -38
  369. package/src/extensions/markdown/action.ts +0 -116
  370. package/src/extensions/markdown/bundle.ts +0 -71
  371. package/src/extensions/markdown/changes.test.ts +0 -26
  372. package/src/extensions/markdown/changes.ts +0 -149
  373. package/src/extensions/markdown/debug.ts +0 -44
  374. package/src/extensions/markdown/decorate.ts +0 -591
  375. package/src/extensions/markdown/formatting.test.ts +0 -498
  376. package/src/extensions/markdown/formatting.ts +0 -1265
  377. package/src/extensions/markdown/highlight.ts +0 -183
  378. package/src/extensions/markdown/image.ts +0 -119
  379. package/src/extensions/markdown/index.ts +0 -13
  380. package/src/extensions/markdown/link.ts +0 -47
  381. package/src/extensions/markdown/parser.test.ts +0 -75
  382. package/src/extensions/markdown/styles.ts +0 -135
  383. package/src/extensions/markdown/table.ts +0 -144
  384. package/src/extensions/mention.ts +0 -41
  385. package/src/extensions/modes.ts +0 -50
  386. package/src/extensions/outliner/commands.ts +0 -270
  387. package/src/extensions/outliner/editor.test.ts +0 -33
  388. package/src/extensions/outliner/editor.ts +0 -184
  389. package/src/extensions/outliner/index.ts +0 -7
  390. package/src/extensions/outliner/outliner.test.ts +0 -99
  391. package/src/extensions/outliner/outliner.ts +0 -166
  392. package/src/extensions/outliner/selection.ts +0 -50
  393. package/src/extensions/outliner/tree.test.ts +0 -167
  394. package/src/extensions/outliner/tree.ts +0 -317
  395. package/src/extensions/preview/index.ts +0 -5
  396. package/src/extensions/preview/preview.ts +0 -193
  397. package/src/extensions/selection.ts +0 -100
  398. package/src/extensions/typewriter.ts +0 -68
  399. package/src/stories/Command.stories.tsx +0 -97
  400. package/src/stories/CommandMenu.stories.tsx +0 -159
  401. package/src/styles/index.ts +0 -7
  402. package/src/styles/markdown.ts +0 -26
  403. package/src/styles/theme.ts +0 -266
  404. package/src/styles/tokens.ts +0 -17
  405. package/src/testing/index.ts +0 -5
  406. package/src/testing/util.ts +0 -5
  407. package/src/types.ts +0 -23
  408. package/src/util/cursor.ts +0 -55
  409. package/src/util/debug.ts +0 -64
  410. package/src/util/dom.ts +0 -56
  411. package/src/util/facet.ts +0 -13
@@ -2,29 +2,35 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { syntaxTree } from '@codemirror/language';
8
6
  import { type EditorView } from '@codemirror/view';
9
- import React, { useState, useEffect, useMemo, useCallback } from 'react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
10
9
  import { createPortal } from 'react-dom';
11
10
 
12
11
  import { invariant } from '@dxos/invariant';
13
- import { faker } from '@dxos/random';
14
- import { Popover } from '@dxos/react-ui';
15
- import { Card } from '@dxos/react-ui-stack';
16
- import { hoverableControlItem, hoverableControlItemTransition, hoverableControls } from '@dxos/react-ui-theme';
17
- import { withLayout, withTheme, type Meta } from '@dxos/storybook-utils';
18
-
12
+ import { random } from '@dxos/random';
13
+ import { Card, Popover, Toolbar } from '@dxos/react-ui';
14
+ import { Menu, createMenuAction } from '@dxos/react-ui-menu';
15
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
16
+ import {
17
+ type PreviewBlock,
18
+ type PreviewLinkRef,
19
+ type PreviewLinkTarget,
20
+ getLinkRef,
21
+ image,
22
+ preview,
23
+ } from '@dxos/ui-editor';
24
+ import { hoverableControls } from '@dxos/ui-theme';
25
+ import { trim } from '@dxos/util';
26
+
27
+ import { type EditorController, EditorPreviewProvider, useEditorPreview } from '../components';
19
28
  import { EditorStory } from './components';
20
- import { PreviewProvider, useRefPopover } from '../components';
21
- import { preview, image, type PreviewLinkRef, type PreviewLinkTarget, getLinkRef } from '../extensions';
22
- import { str } from '../testing';
23
29
 
24
- const handlePreviewLookup = async ({ label, ref }: PreviewLinkRef): Promise<PreviewLinkTarget> => {
30
+ const handlePreviewLookup = async ({ dxn, label }: PreviewLinkRef): Promise<PreviewLinkTarget> => {
25
31
  // Random text.
26
- faker.seed(ref.split('').reduce((acc: number, char: string) => acc + char.charCodeAt(0), 1));
27
- const text = Array.from({ length: 2 }, () => faker.lorem.paragraphs()).join('\n\n');
32
+ random.seed(dxn.split('').reduce((acc: number, char: string) => acc + char.charCodeAt(0), 1));
33
+ const text = Array.from({ length: 2 }, () => random.lorem.paragraphs()).join('\n\n');
28
34
  return {
29
35
  label,
30
36
  text,
@@ -43,15 +49,27 @@ const useRefTarget = (link: PreviewLinkRef): PreviewLinkTarget | undefined => {
43
49
  };
44
50
 
45
51
  const PreviewCard = () => {
46
- const { target } = useRefPopover('PreviewCard');
52
+ const { target } = useEditorPreview('PreviewCard');
53
+ if (!target) {
54
+ return null;
55
+ }
56
+
47
57
  return (
48
58
  <Popover.Portal>
49
59
  <Popover.Content onOpenAutoFocus={(event) => event.preventDefault()}>
50
- <Popover.Viewport>
51
- <Card.Container role='popover'>
52
- <Card.Heading>{target?.label}</Card.Heading>
53
- {target && <Card.Text classNames='line-clamp-3'>{target.text}</Card.Text>}
54
- </Card.Container>
60
+ <Popover.Viewport classNames='dx-card-popover-width'>
61
+ <Card.Root border={false}>
62
+ <Card.Toolbar>
63
+ <Card.Icon icon='ph--file-text--regular' />
64
+ <Card.Title>{target.label}</Card.Title>
65
+ <Popover.Close asChild>
66
+ <Card.CloseIconButton />
67
+ </Popover.Close>
68
+ </Card.Toolbar>
69
+ <Card.Row>
70
+ <Card.Text variant='description'>{target.text}</Card.Text>
71
+ </Card.Row>
72
+ </Card.Root>
55
73
  </Popover.Viewport>
56
74
  <Popover.Arrow />
57
75
  </Popover.Content>
@@ -70,7 +88,7 @@ type PreviewAction =
70
88
  link: PreviewLinkRef;
71
89
  };
72
90
 
73
- const PreviewBlock = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElement; view?: EditorView }) => {
91
+ const PreviewBlockComponent = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElement; view?: EditorView }) => {
74
92
  const target = useRefTarget(link);
75
93
 
76
94
  const handleAction = useCallback(
@@ -83,7 +101,7 @@ const PreviewBlock = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElemen
83
101
  }
84
102
 
85
103
  const link = getLinkRef(view.state, node);
86
- if (link?.ref !== action.link.ref) {
104
+ if (link?.dxn !== action.link.dxn) {
87
105
  return;
88
106
  }
89
107
 
@@ -125,104 +143,105 @@ const PreviewBlock = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElemen
125
143
  }
126
144
  }, [handleAction, link, target]);
127
145
 
146
+ const menuItems = useMemo(
147
+ () => [
148
+ createMenuAction('delete', handleDelete, {
149
+ label: link.suggest ? 'Discard' : 'Delete',
150
+ icon: 'ph--x--regular',
151
+ }),
152
+ ...(target
153
+ ? [
154
+ createMenuAction('apply', handleInsert, {
155
+ label: 'Apply',
156
+ icon: 'ph--check--regular',
157
+ }),
158
+ ]
159
+ : []),
160
+ ],
161
+ [handleDelete, handleInsert, link.suggest, target],
162
+ );
163
+
128
164
  return createPortal(
129
- <Card.Content classNames={hoverableControls}>
130
- <div className='flex items-start'>
165
+ <Menu.Root>
166
+ <Card.Root classNames={hoverableControls}>
131
167
  {!view?.state.readOnly && (
132
- <Card.Toolbar classNames='is-min p-[--dx-cardSpacingInline]'>
133
- {(link.suggest && (
134
- <>
135
- <Card.ToolbarIconButton label='Discard' icon={'ph--x--regular'} onClick={handleDelete} />
136
- {target && (
137
- <Card.ToolbarIconButton
138
- classNames='bg-successSurface text-successSurfaceText'
139
- label='Apply'
140
- icon='ph--check--regular'
141
- onClick={handleInsert}
142
- />
143
- )}
144
- </>
145
- )) || (
146
- <Card.ToolbarIconButton
147
- iconOnly
148
- label='Delete'
149
- icon='ph--x--regular'
150
- classNames={[hoverableControlItem, hoverableControlItemTransition]}
151
- onClick={handleDelete}
152
- />
153
- )}
168
+ <Card.Toolbar>
169
+ <Card.Icon icon='ph--bookmark--regular' />
170
+ <Card.Title>{link.label}</Card.Title>
171
+ {/* TODO(wittjosiah): Reconcile with Card.Menu. */}
172
+ <Menu.Trigger asChild disabled={!menuItems?.length}>
173
+ <Toolbar.IconButton iconOnly variant='ghost' icon='ph--dots-three-vertical--regular' label='Menu' />
174
+ </Menu.Trigger>
175
+ <Menu.Content items={menuItems} />
154
176
  </Card.Toolbar>
155
177
  )}
156
- <Card.Heading classNames='grow order-first mie-0'>
157
- {/* <span className='text-xs text-subdued mie-2'>Prompt</span> */}
158
- {link.label}
159
- </Card.Heading>
160
- </div>
161
- {target && <Card.Text classNames='line-clamp-3 mbs-0'>{target.text}</Card.Text>}
162
- </Card.Content>,
178
+ {target && (
179
+ <Card.Row>
180
+ <Card.Text className='text-description'>{target.text}</Card.Text>
181
+ </Card.Row>
182
+ )}
183
+ </Card.Root>
184
+ </Menu.Root>,
163
185
  el,
164
186
  );
165
187
  };
166
188
 
167
- const meta: Meta<typeof EditorStory> = {
189
+ const meta = {
168
190
  title: 'ui/react-ui-editor/Preview',
169
191
  component: EditorStory,
170
- decorators: [withTheme, withLayout({ fullscreen: true })],
171
- parameters: { layout: 'fullscreen' },
172
- };
192
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
193
+ parameters: {
194
+ layout: 'fullscreen',
195
+ },
196
+ } satisfies Meta<typeof EditorStory>;
173
197
 
174
198
  export default meta;
175
199
 
176
- export const Default = {
177
- render: () => {
178
- const [view, setView] = useState<EditorView>();
179
- const [previewBlocks, setPreviewBlocks] = useState<{ link: PreviewLinkRef; el: HTMLElement }[]>([]);
200
+ type Story = StoryObj<typeof meta>;
201
+
202
+ const text = trim`
203
+ # Preview
180
204
 
205
+ This project is part of the [DXOS](dxn:queue:data:123) SDK.
206
+
207
+ ![DXOS](dxn:queue:data:123)
208
+
209
+ It consists of [ECHO](dxn:queue:data:echo), [HALO](dxn:queue:data:halo), and [MESH](dxn:queue:data:mesh).
210
+
211
+ ## Deep dive
212
+
213
+ ![ECHO](dxn:queue:data:echo)
214
+
215
+ `;
216
+
217
+ export const Default: Story = {
218
+ render: () => {
219
+ const [controller, setController] = useState<EditorController | null>(null);
220
+ const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);
181
221
  const extensions = useMemo(() => {
182
222
  return [
183
223
  image(),
184
224
  preview({
185
- addBlockContainer: (link, el) => {
186
- setPreviewBlocks((prev) => [...prev, { link, el }]);
225
+ addBlockContainer: (block) => {
226
+ setPreviewBlocks((prev) => [...prev, block]);
187
227
  },
188
- removeBlockContainer: (link) => {
189
- setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.ref !== link.ref));
228
+ removeBlockContainer: (block) => {
229
+ setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== block.link.dxn));
190
230
  },
191
231
  }),
192
232
  ];
193
233
  }, []);
194
234
 
195
- const handleViewRef = useCallback((instance?: EditorView | null) => {
196
- setView(instance ?? undefined);
197
- }, []);
198
-
235
+ // TODO(burdon): Migrate to Editor.Root.
199
236
  return (
200
- <PreviewProvider onLookup={handlePreviewLookup}>
201
- <EditorStory
202
- ref={handleViewRef}
203
- text={str(
204
- '# Preview',
205
- '',
206
- 'This project is part of the [DXOS][dxn:queue:data:123] SDK.',
207
- '',
208
- '![DXOS][?dxn:queue:data:123]',
209
- '',
210
- 'It consists of [ECHO][dxn:queue:data:echo], [HALO][dxn:queue:data:halo], and [MESH][dxn:queue:data:mesh].',
211
- '',
212
- '## Deep dive',
213
- '',
214
- '![ECHO][dxn:queue:data:echo]',
215
- '',
216
- '',
217
- '',
218
- )}
219
- extensions={extensions}
220
- />
237
+ <EditorPreviewProvider onLookup={handlePreviewLookup}>
238
+ <EditorStory ref={setController} text={text} extensions={extensions} />
221
239
  <PreviewCard />
222
- {previewBlocks.map(({ link, el }) => (
223
- <PreviewBlock key={link.ref} link={link} el={el} view={view} />
224
- ))}
225
- </PreviewProvider>
240
+ {controller?.view &&
241
+ previewBlocks.map(({ link, el }) => (
242
+ <PreviewBlockComponent key={link.dxn} link={link} el={el} view={controller.view!} />
243
+ ))}
244
+ </EditorPreviewProvider>
226
245
  );
227
246
  },
228
247
  };
@@ -0,0 +1,104 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { useEffect, useState } from 'react';
7
+ import { createPortal } from 'react-dom';
8
+
9
+ import { useThemeContext } from '@dxos/react-ui';
10
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
11
+ import {
12
+ type XmlWidgetRegistry,
13
+ type XmlWidgetState,
14
+ createBasicExtensions,
15
+ createThemeExtensions,
16
+ decorateMarkdown,
17
+ extendedMarkdown,
18
+ xmlTags,
19
+ } from '@dxos/ui-editor';
20
+ import { safeParseInt, trim } from '@dxos/util';
21
+
22
+ import { useTextEditor } from '../hooks';
23
+
24
+ const registry = {
25
+ /**
26
+ * Custom tag: <test/>
27
+ */
28
+ test: {
29
+ block: true,
30
+ Component: ({ start = '0' }) => {
31
+ const [count, setCount] = useState<number>(safeParseInt(start, 0));
32
+ useEffect(() => {
33
+ const interval = setInterval(() => {
34
+ setCount((prev) => {
35
+ if (prev >= 200) {
36
+ clearInterval(interval);
37
+ return prev;
38
+ }
39
+
40
+ return prev + 1;
41
+ });
42
+ }, 100);
43
+ return () => clearInterval(interval);
44
+ }, []);
45
+
46
+ return <div className='p-2 border border-separator rounded-sm'>Test {count}</div>;
47
+ },
48
+ },
49
+ } satisfies XmlWidgetRegistry;
50
+
51
+ const DefaultStory = ({ text }: { text?: string }) => {
52
+ const { themeMode } = useThemeContext();
53
+ const [widgets, setWidgets] = useState<XmlWidgetState[]>([]);
54
+ const { parentRef } = useTextEditor({
55
+ initialValue: text,
56
+ extensions: [
57
+ createThemeExtensions({ themeMode }),
58
+ createBasicExtensions({ lineWrapping: true }),
59
+ decorateMarkdown(),
60
+ extendedMarkdown({ registry }),
61
+ xmlTags({ registry, setWidgets }),
62
+ ],
63
+ });
64
+
65
+ return (
66
+ <>
67
+ <div ref={parentRef} className='w-full p-4' />
68
+ {widgets.map(({ id, root, Component, props }) => (
69
+ <div key={id}>{createPortal(<Component {...props} />, root)}</div>
70
+ ))}
71
+ </>
72
+ );
73
+ };
74
+
75
+ const text = trim`
76
+ # Tags
77
+
78
+ React widget below.
79
+
80
+ <test id="t-1" />
81
+
82
+ <test id="t-2" start="100" />
83
+
84
+ React widget above.
85
+ `;
86
+
87
+ const meta = {
88
+ title: 'ui/react-ui-editor/Tags',
89
+ render: DefaultStory,
90
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
91
+ parameters: {
92
+ layout: 'fullscreen',
93
+ },
94
+ } satisfies Meta<typeof DefaultStory>;
95
+
96
+ export default meta;
97
+
98
+ type Story = StoryObj<typeof meta>;
99
+
100
+ export const Default: Story = {
101
+ args: {
102
+ text,
103
+ },
104
+ };
@@ -2,14 +2,25 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { javascript } from '@codemirror/lang-javascript';
8
6
  import { openSearchPanel } from '@codemirror/search';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
9
8
  import React from 'react';
10
9
 
11
10
  import { log } from '@dxos/log';
12
- import { withLayout, withTheme, type Meta } from '@dxos/storybook-utils';
11
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
12
+ import {
13
+ InputModeExtensions,
14
+ decorateMarkdown,
15
+ folding,
16
+ image,
17
+ join,
18
+ listener,
19
+ mention,
20
+ selectionState,
21
+ staticCompletion,
22
+ typeahead,
23
+ } from '@dxos/ui-editor';
13
24
 
14
25
  import {
15
26
  EditorStory,
@@ -18,33 +29,20 @@ import {
18
29
  defaultExtensions,
19
30
  global,
20
31
  largeWithImages,
21
- links,
22
32
  longText,
23
33
  names,
24
- renderLinkButton,
25
34
  text,
26
35
  } from './components';
27
- import { editorMonospace } from '../defaults';
28
- import {
29
- InputModeExtensions,
30
- autocomplete,
31
- decorateMarkdown,
32
- folding,
33
- image,
34
- listener,
35
- mention,
36
- selectionState,
37
- staticCompletion,
38
- typeahead,
39
- } from '../extensions';
40
- import { str } from '../testing';
41
36
 
42
- const meta: Meta<typeof EditorStory> = {
37
+ const meta = {
43
38
  title: 'ui/react-ui-editor/TextEditor',
44
39
  component: EditorStory,
45
- decorators: [withTheme, withLayout({ fullscreen: true })],
46
- parameters: { layout: 'fullscreen', controls: { disable: true } },
47
- };
40
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
41
+ parameters: {
42
+ layout: 'fullscreen',
43
+ controls: { disable: true },
44
+ },
45
+ } satisfies Meta<typeof EditorStory>;
48
46
 
49
47
  export default meta;
50
48
 
@@ -52,7 +50,9 @@ export default meta;
52
50
  // Default
53
51
  //
54
52
 
55
- export const Default = {
53
+ type Story = StoryObj<typeof meta>;
54
+
55
+ export const Default: Story = {
56
56
  render: () => <EditorStory text={text} extensions={defaultExtensions} />,
57
57
  };
58
58
 
@@ -60,7 +60,7 @@ export const Default = {
60
60
  // Everything
61
61
  //
62
62
 
63
- export const Everything = {
63
+ export const Everything: Story = {
64
64
  render: () => <EditorStory text={text} extensions={allExtensions} selection={{ anchor: 99, head: 110 }} />,
65
65
  };
66
66
 
@@ -68,7 +68,7 @@ export const Everything = {
68
68
  // Empty
69
69
  //
70
70
 
71
- export const Empty = {
71
+ export const Empty: Story = {
72
72
  render: () => <EditorStory extensions={defaultExtensions} />,
73
73
  };
74
74
 
@@ -76,7 +76,7 @@ export const Empty = {
76
76
  // Readonly
77
77
  //
78
78
 
79
- export const Readonly = {
79
+ export const Readonly: Story = {
80
80
  render: () => <EditorStory text={text} extensions={defaultExtensions} readOnly />,
81
81
  };
82
82
 
@@ -84,7 +84,7 @@ export const Readonly = {
84
84
  // No Extensions
85
85
  //
86
86
 
87
- export const NoExtensions = {
87
+ export const NoExtensions: Story = {
88
88
  render: () => <EditorStory text={text} />,
89
89
  };
90
90
 
@@ -92,10 +92,10 @@ export const NoExtensions = {
92
92
  // Vim
93
93
  //
94
94
 
95
- export const Vim = {
95
+ export const Vim: Story = {
96
96
  render: () => (
97
97
  <EditorStory
98
- 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)}
99
99
  extensions={[defaultExtensions, InputModeExtensions.vim]}
100
100
  />
101
101
  ),
@@ -105,16 +105,16 @@ export const Vim = {
105
105
  // Listener
106
106
  //
107
107
 
108
- export const Listener = {
108
+ export const Listener: Story = {
109
109
  render: () => (
110
110
  <EditorStory
111
- text={str('# Listener', '', content.footer)}
111
+ text={join('# Listener', '', content.footer)}
112
112
  extensions={[
113
113
  listener({
114
- onFocus: (focusing) => {
114
+ onFocus: ({ focusing }) => {
115
115
  log.info('listener', { focusing });
116
116
  },
117
- onChange: (text) => {
117
+ onChange: ({ text }) => {
118
118
  log.info('listener', { text });
119
119
  },
120
120
  }),
@@ -127,7 +127,7 @@ export const Listener = {
127
127
  // Folding
128
128
  //
129
129
 
130
- export const Folding = {
130
+ export const Folding: Story = {
131
131
  render: () => <EditorStory text={text} extensions={[folding()]} />,
132
132
  };
133
133
 
@@ -135,10 +135,10 @@ export const Folding = {
135
135
  // Scrolling
136
136
  //
137
137
 
138
- export const Scrolling = {
138
+ export const Scrolling: Story = {
139
139
  render: () => (
140
140
  <EditorStory
141
- text={str('# Large Document', '', longText)}
141
+ text={join('# Large Document', '', longText)}
142
142
  extensions={selectionState({
143
143
  setState: (id, state) => global.set(id, state),
144
144
  getState: (id) => global.get(id),
@@ -147,17 +147,17 @@ export const Scrolling = {
147
147
  ),
148
148
  };
149
149
 
150
- export const ScrollingWithImages = {
150
+ export const ScrollingWithImages: Story = {
151
151
  render: () => (
152
- <EditorStory text={str('# Large Document', '', largeWithImages)} extensions={[decorateMarkdown(), image()]} />
152
+ <EditorStory text={join('# Large Document', '', largeWithImages)} extensions={[decorateMarkdown(), image()]} />
153
153
  ),
154
154
  };
155
155
 
156
- export const ScrollTo = {
156
+ export const ScrollTo: Story = {
157
157
  render: () => {
158
158
  // NOTE: Selection won't appear if text is reformatted.
159
159
  const word = 'Scroll to here...';
160
- const text = str('# Scroll To', longText, '', word, '', longText);
160
+ const text = join('# Scroll To', longText, '', word, '', longText);
161
161
  const idx = text.indexOf(word);
162
162
  return (
163
163
  <EditorStory
@@ -174,33 +174,9 @@ export const ScrollTo = {
174
174
  // Typescript
175
175
  //
176
176
 
177
- export const Typescript = {
177
+ export const Typescript: Story = {
178
178
  render: () => (
179
- <EditorStory
180
- text={content.typescript}
181
- lineNumbers
182
- extensions={[editorMonospace, javascript({ typescript: true })]}
183
- />
184
- ),
185
- };
186
-
187
- //
188
- // Autocomplete
189
- //
190
-
191
- export const Autocomplete = {
192
- render: () => (
193
- <EditorStory
194
- text={str('# Autocomplete', '', 'Press Ctrl-Space...', content.footer)}
195
- extensions={[
196
- decorateMarkdown({ renderLinkButton }),
197
- autocomplete({
198
- onSearch: (text) => {
199
- return links.filter(({ label }) => label.toLowerCase().includes(text.toLowerCase()));
200
- },
201
- }),
202
- ]}
203
- />
179
+ <EditorStory text={content.typescript} lineNumbers monospace extensions={javascript({ typescript: true })} />
204
180
  ),
205
181
  };
206
182
 
@@ -208,16 +184,15 @@ export const Autocomplete = {
208
184
  // Typeahead
209
185
  //
210
186
 
211
- const completions = ['type', 'AND', 'OR', 'NOT', 'dxos.org'];
187
+ const completions = ['hello world!', 'dxos.org'];
212
188
 
213
- export const Typeahead = {
189
+ export const Typeahead: Story = {
214
190
  render: () => (
215
191
  <EditorStory
216
- text={str('# Typeahead', '')}
192
+ text={join('# Typeahead', '')}
217
193
  extensions={[
218
- decorateMarkdown({ renderLinkButton }),
219
194
  typeahead({
220
- onComplete: staticCompletion(completions, completions[0]),
195
+ onComplete: staticCompletion(completions, { minLength: 2 }),
221
196
  }),
222
197
  ]}
223
198
  />
@@ -228,10 +203,10 @@ export const Typeahead = {
228
203
  // Mention
229
204
  //
230
205
 
231
- export const Mention = {
206
+ export const Mention: Story = {
232
207
  render: () => (
233
208
  <EditorStory
234
- text={str('# Mention', '', 'Type @...', content.footer)}
209
+ text={join('# Mention', '', 'Type @...', content.footer)}
235
210
  extensions={[
236
211
  mention({
237
212
  onSearch: (text) => names.filter((name) => name.toLowerCase().startsWith(text.toLowerCase())),
@@ -245,10 +220,10 @@ export const Mention = {
245
220
  // Search
246
221
  //
247
222
 
248
- export const Search = {
223
+ export const Search: Story = {
249
224
  render: () => (
250
225
  <EditorStory
251
- text={str('# Search', text)}
226
+ text={join('# Search', text)}
252
227
  extensions={defaultExtensions}
253
228
  onReady={(view) => openSearchPanel(view)}
254
229
  />