@dxos/react-ui-editor 0.8.4-main.fd6878d → 0.8.4-staging.60fe92afc8

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