@dxos/plugin-markdown 0.8.4-staging.60fe92afc8 → 0.9.1-main.c7dcc2e112

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 (137) hide show
  1. package/dist/lib/neutral/{MarkdownArticle-LWT5RFFJ.mjs → MarkdownArticle-I4UMD7AA.mjs} +3 -3
  2. package/dist/lib/neutral/MarkdownArticle-I4UMD7AA.mjs.map +7 -0
  3. package/dist/lib/neutral/{MarkdownCard-TBLIRDBO.mjs → MarkdownCard-OYO2HYZF.mjs} +2 -2
  4. package/dist/lib/neutral/MarkdownCard-OYO2HYZF.mjs.map +7 -0
  5. package/dist/lib/neutral/MarkdownPlugin.mjs +6 -9
  6. package/dist/lib/neutral/MarkdownPlugin.mjs.map +3 -3
  7. package/dist/lib/neutral/{MarkdownSettings-YCTZJL5V.mjs → MarkdownSettings-F5AWRDT3.mjs} +2 -2
  8. package/dist/lib/neutral/{MarkdownSettings-YCTZJL5V.mjs.map → MarkdownSettings-F5AWRDT3.mjs.map} +3 -3
  9. package/dist/lib/neutral/{app-graph-builder-BWBA23FF.mjs → app-graph-builder-6Y5NHTNR.mjs} +3 -4
  10. package/dist/lib/neutral/app-graph-builder-6Y5NHTNR.mjs.map +7 -0
  11. package/dist/lib/neutral/capabilities/index.mjs +6 -8
  12. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  13. package/dist/lib/neutral/capabilities/node.mjs +1 -1
  14. package/dist/lib/neutral/{chunk-67DKWOKF.mjs → chunk-4ULSRZRL.mjs} +3 -3
  15. package/dist/lib/neutral/chunk-4ULSRZRL.mjs.map +7 -0
  16. package/dist/lib/neutral/chunk-BL46CERY.mjs +8 -0
  17. package/dist/lib/neutral/{chunk-Y2LQRUU7.mjs → chunk-CRKAIDRD.mjs} +11 -11
  18. package/dist/lib/neutral/chunk-CRKAIDRD.mjs.map +7 -0
  19. package/dist/lib/neutral/chunk-GUXWFDD4.mjs +43 -0
  20. package/dist/lib/neutral/chunk-GUXWFDD4.mjs.map +7 -0
  21. package/dist/lib/neutral/components/index.mjs +9 -8
  22. package/dist/lib/neutral/components/index.mjs.map +3 -3
  23. package/dist/lib/neutral/containers/index.mjs +2 -2
  24. package/dist/lib/neutral/{create-JK35XC4R.mjs → create-XW2FQNLK.mjs} +2 -2
  25. package/dist/lib/neutral/{create-markdown-7MLE625M.mjs → create-markdown-KLSVQCT7.mjs} +2 -2
  26. package/dist/lib/neutral/{create-object-MU2LGXG6.mjs → create-object-3WMEQJ2C.mjs} +2 -2
  27. package/dist/lib/neutral/hooks/index.mjs +16 -12
  28. package/dist/lib/neutral/hooks/index.mjs.map +3 -3
  29. package/dist/lib/neutral/index.mjs +4 -4
  30. package/dist/lib/neutral/meta.json +1 -1
  31. package/dist/lib/neutral/meta.mjs +1 -1
  32. package/dist/lib/neutral/{navigation-resolver-3KBOMN4U.mjs → navigation-resolver-3WEM7SSC.mjs} +3 -3
  33. package/dist/lib/neutral/navigation-resolver-3WEM7SSC.mjs.map +7 -0
  34. package/dist/lib/neutral/{open-5YC77C4O.mjs → open-F7KLNKVN.mjs} +2 -2
  35. package/dist/lib/neutral/operations/index.mjs +1 -1
  36. package/dist/lib/neutral/plugin.mjs +2 -2
  37. package/dist/lib/neutral/{react-surface-XYZJBKHZ.mjs → react-surface-6LX4ZQ2H.mjs} +7 -12
  38. package/dist/lib/neutral/react-surface-6LX4ZQ2H.mjs.map +7 -0
  39. package/dist/lib/neutral/{scroll-to-anchor-GAFB7W55.mjs → scroll-to-anchor-ACND3WJU.mjs} +2 -2
  40. package/dist/lib/neutral/{set-view-mode-N7UHYMPG.mjs → set-view-mode-WDC7CAEC.mjs} +2 -2
  41. package/dist/lib/neutral/{settings-TDGDLCUR.mjs → settings-O6O6HT3I.mjs} +3 -3
  42. package/dist/lib/neutral/settings-O6O6HT3I.mjs.map +7 -0
  43. package/dist/lib/neutral/state-ZYT3JRWT.mjs +69 -0
  44. package/dist/lib/neutral/state-ZYT3JRWT.mjs.map +7 -0
  45. package/dist/lib/neutral/testing.mjs +2 -2
  46. package/dist/lib/neutral/testing.mjs.map +3 -3
  47. package/dist/lib/neutral/translations.mjs +1 -1
  48. package/dist/lib/neutral/translations.mjs.map +3 -3
  49. package/dist/lib/neutral/types/index.mjs +1 -1
  50. package/dist/lib/neutral/{update-markdown-NNINDDV5.mjs → update-markdown-FGVN3LD4.mjs} +2 -2
  51. package/dist/types/dx.config.d.ts +28 -0
  52. package/dist/types/dx.config.d.ts.map +1 -0
  53. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/editor-view-state.d.ts +7 -0
  55. package/dist/types/src/capabilities/editor-view-state.d.ts.map +1 -0
  56. package/dist/types/src/capabilities/index.d.ts +9 -16
  57. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  58. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/node.d.ts +1 -6
  60. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  62. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/state.d.ts +1 -1
  64. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +2 -2
  65. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  66. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +2 -2
  67. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  68. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  69. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +2 -2
  70. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  71. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts +4 -4
  72. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -1
  73. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -1
  74. package/dist/types/src/hooks/useExtensions.d.ts +3 -3
  75. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  76. package/dist/types/src/meta.d.ts +28 -2
  77. package/dist/types/src/meta.d.ts.map +1 -1
  78. package/dist/types/src/paths.d.ts.map +1 -1
  79. package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -1
  80. package/dist/types/tsconfig.tsbuildinfo +1 -1
  81. package/dx.config.ts +31 -0
  82. package/package.json +41 -40
  83. package/src/MarkdownPlugin.test.ts +1 -1
  84. package/src/MarkdownPlugin.tsx +5 -10
  85. package/src/capabilities/app-graph-builder.ts +1 -3
  86. package/src/capabilities/editor-view-state.ts +28 -0
  87. package/src/capabilities/index.ts +2 -14
  88. package/src/capabilities/navigation-resolver.ts +2 -2
  89. package/src/capabilities/react-surface.tsx +20 -10
  90. package/src/capabilities/settings.ts +2 -2
  91. package/src/capabilities/state.ts +8 -4
  92. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  93. package/src/components/MarkdownEditor/MarkdownEditor.tsx +4 -4
  94. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +4 -3
  95. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +2 -2
  96. package/src/components/MarkdownSettings/MarkdownSettings.tsx +1 -1
  97. package/src/containers/MarkdownArticle/MarkdownArticle.stories.tsx +3 -4
  98. package/src/containers/MarkdownArticle/MarkdownArticle.tsx +3 -3
  99. package/src/containers/MarkdownCard/MarkdownCard.tsx +1 -1
  100. package/src/hooks/useEditorMenuOptions.ts +1 -1
  101. package/src/hooks/useExtensions.tsx +11 -11
  102. package/src/meta.ts +2 -22
  103. package/src/operations/create.conversations.json +1 -1
  104. package/src/operations/update.conversations.json +1 -1
  105. package/src/paths.ts +4 -2
  106. package/src/testing.ts +2 -2
  107. package/src/translations.ts +1 -1
  108. package/src/types/Markdown.ts +3 -3
  109. package/src/types/MarkdownCapabilities.ts +7 -5
  110. package/src/types/MarkdownEvents.ts +1 -1
  111. package/src/types/MarkdownOperation.ts +1 -1
  112. package/dist/lib/neutral/MarkdownArticle-LWT5RFFJ.mjs.map +0 -7
  113. package/dist/lib/neutral/MarkdownCard-TBLIRDBO.mjs.map +0 -7
  114. package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs.map +0 -7
  115. package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs +0 -56
  116. package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs.map +0 -7
  117. package/dist/lib/neutral/chunk-36QFEVOZ.mjs +0 -30
  118. package/dist/lib/neutral/chunk-36QFEVOZ.mjs.map +0 -7
  119. package/dist/lib/neutral/chunk-67DKWOKF.mjs.map +0 -7
  120. package/dist/lib/neutral/chunk-CIJD7P6X.mjs +0 -8
  121. package/dist/lib/neutral/chunk-Y2LQRUU7.mjs.map +0 -7
  122. package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs.map +0 -7
  123. package/dist/lib/neutral/react-surface-XYZJBKHZ.mjs.map +0 -7
  124. package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +0 -7
  125. package/dist/lib/neutral/state-5COCF5PN.mjs +0 -44
  126. package/dist/lib/neutral/state-5COCF5PN.mjs.map +0 -7
  127. package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -5
  128. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
  129. package/src/capabilities/app-graph-serializer.ts +0 -64
  130. /package/dist/lib/neutral/{chunk-CIJD7P6X.mjs.map → chunk-BL46CERY.mjs.map} +0 -0
  131. /package/dist/lib/neutral/{create-JK35XC4R.mjs.map → create-XW2FQNLK.mjs.map} +0 -0
  132. /package/dist/lib/neutral/{create-markdown-7MLE625M.mjs.map → create-markdown-KLSVQCT7.mjs.map} +0 -0
  133. /package/dist/lib/neutral/{create-object-MU2LGXG6.mjs.map → create-object-3WMEQJ2C.mjs.map} +0 -0
  134. /package/dist/lib/neutral/{open-5YC77C4O.mjs.map → open-F7KLNKVN.mjs.map} +0 -0
  135. /package/dist/lib/neutral/{scroll-to-anchor-GAFB7W55.mjs.map → scroll-to-anchor-ACND3WJU.mjs.map} +0 -0
  136. /package/dist/lib/neutral/{set-view-mode-N7UHYMPG.mjs.map → set-view-mode-WDC7CAEC.mjs.map} +0 -0
  137. /package/dist/lib/neutral/{update-markdown-NNINDDV5.mjs.map → update-markdown-FGVN3LD4.mjs.map} +0 -0
@@ -5,7 +5,7 @@ import { Atom } from "@effect-atom/atom-react";
5
5
  import React, { forwardRef, useCallback, useMemo } from "react";
6
6
  import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
7
7
  import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
8
- import { useAppGraph } from "@dxos/app-toolkit/ui";
8
+ import { AppSurface, useAppGraph } from "@dxos/app-toolkit/ui";
9
9
  import { Obj } from "@dxos/echo";
10
10
  import { useActionRunner } from "@dxos/plugin-graph";
11
11
  import { useObject } from "@dxos/react-client/echo";
@@ -98,7 +98,7 @@ var MarkdownArticle = /* @__PURE__ */ forwardRef(({ role, subject: object, id, a
98
98
  id,
99
99
  attendableId,
100
100
  object,
101
- compact: role !== "article",
101
+ compact: role !== AppSurface.Article.role,
102
102
  extensions,
103
103
  settings,
104
104
  viewMode,
@@ -123,4 +123,4 @@ export {
123
123
  MarkdownArticle,
124
124
  MarkdownArticle as default
125
125
  };
126
- //# sourceMappingURL=MarkdownArticle-LWT5RFFJ.mjs.map
126
+ //# sourceMappingURL=MarkdownArticle-I4UMD7AA.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/MarkdownArticle/MarkdownArticle.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { Atom } from '@effect-atom/atom-react';\nimport React, { forwardRef, useCallback, useMemo } from 'react';\n\nimport { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { AppSurface, useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { useActionRunner } from '@dxos/plugin-graph';\nimport { useObject } from '@dxos/react-client/echo';\nimport { Panel } from '@dxos/react-ui';\nimport { type ViewStateManager } from '@dxos/react-ui-attention';\nimport { Editor } from '@dxos/react-ui-editor';\nimport { Text } from '@dxos/schema';\n\nimport {\n MarkdownEditor,\n MarkdownEditorProvider,\n type MarkdownEditorContentProps,\n type MarkdownEditorProviderProps,\n} from '#components';\nimport { useLinkQuery } from '#hooks';\nimport { Markdown, MarkdownCapabilities, type MarkdownPluginState } from '#types';\n\nexport type MarkdownArticleProps = AppSurface.ObjectArticleProps<\n Markdown.Document | Text.Text,\n {\n id: string;\n settings: Markdown.Settings;\n viewState?: ViewStateManager;\n } & Pick<MarkdownPluginState, 'extensionProviders'> &\n Pick<MarkdownEditorProviderProps, 'viewMode' | 'onSelectObject' | 'onViewModeChange'> &\n Pick<MarkdownEditorContentProps, 'editorStateStore'>\n>;\n\nexport const MarkdownArticle = forwardRef<HTMLDivElement, MarkdownArticleProps>(\n (\n { role, subject: object, id, attendableId, settings, extensionProviders, onSelectObject, viewMode, ...props },\n forwardedRef,\n ) => {\n const db = Obj.isObject(object) ? Obj.getDatabase(object) : undefined;\n const [docContent] = useObject(Obj.instanceOf(Markdown.Document, object) ? object.content : undefined, 'content');\n const [textContent] = useObject(Obj.instanceOf(Text.Text, object) ? object : undefined, 'content');\n const initialValue = docContent ?? textContent;\n\n // Extensions from other plugins.\n const otherExtensionProviders = useCapabilities(MarkdownCapabilities.ExtensionProvider);\n const extensions = useMemo<Extension[]>(() => {\n if (!Obj.instanceOf(Markdown.Document, object) && !Obj.instanceOf(Text.Text, object)) {\n return [];\n }\n\n const document = Obj.instanceOf(Markdown.Document, object) ? object : undefined;\n return [...(otherExtensionProviders ?? []), ...(extensionProviders ?? [])]\n .flat()\n .reduce((acc: Extension[], provider) => {\n const extension = typeof provider === 'function' ? provider({ document, viewMode }) : provider;\n if (extension) {\n acc.push(extension);\n }\n\n return acc;\n }, []);\n }, [extensionProviders, otherExtensionProviders, object, viewMode]);\n\n // Toolbar actions from app graph.\n const { graph } = useAppGraph();\n const runAction = useActionRunner();\n const customActions = useMemo(() => {\n return Atom.make((get) => {\n const actions = get(graph.actions(attendableId ?? id));\n const nodes = actions.filter((action) => action.properties.disposition === 'toolbar');\n const edges = nodes.map((node) => ({ source: 'root', target: node.id, relation: 'child' }));\n return { nodes, edges };\n });\n }, [graph]);\n\n // File upload.\n const [upload] = useCapabilities(AppCapabilities.FileUploader);\n const handleFileUpload = useMemo(() => {\n if (!db || !upload) {\n return undefined;\n }\n\n return async (file: File) => upload(db, file);\n }, [db, upload]);\n\n // Query for @ refs.\n const handleLinkQuery = useLinkQuery(db);\n\n // Open linked objects.\n const { invokePromise } = useOperationInvoker();\n const handleSelectObject = useCallback(\n (targetId: string) => {\n if (onSelectObject) {\n onSelectObject(targetId);\n } else {\n void invokePromise?.(LayoutOperation.Open, {\n subject: [targetId],\n pivotId: attendableId,\n // TODO(wittjosiah): This should probably pre-validate.\n navigation: 'immediate',\n });\n }\n },\n [onSelectObject, invokePromise, attendableId],\n );\n\n return (\n <MarkdownEditorProvider\n id={id}\n attendableId={attendableId}\n object={object}\n compact={role !== AppSurface.Article.role}\n extensions={extensions}\n settings={settings}\n viewMode={viewMode}\n onAction={runAction}\n onFileUpload={handleFileUpload}\n onLinkQuery={handleLinkQuery}\n onSelectObject={handleSelectObject}\n {...props}\n >\n {(editorRootProps) => (\n <Editor.Root {...editorRootProps}>\n <Panel.Root role={role} ref={forwardedRef}>\n {settings.toolbar && (\n <Panel.Toolbar classNames='bg-toolbar-surface'>\n <MarkdownEditor.Toolbar classNames='dx-document' customActions={customActions} />\n </Panel.Toolbar>\n )}\n <Panel.Content>\n <MarkdownEditor.Content initialValue={initialValue} />\n <MarkdownEditor.Blocks />\n </Panel.Content>\n </Panel.Root>\n </Editor.Root>\n )}\n </MarkdownEditorProvider>\n );\n },\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["Atom", "React", "forwardRef", "useCallback", "useMemo", "useCapabilities", "useOperationInvoker", "AppCapabilities", "LayoutOperation", "AppSurface", "useAppGraph", "Obj", "useActionRunner", "useObject", "Panel", "Editor", "Text", "MarkdownEditor", "MarkdownEditorProvider", "useLinkQuery", "Markdown", "MarkdownCapabilities", "MarkdownArticle", "role", "subject", "object", "id", "attendableId", "settings", "extensionProviders", "onSelectObject", "viewMode", "props", "forwardedRef", "db", "isObject", "getDatabase", "undefined", "docContent", "instanceOf", "Document", "content", "textContent", "initialValue", "otherExtensionProviders", "ExtensionProvider", "extensions", "document", "flat", "reduce", "acc", "provider", "extension", "push", "graph", "runAction", "customActions", "make", "get", "actions", "nodes", "filter", "action", "properties", "disposition", "edges", "map", "node", "source", "target", "relation", "upload", "FileUploader", "handleFileUpload", "file", "handleLinkQuery", "invokePromise", "handleSelectObject", "targetId", "Open", "pivotId", "navigation", "compact", "Article", "onAction", "onFileUpload", "onLinkQuery", "editorRootProps", "Root", "ref", "toolbar", "Toolbar", "classNames", "Content", "Blocks"]
7
+ }
@@ -51,7 +51,7 @@ var snippet = ({ height, scale = 1 }) => {
51
51
 
52
52
  // src/containers/MarkdownCard/MarkdownCard.tsx
53
53
  var MarkdownCard = ({ subject }) => {
54
- const { t } = useTranslation(meta.id);
54
+ const { t } = useTranslation(meta.profile.key);
55
55
  const snippet2 = useMemo(() => getSnippet(subject) + "\n", [
56
56
  subject
57
57
  ]);
@@ -105,4 +105,4 @@ var getInfo = (subject) => {
105
105
  export {
106
106
  MarkdownCard as default
107
107
  };
108
- //# sourceMappingURL=MarkdownCard-TBLIRDBO.mjs.map
108
+ //# sourceMappingURL=MarkdownCard-OYO2HYZF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/MarkdownCard/MarkdownCard.tsx", "../../../src/containers/MarkdownCard/snippet.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { Card, useTranslation } from '@dxos/react-ui';\nimport { Editor } from '@dxos/react-ui-editor';\nimport { Text } from '@dxos/schema';\nimport { mx } from '@dxos/ui-theme';\n\nimport { MarkdownEditor, MarkdownEditorProvider } from '#components';\nimport { meta } from '#meta';\nimport { Markdown } from '#types';\n\nimport { getContentSnippet } from '../../util';\nimport { snippet as snippetExtension } from './snippet';\n\nexport type MarkdownCardProps = { subject: Markdown.Document | Text.Text };\n\nexport const MarkdownCard = ({ subject }: MarkdownCardProps) => {\n const { t } = useTranslation(meta.profile.key);\n // NOTE: Newline is added so that Fade does not obscure the last line.\n const snippet = useMemo(() => getSnippet(subject) + '\\n', [subject]);\n const extensions = useMemo(() => [snippetExtension({ height: 300, scale: 0.8 })], []);\n const info = getInfo(subject);\n\n return (\n <Card.Body>\n {snippet && (\n <Card.Section className='relative'>\n <Card.Row fullWidth>\n <MarkdownEditorProvider id={subject.id} viewMode='readonly' extensions={extensions}>\n {(editorRootProps) => (\n <Editor.Root {...editorRootProps}>\n <MarkdownEditor.Content initialValue={snippet} slots={{ content: { className: 'px-2!' } }} compact />\n </Editor.Root>\n )}\n </MarkdownEditorProvider>\n <Fade />\n </Card.Row>\n </Card.Section>\n )}\n <Card.Section>\n <Card.Row fullWidth>\n <Card.Text classNames='px-2 text-xs text-description'>\n {info.words} {t('words.label', { count: info.words })}\n </Card.Text>\n </Card.Row>\n </Card.Section>\n </Card.Body>\n );\n};\n\nconst Fade = () => (\n <div\n className={mx(\n 'z-10 absolute bottom-0 inset-x-0 h-6 w-full',\n 'bg-gradient-to-b from-transparent to-(--surface-bg) pointer-events-none',\n )}\n />\n);\n\nconst getSnippet = (subject: Markdown.Document | Text.Text, fallback?: string, maxLines = 16) => {\n if (Obj.instanceOf(Markdown.Document, subject)) {\n return Obj.getDescription(subject) || getContentSnippet(subject.content?.target?.content ?? fallback, maxLines);\n } else if (Obj.instanceOf(Text.Text, subject)) {\n return getContentSnippet(subject.content ?? fallback, maxLines);\n }\n};\n\nconst getInfo = (subject: Markdown.Document | Text.Text) => {\n const text = (Obj.instanceOf(Markdown.Document, subject) ? subject.content?.target?.content : subject.content) ?? '';\n return { words: text.split(' ').length };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { EditorState } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\n\nexport type SnippetOptions = {\n /** Maximum height of the editor in pixels. Overflowing content is hidden. */\n height: number;\n /** Zoom factor applied to the editor (e.g. 0.5 renders at 50%). @default 1 */\n scale?: number;\n};\n\n/**\n * CodeMirror extension for rendering a non-scrollable snippet of editor content.\n * Constrains the editor to the given height via CSS `max-height`, wraps long\n * lines (`pre-wrap`), and disables scrolling entirely.\n *\n * NOTE: Uses CSS `zoom` rather than `transform: scale` because `zoom` affects\n * layout, so line wrapping fills the full visual width of the container.\n * `transform: scale` only scales paint output, leaving empty space on the right.\n */\nexport const snippet = ({ height, scale = 1 }: SnippetOptions) => {\n return [\n EditorState.readOnly.of(true),\n EditorView.editable.of(false),\n EditorState.transactionFilter.of((tr) => {\n if (tr.selection) {\n return [];\n } // Drop any selection changes.\n return tr;\n }),\n EditorView.theme({\n // Outer editor element: clip to the caller-specified height.\n '&': {\n maxHeight: `${height}px`,\n overflow: 'hidden',\n },\n '.cm-scroller': {\n // Prevent scroll; scale up the inner clip so the final pixel height matches `height`.\n maxHeight: `${height / scale}px`,\n overflow: 'hidden !important',\n padding: '0',\n },\n '.cm-content': {\n // zoom (unlike transform: scale) affects layout, so line-wrapping fills the full visual width of the container.\n zoom: scale,\n margin: '0',\n padding: '0',\n },\n }),\n ];\n};\n"],
5
+ "mappings": ";;;;;;AAIA,OAAOA,SAASC,eAAe;AAE/B,SAASC,WAAW;AACpB,SAASC,MAAMC,sBAAsB;AACrC,SAASC,cAAc;AACvB,SAASC,YAAY;AACrB,SAASC,UAAU;AAEnB,SAASC,gBAAgBC,8BAA8B;AACvD,SAASC,YAAY;AACrB,SAASC,gBAAgB;;;ACVzB,SAASC,mBAAmB;AAC5B,SAASC,kBAAkB;AAkBpB,IAAMC,UAAU,CAAC,EAAEC,QAAQC,QAAQ,EAAC,MAAkB;AAC3D,SAAO;IACLJ,YAAYK,SAASC,GAAG,IAAA;IACxBL,WAAWM,SAASD,GAAG,KAAA;IACvBN,YAAYQ,kBAAkBF,GAAG,CAACG,OAAAA;AAChC,UAAIA,GAAGC,WAAW;AAChB,eAAO,CAAA;MACT;AACA,aAAOD;IACT,CAAA;IACAR,WAAWU,MAAM;;MAEf,KAAK;QACHC,WAAW,GAAGT,MAAAA;QACdU,UAAU;MACZ;MACA,gBAAgB;;QAEdD,WAAW,GAAGT,SAASC,KAAAA;QACvBS,UAAU;QACVC,SAAS;MACX;MACA,eAAe;;QAEbC,MAAMX;QACNY,QAAQ;QACRF,SAAS;MACX;IACF,CAAA;;AAEJ;;;ADhCO,IAAMG,eAAe,CAAC,EAAEC,QAAO,MAAqB;AACzD,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,QAAQC,GAAG;AAE7C,QAAMC,WAAUC,QAAQ,MAAMC,WAAWR,OAAAA,IAAW,MAAM;IAACA;GAAQ;AACnE,QAAMS,aAAaF,QAAQ,MAAM;IAACG,QAAiB;MAAEC,QAAQ;MAAKC,OAAO;IAAI,CAAA;KAAK,CAAA,CAAE;AACpF,QAAMC,OAAOC,QAAQd,OAAAA;AAErB,SACE,sBAAA,cAACe,KAAKC,MAAI,MACPV,YACC,sBAAA,cAACS,KAAKE,SAAO;IAACC,WAAU;KACtB,sBAAA,cAACH,KAAKI,KAAG;IAACC,WAAAA;KACR,sBAAA,cAACC,wBAAAA;IAAuBC,IAAItB,QAAQsB;IAAIC,UAAS;IAAWd;KACzD,CAACe,oBACA,sBAAA,cAACC,OAAOC,MAASF,iBACf,sBAAA,cAACG,eAAeC,SAAO;IAACC,cAAcvB;IAASwB,OAAO;MAAEC,SAAS;QAAEb,WAAW;MAAQ;IAAE;IAAGc,SAAAA;QAIjG,sBAAA,cAACC,MAAAA,IAAAA,CAAAA,CAAAA,GAIP,sBAAA,cAAClB,KAAKE,SAAO,MACX,sBAAA,cAACF,KAAKI,KAAG;IAACC,WAAAA;KACR,sBAAA,cAACL,KAAKmB,MAAI;IAACC,YAAW;KACnBtB,KAAKuB,OAAM,KAAEnC,EAAE,eAAe;IAAEoC,OAAOxB,KAAKuB;EAAM,CAAA,CAAA,CAAA,CAAA,CAAA;AAM/D;AAEA,IAAMH,OAAO,MACX,sBAAA,cAACK,OAAAA;EACCpB,WAAWqB,GACT,+CACA,yEAAA;;AAKN,IAAM/B,aAAa,CAACR,SAAwCwC,UAAmBC,WAAW,OAAE;AAC1F,MAAIC,IAAIC,WAAWC,SAASC,UAAU7C,OAAAA,GAAU;AAC9C,WAAO0C,IAAII,eAAe9C,OAAAA,KAAY+C,kBAAkB/C,QAAQ+B,SAASiB,QAAQjB,WAAWS,UAAUC,QAAAA;EACxG,WAAWC,IAAIC,WAAWT,KAAKA,MAAMlC,OAAAA,GAAU;AAC7C,WAAO+C,kBAAkB/C,QAAQ+B,WAAWS,UAAUC,QAAAA;EACxD;AACF;AAEA,IAAM3B,UAAU,CAACd,YAAAA;AACf,QAAMiD,QAAQP,IAAIC,WAAWC,SAASC,UAAU7C,OAAAA,IAAWA,QAAQ+B,SAASiB,QAAQjB,UAAU/B,QAAQ+B,YAAY;AAClH,SAAO;IAAEK,OAAOa,KAAKC,MAAM,GAAA,EAAKC;EAAO;AACzC;",
6
+ "names": ["React", "useMemo", "Obj", "Card", "useTranslation", "Editor", "Text", "mx", "MarkdownEditor", "MarkdownEditorProvider", "meta", "Markdown", "EditorState", "EditorView", "snippet", "height", "scale", "readOnly", "of", "editable", "transactionFilter", "tr", "selection", "theme", "maxHeight", "overflow", "padding", "zoom", "margin", "MarkdownCard", "subject", "t", "useTranslation", "meta", "profile", "key", "snippet", "useMemo", "getSnippet", "extensions", "snippetExtension", "height", "scale", "info", "getInfo", "Card", "Body", "Section", "className", "Row", "fullWidth", "MarkdownEditorProvider", "id", "viewMode", "editorRootProps", "Editor", "Root", "MarkdownEditor", "Content", "initialValue", "slots", "content", "compact", "Fade", "Text", "classNames", "words", "count", "div", "mx", "fallback", "maxLines", "Obj", "instanceOf", "Markdown", "Document", "getDescription", "getContentSnippet", "target", "text", "split", "length"]
7
+ }
@@ -1,11 +1,12 @@
1
1
  import "./chunk-J5LGTIGS.mjs";
2
2
 
3
3
  // src/MarkdownPlugin.tsx
4
- import { Plugin } from "@dxos/app-framework";
4
+ import { ActivationEvent, Plugin } from "@dxos/app-framework";
5
5
  import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
6
+ import { AttentionEvents } from "@dxos/plugin-attention";
6
7
  import { translations as editorTranslations } from "@dxos/react-ui-editor/translations";
7
8
  import { Text } from "@dxos/schema";
8
- import { AnchorSort, AppGraphBuilder, NavigationResolver, AppGraphSerializer, BlueprintDefinition, CommentConfig, CreateObject, MarkdownSettings, MarkdownState, OperationHandler, ReactSurface } from "#capabilities";
9
+ import { AnchorSort, AppGraphBuilder, NavigationResolver, BlueprintDefinition, CommentConfig, CreateObject, MarkdownSettings, MarkdownState, OperationHandler, ReactSurface } from "#capabilities";
9
10
  import { meta } from "#meta";
10
11
  import { translations } from "#translations";
11
12
  import { Markdown, MarkdownEvents } from "#types";
@@ -41,14 +42,10 @@ var MarkdownPlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
41
42
  activate: MarkdownSettings
42
43
  }), Plugin.addModule({
43
44
  id: "state",
44
- // TODO(wittjosiah): Does not integrate with settings store.
45
- // Should this be a different event?
46
- // Should settings store be renamed to be more generic?
47
- activatesOn: AppActivationEvents.SetupSettings,
45
+ // Wait for AttentionEvents.AttentionReady so ViewStateManager is available when the module
46
+ // resolves AttentionCapabilities.ViewState to build the editor state store.
47
+ activatesOn: ActivationEvent.allOf(AppActivationEvents.SetupSettings, AttentionEvents.AttentionReady),
48
48
  activate: MarkdownState
49
- }), Plugin.addModule({
50
- activatesOn: AppActivationEvents.AppGraphReady,
51
- activate: AppGraphSerializer
52
49
  }), Plugin.addModule({
53
50
  // TODO(wittjosiah): More relevant event?
54
51
  activatesOn: AppActivationEvents.AppGraphReady,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/MarkdownPlugin.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { translations as editorTranslations } from '@dxos/react-ui-editor/translations';\nimport { Text } from '@dxos/schema';\n\nimport {\n AnchorSort,\n AppGraphBuilder,\n NavigationResolver,\n AppGraphSerializer,\n BlueprintDefinition,\n CommentConfig,\n CreateObject,\n MarkdownSettings,\n MarkdownState,\n OperationHandler,\n ReactSurface,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { Markdown, MarkdownEvents } from '#types';\n\nexport const MarkdownPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addNavigationResolverModule({ activate: NavigationResolver }),\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addCommentConfigModule({ activate: CommentConfig }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({ schema: [Markdown.Document, Text.Text] }),\n AppPlugin.addSurfaceModule({\n activate: ReactSurface,\n firesBeforeActivation: [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\nexport default MarkdownPlugin;\n"],
5
- "mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,qBAAqBC,iBAAiB;AAC/C,SAASC,gBAAgBC,0BAA0B;AACnD,SAASC,YAAY;AAErB,SACEC,YACAC,iBACAC,oBACAC,oBACAC,qBACAC,eACAC,cACAC,kBACAC,eACAC,kBACAC,oBACK;AACP,SAASC,YAAY;AACrB,SAASd,oBAAoB;AAC7B,SAASe,UAAUC,sBAAsB;AAElC,IAAMC,iBAAiBpB,OAAOqB,OAAOJ,IAAAA,EAAMK,KAChDpB,UAAUqB,kBAAkB;EAAEC,UAAUjB;AAAgB,CAAA,GACxDL,UAAUuB,4BAA4B;EAAED,UAAUhB;AAAmB,CAAA,GACrEN,UAAUwB,6BAA6B;EAAEF,UAAUd;AAAoB,CAAA,GACvER,UAAUyB,uBAAuB;EAAEH,UAAUb;AAAc,CAAA,GAC3DT,UAAU0B,sBAAsB;EAAEJ,UAAUZ;AAAa,CAAA,GACzDV,UAAU2B,0BAA0B;EAAEL,UAAUT;AAAiB,CAAA,GACjEb,UAAU4B,gBAAgB;EAAEC,QAAQ;IAACb,SAASc;IAAU3B,KAAKA;;AAAM,CAAA,GACnEH,UAAU+B,iBAAiB;EACzBT,UAAUR;EACVkB,uBAAuB;IAACf,eAAegB;;AACzC,CAAA,GACAjC,UAAUkC,sBAAsB;EAAEjC,cAAc;OAAIA;OAAiBC;;AAAoB,CAAA,GACzFJ,OAAOqC,UAAU;EACfC,aAAarC,oBAAoBsC;EACjCf,UAAUX;AACZ,CAAA,GACAb,OAAOqC,UAAU;EACfG,IAAI;;;;EAIJF,aAAarC,oBAAoBsC;EACjCf,UAAUV;AACZ,CAAA,GACAd,OAAOqC,UAAU;EACfC,aAAarC,oBAAoBwC;EACjCjB,UAAUf;AACZ,CAAA,GACAT,OAAOqC,UAAU;;EAEfC,aAAarC,oBAAoBwC;EACjCjB,UAAUlB;AACZ,CAAA,GACAN,OAAO0C,IAAI;AAGb,IAAA,yBAAetB;",
6
- "names": ["Plugin", "AppActivationEvents", "AppPlugin", "translations", "editorTranslations", "Text", "AnchorSort", "AppGraphBuilder", "NavigationResolver", "AppGraphSerializer", "BlueprintDefinition", "CommentConfig", "CreateObject", "MarkdownSettings", "MarkdownState", "OperationHandler", "ReactSurface", "meta", "Markdown", "MarkdownEvents", "MarkdownPlugin", "define", "pipe", "addAppGraphModule", "activate", "addNavigationResolverModule", "addBlueprintDefinitionModule", "addCommentConfigModule", "addCreateObjectModule", "addOperationHandlerModule", "addSchemaModule", "schema", "Document", "addSurfaceModule", "firesBeforeActivation", "SetupExtensions", "addTranslationsModule", "addModule", "activatesOn", "SetupSettings", "id", "AppGraphReady", "make"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { ActivationEvent, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { AttentionEvents } from '@dxos/plugin-attention';\nimport { translations as editorTranslations } from '@dxos/react-ui-editor/translations';\nimport { Text } from '@dxos/schema';\n\nimport {\n AnchorSort,\n AppGraphBuilder,\n NavigationResolver,\n BlueprintDefinition,\n CommentConfig,\n CreateObject,\n MarkdownSettings,\n MarkdownState,\n OperationHandler,\n ReactSurface,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { Markdown, MarkdownEvents } from '#types';\n\nexport const MarkdownPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addNavigationResolverModule({ activate: NavigationResolver }),\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addCommentConfigModule({ activate: CommentConfig }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({ schema: [Markdown.Document, Text.Text] }),\n AppPlugin.addSurfaceModule({\n activate: ReactSurface,\n firesBeforeActivation: [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 // Wait for AttentionEvents.AttentionReady so ViewStateManager is available when the module\n // resolves AttentionCapabilities.ViewState to build the editor state store.\n activatesOn: ActivationEvent.allOf(AppActivationEvents.SetupSettings, AttentionEvents.AttentionReady),\n activate: MarkdownState,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): More relevant event?\n activatesOn: AppActivationEvents.AppGraphReady,\n activate: AnchorSort,\n }),\n Plugin.make,\n);\n\nexport default MarkdownPlugin;\n"],
5
+ "mappings": ";;;AAIA,SAASA,iBAAiBC,cAAc;AACxC,SAASC,qBAAqBC,iBAAiB;AAC/C,SAASC,uBAAuB;AAChC,SAASC,gBAAgBC,0BAA0B;AACnD,SAASC,YAAY;AAErB,SACEC,YACAC,iBACAC,oBACAC,qBACAC,eACAC,cACAC,kBACAC,eACAC,kBACAC,oBACK;AACP,SAASC,YAAY;AACrB,SAASb,oBAAoB;AAC7B,SAASc,UAAUC,sBAAsB;AAElC,IAAMC,iBAAiBpB,OAAOqB,OAAOJ,IAAAA,EAAMK,KAChDpB,UAAUqB,kBAAkB;EAAEC,UAAUhB;AAAgB,CAAA,GACxDN,UAAUuB,4BAA4B;EAAED,UAAUf;AAAmB,CAAA,GACrEP,UAAUwB,6BAA6B;EAAEF,UAAUd;AAAoB,CAAA,GACvER,UAAUyB,uBAAuB;EAAEH,UAAUb;AAAc,CAAA,GAC3DT,UAAU0B,sBAAsB;EAAEJ,UAAUZ;AAAa,CAAA,GACzDV,UAAU2B,0BAA0B;EAAEL,UAAUT;AAAiB,CAAA,GACjEb,UAAU4B,gBAAgB;EAAEC,QAAQ;IAACb,SAASc;IAAU1B,KAAKA;;AAAM,CAAA,GACnEJ,UAAU+B,iBAAiB;EACzBT,UAAUR;EACVkB,uBAAuB;IAACf,eAAegB;;AACzC,CAAA,GACAjC,UAAUkC,sBAAsB;EAAEhC,cAAc;OAAIA;OAAiBC;;AAAoB,CAAA,GACzFL,OAAOqC,UAAU;EACfC,aAAarC,oBAAoBsC;EACjCf,UAAUX;AACZ,CAAA,GACAb,OAAOqC,UAAU;EACfG,IAAI;;;EAGJF,aAAavC,gBAAgB0C,MAAMxC,oBAAoBsC,eAAepC,gBAAgBuC,cAAc;EACpGlB,UAAUV;AACZ,CAAA,GACAd,OAAOqC,UAAU;;EAEfC,aAAarC,oBAAoB0C;EACjCnB,UAAUjB;AACZ,CAAA,GACAP,OAAO4C,IAAI;AAGb,IAAA,yBAAexB;",
6
+ "names": ["ActivationEvent", "Plugin", "AppActivationEvents", "AppPlugin", "AttentionEvents", "translations", "editorTranslations", "Text", "AnchorSort", "AppGraphBuilder", "NavigationResolver", "BlueprintDefinition", "CommentConfig", "CreateObject", "MarkdownSettings", "MarkdownState", "OperationHandler", "ReactSurface", "meta", "Markdown", "MarkdownEvents", "MarkdownPlugin", "define", "pipe", "addAppGraphModule", "activate", "addNavigationResolverModule", "addBlueprintDefinitionModule", "addCommentConfigModule", "addCreateObjectModule", "addOperationHandlerModule", "addSchemaModule", "schema", "Document", "addSurfaceModule", "firesBeforeActivation", "SetupExtensions", "addTranslationsModule", "addModule", "activatesOn", "SetupSettings", "id", "allOf", "AttentionReady", "AppGraphReady", "make"]
7
7
  }
@@ -14,7 +14,7 @@ var SnippetsField = ({ value, onChange, readonly }) => /* @__PURE__ */ React.cre
14
14
  });
15
15
  var MarkdownSettings = ({ settings, onSettingsChange }) => {
16
16
  return /* @__PURE__ */ React.createElement(SettingsForm.Viewport, null, /* @__PURE__ */ React.createElement(SettingsForm.Section, {
17
- title: meta.name ?? "Editor"
17
+ title: meta.profile.name ?? "Editor"
18
18
  }, /* @__PURE__ */ React.createElement(SettingsForm.FieldSet, {
19
19
  readonly: !onSettingsChange,
20
20
  schema: Markdown.Settings,
@@ -29,4 +29,4 @@ var MarkdownSettings = ({ settings, onSettingsChange }) => {
29
29
  export {
30
30
  MarkdownSettings as default
31
31
  };
32
- //# sourceMappingURL=MarkdownSettings-YCTZJL5V.mjs.map
32
+ //# sourceMappingURL=MarkdownSettings-F5AWRDT3.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/MarkdownSettings/MarkdownSettings.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Input } from '@dxos/react-ui';\nimport { Settings as SettingsForm, type SettingsFieldProps } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\nimport { Markdown } from '#types';\n\nexport type MarkdownSettingsProps = AppSurface.SettingsArticleProps<Markdown.Settings>;\n\nconst SnippetsField = ({ value, onChange, readonly }: SettingsFieldProps<string | undefined>) => (\n <Input.TextArea disabled={readonly} rows={5} value={value ?? ''} onChange={(event) => onChange(event.target.value)} />\n);\n\nexport const MarkdownSettings = ({ settings, onSettingsChange }: MarkdownSettingsProps) => {\n return (\n <SettingsForm.Viewport>\n <SettingsForm.Section title={meta.name ?? 'Editor'}>\n <SettingsForm.FieldSet\n readonly={!onSettingsChange}\n schema={Markdown.Settings}\n visible={(path, values) => path !== 'snippets' || !!values.debug}\n fieldMap={{ snippets: SnippetsField }}\n values={settings}\n onValuesChanged={(values) => onSettingsChange?.(() => values)}\n />\n </SettingsForm.Section>\n </SettingsForm.Viewport>\n );\n};\n"],
5
- "mappings": ";;;AAIA,OAAOA,WAAW;AAGlB,SAASC,aAAa;AACtB,SAASC,YAAYC,oBAA6C;AAElE,SAASC,YAAY;AACrB,SAASC,gBAAgB;AAIzB,IAAMC,gBAAgB,CAAC,EAAEC,OAAOC,UAAUC,SAAQ,MAChD,sBAAA,cAACR,MAAMS,UAAQ;EAACC,UAAUF;EAAUG,MAAM;EAAGL,OAAOA,SAAS;EAAIC,UAAU,CAACK,UAAUL,SAASK,MAAMC,OAAOP,KAAK;;AAG5G,IAAMQ,mBAAmB,CAAC,EAAEC,UAAUC,iBAAgB,MAAyB;AACpF,SACE,sBAAA,cAACd,aAAae,UAAQ,MACpB,sBAAA,cAACf,aAAagB,SAAO;IAACC,OAAOhB,KAAKiB,QAAQ;KACxC,sBAAA,cAAClB,aAAamB,UAAQ;IACpBb,UAAU,CAACQ;IACXM,QAAQlB,SAASH;IACjBsB,SAAS,CAACC,MAAMC,WAAWD,SAAS,cAAc,CAAC,CAACC,OAAOC;IAC3DC,UAAU;MAAEC,UAAUvB;IAAc;IACpCoB,QAAQV;IACRc,iBAAiB,CAACJ,WAAWT,mBAAmB,MAAMS,MAAAA;;AAKhE;",
6
- "names": ["React", "Input", "Settings", "SettingsForm", "meta", "Markdown", "SnippetsField", "value", "onChange", "readonly", "TextArea", "disabled", "rows", "event", "target", "MarkdownSettings", "settings", "onSettingsChange", "Viewport", "Section", "title", "name", "FieldSet", "schema", "visible", "path", "values", "debug", "fieldMap", "snippets", "onValuesChanged"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Input } from '@dxos/react-ui';\nimport { Settings as SettingsForm, type SettingsFieldProps } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\nimport { Markdown } from '#types';\n\nexport type MarkdownSettingsProps = AppSurface.SettingsArticleProps<Markdown.Settings>;\n\nconst SnippetsField = ({ value, onChange, readonly }: SettingsFieldProps<string | undefined>) => (\n <Input.TextArea disabled={readonly} rows={5} value={value ?? ''} onChange={(event) => onChange(event.target.value)} />\n);\n\nexport const MarkdownSettings = ({ settings, onSettingsChange }: MarkdownSettingsProps) => {\n return (\n <SettingsForm.Viewport>\n <SettingsForm.Section title={meta.profile.name ?? 'Editor'}>\n <SettingsForm.FieldSet\n readonly={!onSettingsChange}\n schema={Markdown.Settings}\n visible={(path, values) => path !== 'snippets' || !!values.debug}\n fieldMap={{ snippets: SnippetsField }}\n values={settings}\n onValuesChanged={(values) => onSettingsChange?.(() => values)}\n />\n </SettingsForm.Section>\n </SettingsForm.Viewport>\n );\n};\n"],
5
+ "mappings": ";;;AAIA,OAAOA,WAAW;AAGlB,SAASC,aAAa;AACtB,SAASC,YAAYC,oBAA6C;AAElE,SAASC,YAAY;AACrB,SAASC,gBAAgB;AAIzB,IAAMC,gBAAgB,CAAC,EAAEC,OAAOC,UAAUC,SAAQ,MAChD,sBAAA,cAACR,MAAMS,UAAQ;EAACC,UAAUF;EAAUG,MAAM;EAAGL,OAAOA,SAAS;EAAIC,UAAU,CAACK,UAAUL,SAASK,MAAMC,OAAOP,KAAK;;AAG5G,IAAMQ,mBAAmB,CAAC,EAAEC,UAAUC,iBAAgB,MAAyB;AACpF,SACE,sBAAA,cAACd,aAAae,UAAQ,MACpB,sBAAA,cAACf,aAAagB,SAAO;IAACC,OAAOhB,KAAKiB,QAAQC,QAAQ;KAChD,sBAAA,cAACnB,aAAaoB,UAAQ;IACpBd,UAAU,CAACQ;IACXO,QAAQnB,SAASH;IACjBuB,SAAS,CAACC,MAAMC,WAAWD,SAAS,cAAc,CAAC,CAACC,OAAOC;IAC3DC,UAAU;MAAEC,UAAUxB;IAAc;IACpCqB,QAAQX;IACRe,iBAAiB,CAACJ,WAAWV,mBAAmB,MAAMU,MAAAA;;AAKhE;",
6
+ "names": ["React", "Input", "Settings", "SettingsForm", "meta", "Markdown", "SnippetsField", "value", "onChange", "readonly", "TextArea", "disabled", "rows", "event", "target", "MarkdownSettings", "settings", "onSettingsChange", "Viewport", "Section", "title", "profile", "name", "FieldSet", "schema", "visible", "path", "values", "debug", "fieldMap", "snippets", "onValuesChanged"]
7
7
  }
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  getDocumentsPath
3
- } from "./chunk-67DKWOKF.mjs";
3
+ } from "./chunk-4ULSRZRL.mjs";
4
4
  import "./chunk-J5LGTIGS.mjs";
5
5
 
6
6
  // src/capabilities/app-graph-builder.ts
7
7
  import * as Effect from "effect/Effect";
8
8
  import * as Option from "effect/Option";
9
9
  import { Capability } from "@dxos/app-framework";
10
- import { AppCapabilities, LayoutOperation, createTypeSectionExtension } from "@dxos/app-toolkit";
10
+ import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
11
11
  import { isSpace } from "@dxos/client/echo";
12
12
  import { Operation } from "@dxos/compute";
13
13
  import { Type } from "@dxos/echo";
@@ -17,7 +17,6 @@ import { Markdown } from "#types";
17
17
  var documentTypename = Type.getTypename(Markdown.Document);
18
18
  var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
19
19
  const extensions = yield* Effect.all([
20
- createTypeSectionExtension(Markdown.Document),
21
20
  GraphBuilder.createExtension({
22
21
  id: "documentsSectionActions",
23
22
  match: (node) => {
@@ -64,4 +63,4 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
64
63
  export {
65
64
  app_graph_builder_default as default
66
65
  };
67
- //# sourceMappingURL=app-graph-builder-BWBA23FF.mjs.map
66
+ //# sourceMappingURL=app-graph-builder-6Y5NHTNR.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { isSpace } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Type } from '@dxos/echo';\nimport { GraphBuilder, Node } from '@dxos/plugin-graph';\nimport { SpaceOperation } from '@dxos/plugin-space';\n\nimport { Markdown } from '#types';\n\nimport { getDocumentsPath } from '../paths';\n\nconst documentTypename = Type.getTypename(Markdown.Document);\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* Effect.all([\n GraphBuilder.createExtension({\n id: 'documentsSectionActions',\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return node.type === documentTypename && space ? Option.some(space) : Option.none();\n },\n actions: (space) =>\n Effect.succeed([\n Node.makeAction({\n id: 'create-document',\n data: () =>\n Effect.gen(function* () {\n const doc = Markdown.make({});\n const { subject } = yield* Operation.invoke(\n SpaceOperation.AddObject,\n { object: doc, target: space.db, hidden: true, targetNodeId: getDocumentsPath(space.db.spaceId) },\n { spaceId: space.db.spaceId },\n );\n yield* Operation.invoke(\n LayoutOperation.Open,\n { subject: [...subject] },\n { spaceId: space.db.spaceId },\n );\n }),\n properties: {\n label: ['add-object.label', { ns: documentTypename }],\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n },\n }),\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,uBAAuB;AACjD,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,cAAcC,YAAY;AACnC,SAASC,sBAAsB;AAE/B,SAASC,gBAAgB;AAIzB,IAAMC,mBAAmBC,KAAKC,YAAYC,SAASC,QAAQ;AAE3D,IAAA,4BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAcC,WAAI;IACnCC,aAAaC,gBAAgB;MAC3BC,IAAI;MACJC,OAAO,CAACC,SAAAA;AACN,cAAMC,QAAQC,QAAQF,KAAKG,WAAWF,KAAK,IAAID,KAAKG,WAAWF,QAAQG;AACvE,eAAOJ,KAAKK,SAASnB,oBAAoBe,QAAeK,YAAKL,KAAAA,IAAgBM,YAAI;MACnF;MACAC,SAAS,CAACP,UACDQ,eAAQ;QACbC,KAAKC,WAAW;UACdb,IAAI;UACJc,MAAM,MACGC,WAAI,aAAA;AACT,kBAAMC,MAAMzB,SAAS0B,KAAK,CAAC,CAAA;AAC3B,kBAAM,EAAEC,QAAO,IAAK,OAAOC,UAAUC,OACnCC,eAAeC,WACf;cAAEC,QAAQP;cAAKQ,QAAQrB,MAAMsB;cAAIC,QAAQ;cAAMC,cAAcC,iBAAiBzB,MAAMsB,GAAGI,OAAO;YAAE,GAChG;cAAEA,SAAS1B,MAAMsB,GAAGI;YAAQ,CAAA;AAE9B,mBAAOV,UAAUC,OACfU,gBAAgBC,MAChB;cAAEb,SAAS;mBAAIA;;YAAS,GACxB;cAAEW,SAAS1B,MAAMsB,GAAGI;YAAQ,CAAA;UAEhC,CAAA;UACFxB,YAAY;YACV2B,OAAO;cAAC;cAAoB;gBAAEC,IAAI7C;cAAiB;;YACnD8C,MAAM;YACNC,aAAa;UACf;QACF,CAAA;OACD;IACL,CAAA;GACD;AAED,SAAO1C,WAAW2C,YAAYC,gBAAgBC,iBAAiB1C,UAAAA;AACjE,CAAA,CAAA;",
6
+ "names": ["Effect", "Option", "Capability", "AppCapabilities", "LayoutOperation", "isSpace", "Operation", "Type", "GraphBuilder", "Node", "SpaceOperation", "Markdown", "documentTypename", "Type", "getTypename", "Markdown", "Document", "Capability", "makeModule", "fnUntraced", "extensions", "all", "GraphBuilder", "createExtension", "id", "match", "node", "space", "isSpace", "properties", "undefined", "type", "some", "none", "actions", "succeed", "Node", "makeAction", "data", "gen", "doc", "make", "subject", "Operation", "invoke", "SpaceOperation", "AddObject", "object", "target", "db", "hidden", "targetNodeId", "getDocumentsPath", "spaceId", "LayoutOperation", "Open", "label", "ns", "icon", "disposition", "contributes", "AppCapabilities", "AppGraphBuilder"]
7
+ }
@@ -2,21 +2,19 @@ import "../chunk-J5LGTIGS.mjs";
2
2
 
3
3
  // src/capabilities/index.ts
4
4
  import { Capability } from "@dxos/app-framework";
5
- var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("../app-graph-builder-BWBA23FF.mjs"));
6
- var NavigationResolver = Capability.lazy("NavigationResolver", () => import("../navigation-resolver-3KBOMN4U.mjs"));
5
+ var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("../app-graph-builder-6Y5NHTNR.mjs"));
6
+ var NavigationResolver = Capability.lazy("NavigationResolver", () => import("../navigation-resolver-3WEM7SSC.mjs"));
7
7
  var AnchorSort = Capability.lazy("AnchorSort", () => import("../anchor-sort-UXN4RHFX.mjs"));
8
- var AppGraphSerializer = Capability.lazy("AppGraphSerializer", () => import("../app-graph-serializer-EN5E3BMG.mjs"));
9
8
  var CommentConfig = Capability.lazy("CommentConfig", () => import("../comment-config-EGY7RPPW.mjs"));
10
- var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-MU2LGXG6.mjs"));
9
+ var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-3WMEQJ2C.mjs"));
11
10
  var BlueprintDefinition = Capability.lazy("BlueprintDefinition", () => import("../blueprint-definition-DSPXK77L.mjs"));
12
11
  var OperationHandler = Capability.lazy("OperationHandler", () => import("../operation-handler-2ARMPBGZ.mjs"));
13
- var ReactSurface = Capability.lazy("ReactSurface", () => import("../react-surface-XYZJBKHZ.mjs"));
14
- var MarkdownSettings = Capability.lazy("MarkdownSettings", () => import("../settings-TDGDLCUR.mjs"));
15
- var MarkdownState = Capability.lazy("MarkdownState", () => import("../state-5COCF5PN.mjs"));
12
+ var ReactSurface = Capability.lazy("ReactSurface", () => import("../react-surface-6LX4ZQ2H.mjs"));
13
+ var MarkdownSettings = Capability.lazy("MarkdownSettings", () => import("../settings-O6O6HT3I.mjs"));
14
+ var MarkdownState = Capability.lazy("MarkdownState", () => import("../state-ZYT3JRWT.mjs"));
16
15
  export {
17
16
  AnchorSort,
18
17
  AppGraphBuilder,
19
- AppGraphSerializer,
20
18
  BlueprintDefinition,
21
19
  CommentConfig,
22
20
  CreateObject,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/capabilities/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport { type AppCapabilities } from '@dxos/app-toolkit';\nimport type { OperationHandlerSet } from '@dxos/compute';\n\nexport const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));\nexport const NavigationResolver = Capability.lazy('NavigationResolver', () => import('./navigation-resolver'));\nexport const AnchorSort = Capability.lazy('AnchorSort', () => import('./anchor-sort'));\nexport const AppGraphSerializer = Capability.lazy('AppGraphSerializer', () => import('./app-graph-serializer'));\n// The contributed capability type references Operation types from @dxos/compute, so the lazy\n// wrapper needs an explicit annotation to keep the inferred type portable (TS2883).\nexport const CommentConfig: Capability.LazyCapability<\n void,\n Capability.Capability<typeof AppCapabilities.CommentConfig>\n> = Capability.lazy('CommentConfig', () => import('./comment-config'));\nexport const CreateObject = Capability.lazy('CreateObject', () => import('./create-object'));\n// The contributed capability type references Blueprint types from @dxos/compute, so the lazy\n// wrapper needs an explicit annotation to keep the inferred type portable (TS2883).\nexport const BlueprintDefinition: Capability.LazyCapability<\n void,\n Capability.Capability<typeof AppCapabilities.BlueprintDefinition>[]\n> = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\nexport const MarkdownSettings = Capability.lazy('MarkdownSettings', () => import('./settings'));\nexport const MarkdownState = Capability.lazy('MarkdownState', () => import('./state'));\n"],
5
- "mappings": ";;;AAIA,SAASA,kBAAkB;AAIpB,IAAMC,kBAAkBD,WAAWE,KAAK,mBAAmB,MAAM,OAAO,mCAAA,CAAA;AACxE,IAAMC,qBAAqBH,WAAWE,KAAK,sBAAsB,MAAM,OAAO,qCAAA,CAAA;AAC9E,IAAME,aAAaJ,WAAWE,KAAK,cAAc,MAAM,OAAO,6BAAA,CAAA;AAC9D,IAAMG,qBAAqBL,WAAWE,KAAK,sBAAsB,MAAM,OAAO,sCAAA,CAAA;AAG9E,IAAMI,gBAGTN,WAAWE,KAAK,iBAAiB,MAAM,OAAO,gCAAA,CAAA;AAC3C,IAAMK,eAAeP,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;AAGlE,IAAMM,sBAGTR,WAAWE,KAAK,uBAAuB,MAAM,OAAO,sCAAA,CAAA;AACjD,IAAMO,mBAAmBT,WAAWE,KACzC,oBACA,MAAM,OAAO,mCAAA,CAAA;AAER,IAAMQ,eAAeV,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;AAClE,IAAMS,mBAAmBX,WAAWE,KAAK,oBAAoB,MAAM,OAAO,0BAAA,CAAA;AAC1E,IAAMU,gBAAgBZ,WAAWE,KAAK,iBAAiB,MAAM,OAAO,uBAAA,CAAA;",
6
- "names": ["Capability", "AppGraphBuilder", "lazy", "NavigationResolver", "AnchorSort", "AppGraphSerializer", "CommentConfig", "CreateObject", "BlueprintDefinition", "OperationHandler", "ReactSurface", "MarkdownSettings", "MarkdownState"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport type { OperationHandlerSet } from '@dxos/compute';\n\nexport const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));\nexport const NavigationResolver = Capability.lazy('NavigationResolver', () => import('./navigation-resolver'));\nexport const AnchorSort = Capability.lazy('AnchorSort', () => import('./anchor-sort'));\nexport const CommentConfig = Capability.lazy('CommentConfig', () => import('./comment-config'));\nexport const CreateObject = Capability.lazy('CreateObject', () => import('./create-object'));\nexport const BlueprintDefinition = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\nexport const MarkdownSettings = Capability.lazy('MarkdownSettings', () => import('./settings'));\nexport const MarkdownState = Capability.lazy('MarkdownState', () => import('./state'));\n"],
5
+ "mappings": ";;;AAIA,SAASA,kBAAkB;AAGpB,IAAMC,kBAAkBD,WAAWE,KAAK,mBAAmB,MAAM,OAAO,mCAAA,CAAA;AACxE,IAAMC,qBAAqBH,WAAWE,KAAK,sBAAsB,MAAM,OAAO,qCAAA,CAAA;AAC9E,IAAME,aAAaJ,WAAWE,KAAK,cAAc,MAAM,OAAO,6BAAA,CAAA;AAC9D,IAAMG,gBAAgBL,WAAWE,KAAK,iBAAiB,MAAM,OAAO,gCAAA,CAAA;AACpE,IAAMI,eAAeN,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;AAClE,IAAMK,sBAAsBP,WAAWE,KAAK,uBAAuB,MAAM,OAAO,sCAAA,CAAA;AAChF,IAAMM,mBAAmBR,WAAWE,KACzC,oBACA,MAAM,OAAO,mCAAA,CAAA;AAER,IAAMO,eAAeT,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;AAClE,IAAMQ,mBAAmBV,WAAWE,KAAK,oBAAoB,MAAM,OAAO,0BAAA,CAAA;AAC1E,IAAMS,gBAAgBX,WAAWE,KAAK,iBAAiB,MAAM,OAAO,uBAAA,CAAA;",
6
+ "names": ["Capability", "AppGraphBuilder", "lazy", "NavigationResolver", "AnchorSort", "CommentConfig", "CreateObject", "BlueprintDefinition", "OperationHandler", "ReactSurface", "MarkdownSettings", "MarkdownState"]
7
7
  }
@@ -2,7 +2,7 @@ import "../chunk-J5LGTIGS.mjs";
2
2
 
3
3
  // src/capabilities/node.ts
4
4
  import { Capability } from "@dxos/app-framework";
5
- var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-MU2LGXG6.mjs"));
5
+ var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-3WMEQJ2C.mjs"));
6
6
  var OperationHandler = Capability.lazy("OperationHandler", () => import("../operation-handler-2ARMPBGZ.mjs"));
7
7
  export {
8
8
  CreateObject,
@@ -1,10 +1,10 @@
1
1
  // src/paths.ts
2
- import { createTypeSectionPaths } from "@dxos/app-toolkit";
2
+ import { Paths } from "@dxos/app-toolkit";
3
3
  import { Markdown } from "#types";
4
- var { getSectionPath: getDocumentsPath, getObjectPath: getDocumentPath } = createTypeSectionPaths(Markdown.Document);
4
+ var { getSectionPath: getDocumentsPath, getObjectPath: getDocumentPath } = Paths.createTypeSectionPaths(Markdown.Document);
5
5
 
6
6
  export {
7
7
  getDocumentsPath,
8
8
  getDocumentPath
9
9
  };
10
- //# sourceMappingURL=chunk-67DKWOKF.mjs.map
10
+ //# sourceMappingURL=chunk-4ULSRZRL.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/paths.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Paths } from '@dxos/app-toolkit';\n\nimport { Markdown } from '#types';\n\nconst { getSectionPath: getDocumentsPath, getObjectPath: getDocumentPath } = Paths.createTypeSectionPaths(\n Markdown.Document,\n);\n\nexport { getDocumentsPath, getDocumentPath };\n"],
5
+ "mappings": ";AAIA,SAASA,aAAa;AAEtB,SAASC,gBAAgB;AAEzB,IAAM,EAAEC,gBAAgBC,kBAAkBC,eAAeC,gBAAe,IAAKL,MAAMM,uBACjFL,SAASM,QAAQ;",
6
+ "names": ["Paths", "Markdown", "getSectionPath", "getDocumentsPath", "getObjectPath", "getDocumentPath", "createTypeSectionPaths", "Document"]
7
+ }
@@ -0,0 +1,8 @@
1
+ // src/operations/index.ts
2
+ import { OperationHandlerSet } from "@dxos/compute";
3
+ var MarkdownOperationHandlerSet = OperationHandlerSet.lazy(() => import("./create-XW2FQNLK.mjs"), () => import("./create-markdown-KLSVQCT7.mjs"), () => import("./open-F7KLNKVN.mjs"), () => import("./scroll-to-anchor-ACND3WJU.mjs"), () => import("./set-view-mode-WDC7CAEC.mjs"), () => import("./update-markdown-FGVN3LD4.mjs"));
4
+
5
+ export {
6
+ MarkdownOperationHandlerSet
7
+ };
8
+ //# sourceMappingURL=chunk-BL46CERY.mjs.map
@@ -11,7 +11,7 @@ __export(Markdown_exports, {
11
11
  make: () => make
12
12
  });
13
13
  import * as Schema2 from "effect/Schema";
14
- import { BlueprintsAnnotation, GraphPropsAnnotation } from "@dxos/app-toolkit";
14
+ import { AppAnnotation } from "@dxos/app-toolkit";
15
15
  import { DXN, Annotation, Obj, Ref, Type } from "@dxos/echo";
16
16
  import { DescriptionAnnotation, FormInputAnnotation, LabelAnnotation } from "@dxos/echo/Annotation";
17
17
  import { Text } from "@dxos/schema";
@@ -78,9 +78,9 @@ var Document = Schema2.Struct({
78
78
  ]), DescriptionAnnotation.set("description"), Annotation.IconAnnotation.set({
79
79
  icon: "ph--text-aa--regular",
80
80
  hue: "indigo"
81
- }), BlueprintsAnnotation.set([
81
+ }), AppAnnotation.BlueprintsAnnotation.set([
82
82
  BLUEPRINT_KEY
83
- ]), GraphPropsAnnotation.set({
83
+ ]), AppAnnotation.GraphPropsAnnotation.set({
84
84
  managesAutofocus: true
85
85
  }), Type.makeObject(DXN.make("org.dxos.type.document", "0.1.0")));
86
86
  var make = ({ content = "", ...props } = {}) => {
@@ -113,11 +113,11 @@ var StateSchema = Schema3.mutable(Schema3.Struct({
113
113
  value: Schema3.String
114
114
  })
115
115
  }));
116
- var Settings3 = Capability.make(`${meta.id}.capability.settings`);
117
- var State = Capability.make(`${meta.id}.capability.state`);
118
- var EditorState = Capability.make(`${meta.id}.capability.editor-state`);
119
- var EditorViews = Capability.make(`${meta.id}.capability.editor-views`);
120
- var ExtensionProvider = Capability.make(`${meta.id}.capability.extensions`);
116
+ var Settings3 = Capability.make(`${meta.profile.key}.capability.settings`);
117
+ var State = Capability.make(`${meta.profile.key}.capability.state`);
118
+ var EditorState = Capability.make(`${meta.profile.key}.capability.editor-state`);
119
+ var EditorViews = Capability.make(`${meta.profile.key}.capability.editor-views`);
120
+ var ExtensionProvider = Capability.make(`${meta.profile.key}.capability.extensions`);
121
121
 
122
122
  // src/types/MarkdownEvents.ts
123
123
  var MarkdownEvents_exports = {};
@@ -126,7 +126,7 @@ __export(MarkdownEvents_exports, {
126
126
  });
127
127
  import { AppActivationEvents } from "@dxos/app-toolkit";
128
128
  import { meta as meta2 } from "#meta";
129
- var SetupExtensions = AppActivationEvents.createStateEvent(`${meta2.id}.event.setup-extensions`);
129
+ var SetupExtensions = AppActivationEvents.createStateEvent(`${meta2.profile.key}.event.setup-extensions`);
130
130
 
131
131
  // src/types/MarkdownOperation.ts
132
132
  var MarkdownOperation_exports = {};
@@ -145,7 +145,7 @@ import { Database, Ref as Ref2, Type as Type2, DXN as DXN2 } from "@dxos/echo";
145
145
  import { EditorViewMode as EditorViewMode2 } from "@dxos/ui-editor/types";
146
146
  import { trim } from "@dxos/util";
147
147
  import { meta as meta3 } from "#meta";
148
- var makeKey = (name) => DXN2.make(`${meta3.id}.operation.${name}`);
148
+ var makeKey = (name) => DXN2.make(`${meta3.profile.key}.operation.${name}`);
149
149
  var Edit = Schema4.Struct({
150
150
  oldString: Schema4.String.annotations({
151
151
  description: "The text to find in the document."
@@ -282,4 +282,4 @@ export {
282
282
  MarkdownEvents_exports,
283
283
  MarkdownOperation_exports
284
284
  };
285
- //# sourceMappingURL=chunk-Y2LQRUU7.mjs.map
285
+ //# sourceMappingURL=chunk-CRKAIDRD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/Markdown.ts", "../../../src/types/Settings.ts", "../../../src/types/MarkdownCapabilities.ts", "../../../src/types/MarkdownEvents.ts", "../../../src/types/MarkdownOperation.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { AppAnnotation } from '@dxos/app-toolkit';\nimport { DXN, Annotation, Obj, Ref, Type } from '@dxos/echo';\nimport { DescriptionAnnotation, FormInputAnnotation, LabelAnnotation } from '@dxos/echo/Annotation';\nimport { Text } from '@dxos/schema';\n\nexport const BLUEPRINT_KEY = 'org.dxos.blueprint.markdown';\n\n// Re-export Settings as merged const/type (not as namespace).\nimport * as SettingsModule from './Settings';\nexport const Settings = SettingsModule.Settings;\nexport type Settings = SettingsModule.Settings;\n\n/**\n * Document Item type.\n */\nexport const Document = Schema.Struct({\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n fallbackName: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional),\n content: Ref.Ref(Text.Text).pipe(FormInputAnnotation.set(false)),\n}).pipe(\n LabelAnnotation.set(['name', 'fallbackName']),\n DescriptionAnnotation.set('description'),\n Annotation.IconAnnotation.set({ icon: 'ph--text-aa--regular', hue: 'indigo' }),\n AppAnnotation.BlueprintsAnnotation.set([BLUEPRINT_KEY]),\n AppAnnotation.GraphPropsAnnotation.set({ managesAutofocus: true }),\n Type.makeObject(DXN.make('org.dxos.type.document', '0.1.0')),\n);\n\nexport type Document = Type.InstanceType<typeof Document>;\n\n/**\n * Document factory.\n */\nexport const make = ({\n content = '',\n ...props\n}: Partial<{ name: string; fallbackName: string; content: string }> = {}) => {\n const doc = Obj.make(Document, { ...props, content: Ref.make(Text.make({ content })) });\n // TODO(dmaretskyi): We need a better way to set parents when creating hierarchies.\n Obj.setParent(doc.content.target!, doc);\n return doc;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { EditorInputMode, EditorViewMode } from '@dxos/ui-editor/types';\n\n/**\n * Determines how new comment threads on markdown documents are wired up to\n * the comment-thread AI agent (plugin-thread). The agent's identity (name,\n * DID) is resolved at runtime via the AgentIdentity capability — this\n * setting only controls whether and when the agent fires.\n *\n * - `off`: comments are plain user-only threads (no agent).\n * - `auto`: every user message in a thread triggers an agent response.\n * - `mention`: agent only responds when the message contains `@{agentName}`.\n */\nexport const CommentAgentMode = Schema.Union(Schema.Literal('off'), Schema.Literal('auto'), Schema.Literal('mention'));\nexport type CommentAgentMode = Schema.Schema.Type<typeof CommentAgentMode>;\n\n/**\n * Plugin settings.\n */\nexport const Settings = Schema.mutable(\n Schema.Struct({\n defaultViewMode: EditorViewMode.annotations({\n title: 'Default view mode',\n description: 'Set whether documents open in editing or read-only mode.',\n }),\n commentAgentMode: Schema.optional(\n CommentAgentMode.annotations({\n title: 'Comment agent mode',\n description:\n \"How new comment threads on markdown documents are processed: 'off' (no AI), 'auto' (AI responds to every user message), or 'mention' (AI responds only on @mention).\",\n }),\n ),\n editorInputMode: Schema.optional(\n EditorInputMode.annotations({\n title: 'Editor input mode',\n description: 'Choose keyboard bindings for the editor.',\n }),\n ),\n toolbar: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Show toolbar',\n description: 'Display a formatting toolbar above the editor.',\n }),\n ),\n numberedHeadings: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Numbered headings',\n description: 'Automatically number heading levels in the document.',\n }),\n ),\n folding: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Folding',\n description: 'Allow collapsing and expanding sections by heading.',\n }),\n ),\n experimental: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable experimental features',\n description: 'Turn on features that are still in development.',\n }),\n ),\n debug: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable debugging features',\n description: 'Show developer tools and diagnostics for the editor.',\n }),\n ),\n snippets: Schema.optional(\n Schema.String.annotations({\n title: 'Snippets',\n description: 'Input snippets to replay for testing purposes.',\n }),\n ),\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type EditorStateStore } from '@dxos/ui-editor';\nimport { type EditorViewMode } from '@dxos/ui-editor/types';\n\nimport { meta } from '#meta';\n\nimport type * as Markdown from './Markdown';\nimport { type MarkdownExtensionProvider } from './types';\n\n/** Schema for persisted markdown state. */\nexport const StateSchema = Schema.mutable(\n Schema.Struct({\n viewMode: Schema.Record({ key: Schema.String, value: Schema.String }),\n }),\n);\n\nexport type MarkdownState = {\n viewMode: Record<string, EditorViewMode>;\n};\n\nexport type EditorViewEntry = { view: EditorView; documentId: string };\n\nexport type EditorViewRegistry = {\n register: (attendableId: string, view: EditorView, documentId: string) => void;\n unregister: (attendableId: string) => void;\n get: (attendableId: string) => EditorViewEntry | undefined;\n};\n\nexport const Settings = Capability.make<Atom.Writable<Markdown.Settings>>(`${meta.profile.key}.capability.settings`);\n\n/** Persisted state atom for view mode per document. */\nexport const State = Capability.make<Atom.Writable<MarkdownState>>(`${meta.profile.key}.capability.state`);\n\n/** Editor state store for cursor positions, scroll state, etc. */\nexport const EditorState = Capability.make<EditorStateStore>(`${meta.profile.key}.capability.editor-state`);\n\n/** Registry of active EditorView instances keyed by attendable ID. */\nexport const EditorViews = Capability.make<EditorViewRegistry>(`${meta.profile.key}.capability.editor-views`);\n\n// TODO(burdon): Move to ./types (external API)?\nexport const ExtensionProvider = Capability.make<MarkdownExtensionProvider[]>(\n `${meta.profile.key}.capability.extensions`,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type ActivationEvent } from '@dxos/app-framework';\nimport { AppActivationEvents } from '@dxos/app-toolkit';\n\nimport { meta } from '#meta';\n\nexport const SetupExtensions: ActivationEvent.ActivationEvent = AppActivationEvents.createStateEvent(\n `${meta.profile.key}.event.setup-extensions`,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\nimport { Database, Ref, Type, DXN } from '@dxos/echo';\nimport { EditorViewMode } from '@dxos/ui-editor/types';\nimport { trim } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nimport * as Markdown from './Markdown';\n\nconst makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);\n\nconst Edit = Schema.Struct({\n oldString: Schema.String.annotations({\n description: 'The text to find in the document.',\n }),\n newString: Schema.String.annotations({\n description: 'The text to replace it with.',\n }),\n replaceAll: Schema.optional(Schema.Boolean).annotations({\n description: 'If true, replaces all occurrences. Defaults to false (first occurrence only).',\n }),\n});\n\nexport const Create = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.markdown.create'),\n name: 'Create',\n description: 'Creates a new markdown document and adds it to the space.',\n icon: 'ph--file-text--regular',\n },\n input: Schema.Struct({\n name: Schema.String,\n content: Schema.String,\n }),\n output: Schema.Struct({\n id: Schema.String.annotations({\n description: 'The DXN of the created document.',\n }),\n }),\n services: [Database.Service],\n});\n\nexport const CreateMarkdown = Operation.make({\n meta: {\n key: makeKey('create'),\n name: 'Create Markdown Document',\n icon: 'ph--file-text--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n content: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Type.getSchema(Markdown.Document),\n }),\n});\n\nexport const Open = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.markdown.open'),\n name: 'Open',\n description: 'Opens and reads the contents of a new markdown document.',\n icon: 'ph--arrow-square-out--regular',\n },\n input: Schema.Struct({\n doc: Ref.Ref(Markdown.Document).annotations({\n description: 'The ID of the markdown document.',\n }),\n }),\n output: Schema.Struct({\n content: Schema.String,\n }),\n services: [Database.Service],\n});\n\nexport const ScrollToAnchor = Operation.make({\n meta: {\n key: makeKey('scrollToAnchor'),\n name: 'Scroll To Anchor',\n icon: 'ph--anchor-simple--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n subject: Schema.String.annotations({ description: 'Attendable ID of the markdown editor.' }),\n cursor: Schema.String.annotations({ description: 'Cursor position to scroll to.' }),\n ref: Schema.optional(Schema.String.annotations({ description: 'Reference ID (e.g. thread ID).' })),\n }),\n output: Schema.Void,\n});\n\n// TODO(wittjosiah): This appears to be unused.\nexport const SetViewMode = Operation.make({\n meta: { key: makeKey('setViewMode'), name: 'Set View Mode', icon: 'ph--layout--regular' },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String,\n viewMode: EditorViewMode,\n }),\n output: Schema.Void,\n});\n\nexport const Update = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.markdown.update'),\n name: 'Update',\n description: trim`\n Applies a set of edits to the markdown document.\n `,\n icon: 'ph--pencil-simple--regular',\n },\n input: Schema.Struct({\n doc: Ref.Ref(Markdown.Document).annotations({\n description: 'The ID of the markdown document.',\n }),\n edits: Schema.Array(Edit).annotations({\n description: 'The edits to apply to the document. Each edit finds oldString and replaces it with newString.',\n }),\n }),\n output: Schema.Struct({\n newContent: Schema.String,\n }),\n services: [Database.Service],\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Settings", "Schema", "AppAnnotation", "DXN", "Annotation", "Obj", "Ref", "Type", "DescriptionAnnotation", "FormInputAnnotation", "LabelAnnotation", "Text", "Schema", "EditorInputMode", "EditorViewMode", "CommentAgentMode", "Union", "Literal", "Settings", "mutable", "Struct", "defaultViewMode", "annotations", "title", "description", "commentAgentMode", "optional", "editorInputMode", "toolbar", "Boolean", "numberedHeadings", "folding", "experimental", "debug", "snippets", "String", "BLUEPRINT_KEY", "Settings", "Document", "Struct", "name", "optional", "String", "description", "fallbackName", "pipe", "FormInputAnnotation", "set", "content", "Ref", "Text", "LabelAnnotation", "DescriptionAnnotation", "Annotation", "IconAnnotation", "icon", "hue", "AppAnnotation", "BlueprintsAnnotation", "GraphPropsAnnotation", "managesAutofocus", "Type", "makeObject", "DXN", "make", "props", "doc", "Obj", "setParent", "target", "Settings", "Schema", "Capability", "meta", "StateSchema", "mutable", "Struct", "viewMode", "Record", "key", "String", "value", "make", "profile", "State", "EditorState", "EditorViews", "ExtensionProvider", "AppActivationEvents", "meta", "SetupExtensions", "createStateEvent", "profile", "key", "Schema", "Capability", "Operation", "Database", "Ref", "Type", "DXN", "EditorViewMode", "trim", "meta", "makeKey", "name", "DXN", "make", "meta", "profile", "key", "Edit", "Struct", "oldString", "String", "annotations", "description", "newString", "replaceAll", "optional", "Boolean", "Create", "Operation", "icon", "input", "content", "output", "id", "services", "Database", "Service", "CreateMarkdown", "Capability", "object", "Type", "getSchema", "Document", "Open", "doc", "Ref", "ScrollToAnchor", "subject", "cursor", "ref", "Void", "SetViewMode", "viewMode", "EditorViewMode", "Update", "trim", "edits", "Array", "newContent"]
7
+ }
@@ -0,0 +1,43 @@
1
+ // src/meta.ts
2
+ import { Plugin } from "@dxos/app-framework";
3
+
4
+ // dx.config.ts
5
+ import { Config2 } from "@dxos/app-framework/config";
6
+ import { trim } from "@dxos/util";
7
+ var dx_config_default = Config2.make({
8
+ plugin: {
9
+ key: "org.dxos.plugin.markdown",
10
+ name: "Markdown",
11
+ author: "DXOS",
12
+ description: trim`
13
+ A full-featured markdown editor for authoring documents in your space. Edits flow through a collaborative CodeMirror surface backed by ECHO Text, so every keystroke replicates to other peers in real time without merge conflicts or lost work.
14
+
15
+ Documents can be opened in source, preview, or read-only mode and rendered as a full-surface article or as embeddable cards. An optional formatting toolbar exposes headings, lists, links, and other common markdown actions, and dispositional toolbar actions contributed by other plugins are surfaced inline alongside it.
16
+
17
+ The editor integrates with the rest of the workspace through @ references that link to any ECHO object, image and file uploads stored in the active space, and anchored comment threads on text ranges. Comments can optionally be routed to an AI agent on every message or only on @mention.
18
+
19
+ A built-in blueprint exposes create, open, and update operations as tools for AI agents. Updates are applied as compact find-and-replace diffs against the document, making it safe for agents to edit large documents incrementally while you continue collaborating.
20
+ `,
21
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown",
22
+ icon: {
23
+ key: "ph--text-aa--regular",
24
+ hue: "indigo"
25
+ },
26
+ screenshots: [
27
+ {
28
+ dark: "https://customer-5rxcjpyab08avpmn.cloudflarestream.com/cdf2656365bb1fd327c1fc2105d75e5a/iframe?poster=https%3A%2F%2Fcustomer-5rxcjpyab08avpmn.cloudflarestream.com%2Fcdf2656365bb1fd327c1fc2105d75e5a%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600"
29
+ },
30
+ {
31
+ dark: "https://dxos.network/plugin-details-markdown-dark.png"
32
+ }
33
+ ]
34
+ }
35
+ });
36
+
37
+ // src/meta.ts
38
+ var meta = Plugin.getMetaFromConfig(dx_config_default);
39
+
40
+ export {
41
+ meta
42
+ };
43
+ //# sourceMappingURL=chunk-GUXWFDD4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts", "../../../dx.config.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\n\nimport config from '../dx.config';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.markdown',\n name: 'Markdown',\n author: 'DXOS',\n description: trim`\n A full-featured markdown editor for authoring documents in your space. Edits flow through a collaborative CodeMirror surface backed by ECHO Text, so every keystroke replicates to other peers in real time without merge conflicts or lost work.\n\n Documents can be opened in source, preview, or read-only mode and rendered as a full-surface article or as embeddable cards. An optional formatting toolbar exposes headings, lists, links, and other common markdown actions, and dispositional toolbar actions contributed by other plugins are surfaced inline alongside it.\n\n The editor integrates with the rest of the workspace through @ references that link to any ECHO object, image and file uploads stored in the active space, and anchored comment threads on text ranges. Comments can optionally be routed to an AI agent on every message or only on @mention.\n\n A built-in blueprint exposes create, open, and update operations as tools for AI agents. Updates are applied as compact find-and-replace diffs against the document, making it safe for agents to edit large documents incrementally while you continue collaborating.\n `,\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown',\n icon: { key: 'ph--text-aa--regular', hue: 'indigo' },\n screenshots: [\n {\n dark: 'https://customer-5rxcjpyab08avpmn.cloudflarestream.com/cdf2656365bb1fd327c1fc2105d75e5a/iframe?poster=https%3A%2F%2Fcustomer-5rxcjpyab08avpmn.cloudflarestream.com%2Fcdf2656365bb1fd327c1fc2105d75e5a%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600',\n },\n { dark: 'https://dxos.network/plugin-details-markdown-dark.png' },\n ],\n },\n});\n"],
5
+ "mappings": ";AAIA,SAASA,cAAc;;;ACAvB,SAASC,eAAe;AACxB,SAASC,YAAY;AAErB,IAAA,oBAAeD,QAAQE,KAAK;EAC1BC,QAAQ;IACNC,KAAK;IACLC,MAAM;IACNC,QAAQ;IACRC,aAAaN;;;;;;;;;IASbO,QAAQ;IACRC,MAAM;MAAEL,KAAK;MAAwBM,KAAK;IAAS;IACnDC,aAAa;MACX;QACEC,MAAM;MACR;MACA;QAAEA,MAAM;MAAwD;;EAEpE;AACF,CAAA;;;ADtBO,IAAMC,OAAOC,OAAOC,kBAAkBC,iBAAAA;",
6
+ "names": ["Plugin", "Config2", "trim", "make", "plugin", "key", "name", "author", "description", "source", "icon", "hue", "screenshots", "dark", "meta", "Plugin", "getMetaFromConfig", "config"]
7
+ }
@@ -8,7 +8,7 @@ import { createContext } from "@radix-ui/react-context";
8
8
  import React4, { useCallback as useCallback3, useMemo as useMemo2, useState as useState2 } from "react";
9
9
  import { createPortal as createPortal2 } from "react-dom";
10
10
  import { Surface } from "@dxos/app-framework/ui";
11
- import { AppSurface } from "@dxos/app-toolkit/ui";
11
+ import { AppSurface as AppSurface2 } from "@dxos/app-toolkit/ui";
12
12
  import { Obj } from "@dxos/echo";
13
13
  import { URI } from "@dxos/keys";
14
14
  import { useClient } from "@dxos/react-client";
@@ -21,6 +21,7 @@ import { useEditorMenuOptions, useExtensions } from "#hooks";
21
21
  import { RegistryContext } from "@effect-atom/atom-react";
22
22
  import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from "react";
23
23
  import { useCapabilities } from "@dxos/app-framework/ui";
24
+ import { AppSurface } from "@dxos/app-toolkit/ui";
24
25
  import { useThemeContext, useTranslation } from "@dxos/react-ui";
25
26
  import { useTextEditor } from "@dxos/react-ui-editor";
26
27
  import { mobileSlots, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, documentSlots, formattingListener, processEditorPayload, editorClassNames, scrollbarAutohide } from "@dxos/ui-editor";
@@ -29,7 +30,7 @@ import { isTruthy } from "@dxos/util";
29
30
  import { meta } from "#meta";
30
31
  import { MarkdownCapabilities } from "#types";
31
32
  var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attendableId, role, compact, viewMode, initialValue, editorStateStore, toolbarState, extensions, slots, onFileUpload }, forwardedRef) => {
32
- const { t } = useTranslation(meta.id);
33
+ const { t } = useTranslation(meta.profile.key);
33
34
  const { themeMode } = useThemeContext();
34
35
  const registry = useContext(RegistryContext);
35
36
  const updateToolbarState = useCallback((formatting) => {
@@ -47,7 +48,7 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attend
47
48
  id
48
49
  ]);
49
50
  const { parentRef, view: editorView, focusAttributes } = useTextEditor(() => ({
50
- ...role !== "section" && {
51
+ ...role !== AppSurface.Section.role && {
51
52
  id,
52
53
  scrollTo,
53
54
  selection,
@@ -69,7 +70,7 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attend
69
70
  createMarkdownExtensions(),
70
71
  scrollbarAutohide(),
71
72
  toolbarState && formattingListener(updateToolbarState),
72
- role !== "section" && onFileUpload && dropFile({
73
+ role !== AppSurface.Section.role && onFileUpload && dropFile({
73
74
  // TODO(wittjosiah): Factor out to file uploader plugin.
74
75
  onDrop: async (view, { files }) => {
75
76
  const file = files[0];
@@ -221,7 +222,7 @@ var MarkdownEditorToolbar = composable(({ id, role, getView, customActions, onAc
221
222
 
222
223
  // src/components/MarkdownEditor/MarkdownEditor.tsx
223
224
  var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
224
- var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, compact, viewMode, selectionManager, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, onAction, onFileUpload, onViewModeChange }) => {
225
+ var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, compact, viewMode, viewState, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, onAction, onFileUpload, onViewModeChange }) => {
225
226
  const [previewBlocks, setPreviewBlocks] = useState2([]);
226
227
  const previewOptions = useMemo2(() => ({
227
228
  db: Obj.isObject(object) ? Obj.getDatabase(object) : void 0,
@@ -246,7 +247,7 @@ var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, co
246
247
  object,
247
248
  compact,
248
249
  viewMode,
249
- selectionManager,
250
+ viewState,
250
251
  editorStateStore,
251
252
  previewOptions,
252
253
  settings,
@@ -357,7 +358,7 @@ var PreviewBlock = ({ el, link }) => {
357
358
  subject
358
359
  ]);
359
360
  return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
360
- type: AppSurface.Card,
361
+ type: AppSurface2.CardContent,
361
362
  data,
362
363
  limit: 1
363
364
  }), el);
@@ -369,7 +370,7 @@ var MarkdownEditor = {
369
370
  };
370
371
 
371
372
  // src/components/index.ts
372
- var MarkdownSettings = lazy(() => import("../MarkdownSettings-YCTZJL5V.mjs"));
373
+ var MarkdownSettings = lazy(() => import("../MarkdownSettings-F5AWRDT3.mjs"));
373
374
  export {
374
375
  MarkdownEditor,
375
376
  MarkdownEditorProvider,