@dxos/plugin-markdown 0.8.4-main.ae835ea → 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 (357) 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 +51 -0
  4. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  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 +39 -0
  11. package/dist/lib/browser/cli/index.mjs.map +7 -0
  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 +632 -153
  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 +11 -5
  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 +52 -0
  33. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  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 +40 -0
  40. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  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 +632 -153
  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 +11 -5
  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 +2 -1
  60. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  61. package/dist/types/src/blueprints/index.d.ts +2 -0
  62. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  63. package/dist/types/src/blueprints/markdown-blueprint.d.ts +4 -0
  64. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
  65. package/dist/types/src/capabilities/anchor-sort.d.ts +4 -4
  66. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/app-graph-serializer.d.ts +3 -2
  68. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/artifact-definition.d.ts +3 -1
  70. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -4
  72. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/index.d.ts +27 -18
  74. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/node.d.ts +4 -0
  76. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  77. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  78. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  80. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/settings.d.ts +22 -2
  82. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/state.d.ts +4 -9
  84. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  85. package/dist/types/src/cli/index.d.ts +2 -0
  86. package/dist/types/src/cli/index.d.ts.map +1 -0
  87. package/dist/types/src/cli/plugin.d.ts +3 -0
  88. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  89. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +1 -1
  90. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  91. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +19 -13
  92. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  93. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +2 -2
  94. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +20 -14
  96. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  97. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +10 -5
  98. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  99. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -4
  100. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  101. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +138 -0
  102. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -0
  103. package/dist/types/src/components/MarkdownSettings/index.d.ts +2 -1
  104. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -1
  105. package/dist/types/src/components/index.d.ts +3 -5
  106. package/dist/types/src/components/index.d.ts.map +1 -1
  107. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts +8 -0
  108. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  109. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +9 -0
  110. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  111. package/dist/types/src/{components → containers}/MarkdownCard/index.d.ts +0 -1
  112. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
  113. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +15 -0
  114. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
  115. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts +31 -0
  116. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -0
  117. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +99 -0
  118. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -0
  119. package/dist/types/src/containers/MarkdownContainer/index.d.ts +3 -0
  120. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +1 -0
  121. package/dist/types/src/containers/index.d.ts +5 -0
  122. package/dist/types/src/containers/index.d.ts.map +1 -0
  123. package/dist/types/src/hooks/index.d.ts +1 -2
  124. package/dist/types/src/hooks/index.d.ts.map +1 -1
  125. package/dist/types/src/hooks/useEditorMenuOptions.d.ts +9 -0
  126. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -0
  127. package/dist/types/src/hooks/useExtensions.d.ts +10 -8
  128. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  129. package/dist/types/src/hooks/useLinkQuery.d.ts +3 -3
  130. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  131. package/dist/types/src/index.d.ts +2 -2
  132. package/dist/types/src/index.d.ts.map +1 -1
  133. package/dist/types/src/meta.d.ts +2 -2
  134. package/dist/types/src/meta.d.ts.map +1 -1
  135. package/dist/types/src/operations/create-markdown.d.ts +5 -0
  136. package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
  137. package/dist/types/src/operations/create.d.ts +5 -0
  138. package/dist/types/src/operations/create.d.ts.map +1 -0
  139. package/dist/types/src/operations/create.test.d.ts +2 -0
  140. package/dist/types/src/operations/create.test.d.ts.map +1 -0
  141. package/dist/types/src/operations/definitions.d.ts +64 -0
  142. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  143. package/dist/types/src/operations/index.d.ts +4 -0
  144. package/dist/types/src/operations/index.d.ts.map +1 -0
  145. package/dist/types/src/operations/open.d.ts +5 -0
  146. package/dist/types/src/operations/open.d.ts.map +1 -0
  147. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  148. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  149. package/dist/types/src/operations/set-view-mode.d.ts +5 -0
  150. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
  151. package/dist/types/src/operations/update.d.ts +5 -0
  152. package/dist/types/src/operations/update.d.ts.map +1 -0
  153. package/dist/types/src/operations/update.test.d.ts +2 -0
  154. package/dist/types/src/operations/update.test.d.ts.map +1 -0
  155. package/dist/types/src/testing.d.ts +6 -0
  156. package/dist/types/src/testing.d.ts.map +1 -0
  157. package/dist/types/src/translations.d.ts +75 -34
  158. package/dist/types/src/translations.d.ts.map +1 -1
  159. package/dist/types/src/types/Markdown.d.ts +30 -31
  160. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  161. package/dist/types/src/types/Settings.d.ts +16 -0
  162. package/dist/types/src/types/Settings.d.ts.map +1 -0
  163. package/dist/types/src/types/capabilities.d.ts +51 -0
  164. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  165. package/dist/types/src/types/events.d.ts +5 -0
  166. package/dist/types/src/types/events.d.ts.map +1 -0
  167. package/dist/types/src/types/index.d.ts +4 -2
  168. package/dist/types/src/types/index.d.ts.map +1 -1
  169. package/dist/types/src/types/types.d.ts +2 -2
  170. package/dist/types/src/types/types.d.ts.map +1 -1
  171. package/dist/types/src/util.d.ts +7 -4
  172. package/dist/types/src/util.d.ts.map +1 -1
  173. package/dist/types/src/util.test.d.ts +2 -0
  174. package/dist/types/src/util.test.d.ts.map +1 -0
  175. package/dist/types/tsconfig.tsbuildinfo +1 -1
  176. package/package.json +119 -59
  177. package/src/MarkdownPlugin.tsx +77 -103
  178. package/src/blueprints/index.ts +5 -0
  179. package/src/blueprints/markdown-blueprint.ts +44 -0
  180. package/src/capabilities/anchor-sort.ts +29 -22
  181. package/src/capabilities/app-graph-serializer.ts +51 -41
  182. package/src/capabilities/artifact-definition.ts +82 -84
  183. package/src/capabilities/blueprint-definition.ts +9 -31
  184. package/src/capabilities/index.ts +12 -12
  185. package/src/capabilities/node.ts +11 -0
  186. package/src/capabilities/operation-handler.ts +16 -0
  187. package/src/capabilities/react-surface.tsx +108 -80
  188. package/src/capabilities/settings.ts +30 -18
  189. package/src/capabilities/state.ts +41 -25
  190. package/src/cli/index.ts +5 -0
  191. package/src/cli/plugin.ts +40 -0
  192. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  193. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +39 -41
  194. package/src/components/MarkdownEditor/MarkdownEditor.tsx +87 -57
  195. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +69 -34
  196. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +48 -53
  197. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +40 -0
  198. package/src/components/MarkdownSettings/MarkdownSettings.tsx +116 -86
  199. package/src/components/MarkdownSettings/index.ts +3 -1
  200. package/src/components/index.ts +4 -7
  201. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +68 -0
  202. package/src/containers/MarkdownCard/MarkdownCard.tsx +57 -0
  203. package/src/{components → containers}/MarkdownCard/index.ts +0 -2
  204. package/src/containers/MarkdownCard/snippet.ts +75 -0
  205. package/src/containers/MarkdownContainer/MarkdownContainer.stories.tsx +133 -0
  206. package/src/containers/MarkdownContainer/MarkdownContainer.tsx +134 -0
  207. package/src/containers/MarkdownContainer/index.ts +6 -0
  208. package/src/containers/index.ts +10 -0
  209. package/src/hooks/index.ts +1 -2
  210. package/src/hooks/{usePopoverMenuOptions.ts → useEditorMenuOptions.ts} +20 -23
  211. package/src/hooks/useExtensions.tsx +100 -109
  212. package/src/hooks/useLinkQuery.ts +49 -23
  213. package/src/index.ts +3 -2
  214. package/src/meta.ts +3 -3
  215. package/src/operations/create-markdown.ts +21 -0
  216. package/src/operations/create.conversations.json +1 -0
  217. package/src/operations/create.test.ts +98 -0
  218. package/src/operations/create.ts +27 -0
  219. package/src/operations/definitions.ts +119 -0
  220. package/src/operations/index.ts +16 -0
  221. package/src/operations/open.ts +25 -0
  222. package/src/operations/scroll-to-anchor.ts +40 -0
  223. package/src/operations/set-view-mode.ts +25 -0
  224. package/src/operations/update.conversations.json +1 -0
  225. package/src/operations/update.test.ts +215 -0
  226. package/src/operations/update.ts +51 -0
  227. package/src/testing.ts +27 -0
  228. package/src/translations.ts +49 -34
  229. package/src/types/Markdown.ts +23 -31
  230. package/src/types/Settings.ts +28 -0
  231. package/src/types/capabilities.ts +50 -0
  232. package/src/types/events.ts +14 -0
  233. package/src/types/index.ts +5 -2
  234. package/src/types/types.ts +3 -2
  235. package/src/util.test.ts +44 -0
  236. package/src/util.tsx +80 -12
  237. package/dist/lib/browser/MarkdownCard-SLM6QZYC.mjs +0 -12
  238. package/dist/lib/browser/MarkdownContainer-UZFQC6XY.mjs +0 -15
  239. package/dist/lib/browser/anchor-sort-4XPPLMZS.mjs +0 -32
  240. package/dist/lib/browser/anchor-sort-4XPPLMZS.mjs.map +0 -7
  241. package/dist/lib/browser/app-graph-serializer-QQFV4K6P.mjs +0 -51
  242. package/dist/lib/browser/app-graph-serializer-QQFV4K6P.mjs.map +0 -7
  243. package/dist/lib/browser/blueprint-definition-BC5R3T72.mjs +0 -11
  244. package/dist/lib/browser/blueprint-definition-BC5R3T72.mjs.map +0 -7
  245. package/dist/lib/browser/chunk-2LLVTQCK.mjs +0 -51
  246. package/dist/lib/browser/chunk-2LLVTQCK.mjs.map +0 -7
  247. package/dist/lib/browser/chunk-3VILQLA4.mjs +0 -95
  248. package/dist/lib/browser/chunk-3VILQLA4.mjs.map +0 -7
  249. package/dist/lib/browser/chunk-5AYTOIUF.mjs +0 -822
  250. package/dist/lib/browser/chunk-5AYTOIUF.mjs.map +0 -7
  251. package/dist/lib/browser/chunk-A3CQYGCN.mjs +0 -56
  252. package/dist/lib/browser/chunk-A3CQYGCN.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-BQTYJOFB.mjs +0 -28
  254. package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +0 -7
  255. package/dist/lib/browser/chunk-GLEYXJX3.mjs +0 -22
  256. package/dist/lib/browser/chunk-GLEYXJX3.mjs.map +0 -7
  257. package/dist/lib/browser/chunk-IBCHVMZW.mjs +0 -16
  258. package/dist/lib/browser/chunk-IBCHVMZW.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-JAETS5LE.mjs +0 -106
  260. package/dist/lib/browser/chunk-JAETS5LE.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-UKTCPHLI.mjs +0 -79
  262. package/dist/lib/browser/chunk-UKTCPHLI.mjs.map +0 -7
  263. package/dist/lib/browser/intent-resolver-VQGMBNXZ.mjs +0 -62
  264. package/dist/lib/browser/intent-resolver-VQGMBNXZ.mjs.map +0 -7
  265. package/dist/lib/browser/react-surface-WOMJOPJE.mjs +0 -217
  266. package/dist/lib/browser/react-surface-WOMJOPJE.mjs.map +0 -7
  267. package/dist/lib/browser/settings-LBXJHVBU.mjs +0 -28
  268. package/dist/lib/browser/settings-LBXJHVBU.mjs.map +0 -7
  269. package/dist/lib/browser/state-BTUKVZHY.mjs +0 -37
  270. package/dist/lib/browser/state-BTUKVZHY.mjs.map +0 -7
  271. package/dist/lib/browser/toolkit-YPIVDB4A.mjs +0 -66
  272. package/dist/lib/browser/toolkit-YPIVDB4A.mjs.map +0 -7
  273. package/dist/lib/node-esm/MarkdownCard-MCWEFW4F.mjs +0 -13
  274. package/dist/lib/node-esm/MarkdownCard-MCWEFW4F.mjs.map +0 -7
  275. package/dist/lib/node-esm/MarkdownContainer-KAQOK7K5.mjs +0 -16
  276. package/dist/lib/node-esm/MarkdownContainer-KAQOK7K5.mjs.map +0 -7
  277. package/dist/lib/node-esm/anchor-sort-4SXYVYXT.mjs +0 -33
  278. package/dist/lib/node-esm/anchor-sort-4SXYVYXT.mjs.map +0 -7
  279. package/dist/lib/node-esm/app-graph-serializer-KBVRLQN2.mjs +0 -52
  280. package/dist/lib/node-esm/app-graph-serializer-KBVRLQN2.mjs.map +0 -7
  281. package/dist/lib/node-esm/blueprint-definition-FPNOTEYC.mjs +0 -12
  282. package/dist/lib/node-esm/blueprint-definition-FPNOTEYC.mjs.map +0 -7
  283. package/dist/lib/node-esm/chunk-2Q4WCKWT.mjs +0 -823
  284. package/dist/lib/node-esm/chunk-2Q4WCKWT.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-DOB2MJAX.mjs +0 -107
  286. package/dist/lib/node-esm/chunk-DOB2MJAX.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-GGKPPGWA.mjs +0 -24
  288. package/dist/lib/node-esm/chunk-GGKPPGWA.mjs.map +0 -7
  289. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs +0 -17
  290. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs.map +0 -7
  291. package/dist/lib/node-esm/chunk-JELROKGD.mjs +0 -80
  292. package/dist/lib/node-esm/chunk-JELROKGD.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-QH4MC5BE.mjs +0 -52
  294. package/dist/lib/node-esm/chunk-QH4MC5BE.mjs.map +0 -7
  295. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs +0 -29
  296. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +0 -7
  297. package/dist/lib/node-esm/chunk-SJ2QRGPM.mjs +0 -57
  298. package/dist/lib/node-esm/chunk-SJ2QRGPM.mjs.map +0 -7
  299. package/dist/lib/node-esm/chunk-YYSASY7X.mjs +0 -96
  300. package/dist/lib/node-esm/chunk-YYSASY7X.mjs.map +0 -7
  301. package/dist/lib/node-esm/intent-resolver-Q4XVI5EX.mjs +0 -63
  302. package/dist/lib/node-esm/intent-resolver-Q4XVI5EX.mjs.map +0 -7
  303. package/dist/lib/node-esm/react-surface-FAMZTAXK.mjs +0 -218
  304. package/dist/lib/node-esm/react-surface-FAMZTAXK.mjs.map +0 -7
  305. package/dist/lib/node-esm/settings-2YRA67H6.mjs +0 -29
  306. package/dist/lib/node-esm/settings-2YRA67H6.mjs.map +0 -7
  307. package/dist/lib/node-esm/state-K6EH7SRZ.mjs +0 -38
  308. package/dist/lib/node-esm/state-K6EH7SRZ.mjs.map +0 -7
  309. package/dist/lib/node-esm/toolkit-36BFLIR3.mjs +0 -67
  310. package/dist/lib/node-esm/toolkit-36BFLIR3.mjs.map +0 -7
  311. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  312. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  313. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  314. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  315. package/dist/types/src/capabilities/toolkit.d.ts +0 -20
  316. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  317. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +0 -7
  318. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
  319. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -9
  320. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
  321. package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
  322. package/dist/types/src/components/MarkdownContainer.d.ts +0 -14
  323. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  324. package/dist/types/src/components/MarkdownContainer.stories.d.ts +0 -58
  325. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
  326. package/dist/types/src/components/Suggestions.stories.d.ts +0 -11
  327. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  328. package/dist/types/src/events.d.ts +0 -4
  329. package/dist/types/src/events.d.ts.map +0 -1
  330. package/dist/types/src/functions/diff.d.ts +0 -6
  331. package/dist/types/src/functions/diff.d.ts.map +0 -1
  332. package/dist/types/src/functions/index.d.ts +0 -3
  333. package/dist/types/src/functions/index.d.ts.map +0 -1
  334. package/dist/types/src/functions/open.d.ts +0 -7
  335. package/dist/types/src/functions/open.d.ts.map +0 -1
  336. package/dist/types/src/hooks/usePopoverMenuOptions.d.ts +0 -9
  337. package/dist/types/src/hooks/usePopoverMenuOptions.d.ts.map +0 -1
  338. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  339. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  340. package/dist/types/src/types/MarkdownAction.d.ts +0 -34
  341. package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
  342. package/src/capabilities/capabilities.ts +0 -22
  343. package/src/capabilities/intent-resolver.ts +0 -58
  344. package/src/capabilities/toolkit.ts +0 -53
  345. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +0 -76
  346. package/src/components/MarkdownCard/MarkdownCard.tsx +0 -85
  347. package/src/components/MarkdownContainer.stories.tsx +0 -137
  348. package/src/components/MarkdownContainer.tsx +0 -121
  349. package/src/components/Suggestions.stories.tsx +0 -219
  350. package/src/events.ts +0 -11
  351. package/src/functions/diff.ts +0 -37
  352. package/src/functions/index.ts +0 -6
  353. package/src/functions/open.ts +0 -32
  354. package/src/hooks/useSelectCurrentThread.tsx +0 -56
  355. package/src/types/MarkdownAction.ts +0 -29
  356. /package/dist/lib/browser/{MarkdownCard-SLM6QZYC.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  357. /package/dist/lib/{browser/MarkdownContainer-UZFQC6XY.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
@@ -1,822 +0,0 @@
1
- import {
2
- MarkdownCapabilities
3
- } from "./chunk-IBCHVMZW.mjs";
4
- import {
5
- setFallbackName
6
- } from "./chunk-2LLVTQCK.mjs";
7
- import {
8
- Markdown_exports
9
- } from "./chunk-UKTCPHLI.mjs";
10
- import {
11
- meta
12
- } from "./chunk-BQTYJOFB.mjs";
13
-
14
- // src/components/MarkdownContainer.tsx
15
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
16
- import { Rx } from "@effect-rx/rx-react";
17
- import React6, { useMemo as useMemo7 } from "react";
18
- import { Capabilities as Capabilities2, useAppGraph, useCapabilities as useCapabilities2 } from "@dxos/app-framework";
19
- import { Obj as Obj3 } from "@dxos/echo";
20
- import { fullyQualifiedId as fullyQualifiedId2, getSpace as getSpace2 } from "@dxos/react-client/echo";
21
- import { StackItem } from "@dxos/react-ui-stack";
22
- import { DataType as DataType2 } from "@dxos/schema";
23
-
24
- // src/hooks/useExtensions.tsx
25
- import React, { useMemo } from "react";
26
- import { createRoot } from "react-dom/client";
27
- import { LayoutAction, createIntent, useIntentDispatcher } from "@dxos/app-framework";
28
- import { debounceAndThrottle } from "@dxos/async";
29
- import { Obj } from "@dxos/echo";
30
- import { invariant } from "@dxos/invariant";
31
- import { createDocAccessor, fullyQualifiedId } from "@dxos/react-client/echo";
32
- import { getSpace } from "@dxos/react-client/echo";
33
- import { useIdentity } from "@dxos/react-client/halo";
34
- import { Icon, ThemeProvider } from "@dxos/react-ui";
35
- import { Cursor, EditorView, InputModeExtensions, createDataExtensions, decorateMarkdown, documentId, folding, formattingKeymap, linkTooltip, listener, preview, selectionState, typewriter } from "@dxos/react-ui-editor";
36
- import { defaultTx } from "@dxos/react-ui-theme";
37
- import { DataType } from "@dxos/schema";
38
- import { isTruthy } from "@dxos/util";
39
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useExtensions.tsx";
40
- var useExtensions = ({ id, object, settings, selectionManager, viewMode, editorStateStore, previewOptions }) => {
41
- const { dispatchPromise: dispatch } = useIntentDispatcher();
42
- const identity = useIdentity();
43
- const space = getSpace(object);
44
- let target;
45
- if (Obj.instanceOf(Markdown_exports.Document, object)) {
46
- target = object.content.target;
47
- } else if (Obj.instanceOf(DataType.Text, object)) {
48
- target = object;
49
- }
50
- const baseExtensions = useMemo(() => createBaseExtensions({
51
- id,
52
- object,
53
- settings,
54
- selectionManager,
55
- viewMode,
56
- previewOptions,
57
- dispatch
58
- }), [
59
- id,
60
- object,
61
- viewMode,
62
- dispatch,
63
- previewOptions,
64
- settings,
65
- settings?.debug,
66
- settings?.editorInputMode,
67
- settings?.folding,
68
- settings?.numberedHeadings,
69
- settings?.typewriter,
70
- selectionManager
71
- ]);
72
- return useMemo(() => [
73
- // TODO(burdon): Pass this in?
74
- // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
75
- target && createDataExtensions({
76
- id,
77
- text: createDocAccessor(target, [
78
- "content"
79
- ]),
80
- space,
81
- identity
82
- }),
83
- // TODO(burdon): Reconcile with effect in parent.
84
- Obj.instanceOf(Markdown_exports.Document, object) && listener({
85
- onChange: ({ text }) => {
86
- setFallbackName(object, text);
87
- }
88
- }),
89
- baseExtensions,
90
- selectionState(editorStateStore)
91
- ].filter(isTruthy), [
92
- identity,
93
- space,
94
- id,
95
- object,
96
- target,
97
- baseExtensions
98
- ]);
99
- };
100
- var createBaseExtensions = ({ id, object, dispatch, settings, selectionManager, viewMode, previewOptions }) => {
101
- const extensions = [
102
- selectionManager && selectionChange(selectionManager),
103
- settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],
104
- settings?.folding && folding()
105
- ].filter(isTruthy);
106
- if (viewMode !== "source") {
107
- extensions.push(...[
108
- formattingKeymap(),
109
- decorateMarkdown({
110
- selectionChangeDelay: 100,
111
- numberedHeadings: settings?.numberedHeadings ? {
112
- from: 2
113
- } : void 0,
114
- // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
115
- // TODO(burdon): Create dx-tag.
116
- renderLinkButton: dispatch && (object || id) ? createLinkRenderer((id2) => {
117
- void dispatch(createIntent(LayoutAction.Open, {
118
- part: "main",
119
- subject: [
120
- id2
121
- ],
122
- options: {
123
- pivotId: object ? fullyQualifiedId(object) : id2
124
- }
125
- }));
126
- }) : void 0
127
- }),
128
- linkTooltip(renderLinkTooltip),
129
- preview(previewOptions)
130
- ]);
131
- }
132
- if (settings?.debug) {
133
- const items = settings.typewriter?.split(/[,\n]/) ?? "";
134
- if (items) {
135
- extensions.push(typewriter({
136
- items
137
- }));
138
- }
139
- }
140
- return extensions;
141
- };
142
- var selectionChange = (selectionManager) => {
143
- return EditorView.updateListener.of(debounceAndThrottle((update) => {
144
- if (update.selectionSet) {
145
- const id = update.state.facet(documentId);
146
- const cursorConverter = update.state.facet(Cursor.converter);
147
- const selection = update.state.selection;
148
- const ranges = selection.ranges.map((range) => ({
149
- from: cursorConverter.toCursor(range.from),
150
- to: cursorConverter.toCursor(range.to)
151
- })).filter(({ from, to }) => to > from);
152
- selectionManager.updateMultiRange(id, ranges);
153
- }
154
- }, 100));
155
- };
156
- var style = {
157
- hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
158
- icon: "inline-block leading-none mis-1 cursor-pointer"
159
- };
160
- var createLinkRenderer = (onSelectObject) => (el, { url }) => {
161
- const isInternal = url.startsWith("/") || // TODO(wittjosiah): This should probably be parsed out on paste?
162
- url.startsWith(window.location.origin);
163
- const options = isInternal ? {
164
- onClick: () => {
165
- const qualifiedId = url.split("/").at(-1);
166
- invariant(qualifiedId, "Invalid link format.", {
167
- F: __dxlog_file,
168
- L: 233,
169
- S: void 0,
170
- A: [
171
- "qualifiedId",
172
- "'Invalid link format.'"
173
- ]
174
- });
175
- onSelectObject(qualifiedId);
176
- }
177
- } : {
178
- href: url,
179
- rel: "noreferrer",
180
- target: "_blank"
181
- };
182
- renderRoot(el, /* @__PURE__ */ React.createElement("a", {
183
- ...options,
184
- className: style.hover
185
- }, /* @__PURE__ */ React.createElement(Icon, {
186
- icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
187
- size: 4,
188
- classNames: style.icon
189
- })));
190
- };
191
- var renderLinkTooltip = (el, { url }) => {
192
- const web = new URL(url);
193
- renderRoot(el, /* @__PURE__ */ React.createElement("a", {
194
- href: url,
195
- rel: "noreferrer",
196
- target: "_blank",
197
- className: style.hover
198
- }, web.origin, /* @__PURE__ */ React.createElement(Icon, {
199
- icon: "ph--arrow-square-out--bold",
200
- size: 4,
201
- classNames: style.icon
202
- })));
203
- };
204
- var renderRoot = (root, node) => {
205
- createRoot(root).render(/* @__PURE__ */ React.createElement(ThemeProvider, {
206
- tx: defaultTx
207
- }, node));
208
- return root;
209
- };
210
-
211
- // src/hooks/useLinkQuery.ts
212
- import { useCallback, useMemo as useMemo2 } from "react";
213
- import { Capabilities, useCapabilities, usePluginManager } from "@dxos/app-framework";
214
- import { Filter, Obj as Obj2, Query, Type } from "@dxos/echo";
215
- import { ClientCapabilities } from "@dxos/plugin-client";
216
- import { SpaceCapabilities } from "@dxos/plugin-space";
217
- import { toLocalizedString, useTranslation } from "@dxos/react-ui";
218
- import { insertAtCursor, insertAtLineStart } from "@dxos/react-ui-editor";
219
- var useLinkQuery = (space) => {
220
- const { t } = useTranslation();
221
- const manager = usePluginManager();
222
- const resolve = useCallback((typename) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {}, [
223
- manager
224
- ]);
225
- const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
226
- const schemaWhiteList = useCapabilities(ClientCapabilities.SchemaWhiteList);
227
- const filter = useMemo2(() => Filter.or(...objectForms.map((form) => Filter.type(form.objectSchema)), ...schemaWhiteList.flat().map((schema) => Filter.typename(Type.getTypename(schema)))), [
228
- objectForms,
229
- schemaWhiteList
230
- ]);
231
- const handleLinkQuery = useCallback(async (query) => {
232
- const name = query?.startsWith("@") ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? "";
233
- const results = await space?.db.query(Query.select(filter)).run();
234
- const getLabel = (object) => {
235
- const label = Obj2.getLabel(object);
236
- if (label) {
237
- return label;
238
- }
239
- const type = Obj2.getTypename(object);
240
- const metadata = resolve(type);
241
- return metadata.label?.(object) || [
242
- "object name placeholder",
243
- {
244
- ns: type,
245
- default: "New object"
246
- }
247
- ];
248
- };
249
- const items = results?.objects.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name)).map((object) => {
250
- const metadata = resolve(Obj2.getTypename(object));
251
- const label = toLocalizedString(getLabel(object), t);
252
- return {
253
- id: object.id,
254
- label,
255
- icon: metadata.icon,
256
- onSelect: (view, head) => {
257
- const link = `[${label}](${Obj2.getDXN(object)})`;
258
- if (query?.startsWith("@")) {
259
- insertAtLineStart(view, head, `!${link}
260
- `);
261
- } else {
262
- insertAtCursor(view, head, `${link} `);
263
- }
264
- }
265
- };
266
- }) ?? [];
267
- return [
268
- {
269
- id: "echo",
270
- items
271
- }
272
- ];
273
- }, [
274
- space,
275
- filter,
276
- resolve
277
- ]);
278
- return handleLinkQuery;
279
- };
280
-
281
- // src/hooks/usePopoverMenuOptions.ts
282
- import { useCallback as useCallback2, useMemo as useMemo3, useRef } from "react";
283
- import { Domino, toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
284
- import { filterMenuGroups, formattingCommands, linkSlashCommands } from "@dxos/react-ui-editor";
285
- var usePopoverMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) => {
286
- const { t } = useTranslation2(meta.id);
287
- const getMenu = useCallback2(({ text, trigger }) => {
288
- switch (trigger) {
289
- case "@": {
290
- return onLinkQuery?.(text) ?? [];
291
- }
292
- case "/":
293
- default: {
294
- return filterMenuGroups([
295
- formattingCommands,
296
- linkSlashCommands,
297
- ...slashCommandGroups ?? []
298
- ], (item) => text ? toLocalizedString2(item.label, t).toLowerCase().includes(text.toLowerCase()) : true);
299
- }
300
- }
301
- }, [
302
- slashCommandGroups,
303
- onLinkQuery
304
- ]);
305
- const viewRef = useRef(editorView);
306
- return useMemo3(() => {
307
- const trigger = onLinkQuery ? [
308
- "/",
309
- "@"
310
- ] : [
311
- "/"
312
- ];
313
- const placeholder = {
314
- delay: 3e3,
315
- content: () => Domino.of("div").children(Domino.of("span").text("Press"), ...trigger.map((text) => Domino.of("span").classNames("mx-1 px-1.5 pt-[1px] pb-[2px] border border-separator rounded-sm").text(text)), Domino.of("span").text("for commands.")).build()
316
- };
317
- return {
318
- viewRef,
319
- getMenu,
320
- trigger,
321
- placeholder
322
- };
323
- }, [
324
- getMenu,
325
- onLinkQuery
326
- ]);
327
- };
328
-
329
- // src/hooks/useSelectCurrentThread.tsx
330
- import { EditorView as EditorView2 } from "@codemirror/view";
331
- import * as Schema from "effect/Schema";
332
- import { useMemo as useMemo4 } from "react";
333
- import { LayoutAction as LayoutAction2, createResolver, useIntentResolver } from "@dxos/app-framework";
334
- import { invariant as invariant2 } from "@dxos/invariant";
335
- import { Cursor as Cursor2, setSelection } from "@dxos/react-ui-editor";
336
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
337
- var useSelectCurrentThread = (editorView, documentId2) => {
338
- const scrollIntoViewResolver = useMemo4(() => createResolver({
339
- intent: LayoutAction2.UpdateLayout,
340
- position: "hoist",
341
- filter: (data) => {
342
- if (!Schema.is(LayoutAction2.ScrollIntoView.fields.input)(data)) {
343
- return false;
344
- }
345
- return !!editorView && data.subject === documentId2 && !!data.options?.cursor;
346
- },
347
- resolve: ({ options: { cursor } }) => {
348
- invariant2(editorView, "Editor view is not defined.", {
349
- F: __dxlog_file2,
350
- L: 32,
351
- S: void 0,
352
- A: [
353
- "editorView",
354
- "'Editor view is not defined.'"
355
- ]
356
- });
357
- const range = Cursor2.getRangeFromCursor(editorView.state, cursor);
358
- if (range) {
359
- const selection = editorView.state.selection.main.from !== range.from ? {
360
- anchor: range.from
361
- } : void 0;
362
- const effects = [
363
- // NOTE: This does not use the DOM scrollIntoView function.
364
- EditorView2.scrollIntoView(range.from, {
365
- y: "start",
366
- yMargin: 96
367
- })
368
- ];
369
- if (selection) {
370
- effects.push(setSelection.of({
371
- current: documentId2
372
- }));
373
- }
374
- editorView.dispatch({
375
- effects,
376
- selection: selection ? {
377
- anchor: range.from
378
- } : void 0
379
- });
380
- }
381
- }
382
- }), [
383
- documentId2,
384
- editorView
385
- ]);
386
- useIntentResolver(meta.id, scrollIntoViewResolver);
387
- };
388
-
389
- // src/components/MarkdownEditor/MarkdownEditor.tsx
390
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
391
- import { createContext } from "@radix-ui/react-context";
392
- import React5, { useMemo as useMemo6, useState as useState2 } from "react";
393
- import { createPortal as createPortal2 } from "react-dom";
394
- import { Surface } from "@dxos/app-framework";
395
- import { DXN } from "@dxos/keys";
396
- import { useClient } from "@dxos/react-client";
397
- import { PopoverMenuProvider, useEditorToolbarState, usePopoverMenu } from "@dxos/react-ui-editor";
398
- import { isNonNullable } from "@dxos/util";
399
-
400
- // src/components/MarkdownEditor/MarkdownEditorContent.tsx
401
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
402
- import React2, { forwardRef, useEffect, useImperativeHandle, useMemo as useMemo5 } from "react";
403
- import { useDynamicRef, useThemeContext, useTranslation as useTranslation3 } from "@dxos/react-ui";
404
- import { createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorGutter, editorSlots, formattingListener, processEditorPayload, stackItemContentEditorClassNames, useTextEditor } from "@dxos/react-ui-editor";
405
- import { isTruthy as isTruthy2 } from "@dxos/util";
406
- var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ id, role, initialValue, editorStateStore, toolbarState, extensions, viewMode, scrollPastEnd, onFileUpload }, forwardedRef) => {
407
- var _effect = _useSignals();
408
- try {
409
- const { t } = useTranslation3(meta.id);
410
- const { themeMode } = useThemeContext();
411
- const toolbarStateRef = useDynamicRef(toolbarState);
412
- const { scrollTo, selection } = useMemo5(() => editorStateStore?.getState(id) ?? {}, [
413
- id
414
- ]);
415
- const { parentRef, view: editorView, focusAttributes } = useTextEditor(() => ({
416
- ...role !== "section" && {
417
- id,
418
- scrollTo,
419
- selection,
420
- // TODO(wittjosiah): Autofocus based on layout is racy.
421
- // autoFocus: layoutPlugin?.provides.layout ? layoutPlugin?.provides.layout.scrollIntoView === id : true,
422
- moveToEndOfLine: true
423
- },
424
- initialValue,
425
- extensions: [
426
- createBasicExtensions({
427
- readOnly: viewMode === "readonly",
428
- placeholder: t("editor placeholder"),
429
- scrollPastEnd: scrollPastEnd && role !== "section",
430
- search: true
431
- }),
432
- createThemeExtensions({
433
- themeMode,
434
- slots: editorSlots,
435
- syntaxHighlighting: true
436
- }),
437
- createMarkdownExtensions(),
438
- formattingListener(() => toolbarStateRef.current),
439
- editorGutter,
440
- role !== "section" && onFileUpload && dropFile({
441
- // TODO(wittjosiah): Factor out to file uploader plugin.
442
- onDrop: async (view, { files }) => {
443
- const file = files[0];
444
- const info = file && onFileUpload ? await onFileUpload(file) : void 0;
445
- if (info) {
446
- processEditorPayload(view, {
447
- type: "image",
448
- data: info.url
449
- });
450
- }
451
- }
452
- }),
453
- extensions
454
- ].filter(isTruthy2)
455
- }), [
456
- id,
457
- viewMode,
458
- themeMode,
459
- extensions
460
- ]);
461
- useImperativeHandle(forwardedRef, () => editorView, [
462
- editorView
463
- ]);
464
- useSelectCurrentThread(editorView, id);
465
- useTest(editorView);
466
- return /* @__PURE__ */ React2.createElement("div", {
467
- role: "none",
468
- ref: parentRef,
469
- "data-testid": "composer.markdownRoot",
470
- className: stackItemContentEditorClassNames(role),
471
- "data-popover-collision-boundary": true,
472
- ...focusAttributes
473
- });
474
- } finally {
475
- _effect.f();
476
- }
477
- });
478
- var useTest = (view) => {
479
- useEffect(() => {
480
- const composer = window.composer;
481
- if (composer) {
482
- composer.editorView = view;
483
- }
484
- }, [
485
- view
486
- ]);
487
- };
488
-
489
- // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
490
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
491
- import React4, { useCallback as useCallback3, useState } from "react";
492
- import { invariant as invariant3 } from "@dxos/invariant";
493
- import { EditorToolbar } from "@dxos/react-ui-editor";
494
-
495
- // src/components/MarkdownEditor/FileUpload.tsx
496
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
497
- import React3, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
498
- import { createPortal } from "react-dom";
499
- import { useDropzone } from "react-dropzone";
500
- import { addLink } from "@dxos/react-ui-editor";
501
- var IMAGE_FILES = [
502
- ".jpg",
503
- ".jpeg",
504
- ".png",
505
- ".gif"
506
- ];
507
- var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forwardedRef) => {
508
- var _effect = _useSignals2();
509
- try {
510
- const { acceptedFiles, open, inputRef } = useDropzone({
511
- disabled: !onFileUpload,
512
- multiple: false,
513
- noDrag: true,
514
- accept: {
515
- "image/*": IMAGE_FILES
516
- }
517
- });
518
- useImperativeHandle2(forwardedRef, () => open, []);
519
- useEffect2(() => {
520
- if (editorView && acceptedFiles.length && onFileUpload) {
521
- requestAnimationFrame(async () => {
522
- const f = acceptedFiles[0];
523
- const file = new File([
524
- f
525
- ], f.name, {
526
- type: f.type,
527
- lastModified: f.lastModified
528
- });
529
- const info = await onFileUpload(file);
530
- if (info) {
531
- addLink({
532
- url: info.url,
533
- image: true
534
- })(editorView);
535
- }
536
- });
537
- }
538
- }, [
539
- editorView,
540
- acceptedFiles,
541
- onFileUpload
542
- ]);
543
- if (!onFileUpload) {
544
- return null;
545
- }
546
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ createPortal(/* @__PURE__ */ React3.createElement("input", {
547
- ref: inputRef
548
- }), document.body), " ");
549
- } finally {
550
- _effect.f();
551
- }
552
- });
553
-
554
- // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
555
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx";
556
- var MarkdownEditorToolbar = ({ classNames, id, role, state, editorView, customActions, onFileUpload, onViewModeChange }) => {
557
- var _effect = _useSignals3();
558
- try {
559
- const [upload, setUpload] = useState(null);
560
- const handleRef = useCallback3((next) => setUpload(() => next), []);
561
- const handleViewModeChange = useCallback3((mode) => onViewModeChange?.(mode), [
562
- onViewModeChange
563
- ]);
564
- const getView = useCallback3(() => {
565
- invariant3(editorView, void 0, {
566
- F: __dxlog_file3,
567
- L: 39,
568
- S: void 0,
569
- A: [
570
- "editorView",
571
- ""
572
- ]
573
- });
574
- return editorView;
575
- }, [
576
- editorView
577
- ]);
578
- if (!editorView) {
579
- return /* @__PURE__ */ React4.createElement("div", null);
580
- }
581
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(EditorToolbar, {
582
- classNames,
583
- attendableId: id,
584
- role,
585
- state,
586
- customActions,
587
- getView,
588
- onImageUpload: upload ?? void 0,
589
- onViewModeChange: handleViewModeChange
590
- }), onFileUpload && /* @__PURE__ */ React4.createElement(FileUpload, {
591
- ref: handleRef,
592
- editorView,
593
- onFileUpload
594
- }));
595
- } finally {
596
- _effect.f();
597
- }
598
- };
599
-
600
- // src/components/MarkdownEditor/MarkdownEditor.tsx
601
- var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
602
- var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionManager, settings, viewMode, extensions: extensionsParam, slashCommandGroups, onLinkQuery, ...props }) => {
603
- var _effect = _useSignals4();
604
- try {
605
- const [editorView, setEditorView] = useState2();
606
- const [previewBlocks, setPreviewBlocks] = useState2([]);
607
- const previewOptions = useMemo6(() => ({
608
- addBlockContainer: (block) => {
609
- setPreviewBlocks((prev) => [
610
- ...prev,
611
- block
612
- ]);
613
- },
614
- removeBlockContainer: ({ link }) => {
615
- setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.ref !== link.ref));
616
- }
617
- }), []);
618
- const toolbarState = useEditorToolbarState({
619
- viewMode
620
- });
621
- const menuOptions = usePopoverMenuOptions({
622
- editorView,
623
- slashCommandGroups,
624
- onLinkQuery
625
- });
626
- const { extension: menuExtension, ...menuProps } = usePopoverMenu(menuOptions);
627
- const coreExtensions = useExtensions({
628
- id,
629
- object,
630
- editorStateStore,
631
- previewOptions,
632
- selectionManager,
633
- settings,
634
- viewMode
635
- });
636
- const extensions = useMemo6(() => [
637
- coreExtensions,
638
- menuExtension,
639
- extensionsParam
640
- ].filter(isNonNullable), [
641
- coreExtensions,
642
- menuExtension,
643
- extensionsParam
644
- ]);
645
- return /* @__PURE__ */ React5.createElement(MarkdownEditorContextProvider, {
646
- id,
647
- editorView,
648
- setEditorView,
649
- extensions,
650
- previewBlocks,
651
- toolbarState,
652
- popoverMenu: menuProps,
653
- viewMode,
654
- ...props
655
- }, children);
656
- } finally {
657
- _effect.f();
658
- }
659
- };
660
- MarkdownEditorRoot.displayName = "MarkdownEditor.Root";
661
- var MarkdownEditorContent2 = (props) => {
662
- var _effect = _useSignals4();
663
- try {
664
- const { id, extensions, editorView, setEditorView, toolbarState, viewMode, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(MarkdownEditorContent2.displayName);
665
- return /* @__PURE__ */ React5.createElement(PopoverMenuProvider, {
666
- view: editorView,
667
- groups: groupsRef.current,
668
- ...menuProps
669
- }, /* @__PURE__ */ React5.createElement(MarkdownEditorContent, {
670
- ...props,
671
- id,
672
- extensions,
673
- toolbarState,
674
- viewMode,
675
- ref: setEditorView
676
- }));
677
- } finally {
678
- _effect.f();
679
- }
680
- };
681
- MarkdownEditorContent2.displayName = "MarkdownEditor.Content";
682
- var MarkdownEditorToolbar2 = (props) => {
683
- var _effect = _useSignals4();
684
- try {
685
- const { toolbarState, ...rootProps } = useMarkdownEditorContext(MarkdownEditorToolbar2.displayName);
686
- return /* @__PURE__ */ React5.createElement(MarkdownEditorToolbar, {
687
- ...props,
688
- ...rootProps,
689
- state: toolbarState
690
- });
691
- } finally {
692
- _effect.f();
693
- }
694
- };
695
- MarkdownEditorToolbar2.displayName = "MarkdownEditor.Toolbar";
696
- var MarkdownEditorBlocks = (_props) => {
697
- var _effect = _useSignals4();
698
- try {
699
- const { previewBlocks } = useMarkdownEditorContext(MarkdownEditorBlocks.displayName);
700
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React5.createElement(PreviewBlock, {
701
- key: link.ref,
702
- link,
703
- el
704
- })));
705
- } finally {
706
- _effect.f();
707
- }
708
- };
709
- MarkdownEditorBlocks.displayName = "MarkdownEditor.Blocks";
710
- var PreviewBlock = ({ el, link }) => {
711
- var _effect = _useSignals4();
712
- try {
713
- const client = useClient();
714
- const dxn = DXN.parse(link.ref);
715
- const subject = client.graph.ref(dxn).target;
716
- const data = useMemo6(() => ({
717
- subject
718
- }), [
719
- subject
720
- ]);
721
- return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React5.createElement(Surface, {
722
- role: "card--transclusion",
723
- data,
724
- limit: 1
725
- }), el);
726
- } finally {
727
- _effect.f();
728
- }
729
- };
730
- var MarkdownEditor = {
731
- Root: MarkdownEditorRoot,
732
- Content: MarkdownEditorContent2,
733
- Toolbar: MarkdownEditorToolbar2,
734
- Blocks: MarkdownEditorBlocks
735
- };
736
-
737
- // src/components/MarkdownContainer.tsx
738
- var MarkdownContainer = ({ id, role, object, settings, extensionProviders, ...props }) => {
739
- var _effect = _useSignals5();
740
- try {
741
- const space = getSpace2(object);
742
- const isDocument = Obj3.instanceOf(Markdown_exports.Document, object);
743
- const isText = Obj3.instanceOf(DataType2.Text, object);
744
- const attendableId = isDocument ? fullyQualifiedId2(object) : void 0;
745
- const otherExtensionProviders = useCapabilities2(MarkdownCapabilities.Extensions);
746
- const extensions = useMemo7(() => {
747
- if (!Obj3.instanceOf(Markdown_exports.Document, object)) {
748
- return [];
749
- }
750
- return [
751
- ...otherExtensionProviders ?? [],
752
- ...extensionProviders ?? []
753
- ].flat().reduce((acc, provider) => {
754
- const extension = typeof provider === "function" ? provider({
755
- document: object
756
- }) : provider;
757
- if (extension) {
758
- acc.push(extension);
759
- }
760
- return acc;
761
- }, []);
762
- }, [
763
- extensionProviders,
764
- otherExtensionProviders,
765
- object
766
- ]);
767
- const { graph } = useAppGraph();
768
- const customActions = useMemo7(() => {
769
- return Rx.make((get) => {
770
- const actions = get(graph.actions(id));
771
- const nodes = actions.filter((action) => action.properties.disposition === "toolbar");
772
- const edges = nodes.map((node) => ({
773
- source: "root",
774
- target: node.id
775
- }));
776
- return {
777
- nodes,
778
- edges
779
- };
780
- });
781
- }, [
782
- graph
783
- ]);
784
- const [upload] = useCapabilities2(Capabilities2.FileUploader);
785
- const handleFileUpload = useMemo7(() => {
786
- if (!space || !upload) {
787
- return void 0;
788
- }
789
- return async (file) => upload(space, file);
790
- }, [
791
- space,
792
- upload
793
- ]);
794
- const handleLinkQuery = useLinkQuery(space);
795
- return /* @__PURE__ */ React6.createElement(StackItem.Content, {
796
- toolbar: settings.toolbar
797
- }, /* @__PURE__ */ React6.createElement(MarkdownEditor.Root, {
798
- id: attendableId ?? id,
799
- object,
800
- extensions,
801
- onFileUpload: handleFileUpload,
802
- onLinkQuery: handleLinkQuery,
803
- ...props
804
- }, settings.toolbar && /* @__PURE__ */ React6.createElement(MarkdownEditor.Toolbar, {
805
- id: attendableId ?? id,
806
- role,
807
- customActions
808
- }), /* @__PURE__ */ React6.createElement(MarkdownEditor.Content, {
809
- initialValue: isDocument ? object.content?.target?.content : isText ? object.content : object.text,
810
- scrollPastEnd: role === "article"
811
- }), /* @__PURE__ */ React6.createElement(MarkdownEditor.Blocks, null)));
812
- } finally {
813
- _effect.f();
814
- }
815
- };
816
- var MarkdownContainer_default = MarkdownContainer;
817
-
818
- export {
819
- MarkdownContainer,
820
- MarkdownContainer_default
821
- };
822
- //# sourceMappingURL=chunk-5AYTOIUF.mjs.map