@dxos/plugin-markdown 0.8.4-main.dedc0f3 → 0.8.4-main.e8ec1fe

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 (241) hide show
  1. package/dist/lib/browser/MarkdownCard-JYMDPKV5.mjs +12 -0
  2. package/dist/lib/browser/MarkdownContainer-Y75XSVBX.mjs +15 -0
  3. package/dist/lib/browser/{anchor-sort-E33BSTYF.mjs → anchor-sort-3HGPGCOO.mjs} +6 -7
  4. package/dist/lib/browser/anchor-sort-3HGPGCOO.mjs.map +7 -0
  5. package/dist/lib/browser/{app-graph-serializer-OX62DNPT.mjs → app-graph-serializer-POZN234F.mjs} +10 -10
  6. package/dist/lib/browser/app-graph-serializer-POZN234F.mjs.map +7 -0
  7. package/dist/lib/browser/blueprint-definition-GIPKFDY5.mjs +13 -0
  8. package/dist/lib/browser/blueprint-definition-GIPKFDY5.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-Z7P6JGGW.mjs → chunk-22XSSNBS.mjs} +7 -4
  10. package/dist/lib/browser/{chunk-Z7P6JGGW.mjs.map → chunk-22XSSNBS.mjs.map} +2 -2
  11. package/dist/lib/browser/chunk-2MLGSYRN.mjs +20 -0
  12. package/dist/lib/browser/chunk-2MLGSYRN.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-LAVZ2W6X.mjs → chunk-GH6GQSBL.mjs} +9 -8
  16. package/dist/lib/browser/chunk-GH6GQSBL.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-OY6CGPOO.mjs → chunk-IBCHVMZW.mjs} +2 -2
  18. package/dist/lib/browser/{chunk-OY6CGPOO.mjs.map → chunk-IBCHVMZW.mjs.map} +2 -2
  19. package/dist/lib/browser/chunk-K3LXOU3E.mjs +827 -0
  20. package/dist/lib/browser/chunk-K3LXOU3E.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-PBJLFIOX.mjs +96 -0
  22. package/dist/lib/browser/chunk-PBJLFIOX.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-BEE7VQPU.mjs → chunk-QYSEJ5GP.mjs} +13 -12
  24. package/dist/lib/browser/chunk-QYSEJ5GP.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-Y53FQREH.mjs +150 -0
  26. package/dist/lib/browser/chunk-Y53FQREH.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +25 -24
  28. package/dist/lib/browser/index.mjs.map +3 -3
  29. package/dist/lib/browser/{intent-resolver-WDDH56JC.mjs → intent-resolver-Z5L7TXUK.mjs} +8 -8
  30. package/dist/lib/browser/intent-resolver-Z5L7TXUK.mjs.map +7 -0
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/{react-surface-L3NTMD4D.mjs → react-surface-GO5ZOKNN.mjs} +59 -63
  33. package/dist/lib/browser/react-surface-GO5ZOKNN.mjs.map +7 -0
  34. package/dist/lib/browser/{settings-AABBTB4Q.mjs → settings-TZUDB5EW.mjs} +5 -5
  35. package/dist/lib/browser/{settings-AABBTB4Q.mjs.map → settings-TZUDB5EW.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-ZXPJLUYO.mjs +13 -0
  42. package/dist/lib/node-esm/MarkdownCard-ZXPJLUYO.mjs.map +7 -0
  43. package/dist/lib/node-esm/MarkdownContainer-YRDSRDCS.mjs +16 -0
  44. package/dist/lib/node-esm/MarkdownContainer-YRDSRDCS.mjs.map +7 -0
  45. package/dist/lib/node-esm/{anchor-sort-ALP2NH24.mjs → anchor-sort-PCDXEBJ2.mjs} +6 -7
  46. package/dist/lib/node-esm/anchor-sort-PCDXEBJ2.mjs.map +7 -0
  47. package/dist/lib/node-esm/{app-graph-serializer-56TD3BMX.mjs → app-graph-serializer-NF65JYAS.mjs} +10 -10
  48. package/dist/lib/node-esm/app-graph-serializer-NF65JYAS.mjs.map +7 -0
  49. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs +14 -0
  50. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-J7A6TUB2.mjs → chunk-AMHACOXW.mjs} +7 -4
  52. package/dist/lib/node-esm/{chunk-J7A6TUB2.mjs.map → chunk-AMHACOXW.mjs.map} +2 -2
  53. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs +828 -0
  54. package/dist/lib/node-esm/chunk-CT7CFX5G.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-HAIEWPU7.mjs +151 -0
  58. package/dist/lib/node-esm/chunk-HAIEWPU7.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs +22 -0
  60. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-FXILAQ5F.mjs → chunk-NGYJNQ6A.mjs} +13 -12
  62. package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs +97 -0
  64. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-O6EXWGGS.mjs → chunk-PLZ7EVCT.mjs} +9 -8
  66. package/dist/lib/node-esm/chunk-PLZ7EVCT.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-VCG2U522.mjs → chunk-SHAMSMKQ.mjs} +4 -4
  68. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +7 -0
  69. package/dist/lib/node-esm/index.mjs +25 -24
  70. package/dist/lib/node-esm/index.mjs.map +3 -3
  71. package/dist/lib/node-esm/{intent-resolver-2I5HKCUU.mjs → intent-resolver-6B3PFQ5F.mjs} +8 -8
  72. package/dist/lib/node-esm/intent-resolver-6B3PFQ5F.mjs.map +7 -0
  73. package/dist/lib/node-esm/meta.json +1 -1
  74. package/dist/lib/node-esm/{react-surface-YZSZFR5D.mjs → react-surface-I46BPCWT.mjs} +59 -63
  75. package/dist/lib/node-esm/react-surface-I46BPCWT.mjs.map +7 -0
  76. package/dist/lib/node-esm/{settings-CXGR6DH4.mjs → settings-CJ3T5EX4.mjs} +5 -5
  77. package/dist/lib/node-esm/{settings-CXGR6DH4.mjs.map → settings-CJ3T5EX4.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 -5
  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 +7 -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 +8 -0
  118. package/dist/types/src/functions/create.d.ts.map +1 -0
  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 -2
  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 +3 -0
  144. package/dist/types/src/translations.d.ts.map +1 -1
  145. package/dist/types/src/types/Markdown.d.ts +6 -4
  146. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  147. package/dist/types/src/types/MarkdownAction.d.ts +2 -1
  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 +71 -55
  154. package/src/MarkdownPlugin.tsx +99 -101
  155. package/src/capabilities/anchor-sort.ts +3 -3
  156. package/src/capabilities/app-graph-serializer.ts +5 -5
  157. package/src/capabilities/artifact-definition.ts +6 -5
  158. package/src/capabilities/blueprint-definition.ts +30 -26
  159. package/src/capabilities/capabilities.ts +1 -0
  160. package/src/capabilities/index.ts +1 -2
  161. package/src/capabilities/intent-resolver.ts +3 -2
  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 -272
  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 +41 -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 +34 -0
  177. package/src/functions/index.ts +9 -2
  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} +60 -81
  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 +3 -0
  191. package/src/types/Markdown.ts +9 -7
  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-JW7TRDSA.mjs +0 -755
  198. package/dist/lib/browser/MarkdownContainer-JW7TRDSA.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-5YKFUHRU.mjs +0 -11
  202. package/dist/lib/browser/chunk-BEE7VQPU.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-F6JJLKLN.mjs +0 -102
  204. package/dist/lib/browser/chunk-F6JJLKLN.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-SUOK6YMI.mjs +0 -22
  208. package/dist/lib/browser/chunk-SUOK6YMI.mjs.map +0 -7
  209. package/dist/lib/browser/intent-resolver-WDDH56JC.mjs.map +0 -7
  210. package/dist/lib/browser/react-surface-L3NTMD4D.mjs.map +0 -7
  211. package/dist/lib/browser/toolkit-2AJTHG74.mjs +0 -74
  212. package/dist/lib/browser/toolkit-2AJTHG74.mjs.map +0 -7
  213. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs +0 -81
  214. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs.map +0 -7
  215. package/dist/lib/node-esm/MarkdownContainer-HRGQXIXP.mjs +0 -756
  216. package/dist/lib/node-esm/MarkdownContainer-HRGQXIXP.mjs.map +0 -7
  217. package/dist/lib/node-esm/anchor-sort-ALP2NH24.mjs.map +0 -7
  218. package/dist/lib/node-esm/app-graph-serializer-56TD3BMX.mjs.map +0 -7
  219. package/dist/lib/node-esm/blueprint-definition-GVW67KGV.mjs +0 -12
  220. package/dist/lib/node-esm/chunk-DVK63TD3.mjs +0 -103
  221. package/dist/lib/node-esm/chunk-DVK63TD3.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-FXILAQ5F.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-JC2YWB5D.mjs +0 -24
  224. package/dist/lib/node-esm/chunk-JC2YWB5D.mjs.map +0 -7
  225. package/dist/lib/node-esm/chunk-O6EXWGGS.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-VCG2U522.mjs.map +0 -7
  227. package/dist/lib/node-esm/intent-resolver-2I5HKCUU.mjs.map +0 -7
  228. package/dist/lib/node-esm/react-surface-YZSZFR5D.mjs.map +0 -7
  229. package/dist/lib/node-esm/toolkit-RC44I2MI.mjs +0 -75
  230. package/dist/lib/node-esm/toolkit-RC44I2MI.mjs.map +0 -7
  231. package/dist/types/src/capabilities/toolkit.d.ts +0 -4
  232. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  233. package/dist/types/src/components/Toolbar.stories.d.ts +0 -48
  234. package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
  235. package/dist/types/src/extensions.d.ts +0 -22
  236. package/dist/types/src/extensions.d.ts.map +0 -1
  237. package/dist/types/src/functions/diff.d.ts.map +0 -1
  238. package/src/capabilities/toolkit.ts +0 -47
  239. package/src/components/Toolbar.stories.tsx +0 -118
  240. /package/dist/lib/browser/{blueprint-definition-5YKFUHRU.mjs.map → MarkdownCard-JYMDPKV5.mjs.map} +0 -0
  241. /package/dist/lib/{node-esm/blueprint-definition-GVW67KGV.mjs.map → browser/MarkdownContainer-Y75XSVBX.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,33 @@
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';
21
16
  import { invariant } from '@dxos/invariant';
22
17
  import { ClientPlugin } from '@dxos/plugin-client';
18
+ import { GraphPlugin } from '@dxos/plugin-graph';
23
19
  import { PreviewPlugin } from '@dxos/plugin-preview';
24
20
  import { SpacePlugin } from '@dxos/plugin-space';
25
21
  import { StorybookLayoutPlugin } from '@dxos/plugin-storybook-layout';
26
22
  import { ThemePlugin } from '@dxos/plugin-theme';
27
23
  import { faker } from '@dxos/random';
28
- import { createDocAccessor, fullyQualifiedId, toCursorRange, useQueue, useSpace } from '@dxos/react-client/echo';
24
+ import { createDocAccessor, toCursorRange, useQueue, useSpace } from '@dxos/react-client/echo';
29
25
  import { IconButton, Toolbar } from '@dxos/react-ui';
30
- import { type EditorSelection, type Range, command, useTextEditor } from '@dxos/react-ui-editor';
26
+ import { withTheme } from '@dxos/react-ui/testing';
27
+ import { type EditorSelection, type Range, useTextEditor } from '@dxos/react-ui-editor';
31
28
  import { StackItem } from '@dxos/react-ui-stack';
32
29
  import { defaultTx } from '@dxos/react-ui-theme';
33
- import { DataType } from '@dxos/schema';
34
- import { withLayout } from '@dxos/storybook-utils';
30
+ import { render } from '@dxos/storybook-utils';
31
+ import { Message } from '@dxos/types';
35
32
 
36
33
  import { MarkdownCapabilities } from '../capabilities';
37
34
  import { MarkdownPlugin } from '../MarkdownPlugin';
@@ -66,13 +63,13 @@ const TestChat: FC<{ doc: Markdown.Document; content: string }> = ({ doc, conten
66
63
 
67
64
  const space = useSpace();
68
65
  const queueDxn = useMemo(() => space && space.queues.create().dxn, [space]);
69
- const queue = useQueue<DataType.Message>(queueDxn);
66
+ const queue = useQueue<Message.Message>(queueDxn);
70
67
 
71
68
  const handleInsert = async () => {
72
69
  invariant(space);
73
70
  invariant(queue);
74
71
  await queue.append([
75
- Obj.make(DataType.Message, {
72
+ Obj.make(Message.Message, {
76
73
  created: new Date().toISOString(),
77
74
  sender: { role: 'assistant' },
78
75
  blocks: [{ _tag: 'text', text: 'Hello' }],
@@ -83,8 +80,8 @@ const TestChat: FC<{ doc: Markdown.Document; content: string }> = ({ doc, conten
83
80
 
84
81
  const text = await doc.content.load();
85
82
  const accessor = createDocAccessor(text, ['content']);
86
- const cursor = pipe(
87
- editorState.getState(fullyQualifiedId(doc))?.selection,
83
+ const cursor = Function.pipe(
84
+ editorState.getState(Obj.getDXN(doc).toString())?.selection,
88
85
  Option.fromNullable,
89
86
  Option.map(selectionToRange),
90
87
  Option.map((range) => toCursorRange(accessor, range.from, range.to)),
@@ -128,12 +125,17 @@ const DefaultStory = ({ document, chat }: { document: string; chat: string }) =>
128
125
  }
129
126
 
130
127
  const doc = space.db.add(
131
- Markdown.makeDocument({
128
+ Markdown.make({
132
129
  name: 'Test',
133
130
  content: document.replaceAll(/\[(\w+)\]/g, (_, label) => {
134
- const obj = space.db.add(Obj.make(TestItem, { title: label, description: faker.lorem.paragraph() }));
131
+ const obj = space.db.add(
132
+ Obj.make(TestItem, {
133
+ title: label,
134
+ description: faker.lorem.paragraph(),
135
+ }),
136
+ );
135
137
  const dxn = Ref.make(obj).dxn.toString();
136
- return `[${label}][${dxn}]`;
138
+ return `[${label}](${dxn})`;
137
139
  }),
138
140
  }),
139
141
  );
@@ -142,45 +144,50 @@ const DefaultStory = ({ document, chat }: { document: string; chat: string }) =>
142
144
  }, [space]);
143
145
 
144
146
  if (!space || !doc) {
145
- return <></>;
147
+ return null;
146
148
  }
147
149
 
150
+ // TODO(burdon): Layout issue.
148
151
  return (
149
- <>
152
+ <div className='grid grid-cols-2 bs-full overflow-hidden'>
150
153
  <MarkdownContainer id={doc.id} object={doc} settings={settings} editorStateStore={editorState} />
151
154
  <TestChat doc={doc} content={chat} />
152
- </>
155
+ </div>
153
156
  );
154
157
  };
155
158
 
156
- // TODO(burdon): Make consistent.
157
159
  const storybook: Meta<typeof DefaultStory> = {
158
160
  title: 'plugins/plugin-markdown/Suggestions',
159
- render: DefaultStory,
161
+ render: render(DefaultStory),
160
162
  decorators: [
163
+ withTheme,
161
164
  withPluginManager({
162
165
  plugins: [
163
- ThemePlugin({ tx: defaultTx }),
164
- StorybookLayoutPlugin(),
165
166
  ClientPlugin({
166
167
  types: [Markdown.Document, TestItem],
167
168
  onClientInitialized: async ({ client }) => {
168
169
  await client.halo.createIdentity();
169
170
  },
170
171
  }),
171
- SpacePlugin(),
172
- SettingsPlugin(),
172
+ SpacePlugin({}),
173
+ GraphPlugin(),
173
174
  IntentPlugin(),
175
+ SettingsPlugin(),
176
+
177
+ // UI
178
+ ThemePlugin({ tx: defaultTx }),
174
179
  MarkdownPlugin(),
175
180
  PreviewPlugin(),
181
+ StorybookLayoutPlugin({}),
176
182
  ],
177
- capabilities: [contributes(MarkdownCapabilities.Extensions, [() => command()])],
178
183
  }),
179
- withLayout({ fullscreen: true, classNames: 'grid grid-cols-2' }),
180
184
  ],
181
185
  parameters: {
186
+ layout: 'fullscreen',
187
+ controls: {
188
+ disable: true,
189
+ },
182
190
  translations,
183
- controls: { disable: true },
184
191
  },
185
192
  };
186
193
 
@@ -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'));