@dxos/plugin-markdown 0.9.0 → 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.
- package/dist/lib/neutral/{MarkdownArticle-LWT5RFFJ.mjs → MarkdownArticle-I4UMD7AA.mjs} +3 -3
- package/dist/lib/neutral/MarkdownArticle-I4UMD7AA.mjs.map +7 -0
- package/dist/lib/neutral/{MarkdownCard-TBLIRDBO.mjs → MarkdownCard-OYO2HYZF.mjs} +2 -2
- package/dist/lib/neutral/MarkdownCard-OYO2HYZF.mjs.map +7 -0
- package/dist/lib/neutral/MarkdownPlugin.mjs +6 -9
- package/dist/lib/neutral/MarkdownPlugin.mjs.map +3 -3
- package/dist/lib/neutral/{MarkdownSettings-YCTZJL5V.mjs → MarkdownSettings-F5AWRDT3.mjs} +2 -2
- package/dist/lib/neutral/{MarkdownSettings-YCTZJL5V.mjs.map → MarkdownSettings-F5AWRDT3.mjs.map} +3 -3
- package/dist/lib/neutral/{app-graph-builder-BWBA23FF.mjs → app-graph-builder-6Y5NHTNR.mjs} +3 -4
- package/dist/lib/neutral/app-graph-builder-6Y5NHTNR.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +6 -8
- package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
- package/dist/lib/neutral/capabilities/node.mjs +1 -1
- package/dist/lib/neutral/{chunk-67DKWOKF.mjs → chunk-4ULSRZRL.mjs} +3 -3
- package/dist/lib/neutral/chunk-4ULSRZRL.mjs.map +7 -0
- package/dist/lib/neutral/chunk-BL46CERY.mjs +8 -0
- package/dist/lib/neutral/{chunk-Y2LQRUU7.mjs → chunk-CRKAIDRD.mjs} +11 -11
- package/dist/lib/neutral/chunk-CRKAIDRD.mjs.map +7 -0
- package/dist/lib/neutral/chunk-GUXWFDD4.mjs +43 -0
- package/dist/lib/neutral/chunk-GUXWFDD4.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +9 -8
- package/dist/lib/neutral/components/index.mjs.map +3 -3
- package/dist/lib/neutral/containers/index.mjs +2 -2
- package/dist/lib/neutral/{create-JK35XC4R.mjs → create-XW2FQNLK.mjs} +2 -2
- package/dist/lib/neutral/{create-markdown-7MLE625M.mjs → create-markdown-KLSVQCT7.mjs} +2 -2
- package/dist/lib/neutral/{create-object-MU2LGXG6.mjs → create-object-3WMEQJ2C.mjs} +2 -2
- package/dist/lib/neutral/hooks/index.mjs +16 -12
- package/dist/lib/neutral/hooks/index.mjs.map +3 -3
- package/dist/lib/neutral/index.mjs +4 -4
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/{navigation-resolver-3KBOMN4U.mjs → navigation-resolver-3WEM7SSC.mjs} +3 -3
- package/dist/lib/neutral/navigation-resolver-3WEM7SSC.mjs.map +7 -0
- package/dist/lib/neutral/{open-5YC77C4O.mjs → open-F7KLNKVN.mjs} +2 -2
- package/dist/lib/neutral/operations/index.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +2 -2
- package/dist/lib/neutral/{react-surface-XYZJBKHZ.mjs → react-surface-6LX4ZQ2H.mjs} +7 -12
- package/dist/lib/neutral/react-surface-6LX4ZQ2H.mjs.map +7 -0
- package/dist/lib/neutral/{scroll-to-anchor-GAFB7W55.mjs → scroll-to-anchor-ACND3WJU.mjs} +2 -2
- package/dist/lib/neutral/{set-view-mode-N7UHYMPG.mjs → set-view-mode-WDC7CAEC.mjs} +2 -2
- package/dist/lib/neutral/{settings-TDGDLCUR.mjs → settings-O6O6HT3I.mjs} +3 -3
- package/dist/lib/neutral/settings-O6O6HT3I.mjs.map +7 -0
- package/dist/lib/neutral/state-ZYT3JRWT.mjs +69 -0
- package/dist/lib/neutral/state-ZYT3JRWT.mjs.map +7 -0
- package/dist/lib/neutral/testing.mjs +2 -2
- package/dist/lib/neutral/testing.mjs.map +3 -3
- package/dist/lib/neutral/translations.mjs +1 -1
- package/dist/lib/neutral/translations.mjs.map +3 -3
- package/dist/lib/neutral/types/index.mjs +1 -1
- package/dist/lib/neutral/{update-markdown-NNINDDV5.mjs → update-markdown-FGVN3LD4.mjs} +2 -2
- package/dist/types/dx.config.d.ts +28 -0
- package/dist/types/dx.config.d.ts.map +1 -0
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/editor-view-state.d.ts +7 -0
- package/dist/types/src/capabilities/editor-view-state.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +9 -16
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/node.d.ts +1 -6
- package/dist/types/src/capabilities/node.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -1
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +2 -2
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +2 -2
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +2 -2
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts +4 -4
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -1
- package/dist/types/src/hooks/useExtensions.d.ts +3 -3
- package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +28 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/paths.d.ts.map +1 -1
- package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +31 -0
- package/package.json +41 -40
- package/src/MarkdownPlugin.test.ts +1 -1
- package/src/MarkdownPlugin.tsx +5 -10
- package/src/capabilities/app-graph-builder.ts +1 -3
- package/src/capabilities/editor-view-state.ts +28 -0
- package/src/capabilities/index.ts +2 -14
- package/src/capabilities/navigation-resolver.ts +2 -2
- package/src/capabilities/react-surface.tsx +20 -10
- package/src/capabilities/settings.ts +2 -2
- package/src/capabilities/state.ts +8 -4
- package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +4 -4
- package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +4 -3
- package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +2 -2
- package/src/components/MarkdownSettings/MarkdownSettings.tsx +1 -1
- package/src/containers/MarkdownArticle/MarkdownArticle.stories.tsx +3 -4
- package/src/containers/MarkdownArticle/MarkdownArticle.tsx +3 -3
- package/src/containers/MarkdownCard/MarkdownCard.tsx +1 -1
- package/src/hooks/useEditorMenuOptions.ts +1 -1
- package/src/hooks/useExtensions.tsx +11 -11
- package/src/meta.ts +2 -22
- package/src/operations/create.conversations.json +1 -1
- package/src/operations/update.conversations.json +1 -1
- package/src/paths.ts +4 -2
- package/src/testing.ts +2 -2
- package/src/translations.ts +1 -1
- package/src/types/Markdown.ts +3 -3
- package/src/types/MarkdownCapabilities.ts +7 -5
- package/src/types/MarkdownEvents.ts +1 -1
- package/src/types/MarkdownOperation.ts +1 -1
- package/dist/lib/neutral/MarkdownArticle-LWT5RFFJ.mjs.map +0 -7
- package/dist/lib/neutral/MarkdownCard-TBLIRDBO.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs +0 -56
- package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs.map +0 -7
- package/dist/lib/neutral/chunk-36QFEVOZ.mjs +0 -30
- package/dist/lib/neutral/chunk-36QFEVOZ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-67DKWOKF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-CIJD7P6X.mjs +0 -8
- package/dist/lib/neutral/chunk-Y2LQRUU7.mjs.map +0 -7
- package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-XYZJBKHZ.mjs.map +0 -7
- package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +0 -7
- package/dist/lib/neutral/state-5COCF5PN.mjs +0 -44
- package/dist/lib/neutral/state-5COCF5PN.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -5
- package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
- package/src/capabilities/app-graph-serializer.ts +0 -64
- /package/dist/lib/neutral/{chunk-CIJD7P6X.mjs.map → chunk-BL46CERY.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-JK35XC4R.mjs.map → create-XW2FQNLK.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-markdown-7MLE625M.mjs.map → create-markdown-KLSVQCT7.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-object-MU2LGXG6.mjs.map → create-object-3WMEQJ2C.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-5YC77C4O.mjs.map → open-F7KLNKVN.mjs.map} +0 -0
- /package/dist/lib/neutral/{scroll-to-anchor-GAFB7W55.mjs.map → scroll-to-anchor-ACND3WJU.mjs.map} +0 -0
- /package/dist/lib/neutral/{set-view-mode-N7UHYMPG.mjs.map → set-view-mode-WDC7CAEC.mjs.map} +0 -0
- /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 !==
|
|
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-
|
|
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.
|
|
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-
|
|
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": "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",
|
|
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,
|
|
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
|
-
//
|
|
45
|
-
//
|
|
46
|
-
|
|
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
|
|
5
|
-
"mappings": ";;;AAIA,SAASA,cAAc;
|
|
6
|
-
"names": ["Plugin", "AppActivationEvents", "AppPlugin", "translations", "editorTranslations", "Text", "AnchorSort", "AppGraphBuilder", "NavigationResolver", "
|
|
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-
|
|
32
|
+
//# sourceMappingURL=MarkdownSettings-F5AWRDT3.mjs.map
|
package/dist/lib/neutral/{MarkdownSettings-YCTZJL5V.mjs.map → MarkdownSettings-F5AWRDT3.mjs.map}
RENAMED
|
@@ -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;
|
|
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-
|
|
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
|
|
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-
|
|
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-
|
|
6
|
-
var NavigationResolver = Capability.lazy("NavigationResolver", () => import("../navigation-resolver-
|
|
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-
|
|
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-
|
|
14
|
-
var MarkdownSettings = Capability.lazy("MarkdownSettings", () => import("../settings-
|
|
15
|
-
var MarkdownState = Capability.lazy("MarkdownState", () => import("../state-
|
|
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
|
|
5
|
-
"mappings": ";;;AAIA,SAASA,kBAAkB;
|
|
6
|
-
"names": ["Capability", "AppGraphBuilder", "lazy", "NavigationResolver", "AnchorSort", "
|
|
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-
|
|
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 {
|
|
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-
|
|
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 {
|
|
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.
|
|
117
|
-
var State = Capability.make(`${meta.
|
|
118
|
-
var EditorState = Capability.make(`${meta.
|
|
119
|
-
var EditorViews = Capability.make(`${meta.
|
|
120
|
-
var ExtensionProvider = Capability.make(`${meta.
|
|
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.
|
|
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.
|
|
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-
|
|
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.
|
|
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 !==
|
|
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 !==
|
|
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,
|
|
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
|
-
|
|
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:
|
|
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-
|
|
373
|
+
var MarkdownSettings = lazy(() => import("../MarkdownSettings-F5AWRDT3.mjs"));
|
|
373
374
|
export {
|
|
374
375
|
MarkdownEditor,
|
|
375
376
|
MarkdownEditorProvider,
|