@dxos/plugin-markdown 0.8.4-main.9735255 → 0.8.4-main.9be5663bfe

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