@dxos/plugin-markdown 0.9.0 → 0.9.1-staging.ee54ba693a

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 (255) hide show
  1. package/dist/lib/neutral/{MarkdownArticle-LWT5RFFJ.mjs → MarkdownArticle-ZHBXH7YF.mjs} +5 -7
  2. package/dist/lib/neutral/MarkdownArticle-ZHBXH7YF.mjs.map +7 -0
  3. package/dist/lib/neutral/{MarkdownCard-TBLIRDBO.mjs → MarkdownCard-2HUXCGZP.mjs} +3 -3
  4. package/dist/lib/neutral/MarkdownCard-2HUXCGZP.mjs.map +7 -0
  5. package/dist/lib/neutral/MarkdownPlugin.mjs +8 -15
  6. package/dist/lib/neutral/MarkdownPlugin.mjs.map +3 -3
  7. package/dist/lib/neutral/MarkdownPlugin.node.mjs +4 -2
  8. package/dist/lib/neutral/MarkdownPlugin.node.mjs.map +3 -3
  9. package/dist/lib/neutral/MarkdownPlugin.workerd.mjs +6 -17
  10. package/dist/lib/neutral/MarkdownPlugin.workerd.mjs.map +4 -4
  11. package/dist/lib/neutral/MarkdownSettings-5VMOYMND.mjs +43 -0
  12. package/dist/lib/neutral/MarkdownSettings-5VMOYMND.mjs.map +7 -0
  13. package/dist/lib/neutral/{anchor-sort-UXN4RHFX.mjs → anchor-sort-QF7UDG2A.mjs} +4 -3
  14. package/dist/lib/neutral/anchor-sort-QF7UDG2A.mjs.map +7 -0
  15. package/dist/lib/neutral/capabilities/index.mjs +10 -16
  16. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  17. package/dist/lib/neutral/capabilities/node.mjs +5 -3
  18. package/dist/lib/neutral/capabilities/node.mjs.map +3 -3
  19. package/dist/lib/neutral/chunk-2V6A5NDQ.mjs +8 -0
  20. package/dist/lib/neutral/{operation-handler-2ARMPBGZ.mjs → chunk-ANHHOTCD.mjs} +3 -4
  21. package/dist/lib/neutral/{operation-handler-2ARMPBGZ.mjs.map → chunk-ANHHOTCD.mjs.map} +1 -1
  22. package/dist/lib/neutral/chunk-CNYFGIDS.mjs +32 -0
  23. package/dist/lib/neutral/chunk-CNYFGIDS.mjs.map +7 -0
  24. package/dist/lib/neutral/{chunk-LXNSKCPD.mjs → chunk-EV4ZOL4P.mjs} +12 -11
  25. package/dist/lib/neutral/chunk-EV4ZOL4P.mjs.map +7 -0
  26. package/dist/lib/neutral/chunk-OC3JD73N.mjs +43 -0
  27. package/dist/lib/neutral/chunk-OC3JD73N.mjs.map +7 -0
  28. package/dist/lib/neutral/chunk-YJF6XOXX.mjs +175 -0
  29. package/dist/lib/neutral/chunk-YJF6XOXX.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-YMBC62S7.mjs +14 -0
  31. package/dist/lib/neutral/chunk-YMBC62S7.mjs.map +7 -0
  32. package/dist/lib/neutral/{chunk-Y2LQRUU7.mjs → chunk-ZJ3GWRUJ.mjs} +24 -23
  33. package/dist/lib/neutral/chunk-ZJ3GWRUJ.mjs.map +7 -0
  34. package/dist/lib/neutral/{comment-config-EGY7RPPW.mjs → comment-config-M5OGFULS.mjs} +6 -4
  35. package/dist/lib/neutral/comment-config-M5OGFULS.mjs.map +7 -0
  36. package/dist/lib/neutral/components/index.mjs +19 -57
  37. package/dist/lib/neutral/components/index.mjs.map +4 -4
  38. package/dist/lib/neutral/containers/index.mjs +5 -3
  39. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  40. package/dist/lib/neutral/{create-JK35XC4R.mjs → create-OQUMKL5I.mjs} +2 -2
  41. package/dist/lib/neutral/{create-markdown-7MLE625M.mjs → create-markdown-4O5FDA77.mjs} +2 -2
  42. package/dist/lib/neutral/{create-object-MU2LGXG6.mjs → create-object-RSEWTCMM.mjs} +2 -6
  43. package/dist/lib/neutral/create-object-RSEWTCMM.mjs.map +7 -0
  44. package/dist/lib/neutral/hooks/index.mjs +53 -23
  45. package/dist/lib/neutral/hooks/index.mjs.map +3 -3
  46. package/dist/lib/neutral/index.mjs +10 -16
  47. package/dist/lib/neutral/meta.json +1 -1
  48. package/dist/lib/neutral/meta.mjs +1 -1
  49. package/dist/lib/neutral/{open-5YC77C4O.mjs → open-BAZIRXII.mjs} +2 -2
  50. package/dist/lib/neutral/operation-handler-SDCXGMGK.mjs +8 -0
  51. package/dist/lib/neutral/operations/index.mjs +1 -1
  52. package/dist/lib/neutral/plugin.mjs +2 -2
  53. package/dist/lib/neutral/plugin.workerd.mjs +12 -0
  54. package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
  55. package/dist/lib/neutral/{react-surface-XYZJBKHZ.mjs → react-surface-37GL3UVG.mjs} +10 -15
  56. package/dist/lib/neutral/react-surface-37GL3UVG.mjs.map +7 -0
  57. package/dist/lib/neutral/{scroll-to-anchor-GAFB7W55.mjs → scroll-to-anchor-I6HFE5AH.mjs} +2 -2
  58. package/dist/lib/neutral/{set-view-mode-N7UHYMPG.mjs → set-view-mode-NY5OYYIM.mjs} +2 -2
  59. package/dist/lib/neutral/{settings-TDGDLCUR.mjs → settings-O6O6HT3I.mjs} +3 -3
  60. package/dist/lib/neutral/settings-O6O6HT3I.mjs.map +7 -0
  61. package/dist/lib/neutral/skill-definition-ET7BYY47.mjs +8 -0
  62. package/dist/lib/neutral/skill-definition-ET7BYY47.mjs.map +7 -0
  63. package/dist/lib/neutral/skills/index.mjs +8 -0
  64. package/dist/lib/neutral/skills/index.mjs.map +7 -0
  65. package/dist/lib/neutral/state-3BR7L6CW.mjs +69 -0
  66. package/dist/lib/neutral/state-3BR7L6CW.mjs.map +7 -0
  67. package/dist/lib/neutral/testing.mjs +2 -2
  68. package/dist/lib/neutral/testing.mjs.map +3 -3
  69. package/dist/lib/neutral/translations.mjs +1 -1
  70. package/dist/lib/neutral/translations.mjs.map +3 -3
  71. package/dist/lib/neutral/types/index.mjs +1 -1
  72. package/dist/lib/neutral/update-markdown-M4PTA6VS.mjs +24 -0
  73. package/dist/lib/neutral/update-markdown-M4PTA6VS.mjs.map +7 -0
  74. package/dist/types/dx.config.d.ts +28 -0
  75. package/dist/types/dx.config.d.ts.map +1 -0
  76. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  77. package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -1
  78. package/dist/types/src/MarkdownPlugin.workerd.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/anchor-sort.d.ts +1 -2
  80. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/comment-config.d.ts +1 -2
  82. package/dist/types/src/capabilities/comment-config.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/create-object.d.ts +1 -7
  84. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/editor-view-state.d.ts +7 -0
  86. package/dist/types/src/capabilities/editor-view-state.d.ts.map +1 -0
  87. package/dist/types/src/capabilities/index.d.ts +7 -16
  88. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/node.d.ts +2 -6
  90. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  92. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/settings.d.ts +1 -2
  94. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
  96. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/state.d.ts +1 -2
  98. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  99. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +2 -2
  100. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  101. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +5 -6
  102. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  103. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +3 -2
  104. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  105. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  106. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +2 -2
  107. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  108. package/dist/types/src/components/PreviewComponent/PreviewComponent.d.ts +17 -0
  109. package/dist/types/src/components/PreviewComponent/PreviewComponent.d.ts.map +1 -0
  110. package/dist/types/src/components/PreviewComponent/index.d.ts +2 -0
  111. package/dist/types/src/components/PreviewComponent/index.d.ts.map +1 -0
  112. package/dist/types/src/components/index.d.ts +1 -2
  113. package/dist/types/src/components/index.d.ts.map +1 -1
  114. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts +6 -17
  115. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -1
  116. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -1
  117. package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts +1 -1
  118. package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  119. package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -1
  120. package/dist/types/src/{components → containers}/MarkdownSettings/index.d.ts.map +1 -1
  121. package/dist/types/src/containers/index.d.ts +1 -0
  122. package/dist/types/src/containers/index.d.ts.map +1 -1
  123. package/dist/types/src/hooks/useExtensions.d.ts +5 -5
  124. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  125. package/dist/types/src/hooks/useLinkQuery.d.ts +2 -2
  126. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  127. package/dist/types/src/index.d.ts +1 -2
  128. package/dist/types/src/index.d.ts.map +1 -1
  129. package/dist/types/src/meta.d.ts +32 -2
  130. package/dist/types/src/meta.d.ts.map +1 -1
  131. package/dist/types/src/operations/update-markdown.d.ts.map +1 -1
  132. package/dist/types/src/plugin.workerd.d.ts +2 -0
  133. package/dist/types/src/plugin.workerd.d.ts.map +1 -0
  134. package/dist/types/src/skills/index.d.ts +2 -0
  135. package/dist/types/src/skills/index.d.ts.map +1 -0
  136. package/dist/types/src/skills/markdown-skill.d.ts +4 -0
  137. package/dist/types/src/skills/markdown-skill.d.ts.map +1 -0
  138. package/dist/types/src/types/Markdown.d.ts +12 -20
  139. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  140. package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -1
  141. package/dist/types/src/types/MarkdownOperation.d.ts +5 -28
  142. package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -1
  143. package/dist/types/src/types/types.d.ts +2 -0
  144. package/dist/types/src/types/types.d.ts.map +1 -1
  145. package/dist/types/tsconfig.tsbuildinfo +1 -1
  146. package/dx.config.ts +31 -0
  147. package/package.json +67 -59
  148. package/src/MarkdownPlugin.node.ts +2 -1
  149. package/src/MarkdownPlugin.test.ts +1 -1
  150. package/src/MarkdownPlugin.tsx +7 -16
  151. package/src/MarkdownPlugin.workerd.ts +5 -2
  152. package/src/capabilities/anchor-sort.ts +3 -2
  153. package/src/capabilities/comment-config.ts +6 -9
  154. package/src/capabilities/create-object.ts +1 -4
  155. package/src/capabilities/editor-view-state.ts +28 -0
  156. package/src/capabilities/index.ts +2 -16
  157. package/src/capabilities/node.ts +1 -0
  158. package/src/capabilities/react-surface.tsx +29 -13
  159. package/src/capabilities/settings.ts +2 -2
  160. package/src/capabilities/skill-definition.ts +14 -0
  161. package/src/capabilities/state.ts +8 -4
  162. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  163. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +72 -30
  164. package/src/components/MarkdownEditor/MarkdownEditor.tsx +14 -40
  165. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +7 -6
  166. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +2 -2
  167. package/src/components/PreviewComponent/PreviewComponent.tsx +195 -0
  168. package/src/components/PreviewComponent/index.ts +5 -0
  169. package/src/components/index.ts +1 -4
  170. package/src/containers/MarkdownArticle/MarkdownArticle.stories.tsx +3 -4
  171. package/src/containers/MarkdownArticle/MarkdownArticle.tsx +6 -6
  172. package/src/containers/MarkdownCard/MarkdownCard.tsx +2 -2
  173. package/src/{components → containers}/MarkdownSettings/MarkdownSettings.stories.tsx +1 -1
  174. package/src/containers/MarkdownSettings/MarkdownSettings.tsx +54 -0
  175. package/src/containers/index.ts +1 -0
  176. package/src/hooks/useEditorMenuOptions.ts +2 -2
  177. package/src/hooks/useExtensions.tsx +42 -22
  178. package/src/hooks/useLinkQuery.ts +5 -3
  179. package/src/index.ts +1 -2
  180. package/src/meta.ts +2 -22
  181. package/src/operations/create.conversations.json +1 -1
  182. package/src/operations/create.test.ts +5 -12
  183. package/src/operations/update-markdown.ts +7 -27
  184. package/src/operations/update.conversations.json +1 -1
  185. package/src/operations/update.test.ts +86 -16
  186. package/src/plugin.workerd.ts +5 -0
  187. package/src/skills/index.ts +5 -0
  188. package/src/{blueprints/markdown-blueprint.ts → skills/markdown-skill.ts} +8 -7
  189. package/src/testing.ts +2 -2
  190. package/src/translations.ts +1 -1
  191. package/src/types/Markdown.ts +20 -19
  192. package/src/types/MarkdownCapabilities.ts +7 -5
  193. package/src/types/MarkdownEvents.ts +1 -1
  194. package/src/types/MarkdownOperation.ts +12 -6
  195. package/src/types/types.ts +2 -7
  196. package/dist/lib/neutral/MarkdownArticle-LWT5RFFJ.mjs.map +0 -7
  197. package/dist/lib/neutral/MarkdownCard-TBLIRDBO.mjs.map +0 -7
  198. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs +0 -32
  199. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs.map +0 -7
  200. package/dist/lib/neutral/anchor-sort-UXN4RHFX.mjs.map +0 -7
  201. package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs +0 -67
  202. package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs.map +0 -7
  203. package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs +0 -56
  204. package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs.map +0 -7
  205. package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs +0 -15
  206. package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs.map +0 -7
  207. package/dist/lib/neutral/blueprints/index.mjs +0 -8
  208. package/dist/lib/neutral/chunk-36QFEVOZ.mjs +0 -30
  209. package/dist/lib/neutral/chunk-36QFEVOZ.mjs.map +0 -7
  210. package/dist/lib/neutral/chunk-67DKWOKF.mjs +0 -10
  211. package/dist/lib/neutral/chunk-67DKWOKF.mjs.map +0 -7
  212. package/dist/lib/neutral/chunk-CIJD7P6X.mjs +0 -8
  213. package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +0 -7
  214. package/dist/lib/neutral/chunk-Y2LQRUU7.mjs.map +0 -7
  215. package/dist/lib/neutral/comment-config-EGY7RPPW.mjs.map +0 -7
  216. package/dist/lib/neutral/create-object-MU2LGXG6.mjs.map +0 -7
  217. package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs +0 -14
  218. package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs.map +0 -7
  219. package/dist/lib/neutral/react-surface-XYZJBKHZ.mjs.map +0 -7
  220. package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +0 -7
  221. package/dist/lib/neutral/state-5COCF5PN.mjs +0 -44
  222. package/dist/lib/neutral/state-5COCF5PN.mjs.map +0 -7
  223. package/dist/lib/neutral/update-markdown-NNINDDV5.mjs +0 -44
  224. package/dist/lib/neutral/update-markdown-NNINDDV5.mjs.map +0 -7
  225. package/dist/types/src/blueprints/index.d.ts +0 -2
  226. package/dist/types/src/blueprints/index.d.ts.map +0 -1
  227. package/dist/types/src/blueprints/markdown-blueprint.d.ts +0 -4
  228. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +0 -1
  229. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -6
  230. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  231. package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -5
  232. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
  233. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -6
  234. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  235. package/dist/types/src/capabilities/navigation-resolver.d.ts +0 -6
  236. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +0 -1
  237. package/dist/types/src/paths.d.ts +0 -3
  238. package/dist/types/src/paths.d.ts.map +0 -1
  239. package/src/blueprints/index.ts +0 -5
  240. package/src/capabilities/app-graph-builder.ts +0 -63
  241. package/src/capabilities/app-graph-serializer.ts +0 -64
  242. package/src/capabilities/blueprint-definition.ts +0 -19
  243. package/src/capabilities/navigation-resolver.ts +0 -19
  244. package/src/components/MarkdownSettings/MarkdownSettings.tsx +0 -35
  245. package/src/paths.ts +0 -11
  246. /package/dist/lib/neutral/{chunk-CIJD7P6X.mjs.map → chunk-2V6A5NDQ.mjs.map} +0 -0
  247. /package/dist/lib/neutral/{create-JK35XC4R.mjs.map → create-OQUMKL5I.mjs.map} +0 -0
  248. /package/dist/lib/neutral/{create-markdown-7MLE625M.mjs.map → create-markdown-4O5FDA77.mjs.map} +0 -0
  249. /package/dist/lib/neutral/{open-5YC77C4O.mjs.map → open-BAZIRXII.mjs.map} +0 -0
  250. /package/dist/lib/neutral/{blueprints/index.mjs.map → operation-handler-SDCXGMGK.mjs.map} +0 -0
  251. /package/dist/lib/neutral/{scroll-to-anchor-GAFB7W55.mjs.map → scroll-to-anchor-I6HFE5AH.mjs.map} +0 -0
  252. /package/dist/lib/neutral/{set-view-mode-N7UHYMPG.mjs.map → set-view-mode-NY5OYYIM.mjs.map} +0 -0
  253. /package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.stories.d.ts +0 -0
  254. /package/dist/types/src/{components → containers}/MarkdownSettings/index.d.ts +0 -0
  255. /package/src/{components → containers}/MarkdownSettings/index.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/hooks/useEditorMenuOptions.ts", "../../../../src/hooks/useExtensions.tsx", "../../../../src/hooks/useLinkQuery.ts"],
4
- "sourcesContent": ["//\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').append(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';\n\nimport { fromUrlPath } from '@dxos/app-toolkit';\nimport { debounceAndThrottle } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-client';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace, useObject } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useThemeContext } from '@dxos/react-ui';\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 Extension,\n InputModeExtensions,\n type PreviewOptions,\n createDataExtensions,\n decorateMarkdown,\n documentId,\n folding,\n formattingKeymap,\n linkTooltip,\n listener,\n preview,\n replacer,\n selectionState,\n snippets,\n} from '@dxos/ui-editor';\nimport { type EditorViewMode, type RenderCallback } from '@dxos/ui-editor/types';\nimport { isTruthy, safeUrl } from '@dxos/util';\n\nimport { Markdown } from '#types';\n\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 compact?: boolean;\n viewMode?: EditorViewMode;\n editable?: boolean;\n selectionManager?: SelectionManager;\n editorStateStore?: EditorStateStore;\n previewOptions?: PreviewOptions;\n platform?: 'mobile' | 'desktop';\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 compact,\n viewMode,\n selectionManager,\n editorStateStore,\n previewOptions,\n onSelectObject,\n}: ExtensionsOptions): Extension[] => {\n const { platform } = useThemeContext();\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 compact,\n viewMode,\n selectionManager,\n previewOptions,\n platform,\n onSelectObject,\n }),\n [\n id,\n object,\n compact,\n viewMode,\n selectionManager,\n previewOptions,\n settings,\n settings?.debug,\n settings?.editorInputMode,\n settings?.folding,\n settings?.numberedHeadings,\n platform,\n onSelectObject,\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 compact,\n viewMode,\n selectionManager,\n previewOptions,\n platform,\n}: ExtensionsOptions): Extension[] => {\n const extensions: Extension[] = [\n selectionManager && selectionChange(selectionManager),\n settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],\n settings?.folding && !compact && platform !== 'mobile' && 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.snippets?.split(/[,\\n]/) ?? '';\n if (items) {\n extensions.push(snippets({ 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 // NOTE: Filter on numeric offsets BEFORE converting to cursor strings.\n // Cursors are opaque (Automerge-encoded), so a lexicographic `to > from`\n // comparison is nondeterministic — it would let some cursor-placements\n // (where from === to numerically) through and reject genuine selections\n // depending on encoding, which made the comment button's enabled state\n // appear random across different lines.\n const ranges = selection.ranges\n .filter((range) => range.to > range.from)\n .map((range) => ({\n from: cursorConverter.toCursor(range.from),\n to: cursorConverter.toCursor(range.to),\n }));\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 qualifiedId = isInternal ? fromUrlPath(new URL(url, window.location.origin).pathname) : undefined;\n const icon = Domino.of('span')\n .classNames('dx-link ms-1 inline-block align-[-0.125em]')\n .append(Domino.svg(isInternal ? 'ph--arrow-square-down--regular' : 'ph--arrow-square-out--regular'));\n\n if (isInternal) {\n invariant(qualifiedId, 'Invalid link format.');\n icon\n .attributes({ role: 'button', tabindex: '0' })\n .on('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n onSelectObject(qualifiedId);\n })\n .on('keydown', (event) => {\n const keyboardEvent = event as KeyboardEvent;\n if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') {\n return;\n }\n\n keyboardEvent.preventDefault();\n keyboardEvent.stopPropagation();\n onSelectObject(qualifiedId);\n });\n }\n\n el.appendChild(icon.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)?.toString() ?? url)\n .append(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 { Annotation, type Database, Filter, Obj, Query, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\nimport { type Label, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';\nimport { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';\n\nimport { Markdown } from '../types';\n\nexport const useLinkQuery = (db: Database.Database | undefined) => {\n const { t } = useTranslation();\n\n const filter = useMemo(\n () =>\n Filter.or(\n ...(db ? db.graph.registry.list().filter(Type.isType) : [])\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false)))\n .map((schema) => Filter.type(Type.getURI(schema))),\n ),\n [db],\n );\n\n const handleLinkQuery = useCallback(\n async (query?: string): Promise<EditorMenuGroup[]> => {\n // A second \"@\" switches the link query into block-embed mode, so \"@@foo\" searches for \"foo\".\n const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');\n const results = await db?.query(Query.select(filter)).run();\n\n const getLabel = (object: Obj.Unknown): Label => {\n const type = Obj.getTypename(object)!;\n return Obj.getLabel(object) ?? ['object-name.placeholder', { ns: type, defaultValue: 'New object' }];\n };\n\n const items =\n results\n ?.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))\n .map((object: Obj.Unknown): EditorMenuItem => {\n const type = Obj.getType(object);\n const icon = type\n ? Option.getOrUndefined(Annotation.IconAnnotation.get(Type.getSchema(type)))?.icon\n : undefined;\n const label = toLocalizedString(getLabel(object), t);\n return {\n id: object.id,\n label,\n icon,\n onSelect: ({ view, head }) => {\n const link = `[${label}](${Obj.getURI(object)})`;\n // \"@@\" inserts a block embed on its own line instead of an inline link.\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n }) ?? [];\n\n // Add \"Create new document\" option at the end.\n const createItem: EditorMenuItem = {\n id: 'create-document',\n label: ['add-object.label', { ns: Type.getTypename(Markdown.Document) }],\n icon: 'ph--plus--regular',\n onSelect: ({ view, head }) => {\n const doc = Markdown.make({ name: name || undefined });\n db?.add(doc);\n const label = name || t('object-name.placeholder', { ns: Type.getTypename(Markdown.Document) });\n const link = `[${label}](${Obj.getURI(doc)})`;\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n\n return [\n { id: 'echo', items },\n { id: 'create', items: [createItem] },\n ];\n },\n [db, filter, t],\n );\n\n return handleLinkQuery;\n};\n"],
5
- "mappings": "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",
6
- "names": ["useCallback", "useMemo", "useRef", "toLocalizedString", "useTranslation", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "Domino", "meta", "useEditorMenuOptions", "editorView", "slashCommandGroups", "onLinkQuery", "t", "id", "getMenu", "text", "trigger", "item", "label", "toLowerCase", "includes", "viewRef", "placeholder", "delay", "content", "pressEl", "of", "triggerEls", "map", "classNames", "forCommandsEl", "append", "root", "useMemo", "fromUrlPath", "debounceAndThrottle", "Obj", "createDocAccessor", "invariant", "getSpace", "useObject", "useIdentity", "useThemeContext", "Text", "Domino", "Cursor", "EditorView", "InputModeExtensions", "createDataExtensions", "decorateMarkdown", "documentId", "folding", "formattingKeymap", "linkTooltip", "listener", "preview", "replacer", "selectionState", "snippets", "isTruthy", "safeUrl", "Markdown", "identity", "useIdentity", "space", "getSpace", "object", "contentRef", "instanceOf", "useObject", "target", "settings", "compact", "viewMode", "selectionManager", "previewOptions", "platform", "onSelectObject", "id", "folding", "numberedHeadings", "createDocAccessor", "messenger", "Obj", "setFallbackName", "text", "baseExtensions", "selectionState", "filter", "selectionChange", "editorInputMode", "isTruthy", "formattingKeymap", "decorateMarkdown", "selectionChangeDelay", "undefined", "renderLinkButton", "linkTooltip", "renderLinkTooltip", "preview", "replacer", "items", "extensions", "snippets", "update", "documentId", "cursorConverter", "facet", "converter", "selection", "toCursor", "range", "updateMultiRange", "ranges", "updateListener", "debouncedHandler", "isInternal", "url", "startsWith", "icon", "Domino", "classNames", "invariant", "qualifiedId", "attributes", "tabindex", "on", "event", "preventDefault", "stopPropagation", "keyboardEvent", "appendChild", "el", "rel", "Option", "useCallback", "useMemo", "Annotation", "Filter", "Obj", "Query", "Type", "HiddenAnnotation", "getTypeAnnotation", "Kind", "EntityKind", "toLocalizedString", "useTranslation", "insertAtCursor", "insertAtLineStart", "useLinkQuery", "db", "t", "useTranslation", "filter", "useMemo", "Filter", "or", "graph", "registry", "list", "Type", "isType", "schema", "getTypeAnnotation", "getSchema", "kind", "EntityKind", "Relation", "HiddenAnnotation", "get", "pipe", "getOrElse", "map", "type", "getURI", "handleLinkQuery", "useCallback", "query", "name", "startsWith", "slice", "toLowerCase", "results", "Query", "select", "run", "getLabel", "object", "Obj", "getTypename", "ns", "defaultValue", "items", "toLocalizedString", "includes", "getType", "icon", "getOrUndefined", "Annotation", "IconAnnotation", "undefined", "label", "id", "onSelect", "view", "head", "link", "insertAtLineStart", "insertAtCursor", "createItem", "Markdown", "Document", "doc", "make", "add"]
4
+ "sourcesContent": ["//\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.profile.key);\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([linkSlashCommands, formattingCommands, ...(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').append(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';\n\nimport { Paths } from '@dxos/app-toolkit';\nimport { debounceAndThrottle } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { Doc } from '@dxos/echo-doc';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace, useObject } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useThemeContext } from '@dxos/react-ui';\nimport { type ViewStateManager, selectionAspect } from '@dxos/react-ui-attention';\nimport { Text } from '@dxos/schema';\nimport { Domino } from '@dxos/ui';\nimport {\n AnchorWidget,\n Cursor,\n type EditorStateStore,\n EditorView,\n type Extension,\n InputModeExtensions,\n type XmlWidgetProps,\n type XmlWidgetState,\n createDataExtensions,\n decorateMarkdown,\n documentId,\n folding,\n formattingKeymap,\n linkTooltip,\n listener,\n replacer,\n selectionState,\n snippets,\n xmlTags,\n} from '@dxos/ui-editor';\nimport { type EditorViewMode, type RenderCallback } from '@dxos/ui-editor/types';\nimport { isTruthy, safeUrl } from '@dxos/util';\n\nimport { Markdown } from '#types';\n\nimport { PreviewComponent } from '../components/PreviewComponent/PreviewComponent';\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 compact?: boolean;\n viewMode?: EditorViewMode;\n editable?: boolean;\n viewState?: ViewStateManager;\n editorStateStore?: EditorStateStore;\n setWidgets?: (widgets: XmlWidgetState[]) => void;\n platform?: 'mobile' | 'desktop';\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 compact,\n viewMode,\n viewState,\n editorStateStore,\n setWidgets,\n onSelectObject,\n}: ExtensionsOptions): Extension[] => {\n const { platform } = useThemeContext();\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 Doc.createAccessor).\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 compact,\n viewMode,\n viewState,\n setWidgets,\n platform,\n onSelectObject,\n }),\n [\n id,\n object,\n compact,\n viewMode,\n viewState,\n setWidgets,\n settings,\n settings?.debug,\n settings?.editorInputMode,\n settings?.folding,\n settings?.numberedHeadings,\n platform,\n onSelectObject,\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: Doc.createAccessor(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 compact,\n viewMode,\n viewState,\n setWidgets,\n platform,\n}: ExtensionsOptions): Extension[] => {\n const extensions: Extension[] = [\n viewState && selectionChange(viewState),\n settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],\n settings?.folding && !compact && platform !== 'mobile' && 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 // xmlTags() handles dxn:/echo: links via url-scheme widgets; skip here to avoid double-processing.\n skip: ({ url }) => url.startsWith('dxn:') || url.startsWith('echo:'),\n }),\n linkTooltip(renderLinkTooltip),\n xmlTags({\n registry: {\n 'dxn-preview': {\n block: true,\n urlSchemes: ['dxn:', 'echo:'],\n Component: PreviewComponent,\n },\n 'link-preview': {\n block: false,\n urlSchemes: ['dxn:', 'echo:'],\n factory: ({ label, dxn }: XmlWidgetProps<{ label: string; dxn: string }>) =>\n label && dxn ? new AnchorWidget(label, dxn) : null,\n },\n },\n setWidgets,\n }),\n replacer(),\n ],\n );\n }\n\n if (settings?.debug) {\n const items = settings.snippets?.split(/[,\\n]/) ?? '';\n if (items) {\n extensions.push(snippets({ items }));\n }\n }\n\n return extensions;\n};\n\nconst selectionChange = (viewState: ViewStateManager) => {\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 // NOTE: Filter on numeric offsets BEFORE converting to cursor strings.\n // Cursors are opaque (Automerge-encoded), so a lexicographic `to > from`\n // comparison is nondeterministic — it would let some cursor-placements\n // (where from === to numerically) through and reject genuine selections\n // depending on encoding, which made the comment button's enabled state\n // appear random across different lines.\n const ranges = selection.ranges\n .filter((range) => range.to > range.from)\n .map((range) => ({\n from: cursorConverter.toCursor(range.from),\n to: cursorConverter.toCursor(range.to),\n }));\n\n viewState.set(selectionAspect, id, { mode: 'multi-range', 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 qualifiedId = isInternal ? Paths.fromUrlPath(new URL(url, window.location.origin).pathname) : undefined;\n const icon = Domino.of('span')\n .classNames('dx-link ms-1 inline-block align-[-0.125em]')\n .append(Domino.svg(isInternal ? 'ph--arrow-square-down--regular' : 'ph--arrow-square-out--regular'));\n\n if (isInternal) {\n invariant(qualifiedId, 'Invalid link format.');\n icon\n .attributes({ role: 'button', tabindex: '0' })\n .on('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n onSelectObject(qualifiedId);\n })\n .on('keydown', (event) => {\n const keyboardEvent = event as KeyboardEvent;\n if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') {\n return;\n }\n\n keyboardEvent.preventDefault();\n keyboardEvent.stopPropagation();\n onSelectObject(qualifiedId);\n });\n }\n\n el.appendChild(icon.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)?.toString() ?? url)\n .append(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 { Annotation, type Database, Filter, Obj, Query, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\nimport { type Label, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';\nimport { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';\n\nimport { Markdown } from '../types';\n\nexport const useLinkQuery = (db: Database.Database | undefined, current?: Obj.Unknown) => {\n const { t } = useTranslation();\n\n const filter = useMemo(\n () =>\n Filter.or(\n ...(db ? db.graph.registry.list().filter(Type.isType) : [])\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false)))\n .map((schema) => Filter.type(Type.getURI(schema))),\n ),\n [db],\n );\n\n const handleLinkQuery = useCallback(\n async (query?: string): Promise<EditorMenuGroup[]> => {\n // A second \"@\" switches the link query into block-embed mode, so \"@@foo\" searches for \"foo\".\n const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');\n const results = await db?.query(Query.select(filter)).run();\n\n const getLabel = (object: Obj.Unknown): Label => {\n const type = Obj.getTypename(object)!;\n return Obj.getLabel(object) ?? ['object-name.placeholder', { ns: type, defaultValue: 'New object' }];\n };\n\n const items =\n results\n // Exclude the current document; it cannot link to itself.\n ?.filter((object) => object.id !== current?.id)\n .filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))\n .map((object: Obj.Unknown): EditorMenuItem => {\n const type = Obj.getType(object);\n const icon = type\n ? Option.getOrUndefined(Annotation.IconAnnotation.get(Type.getSchema(type)))?.icon\n : undefined;\n const label = toLocalizedString(getLabel(object), t);\n return {\n id: object.id,\n label,\n icon,\n onSelect: ({ view, head }) => {\n const link = `[${label}](${Obj.getURI(object)})`;\n // \"@@\" inserts a block embed on its own line instead of an inline link.\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n }) ?? [];\n\n // Add \"Create new document\" option at the end.\n const createItem: EditorMenuItem = {\n id: 'create-document',\n label: ['add-object.label', { ns: Type.getTypename(Markdown.Document) }],\n icon: 'ph--plus--regular',\n onSelect: ({ view, head }) => {\n const doc = Markdown.make({ name: name || undefined });\n db?.add(doc);\n const label = name || t('object-name.placeholder', { ns: Type.getTypename(Markdown.Document) });\n const link = `[${label}](${Obj.getURI(doc)})`;\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n\n return [\n { id: 'echo', items },\n { id: 'create', items: [createItem] },\n ];\n },\n [db, filter, t, current],\n );\n\n return handleLinkQuery;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;AAKA,SAASA,aAAaC,SAASC,cAAc;AAE7C,SAASC,mBAAmBC,sBAAsB;AAClD,SAGEC,kBACAC,oBACAC,yBACK;AACP,SAASC,cAAc;AAEvB,SAASC,YAAY;AAQd,IAAMC,uBAAuB,CAAC,EACnCC,YACAC,oBACAC,YAAW,MACe;AAC1B,QAAM,EAAEC,EAAC,IAAKV,eAAeK,KAAKM,QAAQC,GAAG;AAE7C,QAAMC,UAAUjB,YACd,CAAC,EAAEkB,MAAMC,QAAO,MAAE;AAChB,YAAQA,SAAAA;MACN,KAAK,KAAK;AACR,eAAON,cAAcK,IAAAA,KAAS,CAAA;MAChC;MAEA,KAAK;MACL,SAAS;AACP,eAAOb,iBAAiB;UAACE;UAAmBD;aAAwBM,sBAAsB,CAAA;WAAM,CAACQ,SAC/FF,OAAOf,kBAAkBiB,KAAKC,OAAOP,CAAAA,EAAGQ,YAAW,EAAGC,SAASL,KAAKI,YAAW,CAAA,IAAM,IAAA;MAEzF;IACF;EACF,GACA;IAACV;IAAoBC;GAAY;AAGnC,QAAMW,UAAUtB,OAAOS,UAAAA;AACvB,SAAOV,QAA4B,MAAA;AACjC,UAAMkB,UAAUN,cAAc;MAAC;MAAK;QAAO;MAAC;;AAC5C,UAAMY,cAAc;MAClBC,OAAO;MACPC,SAAS,MAAA;AACP,cAAMC,UAAUpB,OAAOqB,GAAG,MAAA,EAAQX,KAAK,OAAA;AACvC,cAAMY,aAAaX,QAAQY,IAAI,CAACb,SAC9BV,OAAOqB,GAAG,MAAA,EAAQG,WAAW,kEAAA,EAAoEd,KAAKA,IAAAA,CAAAA;AAExG,cAAMe,gBAAgBzB,OAAOqB,GAAG,MAAA,EAAQX,KAAK,eAAA;AAC7C,eAAOV,OAAOqB,GAAG,KAAA,EAAOK,OAAON,SAAAA,GAAYE,YAAYG,aAAAA,EAAeE;MACxE;IACF;AAEA,WAAO;MAAEX;MAASP;MAASE;MAASM;IAAY;EAClD,GAAG;IAACR;IAASJ;GAAY;AAC3B;;;AC9DA,SAASuB,WAAAA,gBAAe;AAExB,SAASC,aAAa;AACtB,SAASC,2BAA2B;AACpC,SAASC,WAAW;AACpB,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,iBAAiB;AACpC,SAASC,mBAAmB;AAC5B,SAASC,uBAAuB;AAChC,SAAgCC,uBAAuB;AACvD,SAASC,YAAY;AACrB,SAASC,UAAAA,eAAc;AACvB,SACEC,cACAC,QAEAC,YAEAC,qBAGAC,sBACAC,kBACAC,YACAC,SACAC,kBACAC,aACAC,UACAC,UACAC,gBACAC,UACAC,eACK;AAEP,SAASC,UAAUC,eAAe;AAElC,SAASC,gBAAgB;AAsBzB,IAAA,eAAA;AAaE,IAAMC,gBAAWC,CAAAA,EAAAA,IAAAA,QAAAA,UAAAA,SAAAA,UAAAA,WAAAA,kBAAAA,YAAAA,eAAAA,MAAAA;AACjB,QAAMC,EAAAA,SAAQC,IAAAA,gBAASC;AAEvB,QAAA,WAAA,YAAA;AACA,QAAMC,QAAAA,SAAiBC,MAAAA;AAEvBC,QAAAA,aAAUF,IAAAA,WAAAA,SAAAA,UAAAA,MAAAA,IAAAA,OAAAA,UAAAA;AAEV,YAAMG,UAASH;AAGf,QAAA,SAAA,YAAA,WAA6B,IAAA,WAAA,KAAA,MAAA,MAAA,IAAA,SAAA;yBAQvBD,SAAAA,MAAAA,qBAAAA;IACAK;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IAEJ;IACEC;EACAZ,CAAAA,GAAAA;IACAM;IACAC;IACAC;IACAC;IACAJ;IACAA;IACAA;IACAA,UAAUQ;IACVR,UAAUS;IACVJ,UAAAA;IACAC,UAAAA;IACD;IAGH;;kBAIM,MAAA;;;cAIUI,qBAAmBX;;YAAmB,IAAA,eAAA,QAAA;QAC5CY;MACApB,CAAAA;MACF,WAAA;MAEF;IACAqB,CAAAA;;mBAGMC,SAAgBlB,UAA6BmB,MAAAA,KAAAA,SAAAA;MAC/C,UAAA,CAAA,EAAA,KAAA,MAAA;AACF,wBAAA,QAAA,IAAA;MAEFC;IACAC,CAAAA;IACAC;IACH1B,eAAAA,gBAAAA;EAAUE,EAAAA,OAAAA,QAAAA,GAAAA;IAAOc;IAAIZ;IAAQI;IAAQgB;IAAe;IAEvD;EAEF,CAAA;;IAeIZ,uBAAae,CAAAA,EAAAA,IAAgBf,QAAAA,gBAAAA,UAAAA,SAAAA,UAAAA,WAAAA,YAAAA,SAAAA,MAAAA;QAC7BH,aAAUmB;IACVnB,aAAUQ,gBAAYP,SAAWI;IACjCY,UAAOG,mBAAAA,oBAAAA,SAAAA,eAAAA;IAEP,UAAA,WAAA,CAAA,WAAA,aAAA,YAAA,QAAA;EACF,EAAA,OAAA,QAAW;mBAKLC,UAAAA;eACAC,KAAAA,GAAAA;uBACEC;uBACAd;8BAAuD;QAAE,kBAAIe,UAAAA,mBAAAA;UAC7D,MAAA;QACAC,IAAAA;;QAEAC,kBAAmBC,kBAAe,iBAAeC,cAAW;;QAE9DC,MAAAA,CAAAA,EAAYC,IAAAA,MAAAA,IAAAA,WAAAA,MAAAA,KAAAA,IAAAA,WAAAA,OAAAA;MACZC,CAAAA;kBACEC,iBAAU;cACR;kBACEC;yBACAC;mBAAa;wBAAQ;cAAQ;cAC7BC;YACF;YACA,WAAA;;0BAEc;mBAAC;wBAAQ;cAAQ;cAC7BC;YAEF;YACF,SAAA,CAAA,EAAA,OAAA,IAAA,MAAA,SAAA,MAAA,IAAA,aAAA,OAAA,GAAA,IAAA;UACAhC;QACF;QACAiC;MACD,CAAA;MAEL,SAAA;IAEIrC,CAAAA;;MAEF,UAAIsC,OAAO;UACTC,QAAAA,SAAgBC,UAAS,MAAA,OAAA,KAAA;eAAEF;AAAM,iBAAA,KAAA,SAAA;QACnC;MACF,CAAA,CAAA;IAEA;EACF;AAEA,SAAMpB;;sBAESuB,CAAAA,cAAkB;QAC7B,mBAAMC,oBAA+BC,CAAK,WAAQC;AAClD,UAAMC,KAAAA,OAAYJ,MAAAA,MAAY,UAAU;AACxC,UAAA,kBAAA,OAAA,MAAA,MAAA,OAAA,SAAA;AACA,UAAA,YAAA,OAAA,MAAA;mBASQC,UAAAA,OAAgBI,OAASC,CAAAA,UAAQ,MAAA,KAAA,MAAA,IAAA,EAAA,IAAA,CAAA,WAAA;MACvC,MAAA,gBAAA,SAAA,MAAA,IAAA;MAEF5C,IAAU6C,gBAAIC,SAAqB,MAAA,EAAA;IAAEC,EAAAA;cAAqBC,IAAAA,iBAAAA,IAAAA;MAAO,MAAA;MAChE;IAEH,CAAA;QACE;oBACEC,eAAiBX,GAAAA,CAAAA,WAAAA;AACnB,QAAA,OAAA,cAAA;AACF,uBAAA,MAAA;IACF;EAEA,CAAA;;uBAIUY,CAAAA,mBAA4B,CAAA,IAAA,EAAQ1B,IAAIC,MAAAA;AAE9C,QAAM0B,aAAOC,IAAU,WACpBC,GAAAA,KAAW,IAAA,WAAA,OAAA,SAAA,MAAA;AAGd,QAAIH,cAAY,aAAA,MAAA,YAAA,IAAA,IAAA,KAAA,OAAA,SAAA,MAAA,EAAA,QAAA,IAAA;QACdI,OAAAA,QAAUC,GAAAA,MAAa,EAAA,WAAA,4CAAA,EAAA,OAAAH,QAAA,IAAA,aAAA,mCAAA,+BAAA,CAAA;MACvBD,YACGK;cAAmB,aAAA,wBAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,KAAA,GAAA,QAAA,GAAA,CAAA,eAAA,wBAAA,EAAA,CAAA;SAAUC,WAAU;MACvCC,MAAG;MACFC,UAAMC;UACND,SAAME,CAAAA,UAAAA;AACN1D,YAAAA,eAAeoD;AAEhBG,YAAG,gBAAYC;AACd,qBAAMG,WAAgBH;UACtB,WAAIG,CAAAA,UAAiB;YACnB,gBAAA;AACF,UAAA,cAAA,QAAA,WAAA,cAAA,QAAA,KAAA;AAEAA;MACAA;AACA3D,oBAAAA,eAAeoD;AACjB,oBAAA,gBAAA;AACJ,qBAAA,WAAA;IAEGQ,CAAAA;EACL;AAEIpC,KAAAA,YAAAA,KAAsDqC,IAAI;AAC9DA;wBAEwBxC,CAAAA,IAAAA,EAAAA,IAAAA,MAAAA;iBAAa4B,QAAA,GAAA,GAAA,EAAA,WAAA;IAAUa,MAAK;IAC/CZ,QAAAA;IAIP,KAAA;;;;;AC3RA,YAAYa,YAAY;AACxB,SAASC,eAAAA,cAAaC,WAAAA,gBAAe;AAErC,SAASC,YAA2BC,QAAQC,OAAAA,MAAKC,OAAOC,YAAY;AACpE,SAASC,kBAAkBC,yBAAyB;AACpD,SAASC,QAAQC,kBAAkB;AACnC,SAAqBC,qBAAAA,oBAAmBC,kBAAAA,uBAAsB;AAE9D,SAASC,gBAAgBC,yBAAyB;AAI3C,IAAMC,eAAe,CAACC,IAAmCC,YAAAA;AAC9D,QAAM,EAAEC,EAAC,IAAKC,gBAAAA;AAEd,QAAMC,SAASC,SACb,MACEC,OAAOC,GAAE,IACHP,KAAKA,GAAGQ,MAAMC,SAASC,KAAI,EAAGN,OAAOO,KAAKC,MAAM,IAAI,CAAA,GACrDR,OAAO,CAACS,WAAWC,kBAAkBH,KAAKI,UAAUF,MAAAA,CAAAA,GAAUG,SAASC,WAAWC,QAAQ,EAC1Fd,OAAO,CAACS,WAAW,CAACM,iBAAiBC,IAAIT,KAAKI,UAAUF,MAAAA,CAAAA,EAASQ,KAAYC,iBAAU,MAAM,KAAA,CAAA,CAAA,EAC7FC,IAAI,CAACV,WAAWP,OAAOkB,KAAKb,KAAKc,OAAOZ,MAAAA,CAAAA,CAAAA,CAAAA,GAE/C;IAACb;GAAG;AAGN,QAAM0B,kBAAkBC,aACtB,OAAOC,UAAAA;AAEL,UAAMC,OAAOD,OAAOE,WAAW,GAAA,IAAOF,MAAMG,MAAM,CAAA,EAAGC,YAAW,IAAMJ,OAAOI,YAAAA,KAAiB;AAC9F,UAAMC,UAAU,MAAMjC,IAAI4B,MAAMM,MAAMC,OAAO/B,MAAAA,CAAAA,EAASgC,IAAAA;AAEtD,UAAMC,WAAW,CAACC,WAAAA;AAChB,YAAMd,OAAOe,KAAIC,YAAYF,MAAAA;AAC7B,aAAOC,KAAIF,SAASC,MAAAA,KAAW;QAAC;QAA2B;UAAEG,IAAIjB;UAAMkB,cAAc;QAAa;;IACpG;AAEA,UAAMC,QACJV,SAEI7B,OAAO,CAACkC,WAAWA,OAAOM,OAAO3C,SAAS2C,EAAAA,EAC3CxC,OAAO,CAACkC,WAAWO,mBAAkBR,SAASC,MAAAA,GAASpC,CAAAA,EAAG8B,YAAW,EAAGc,SAASjB,IAAAA,CAAAA,EACjFN,IAAI,CAACe,WAAAA;AACJ,YAAMd,OAAOe,KAAIQ,QAAQT,MAAAA;AACzB,YAAMU,OAAOxB,OACFyB,sBAAeC,WAAWC,eAAe/B,IAAIT,KAAKI,UAAUS,IAAAA,CAAAA,CAAAA,GAASwB,OAC5EI;AACJ,YAAMC,QAAQR,mBAAkBR,SAASC,MAAAA,GAASpC,CAAAA;AAClD,aAAO;QACL0C,IAAIN,OAAOM;QACXS;QACAL;QACAM,UAAU,CAAC,EAAEC,MAAMC,KAAI,MAAE;AACvB,gBAAMC,OAAO,IAAIJ,KAAAA,KAAUd,KAAId,OAAOa,MAAAA,CAAAA;AAEtC,cAAIV,OAAOE,WAAW,GAAA,GAAM;AAC1B4B,8BAAkBH,MAAMC,MAAM,IAAIC,IAAAA;CAAQ;UAC5C,OAAO;AACLE,2BAAeJ,MAAMC,MAAM,GAAGC,IAAAA,GAAO;UACvC;QACF;MACF;IACF,CAAA,KAAM,CAAA;AAGV,UAAMG,aAA6B;MACjChB,IAAI;MACJS,OAAO;QAAC;QAAoB;UAAEZ,IAAI9B,KAAK6B,YAAYqB,iBAASC,QAAQ;QAAE;;MACtEd,MAAM;MACNM,UAAU,CAAC,EAAEC,MAAMC,KAAI,MAAE;AACvB,cAAMO,MAAMF,iBAASG,KAAK;UAAEnC,MAAMA,QAAQuB;QAAU,CAAA;AACpDpD,YAAIiE,IAAIF,GAAAA;AACR,cAAMV,QAAQxB,QAAQ3B,EAAE,2BAA2B;UAAEuC,IAAI9B,KAAK6B,YAAYqB,iBAASC,QAAQ;QAAE,CAAA;AAC7F,cAAML,OAAO,IAAIJ,KAAAA,KAAUd,KAAId,OAAOsC,GAAAA,CAAAA;AACtC,YAAInC,OAAOE,WAAW,GAAA,GAAM;AAC1B4B,4BAAkBH,MAAMC,MAAM,IAAIC,IAAAA;CAAQ;QAC5C,OAAO;AACLE,yBAAeJ,MAAMC,MAAM,GAAGC,IAAAA,GAAO;QACvC;MACF;IACF;AAEA,WAAO;MACL;QAAEb,IAAI;QAAQD;MAAM;MACpB;QAAEC,IAAI;QAAUD,OAAO;UAACiB;;MAAY;;EAExC,GACA;IAAC5D;IAAII;IAAQF;IAAGD;GAAQ;AAG1B,SAAOyB;AACT;",
6
+ "names": ["useCallback", "useMemo", "useRef", "toLocalizedString", "useTranslation", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "Domino", "meta", "useEditorMenuOptions", "editorView", "slashCommandGroups", "onLinkQuery", "t", "profile", "key", "getMenu", "text", "trigger", "item", "label", "toLowerCase", "includes", "viewRef", "placeholder", "delay", "content", "pressEl", "of", "triggerEls", "map", "classNames", "forCommandsEl", "append", "root", "useMemo", "Paths", "debounceAndThrottle", "Obj", "Doc", "invariant", "getSpace", "useObject", "useIdentity", "useThemeContext", "selectionAspect", "Text", "Domino", "AnchorWidget", "Cursor", "EditorView", "InputModeExtensions", "createDataExtensions", "decorateMarkdown", "documentId", "folding", "formattingKeymap", "linkTooltip", "listener", "replacer", "selectionState", "snippets", "xmlTags", "isTruthy", "safeUrl", "Markdown", "identity", "useIdentity", "space", "getSpace", "object", "contentRef", "instanceOf", "useObject", "target", "settings", "compact", "viewMode", "viewState", "setWidgets", "platform", "onSelectObject", "id", "folding", "numberedHeadings", "Doc", "messenger", "Obj", "setFallbackName", "text", "baseExtensions", "selectionState", "filter", "selectionChange", "editorInputMode", "isTruthy", "formattingKeymap", "decorateMarkdown", "selectionChangeDelay", "undefined", "renderLinkButton", "skip", "url", "startsWith", "linkTooltip", "renderLinkTooltip", "xmlTags", "registry", "block", "urlSchemes", "Component", "factory", "replacer", "items", "extensions", "snippets", "update", "cursorConverter", "facet", "converter", "selection", "toCursor", "range", "set", "selectionAspect", "mode", "ranges", "debouncedHandler", "isInternal", "icon", "Domino", "classNames", "invariant", "qualifiedId", "attributes", "tabindex", "on", "event", "preventDefault", "stopPropagation", "keyboardEvent", "appendChild", "el", "rel", "Option", "useCallback", "useMemo", "Annotation", "Filter", "Obj", "Query", "Type", "HiddenAnnotation", "getTypeAnnotation", "Kind", "EntityKind", "toLocalizedString", "useTranslation", "insertAtCursor", "insertAtLineStart", "useLinkQuery", "db", "current", "t", "useTranslation", "filter", "useMemo", "Filter", "or", "graph", "registry", "list", "Type", "isType", "schema", "getTypeAnnotation", "getSchema", "kind", "EntityKind", "Relation", "HiddenAnnotation", "get", "pipe", "getOrElse", "map", "type", "getURI", "handleLinkQuery", "useCallback", "query", "name", "startsWith", "slice", "toLowerCase", "results", "Query", "select", "run", "getLabel", "object", "Obj", "getTypename", "ns", "defaultValue", "items", "id", "toLocalizedString", "includes", "getType", "icon", "getOrUndefined", "Annotation", "IconAnnotation", "undefined", "label", "onSelect", "view", "head", "link", "insertAtLineStart", "insertAtCursor", "createItem", "Markdown", "Document", "doc", "make", "add"]
7
7
  }
@@ -1,7 +1,3 @@
1
- import {
2
- getDocumentPath,
3
- getDocumentsPath
4
- } from "./chunk-67DKWOKF.mjs";
5
1
  import {
6
2
  getContentSnippet,
7
3
  getFallbackName,
@@ -10,34 +6,32 @@ import {
10
6
  serializer,
11
7
  setFallbackName
12
8
  } from "./chunk-KDN4GKG2.mjs";
13
- import {
14
- meta
15
- } from "./chunk-36QFEVOZ.mjs";
16
- import {
17
- MarkdownOperationHandlerSet
18
- } from "./chunk-CIJD7P6X.mjs";
19
9
  import {
20
10
  MarkdownCapabilities_exports,
21
11
  MarkdownEvents_exports,
22
12
  MarkdownOperation_exports,
23
13
  Markdown_exports,
24
14
  Settings_exports
25
- } from "./chunk-Y2LQRUU7.mjs";
15
+ } from "./chunk-ZJ3GWRUJ.mjs";
16
+ import {
17
+ meta
18
+ } from "./chunk-OC3JD73N.mjs";
19
+ import {
20
+ MarkdownOperationHandlerSet
21
+ } from "./chunk-2V6A5NDQ.mjs";
26
22
  import {
27
- markdown_blueprint_default
28
- } from "./chunk-LXNSKCPD.mjs";
23
+ markdown_skill_default
24
+ } from "./chunk-EV4ZOL4P.mjs";
29
25
  import "./chunk-J5LGTIGS.mjs";
30
26
  export {
31
27
  Markdown_exports as Markdown,
32
- markdown_blueprint_default as MarkdownBlueprint,
33
28
  MarkdownCapabilities_exports as MarkdownCapabilities,
34
29
  MarkdownEvents_exports as MarkdownEvents,
35
30
  MarkdownOperation_exports as MarkdownOperation,
36
31
  MarkdownOperationHandlerSet,
32
+ markdown_skill_default as MarkdownSkill,
37
33
  Settings_exports as Settings,
38
34
  getContentSnippet,
39
- getDocumentPath,
40
- getDocumentsPath,
41
35
  getFallbackName,
42
36
  isEditorModel,
43
37
  isMarkdownProperties,