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

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 (266) hide show
  1. package/dist/lib/browser/{chunk-WIPSLZ6L.mjs → MarkdownCard-R6VVXOMN.mjs} +27 -26
  2. package/dist/lib/browser/MarkdownCard-R6VVXOMN.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-KDKXFKDN.mjs → MarkdownContainer-LSOAAG6R.mjs} +48 -25
  4. package/dist/lib/browser/MarkdownContainer-LSOAAG6R.mjs.map +7 -0
  5. package/dist/lib/browser/MarkdownSettings-OD7AJSSJ.mjs +106 -0
  6. package/dist/lib/browser/MarkdownSettings-OD7AJSSJ.mjs.map +7 -0
  7. package/dist/lib/browser/{anchor-sort-WQ3TL7ZI.mjs → anchor-sort-35SV33JX.mjs} +6 -4
  8. package/dist/lib/browser/anchor-sort-35SV33JX.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-serializer-ULZUJKOD.mjs → app-graph-serializer-RMUNNVUY.mjs} +9 -7
  10. package/dist/lib/browser/app-graph-serializer-RMUNNVUY.mjs.map +7 -0
  11. package/dist/lib/browser/blueprint-definition-SFGTWLSY.mjs +18 -0
  12. package/dist/lib/browser/blueprint-definition-SFGTWLSY.mjs.map +7 -0
  13. package/dist/lib/browser/blueprints/index.mjs +5 -4
  14. package/dist/lib/browser/{chunk-LMO5UVKL.mjs → chunk-4CSOMIT4.mjs} +29 -61
  15. package/dist/lib/browser/chunk-4CSOMIT4.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-646I24Q2.mjs +178 -0
  17. package/dist/lib/browser/chunk-646I24Q2.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-BX73DASG.mjs → chunk-B6S4YQWZ.mjs} +285 -206
  19. package/dist/lib/browser/chunk-B6S4YQWZ.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-RYZHVXZ5.mjs +28 -0
  21. package/dist/lib/browser/chunk-RYZHVXZ5.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-CUGDX7KA.mjs → chunk-WU3CQIPM.mjs} +2 -2
  23. package/dist/lib/browser/{chunk-JOXYQLKH.mjs → chunk-YKXQWJX6.mjs} +9 -4
  24. package/dist/lib/browser/chunk-YKXQWJX6.mjs.map +7 -0
  25. package/dist/lib/browser/cli/index.mjs +15 -13
  26. package/dist/lib/browser/cli/index.mjs.map +3 -3
  27. package/dist/lib/browser/index.mjs +49 -48
  28. package/dist/lib/browser/index.mjs.map +3 -3
  29. package/dist/lib/browser/meta.json +1 -1
  30. package/dist/lib/browser/{operation-resolver-EGCWOQKJ.mjs → operation-resolver-MVI2ZJ7M.mjs} +6 -18
  31. package/dist/lib/browser/operation-resolver-MVI2ZJ7M.mjs.map +7 -0
  32. package/dist/lib/browser/react-surface-OJYNFGZB.mjs +117 -0
  33. package/dist/lib/browser/react-surface-OJYNFGZB.mjs.map +7 -0
  34. package/dist/lib/browser/{settings-JY5JE7MI.mjs → settings-R722LDFD.mjs} +8 -5
  35. package/dist/lib/browser/settings-R722LDFD.mjs.map +7 -0
  36. package/dist/lib/browser/{state-QE7VSJWJ.mjs → state-MRJLGZW4.mjs} +7 -5
  37. package/dist/lib/{node-esm/state-LXE5XIN4.mjs.map → browser/state-MRJLGZW4.mjs.map} +2 -2
  38. package/dist/lib/browser/types/index.mjs +2 -1
  39. package/dist/lib/node-esm/{chunk-RQP7G7XW.mjs → MarkdownCard-EE3Q2JPL.mjs} +27 -26
  40. package/dist/lib/node-esm/MarkdownCard-EE3Q2JPL.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-3JYPCC7M.mjs → MarkdownContainer-NMFVVFBR.mjs} +48 -25
  42. package/dist/lib/node-esm/MarkdownContainer-NMFVVFBR.mjs.map +7 -0
  43. package/dist/lib/node-esm/MarkdownSettings-U7GJ4OP3.mjs +107 -0
  44. package/dist/lib/node-esm/MarkdownSettings-U7GJ4OP3.mjs.map +7 -0
  45. package/dist/lib/node-esm/{anchor-sort-G7D5TAI6.mjs → anchor-sort-QCV4U222.mjs} +6 -4
  46. package/dist/lib/node-esm/anchor-sort-QCV4U222.mjs.map +7 -0
  47. package/dist/lib/node-esm/{app-graph-serializer-W5YMQP7P.mjs → app-graph-serializer-I27YTNDW.mjs} +9 -7
  48. package/dist/lib/node-esm/app-graph-serializer-I27YTNDW.mjs.map +7 -0
  49. package/dist/lib/node-esm/blueprint-definition-VZEIBTAP.mjs +19 -0
  50. package/dist/lib/node-esm/blueprint-definition-VZEIBTAP.mjs.map +7 -0
  51. package/dist/lib/node-esm/blueprints/index.mjs +5 -4
  52. package/dist/lib/node-esm/{chunk-PRV35A7Z.mjs → chunk-2LVNBTQT.mjs} +29 -61
  53. package/dist/lib/node-esm/chunk-2LVNBTQT.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-CW4FZNMZ.mjs +29 -0
  55. package/dist/lib/node-esm/chunk-CW4FZNMZ.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-W3IIKDV5.mjs → chunk-HVAZON2M.mjs} +2 -2
  57. package/dist/lib/node-esm/chunk-KHTJJ45U.mjs +179 -0
  58. package/dist/lib/node-esm/chunk-KHTJJ45U.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-44VJC3QF.mjs → chunk-TR2NZYXO.mjs} +9 -4
  60. package/dist/lib/node-esm/chunk-TR2NZYXO.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-D4BCFPKK.mjs → chunk-VG2PIENM.mjs} +285 -206
  62. package/dist/lib/node-esm/chunk-VG2PIENM.mjs.map +7 -0
  63. package/dist/lib/node-esm/cli/index.mjs +15 -13
  64. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  65. package/dist/lib/node-esm/index.mjs +49 -48
  66. package/dist/lib/node-esm/index.mjs.map +3 -3
  67. package/dist/lib/node-esm/meta.json +1 -1
  68. package/dist/lib/node-esm/{operation-resolver-2HIS2AQZ.mjs → operation-resolver-6TK6ARJ6.mjs} +6 -18
  69. package/dist/lib/node-esm/operation-resolver-6TK6ARJ6.mjs.map +7 -0
  70. package/dist/lib/node-esm/react-surface-UVNCUX77.mjs +118 -0
  71. package/dist/lib/node-esm/react-surface-UVNCUX77.mjs.map +7 -0
  72. package/dist/lib/node-esm/{settings-4UGMPIRY.mjs → settings-RDYNOKVE.mjs} +8 -5
  73. package/dist/lib/node-esm/settings-RDYNOKVE.mjs.map +7 -0
  74. package/dist/lib/node-esm/{state-LXE5XIN4.mjs → state-7HQSNXXQ.mjs} +7 -5
  75. package/dist/lib/{browser/state-QE7VSJWJ.mjs.map → node-esm/state-7HQSNXXQ.mjs.map} +2 -2
  76. package/dist/lib/node-esm/types/index.mjs +2 -1
  77. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  78. package/dist/types/src/blueprints/functions/create.d.ts.map +1 -1
  79. package/dist/types/src/blueprints/functions/index.d.ts +41 -3
  80. package/dist/types/src/blueprints/functions/index.d.ts.map +1 -1
  81. package/dist/types/src/blueprints/functions/open.d.ts +8 -1
  82. package/dist/types/src/blueprints/functions/open.d.ts.map +1 -1
  83. package/dist/types/src/blueprints/functions/update.d.ts +16 -3
  84. package/dist/types/src/blueprints/functions/update.d.ts.map +1 -1
  85. package/dist/types/src/blueprints/index.d.ts +1 -1
  86. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  87. package/dist/types/src/blueprints/markdown-blueprint.d.ts +3 -20
  88. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +3 -2
  90. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/anchor-sort/index.d.ts +1 -1
  92. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +2 -2
  94. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +1 -1
  96. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +1 -1
  98. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +3 -7
  100. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +1 -1
  102. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  104. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  106. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  108. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  110. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/settings/index.d.ts +1 -1
  112. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/settings/settings.d.ts +3 -2
  114. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/state/state.d.ts +1 -1
  116. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  117. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +2 -2
  118. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  119. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +5 -3
  120. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  121. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +1 -1
  122. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +2 -0
  124. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  125. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +5 -5
  126. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  127. package/dist/types/src/components/index.d.ts +1 -8
  128. package/dist/types/src/components/index.d.ts.map +1 -1
  129. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  130. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  131. package/dist/types/src/{components → containers}/MarkdownCard/index.d.ts +0 -1
  132. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
  133. package/dist/types/src/{components → containers/MarkdownContainer}/MarkdownContainer.d.ts +6 -6
  134. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -0
  135. package/dist/types/src/{components → containers/MarkdownContainer}/MarkdownContainer.stories.d.ts +31 -1
  136. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -0
  137. package/dist/types/src/containers/MarkdownContainer/index.d.ts +3 -0
  138. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +1 -0
  139. package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  140. package/dist/types/src/containers/MarkdownSettings/index.d.ts +3 -0
  141. package/dist/types/src/containers/MarkdownSettings/index.d.ts.map +1 -0
  142. package/dist/types/src/containers/index.d.ts +6 -0
  143. package/dist/types/src/containers/index.d.ts.map +1 -0
  144. package/dist/types/src/hooks/useExtensions.d.ts +3 -3
  145. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  146. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +1 -1
  147. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  148. package/dist/types/src/index.d.ts +1 -0
  149. package/dist/types/src/index.d.ts.map +1 -1
  150. package/dist/types/src/translations.d.ts +30 -0
  151. package/dist/types/src/translations.d.ts.map +1 -1
  152. package/dist/types/src/types/Markdown.d.ts +1 -1
  153. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  154. package/dist/types/src/types/MarkdownAction.d.ts +2 -22
  155. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -1
  156. package/dist/types/src/types/events.d.ts.map +1 -1
  157. package/dist/types/src/util.d.ts +1 -1
  158. package/dist/types/src/util.d.ts.map +1 -1
  159. package/dist/types/tsconfig.tsbuildinfo +1 -1
  160. package/package.json +64 -57
  161. package/src/MarkdownPlugin.tsx +29 -38
  162. package/src/blueprints/functions/create.conversations.json +1 -1
  163. package/src/blueprints/functions/create.test.ts +24 -57
  164. package/src/blueprints/functions/create.ts +6 -5
  165. package/src/blueprints/functions/index.ts +11 -3
  166. package/src/blueprints/functions/open.ts +10 -10
  167. package/src/blueprints/functions/update.conversations.json +1 -1
  168. package/src/blueprints/functions/update.test.ts +133 -67
  169. package/src/blueprints/functions/update.ts +54 -13
  170. package/src/blueprints/index.ts +1 -1
  171. package/src/blueprints/markdown-blueprint.ts +14 -6
  172. package/src/capabilities/anchor-sort/anchor-sort.ts +3 -2
  173. package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +5 -4
  174. package/src/capabilities/artifact-definition/artifact-definition.ts +2 -2
  175. package/src/capabilities/blueprint-definition/blueprint-definition.ts +6 -14
  176. package/src/capabilities/operation-resolver/operation-resolver.ts +3 -14
  177. package/src/capabilities/react-surface/react-surface.tsx +30 -19
  178. package/src/capabilities/settings/settings.ts +3 -2
  179. package/src/capabilities/state/state.ts +2 -2
  180. package/src/cli/plugin.ts +5 -5
  181. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  182. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +25 -22
  183. package/src/components/MarkdownEditor/MarkdownEditor.tsx +44 -17
  184. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +6 -5
  185. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +13 -13
  186. package/src/components/index.ts +2 -14
  187. package/src/{components → containers}/MarkdownCard/MarkdownCard.stories.tsx +17 -7
  188. package/src/{components → containers}/MarkdownCard/MarkdownCard.tsx +21 -24
  189. package/src/{components → containers}/MarkdownCard/index.ts +0 -2
  190. package/src/{components → containers/MarkdownContainer}/MarkdownContainer.stories.tsx +22 -9
  191. package/src/{components → containers/MarkdownContainer}/MarkdownContainer.tsx +57 -34
  192. package/src/containers/MarkdownContainer/index.ts +6 -0
  193. package/src/{components → containers}/MarkdownSettings/MarkdownSettings.tsx +24 -24
  194. package/src/containers/MarkdownSettings/index.ts +7 -0
  195. package/src/containers/index.ts +11 -0
  196. package/src/hooks/useEditorMenuOptions.ts +1 -1
  197. package/src/hooks/useExtensions.tsx +52 -89
  198. package/src/hooks/useLinkQuery.ts +3 -3
  199. package/src/hooks/useSelectCurrentThread.tsx +6 -6
  200. package/src/index.ts +2 -0
  201. package/src/meta.ts +1 -1
  202. package/src/testing.ts +2 -2
  203. package/src/translations.ts +3 -0
  204. package/src/types/Markdown.ts +13 -5
  205. package/src/types/MarkdownAction.ts +3 -18
  206. package/src/types/capabilities.ts +4 -4
  207. package/src/types/events.ts +4 -3
  208. package/src/util.tsx +2 -2
  209. package/dist/lib/browser/MarkdownCard-WHK3ORP7.mjs +0 -12
  210. package/dist/lib/browser/MarkdownCard-WHK3ORP7.mjs.map +0 -7
  211. package/dist/lib/browser/MarkdownContainer-V7EAADMF.mjs +0 -12
  212. package/dist/lib/browser/MarkdownContainer-V7EAADMF.mjs.map +0 -7
  213. package/dist/lib/browser/anchor-sort-WQ3TL7ZI.mjs.map +0 -7
  214. package/dist/lib/browser/app-graph-serializer-ULZUJKOD.mjs.map +0 -7
  215. package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs +0 -19
  216. package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-BX73DASG.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-FWQQW6KU.mjs +0 -144
  219. package/dist/lib/browser/chunk-FWQQW6KU.mjs.map +0 -7
  220. package/dist/lib/browser/chunk-JOXYQLKH.mjs.map +0 -7
  221. package/dist/lib/browser/chunk-KDKXFKDN.mjs.map +0 -7
  222. package/dist/lib/browser/chunk-LMO5UVKL.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-S45ULIOG.mjs +0 -101
  224. package/dist/lib/browser/chunk-S45ULIOG.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-WIPSLZ6L.mjs.map +0 -7
  226. package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs.map +0 -7
  227. package/dist/lib/browser/react-surface-SRPLD3ED.mjs +0 -213
  228. package/dist/lib/browser/react-surface-SRPLD3ED.mjs.map +0 -7
  229. package/dist/lib/browser/settings-JY5JE7MI.mjs.map +0 -7
  230. package/dist/lib/node-esm/MarkdownCard-WJPLQTFS.mjs +0 -13
  231. package/dist/lib/node-esm/MarkdownCard-WJPLQTFS.mjs.map +0 -7
  232. package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs +0 -13
  233. package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs.map +0 -7
  234. package/dist/lib/node-esm/anchor-sort-G7D5TAI6.mjs.map +0 -7
  235. package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs.map +0 -7
  236. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs +0 -20
  237. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-3JYPCC7M.mjs.map +0 -7
  239. package/dist/lib/node-esm/chunk-44VJC3QF.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-D4BCFPKK.mjs.map +0 -7
  241. package/dist/lib/node-esm/chunk-EYAFC4N7.mjs +0 -145
  242. package/dist/lib/node-esm/chunk-EYAFC4N7.mjs.map +0 -7
  243. package/dist/lib/node-esm/chunk-PRV35A7Z.mjs.map +0 -7
  244. package/dist/lib/node-esm/chunk-RQP7G7XW.mjs.map +0 -7
  245. package/dist/lib/node-esm/chunk-SDTYEGGL.mjs +0 -102
  246. package/dist/lib/node-esm/chunk-SDTYEGGL.mjs.map +0 -7
  247. package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs.map +0 -7
  248. package/dist/lib/node-esm/react-surface-RONSOJIQ.mjs +0 -214
  249. package/dist/lib/node-esm/react-surface-RONSOJIQ.mjs.map +0 -7
  250. package/dist/lib/node-esm/settings-4UGMPIRY.mjs.map +0 -7
  251. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
  252. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
  253. package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
  254. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  255. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
  256. package/dist/types/src/components/MarkdownSettings/index.d.ts +0 -2
  257. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +0 -1
  258. package/dist/types/src/components/Suggestions.stories.d.ts +0 -11
  259. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  260. package/src/components/MarkdownSettings/index.ts +0 -5
  261. package/src/components/Suggestions.stories.tsx +0 -215
  262. /package/dist/lib/browser/{chunk-CUGDX7KA.mjs.map → chunk-WU3CQIPM.mjs.map} +0 -0
  263. /package/dist/lib/node-esm/{chunk-W3IIKDV5.mjs.map → chunk-HVAZON2M.mjs.map} +0 -0
  264. /package/dist/types/src/{components → containers}/MarkdownCard/MarkdownCard.d.ts +0 -0
  265. /package/dist/types/src/{components → containers}/MarkdownCard/MarkdownCard.stories.d.ts +0 -0
  266. /package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util.tsx", "../../../src/components/MarkdownEditor/MarkdownEditor.tsx", "../../../src/hooks/useEditorMenuOptions.ts", "../../../src/hooks/useExtensions.tsx", "../../../src/hooks/useLinkQuery.ts", "../../../src/hooks/useSelectCurrentThread.tsx", "../../../src/components/MarkdownEditor/MarkdownEditorContent.tsx", "../../../src/components/MarkdownEditor/MarkdownEditorToolbar.tsx", "../../../src/components/MarkdownEditor/FileUpload.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { debounce } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { type TypedObjectSerializer } from '@dxos/plugin-space/types';\n\nimport { Markdown } from './types';\n\n/**\n * Checks if an object conforms to the interface needed to render an editor.\n * @deprecated Use Schema.instanceOf(Markdown.Document, data)\n */\n// TODO(burdon): Normalize types (from FilesPlugin).\nexport const isEditorModel = (data: any): data is { id: string; text: string } =>\n data &&\n typeof data === 'object' &&\n 'id' in data &&\n typeof data.id === 'string' &&\n 'text' in data &&\n typeof data.text === 'string';\n\nexport type MarkdownProperties = Record<string, any>;\n\nexport const isMarkdownProperties = (data: unknown): data is MarkdownProperties =>\n (Obj.isObject(data) as boolean)\n ? true\n : data && typeof data === 'object'\n ? 'title' in data && typeof data.title === 'string'\n : false;\n\nconst nonTitleChars = /[^\\w ]/g;\n\n// Lines matching these patterns are skipped.\nconst skipPatterns = [\n /^!\\[/, // Image.\n /^---\\s*$/, // Horizontal rule.\n /^```/, // Code block fence.\n /^\\s*$/, // Empty or whitespace-only.\n];\n\n// Patterns to extract title text (first capture group is used).\nconst titlePatterns = [\n /^#{1,6}\\s+(.+)/, // Heading.\n];\n\n/**\n * Extracts a fallback name by scanning lines for the first heading or text fragment.\n */\nexport const getFallbackName = (content = ''): string => {\n const len = content.length;\n\n let i = 0;\n while (i < len) {\n // Find end of line.\n let lineEnd = i;\n while (lineEnd < len && content[lineEnd] !== '\\n') {\n lineEnd++;\n }\n\n const line = content.slice(i, lineEnd).trim();\n i = lineEnd + 1;\n\n // Skip lines matching skip patterns.\n if (skipPatterns.some((pattern) => pattern.test(line))) {\n continue;\n }\n\n // Check for title patterns.\n for (const pattern of titlePatterns) {\n const match = pattern.exec(line);\n if (match) {\n const text = match[1].replaceAll(nonTitleChars, '').trim();\n if (text.length > 0) {\n return text;\n }\n }\n }\n\n // Use line as plain text fallback.\n const maxLen = 32;\n const text = line.replaceAll(nonTitleChars, '').trim();\n if (text.length > 0) {\n if (text.length > maxLen) {\n const words = text.split(/\\s+/);\n let result = '';\n for (const word of words) {\n const next = result.length === 0 ? word : result + ' ' + word;\n if (next.length > maxLen) {\n break;\n }\n result = next;\n }\n\n return result + '…';\n }\n\n return text;\n }\n }\n\n return '';\n};\n\n// TODO(burdon): Option to strip Markdown.\nexport const getContentSnippet = (content = '', maxLines = 3) => {\n const abstract = content\n .split('\\n')\n .filter((line) => !line.startsWith('!'))\n .filter((line) => line.trim() !== '');\n\n return abstract.slice(0, maxLines).join('\\n') ?? '';\n};\n\nexport const setFallbackName = debounce((doc: Markdown.Document, content = '') => {\n const name = getFallbackName(content);\n if (doc.fallbackName !== name) {\n Obj.change(doc, (d) => {\n d.fallbackName = name;\n });\n }\n}, 200);\n\nexport const serializer: TypedObjectSerializer<Markdown.Document> = {\n serialize: async ({ object }): Promise<string> => {\n const { content } = await object.content.load();\n return JSON.stringify({ name: object.name, fallbackName: object.fallbackName, content });\n },\n\n deserialize: async ({ content: serialized }) => {\n const { name, fallbackName, content } = JSON.parse(serialized);\n return Markdown.make({ name, fallbackName, content });\n },\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { DXN } from '@dxos/keys';\nimport { useClient } from '@dxos/react-client';\nimport {\n EditorMenuProvider,\n type EditorToolbarState,\n type UseEditorMenu,\n useEditorMenu,\n useEditorToolbar,\n} from '@dxos/react-ui-editor';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { type PreviewBlock, type PreviewOptions } from '@dxos/ui-editor';\nimport { isNonNullable } from '@dxos/util';\n\nimport {\n type DocumentType,\n type ExtensionsOptions,\n type UseEditorMenuOptionsProps,\n useEditorMenuOptions,\n useExtensions,\n} from '../../hooks';\n\nimport {\n MarkdownEditorContent as NaturalMarkdownEditorContent,\n type MarkdownEditorContentProps as NaturalMarkdownEditorContentProps,\n} from './MarkdownEditorContent';\nimport {\n MarkdownEditorToolbar as NaturalMarkdownToolbar,\n type MarkdownEditorToolbarProps as NaturalMarkdownToolbarProps,\n} from './MarkdownEditorToolbar';\n\n//\n// Context\n//\n\ntype MarkdownEditorContextValue = {\n id: string;\n attendableId?: string;\n setEditorView: (view: EditorView) => void;\n extensions: Extension[];\n previewBlocks: PreviewBlock[];\n toolbarState: Atom.Writable<EditorToolbarState>;\n popoverMenu: Omit<UseEditorMenu, 'extension'>;\n} & (Pick<ExtensionsOptions, 'viewMode'> &\n Pick<NaturalMarkdownToolbarProps, 'editorView' | 'onAction' | 'onFileUpload' | 'onViewModeChange'>);\n\nconst [MarkdownEditorContextProvider, useMarkdownEditorContext] =\n createContext<MarkdownEditorContextValue>('MarkdownEditor.Context');\n\n//\n// MarkdownEditor.Root\n//\n\ntype MarkdownEditorRootProps = PropsWithChildren<\n {\n object?: DocumentType;\n extensions?: Extension[];\n } & Pick<\n MarkdownEditorContextValue,\n 'id' | 'attendableId' | 'onAction' | 'onFileUpload' | 'onViewModeChange' | 'viewMode'\n > &\n Pick<UseEditorMenuOptionsProps, 'slashCommandGroups' | 'onLinkQuery'> &\n Pick<ExtensionsOptions, 'editorStateStore' | 'selectionManager' | 'settings' | 'onSelectObject'>\n>;\n\nconst MarkdownEditorRoot = ({\n children,\n id,\n attendableId,\n object,\n editorStateStore,\n selectionManager,\n settings,\n viewMode,\n extensions: extensionsProp,\n slashCommandGroups,\n onLinkQuery,\n onSelectObject,\n ...props\n}: MarkdownEditorRootProps) => {\n const [editorView, setEditorView] = useState<EditorView>();\n\n // Preview blocks.\n const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);\n const previewOptions = useMemo<PreviewOptions>(\n () => ({\n addBlockContainer: (block) => {\n setPreviewBlocks((prev) => [...prev, block]);\n },\n removeBlockContainer: ({ link }) => {\n setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));\n },\n }),\n [],\n );\n\n // Toolbar state.\n const toolbarState = useEditorToolbar({ viewMode });\n\n // Context menu.\n const menuOptions = useEditorMenuOptions({\n editorView,\n slashCommandGroups,\n onLinkQuery,\n });\n const { extension: menuExtension, ...menuProps } = useEditorMenu(menuOptions);\n\n // Extensions.\n const coreExtensions = useExtensions({\n id,\n object,\n editorStateStore,\n previewOptions,\n selectionManager,\n settings,\n viewMode,\n onSelectObject,\n });\n\n const extensions = useMemo(\n () => [coreExtensions, menuExtension, extensionsProp].filter(isNonNullable),\n [coreExtensions, menuExtension, extensionsProp],\n );\n\n return (\n <MarkdownEditorContextProvider\n id={id}\n attendableId={attendableId}\n editorView={editorView}\n setEditorView={setEditorView}\n extensions={extensions}\n previewBlocks={previewBlocks}\n toolbarState={toolbarState}\n popoverMenu={menuProps}\n viewMode={viewMode}\n {...props}\n >\n {children}\n </MarkdownEditorContextProvider>\n );\n};\n\nMarkdownEditorRoot.displayName = 'MarkdownEditor.Root';\n\n//\n// MarkdownEditor.Main\n//\n\nconst MARKDOWN_EDITOR_CONTENT_NAME = 'MarkdownEditor.Content';\n\ntype MarkdownEditorContentProps = Omit<NaturalMarkdownEditorContentProps, 'id' | 'extensions' | 'toolbarState'>;\n\nconst MarkdownEditorContent = (props: MarkdownEditorContentProps) => {\n const {\n id,\n attendableId,\n editorView,\n setEditorView,\n viewMode,\n toolbarState,\n extensions,\n popoverMenu: { groupsRef, ...menuProps },\n } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);\n\n return (\n <EditorMenuProvider view={editorView} groups={groupsRef.current} {...menuProps}>\n <NaturalMarkdownEditorContent\n {...props}\n id={id}\n attendableId={attendableId}\n viewMode={viewMode}\n toolbarState={toolbarState}\n extensions={extensions}\n ref={setEditorView}\n />\n </EditorMenuProvider>\n );\n};\n\nMarkdownEditorContent.displayName = MARKDOWN_EDITOR_CONTENT_NAME;\n\n//\n// MarkdownEditor.Toolbar\n//\n\nconst MARKDOWN_EDITOR_TOOLBAR_NAME = 'MarkdownEditor.Toolbar';\n\ntype MarkdownEditorToolbarProps = ThemedClassName<\n Omit<NaturalMarkdownToolbarProps, 'state' | 'editorView' | 'onAction' | 'onFileUpload' | 'onViewModeChange' | 'id'>\n>;\n\nconst MarkdownEditorToolbar = (props: MarkdownEditorToolbarProps) => {\n const { id, attendableId, editorView, toolbarState, onAction, onFileUpload, onViewModeChange } =\n useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);\n\n return (\n <NaturalMarkdownToolbar\n {...props}\n id={attendableId ?? id}\n editorView={editorView}\n state={toolbarState}\n onAction={onAction}\n onFileUpload={onFileUpload}\n onViewModeChange={onViewModeChange}\n />\n );\n};\n\nMarkdownEditorToolbar.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;\n\n//\n// MarkdownEditor.Blocks (embedded objects)\n//\n\nconst MARKDOWN_EDITOR_BLOCKS_NAME = 'MarkdownEditor.Blocks';\n\ntype MarkdownEditorBlocksProps = {};\n\nconst MarkdownEditorBlocks = (_props: MarkdownEditorBlocksProps) => {\n const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);\n\n return (\n <>\n {previewBlocks.map(({ link, el }) => (\n <PreviewBlock key={link.dxn} link={link} el={el} />\n ))}\n </>\n );\n};\n\nMarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;\n\nconst PreviewBlock = ({ el, link }: PreviewBlock) => {\n const client = useClient();\n const dxn = DXN.parse(link.dxn);\n const subject = client.graph.makeRef(dxn).target;\n const data = useMemo(() => ({ subject }), [subject]);\n\n return createPortal(<Surface.Surface role='card--content' data={data} limit={1} />, el);\n};\n\n//\n// MarkdownEditor\n//\n\nexport const MarkdownEditor = {\n Root: MarkdownEditorRoot,\n Content: MarkdownEditorContent,\n Toolbar: MarkdownEditorToolbar,\n Blocks: MarkdownEditorBlocks,\n};\n\nexport type {\n MarkdownEditorRootProps,\n MarkdownEditorContentProps,\n MarkdownEditorToolbarProps,\n MarkdownEditorBlocksProps,\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { useCallback, useMemo, useRef } from 'react';\n\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type UseEditorMenuProps,\n filterMenuGroups,\n formattingCommands,\n linkSlashCommands,\n} from '@dxos/react-ui-editor';\nimport { Domino } from '@dxos/ui';\n\nimport { meta } from '../meta';\n\nexport type UseEditorMenuOptionsProps = {\n editorView?: EditorView;\n slashCommandGroups?: EditorMenuGroup[];\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n};\n\nexport const useEditorMenuOptions = ({\n editorView,\n slashCommandGroups,\n onLinkQuery,\n}: UseEditorMenuOptionsProps): UseEditorMenuProps => {\n const { t } = useTranslation(meta.id);\n\n const getMenu = useCallback<NonNullable<UseEditorMenuProps['getMenu']>>(\n ({ text, trigger }) => {\n switch (trigger) {\n case '@': {\n return onLinkQuery?.(text) ?? [];\n }\n\n case '/':\n default: {\n return filterMenuGroups([formattingCommands, linkSlashCommands, ...(slashCommandGroups ?? [])], (item) =>\n text ? toLocalizedString(item.label, t).toLowerCase().includes(text.toLowerCase()) : true,\n );\n }\n }\n },\n [slashCommandGroups, onLinkQuery],\n );\n\n const viewRef = useRef(editorView);\n return useMemo<UseEditorMenuProps>(() => {\n const trigger = onLinkQuery ? ['/', '@'] : ['/'];\n const placeholder = {\n delay: 3_000,\n content: () => {\n const pressEl = Domino.of('span').text('Press');\n const triggerEls = trigger.map((text) =>\n Domino.of('span').classNames('mx-1 px-1.5 pt-[1px] pb-[2px] border border-separator rounded-xs').text(text),\n );\n const forCommandsEl = Domino.of('span').text('for commands.');\n return Domino.of('div').children(pressEl, ...triggerEls, forCommandsEl).root;\n },\n };\n\n return { viewRef, getMenu, trigger, placeholder };\n }, [getMenu, onLinkQuery]);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ViewUpdate } from '@codemirror/view';\nimport { useMemo } from 'react';\nimport { debounceAndThrottle } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace, useObject } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { type SelectionManager } from '@dxos/react-ui-attention';\nimport { Text } from '@dxos/schema';\nimport { Domino } from '@dxos/ui';\nimport {\n Cursor,\n type EditorStateStore,\n EditorView,\n type EditorViewMode,\n type Extension,\n InputModeExtensions,\n type PreviewOptions,\n type RenderCallback,\n createDataExtensions,\n decorateMarkdown,\n documentId,\n folding,\n formattingKeymap,\n linkTooltip,\n listener,\n preview,\n replacer,\n selectionState,\n typewriter,\n} from '@dxos/ui-editor';\nimport { isTruthy, safeUrl } from '@dxos/util';\n\nimport { Markdown } from '../types';\nimport { setFallbackName } from '../util';\n\nexport type DocumentType = Markdown.Document | Text.Text | { id: string; text: string };\n\nexport type ExtensionsOptions = {\n id: string;\n object?: DocumentType;\n settings?: Markdown.Settings;\n selectionManager?: SelectionManager;\n viewMode?: EditorViewMode;\n editorStateStore?: EditorStateStore;\n previewOptions?: PreviewOptions;\n /** Callback when an internal link is clicked. */\n onSelectObject?: (objectId: string) => void;\n};\n\n// TODO(burdon): Merge with createBaseExtensions below.\nexport const useExtensions = ({\n id,\n object,\n settings,\n selectionManager,\n viewMode,\n editorStateStore,\n previewOptions,\n onSelectObject,\n}: ExtensionsOptions): Extension[] => {\n const identity = useIdentity();\n const space = getSpace(object);\n\n // Get the content reference from Document objects.\n const contentRef = Obj.instanceOf(Markdown.Document, object) ? (object as Markdown.Document).content : undefined;\n // Use useObject to trigger re-render when the reference loads (returns snapshot for reactivity).\n useObject(contentRef);\n // Get the actual live object target via .target (needed for createDocAccessor).\n const target = contentRef?.target ?? (Obj.instanceOf(Text.Text, object) ? object : undefined);\n\n // TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.\n // TODO(burdon): Unsubscribe.\n // const query = space?.db.query(Filter.type(DocumentType));\n // query?.subscribe();\n\n const baseExtensions = useMemo(\n () =>\n createBaseExtensions({\n id,\n object,\n settings,\n selectionManager,\n viewMode,\n previewOptions,\n onSelectObject,\n }),\n [\n id,\n object,\n viewMode,\n previewOptions,\n onSelectObject,\n settings,\n settings?.debug,\n settings?.editorInputMode,\n settings?.folding,\n settings?.numberedHeadings,\n settings?.typewriter,\n selectionManager,\n ],\n );\n\n return useMemo<Extension[]>(\n () =>\n [\n // TODO(burdon): Pass this in?\n // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.\n target &&\n createDataExtensions({\n id,\n text: createDocAccessor(target, ['content']),\n messenger: space,\n identity,\n }),\n\n // TODO(burdon): Reconcile with effect in parent.\n Obj.instanceOf(Markdown.Document, object) &&\n listener({\n onChange: ({ text }) => {\n setFallbackName(object as Markdown.Document, text);\n },\n }),\n\n baseExtensions,\n selectionState(editorStateStore),\n ].filter(isTruthy),\n [identity, space, id, object, target, baseExtensions],\n );\n};\n\n/**\n * Create extension instances for editor.\n */\nconst createBaseExtensions = ({\n id,\n object,\n onSelectObject,\n settings,\n selectionManager,\n viewMode,\n previewOptions,\n}: ExtensionsOptions): Extension[] => {\n const extensions: Extension[] = [\n selectionManager && selectionChange(selectionManager),\n settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],\n settings?.folding && folding(),\n ].filter(isTruthy);\n\n //\n // Markdown\n //\n if (viewMode !== 'source') {\n extensions.push(\n ...[\n formattingKeymap(),\n decorateMarkdown({\n selectionChangeDelay: 100,\n numberedHeadings: settings?.numberedHeadings ? { from: 2 } : undefined,\n // TODO(wittjosiah): For internal links render the label of the object.\n renderLinkButton: onSelectObject && createRenderLink(onSelectObject),\n }),\n linkTooltip(renderLinkTooltip),\n preview(previewOptions),\n replacer(),\n ],\n );\n }\n\n if (settings?.debug) {\n const items = settings.typewriter?.split(/[,\\n]/) ?? '';\n if (items) {\n extensions.push(typewriter({ items }));\n }\n }\n\n return extensions;\n};\n\nconst selectionChange = (selectionManager: SelectionManager) => {\n const debouncedHandler = debounceAndThrottle((update: ViewUpdate) => {\n const id = update.state.facet(documentId);\n const cursorConverter = update.state.facet(Cursor.converter);\n const selection = update.state.selection;\n const ranges = selection.ranges\n .map((range) => ({\n from: cursorConverter.toCursor(range.from),\n to: cursorConverter.toCursor(range.to),\n }))\n .filter(({ from, to }) => to > from);\n\n selectionManager.updateMultiRange(id, ranges);\n }, 100);\n\n return EditorView.updateListener.of((update: ViewUpdate) => {\n if (update.selectionSet) {\n debouncedHandler(update);\n }\n });\n};\n\nconst createRenderLink =\n (onSelectObject: (id: string) => void): RenderCallback<{ url: string }> =>\n (el, { url }) => {\n // TODO(burdon): Formalize/document internal link format.\n const isInternal = url.startsWith('/') || url.startsWith(window.location.origin);\n const anchor = Domino.of('a')\n .classNames('dx-link dx-icon-inline ms-1')\n .children(Domino.svg(isInternal ? 'ph--arrow-square-down--regular' : 'ph--arrow-square-out--regular'));\n\n if (isInternal) {\n anchor.on('click', () => {\n const qualifiedId = url.split('/').at(-1);\n invariant(qualifiedId, 'Invalid link format.');\n onSelectObject(qualifiedId);\n });\n } else {\n anchor.attributes({ href: url, rel: 'noreferrer', target: '_blank' });\n }\n\n el.appendChild(anchor.root);\n };\n\nconst renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {\n el.appendChild(\n Domino.of('a')\n .attributes({ href: url, target: '_blank', rel: 'noreferrer' })\n .classNames('dx-link flex items-center gap-2')\n .text(safeUrl(url)?.origin ?? url)\n .children(Domino.svg('ph--arrow-square-out--regular')).root,\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useCallback, useMemo } from 'react';\n\nimport { usePluginManager } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { type Database, Filter, Obj, Query, Type } from '@dxos/echo';\nimport { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from '@dxos/echo/internal';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';\nimport { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';\n\nexport const useLinkQuery = (db: Database.Database | undefined) => {\n const { t } = useTranslation();\n\n const manager = usePluginManager();\n const resolve = useCallback(\n (typename: string) =>\n manager.capabilities.getAll(AppCapabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},\n [manager],\n );\n\n const filter = useMemo(\n () =>\n Filter.or(\n ...(db?.schemaRegistry.query({ location: ['database', 'runtime'] }).runSync() ?? [])\n .filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation)\n .filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false)))\n .map((schema) => Filter.typename(Type.getTypename(schema))),\n ),\n [db],\n );\n\n const handleLinkQuery = useCallback(\n async (query?: string): Promise<EditorMenuGroup[]> => {\n const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');\n const results = await db?.query(Query.select(filter)).run();\n\n // TODO(wittjosiah): Use `Obj.Unknown` type.\n const getLabel = (object: any) => {\n const label = Obj.getLabel(object);\n if (label) {\n return label;\n }\n\n // TODO(wittjosiah): Remove metadata labels.\n const type = Obj.getTypename(object)!;\n const metadata = resolve(type);\n return metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New object' }];\n };\n\n const items =\n results\n ?.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))\n // TODO(wittjosiah): Remove `any` type.\n .map((object: any): EditorMenuItem => {\n const metadata = resolve(Obj.getTypename(object)!);\n const label = toLocalizedString(getLabel(object), t);\n return {\n id: object.id,\n label,\n icon: metadata.icon,\n onSelect: ({ view, head }) => {\n const link = `[${label}](${Obj.getDXN(object)})`;\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n }) ?? [];\n\n return [{ id: 'echo', items }];\n },\n [db, filter, resolve],\n );\n\n return handleLinkQuery;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport * as Effect from 'effect/Effect';\nimport { useMemo } from 'react';\n\nimport { useOperationResolver } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { invariant } from '@dxos/invariant';\nimport { OperationResolver } from '@dxos/operation';\nimport { Cursor, setSelection } from '@dxos/ui-editor';\n\nimport { meta } from '../meta';\n\n/**\n * Handle scrolling and selection of the current thread in a markdown editor.\n */\nexport const useSelectCurrentThread = (editorView: EditorView | null, documentId: string, attendableId: string) => {\n const scrollIntoViewHandler = useMemo(\n () =>\n OperationResolver.make({\n operation: LayoutOperation.ScrollIntoView,\n position: 'hoist',\n filter: (input) => !!editorView && !!input.cursor && input.subject === attendableId,\n handler: (input) =>\n Effect.sync(() => {\n invariant(editorView, 'Editor view is not defined.');\n const cursor = input.cursor;\n if (!cursor) {\n return;\n }\n const range = Cursor.getRangeFromCursor(editorView.state, cursor);\n if (range) {\n const selection =\n editorView.state.selection.main.from !== range.from ? { anchor: range.from } : undefined;\n const effects = [\n // NOTE: This does not use the DOM scrollIntoView function.\n EditorView.scrollIntoView(range.from, {\n y: 'start',\n yMargin: 96,\n }),\n ];\n if (selection) {\n // Update the editor selection to get bi-directional highlighting.\n effects.push(setSelection.of({ current: documentId }));\n }\n\n editorView.dispatch({\n effects,\n selection: selection ? { anchor: range.from } : undefined,\n });\n }\n }),\n }),\n [documentId, attendableId, editorView],\n );\n\n useOperationResolver(meta.id, scrollIntoViewHandler);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom, RegistryContext } from '@effect-atom/atom-react';\nimport React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from 'react';\n\nimport { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type EditorToolbarState,\n type UseTextEditorProps,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport {\n type EditorSelectionState,\n type EditorStateStore,\n type EditorViewMode,\n type ThemeExtensionsOptions,\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n dropFile,\n editorSlots,\n formattingListener,\n processEditorPayload,\n stackItemContentEditorClassNames,\n} from '@dxos/ui-editor';\nimport { mx } from '@dxos/ui-theme';\nimport { isTruthy } from '@dxos/util';\n\nimport { useSelectCurrentThread } from '../../hooks';\nimport { meta } from '../../meta';\n\nimport { type MarkdownEditorToolbarProps } from './MarkdownEditorToolbar';\n\nexport type MarkdownEditorContentProps = ThemedClassName<{\n id: string;\n attendableId?: string;\n role?: string;\n viewMode?: EditorViewMode;\n scrollPastEnd?: boolean;\n slashCommandGroups?: EditorMenuGroup[];\n editorStateStore?: EditorStateStore;\n toolbarState?: Atom.Writable<EditorToolbarState>;\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n}> &\n Pick<UseTextEditorProps, 'initialValue' | 'extensions'> &\n Pick<MarkdownEditorToolbarProps, 'onFileUpload'> &\n Pick<ThemeExtensionsOptions, 'slots'>;\n\nexport const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEditorContentProps>(\n (\n {\n classNames,\n id,\n attendableId,\n role,\n viewMode,\n initialValue,\n editorStateStore,\n toolbarState,\n extensions,\n scrollPastEnd,\n slots = editorSlots,\n onFileUpload,\n },\n forwardedRef,\n ) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const registry = useContext(RegistryContext);\n\n // Callback to update toolbar state atom.\n const updateToolbarState = useCallback(\n (formatting: EditorToolbarState) => {\n if (toolbarState) {\n registry.set(toolbarState, { ...registry.get(toolbarState), ...formatting });\n }\n },\n [registry, toolbarState],\n );\n\n // Restore last selection and scroll point.\n const { scrollTo, selection } = useMemo<EditorSelectionState>(() => editorStateStore?.getState(id) ?? {}, [id]);\n\n const {\n parentRef,\n view: editorView,\n focusAttributes,\n } = useTextEditor(\n () => ({\n ...(role !== 'section' && {\n id,\n scrollTo,\n selection,\n // TODO(wittjosiah): Autofocus based on layout is racy.\n // autoFocus: layoutPlugin?.provides.layout ? layoutPlugin?.provides.layout.scrollIntoView === id : true,\n selectionEnd: true,\n }),\n initialValue,\n extensions: [\n createBasicExtensions({\n readOnly: viewMode === 'readonly',\n placeholder: t('editor placeholder'),\n scrollPastEnd: scrollPastEnd && role !== 'section',\n search: true,\n }),\n createThemeExtensions({\n themeMode,\n slots,\n syntaxHighlighting: true,\n }),\n createMarkdownExtensions(),\n toolbarState && formattingListener(updateToolbarState),\n role !== 'section' &&\n onFileUpload &&\n dropFile({\n // TODO(wittjosiah): Factor out to file uploader plugin.\n onDrop: async (view, { files }) => {\n const file = files[0];\n const info = file && onFileUpload ? await onFileUpload(file) : undefined;\n if (info) {\n processEditorPayload(view, { type: 'image', data: info.url });\n }\n },\n }),\n extensions,\n ].filter(isTruthy),\n }),\n [id, viewMode, themeMode, extensions],\n );\n\n useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => editorView, [editorView]);\n\n useSelectCurrentThread(editorView, id, attendableId ?? id);\n\n useTest(editorView);\n\n return (\n <div\n {...focusAttributes}\n role='none'\n data-testid='composer.markdownRoot'\n data-popover-collision-boundary={true}\n className={mx(stackItemContentEditorClassNames(role), classNames)}\n ref={parentRef}\n />\n );\n },\n);\n\n// Expose editor view for playwright tests.\n// TODO(wittjosiah): Find a better way to expose this or find a way to limit it to test runs.\nconst useTest = (view: EditorView | null) => {\n useEffect(() => {\n const composer = (window as any).composer;\n if (composer) {\n composer.editorView = view;\n }\n }, [view]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { type ComponentPropsWithoutRef, useCallback, useState } from 'react';\n\nimport { type FileInfo } from '@dxos/app-toolkit';\nimport { invariant } from '@dxos/invariant';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { EditorToolbar, type EditorToolbarProps } from '@dxos/react-ui-editor';\n\nimport { FileUpload, type FileUploadAction } from './FileUpload';\nimport { composableProps } from '@dxos/ui-theme';\n\nexport type MarkdownEditorToolbarProps = ThemedClassName<\n ComponentPropsWithoutRef<'div'> & {\n id: string;\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n } & Pick<EditorToolbarProps, 'role' | 'state' | 'customActions' | 'onAction' | 'onViewModeChange'>\n>;\n\nexport const MarkdownEditorToolbar = ({\n id,\n role,\n state,\n editorView,\n customActions,\n onAction,\n onFileUpload,\n onViewModeChange,\n ...props\n}: MarkdownEditorToolbarProps) => {\n const { className, ...rest } = composableProps(props);\n const [upload, setUpload] = useState<FileUploadAction | null>(null);\n const uploadRef = useCallback((next: FileUploadAction) => setUpload(() => next), []);\n\n const getView = useCallback(() => {\n invariant(editorView);\n return editorView;\n }, [editorView]);\n\n if (!editorView) {\n return <div className={className} {...rest} />;\n }\n\n return (\n <div role='none' className='contents'>\n <EditorToolbar\n {...rest}\n classNames={className}\n attendableId={id}\n role={role}\n state={state}\n customActions={customActions}\n getView={getView}\n onAction={onAction}\n onImageUpload={upload ?? undefined}\n onViewModeChange={onViewModeChange}\n />\n\n {onFileUpload && <FileUpload ref={uploadRef} editorView={editorView} onFileUpload={onFileUpload} />}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { forwardRef, useEffect, useImperativeHandle } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useDropzone } from 'react-dropzone';\n\nimport { type FileInfo } from '@dxos/app-toolkit';\nimport { addLink } from '@dxos/ui-editor';\n\nexport const IMAGE_FILES = ['.jpg', '.jpeg', '.png', '.gif'];\n\nexport type FileUploadAction = () => void;\n\nexport type FileUploadProps = {\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n};\n\n// TODO(burdon): Factor out.\n// TODO(burdon): Move to root? (support drag into document via dropzone).\nexport const FileUpload = forwardRef<FileUploadAction, FileUploadProps>(\n ({ editorView, onFileUpload }, forwardedRef) => {\n // https://react-dropzone.js.org\n const { acceptedFiles, open, inputRef } = useDropzone({\n disabled: !onFileUpload,\n multiple: false,\n noDrag: true,\n accept: {\n 'image/*': IMAGE_FILES,\n },\n });\n\n useImperativeHandle(forwardedRef, () => open, []);\n\n useEffect(() => {\n if (editorView && acceptedFiles.length && onFileUpload) {\n requestAnimationFrame(async () => {\n // NOTE: Clone file since react-dropzone patches in a non-standard `path` property, which confuses IPFS.\n const f = acceptedFiles[0];\n const file = new File([f], f.name, {\n type: f.type,\n lastModified: f.lastModified,\n });\n\n // TODO(burdon): Factor out.\n const info = await onFileUpload(file);\n if (info) {\n addLink({ url: info.url, image: true })(editorView);\n }\n });\n }\n }, [editorView, acceptedFiles, onFileUpload]);\n\n if (!onFileUpload) {\n return null;\n }\n\n return <>{createPortal(<input ref={inputRef} />, document.body)} </>;\n },\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["debounce", "Obj", "isEditorModel", "data", "id", "text", "isMarkdownProperties", "Obj", "isObject", "title", "nonTitleChars", "skipPatterns", "titlePatterns", "getFallbackName", "content", "len", "length", "i", "lineEnd", "line", "slice", "trim", "some", "pattern", "test", "match", "exec", "replaceAll", "maxLen", "words", "split", "result", "word", "next", "getContentSnippet", "maxLines", "abstract", "filter", "startsWith", "join", "setFallbackName", "debounce", "doc", "name", "fallbackName", "change", "d", "serializer", "serialize", "object", "load", "JSON", "stringify", "deserialize", "serialized", "parse", "Markdown", "make", "createContext", "React", "useMemo", "useState", "createPortal", "Surface", "DXN", "useClient", "EditorMenuProvider", "useEditorMenu", "useEditorToolbar", "isNonNullable", "useCallback", "useMemo", "useRef", "toLocalizedString", "useTranslation", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "Domino", "useEditorMenuOptions", "editorView", "slashCommandGroups", "onLinkQuery", "t", "useTranslation", "meta", "id", "getMenu", "useCallback", "text", "trigger", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "item", "toLocalizedString", "label", "toLowerCase", "includes", "viewRef", "useRef", "useMemo", "placeholder", "delay", "content", "pressEl", "Domino", "of", "triggerEls", "map", "classNames", "forCommandsEl", "children", "root", "useMemo", "debounceAndThrottle", "Obj", "createDocAccessor", "invariant", "getSpace", "useObject", "useIdentity", "Text", "Domino", "Cursor", "EditorView", "InputModeExtensions", "createDataExtensions", "decorateMarkdown", "documentId", "folding", "formattingKeymap", "linkTooltip", "listener", "preview", "replacer", "selectionState", "typewriter", "isTruthy", "safeUrl", "useExtensions", "id", "object", "settings", "selectionManager", "viewMode", "editorStateStore", "previewOptions", "onSelectObject", "identity", "useIdentity", "space", "getSpace", "contentRef", "Obj", "instanceOf", "Markdown", "Document", "content", "undefined", "useObject", "target", "Text", "baseExtensions", "useMemo", "createBaseExtensions", "debug", "editorInputMode", "folding", "numberedHeadings", "typewriter", "createDataExtensions", "text", "createDocAccessor", "messenger", "listener", "onChange", "setFallbackName", "selectionState", "filter", "isTruthy", "extensions", "selectionChange", "InputModeExtensions", "push", "formattingKeymap", "decorateMarkdown", "selectionChangeDelay", "from", "renderLinkButton", "createRenderLink", "linkTooltip", "renderLinkTooltip", "preview", "replacer", "items", "split", "debouncedHandler", "debounceAndThrottle", "update", "state", "facet", "documentId", "cursorConverter", "Cursor", "converter", "selection", "ranges", "map", "range", "toCursor", "to", "updateMultiRange", "EditorView", "updateListener", "of", "selectionSet", "el", "url", "isInternal", "startsWith", "window", "location", "origin", "anchor", "Domino", "classNames", "children", "svg", "on", "qualifiedId", "at", "invariant", "attributes", "href", "rel", "appendChild", "root", "safeUrl", "Option", "useCallback", "useMemo", "usePluginManager", "AppCapabilities", "Filter", "Obj", "Query", "Type", "EntityKind", "SystemTypeAnnotation", "getTypeAnnotation", "toLocalizedString", "useTranslation", "insertAtCursor", "insertAtLineStart", "useLinkQuery", "db", "t", "useTranslation", "manager", "usePluginManager", "resolve", "useCallback", "typename", "capabilities", "getAll", "AppCapabilities", "Metadata", "find", "id", "metadata", "filter", "useMemo", "Filter", "or", "schemaRegistry", "query", "location", "runSync", "schema", "getTypeAnnotation", "kind", "EntityKind", "Relation", "SystemTypeAnnotation", "get", "pipe", "getOrElse", "map", "Type", "getTypename", "handleLinkQuery", "name", "startsWith", "slice", "toLowerCase", "results", "Query", "select", "run", "getLabel", "object", "label", "Obj", "type", "ns", "default", "items", "toLocalizedString", "includes", "icon", "onSelect", "view", "head", "link", "getDXN", "insertAtLineStart", "insertAtCursor", "EditorView", "Effect", "useMemo", "useOperationResolver", "LayoutOperation", "invariant", "OperationResolver", "Cursor", "setSelection", "useSelectCurrentThread", "editorView", "documentId", "attendableId", "scrollIntoViewHandler", "useMemo", "OperationResolver", "make", "operation", "LayoutOperation", "ScrollIntoView", "position", "filter", "input", "cursor", "subject", "handler", "sync", "invariant", "range", "Cursor", "getRangeFromCursor", "state", "selection", "main", "from", "anchor", "undefined", "effects", "EditorView", "scrollIntoView", "y", "yMargin", "push", "setSelection", "of", "current", "dispatch", "useOperationResolver", "meta", "id", "RegistryContext", "React", "forwardRef", "useCallback", "useContext", "useEffect", "useImperativeHandle", "useMemo", "useThemeContext", "useTranslation", "useTextEditor", "createBasicExtensions", "createMarkdownExtensions", "createThemeExtensions", "dropFile", "editorSlots", "formattingListener", "processEditorPayload", "stackItemContentEditorClassNames", "mx", "isTruthy", "MarkdownEditorContent", "forwardRef", "classNames", "id", "attendableId", "role", "viewMode", "initialValue", "editorStateStore", "toolbarState", "extensions", "scrollPastEnd", "slots", "editorSlots", "onFileUpload", "forwardedRef", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "registry", "useContext", "RegistryContext", "updateToolbarState", "useCallback", "formatting", "set", "get", "scrollTo", "selection", "useMemo", "getState", "parentRef", "view", "editorView", "focusAttributes", "useTextEditor", "selectionEnd", "createBasicExtensions", "readOnly", "placeholder", "search", "createThemeExtensions", "syntaxHighlighting", "createMarkdownExtensions", "formattingListener", "dropFile", "onDrop", "files", "file", "info", "undefined", "processEditorPayload", "type", "data", "url", "filter", "isTruthy", "useImperativeHandle", "useSelectCurrentThread", "useTest", "div", "data-testid", "data-popover-collision-boundary", "className", "mx", "stackItemContentEditorClassNames", "ref", "useEffect", "composer", "window", "React", "useCallback", "useState", "invariant", "EditorToolbar", "React", "forwardRef", "useEffect", "useImperativeHandle", "createPortal", "useDropzone", "addLink", "IMAGE_FILES", "FileUpload", "forwardRef", "editorView", "onFileUpload", "forwardedRef", "acceptedFiles", "open", "inputRef", "useDropzone", "disabled", "multiple", "noDrag", "accept", "useImperativeHandle", "useEffect", "length", "requestAnimationFrame", "f", "file", "File", "name", "type", "lastModified", "info", "addLink", "url", "image", "React", "createPortal", "input", "ref", "document", "body", "composableProps", "MarkdownEditorToolbar", "id", "role", "state", "editorView", "customActions", "onAction", "onFileUpload", "onViewModeChange", "props", "className", "rest", "upload", "setUpload", "useState", "uploadRef", "useCallback", "next", "getView", "invariant", "React", "div", "EditorToolbar", "classNames", "attendableId", "onImageUpload", "undefined", "FileUpload", "ref", "MarkdownEditorContextProvider", "useMarkdownEditorContext", "createContext", "MarkdownEditorRoot", "children", "id", "attendableId", "object", "editorStateStore", "selectionManager", "settings", "viewMode", "extensions", "extensionsProp", "slashCommandGroups", "onLinkQuery", "onSelectObject", "props", "editorView", "setEditorView", "useState", "previewBlocks", "setPreviewBlocks", "previewOptions", "useMemo", "addBlockContainer", "block", "prev", "removeBlockContainer", "link", "filter", "prevLink", "dxn", "toolbarState", "useEditorToolbar", "menuOptions", "useEditorMenuOptions", "extension", "menuExtension", "menuProps", "useEditorMenu", "coreExtensions", "useExtensions", "isNonNullable", "React", "popoverMenu", "displayName", "MARKDOWN_EDITOR_CONTENT_NAME", "MarkdownEditorContent", "groupsRef", "EditorMenuProvider", "view", "groups", "current", "NaturalMarkdownEditorContent", "ref", "MARKDOWN_EDITOR_TOOLBAR_NAME", "MarkdownEditorToolbar", "onAction", "onFileUpload", "onViewModeChange", "NaturalMarkdownToolbar", "state", "MARKDOWN_EDITOR_BLOCKS_NAME", "MarkdownEditorBlocks", "_props", "map", "el", "PreviewBlock", "key", "client", "useClient", "DXN", "parse", "subject", "graph", "makeRef", "target", "data", "createPortal", "Surface", "role", "limit", "MarkdownEditor", "Root", "Content", "Toolbar", "Blocks"]
7
+ }
@@ -1,31 +1,33 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  OperationResolver
4
- } from "../chunk-W3IIKDV5.mjs";
4
+ } from "../chunk-HVAZON2M.mjs";
5
+ import {
6
+ Markdown_exports
7
+ } from "../chunk-2LVNBTQT.mjs";
5
8
  import {
6
- Markdown_exports,
7
9
  meta
8
- } from "../chunk-PRV35A7Z.mjs";
10
+ } from "../chunk-CW4FZNMZ.mjs";
9
11
 
10
12
  // src/cli/plugin.ts
11
13
  import * as Effect from "effect/Effect";
12
- import { Common, Plugin } from "@dxos/app-framework";
14
+ import { Plugin } from "@dxos/app-framework";
15
+ import { AppPlugin } from "@dxos/app-toolkit";
13
16
  import { Text } from "@dxos/schema";
14
- var MarkdownPlugin = Plugin.define(meta).pipe(Common.Plugin.addSchemaModule({
15
- schema: [
16
- Markdown_exports.Document,
17
- Text.Text
18
- ]
19
- }), Common.Plugin.addMetadataModule({
17
+ var MarkdownPlugin = Plugin.define(meta).pipe(AppPlugin.addMetadataModule({
20
18
  metadata: {
21
19
  id: Markdown_exports.Document.typename,
22
20
  metadata: {
23
- createObject: (props) => Effect.sync(() => Markdown_exports.make(props)),
24
- addToCollectionOnCreate: true
21
+ createObject: (props) => Effect.sync(() => Markdown_exports.make(props))
25
22
  }
26
23
  }
27
- }), Common.Plugin.addOperationResolverModule({
24
+ }), AppPlugin.addOperationResolverModule({
28
25
  activate: OperationResolver
26
+ }), AppPlugin.addSchemaModule({
27
+ schema: [
28
+ Markdown_exports.Document,
29
+ Text.Text
30
+ ]
29
31
  }), Plugin.make);
30
32
  export {
31
33
  MarkdownPlugin
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cli/plugin.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Common, Plugin } from '@dxos/app-framework';\nimport { type CreateObject } from '@dxos/plugin-space/types';\nimport { Text } from '@dxos/schema';\n\n// NOTE: Must not import from index to avoid pulling in react dependencies.\nimport { OperationResolver } from '../capabilities/operation-resolver';\nimport { meta } from '../meta';\nimport { Markdown } from '../types';\n\nexport const MarkdownPlugin = Plugin.define(meta).pipe(\n Common.Plugin.addSchemaModule({ schema: [Markdown.Document, Text.Text] }),\n Common.Plugin.addMetadataModule({\n metadata: {\n id: Markdown.Document.typename,\n metadata: {\n createObject: ((props) => Effect.sync(() => Markdown.make(props))) satisfies CreateObject,\n addToCollectionOnCreate: true,\n },\n },\n }),\n Common.Plugin.addOperationResolverModule({ activate: OperationResolver }),\n Plugin.make,\n);\n"],
5
- "mappings": ";;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,QAAQC,cAAc;AAE/B,SAASC,YAAY;AAOd,IAAMC,iBAAiBC,OAAOC,OAAOC,IAAAA,EAAMC,KAChDC,OAAOJ,OAAOK,gBAAgB;EAAEC,QAAQ;IAACC,iBAASC;IAAUC,KAAKA;;AAAM,CAAA,GACvEL,OAAOJ,OAAOU,kBAAkB;EAC9BC,UAAU;IACRC,IAAIL,iBAASC,SAASK;IACtBF,UAAU;MACRG,cAAe,CAACC,UAAiBC,YAAK,MAAMT,iBAASU,KAAKF,KAAAA,CAAAA;MAC1DG,yBAAyB;IAC3B;EACF;AACF,CAAA,GACAd,OAAOJ,OAAOmB,2BAA2B;EAAEC,UAAUC;AAAkB,CAAA,GACvErB,OAAOiB,IAAI;",
6
- "names": ["Effect", "Common", "Plugin", "Text", "MarkdownPlugin", "Plugin", "define", "meta", "pipe", "Common", "addSchemaModule", "schema", "Markdown", "Document", "Text", "addMetadataModule", "metadata", "id", "typename", "createObject", "props", "sync", "make", "addToCollectionOnCreate", "addOperationResolverModule", "activate", "OperationResolver"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { type CreateObject } from '@dxos/plugin-space/types';\nimport { Text } from '@dxos/schema';\n\n// NOTE: Must not import from index to avoid pulling in react dependencies.\nimport { OperationResolver } from '../capabilities/operation-resolver';\nimport { meta } from '../meta';\nimport { Markdown } from '../types';\n\nexport const MarkdownPlugin = Plugin.define(meta).pipe(\n AppPlugin.addMetadataModule({\n metadata: {\n id: Markdown.Document.typename,\n metadata: {\n createObject: ((props) => Effect.sync(() => Markdown.make(props))) satisfies CreateObject,\n },\n },\n }),\n AppPlugin.addOperationResolverModule({ activate: OperationResolver }),\n AppPlugin.addSchemaModule({ schema: [Markdown.Document, Text.Text] }),\n Plugin.make,\n);\n"],
5
+ "mappings": ";;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAc;AACvB,SAASC,iBAAiB;AAE1B,SAASC,YAAY;AAOd,IAAMC,iBAAiBC,OAAOC,OAAOC,IAAAA,EAAMC,KAChDC,UAAUC,kBAAkB;EAC1BC,UAAU;IACRC,IAAIC,iBAASC,SAASC;IACtBJ,UAAU;MACRK,cAAe,CAACC,UAAiBC,YAAK,MAAML,iBAASM,KAAKF,KAAAA,CAAAA;IAC5D;EACF;AACF,CAAA,GACAR,UAAUW,2BAA2B;EAAEC,UAAUC;AAAkB,CAAA,GACnEb,UAAUc,gBAAgB;EAAEC,QAAQ;IAACX,iBAASC;IAAUW,KAAKA;;AAAM,CAAA,GACnEpB,OAAOc,IAAI;",
6
+ "names": ["Effect", "Plugin", "AppPlugin", "Text", "MarkdownPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addMetadataModule", "metadata", "id", "Markdown", "Document", "typename", "createObject", "props", "sync", "make", "addOperationResolverModule", "activate", "OperationResolver", "addSchemaModule", "schema", "Text"]
7
7
  }
@@ -1,90 +1,81 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
+ MarkdownEditor,
3
4
  getContentSnippet,
4
5
  getFallbackName,
5
6
  isEditorModel,
6
7
  isMarkdownProperties,
7
8
  serializer,
8
9
  setFallbackName
9
- } from "./chunk-SDTYEGGL.mjs";
10
+ } from "./chunk-VG2PIENM.mjs";
10
11
  import {
11
12
  OperationResolver
12
- } from "./chunk-W3IIKDV5.mjs";
13
+ } from "./chunk-HVAZON2M.mjs";
13
14
  import {
14
15
  translations
15
- } from "./chunk-44VJC3QF.mjs";
16
+ } from "./chunk-TR2NZYXO.mjs";
16
17
  import {
17
- markdown_blueprint_exports
18
- } from "./chunk-EYAFC4N7.mjs";
18
+ markdown_blueprint_default
19
+ } from "./chunk-KHTJJ45U.mjs";
19
20
  import {
20
21
  MarkdownAction_exports,
21
22
  MarkdownCapabilities,
22
23
  MarkdownEvents,
23
24
  MarkdownOperation,
24
25
  MarkdownStateSchema,
25
- Markdown_exports,
26
+ Markdown_exports
27
+ } from "./chunk-2LVNBTQT.mjs";
28
+ import {
26
29
  meta
27
- } from "./chunk-PRV35A7Z.mjs";
30
+ } from "./chunk-CW4FZNMZ.mjs";
28
31
 
29
32
  // src/MarkdownPlugin.tsx
30
33
  import * as Effect from "effect/Effect";
31
- import { Capability as Capability7, Common, Plugin } from "@dxos/app-framework";
32
- import { Ref } from "@dxos/echo";
34
+ import * as Option from "effect/Option";
35
+ import { Plugin } from "@dxos/app-framework";
36
+ import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
37
+ import { Annotation, Ref } from "@dxos/echo";
33
38
  import { createDocAccessor, getTextInRange } from "@dxos/echo-db";
34
- import { Operation } from "@dxos/operation";
35
- import { SpaceCapabilities, SpaceEvents } from "@dxos/plugin-space";
36
39
  import { translations as editorTranslations } from "@dxos/react-ui-editor";
37
40
  import { Text } from "@dxos/schema";
38
41
 
39
42
  // src/capabilities/anchor-sort/index.ts
40
43
  import { Capability } from "@dxos/app-framework";
41
- var AnchorSort = Capability.lazy("AnchorSort", () => import("./anchor-sort-G7D5TAI6.mjs"));
44
+ var AnchorSort = Capability.lazy("AnchorSort", () => import("./anchor-sort-QCV4U222.mjs"));
42
45
 
43
46
  // src/capabilities/app-graph-serializer/index.ts
44
47
  import { Capability as Capability2 } from "@dxos/app-framework";
45
- var AppGraphSerializer = Capability2.lazy("AppGraphSerializer", () => import("./app-graph-serializer-W5YMQP7P.mjs"));
48
+ var AppGraphSerializer = Capability2.lazy("AppGraphSerializer", () => import("./app-graph-serializer-I27YTNDW.mjs"));
46
49
 
47
50
  // src/capabilities/blueprint-definition/index.ts
48
51
  import { Capability as Capability3 } from "@dxos/app-framework";
49
- var BlueprintDefinition = Capability3.lazy("BlueprintDefinition", () => import("./blueprint-definition-HYFA7BKQ.mjs"));
52
+ var BlueprintDefinition = Capability3.lazy("BlueprintDefinition", () => import("./blueprint-definition-VZEIBTAP.mjs"));
50
53
 
51
54
  // src/capabilities/react-surface/index.ts
52
55
  import { Capability as Capability4 } from "@dxos/app-framework";
53
- var ReactSurface = Capability4.lazy("ReactSurface", () => import("./react-surface-RONSOJIQ.mjs"));
56
+ var ReactSurface = Capability4.lazy("ReactSurface", () => import("./react-surface-UVNCUX77.mjs"));
54
57
 
55
58
  // src/capabilities/settings/index.ts
56
59
  import { Capability as Capability5 } from "@dxos/app-framework";
57
- var MarkdownSettings = Capability5.lazy("MarkdownSettings", () => import("./settings-4UGMPIRY.mjs"));
60
+ var MarkdownSettings = Capability5.lazy("MarkdownSettings", () => import("./settings-RDYNOKVE.mjs"));
58
61
 
59
62
  // src/capabilities/state/index.ts
60
63
  import { Capability as Capability6 } from "@dxos/app-framework";
61
- var MarkdownState = Capability6.lazy("MarkdownState", () => import("./state-LXE5XIN4.mjs"));
64
+ var MarkdownState = Capability6.lazy("MarkdownState", () => import("./state-7HQSNXXQ.mjs"));
62
65
 
63
66
  // 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({
67
+ var MarkdownPlugin = Plugin.define(meta).pipe(AppPlugin.addBlueprintDefinitionModule({
68
+ activate: BlueprintDefinition
69
+ }), AppPlugin.addMetadataModule({
80
70
  metadata: {
81
71
  id: Markdown_exports.Document.typename,
82
72
  metadata: {
73
+ // TODO(dmaretskyi): Remove label, icon and iconHue and query them of schema.
83
74
  label: (object) => object.name || object.fallbackName,
84
- icon: "ph--text-aa--regular",
85
- iconHue: "indigo",
75
+ icon: Annotation.IconAnnotation.get(Markdown_exports.Document).pipe(Option.getOrThrow).icon,
76
+ iconHue: Annotation.IconAnnotation.get(Markdown_exports.Document).pipe(Option.getOrThrow).hue ?? "white",
86
77
  blueprints: [
87
- markdown_blueprint_exports.Key
78
+ markdown_blueprint_default.key
88
79
  ],
89
80
  graphProps: {
90
81
  managesAutofocus: true
@@ -108,36 +99,46 @@ var MarkdownPlugin = Plugin.define(meta).pipe(Common.Plugin.addTranslationsModul
108
99
  createObject: (props) => Effect.sync(() => Markdown_exports.make(props))
109
100
  }
110
101
  }
111
- }), Common.Plugin.addSchemaModule({
102
+ }), AppPlugin.addOperationResolverModule({
103
+ activate: OperationResolver
104
+ }), AppPlugin.addSchemaModule({
112
105
  schema: [
113
106
  Markdown_exports.Document,
114
107
  Text.Text
115
108
  ]
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({
109
+ }), AppPlugin.addSurfaceModule({
121
110
  activate: ReactSurface,
122
111
  activatesBefore: [
123
112
  MarkdownEvents.SetupExtensions
124
113
  ]
125
- }), Common.Plugin.addOperationResolverModule({
126
- activate: OperationResolver
114
+ }), AppPlugin.addTranslationsModule({
115
+ translations: [
116
+ ...translations,
117
+ ...editorTranslations
118
+ ]
119
+ }), Plugin.addModule({
120
+ activatesOn: AppActivationEvents.SetupSettings,
121
+ activate: MarkdownSettings
127
122
  }), Plugin.addModule({
128
- activatesOn: Common.ActivationEvent.AppGraphReady,
123
+ id: "state",
124
+ // TODO(wittjosiah): Does not integrate with settings store.
125
+ // Should this be a different event?
126
+ // Should settings store be renamed to be more generic?
127
+ activatesOn: AppActivationEvents.SetupSettings,
128
+ activate: MarkdownState
129
+ }), Plugin.addModule({
130
+ activatesOn: AppActivationEvents.AppGraphReady,
129
131
  activate: AppGraphSerializer
130
132
  }), Plugin.addModule({
131
133
  // TODO(wittjosiah): More relevant event?
132
- activatesOn: Common.ActivationEvent.AppGraphReady,
134
+ activatesOn: AppActivationEvents.AppGraphReady,
133
135
  activate: AnchorSort
134
- }), Common.Plugin.addBlueprintDefinitionModule({
135
- activate: BlueprintDefinition
136
136
  }), Plugin.make);
137
137
  export {
138
138
  Markdown_exports as Markdown,
139
139
  MarkdownAction_exports as MarkdownAction,
140
140
  MarkdownCapabilities,
141
+ MarkdownEditor,
141
142
  MarkdownEvents,
142
143
  MarkdownOperation,
143
144
  MarkdownPlugin,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/MarkdownPlugin.tsx", "../../../src/capabilities/anchor-sort/index.ts", "../../../src/capabilities/app-graph-serializer/index.ts", "../../../src/capabilities/blueprint-definition/index.ts", "../../../src/capabilities/react-surface/index.ts", "../../../src/capabilities/settings/index.ts", "../../../src/capabilities/state/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common, Plugin } from '@dxos/app-framework';\nimport { type Obj, Ref } from '@dxos/echo';\nimport { createDocAccessor, getTextInRange } from '@dxos/echo-db';\nimport { Operation } from '@dxos/operation';\nimport { SpaceCapabilities, SpaceEvents } from '@dxos/plugin-space';\nimport { type CreateObject } from '@dxos/plugin-space/types';\nimport { translations as editorTranslations } from '@dxos/react-ui-editor';\nimport { Text } from '@dxos/schema';\n\nimport { MarkdownBlueprint } from './blueprints';\nimport {\n AnchorSort,\n AppGraphSerializer,\n BlueprintDefinition,\n MarkdownSettings,\n MarkdownState,\n OperationResolver,\n ReactSurface,\n} from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { Markdown, MarkdownEvents, MarkdownOperation } from './types';\nimport { serializer } from './util';\n\nexport const MarkdownPlugin = Plugin.define(meta).pipe(\n Common.Plugin.addTranslationsModule({ translations: [...translations, ...editorTranslations] }),\n Plugin.addModule({\n activatesOn: Common.ActivationEvent.SetupSettings,\n activate: MarkdownSettings,\n }),\n Plugin.addModule({\n id: 'state',\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Common.ActivationEvent.SetupSettings,\n activate: MarkdownState,\n }),\n Common.Plugin.addMetadataModule({\n metadata: {\n id: Markdown.Document.typename,\n metadata: {\n label: (object: Markdown.Document) => object.name || object.fallbackName,\n icon: 'ph--text-aa--regular',\n iconHue: 'indigo',\n blueprints: [MarkdownBlueprint.Key],\n graphProps: {\n managesAutofocus: true,\n },\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (doc: Markdown.Document) => await Ref.Array.loadAll<Obj.Unknown>([doc.content]),\n serializer,\n // TODO(wittjosiah): Consider how to do generic comments without these.\n comments: 'anchored',\n selectionMode: 'multi-range',\n getAnchorLabel: (doc: Markdown.Document, anchor: string): string | undefined => {\n if (doc.content) {\n const [start, end] = anchor.split(':');\n return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);\n }\n },\n createObject: ((props) => Effect.sync(() => Markdown.make(props))) satisfies CreateObject,\n },\n },\n }),\n Common.Plugin.addSchemaModule({ schema: [Markdown.Document, Text.Text] }),\n Plugin.addModule({\n id: 'on-space-created',\n activatesOn: SpaceEvents.SpaceCreated,\n activate: () =>\n Effect.succeed(\n Capability.contributes(SpaceCapabilities.OnCreateSpace, (params) =>\n Operation.invoke(MarkdownOperation.OnCreateSpace, params),\n ),\n ),\n }),\n Common.Plugin.addSurfaceModule({\n activate: ReactSurface,\n activatesBefore: [MarkdownEvents.SetupExtensions],\n }),\n Common.Plugin.addOperationResolverModule({ activate: OperationResolver }),\n Plugin.addModule({\n activatesOn: Common.ActivationEvent.AppGraphReady,\n activate: AppGraphSerializer,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): More relevant event?\n activatesOn: Common.ActivationEvent.AppGraphReady,\n activate: AnchorSort,\n }),\n Common.Plugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n Plugin.make,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AnchorSort = Capability.lazy('AnchorSort', () => import('./anchor-sort'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AppGraphSerializer = Capability.lazy('AppGraphSerializer', () => import('./app-graph-serializer'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const BlueprintDefinition = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const MarkdownSettings = Capability.lazy('MarkdownSettings', () => import('./settings'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const MarkdownState = Capability.lazy('MarkdownState', () => import('./state'));\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "Capability", "Common", "Plugin", "Ref", "createDocAccessor", "getTextInRange", "Operation", "SpaceCapabilities", "SpaceEvents", "translations", "editorTranslations", "Text", "Capability", "AnchorSort", "Capability", "lazy", "Capability", "AppGraphSerializer", "Capability", "lazy", "Capability", "BlueprintDefinition", "Capability", "lazy", "Capability", "ReactSurface", "Capability", "lazy", "Capability", "MarkdownSettings", "Capability", "lazy", "Capability", "MarkdownState", "Capability", "lazy", "MarkdownPlugin", "Plugin", "define", "meta", "pipe", "Common", "addTranslationsModule", "translations", "editorTranslations", "addModule", "activatesOn", "ActivationEvent", "SetupSettings", "activate", "MarkdownSettings", "id", "MarkdownState", "addMetadataModule", "metadata", "Markdown", "Document", "typename", "label", "object", "name", "fallbackName", "icon", "iconHue", "blueprints", "MarkdownBlueprint", "Key", "graphProps", "managesAutofocus", "loadReferences", "doc", "Ref", "Array", "loadAll", "content", "serializer", "comments", "selectionMode", "getAnchorLabel", "anchor", "start", "end", "split", "getTextInRange", "createDocAccessor", "target", "createObject", "props", "sync", "make", "addSchemaModule", "schema", "Text", "SpaceEvents", "SpaceCreated", "succeed", "Capability", "contributes", "SpaceCapabilities", "OnCreateSpace", "params", "Operation", "invoke", "MarkdownOperation", "addSurfaceModule", "ReactSurface", "activatesBefore", "MarkdownEvents", "SetupExtensions", "addOperationResolverModule", "OperationResolver", "AppGraphReady", "AppGraphSerializer", "AnchorSort", "addBlueprintDefinitionModule", "BlueprintDefinition"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { Annotation, type Obj, Ref } from '@dxos/echo';\nimport { createDocAccessor, getTextInRange } from '@dxos/echo-db';\nimport { type CreateObject } from '@dxos/plugin-space/types';\nimport { translations as editorTranslations } from '@dxos/react-ui-editor';\nimport { Text } from '@dxos/schema';\n\nimport { MarkdownBlueprint } from './blueprints';\nimport {\n AnchorSort,\n AppGraphSerializer,\n BlueprintDefinition,\n MarkdownSettings,\n MarkdownState,\n OperationResolver,\n ReactSurface,\n} from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { Markdown, MarkdownEvents } from './types';\nimport { serializer } from './util';\n\nexport const MarkdownPlugin = Plugin.define(meta).pipe(\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addMetadataModule({\n metadata: {\n id: Markdown.Document.typename,\n metadata: {\n // TODO(dmaretskyi): Remove label, icon and iconHue and query them of schema.\n label: (object: Markdown.Document) => object.name || object.fallbackName,\n icon: Annotation.IconAnnotation.get(Markdown.Document).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Markdown.Document).pipe(Option.getOrThrow).hue ?? 'white',\n blueprints: [MarkdownBlueprint.key],\n graphProps: {\n managesAutofocus: true,\n },\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (doc: Markdown.Document) => await Ref.Array.loadAll<Obj.Unknown>([doc.content]),\n serializer,\n // TODO(wittjosiah): Consider how to do generic comments without these.\n comments: 'anchored',\n selectionMode: 'multi-range',\n getAnchorLabel: (doc: Markdown.Document, anchor: string): string | undefined => {\n if (doc.content) {\n const [start, end] = anchor.split(':');\n return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);\n }\n },\n createObject: ((props) => Effect.sync(() => Markdown.make(props))) satisfies CreateObject,\n },\n },\n }),\n AppPlugin.addOperationResolverModule({ activate: OperationResolver }),\n AppPlugin.addSchemaModule({ schema: [Markdown.Document, Text.Text] }),\n AppPlugin.addSurfaceModule({\n activate: ReactSurface,\n activatesBefore: [MarkdownEvents.SetupExtensions],\n }),\n AppPlugin.addTranslationsModule({ translations: [...translations, ...editorTranslations] }),\n Plugin.addModule({\n activatesOn: AppActivationEvents.SetupSettings,\n activate: MarkdownSettings,\n }),\n Plugin.addModule({\n id: 'state',\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: AppActivationEvents.SetupSettings,\n activate: MarkdownState,\n }),\n Plugin.addModule({\n activatesOn: AppActivationEvents.AppGraphReady,\n activate: AppGraphSerializer,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): More relevant event?\n activatesOn: AppActivationEvents.AppGraphReady,\n activate: AnchorSort,\n }),\n Plugin.make,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AnchorSort = Capability.lazy('AnchorSort', () => import('./anchor-sort'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AppGraphSerializer = Capability.lazy('AppGraphSerializer', () => import('./app-graph-serializer'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const BlueprintDefinition = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const MarkdownSettings = Capability.lazy('MarkdownSettings', () => import('./settings'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const MarkdownState = Capability.lazy('MarkdownState', () => import('./state'));\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Option", "Plugin", "AppActivationEvents", "AppPlugin", "Annotation", "Ref", "createDocAccessor", "getTextInRange", "translations", "editorTranslations", "Text", "Capability", "AnchorSort", "Capability", "lazy", "Capability", "AppGraphSerializer", "Capability", "lazy", "Capability", "BlueprintDefinition", "Capability", "lazy", "Capability", "ReactSurface", "Capability", "lazy", "Capability", "MarkdownSettings", "Capability", "lazy", "Capability", "MarkdownState", "Capability", "lazy", "MarkdownPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addBlueprintDefinitionModule", "activate", "BlueprintDefinition", "addMetadataModule", "metadata", "id", "Markdown", "Document", "typename", "label", "object", "name", "fallbackName", "icon", "Annotation", "IconAnnotation", "get", "getOrThrow", "iconHue", "hue", "blueprints", "MarkdownBlueprint", "key", "graphProps", "managesAutofocus", "loadReferences", "doc", "Ref", "Array", "loadAll", "content", "serializer", "comments", "selectionMode", "getAnchorLabel", "anchor", "start", "end", "split", "getTextInRange", "createDocAccessor", "target", "createObject", "props", "sync", "make", "addOperationResolverModule", "OperationResolver", "addSchemaModule", "schema", "Text", "addSurfaceModule", "ReactSurface", "activatesBefore", "MarkdownEvents", "SetupExtensions", "addTranslationsModule", "translations", "editorTranslations", "addModule", "activatesOn", "AppActivationEvents", "SetupSettings", "MarkdownSettings", "MarkdownState", "AppGraphReady", "AppGraphSerializer", "AnchorSort"]
7
7
  }