@dxos/plugin-markdown 0.8.4-main.bc674ce → 0.8.4-main.bcb3aa67d6

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 (361) hide show
  1. package/dist/lib/browser/MarkdownSettings-5AD3X3II.mjs +124 -0
  2. package/dist/lib/browser/MarkdownSettings-5AD3X3II.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +47 -4
  4. package/dist/lib/browser/blueprints/index.mjs.map +4 -4
  5. package/dist/lib/browser/chunk-46WIDM4R.mjs +98 -0
  6. package/dist/lib/browser/chunk-46WIDM4R.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-GQKARRJU.mjs +158 -0
  8. package/dist/lib/browser/chunk-GQKARRJU.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  10. package/dist/lib/browser/cli/index.mjs +26 -19
  11. package/dist/lib/browser/cli/index.mjs.map +3 -3
  12. package/dist/lib/browser/create-I7QWPBMS.mjs +30 -0
  13. package/dist/lib/browser/create-I7QWPBMS.mjs.map +7 -0
  14. package/dist/lib/browser/create-markdown-6QQXSF3Q.mjs +22 -0
  15. package/dist/lib/browser/create-markdown-6QQXSF3Q.mjs.map +7 -0
  16. package/dist/lib/browser/index.mjs +586 -85
  17. package/dist/lib/browser/index.mjs.map +4 -4
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/open-NSBN4NKR.mjs +21 -0
  20. package/dist/lib/browser/open-NSBN4NKR.mjs.map +7 -0
  21. package/dist/lib/browser/operations/index.mjs +14 -0
  22. package/dist/lib/browser/operations/index.mjs.map +7 -0
  23. package/dist/lib/browser/scroll-to-anchor-RA5OMQCP.mjs +49 -0
  24. package/dist/lib/browser/scroll-to-anchor-RA5OMQCP.mjs.map +7 -0
  25. package/dist/lib/browser/set-view-mode-75MBU6CB.mjs +26 -0
  26. package/dist/lib/browser/set-view-mode-75MBU6CB.mjs.map +7 -0
  27. package/dist/lib/browser/types/index.mjs +6 -7
  28. package/dist/lib/browser/update-QQJYONAC.mjs +45 -0
  29. package/dist/lib/browser/update-QQJYONAC.mjs.map +7 -0
  30. package/dist/lib/node-esm/MarkdownSettings-ODDM67XG.mjs +125 -0
  31. package/dist/lib/node-esm/MarkdownSettings-ODDM67XG.mjs.map +7 -0
  32. package/dist/lib/node-esm/blueprints/index.mjs +47 -4
  33. package/dist/lib/node-esm/blueprints/index.mjs.map +4 -4
  34. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs +99 -0
  35. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs.map +7 -0
  36. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  37. package/dist/lib/node-esm/chunk-QRCQ55W7.mjs +159 -0
  38. package/dist/lib/node-esm/chunk-QRCQ55W7.mjs.map +7 -0
  39. package/dist/lib/node-esm/cli/index.mjs +26 -19
  40. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  41. package/dist/lib/node-esm/create-VJ5SIKYF.mjs +31 -0
  42. package/dist/lib/node-esm/create-VJ5SIKYF.mjs.map +7 -0
  43. package/dist/lib/node-esm/create-markdown-P5KNGLZ5.mjs +23 -0
  44. package/dist/lib/node-esm/create-markdown-P5KNGLZ5.mjs.map +7 -0
  45. package/dist/lib/node-esm/index.mjs +586 -85
  46. package/dist/lib/node-esm/index.mjs.map +4 -4
  47. package/dist/lib/node-esm/meta.json +1 -1
  48. package/dist/lib/node-esm/open-U3T6IVHN.mjs +22 -0
  49. package/dist/lib/node-esm/open-U3T6IVHN.mjs.map +7 -0
  50. package/dist/lib/node-esm/operations/index.mjs +15 -0
  51. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  52. package/dist/lib/node-esm/scroll-to-anchor-CVM3LVSQ.mjs +50 -0
  53. package/dist/lib/node-esm/scroll-to-anchor-CVM3LVSQ.mjs.map +7 -0
  54. package/dist/lib/node-esm/set-view-mode-WQJBCUXY.mjs +27 -0
  55. package/dist/lib/node-esm/set-view-mode-WQJBCUXY.mjs.map +7 -0
  56. package/dist/lib/node-esm/types/index.mjs +6 -7
  57. package/dist/lib/node-esm/update-24CQM75C.mjs +46 -0
  58. package/dist/lib/node-esm/update-24CQM75C.mjs.map +7 -0
  59. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  60. package/dist/types/src/blueprints/index.d.ts +1 -1
  61. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  62. package/dist/types/src/blueprints/markdown-blueprint.d.ts +3 -20
  63. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/anchor-sort.d.ts +6 -0
  65. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -0
  66. package/dist/types/src/capabilities/app-graph-serializer.d.ts +5 -0
  67. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -0
  68. package/dist/types/src/capabilities/artifact-definition.d.ts +5 -0
  69. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -0
  70. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  71. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  72. package/dist/types/src/capabilities/index.d.ts +27 -7
  73. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/node.d.ts +4 -0
  75. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  76. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  77. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  78. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  79. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  80. package/dist/types/src/capabilities/settings.d.ts +24 -0
  81. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  82. package/dist/types/src/capabilities/state.d.ts +6 -0
  83. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  84. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  85. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +2 -2
  86. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  87. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +14 -9
  88. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  89. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +2 -2
  90. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  91. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +4 -2
  92. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  93. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +11 -6
  94. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  95. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -6
  96. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  97. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +138 -0
  98. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -0
  99. package/dist/types/src/components/MarkdownSettings/index.d.ts +2 -1
  100. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -1
  101. package/dist/types/src/components/index.d.ts +3 -8
  102. package/dist/types/src/components/index.d.ts.map +1 -1
  103. package/dist/types/src/{components → containers}/MarkdownCard/MarkdownCard.d.ts +1 -1
  104. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  105. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  106. package/dist/types/src/{components → containers}/MarkdownCard/index.d.ts +0 -1
  107. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
  108. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +15 -0
  109. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
  110. package/dist/types/src/{components → containers/MarkdownContainer}/MarkdownContainer.d.ts +10 -7
  111. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -0
  112. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +99 -0
  113. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -0
  114. package/dist/types/src/containers/MarkdownContainer/index.d.ts +3 -0
  115. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +1 -0
  116. package/dist/types/src/containers/index.d.ts +5 -0
  117. package/dist/types/src/containers/index.d.ts.map +1 -0
  118. package/dist/types/src/hooks/index.d.ts +0 -1
  119. package/dist/types/src/hooks/index.d.ts.map +1 -1
  120. package/dist/types/src/hooks/useExtensions.d.ts +7 -5
  121. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  122. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  123. package/dist/types/src/index.d.ts +1 -0
  124. package/dist/types/src/index.d.ts.map +1 -1
  125. package/dist/types/src/operations/create-markdown.d.ts +5 -0
  126. package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
  127. package/dist/types/src/operations/create.d.ts +5 -0
  128. package/dist/types/src/operations/create.d.ts.map +1 -0
  129. package/dist/types/src/operations/create.test.d.ts.map +1 -0
  130. package/dist/types/src/operations/definitions.d.ts +64 -0
  131. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  132. package/dist/types/src/operations/index.d.ts +4 -0
  133. package/dist/types/src/operations/index.d.ts.map +1 -0
  134. package/dist/types/src/operations/open.d.ts +5 -0
  135. package/dist/types/src/operations/open.d.ts.map +1 -0
  136. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  137. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  138. package/dist/types/src/operations/set-view-mode.d.ts +5 -0
  139. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
  140. package/dist/types/src/operations/update.d.ts +5 -0
  141. package/dist/types/src/operations/update.d.ts.map +1 -0
  142. package/dist/types/src/operations/update.test.d.ts.map +1 -0
  143. package/dist/types/src/translations.d.ts +75 -35
  144. package/dist/types/src/translations.d.ts.map +1 -1
  145. package/dist/types/src/types/Markdown.d.ts +15 -16
  146. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  147. package/dist/types/src/types/Settings.d.ts +16 -0
  148. package/dist/types/src/types/Settings.d.ts.map +1 -0
  149. package/dist/types/src/types/capabilities.d.ts +31 -2
  150. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  151. package/dist/types/src/types/events.d.ts.map +1 -1
  152. package/dist/types/src/types/index.d.ts +2 -3
  153. package/dist/types/src/types/index.d.ts.map +1 -1
  154. package/dist/types/src/util.d.ts +2 -2
  155. package/dist/types/src/util.d.ts.map +1 -1
  156. package/dist/types/tsconfig.tsbuildinfo +1 -1
  157. package/package.json +89 -57
  158. package/src/MarkdownPlugin.tsx +49 -44
  159. package/src/blueprints/index.ts +1 -1
  160. package/src/blueprints/markdown-blueprint.ts +14 -8
  161. package/src/capabilities/{anchor-sort/anchor-sort.ts → anchor-sort.ts} +4 -3
  162. package/src/capabilities/{app-graph-serializer/app-graph-serializer.ts → app-graph-serializer.ts} +14 -9
  163. package/src/capabilities/{artifact-definition/artifact-definition.ts → artifact-definition.ts} +5 -5
  164. package/src/capabilities/blueprint-definition.ts +17 -0
  165. package/src/capabilities/index.ts +13 -7
  166. package/src/capabilities/node.ts +11 -0
  167. package/src/capabilities/operation-handler.ts +16 -0
  168. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +48 -27
  169. package/src/capabilities/{settings/settings.ts → settings.ts} +5 -4
  170. package/src/capabilities/state.ts +47 -0
  171. package/src/cli/plugin.ts +21 -10
  172. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  173. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +29 -29
  174. package/src/components/MarkdownEditor/MarkdownEditor.tsx +63 -32
  175. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +24 -17
  176. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +47 -55
  177. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +40 -0
  178. package/src/components/MarkdownSettings/MarkdownSettings.tsx +114 -98
  179. package/src/components/MarkdownSettings/index.ts +3 -1
  180. package/src/components/index.ts +4 -12
  181. package/src/{components → containers}/MarkdownCard/MarkdownCard.stories.tsx +17 -7
  182. package/src/{components → containers}/MarkdownCard/MarkdownCard.tsx +23 -30
  183. package/src/{components → containers}/MarkdownCard/index.ts +0 -2
  184. package/src/containers/MarkdownCard/snippet.ts +75 -0
  185. package/src/{components → containers/MarkdownContainer}/MarkdownContainer.stories.tsx +28 -18
  186. package/src/{components → containers/MarkdownContainer}/MarkdownContainer.tsx +59 -36
  187. package/src/containers/MarkdownContainer/index.ts +6 -0
  188. package/src/containers/index.ts +10 -0
  189. package/src/hooks/index.ts +0 -1
  190. package/src/hooks/useEditorMenuOptions.ts +2 -2
  191. package/src/hooks/useExtensions.tsx +80 -93
  192. package/src/hooks/useLinkQuery.ts +31 -6
  193. package/src/index.ts +2 -0
  194. package/src/meta.ts +1 -1
  195. package/src/operations/create-markdown.ts +21 -0
  196. package/src/operations/create.conversations.json +1 -0
  197. package/src/operations/create.test.ts +98 -0
  198. package/src/operations/create.ts +27 -0
  199. package/src/operations/definitions.ts +119 -0
  200. package/src/operations/index.ts +16 -0
  201. package/src/operations/open.ts +25 -0
  202. package/src/operations/scroll-to-anchor.ts +40 -0
  203. package/src/operations/set-view-mode.ts +25 -0
  204. package/src/operations/update.conversations.json +1 -0
  205. package/src/operations/update.test.ts +215 -0
  206. package/src/operations/update.ts +51 -0
  207. package/src/testing.ts +2 -2
  208. package/src/translations.ts +49 -35
  209. package/src/types/Markdown.ts +18 -25
  210. package/src/types/Settings.ts +28 -0
  211. package/src/types/capabilities.ts +17 -5
  212. package/src/types/events.ts +5 -4
  213. package/src/types/index.ts +3 -4
  214. package/src/util.tsx +5 -5
  215. package/dist/lib/browser/MarkdownCard-WHK3ORP7.mjs +0 -12
  216. package/dist/lib/browser/MarkdownContainer-V7EAADMF.mjs +0 -12
  217. package/dist/lib/browser/anchor-sort-WQ3TL7ZI.mjs +0 -32
  218. package/dist/lib/browser/anchor-sort-WQ3TL7ZI.mjs.map +0 -7
  219. package/dist/lib/browser/app-graph-serializer-ULZUJKOD.mjs +0 -58
  220. package/dist/lib/browser/app-graph-serializer-ULZUJKOD.mjs.map +0 -7
  221. package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs +0 -19
  222. package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-BX73DASG.mjs +0 -702
  224. package/dist/lib/browser/chunk-BX73DASG.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-CUGDX7KA.mjs +0 -8
  226. package/dist/lib/browser/chunk-CUGDX7KA.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-FWQQW6KU.mjs +0 -144
  228. package/dist/lib/browser/chunk-FWQQW6KU.mjs.map +0 -7
  229. package/dist/lib/browser/chunk-JOXYQLKH.mjs +0 -55
  230. package/dist/lib/browser/chunk-JOXYQLKH.mjs.map +0 -7
  231. package/dist/lib/browser/chunk-KDKXFKDN.mjs +0 -104
  232. package/dist/lib/browser/chunk-KDKXFKDN.mjs.map +0 -7
  233. package/dist/lib/browser/chunk-LMO5UVKL.mjs +0 -167
  234. package/dist/lib/browser/chunk-LMO5UVKL.mjs.map +0 -7
  235. package/dist/lib/browser/chunk-S45ULIOG.mjs +0 -101
  236. package/dist/lib/browser/chunk-S45ULIOG.mjs.map +0 -7
  237. package/dist/lib/browser/chunk-WIPSLZ6L.mjs +0 -60
  238. package/dist/lib/browser/chunk-WIPSLZ6L.mjs.map +0 -7
  239. package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs +0 -53
  240. package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs.map +0 -7
  241. package/dist/lib/browser/react-surface-SRPLD3ED.mjs +0 -213
  242. package/dist/lib/browser/react-surface-SRPLD3ED.mjs.map +0 -7
  243. package/dist/lib/browser/settings-JY5JE7MI.mjs +0 -35
  244. package/dist/lib/browser/settings-JY5JE7MI.mjs.map +0 -7
  245. package/dist/lib/browser/state-QE7VSJWJ.mjs +0 -29
  246. package/dist/lib/browser/state-QE7VSJWJ.mjs.map +0 -7
  247. package/dist/lib/node-esm/MarkdownCard-WJPLQTFS.mjs +0 -13
  248. package/dist/lib/node-esm/MarkdownCard-WJPLQTFS.mjs.map +0 -7
  249. package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs +0 -13
  250. package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs.map +0 -7
  251. package/dist/lib/node-esm/anchor-sort-G7D5TAI6.mjs +0 -33
  252. package/dist/lib/node-esm/anchor-sort-G7D5TAI6.mjs.map +0 -7
  253. package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs +0 -59
  254. package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs.map +0 -7
  255. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs +0 -20
  256. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-3JYPCC7M.mjs +0 -105
  258. package/dist/lib/node-esm/chunk-3JYPCC7M.mjs.map +0 -7
  259. package/dist/lib/node-esm/chunk-44VJC3QF.mjs +0 -56
  260. package/dist/lib/node-esm/chunk-44VJC3QF.mjs.map +0 -7
  261. package/dist/lib/node-esm/chunk-D4BCFPKK.mjs +0 -703
  262. package/dist/lib/node-esm/chunk-D4BCFPKK.mjs.map +0 -7
  263. package/dist/lib/node-esm/chunk-EYAFC4N7.mjs +0 -145
  264. package/dist/lib/node-esm/chunk-EYAFC4N7.mjs.map +0 -7
  265. package/dist/lib/node-esm/chunk-PRV35A7Z.mjs +0 -168
  266. package/dist/lib/node-esm/chunk-PRV35A7Z.mjs.map +0 -7
  267. package/dist/lib/node-esm/chunk-RQP7G7XW.mjs +0 -61
  268. package/dist/lib/node-esm/chunk-RQP7G7XW.mjs.map +0 -7
  269. package/dist/lib/node-esm/chunk-SDTYEGGL.mjs +0 -102
  270. package/dist/lib/node-esm/chunk-SDTYEGGL.mjs.map +0 -7
  271. package/dist/lib/node-esm/chunk-W3IIKDV5.mjs +0 -10
  272. package/dist/lib/node-esm/chunk-W3IIKDV5.mjs.map +0 -7
  273. package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs +0 -54
  274. package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs.map +0 -7
  275. package/dist/lib/node-esm/react-surface-RONSOJIQ.mjs +0 -214
  276. package/dist/lib/node-esm/react-surface-RONSOJIQ.mjs.map +0 -7
  277. package/dist/lib/node-esm/settings-4UGMPIRY.mjs +0 -36
  278. package/dist/lib/node-esm/settings-4UGMPIRY.mjs.map +0 -7
  279. package/dist/lib/node-esm/state-LXE5XIN4.mjs +0 -30
  280. package/dist/lib/node-esm/state-LXE5XIN4.mjs.map +0 -7
  281. package/dist/types/src/blueprints/functions/create.d.ts +0 -8
  282. package/dist/types/src/blueprints/functions/create.d.ts.map +0 -1
  283. package/dist/types/src/blueprints/functions/create.test.d.ts.map +0 -1
  284. package/dist/types/src/blueprints/functions/index.d.ts +0 -4
  285. package/dist/types/src/blueprints/functions/index.d.ts.map +0 -1
  286. package/dist/types/src/blueprints/functions/open.d.ts +0 -7
  287. package/dist/types/src/blueprints/functions/open.d.ts.map +0 -1
  288. package/dist/types/src/blueprints/functions/update.d.ts +0 -6
  289. package/dist/types/src/blueprints/functions/update.d.ts.map +0 -1
  290. package/dist/types/src/blueprints/functions/update.test.d.ts.map +0 -1
  291. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +0 -5
  292. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +0 -1
  293. package/dist/types/src/capabilities/anchor-sort/index.d.ts +0 -3
  294. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +0 -1
  295. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +0 -5
  296. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +0 -1
  297. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +0 -3
  298. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +0 -1
  299. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +0 -5
  300. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +0 -1
  301. package/dist/types/src/capabilities/artifact-definition/index.d.ts +0 -3
  302. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +0 -1
  303. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -10
  304. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
  305. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
  306. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
  307. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  308. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  309. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  310. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  311. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  312. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  313. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -5
  314. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  315. package/dist/types/src/capabilities/settings/index.d.ts +0 -3
  316. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  317. package/dist/types/src/capabilities/settings/settings.d.ts +0 -6
  318. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  319. package/dist/types/src/capabilities/state/index.d.ts +0 -3
  320. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  321. package/dist/types/src/capabilities/state/state.d.ts +0 -5
  322. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  323. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
  324. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
  325. package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
  326. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  327. package/dist/types/src/components/MarkdownContainer.stories.d.ts +0 -59
  328. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
  329. package/dist/types/src/components/Suggestions.stories.d.ts +0 -11
  330. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  331. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  332. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  333. package/dist/types/src/types/MarkdownAction.d.ts +0 -66
  334. package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
  335. package/src/blueprints/functions/create.conversations.json +0 -1
  336. package/src/blueprints/functions/create.test.ts +0 -125
  337. package/src/blueprints/functions/create.ts +0 -34
  338. package/src/blueprints/functions/index.ts +0 -7
  339. package/src/blueprints/functions/open.ts +0 -33
  340. package/src/blueprints/functions/update.conversations.json +0 -1
  341. package/src/blueprints/functions/update.test.ts +0 -149
  342. package/src/blueprints/functions/update.ts +0 -38
  343. package/src/capabilities/anchor-sort/index.ts +0 -7
  344. package/src/capabilities/app-graph-serializer/index.ts +0 -7
  345. package/src/capabilities/artifact-definition/index.ts +0 -7
  346. package/src/capabilities/blueprint-definition/blueprint-definition.ts +0 -25
  347. package/src/capabilities/blueprint-definition/index.ts +0 -7
  348. package/src/capabilities/operation-resolver/index.ts +0 -7
  349. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -45
  350. package/src/capabilities/react-surface/index.ts +0 -7
  351. package/src/capabilities/settings/index.ts +0 -7
  352. package/src/capabilities/state/index.ts +0 -7
  353. package/src/capabilities/state/state.ts +0 -31
  354. package/src/components/Suggestions.stories.tsx +0 -215
  355. package/src/hooks/useSelectCurrentThread.tsx +0 -61
  356. package/src/types/MarkdownAction.ts +0 -59
  357. /package/dist/lib/browser/{MarkdownCard-WHK3ORP7.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  358. /package/dist/lib/{browser/MarkdownContainer-V7EAADMF.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
  359. /package/dist/types/src/{components → containers}/MarkdownCard/MarkdownCard.stories.d.ts +0 -0
  360. /package/dist/types/src/{blueprints/functions → operations}/create.test.d.ts +0 -0
  361. /package/dist/types/src/{blueprints/functions → operations}/update.test.d.ts +0 -0
@@ -1,89 +1,209 @@
1
1
  import {
2
- getContentSnippet,
3
- getFallbackName,
4
- isEditorModel,
5
- isMarkdownProperties,
6
- serializer,
7
- setFallbackName
8
- } from "./chunk-S45ULIOG.mjs";
9
- import {
10
- OperationResolver
11
- } from "./chunk-CUGDX7KA.mjs";
12
- import {
13
- translations
14
- } from "./chunk-JOXYQLKH.mjs";
15
- import {
16
- markdown_blueprint_exports
17
- } from "./chunk-FWQQW6KU.mjs";
18
- import {
19
- MarkdownAction_exports,
20
2
  MarkdownCapabilities,
21
3
  MarkdownEvents,
22
- MarkdownOperation,
23
4
  MarkdownStateSchema,
24
5
  Markdown_exports,
25
- meta
26
- } from "./chunk-LMO5UVKL.mjs";
6
+ Settings_exports
7
+ } from "./chunk-46WIDM4R.mjs";
8
+ import "./chunk-J5LGTIGS.mjs";
9
+
10
+ // src/meta.ts
11
+ import { trim } from "@dxos/util";
12
+ var meta = {
13
+ id: "org.dxos.plugin.markdown",
14
+ name: "Markdown",
15
+ description: trim`
16
+ Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.
17
+ Supports AI-powered editing assistance and seamlessly integrates with other workspace objects.
18
+ `,
19
+ icon: "ph--text-aa--regular",
20
+ iconHue: "indigo",
21
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown",
22
+ screenshots: [
23
+ "https://dxos.network/plugin-details-markdown-dark.png"
24
+ ]
25
+ };
26
+
27
+ // src/util.tsx
28
+ import { debounce } from "@dxos/async";
29
+ import { Obj } from "@dxos/echo";
30
+ import { Markdown } from "#types";
31
+ var isEditorModel = (data) => data && typeof data === "object" && "id" in data && typeof data.id === "string" && "text" in data && typeof data.text === "string";
32
+ var isMarkdownProperties = (data) => Obj.isObject(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
33
+ var nonTitleChars = /[^\w ]/g;
34
+ var skipPatterns = [
35
+ /^!\[/,
36
+ /^---\s*$/,
37
+ /^```/,
38
+ /^\s*$/
39
+ ];
40
+ var titlePatterns = [
41
+ /^#{1,6}\s+(.+)/
42
+ ];
43
+ var getFallbackName = (content = "") => {
44
+ const len = content.length;
45
+ let i = 0;
46
+ while (i < len) {
47
+ let lineEnd = i;
48
+ while (lineEnd < len && content[lineEnd] !== "\n") {
49
+ lineEnd++;
50
+ }
51
+ const line = content.slice(i, lineEnd).trim();
52
+ i = lineEnd + 1;
53
+ if (skipPatterns.some((pattern) => pattern.test(line))) {
54
+ continue;
55
+ }
56
+ for (const pattern of titlePatterns) {
57
+ const match = pattern.exec(line);
58
+ if (match) {
59
+ const text2 = match[1].replaceAll(nonTitleChars, "").trim();
60
+ if (text2.length > 0) {
61
+ return text2;
62
+ }
63
+ }
64
+ }
65
+ const maxLen = 32;
66
+ const text = line.replaceAll(nonTitleChars, "").trim();
67
+ if (text.length > 0) {
68
+ if (text.length > maxLen) {
69
+ const words = text.split(/\s+/);
70
+ let result = "";
71
+ for (const word of words) {
72
+ const next = result.length === 0 ? word : result + " " + word;
73
+ if (next.length > maxLen) {
74
+ break;
75
+ }
76
+ result = next;
77
+ }
78
+ return result + "\u2026";
79
+ }
80
+ return text;
81
+ }
82
+ }
83
+ return "";
84
+ };
85
+ var getContentSnippet = (content = "", maxLines = 3) => {
86
+ const abstract = content.split("\n").filter((line) => !line.startsWith("!")).filter((line) => line.trim() !== "");
87
+ return abstract.slice(0, maxLines).join("\n") ?? "";
88
+ };
89
+ var setFallbackName = debounce((doc, content = "") => {
90
+ const name = getFallbackName(content);
91
+ if (doc.fallbackName !== name) {
92
+ Obj.change(doc, (obj) => {
93
+ obj.fallbackName = name;
94
+ });
95
+ }
96
+ }, 200);
97
+ var serializer = {
98
+ serialize: async ({ object }) => {
99
+ const { content } = await object.content.load();
100
+ return JSON.stringify({
101
+ name: object.name,
102
+ fallbackName: object.fallbackName,
103
+ content
104
+ });
105
+ },
106
+ deserialize: async ({ content: serialized }) => {
107
+ const { name, fallbackName, content } = JSON.parse(serialized);
108
+ return Markdown.make({
109
+ name,
110
+ fallbackName,
111
+ content
112
+ });
113
+ }
114
+ };
27
115
 
28
116
  // src/MarkdownPlugin.tsx
29
117
  import * as Effect from "effect/Effect";
30
- import { Capability as Capability7, Common, Plugin } from "@dxos/app-framework";
31
- import { Ref } from "@dxos/echo";
118
+ import * as Option from "effect/Option";
119
+ import { Plugin } from "@dxos/app-framework";
120
+ import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
121
+ import { Annotation, Ref } from "@dxos/echo";
32
122
  import { createDocAccessor, getTextInRange } from "@dxos/echo-db";
33
123
  import { Operation } from "@dxos/operation";
34
- import { SpaceCapabilities, SpaceEvents } from "@dxos/plugin-space";
35
- import { translations as editorTranslations } from "@dxos/react-ui-editor";
124
+ import { SpaceOperation } from "@dxos/plugin-space/operations";
125
+ import { translations as editorTranslations2 } from "@dxos/react-ui-editor";
36
126
  import { Text } from "@dxos/schema";
127
+ import { MarkdownBlueprint } from "#blueprints";
128
+ import { meta as meta3 } from "#meta";
37
129
 
38
- // src/capabilities/anchor-sort/index.ts
39
- import { Capability } from "@dxos/app-framework";
40
- var AnchorSort = Capability.lazy("AnchorSort", () => import("./anchor-sort-WQ3TL7ZI.mjs"));
41
-
42
- // src/capabilities/app-graph-serializer/index.ts
43
- import { Capability as Capability2 } from "@dxos/app-framework";
44
- var AppGraphSerializer = Capability2.lazy("AppGraphSerializer", () => import("./app-graph-serializer-ULZUJKOD.mjs"));
45
-
46
- // src/capabilities/blueprint-definition/index.ts
47
- import { Capability as Capability3 } from "@dxos/app-framework";
48
- var BlueprintDefinition = Capability3.lazy("BlueprintDefinition", () => import("./blueprint-definition-TLV4PNZW.mjs"));
49
-
50
- // src/capabilities/react-surface/index.ts
51
- import { Capability as Capability4 } from "@dxos/app-framework";
52
- var ReactSurface = Capability4.lazy("ReactSurface", () => import("./react-surface-SRPLD3ED.mjs"));
53
-
54
- // src/capabilities/settings/index.ts
55
- import { Capability as Capability5 } from "@dxos/app-framework";
56
- var MarkdownSettings = Capability5.lazy("MarkdownSettings", () => import("./settings-JY5JE7MI.mjs"));
57
-
58
- // src/capabilities/state/index.ts
59
- import { Capability as Capability6 } from "@dxos/app-framework";
60
- var MarkdownState = Capability6.lazy("MarkdownState", () => import("./state-QE7VSJWJ.mjs"));
130
+ // src/translations.ts
131
+ import { translations as editorTranslations } from "@dxos/react-ui-editor";
132
+ import { meta as meta2 } from "#meta";
133
+ import { Markdown as Markdown2 } from "#types";
134
+ var translations = [
135
+ {
136
+ "en-US": {
137
+ [Markdown2.Document.typename]: {
138
+ "typename.label": "Document",
139
+ "typename.label_zero": "Documents",
140
+ "typename.label_one": "Document",
141
+ "typename.label_other": "Documents",
142
+ "object-name.placeholder": "New document",
143
+ "add-object.label": "Add document",
144
+ "rename-object.label": "Rename document",
145
+ "delete-object.label": "Delete document",
146
+ "object-deleted.label": "Document deleted"
147
+ },
148
+ [meta2.id]: {
149
+ "plugin.name": "Editor",
150
+ "settings.title": "Editor settings",
151
+ "choose-markdown-from-space-dialog.title": "Choose one or more documents to add",
152
+ // TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)
153
+ "empty-choose-markdown-from-space.message": "None available; try creating a new one instead?",
154
+ "chooser-done.label": "Add selected",
155
+ "editor.placeholder": "Start typing\u2026",
156
+ "editor-input-mode.label": "Editor input mode",
157
+ "editor-input-mode.description": "Choose keyboard bindings for the editor.",
158
+ "select-editor-input-mode.placeholder": "Select editor input mode\u2026",
159
+ "settings.editor-input-mode.default.label": "Default",
160
+ "settings.editor-input-mode.vim.label": "Vim",
161
+ "settings.editor-input-mode.vscode.label": "VS Code",
162
+ "settings.toolbar.label": "Show toolbar",
163
+ "settings.toolbar.description": "Display a formatting toolbar above the editor.",
164
+ "settings.numbered-headings.label": "Numbered headings",
165
+ "settings.numbered-headings.description": "Automatically number heading levels in the document.",
166
+ "settings.folding.label": "Folding",
167
+ "settings.folding.description": "Allow collapsing and expanding sections by heading.",
168
+ "settings.experimental.label": "Enable experimental features",
169
+ "settings.experimental.description": "Turn on features that are still in development.",
170
+ "settings.debug.label": "Enable debugging features",
171
+ "settings.debug.description": "Show developer tools and diagnostics for the editor.",
172
+ "settings.debug-typewriter.label": "Typewriter script",
173
+ "settings.debug-typewriter.description": "Script to replay typed input for testing purposes.",
174
+ "settings.debug-typewriter.placeholder": "Typewriter script...",
175
+ "toggle-view-mode.label": "Toggle read-only",
176
+ "default-view-mode.label": "Default view mode",
177
+ "default-view-mode.description": "Set whether documents open in editing or read-only mode.",
178
+ "upload-image.label": "Upload image",
179
+ "fallback.title": "Untitled",
180
+ "navigate-to-document.label": "Open document",
181
+ "words.label": "words",
182
+ "words.label_zero": "words",
183
+ "words.label_one": "word",
184
+ "words.label_other": "words"
185
+ }
186
+ }
187
+ },
188
+ ...editorTranslations
189
+ ];
61
190
 
62
191
  // src/MarkdownPlugin.tsx
63
- var MarkdownPlugin = Plugin.define(meta).pipe(Common.Plugin.addTranslationsModule({
64
- translations: [
65
- ...translations,
66
- ...editorTranslations
67
- ]
68
- }), Plugin.addModule({
69
- activatesOn: Common.ActivationEvent.SetupSettings,
70
- activate: MarkdownSettings
71
- }), Plugin.addModule({
72
- id: "state",
73
- // TODO(wittjosiah): Does not integrate with settings store.
74
- // Should this be a different event?
75
- // Should settings store be renamed to be more generic?
76
- activatesOn: Common.ActivationEvent.SetupSettings,
77
- activate: MarkdownState
78
- }), Common.Plugin.addMetadataModule({
192
+ import { Markdown as Markdown3, MarkdownEvents as MarkdownEvents2 } from "#types";
193
+ import { MarkdownOperation } from "#operations";
194
+ import { AnchorSort, AppGraphSerializer, BlueprintDefinition, MarkdownSettings, MarkdownState, OperationHandler, ReactSurface } from "#capabilities";
195
+ var MarkdownPlugin = Plugin.define(meta3).pipe(AppPlugin.addBlueprintDefinitionModule({
196
+ activate: BlueprintDefinition
197
+ }), AppPlugin.addMetadataModule({
79
198
  metadata: {
80
- id: Markdown_exports.Document.typename,
199
+ id: Markdown3.Document.typename,
81
200
  metadata: {
201
+ // TODO(dmaretskyi): Remove label, icon and iconHue and query them of schema.
82
202
  label: (object) => object.name || object.fallbackName,
83
- icon: "ph--text-aa--regular",
84
- iconHue: "indigo",
203
+ icon: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).icon,
204
+ iconHue: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).hue ?? "white",
85
205
  blueprints: [
86
- markdown_blueprint_exports.Key
206
+ MarkdownBlueprint.key
87
207
  ],
88
208
  graphProps: {
89
209
  managesAutofocus: true
@@ -104,43 +224,424 @@ var MarkdownPlugin = Plugin.define(meta).pipe(Common.Plugin.addTranslationsModul
104
224
  ]), start, end);
105
225
  }
106
226
  },
107
- createObject: (props) => Effect.sync(() => Markdown_exports.make(props))
227
+ createObject: (props, options) => Effect.gen(function* () {
228
+ const object = Markdown3.make(props);
229
+ return yield* Operation.invoke(SpaceOperation.AddObject, {
230
+ object,
231
+ target: options.target,
232
+ hidden: true,
233
+ targetNodeId: options.targetNodeId
234
+ });
235
+ }),
236
+ scrollToAnchor: MarkdownOperation.ScrollToAnchor
108
237
  }
109
238
  }
110
- }), Common.Plugin.addSchemaModule({
239
+ }), AppPlugin.addOperationHandlerModule({
240
+ activate: OperationHandler
241
+ }), AppPlugin.addSchemaModule({
111
242
  schema: [
112
- Markdown_exports.Document,
243
+ Markdown3.Document,
113
244
  Text.Text
114
245
  ]
115
- }), Plugin.addModule({
116
- id: "on-space-created",
117
- activatesOn: SpaceEvents.SpaceCreated,
118
- activate: () => Effect.succeed(Capability7.contributes(SpaceCapabilities.OnCreateSpace, (params) => Operation.invoke(MarkdownOperation.OnCreateSpace, params)))
119
- }), Common.Plugin.addSurfaceModule({
246
+ }), AppPlugin.addSurfaceModule({
120
247
  activate: ReactSurface,
121
248
  activatesBefore: [
122
- MarkdownEvents.SetupExtensions
249
+ MarkdownEvents2.SetupExtensions
123
250
  ]
124
- }), Common.Plugin.addOperationResolverModule({
125
- activate: OperationResolver
251
+ }), AppPlugin.addTranslationsModule({
252
+ translations: [
253
+ ...translations,
254
+ ...editorTranslations2
255
+ ]
256
+ }), Plugin.addModule({
257
+ activatesOn: AppActivationEvents.SetupSettings,
258
+ activate: MarkdownSettings
126
259
  }), Plugin.addModule({
127
- activatesOn: Common.ActivationEvent.AppGraphReady,
260
+ id: "state",
261
+ // TODO(wittjosiah): Does not integrate with settings store.
262
+ // Should this be a different event?
263
+ // Should settings store be renamed to be more generic?
264
+ activatesOn: AppActivationEvents.SetupSettings,
265
+ activate: MarkdownState
266
+ }), Plugin.addModule({
267
+ activatesOn: AppActivationEvents.AppGraphReady,
128
268
  activate: AppGraphSerializer
129
269
  }), Plugin.addModule({
130
270
  // TODO(wittjosiah): More relevant event?
131
- activatesOn: Common.ActivationEvent.AppGraphReady,
271
+ activatesOn: AppActivationEvents.AppGraphReady,
132
272
  activate: AnchorSort
133
- }), Common.Plugin.addBlueprintDefinitionModule({
134
- activate: BlueprintDefinition
135
273
  }), Plugin.make);
274
+
275
+ // src/components/index.ts
276
+ import { lazy } from "react";
277
+
278
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
279
+ import { createContext } from "@radix-ui/react-context";
280
+ import React4, { useMemo as useMemo2, useState as useState2 } from "react";
281
+ import { createPortal as createPortal2 } from "react-dom";
282
+ import { Surface } from "@dxos/app-framework/ui";
283
+ import { Obj as Obj2 } from "@dxos/echo";
284
+ import { DXN } from "@dxos/keys";
285
+ import { useClient } from "@dxos/react-client";
286
+ import { EditorMenuProvider, useEditorMenu, useEditorToolbar } from "@dxos/react-ui-editor";
287
+ import { composable as composable2, composableProps as composableProps2 } from "@dxos/ui-theme";
288
+ import { isNonNullable } from "@dxos/util";
289
+ import { useEditorMenuOptions, useExtensions } from "#hooks";
290
+
291
+ // src/components/MarkdownEditor/MarkdownEditorContent.tsx
292
+ import { RegistryContext } from "@effect-atom/atom-react";
293
+ import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from "react";
294
+ import { useCapabilities } from "@dxos/app-framework/ui";
295
+ import { useThemeContext, useTranslation } from "@dxos/react-ui";
296
+ import { useTextEditor } from "@dxos/react-ui-editor";
297
+ import { compactSlots, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, documentSlots, formattingListener, processEditorPayload, editorClassNames } from "@dxos/ui-editor";
298
+ import { mx } from "@dxos/ui-theme";
299
+ import { isTruthy } from "@dxos/util";
300
+ import { meta as meta4 } from "#meta";
301
+ import { MarkdownCapabilities as MarkdownCapabilities2 } from "#types";
302
+ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attendableId, role, compact, viewMode, initialValue, editorStateStore, toolbarState, extensions, slots, onFileUpload }, forwardedRef) => {
303
+ const { t } = useTranslation(meta4.id);
304
+ const { themeMode } = useThemeContext();
305
+ const registry = useContext(RegistryContext);
306
+ const updateToolbarState = useCallback((formatting) => {
307
+ if (toolbarState) {
308
+ registry.set(toolbarState, {
309
+ ...registry.get(toolbarState),
310
+ ...formatting
311
+ });
312
+ }
313
+ }, [
314
+ registry,
315
+ toolbarState
316
+ ]);
317
+ const { scrollTo, selection } = useMemo(() => editorStateStore?.getState(id) ?? {}, [
318
+ id
319
+ ]);
320
+ const { parentRef, view: editorView, focusAttributes } = useTextEditor(() => ({
321
+ ...role !== "section" && {
322
+ id,
323
+ scrollTo,
324
+ selection,
325
+ selectionEnd: true
326
+ },
327
+ initialValue,
328
+ extensions: [
329
+ createBasicExtensions({
330
+ readOnly: viewMode === "readonly",
331
+ placeholder: t("editor.placeholder"),
332
+ scrollPastEnd: !compact,
333
+ search: true
334
+ }),
335
+ createThemeExtensions({
336
+ themeMode,
337
+ slots: slots ?? (compact ? compactSlots : documentSlots),
338
+ syntaxHighlighting: true
339
+ }),
340
+ createMarkdownExtensions(),
341
+ toolbarState && formattingListener(updateToolbarState),
342
+ role !== "section" && onFileUpload && dropFile({
343
+ // TODO(wittjosiah): Factor out to file uploader plugin.
344
+ onDrop: async (view, { files }) => {
345
+ const file = files[0];
346
+ const info = file && onFileUpload ? await onFileUpload(file) : void 0;
347
+ if (info) {
348
+ processEditorPayload(view, {
349
+ type: "image",
350
+ data: info.url
351
+ });
352
+ }
353
+ }
354
+ }),
355
+ extensions
356
+ ].filter(isTruthy)
357
+ }), [
358
+ id,
359
+ viewMode,
360
+ themeMode,
361
+ extensions
362
+ ]);
363
+ useImperativeHandle(forwardedRef, () => editorView, [
364
+ editorView
365
+ ]);
366
+ const [editorViewRegistry] = useCapabilities(MarkdownCapabilities2.EditorViews);
367
+ useEffect(() => {
368
+ if (editorView && editorViewRegistry) {
369
+ editorViewRegistry.register(attendableId ?? id, editorView, id);
370
+ return () => editorViewRegistry.unregister(attendableId ?? id);
371
+ }
372
+ }, [
373
+ editorView,
374
+ editorViewRegistry,
375
+ attendableId,
376
+ id
377
+ ]);
378
+ useTest(editorView);
379
+ return /* @__PURE__ */ React.createElement("div", {
380
+ ...focusAttributes,
381
+ className: mx(editorClassNames(role), classNames),
382
+ role: "none",
383
+ "data-testid": "composer.markdownRoot",
384
+ "data-popover-collision-boundary": true,
385
+ ref: parentRef
386
+ });
387
+ });
388
+ var useTest = (view) => {
389
+ useEffect(() => {
390
+ const composer = window.composer;
391
+ if (composer) {
392
+ composer.editorView = view;
393
+ }
394
+ }, [
395
+ view
396
+ ]);
397
+ };
398
+
399
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
400
+ import React3, { useCallback as useCallback2, useState } from "react";
401
+ import { invariant } from "@dxos/invariant";
402
+ import { EditorToolbar } from "@dxos/react-ui-editor";
403
+
404
+ // src/components/MarkdownEditor/FileUpload.tsx
405
+ import React2, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
406
+ import { createPortal } from "react-dom";
407
+ import { useDropzone } from "react-dropzone";
408
+ import { addLink } from "@dxos/ui-editor";
409
+ var IMAGE_FILES = [
410
+ ".jpg",
411
+ ".jpeg",
412
+ ".png",
413
+ ".gif"
414
+ ];
415
+ var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forwardedRef) => {
416
+ const { acceptedFiles, open, inputRef } = useDropzone({
417
+ disabled: !onFileUpload,
418
+ multiple: false,
419
+ noDrag: true,
420
+ accept: {
421
+ "image/*": IMAGE_FILES
422
+ }
423
+ });
424
+ useImperativeHandle2(forwardedRef, () => open, []);
425
+ useEffect2(() => {
426
+ if (editorView && acceptedFiles.length && onFileUpload) {
427
+ requestAnimationFrame(async () => {
428
+ const f = acceptedFiles[0];
429
+ const file = new File([
430
+ f
431
+ ], f.name, {
432
+ type: f.type,
433
+ lastModified: f.lastModified
434
+ });
435
+ const info = await onFileUpload(file);
436
+ if (info) {
437
+ addLink({
438
+ url: info.url,
439
+ image: true
440
+ })(editorView);
441
+ }
442
+ });
443
+ }
444
+ }, [
445
+ editorView,
446
+ acceptedFiles,
447
+ onFileUpload
448
+ ]);
449
+ if (!onFileUpload) {
450
+ return null;
451
+ }
452
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ createPortal(/* @__PURE__ */ React2.createElement("input", {
453
+ ref: inputRef
454
+ }), document.body), " ");
455
+ });
456
+
457
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
458
+ import { composable, composableProps } from "@dxos/ui-theme";
459
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx";
460
+ var MarkdownEditorToolbar = composable(({ id, role, state, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {
461
+ const { className, ...rest } = composableProps(props);
462
+ const [upload, setUpload] = useState(null);
463
+ const uploadRef = useCallback2((next) => setUpload(() => next), []);
464
+ const getView = useCallback2(() => {
465
+ invariant(editorView, void 0, {
466
+ F: __dxlog_file,
467
+ L: 31,
468
+ S: void 0,
469
+ A: [
470
+ "editorView",
471
+ ""
472
+ ]
473
+ });
474
+ return editorView;
475
+ }, [
476
+ editorView
477
+ ]);
478
+ if (!editorView) {
479
+ return /* @__PURE__ */ React3.createElement("div", {
480
+ className,
481
+ ...rest,
482
+ ref: forwardedRef
483
+ });
484
+ }
485
+ return /* @__PURE__ */ React3.createElement("div", {
486
+ role: "none",
487
+ className: "contents",
488
+ ref: forwardedRef
489
+ }, /* @__PURE__ */ React3.createElement(EditorToolbar, {
490
+ ...rest,
491
+ classNames: className,
492
+ attendableId: id,
493
+ role,
494
+ state,
495
+ customActions,
496
+ getView,
497
+ onAction,
498
+ onImageUpload: upload ?? void 0,
499
+ onViewModeChange
500
+ }), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
501
+ ref: uploadRef,
502
+ editorView,
503
+ onFileUpload
504
+ }));
505
+ });
506
+
507
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
508
+ var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
509
+ var MarkdownEditorRoot = ({ children, id, attendableId, object, settings, compact, viewMode, selectionManager, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, ...props }) => {
510
+ const [editorView, setEditorView] = useState2();
511
+ const [previewBlocks, setPreviewBlocks] = useState2([]);
512
+ const previewOptions = useMemo2(() => ({
513
+ db: Obj2.isObject(object) ? Obj2.getDatabase(object) : void 0,
514
+ addBlockContainer: (block) => {
515
+ setPreviewBlocks((prev) => [
516
+ ...prev,
517
+ block
518
+ ]);
519
+ },
520
+ removeBlockContainer: ({ link }) => {
521
+ setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
522
+ }
523
+ }), [
524
+ object
525
+ ]);
526
+ const toolbarState = useEditorToolbar({
527
+ viewMode
528
+ });
529
+ const menuOptions = useEditorMenuOptions({
530
+ editorView,
531
+ slashCommandGroups,
532
+ onLinkQuery
533
+ });
534
+ const { extension: menuExtension, ...menuProps } = useEditorMenu(menuOptions);
535
+ const coreExtensions = useExtensions({
536
+ id,
537
+ object,
538
+ compact,
539
+ viewMode,
540
+ selectionManager,
541
+ editorStateStore,
542
+ previewOptions,
543
+ settings,
544
+ onSelectObject
545
+ });
546
+ const extensions = useMemo2(() => [
547
+ coreExtensions,
548
+ menuExtension,
549
+ extensionsProp
550
+ ].filter(isNonNullable), [
551
+ coreExtensions,
552
+ menuExtension,
553
+ extensionsProp
554
+ ]);
555
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorContextProvider, {
556
+ id,
557
+ attendableId,
558
+ compact,
559
+ editorView,
560
+ setEditorView,
561
+ extensions,
562
+ previewBlocks,
563
+ toolbarState,
564
+ popoverMenu: menuProps,
565
+ viewMode,
566
+ ...props
567
+ }, children);
568
+ };
569
+ MarkdownEditorRoot.displayName = "MarkdownEditor.Root";
570
+ var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
571
+ var MarkdownEditorContent2 = composable2(({ ...props }, _forwardedRef) => {
572
+ const { id, attendableId, compact, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
573
+ return /* @__PURE__ */ React4.createElement(EditorMenuProvider, {
574
+ view: editorView,
575
+ groups: groupsRef.current,
576
+ ...menuProps
577
+ }, /* @__PURE__ */ React4.createElement(MarkdownEditorContent, {
578
+ ...composableProps2(props),
579
+ id,
580
+ attendableId,
581
+ compact,
582
+ viewMode,
583
+ toolbarState,
584
+ extensions,
585
+ ref: setEditorView
586
+ }));
587
+ });
588
+ MarkdownEditorContent2.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
589
+ var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
590
+ var MarkdownEditorToolbar2 = (props) => {
591
+ const { id, attendableId, editorView, toolbarState, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
592
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
593
+ ...props,
594
+ id: attendableId ?? id,
595
+ editorView,
596
+ state: toolbarState,
597
+ onAction,
598
+ onFileUpload,
599
+ onViewModeChange
600
+ });
601
+ };
602
+ MarkdownEditorToolbar2.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
603
+ var MARKDOWN_EDITOR_BLOCKS_NAME = "MarkdownEditor.Blocks";
604
+ var MarkdownEditorBlocks = (_props) => {
605
+ const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
606
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React4.createElement(PreviewBlock, {
607
+ key: link.dxn,
608
+ link,
609
+ el
610
+ })));
611
+ };
612
+ MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
613
+ var PreviewBlock = ({ el, link }) => {
614
+ const client = useClient();
615
+ const dxn = DXN.parse(link.dxn);
616
+ const subject = client.graph.makeRef(dxn).target;
617
+ const data = useMemo2(() => ({
618
+ subject
619
+ }), [
620
+ subject
621
+ ]);
622
+ return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
623
+ role: "card--content",
624
+ data,
625
+ limit: 1
626
+ }), el);
627
+ };
628
+ var MarkdownEditor = {
629
+ Root: MarkdownEditorRoot,
630
+ Content: MarkdownEditorContent2,
631
+ Toolbar: MarkdownEditorToolbar2,
632
+ Blocks: MarkdownEditorBlocks
633
+ };
634
+
635
+ // src/components/index.ts
636
+ var MarkdownSettings2 = lazy(() => import("./MarkdownSettings-5AD3X3II.mjs"));
136
637
  export {
137
638
  Markdown_exports as Markdown,
138
- MarkdownAction_exports as MarkdownAction,
139
639
  MarkdownCapabilities,
640
+ MarkdownEditor,
140
641
  MarkdownEvents,
141
- MarkdownOperation,
142
642
  MarkdownPlugin,
143
643
  MarkdownStateSchema,
644
+ Settings_exports as Settings,
144
645
  getContentSnippet,
145
646
  getFallbackName,
146
647
  isEditorModel,