@dxos/plugin-markdown 0.8.4-main.5ea62a8 → 0.8.4-main.66e292d

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 (235) hide show
  1. package/dist/lib/browser/MarkdownCard-TC3GGUSX.mjs +12 -0
  2. package/dist/lib/browser/MarkdownContainer-YF22DV4M.mjs +15 -0
  3. package/dist/lib/browser/{anchor-sort-E33BSTYF.mjs → anchor-sort-3MYLO74J.mjs} +10 -10
  4. package/dist/lib/browser/anchor-sort-3MYLO74J.mjs.map +7 -0
  5. package/dist/lib/browser/{app-graph-serializer-OX62DNPT.mjs → app-graph-serializer-BZJ4TQOE.mjs} +10 -10
  6. package/dist/lib/browser/app-graph-serializer-BZJ4TQOE.mjs.map +7 -0
  7. package/dist/lib/browser/blueprint-definition-HED54GGW.mjs +13 -0
  8. package/dist/lib/browser/blueprint-definition-HED54GGW.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-3IPVL3E4.mjs +20 -0
  10. package/dist/lib/browser/chunk-3IPVL3E4.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-BE3IO2CM.mjs +150 -0
  12. package/dist/lib/browser/chunk-BE3IO2CM.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-ODB2PTBP.mjs → chunk-BQTYJOFB.mjs} +4 -4
  14. package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-BEE7VQPU.mjs → chunk-CN35HEBX.mjs} +13 -12
  16. package/dist/lib/browser/chunk-CN35HEBX.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-DLZ5RR3P.mjs +96 -0
  18. package/dist/lib/browser/chunk-DLZ5RR3P.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-OY6CGPOO.mjs → chunk-IBCHVMZW.mjs} +2 -2
  20. package/dist/lib/browser/{chunk-OY6CGPOO.mjs.map → chunk-IBCHVMZW.mjs.map} +2 -2
  21. package/dist/lib/browser/{chunk-Z7P6JGGW.mjs → chunk-NXT2E2BG.mjs} +9 -5
  22. package/dist/lib/browser/chunk-NXT2E2BG.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-LAVZ2W6X.mjs → chunk-OKNQ57GF.mjs} +9 -8
  24. package/dist/lib/browser/chunk-OKNQ57GF.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-V7P7EIWG.mjs +829 -0
  26. package/dist/lib/browser/chunk-V7P7EIWG.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +22 -28
  28. package/dist/lib/browser/index.mjs.map +3 -3
  29. package/dist/lib/browser/{intent-resolver-WDDH56JC.mjs → intent-resolver-55ASQRIW.mjs} +9 -9
  30. package/dist/lib/browser/intent-resolver-55ASQRIW.mjs.map +7 -0
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/{react-surface-LN2XK2UN.mjs → react-surface-GPD6T435.mjs} +59 -63
  33. package/dist/lib/browser/react-surface-GPD6T435.mjs.map +7 -0
  34. package/dist/lib/browser/{settings-AABBTB4Q.mjs → settings-G3ZOXJQY.mjs} +5 -5
  35. package/dist/lib/browser/{settings-AABBTB4Q.mjs.map → settings-G3ZOXJQY.mjs.map} +1 -1
  36. package/dist/lib/browser/{state-FTHQQX7V.mjs → state-BTUKVZHY.mjs} +5 -5
  37. package/dist/lib/browser/{state-FTHQQX7V.mjs.map → state-BTUKVZHY.mjs.map} +1 -1
  38. package/dist/lib/browser/toolkit.mjs +13 -0
  39. package/dist/lib/browser/toolkit.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +2 -2
  41. package/dist/lib/node-esm/MarkdownCard-FTEHVH7P.mjs +13 -0
  42. package/dist/lib/node-esm/MarkdownCard-FTEHVH7P.mjs.map +7 -0
  43. package/dist/lib/node-esm/MarkdownContainer-L75AIJFM.mjs +16 -0
  44. package/dist/lib/node-esm/MarkdownContainer-L75AIJFM.mjs.map +7 -0
  45. package/dist/lib/node-esm/{anchor-sort-ALP2NH24.mjs → anchor-sort-W4HCTYUQ.mjs} +10 -10
  46. package/dist/lib/node-esm/anchor-sort-W4HCTYUQ.mjs.map +7 -0
  47. package/dist/lib/node-esm/{app-graph-serializer-56TD3BMX.mjs → app-graph-serializer-OCTHXWLF.mjs} +10 -10
  48. package/dist/lib/node-esm/app-graph-serializer-OCTHXWLF.mjs.map +7 -0
  49. package/dist/lib/node-esm/blueprint-definition-HAQGJOMQ.mjs +14 -0
  50. package/dist/lib/node-esm/blueprint-definition-HAQGJOMQ.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-3DN4DPVA.mjs +151 -0
  52. package/dist/lib/node-esm/chunk-3DN4DPVA.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-O6EXWGGS.mjs → chunk-7GN66TDQ.mjs} +9 -8
  54. package/dist/lib/node-esm/chunk-7GN66TDQ.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-CB2R4YIY.mjs → chunk-GMMVSXQ6.mjs} +2 -2
  56. package/dist/lib/node-esm/{chunk-CB2R4YIY.mjs.map → chunk-GMMVSXQ6.mjs.map} +2 -2
  57. package/dist/lib/node-esm/{chunk-J7A6TUB2.mjs → chunk-I5JSQBPI.mjs} +9 -5
  58. package/dist/lib/node-esm/chunk-I5JSQBPI.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-VCG2U522.mjs → chunk-SHAMSMKQ.mjs} +4 -4
  60. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-JPXFCBC4.mjs → chunk-TYUGABTD.mjs} +8 -8
  62. package/dist/lib/node-esm/chunk-TYUGABTD.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-UVLACSAE.mjs +830 -0
  64. package/dist/lib/node-esm/chunk-UVLACSAE.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-FXILAQ5F.mjs → chunk-YFRTKXTB.mjs} +13 -12
  66. package/dist/lib/node-esm/chunk-YFRTKXTB.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-ZNS55FS3.mjs +97 -0
  68. package/dist/lib/node-esm/chunk-ZNS55FS3.mjs.map +7 -0
  69. package/dist/lib/node-esm/index.mjs +22 -28
  70. package/dist/lib/node-esm/index.mjs.map +3 -3
  71. package/dist/lib/node-esm/{intent-resolver-2I5HKCUU.mjs → intent-resolver-DTBVWCNO.mjs} +9 -9
  72. package/dist/lib/node-esm/intent-resolver-DTBVWCNO.mjs.map +7 -0
  73. package/dist/lib/node-esm/meta.json +1 -1
  74. package/dist/lib/node-esm/{react-surface-DJGGKYBD.mjs → react-surface-QWG7CJ5U.mjs} +59 -63
  75. package/dist/lib/node-esm/react-surface-QWG7CJ5U.mjs.map +7 -0
  76. package/dist/lib/node-esm/{settings-CXGR6DH4.mjs → settings-IBFFCGNL.mjs} +5 -5
  77. package/dist/lib/node-esm/{settings-CXGR6DH4.mjs.map → settings-IBFFCGNL.mjs.map} +1 -1
  78. package/dist/lib/node-esm/{state-NWMQ3XAI.mjs → state-K6EH7SRZ.mjs} +5 -5
  79. package/dist/lib/node-esm/{state-NWMQ3XAI.mjs.map → state-K6EH7SRZ.mjs.map} +1 -1
  80. package/dist/lib/node-esm/toolkit.mjs +14 -0
  81. package/dist/lib/node-esm/toolkit.mjs.map +7 -0
  82. package/dist/lib/node-esm/types/index.mjs +2 -2
  83. package/dist/types/src/MarkdownPlugin.d.ts +1 -1
  84. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/anchor-sort.d.ts +2 -4
  86. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -3
  89. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/index.d.ts +1 -4
  92. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  95. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +3 -3
  96. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  97. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -1
  98. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/MarkdownContainer.d.ts +8 -12
  100. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  101. package/dist/types/src/components/MarkdownContainer.stories.d.ts +8 -4
  102. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +11 -0
  104. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -0
  105. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +42 -23
  106. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  107. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +5 -110
  108. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +26 -0
  110. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -0
  111. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +12 -0
  112. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -0
  113. package/dist/types/src/components/Suggestions.stories.d.ts +1 -2
  114. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/index.d.ts +3 -1
  116. package/dist/types/src/components/index.d.ts.map +1 -1
  117. package/dist/types/src/functions/create.d.ts +5 -9
  118. package/dist/types/src/functions/create.d.ts.map +1 -1
  119. package/dist/types/src/functions/create.test.d.ts +2 -0
  120. package/dist/types/src/functions/create.test.d.ts.map +1 -0
  121. package/dist/types/src/functions/index.d.ts +17 -3
  122. package/dist/types/src/functions/index.d.ts.map +1 -1
  123. package/dist/types/src/functions/open.d.ts +1 -1
  124. package/dist/types/src/functions/open.d.ts.map +1 -1
  125. package/dist/types/src/functions/{diff.d.ts → update.d.ts} +2 -2
  126. package/dist/types/src/functions/update.d.ts.map +1 -0
  127. package/dist/types/src/functions/update.test.d.ts +2 -0
  128. package/dist/types/src/functions/update.test.d.ts.map +1 -0
  129. package/dist/types/src/hooks/index.d.ts +3 -0
  130. package/dist/types/src/hooks/index.d.ts.map +1 -1
  131. package/dist/types/src/hooks/useEditorMenuOptions.d.ts +9 -0
  132. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -0
  133. package/dist/types/src/hooks/useExtensions.d.ts +21 -0
  134. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -0
  135. package/dist/types/src/hooks/useLinkQuery.d.ts +4 -0
  136. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -0
  137. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +1 -1
  138. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  139. package/dist/types/src/testing.d.ts +6 -0
  140. package/dist/types/src/testing.d.ts.map +1 -0
  141. package/dist/types/src/toolkit.d.ts +3 -0
  142. package/dist/types/src/toolkit.d.ts.map +1 -0
  143. package/dist/types/src/translations.d.ts +4 -0
  144. package/dist/types/src/translations.d.ts.map +1 -1
  145. package/dist/types/src/types/Markdown.d.ts +11 -9
  146. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  147. package/dist/types/src/types/MarkdownAction.d.ts +6 -5
  148. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -1
  149. package/dist/types/src/types/index.d.ts.map +1 -1
  150. package/dist/types/src/util.d.ts +3 -3
  151. package/dist/types/src/util.d.ts.map +1 -1
  152. package/dist/types/tsconfig.tsbuildinfo +1 -1
  153. package/package.json +72 -56
  154. package/src/MarkdownPlugin.tsx +87 -98
  155. package/src/capabilities/anchor-sort.ts +7 -6
  156. package/src/capabilities/app-graph-serializer.ts +5 -5
  157. package/src/capabilities/artifact-definition.ts +7 -6
  158. package/src/capabilities/blueprint-definition.ts +30 -26
  159. package/src/capabilities/capabilities.ts +1 -0
  160. package/src/capabilities/index.ts +1 -1
  161. package/src/capabilities/intent-resolver.ts +4 -3
  162. package/src/capabilities/react-surface.tsx +44 -66
  163. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +6 -9
  164. package/src/components/MarkdownCard/MarkdownCard.tsx +52 -38
  165. package/src/components/MarkdownContainer.stories.tsx +74 -38
  166. package/src/components/MarkdownContainer.tsx +78 -220
  167. package/src/components/MarkdownEditor/FileUpload.tsx +63 -0
  168. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +55 -35
  169. package/src/components/MarkdownEditor/MarkdownEditor.tsx +221 -273
  170. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +136 -0
  171. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +63 -0
  172. package/src/components/Suggestions.stories.tsx +42 -34
  173. package/src/components/index.ts +3 -1
  174. package/src/functions/create.conversations.json +1 -0
  175. package/src/functions/create.test.ts +128 -0
  176. package/src/functions/create.ts +20 -9
  177. package/src/functions/index.ts +9 -3
  178. package/src/functions/open.ts +4 -2
  179. package/src/functions/update.conversations.json +1 -0
  180. package/src/functions/update.test.ts +151 -0
  181. package/src/functions/{diff.ts → update.ts} +4 -2
  182. package/src/hooks/index.ts +3 -0
  183. package/src/hooks/useEditorMenuOptions.ts +71 -0
  184. package/src/{extensions.tsx → hooks/useExtensions.tsx} +61 -110
  185. package/src/hooks/useLinkQuery.ts +83 -0
  186. package/src/hooks/useSelectCurrentThread.tsx +15 -5
  187. package/src/meta.ts +3 -3
  188. package/src/testing.ts +27 -0
  189. package/src/toolkit.ts +6 -0
  190. package/src/translations.ts +4 -0
  191. package/src/types/Markdown.ts +9 -8
  192. package/src/types/MarkdownAction.ts +1 -1
  193. package/src/types/index.ts +1 -0
  194. package/src/util.tsx +10 -5
  195. package/dist/lib/browser/MarkdownCard-JLUQITYK.mjs +0 -80
  196. package/dist/lib/browser/MarkdownCard-JLUQITYK.mjs.map +0 -7
  197. package/dist/lib/browser/MarkdownContainer-7M37DXAD.mjs +0 -781
  198. package/dist/lib/browser/MarkdownContainer-7M37DXAD.mjs.map +0 -7
  199. package/dist/lib/browser/anchor-sort-E33BSTYF.mjs.map +0 -7
  200. package/dist/lib/browser/app-graph-serializer-OX62DNPT.mjs.map +0 -7
  201. package/dist/lib/browser/blueprint-definition-Z3RQGWUD.mjs +0 -11
  202. package/dist/lib/browser/chunk-BEE7VQPU.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-D7UYVHL6.mjs +0 -20
  204. package/dist/lib/browser/chunk-D7UYVHL6.mjs.map +0 -7
  205. package/dist/lib/browser/chunk-LAVZ2W6X.mjs.map +0 -7
  206. package/dist/lib/browser/chunk-ODB2PTBP.mjs.map +0 -7
  207. package/dist/lib/browser/chunk-Z7P6JGGW.mjs.map +0 -7
  208. package/dist/lib/browser/chunk-ZVVKLB5L.mjs +0 -121
  209. package/dist/lib/browser/chunk-ZVVKLB5L.mjs.map +0 -7
  210. package/dist/lib/browser/intent-resolver-WDDH56JC.mjs.map +0 -7
  211. package/dist/lib/browser/react-surface-LN2XK2UN.mjs.map +0 -7
  212. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs +0 -81
  213. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs.map +0 -7
  214. package/dist/lib/node-esm/MarkdownContainer-K3BPAGWO.mjs +0 -782
  215. package/dist/lib/node-esm/MarkdownContainer-K3BPAGWO.mjs.map +0 -7
  216. package/dist/lib/node-esm/anchor-sort-ALP2NH24.mjs.map +0 -7
  217. package/dist/lib/node-esm/app-graph-serializer-56TD3BMX.mjs.map +0 -7
  218. package/dist/lib/node-esm/blueprint-definition-735OAX33.mjs +0 -12
  219. package/dist/lib/node-esm/chunk-FXILAQ5F.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-J7A6TUB2.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-JPXFCBC4.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-O6EXWGGS.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-VCG2U522.mjs.map +0 -7
  224. package/dist/lib/node-esm/chunk-Y422WR6A.mjs +0 -122
  225. package/dist/lib/node-esm/chunk-Y422WR6A.mjs.map +0 -7
  226. package/dist/lib/node-esm/intent-resolver-2I5HKCUU.mjs.map +0 -7
  227. package/dist/lib/node-esm/react-surface-DJGGKYBD.mjs.map +0 -7
  228. package/dist/types/src/components/Toolbar.stories.d.ts +0 -48
  229. package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
  230. package/dist/types/src/extensions.d.ts +0 -24
  231. package/dist/types/src/extensions.d.ts.map +0 -1
  232. package/dist/types/src/functions/diff.d.ts.map +0 -1
  233. package/src/components/Toolbar.stories.tsx +0 -118
  234. /package/dist/lib/browser/{blueprint-definition-Z3RQGWUD.mjs.map → MarkdownCard-TC3GGUSX.mjs.map} +0 -0
  235. /package/dist/lib/{node-esm/blueprint-definition-735OAX33.mjs.map → browser/MarkdownContainer-YF22DV4M.mjs.map} +0 -0
@@ -0,0 +1,63 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type EditorView } from '@codemirror/view';
6
+ import React, { useCallback, useState } from 'react';
7
+
8
+ import { type FileInfo } from '@dxos/app-framework';
9
+ import { invariant } from '@dxos/invariant';
10
+ import { type ThemedClassName } from '@dxos/react-ui';
11
+ import { EditorToolbar, type EditorToolbarProps, type EditorViewMode } from '@dxos/react-ui-editor';
12
+
13
+ import { FileUpload, type FileUploadAction } from './FileUpload';
14
+
15
+ export type MarkdownEditorToolbarProps = ThemedClassName<
16
+ {
17
+ id: string;
18
+ editorView?: EditorView;
19
+ onFileUpload?: (file: File) => Promise<FileInfo | undefined>;
20
+ } & Pick<EditorToolbarProps, 'role' | 'state' | 'customActions' | 'onViewModeChange'>
21
+ >;
22
+
23
+ export const MarkdownEditorToolbar = ({
24
+ classNames,
25
+ id,
26
+ role,
27
+ state,
28
+ editorView,
29
+ customActions,
30
+ onFileUpload,
31
+ onViewModeChange,
32
+ }: MarkdownEditorToolbarProps) => {
33
+ const [upload, setUpload] = useState<FileUploadAction | null>(null);
34
+ const uploadRef = useCallback((next: FileUploadAction) => setUpload(() => next), []);
35
+
36
+ const handleViewModeChange = useCallback((mode: EditorViewMode) => onViewModeChange?.(mode), [onViewModeChange]);
37
+
38
+ const getView = useCallback(() => {
39
+ invariant(editorView);
40
+ return editorView;
41
+ }, [editorView]);
42
+
43
+ if (!editorView) {
44
+ return <div />;
45
+ }
46
+
47
+ return (
48
+ <>
49
+ <EditorToolbar
50
+ classNames={classNames}
51
+ attendableId={id}
52
+ role={role}
53
+ state={state}
54
+ customActions={customActions}
55
+ getView={getView}
56
+ onImageUpload={upload ?? undefined}
57
+ onViewModeChange={handleViewModeChange}
58
+ />
59
+
60
+ {onFileUpload && <FileUpload ref={uploadRef} editorView={editorView} onFileUpload={onFileUpload} />}
61
+ </>
62
+ );
63
+ };
@@ -2,36 +2,34 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta } from '@storybook/react-vite';
8
- import { Match, Option, Schema, pipe } from 'effect';
6
+ import * as Function from 'effect/Function';
7
+ import * as Match from 'effect/Match';
8
+ import * as Option from 'effect/Option';
9
+ import * as Schema from 'effect/Schema';
9
10
  import React, { type FC, useEffect, useMemo, useState } from 'react';
10
11
 
11
- import {
12
- Capabilities,
13
- IntentPlugin,
14
- SettingsPlugin,
15
- contributes,
16
- useCapability,
17
- useIntentDispatcher,
18
- } from '@dxos/app-framework';
12
+ import { Capabilities, IntentPlugin, SettingsPlugin } from '@dxos/app-framework';
13
+ import { useCapability, useIntentDispatcher } from '@dxos/app-framework/react';
19
14
  import { withPluginManager } from '@dxos/app-framework/testing';
20
15
  import { Obj, Ref, Type } from '@dxos/echo';
16
+ import { createDocAccessor, toCursorRange } from '@dxos/echo-db';
21
17
  import { invariant } from '@dxos/invariant';
22
18
  import { ClientPlugin } from '@dxos/plugin-client';
19
+ import { GraphPlugin } from '@dxos/plugin-graph';
23
20
  import { PreviewPlugin } from '@dxos/plugin-preview';
24
21
  import { SpacePlugin } from '@dxos/plugin-space';
25
22
  import { StorybookLayoutPlugin } from '@dxos/plugin-storybook-layout';
26
23
  import { ThemePlugin } from '@dxos/plugin-theme';
27
24
  import { faker } from '@dxos/random';
28
- import { createDocAccessor, fullyQualifiedId, toCursorRange, useQueue, useSpace } from '@dxos/react-client/echo';
25
+ import { useQueue, useSpace } from '@dxos/react-client/echo';
29
26
  import { IconButton, Toolbar } from '@dxos/react-ui';
30
- import { type EditorSelection, type Range, command, useTextEditor } from '@dxos/react-ui-editor';
27
+ import { withTheme } from '@dxos/react-ui/testing';
28
+ import { type EditorSelection, type Range, useTextEditor } from '@dxos/react-ui-editor';
31
29
  import { StackItem } from '@dxos/react-ui-stack';
32
30
  import { defaultTx } from '@dxos/react-ui-theme';
33
- import { DataType } from '@dxos/schema';
34
- import { withLayout } from '@dxos/storybook-utils';
31
+ import { render } from '@dxos/storybook-utils';
32
+ import { Message } from '@dxos/types';
35
33
 
36
34
  import { MarkdownCapabilities } from '../capabilities';
37
35
  import { MarkdownPlugin } from '../MarkdownPlugin';
@@ -66,13 +64,13 @@ const TestChat: FC<{ doc: Markdown.Document; content: string }> = ({ doc, conten
66
64
 
67
65
  const space = useSpace();
68
66
  const queueDxn = useMemo(() => space && space.queues.create().dxn, [space]);
69
- const queue = useQueue<DataType.Message>(queueDxn);
67
+ const queue = useQueue<Message.Message>(queueDxn);
70
68
 
71
69
  const handleInsert = async () => {
72
70
  invariant(space);
73
71
  invariant(queue);
74
72
  await queue.append([
75
- Obj.make(DataType.Message, {
73
+ Obj.make(Message.Message, {
76
74
  created: new Date().toISOString(),
77
75
  sender: { role: 'assistant' },
78
76
  blocks: [{ _tag: 'text', text: 'Hello' }],
@@ -83,8 +81,8 @@ const TestChat: FC<{ doc: Markdown.Document; content: string }> = ({ doc, conten
83
81
 
84
82
  const text = await doc.content.load();
85
83
  const accessor = createDocAccessor(text, ['content']);
86
- const cursor = pipe(
87
- editorState.getState(fullyQualifiedId(doc))?.selection,
84
+ const cursor = Function.pipe(
85
+ editorState.getState(Obj.getDXN(doc).toString())?.selection,
88
86
  Option.fromNullable,
89
87
  Option.map(selectionToRange),
90
88
  Option.map((range) => toCursorRange(accessor, range.from, range.to)),
@@ -128,12 +126,17 @@ const DefaultStory = ({ document, chat }: { document: string; chat: string }) =>
128
126
  }
129
127
 
130
128
  const doc = space.db.add(
131
- Markdown.makeDocument({
129
+ Markdown.make({
132
130
  name: 'Test',
133
131
  content: document.replaceAll(/\[(\w+)\]/g, (_, label) => {
134
- const obj = space.db.add(Obj.make(TestItem, { title: label, description: faker.lorem.paragraph() }));
132
+ const obj = space.db.add(
133
+ Obj.make(TestItem, {
134
+ title: label,
135
+ description: faker.lorem.paragraph(),
136
+ }),
137
+ );
135
138
  const dxn = Ref.make(obj).dxn.toString();
136
- return `[${label}][${dxn}]`;
139
+ return `[${label}](${dxn})`;
137
140
  }),
138
141
  }),
139
142
  );
@@ -142,45 +145,50 @@ const DefaultStory = ({ document, chat }: { document: string; chat: string }) =>
142
145
  }, [space]);
143
146
 
144
147
  if (!space || !doc) {
145
- return <></>;
148
+ return null;
146
149
  }
147
150
 
151
+ // TODO(burdon): Layout issue.
148
152
  return (
149
- <>
153
+ <div className='grid grid-cols-2 bs-full overflow-hidden'>
150
154
  <MarkdownContainer id={doc.id} object={doc} settings={settings} editorStateStore={editorState} />
151
155
  <TestChat doc={doc} content={chat} />
152
- </>
156
+ </div>
153
157
  );
154
158
  };
155
159
 
156
- // TODO(burdon): Make consistent.
157
160
  const storybook: Meta<typeof DefaultStory> = {
158
161
  title: 'plugins/plugin-markdown/Suggestions',
159
- render: DefaultStory,
162
+ render: render(DefaultStory),
160
163
  decorators: [
164
+ withTheme,
161
165
  withPluginManager({
162
166
  plugins: [
163
- ThemePlugin({ tx: defaultTx }),
164
- StorybookLayoutPlugin(),
165
167
  ClientPlugin({
166
168
  types: [Markdown.Document, TestItem],
167
169
  onClientInitialized: async ({ client }) => {
168
170
  await client.halo.createIdentity();
169
171
  },
170
172
  }),
171
- SpacePlugin(),
172
- SettingsPlugin(),
173
+ SpacePlugin({}),
174
+ GraphPlugin(),
173
175
  IntentPlugin(),
176
+ SettingsPlugin(),
177
+
178
+ // UI
179
+ ThemePlugin({ tx: defaultTx }),
174
180
  MarkdownPlugin(),
175
181
  PreviewPlugin(),
182
+ StorybookLayoutPlugin({}),
176
183
  ],
177
- capabilities: [contributes(MarkdownCapabilities.Extensions, [() => command()])],
178
184
  }),
179
- withLayout({ fullscreen: true, classNames: 'grid grid-cols-2' }),
180
185
  ],
181
186
  parameters: {
187
+ layout: 'fullscreen',
188
+ controls: {
189
+ disable: true,
190
+ },
182
191
  translations,
183
- controls: { disable: true },
184
192
  },
185
193
  };
186
194
 
@@ -4,7 +4,9 @@
4
4
 
5
5
  import { lazy } from 'react';
6
6
 
7
+ export * from './MarkdownCard';
8
+ export * from './MarkdownContainer';
7
9
  export * from './MarkdownSettings';
8
10
 
9
- export const MarkdownContainer = lazy(() => import('./MarkdownContainer'));
10
11
  export const MarkdownCard = lazy(() => import('./MarkdownCard'));
12
+ export const MarkdownContainer = lazy(() => import('./MarkdownContainer'));