@dxos/plugin-markdown 0.8.4-main.2c6827d → 0.8.4-main.3c1ae3b
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/browser/MarkdownCard-THZFDOOV.mjs +13 -0
- package/dist/lib/browser/MarkdownContainer-VKPSVI5F.mjs +16 -0
- package/dist/lib/browser/{anchor-sort-3HGPGCOO.mjs → anchor-sort-3MYLO74J.mjs} +6 -5
- package/dist/lib/browser/anchor-sort-3MYLO74J.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-POZN234F.mjs → app-graph-serializer-BZJ4TQOE.mjs} +3 -3
- package/dist/lib/browser/{blueprint-definition-GIPKFDY5.mjs → blueprint-definition-R5T6LTPN.mjs} +3 -3
- package/dist/lib/browser/{chunk-K3LXOU3E.mjs → chunk-56SUMOIZ.mjs} +102 -195
- package/dist/lib/browser/chunk-56SUMOIZ.mjs.map +7 -0
- package/dist/lib/browser/chunk-6OMOMVO7.mjs +107 -0
- package/dist/lib/browser/chunk-6OMOMVO7.mjs.map +7 -0
- package/dist/lib/browser/{chunk-QYSEJ5GP.mjs → chunk-CN35HEBX.mjs} +6 -6
- package/dist/lib/browser/chunk-CN35HEBX.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PBJLFIOX.mjs → chunk-KCOBZZIL.mjs} +38 -23
- package/dist/lib/browser/chunk-KCOBZZIL.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GH6GQSBL.mjs → chunk-KPH4ZPQN.mjs} +53 -5
- package/dist/lib/browser/chunk-KPH4ZPQN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-22XSSNBS.mjs → chunk-NXT2E2BG.mjs} +4 -3
- package/dist/lib/browser/chunk-NXT2E2BG.mjs.map +7 -0
- package/dist/lib/browser/{chunk-Y53FQREH.mjs → chunk-RJPOHSYN.mjs} +8 -6
- package/dist/lib/browser/chunk-RJPOHSYN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-2MLGSYRN.mjs → chunk-U6Y53XZK.mjs} +7 -7
- package/dist/lib/browser/index.mjs +10 -24
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-Z5L7TXUK.mjs → intent-resolver-55ASQRIW.mjs} +3 -3
- package/dist/lib/browser/{intent-resolver-Z5L7TXUK.mjs.map → intent-resolver-55ASQRIW.mjs.map} +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-GO5ZOKNN.mjs → react-surface-Q3C5H2KT.mjs} +21 -17
- package/dist/lib/browser/react-surface-Q3C5H2KT.mjs.map +7 -0
- package/dist/lib/browser/{settings-TZUDB5EW.mjs → settings-G3ZOXJQY.mjs} +2 -2
- package/dist/lib/browser/toolkit.mjs +2 -2
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{MarkdownCard-ZXPJLUYO.mjs → MarkdownCard-QHSSZGIY.mjs} +5 -4
- package/dist/lib/node-esm/{MarkdownContainer-YRDSRDCS.mjs → MarkdownContainer-G3ZQJS7A.mjs} +7 -6
- package/dist/lib/node-esm/{anchor-sort-PCDXEBJ2.mjs → anchor-sort-W4HCTYUQ.mjs} +6 -5
- package/dist/lib/node-esm/anchor-sort-W4HCTYUQ.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-NF65JYAS.mjs → app-graph-serializer-OCTHXWLF.mjs} +3 -3
- package/dist/lib/node-esm/{blueprint-definition-ENKJZYQS.mjs → blueprint-definition-2JV3WV22.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-PLZ7EVCT.mjs → chunk-6F6FCTIA.mjs} +53 -5
- package/dist/lib/node-esm/chunk-6F6FCTIA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HAIEWPU7.mjs → chunk-C5KXP2ZE.mjs} +8 -6
- package/dist/lib/node-esm/chunk-C5KXP2ZE.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CT7CFX5G.mjs → chunk-FR6RW6DH.mjs} +102 -195
- package/dist/lib/node-esm/chunk-FR6RW6DH.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-AMHACOXW.mjs → chunk-I5JSQBPI.mjs} +4 -3
- package/dist/lib/node-esm/chunk-I5JSQBPI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-KCHUTL3Q.mjs → chunk-KM7KYV6W.mjs} +7 -7
- package/dist/lib/node-esm/chunk-KYWXTMKI.mjs +108 -0
- package/dist/lib/node-esm/chunk-KYWXTMKI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-PIOOG7A5.mjs → chunk-R3SGV4ES.mjs} +38 -23
- package/dist/lib/node-esm/chunk-R3SGV4ES.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-NGYJNQ6A.mjs → chunk-YFRTKXTB.mjs} +6 -6
- package/dist/lib/node-esm/chunk-YFRTKXTB.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +10 -24
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-6B3PFQ5F.mjs → intent-resolver-DTBVWCNO.mjs} +3 -3
- package/dist/lib/node-esm/{intent-resolver-6B3PFQ5F.mjs.map → intent-resolver-DTBVWCNO.mjs.map} +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-I46BPCWT.mjs → react-surface-QWRT4SD6.mjs} +21 -17
- package/dist/lib/node-esm/react-surface-QWRT4SD6.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-CJ3T5EX4.mjs → settings-IBFFCGNL.mjs} +2 -2
- package/dist/lib/node-esm/toolkit.mjs +2 -2
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +14 -1
- package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownContainer.d.ts +6 -1
- package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownContainer.stories.d.ts +1 -0
- package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +8 -5
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
- package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +5 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/functions/open.d.ts.map +1 -1
- package/dist/types/src/functions/update.d.ts.map +1 -1
- package/dist/types/src/testing.d.ts +2 -2
- package/dist/types/src/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Markdown.d.ts +6 -6
- package/dist/types/src/types/Markdown.d.ts.map +1 -1
- package/dist/types/src/types/MarkdownAction.d.ts +3 -3
- package/dist/types/src/util.d.ts +3 -0
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/src/util.test.d.ts +2 -0
- package/dist/types/src/util.test.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +44 -44
- package/src/MarkdownPlugin.tsx +5 -21
- package/src/capabilities/anchor-sort.ts +4 -3
- package/src/capabilities/artifact-definition.ts +1 -1
- package/src/capabilities/intent-resolver.ts +1 -1
- package/src/capabilities/react-surface.tsx +32 -28
- package/src/components/MarkdownCard/MarkdownCard.tsx +39 -32
- package/src/components/MarkdownContainer.tsx +68 -73
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +5 -5
- package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +24 -8
- package/src/components/Suggestions.stories.tsx +2 -1
- package/src/components/index.ts +8 -3
- package/src/functions/create.test.ts +14 -18
- package/src/functions/open.ts +3 -2
- package/src/functions/update.test.ts +17 -21
- package/src/functions/update.ts +3 -2
- package/src/hooks/useExtensions.tsx +2 -2
- package/src/hooks/useLinkQuery.ts +10 -10
- package/src/testing.ts +5 -5
- package/src/translations.ts +1 -0
- package/src/types/Markdown.ts +4 -5
- package/src/util.test.ts +44 -0
- package/src/util.tsx +72 -4
- package/dist/lib/browser/MarkdownCard-JYMDPKV5.mjs +0 -12
- package/dist/lib/browser/MarkdownContainer-Y75XSVBX.mjs +0 -15
- package/dist/lib/browser/anchor-sort-3HGPGCOO.mjs.map +0 -7
- package/dist/lib/browser/chunk-22XSSNBS.mjs.map +0 -7
- package/dist/lib/browser/chunk-GH6GQSBL.mjs.map +0 -7
- package/dist/lib/browser/chunk-K3LXOU3E.mjs.map +0 -7
- package/dist/lib/browser/chunk-PBJLFIOX.mjs.map +0 -7
- package/dist/lib/browser/chunk-QYSEJ5GP.mjs.map +0 -7
- package/dist/lib/browser/chunk-Y53FQREH.mjs.map +0 -7
- package/dist/lib/browser/react-surface-GO5ZOKNN.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-PCDXEBJ2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AMHACOXW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CT7CFX5G.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HAIEWPU7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PIOOG7A5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PLZ7EVCT.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-I46BPCWT.mjs.map +0 -7
- /package/dist/lib/browser/{MarkdownCard-JYMDPKV5.mjs.map → MarkdownCard-THZFDOOV.mjs.map} +0 -0
- /package/dist/lib/browser/{MarkdownContainer-Y75XSVBX.mjs.map → MarkdownContainer-VKPSVI5F.mjs.map} +0 -0
- /package/dist/lib/browser/{app-graph-serializer-POZN234F.mjs.map → app-graph-serializer-BZJ4TQOE.mjs.map} +0 -0
- /package/dist/lib/browser/{blueprint-definition-GIPKFDY5.mjs.map → blueprint-definition-R5T6LTPN.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-2MLGSYRN.mjs.map → chunk-U6Y53XZK.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-TZUDB5EW.mjs.map → settings-G3ZOXJQY.mjs.map} +0 -0
- /package/dist/lib/node-esm/{MarkdownCard-ZXPJLUYO.mjs.map → MarkdownCard-QHSSZGIY.mjs.map} +0 -0
- /package/dist/lib/node-esm/{MarkdownContainer-YRDSRDCS.mjs.map → MarkdownContainer-G3ZQJS7A.mjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-serializer-NF65JYAS.mjs.map → app-graph-serializer-OCTHXWLF.mjs.map} +0 -0
- /package/dist/lib/node-esm/{blueprint-definition-ENKJZYQS.mjs.map → blueprint-definition-2JV3WV22.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-KCHUTL3Q.mjs.map → chunk-KM7KYV6W.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-CJ3T5EX4.mjs.map → settings-IBFFCGNL.mjs.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/anchor-sort.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { createDocAccessor, getRangeFromCursor, getTarget } from '@dxos/react-client/echo';\nimport { type AnchoredTo } from '@dxos/types';\n\nimport { Markdown } from '../types';\n\nexport default () =>\n contributes(Capabilities.AnchorSort, {\n key: Markdown.Document.typename,\n sort: (anchorA: AnchoredTo.AnchoredTo, anchorB: AnchoredTo.AnchoredTo) => {\n const doc = getTarget(anchorA) as Markdown.Document;\n const accessor = doc.content.target ? createDocAccessor(doc.content.target, ['content']) : undefined;\n if (doc !== getTarget(anchorB) || !accessor) {\n return 0;\n }\n\n const getStartPosition = (cursor: string | undefined) => {\n const range = cursor ? getRangeFromCursor(accessor, cursor) : undefined;\n return range?.start ?? Number.MAX_SAFE_INTEGER;\n };\n\n const posA = getStartPosition(anchorA.anchor);\n const posB = getStartPosition(anchorB.anchor);\n return posA - posB;\n },\n });\n"],
|
|
5
|
-
"mappings": ";;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,mBAAmBC,oBAAoBC,iBAAiB;AAKjE,IAAA,uBAAe,MACbC,YAAYC,aAAaC,YAAY;EACnCC,KAAKC,iBAASC,SAASC;EACvBC,MAAM,CAACC,SAAgCC,YAAAA;AACrC,UAAMC,MAAMC,UAAUH,OAAAA;AACtB,UAAMI,WAAWF,IAAIG,QAAQC,SAASC,kBAAkBL,IAAIG,QAAQC,QAAQ;MAAC;KAAU,IAAIE;AAC3F,QAAIN,QAAQC,UAAUF,OAAAA,KAAY,CAACG,UAAU;AAC3C,aAAO;IACT;AAEA,UAAMK,mBAAmB,CAACC,WAAAA;AACxB,YAAMC,QAAQD,SAASE,mBAAmBR,UAAUM,MAAAA,IAAUF;AAC9D,aAAOG,OAAOE,SAASC,OAAOC;IAChC;AAEA,UAAMC,OAAOP,iBAAiBT,QAAQiB,MAAM;AAC5C,UAAMC,OAAOT,iBAAiBR,QAAQgB,MAAM;AAC5C,WAAOD,OAAOE;EAChB;AACF,CAAA;",
|
|
6
|
-
"names": ["Capabilities", "contributes", "createDocAccessor", "getRangeFromCursor", "getTarget", "contributes", "Capabilities", "AnchorSort", "key", "Markdown", "Document", "typename", "sort", "anchorA", "anchorB", "doc", "getTarget", "accessor", "content", "target", "createDocAccessor", "undefined", "getStartPosition", "cursor", "range", "getRangeFromCursor", "start", "Number", "MAX_SAFE_INTEGER", "posA", "anchor", "posB"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\nimport { Markdown } from './types';\n\nexport const translations = [\n {\n 'en-US': {\n [Markdown.Document.typename]: {\n 'typename label': 'Document',\n 'typename label_zero': 'Documents',\n 'typename label_one': 'Document',\n 'typename label_other': 'Documents',\n 'object name placeholder': 'New document',\n 'rename object label': 'Rename document',\n 'delete object label': 'Delete document',\n },\n [meta.id]: {\n 'plugin name': 'Editor',\n 'settings title': 'Editor settings',\n 'choose markdown from space dialog title': 'Choose one or more documents to add',\n // TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)\n 'empty choose markdown from space message': 'None available; try creating a new one instead?',\n 'chooser done label': 'Add selected',\n 'editor placeholder': '',\n 'editor input mode label': 'Editor input mode',\n 'select editor input mode placeholder': 'Select editor input mode…',\n 'settings editor input mode default label': 'Default',\n 'settings editor input mode vim label': 'Vim',\n 'settings editor input mode vscode label': 'VS Code',\n 'settings toolbar label': 'Show toolbar',\n 'settings numbered headings label': 'Numbered headings',\n 'settings folding label': 'Folding',\n 'settings experimental label': 'Enable experimental features',\n 'settings debug label': 'Enable debugging features',\n 'settings debug placeholder': 'Typewriter script...',\n 'toggle view mode label': 'Toggle read-only',\n 'default view mode label': 'Default view mode',\n 'upload image label': 'Upload image',\n 'fallback title': 'Untitled',\n 'navigate to document label': 'Open document',\n 'words label_zero': 'words',\n 'words label_one': 'word',\n 'words label_other': 'words',\n },\n },\n },\n] as const satisfies Resource[];\n"],
|
|
5
|
-
"mappings": ";;;;;;;;AASO,IAAMA,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,iBAASC,SAASC,QAAQ,GAAG;QAC5B,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;QAC3B,uBAAuB;QACvB,uBAAuB;MACzB;MACA,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,kBAAkB;QAClB,2CAA2C;;QAE3C,4CAA4C;QAC5C,sBAAsB;QACtB,sBAAsB;QACtB,2BAA2B;QAC3B,wCAAwC;QACxC,4CAA4C;QAC5C,wCAAwC;QACxC,2CAA2C;QAC3C,0BAA0B;QAC1B,oCAAoC;QACpC,0BAA0B;QAC1B,+BAA+B;QAC/B,wBAAwB;QACxB,8BAA8B;QAC9B,0BAA0B;QAC1B,2BAA2B;QAC3B,sBAAsB;QACtB,kBAAkB;QAClB,8BAA8B;QAC9B,oBAAoB;QACpB,mBAAmB;QACnB,qBAAqB;MACvB;IACF;EACF;;",
|
|
6
|
-
"names": ["translations", "Markdown", "Document", "typename", "meta", "id"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/util.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { debounce } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { type TypedObjectSerializer } from '@dxos/plugin-space/types';\n\nimport { Markdown } from './types';\n\n/**\n * Checks if an object conforms to the interface needed to render an editor.\n * @deprecated Use Schema.instanceOf(Markdown.Document, data)\n */\n// TODO(burdon): Normalize types (from FilesPlugin).\nexport const isEditorModel = (data: any): data is { id: string; text: string } =>\n data &&\n typeof data === 'object' &&\n 'id' in data &&\n typeof data.id === 'string' &&\n 'text' in data &&\n typeof data.text === 'string';\n\nexport type MarkdownProperties = Record<string, any>;\n\nexport const isMarkdownProperties = (data: unknown): data is MarkdownProperties =>\n (Obj.isObject(data) as boolean)\n ? true\n : data && typeof data === 'object'\n ? 'title' in data && typeof data.title === 'string'\n : false;\n\nconst nonTitleChars = /[^\\w ]/g;\n\nexport const getFallbackName = (content = '') => {\n return content.substring(0, 31).split('\\n')[0].replaceAll(nonTitleChars, '').trim();\n};\n\nexport const getContentSnippet = (content = '') => {\n const abstract = content\n .split('\\n')\n .filter((line) => !line.startsWith('#'))\n .filter((line) => line.trim() !== '');\n\n return abstract.length > 0 ? abstract[0].replaceAll(nonTitleChars, '').trim() + '...' : '';\n};\n\nexport const setFallbackName = debounce((doc: Markdown.Document, content = '') => {\n const name = getFallbackName(content);\n if (doc.fallbackName !== name) {\n doc.fallbackName = name;\n }\n}, 200);\n\nexport const serializer: TypedObjectSerializer<Markdown.Document> = {\n serialize: async ({ object }): Promise<string> => {\n const { content } = await object.content.load();\n return JSON.stringify({ name: object.name, fallbackName: object.fallbackName, content });\n },\n\n deserialize: async ({ content: serialized }) => {\n const { name, fallbackName, content } = JSON.parse(serialized);\n return Markdown.make({ name, fallbackName, content });\n },\n};\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,SAASA,gBAAgB;AACzB,SAASC,WAAW;AAUb,IAAMC,gBAAgB,CAACC,SAC5BA,QACA,OAAOA,SAAS,YAChB,QAAQA,QACR,OAAOA,KAAKC,OAAO,YACnB,UAAUD,QACV,OAAOA,KAAKE,SAAS;AAIhB,IAAMC,uBAAuB,CAACH,SAClCI,IAAIC,SAASL,IAAAA,IACV,OACAA,QAAQ,OAAOA,SAAS,WACtB,WAAWA,QAAQ,OAAOA,KAAKM,UAAU,WACzC;AAER,IAAMC,gBAAgB;AAEf,IAAMC,kBAAkB,CAACC,UAAU,OAAE;AAC1C,SAAOA,QAAQC,UAAU,GAAG,EAAA,EAAIC,MAAM,IAAA,EAAM,CAAA,EAAGC,WAAWL,eAAe,EAAA,EAAIM,KAAI;AACnF;AAEO,IAAMC,oBAAoB,CAACL,UAAU,OAAE;AAC5C,QAAMM,WAAWN,QACdE,MAAM,IAAA,EACNK,OAAO,CAACC,SAAS,CAACA,KAAKC,WAAW,GAAA,CAAA,EAClCF,OAAO,CAACC,SAASA,KAAKJ,KAAI,MAAO,EAAA;AAEpC,SAAOE,SAASI,SAAS,IAAIJ,SAAS,CAAA,EAAGH,WAAWL,eAAe,EAAA,EAAIM,KAAI,IAAK,QAAQ;AAC1F;AAEO,IAAMO,kBAAkBC,SAAS,CAACC,KAAwBb,UAAU,OAAE;AAC3E,QAAMc,OAAOf,gBAAgBC,OAAAA;AAC7B,MAAIa,IAAIE,iBAAiBD,MAAM;AAC7BD,QAAIE,eAAeD;EACrB;AACF,GAAG,GAAA;AAEI,IAAME,aAAuD;EAClEC,WAAW,OAAO,EAAEC,OAAM,MAAE;AAC1B,UAAM,EAAElB,QAAO,IAAK,MAAMkB,OAAOlB,QAAQmB,KAAI;AAC7C,WAAOC,KAAKC,UAAU;MAAEP,MAAMI,OAAOJ;MAAMC,cAAcG,OAAOH;MAAcf;IAAQ,CAAA;EACxF;EAEAsB,aAAa,OAAO,EAAEtB,SAASuB,WAAU,MAAE;AACzC,UAAM,EAAET,MAAMC,cAAcf,QAAO,IAAKoB,KAAKI,MAAMD,UAAAA;AACnD,WAAOE,iBAASC,KAAK;MAAEZ;MAAMC;MAAcf;IAAQ,CAAA;EACrD;AACF;",
|
|
6
|
-
"names": ["debounce", "Obj", "isEditorModel", "data", "id", "text", "isMarkdownProperties", "Obj", "isObject", "title", "nonTitleChars", "getFallbackName", "content", "substring", "split", "replaceAll", "trim", "getContentSnippet", "abstract", "filter", "line", "startsWith", "length", "setFallbackName", "debounce", "doc", "name", "fallbackName", "serializer", "serialize", "object", "load", "JSON", "stringify", "deserialize", "serialized", "parse", "Markdown", "make"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/MarkdownContainer.tsx", "../../../src/hooks/useEditorMenuOptions.ts", "../../../src/hooks/useExtensions.tsx", "../../../src/hooks/useLinkQuery.ts", "../../../src/hooks/useSelectCurrentThread.tsx", "../../../src/components/MarkdownEditor/MarkdownEditor.tsx", "../../../src/components/MarkdownEditor/MarkdownEditorContent.tsx", "../../../src/components/MarkdownEditor/MarkdownEditorToolbar.tsx", "../../../src/components/MarkdownEditor/FileUpload.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, { useMemo } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useAppGraph, useCapabilities } from '@dxos/app-framework/react';\nimport { Obj } from '@dxos/echo';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { type SelectionManager } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Text } from '@dxos/schema';\n\nimport { MarkdownCapabilities } from '../capabilities';\nimport { type DocumentType, useLinkQuery } from '../hooks';\nimport { Markdown, type MarkdownPluginState } from '../types';\n\nimport { MarkdownEditor, type MarkdownEditorContentProps, type MarkdownEditorRootProps } from './MarkdownEditor';\n\nexport type MarkdownContainerProps = {\n role?: string;\n object: DocumentType;\n settings: Markdown.Settings;\n selectionManager?: SelectionManager;\n} & (Pick<MarkdownEditorRootProps, 'id' | 'viewMode' | 'onViewModeChange'> &\n Pick<MarkdownEditorContentProps, 'editorStateStore'> &\n Pick<MarkdownPluginState, 'extensionProviders'>);\n\nexport const MarkdownContainer = ({\n id,\n role,\n object,\n settings,\n extensionProviders,\n ...props\n}: MarkdownContainerProps) => {\n const space = getSpace(object);\n const isDocument = Obj.instanceOf(Markdown.Document, object);\n const isText = Obj.instanceOf(Text.Text, object);\n const attendableId = isDocument ? Obj.getDXN(object).toString() : undefined;\n\n // Extensions from other plugins.\n // TODO(burdon): Document MarkdownPluginState.extensionProviders\n const otherExtensionProviders = useCapabilities(MarkdownCapabilities.Extensions);\n const extensions = useMemo<Extension[]>(() => {\n if (!Obj.instanceOf(Markdown.Document, object)) {\n return [];\n }\n\n return [...(otherExtensionProviders ?? []), ...(extensionProviders ?? [])]\n .flat()\n .reduce((acc: Extension[], provider) => {\n const extension =\n typeof provider === 'function' ? provider({ document: object as Markdown.Document }) : provider;\n if (extension) {\n acc.push(extension);\n }\n\n return acc;\n }, []);\n }, [extensionProviders, otherExtensionProviders, object]);\n\n // Toolbar actions from app graph.\n const { graph } = useAppGraph();\n const customActions = useMemo(() => {\n return Atom.make((get) => {\n const actions = get(graph.actions(id));\n const nodes = actions.filter((action) => action.properties.disposition === 'toolbar');\n const edges = nodes.map((node) => ({ source: 'root', target: node.id }));\n return { nodes, edges };\n });\n }, [graph]);\n\n // File upload.\n const [upload] = useCapabilities(Capabilities.FileUploader);\n const handleFileUpload = useMemo(() => {\n if (!space || !upload) {\n return undefined;\n }\n\n return async (file: File) => upload(space, file);\n }, [space, upload]);\n\n // Query for @ refs.\n const handleLinkQuery = useLinkQuery(space);\n\n return (\n <StackItem.Content toolbar={settings.toolbar}>\n <MarkdownEditor.Root\n id={attendableId ?? id}\n object={object}\n extensions={extensions}\n onFileUpload={handleFileUpload}\n onLinkQuery={handleLinkQuery}\n {...props}\n >\n {settings.toolbar && (\n <MarkdownEditor.Toolbar id={attendableId ?? id} role={role} customActions={customActions} />\n )}\n <MarkdownEditor.Content\n initialValue={isDocument ? object.content?.target?.content : isText ? object.content : object.text}\n scrollPastEnd={role === 'article'}\n />\n <MarkdownEditor.Blocks />\n </MarkdownEditor.Root>\n </StackItem.Content>\n );\n};\n\nexport default MarkdownContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { useCallback, useMemo, useRef } from 'react';\n\nimport { Domino, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type UseEditorMenuProps,\n filterMenuGroups,\n formattingCommands,\n linkSlashCommands,\n} from '@dxos/react-ui-editor';\n\nimport { meta } from '../meta';\n\nexport type UseEditorMenuOptionsProps = {\n editorView?: EditorView;\n slashCommandGroups?: EditorMenuGroup[];\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n};\n\nexport const useEditorMenuOptions = ({\n editorView,\n slashCommandGroups,\n onLinkQuery,\n}: UseEditorMenuOptionsProps): UseEditorMenuProps => {\n const { t } = useTranslation(meta.id);\n\n const getMenu = useCallback<NonNullable<UseEditorMenuProps['getMenu']>>(\n ({ text, trigger }) => {\n switch (trigger) {\n case '@': {\n return onLinkQuery?.(text) ?? [];\n }\n\n case '/':\n default: {\n return filterMenuGroups([formattingCommands, linkSlashCommands, ...(slashCommandGroups ?? [])], (item) =>\n text ? toLocalizedString(item.label, t).toLowerCase().includes(text.toLowerCase()) : true,\n );\n }\n }\n },\n [slashCommandGroups, onLinkQuery],\n );\n\n const viewRef = useRef(editorView);\n return useMemo<UseEditorMenuProps>(() => {\n const trigger = onLinkQuery ? ['/', '@'] : ['/'];\n const placeholder = {\n delay: 3_000,\n content: () =>\n Domino.of('div')\n .children(\n Domino.of('span').text('Press'),\n ...trigger.map((text) =>\n Domino.of('span')\n .classNames('mx-1 pli-1.5 pt-[1px] pb-[2px] border border-separator rounded-sm')\n .text(text),\n ),\n Domino.of('span').text('for commands.'),\n )\n .build(),\n };\n\n return { viewRef, getMenu, trigger, placeholder };\n }, [getMenu, onLinkQuery]);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ViewUpdate } from '@codemirror/view';\nimport React, { type AnchorHTMLAttributes, type ReactNode, useMemo } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { LayoutAction, type PromiseIntentDispatcher, createIntent } from '@dxos/app-framework';\nimport { useIntentDispatcher } from '@dxos/app-framework/react';\nimport { debounceAndThrottle } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ThemeProvider } from '@dxos/react-ui';\nimport { type SelectionManager } from '@dxos/react-ui-attention';\nimport {\n Cursor,\n type EditorStateStore,\n EditorView,\n type EditorViewMode,\n type Extension,\n InputModeExtensions,\n type PreviewOptions,\n type RenderCallback,\n createDataExtensions,\n decorateMarkdown,\n documentId,\n folding,\n formattingKeymap,\n linkTooltip,\n listener,\n preview,\n replacer,\n selectionState,\n typewriter,\n} from '@dxos/react-ui-editor';\nimport { defaultTx } from '@dxos/react-ui-theme';\nimport { Text } from '@dxos/schema';\nimport { isTruthy } from '@dxos/util';\n\nimport { Markdown } from '../types';\nimport { setFallbackName } from '../util';\n\nexport type DocumentType = Markdown.Document | Text.Text | { id: string; text: string };\n\nexport type ExtensionsOptions = {\n id: string;\n object?: DocumentType;\n dispatch?: PromiseIntentDispatcher;\n settings?: Markdown.Settings;\n selectionManager?: SelectionManager;\n viewMode?: EditorViewMode;\n editorStateStore?: EditorStateStore;\n previewOptions?: PreviewOptions;\n};\n\n// TODO(burdon): Merge with createBaseExtensions below.\nexport const useExtensions = ({\n id,\n object,\n settings,\n selectionManager,\n viewMode,\n editorStateStore,\n previewOptions,\n}: ExtensionsOptions): Extension[] => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const identity = useIdentity();\n const space = getSpace(object);\n\n let target: Obj.Any | undefined;\n if (Obj.instanceOf(Markdown.Document, object)) {\n target = (object as Markdown.Document).content.target;\n } else if (Obj.instanceOf(Text.Text, object)) {\n target = object;\n }\n\n // TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.\n // TODO(burdon): Unsubscribe.\n // const query = space?.db.query(Filter.type(DocumentType));\n // query?.subscribe();\n\n const baseExtensions = useMemo(\n () =>\n createBaseExtensions({\n id,\n object,\n settings,\n selectionManager,\n viewMode,\n previewOptions,\n dispatch,\n }),\n [\n id,\n object,\n viewMode,\n dispatch,\n previewOptions,\n settings,\n settings?.debug,\n settings?.editorInputMode,\n settings?.folding,\n settings?.numberedHeadings,\n settings?.typewriter,\n selectionManager,\n ],\n );\n\n return useMemo<Extension[]>(\n () =>\n [\n // TODO(burdon): Pass this in?\n // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.\n target &&\n createDataExtensions({\n id,\n text: createDocAccessor(target, ['content']),\n space,\n identity,\n }),\n\n // TODO(burdon): Reconcile with effect in parent.\n Obj.instanceOf(Markdown.Document, object) &&\n listener({\n onChange: ({ text }) => {\n setFallbackName(object as Markdown.Document, text);\n },\n }),\n\n baseExtensions,\n selectionState(editorStateStore),\n ].filter(isTruthy),\n [identity, space, id, object, target, baseExtensions],\n );\n};\n\n/**\n * Create extension instances for editor.\n */\nconst createBaseExtensions = ({\n id,\n object,\n dispatch,\n settings,\n selectionManager,\n viewMode,\n previewOptions,\n}: ExtensionsOptions): Extension[] => {\n const extensions: Extension[] = [\n selectionManager && selectionChange(selectionManager),\n settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],\n settings?.folding && folding(),\n ].filter(isTruthy);\n\n //\n // Markdown\n //\n if (viewMode !== 'source') {\n extensions.push(\n ...[\n formattingKeymap(),\n decorateMarkdown({\n selectionChangeDelay: 100,\n numberedHeadings: settings?.numberedHeadings ? { from: 2 } : undefined,\n // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.\n // TODO(burdon): Create dx-tag.\n renderLinkButton:\n dispatch && (object || id)\n ? createLinkRenderer((id: string) => {\n void dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [id],\n options: {\n pivotId: object && Obj.isObject(object) ? Obj.getDXN(object).toString() : id,\n },\n }),\n );\n })\n : undefined,\n }),\n linkTooltip(renderLinkTooltip),\n preview(previewOptions),\n replacer(),\n ],\n );\n }\n\n if (settings?.debug) {\n const items = settings.typewriter?.split(/[,\\n]/) ?? '';\n if (items) {\n extensions.push(typewriter({ items }));\n }\n }\n\n return extensions;\n};\n\nconst selectionChange = (selectionManager: SelectionManager) => {\n return EditorView.updateListener.of(\n debounceAndThrottle((update: ViewUpdate) => {\n if (update.selectionSet) {\n const id = update.state.facet(documentId);\n const cursorConverter = update.state.facet(Cursor.converter);\n const selection = update.state.selection;\n const ranges = selection.ranges\n .map((range) => ({\n from: cursorConverter.toCursor(range.from),\n to: cursorConverter.toCursor(range.to),\n }))\n .filter(({ from, to }) => to > from);\n\n selectionManager.updateMultiRange(id, ranges);\n }\n }, 100),\n );\n};\n\n// TODO(burdon): Factor out styles.\nconst style = {\n hover: 'rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400',\n icon: 'inline-block leading-none mis-1 cursor-pointer',\n};\n\nconst createLinkRenderer =\n (onSelectObject: (id: string) => void): RenderCallback<{ url: string }> =>\n (el, { url }) => {\n // TODO(burdon): Formalize/document internal link format.\n const isInternal =\n url.startsWith('/') ||\n // TODO(wittjosiah): This should probably be parsed out on paste?\n url.startsWith(window.location.origin);\n\n const options: AnchorHTMLAttributes<any> = isInternal\n ? {\n onClick: () => {\n const qualifiedId = url.split('/').at(-1);\n invariant(qualifiedId, 'Invalid link format.');\n onSelectObject(qualifiedId);\n },\n }\n : {\n href: url,\n rel: 'noreferrer',\n target: '_blank',\n };\n\n renderRoot(\n el,\n <a {...options} className={style.hover}>\n <Icon\n icon={isInternal ? 'ph--arrow-square-down--bold' : 'ph--arrow-square-out--bold'}\n size={4}\n classNames={style.icon}\n />\n </a>,\n );\n };\n\nconst renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {\n const web = new URL(url);\n renderRoot(\n el,\n <a href={url} rel='noreferrer' target='_blank' className={style.hover}>\n {web.origin}\n <Icon icon='ph--arrow-square-out--bold' size={4} classNames={style.icon} />\n </a>,\n );\n};\n\n// TODO(burdon): REMOVE.\nconst renderRoot = <T extends Element>(root: T, node: ReactNode): T => {\n createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);\n return root;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback, useMemo } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapabilities, usePluginManager } from '@dxos/app-framework/react';\nimport { Filter, Obj, Query, Type } from '@dxos/echo';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { type Space } from '@dxos/react-client/echo';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type EditorMenuGroup, type EditorMenuItem, insertAtCursor, insertAtLineStart } from '@dxos/react-ui-editor';\n\nexport const useLinkQuery = (space: Space | undefined) => {\n const { t } = useTranslation();\n\n const manager = usePluginManager();\n const resolve = useCallback(\n (typename: string) =>\n manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},\n [manager],\n );\n\n const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);\n const schemaWhiteList = useCapabilities(ClientCapabilities.SchemaWhiteList);\n const filter = useMemo(\n () =>\n Filter.or(\n ...objectForms.map((form) => Filter.type(form.objectSchema)),\n ...schemaWhiteList.flat().map((schema) => Filter.typename(Type.getTypename(schema))),\n ),\n [objectForms, schemaWhiteList],\n );\n\n const handleLinkQuery = useCallback(\n async (query?: string): Promise<EditorMenuGroup[]> => {\n const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');\n const results = await space?.db.query(Query.select(filter)).run();\n\n // TODO(wittjosiah): Use `Obj.Any` type.\n const getLabel = (object: any) => {\n const label = Obj.getLabel(object);\n if (label) {\n return label;\n }\n\n // TODO(wittjosiah): Remove metadata labels.\n const type = Obj.getTypename(object)!;\n const metadata = resolve(type);\n return metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New object' }];\n };\n\n const items =\n results?.objects\n .filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))\n // TODO(wittjosiah): Remove `any` type.\n .map((object: any): EditorMenuItem => {\n const metadata = resolve(Obj.getTypename(object)!);\n const label = toLocalizedString(getLabel(object), t);\n return {\n id: object.id,\n label,\n icon: metadata.icon,\n onSelect: ({ view, head }) => {\n const link = `[${label}](${Obj.getDXN(object)})`;\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n }) ?? [];\n\n return [{ id: 'echo', items }];\n },\n [space, filter, resolve],\n );\n\n return handleLinkQuery;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport * as Schema from 'effect/Schema';\nimport { useMemo } from 'react';\n\nimport { LayoutAction, createResolver } from '@dxos/app-framework';\nimport { useIntentResolver } from '@dxos/app-framework/react';\nimport { invariant } from '@dxos/invariant';\nimport { Cursor, setSelection } from '@dxos/react-ui-editor';\n\nimport { meta } from '../meta';\n\n/**\n * Handle scrolling and selection of the current thread in a markdown editor.\n */\nexport const useSelectCurrentThread = (editorView: EditorView | null, documentId: string) => {\n const scrollIntoViewResolver = useMemo(\n () =>\n createResolver({\n intent: LayoutAction.UpdateLayout,\n position: 'hoist',\n filter: (\n data,\n ): data is {\n part: 'current';\n subject: string;\n options: { cursor: string };\n } => {\n if (!Schema.is(LayoutAction.ScrollIntoView.fields.input)(data)) {\n return false;\n }\n\n return !!editorView && data.subject === documentId && !!data.options?.cursor;\n },\n resolve: ({ options: { cursor } }) => {\n invariant(editorView, 'Editor view is not defined.');\n const range = Cursor.getRangeFromCursor(editorView.state, cursor!);\n if (range) {\n const selection = editorView.state.selection.main.from !== range.from ? { anchor: range.from } : undefined;\n const effects = [\n // NOTE: This does not use the DOM scrollIntoView function.\n EditorView.scrollIntoView(range.from, {\n y: 'start',\n yMargin: 96,\n }),\n ];\n if (selection) {\n // Update the editor selection to get bi-directional highlighting.\n effects.push(setSelection.of({ current: documentId }));\n }\n\n editorView.dispatch({\n effects,\n selection: selection ? { anchor: range.from } : undefined,\n });\n }\n },\n }),\n [documentId, editorView],\n );\n\n useIntentResolver(meta.id, scrollIntoViewResolver);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Surface } from '@dxos/app-framework/react';\nimport { DXN } from '@dxos/keys';\nimport { type Live } from '@dxos/live-object';\nimport { useClient } from '@dxos/react-client';\nimport {\n EditorMenuProvider,\n type EditorToolbarState,\n type PreviewBlock,\n type PreviewOptions,\n type UseEditorMenu,\n useEditorMenu,\n useEditorToolbar,\n} from '@dxos/react-ui-editor';\nimport { isNonNullable } from '@dxos/util';\n\nimport {\n type DocumentType,\n type ExtensionsOptions,\n type UseEditorMenuOptionsProps,\n useEditorMenuOptions,\n useExtensions,\n} from '../../hooks';\n\nimport {\n MarkdownEditorContent as NaturalMarkdownEditorContent,\n type MarkdownEditorContentProps as NaturalMarkdownEditorContentProps,\n} from './MarkdownEditorContent';\nimport {\n MarkdownEditorToolbar as NaturalMarkdownToolbar,\n type MarkdownEditorToolbarProps as NaturalMarkdownToolbarProps,\n} from './MarkdownEditorToolbar';\n\n//\n// Context\n//\n\ntype MarkdownEditorContextValue = {\n id: string;\n setEditorView: (view: EditorView) => void;\n extensions: Extension[];\n previewBlocks: PreviewBlock[];\n toolbarState: Live<EditorToolbarState>;\n popoverMenu: Omit<UseEditorMenu, 'extension'>;\n} & (Pick<ExtensionsOptions, 'viewMode'> &\n Pick<NaturalMarkdownToolbarProps, 'editorView' | 'onFileUpload' | 'onViewModeChange'>);\n\nconst [MarkdownEditorContextProvider, useMarkdownEditorContext] =\n createContext<MarkdownEditorContextValue>('MarkdownEditor.Context');\n\n//\n// MarkdownEditor.Root\n//\n\ntype MarkdownEditorRootProps = PropsWithChildren<\n {\n object?: DocumentType;\n extensions?: Extension[];\n } & Pick<MarkdownEditorContextValue, 'id' | 'onFileUpload' | 'onViewModeChange' | 'viewMode'> &\n Pick<UseEditorMenuOptionsProps, 'slashCommandGroups' | 'onLinkQuery'> &\n Pick<ExtensionsOptions, 'editorStateStore' | 'selectionManager' | 'settings'>\n>;\n\nconst MarkdownEditorRoot = ({\n children,\n id,\n object,\n editorStateStore,\n selectionManager,\n settings,\n viewMode,\n extensions: extensionsParam,\n slashCommandGroups,\n onLinkQuery,\n ...props\n}: MarkdownEditorRootProps) => {\n const [editorView, setEditorView] = useState<EditorView>();\n\n // Preview blocks.\n const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);\n const previewOptions = useMemo<PreviewOptions>(\n () => ({\n addBlockContainer: (block) => {\n setPreviewBlocks((prev) => [...prev, block]);\n },\n removeBlockContainer: ({ link }) => {\n setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.ref !== link.ref));\n },\n }),\n [],\n );\n\n // Toolbar state.\n const toolbarState = useEditorToolbar({ viewMode });\n\n // Context menu.\n const menuOptions = useEditorMenuOptions({\n editorView,\n slashCommandGroups,\n onLinkQuery,\n });\n const { extension: menuExtension, ...menuProps } = useEditorMenu(menuOptions);\n\n // Extensions.\n const coreExtensions = useExtensions({\n id,\n object,\n editorStateStore,\n previewOptions,\n selectionManager,\n settings,\n viewMode,\n });\n\n const extensions = useMemo(\n () => [coreExtensions, menuExtension, extensionsParam].filter(isNonNullable),\n [coreExtensions, menuExtension, extensionsParam],\n );\n\n return (\n <MarkdownEditorContextProvider\n id={id}\n editorView={editorView}\n setEditorView={setEditorView}\n extensions={extensions}\n previewBlocks={previewBlocks}\n toolbarState={toolbarState}\n popoverMenu={menuProps}\n viewMode={viewMode}\n {...props}\n >\n {children}\n </MarkdownEditorContextProvider>\n );\n};\n\nMarkdownEditorRoot.displayName = 'MarkdownEditor.Root';\n\n//\n// MarkdownEditor.Main\n//\n\ntype MarkdownEditorContentProps = Omit<NaturalMarkdownEditorContentProps, 'id' | 'extensions' | 'toolbarState'>;\n\nconst MarkdownEditorContent = (props: MarkdownEditorContentProps) => {\n const {\n id,\n extensions,\n editorView,\n setEditorView,\n toolbarState,\n viewMode,\n popoverMenu: { groupsRef, ...menuProps },\n } = useMarkdownEditorContext(MarkdownEditorContent.displayName);\n\n return (\n <EditorMenuProvider view={editorView} groups={groupsRef.current} {...menuProps}>\n <NaturalMarkdownEditorContent\n {...props}\n id={id}\n extensions={extensions}\n toolbarState={toolbarState}\n viewMode={viewMode}\n ref={setEditorView}\n />\n </EditorMenuProvider>\n );\n};\n\nMarkdownEditorContent.displayName = 'MarkdownEditor.Content';\n\n//\n// MarkdownEditor.Toolbar\n//\n\ntype MarkdownEditorToolbarProps = Omit<\n NaturalMarkdownToolbarProps,\n 'state' | 'editorView' | 'onFileUpload' | 'onViewModeChange'\n>;\n\nconst MarkdownEditorToolbar = (props: MarkdownEditorToolbarProps) => {\n const { toolbarState, ...rootProps } = useMarkdownEditorContext(MarkdownEditorToolbar.displayName);\n\n return <NaturalMarkdownToolbar {...props} {...rootProps} state={toolbarState} />;\n};\n\nMarkdownEditorToolbar.displayName = 'MarkdownEditor.Toolbar';\n\n//\n// MarkdownEditor.Blocks (embedded objects)\n//\n\ntype MarkdownEditorBlocksProps = {};\n\nconst MarkdownEditorBlocks = (_props: MarkdownEditorBlocksProps) => {\n const { previewBlocks } = useMarkdownEditorContext(MarkdownEditorBlocks.displayName);\n\n return (\n <>\n {previewBlocks.map(({ link, el }) => (\n <PreviewBlock key={link.ref} link={link} el={el} />\n ))}\n </>\n );\n};\n\nMarkdownEditorBlocks.displayName = 'MarkdownEditor.Blocks';\n\nconst PreviewBlock = ({ el, link }: PreviewBlock) => {\n const client = useClient();\n const dxn = DXN.parse(link.ref);\n const subject = client.graph.ref(dxn).target;\n const data = useMemo(() => ({ subject }), [subject]);\n\n return createPortal(<Surface role='card--transclusion' data={data} limit={1} />, el);\n};\n\n//\n// MarkdownEditor\n//\n\nexport const MarkdownEditor = {\n Root: MarkdownEditorRoot,\n Content: MarkdownEditorContent,\n Toolbar: MarkdownEditorToolbar,\n Blocks: MarkdownEditorBlocks,\n};\n\nexport type {\n MarkdownEditorRootProps,\n MarkdownEditorContentProps,\n MarkdownEditorToolbarProps,\n MarkdownEditorBlocksProps,\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { forwardRef, useEffect, useImperativeHandle, useMemo } from 'react';\n\nimport { type Live } from '@dxos/live-object';\nimport { useDynamicRef, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type EditorSelectionState,\n type EditorStateStore,\n type EditorToolbarState,\n type EditorViewMode,\n type UseTextEditorProps,\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n dropFile,\n editorGutter,\n editorSlots,\n formattingListener,\n processEditorPayload,\n stackItemContentEditorClassNames,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { isTruthy } from '@dxos/util';\n\nimport { useSelectCurrentThread } from '../../hooks';\nimport { meta } from '../../meta';\n\nimport { type MarkdownEditorToolbarProps } from './MarkdownEditorToolbar';\n\nexport type MarkdownEditorContentProps = {\n id: string;\n role?: string;\n viewMode?: EditorViewMode;\n scrollPastEnd?: boolean;\n slashCommandGroups?: EditorMenuGroup[];\n editorStateStore?: EditorStateStore;\n toolbarState?: Live<EditorToolbarState>;\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n} & (Pick<UseTextEditorProps, 'initialValue' | 'extensions'> & Pick<MarkdownEditorToolbarProps, 'onFileUpload'>);\n\nexport const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEditorContentProps>(\n (\n { id, role, initialValue, editorStateStore, toolbarState, extensions, viewMode, scrollPastEnd, onFileUpload },\n forwardedRef,\n ) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n\n // TODO(burdon): Toolbar state is not reactive.\n const toolbarStateRef = useDynamicRef(toolbarState);\n\n // Restore last selection and scroll point.\n const { scrollTo, selection } = useMemo<EditorSelectionState>(() => editorStateStore?.getState(id) ?? {}, [id]);\n\n const {\n parentRef,\n view: editorView,\n focusAttributes,\n } = useTextEditor(\n () => ({\n ...(role !== 'section' && {\n id,\n scrollTo,\n selection,\n // TODO(wittjosiah): Autofocus based on layout is racy.\n // autoFocus: layoutPlugin?.provides.layout ? layoutPlugin?.provides.layout.scrollIntoView === id : true,\n selectionEnd: true,\n }),\n initialValue,\n extensions: [\n createBasicExtensions({\n readOnly: viewMode === 'readonly',\n placeholder: t('editor placeholder'),\n scrollPastEnd: scrollPastEnd && role !== 'section',\n search: true,\n }),\n createThemeExtensions({\n themeMode,\n slots: editorSlots,\n syntaxHighlighting: true,\n }),\n createMarkdownExtensions(),\n formattingListener(() => toolbarStateRef.current),\n editorGutter,\n role !== 'section' &&\n onFileUpload &&\n dropFile({\n // TODO(wittjosiah): Factor out to file uploader plugin.\n onDrop: async (view, { files }) => {\n const file = files[0];\n const info = file && onFileUpload ? await onFileUpload(file) : undefined;\n if (info) {\n processEditorPayload(view, { type: 'image', data: info.url });\n }\n },\n }),\n extensions,\n ].filter(isTruthy),\n }),\n [id, viewMode, themeMode, extensions],\n );\n\n useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => editorView, [editorView]);\n\n useSelectCurrentThread(editorView, id);\n\n useTest(editorView);\n\n return (\n <div\n role='none'\n ref={parentRef}\n data-testid='composer.markdownRoot'\n className={stackItemContentEditorClassNames(role)}\n data-popover-collision-boundary={true}\n {...focusAttributes}\n />\n );\n },\n);\n\n// Expose editor view for playwright tests.\n// TODO(wittjosiah): Find a better way to expose this or find a way to limit it to test runs.\nconst useTest = (view: EditorView | null) => {\n useEffect(() => {\n const composer = (window as any).composer;\n if (composer) {\n composer.editorView = view;\n }\n }, [view]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { useCallback, useState } from 'react';\n\nimport { type FileInfo } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { EditorToolbar, type EditorToolbarProps, type EditorViewMode } from '@dxos/react-ui-editor';\n\nimport { FileUpload, type FileUploadAction } from './FileUpload';\n\nexport type MarkdownEditorToolbarProps = ThemedClassName<\n {\n id: string;\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n } & Pick<EditorToolbarProps, 'role' | 'state' | 'customActions' | 'onViewModeChange'>\n>;\n\nexport const MarkdownEditorToolbar = ({\n classNames,\n id,\n role,\n state,\n editorView,\n customActions,\n onFileUpload,\n onViewModeChange,\n}: MarkdownEditorToolbarProps) => {\n const [upload, setUpload] = useState<FileUploadAction | null>(null);\n const uploadRef = useCallback((next: FileUploadAction) => setUpload(() => next), []);\n\n const handleViewModeChange = useCallback((mode: EditorViewMode) => onViewModeChange?.(mode), [onViewModeChange]);\n\n const getView = useCallback(() => {\n invariant(editorView);\n return editorView;\n }, [editorView]);\n\n if (!editorView) {\n return <div />;\n }\n\n return (\n <>\n <EditorToolbar\n classNames={classNames}\n attendableId={id}\n role={role}\n state={state}\n customActions={customActions}\n getView={getView}\n onImageUpload={upload ?? undefined}\n onViewModeChange={handleViewModeChange}\n />\n\n {onFileUpload && <FileUpload ref={uploadRef} editorView={editorView} onFileUpload={onFileUpload} />}\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { forwardRef, useEffect, useImperativeHandle } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useDropzone } from 'react-dropzone';\n\nimport { type FileInfo } from '@dxos/app-framework';\nimport { addLink } from '@dxos/react-ui-editor';\n\nexport const IMAGE_FILES = ['.jpg', '.jpeg', '.png', '.gif'];\n\nexport type FileUploadAction = () => void;\n\nexport type FileUploadProps = {\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n};\n\n// TODO(burdon): Factor out.\n// TODO(burdon): Move to root? (support drag into document via dropzone).\nexport const FileUpload = forwardRef<FileUploadAction, FileUploadProps>(\n ({ editorView, onFileUpload }, forwardedRef) => {\n // https://react-dropzone.js.org\n const { acceptedFiles, open, inputRef } = useDropzone({\n disabled: !onFileUpload,\n multiple: false,\n noDrag: true,\n accept: {\n 'image/*': IMAGE_FILES,\n },\n });\n\n useImperativeHandle(forwardedRef, () => open, []);\n\n useEffect(() => {\n if (editorView && acceptedFiles.length && onFileUpload) {\n requestAnimationFrame(async () => {\n // NOTE: Clone file since react-dropzone patches in a non-standard `path` property, which confuses IPFS.\n const f = acceptedFiles[0];\n const file = new File([f], f.name, {\n type: f.type,\n lastModified: f.lastModified,\n });\n\n // TODO(burdon): Factor out.\n const info = await onFileUpload(file);\n if (info) {\n addLink({ url: info.url, image: true })(editorView);\n }\n });\n }\n }, [editorView, acceptedFiles, onFileUpload]);\n\n if (!onFileUpload) {\n return null;\n }\n\n return <>{createPortal(<input ref={inputRef} />, document.body)} </>;\n },\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Atom", "React", "useMemo", "Capabilities", "useAppGraph", "useCapabilities", "Obj", "getSpace", "StackItem", "Text", "useCallback", "useMemo", "useRef", "Domino", "toLocalizedString", "useTranslation", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "useEditorMenuOptions", "editorView", "slashCommandGroups", "onLinkQuery", "t", "useTranslation", "meta", "id", "getMenu", "useCallback", "text", "trigger", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "item", "toLocalizedString", "label", "toLowerCase", "includes", "viewRef", "useRef", "useMemo", "placeholder", "delay", "content", "Domino", "of", "children", "map", "classNames", "build", "React", "useMemo", "createRoot", "LayoutAction", "createIntent", "useIntentDispatcher", "debounceAndThrottle", "Obj", "invariant", "createDocAccessor", "getSpace", "useIdentity", "Icon", "ThemeProvider", "Cursor", "EditorView", "InputModeExtensions", "createDataExtensions", "decorateMarkdown", "documentId", "folding", "formattingKeymap", "linkTooltip", "listener", "preview", "replacer", "selectionState", "typewriter", "defaultTx", "Text", "isTruthy", "useExtensions", "id", "object", "settings", "selectionManager", "viewMode", "editorStateStore", "previewOptions", "dispatchPromise", "dispatch", "useIntentDispatcher", "identity", "useIdentity", "space", "getSpace", "target", "Obj", "instanceOf", "Markdown", "Document", "content", "Text", "baseExtensions", "useMemo", "createBaseExtensions", "debug", "editorInputMode", "folding", "numberedHeadings", "typewriter", "createDataExtensions", "text", "createDocAccessor", "listener", "onChange", "setFallbackName", "selectionState", "filter", "isTruthy", "extensions", "selectionChange", "InputModeExtensions", "push", "formattingKeymap", "decorateMarkdown", "selectionChangeDelay", "from", "undefined", "renderLinkButton", "createLinkRenderer", "createIntent", "LayoutAction", "Open", "part", "subject", "options", "pivotId", "isObject", "getDXN", "toString", "linkTooltip", "renderLinkTooltip", "preview", "replacer", "items", "split", "EditorView", "updateListener", "of", "debounceAndThrottle", "update", "selectionSet", "state", "facet", "documentId", "cursorConverter", "Cursor", "converter", "selection", "ranges", "map", "range", "toCursor", "to", "updateMultiRange", "style", "hover", "icon", "onSelectObject", "el", "url", "isInternal", "startsWith", "window", "location", "origin", "onClick", "qualifiedId", "at", "invariant", "href", "rel", "renderRoot", "a", "className", "Icon", "size", "classNames", "web", "URL", "root", "node", "createRoot", "render", "ThemeProvider", "tx", "defaultTx", "useCallback", "useMemo", "Capabilities", "useCapabilities", "usePluginManager", "Filter", "Obj", "Query", "Type", "ClientCapabilities", "SpaceCapabilities", "toLocalizedString", "useTranslation", "insertAtCursor", "insertAtLineStart", "useLinkQuery", "space", "t", "useTranslation", "manager", "usePluginManager", "resolve", "useCallback", "typename", "context", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "objectForms", "useCapabilities", "SpaceCapabilities", "ObjectForm", "schemaWhiteList", "ClientCapabilities", "SchemaWhiteList", "filter", "useMemo", "Filter", "or", "map", "form", "type", "objectSchema", "flat", "schema", "Type", "getTypename", "handleLinkQuery", "query", "name", "startsWith", "slice", "toLowerCase", "results", "db", "Query", "select", "run", "getLabel", "object", "label", "Obj", "ns", "default", "items", "objects", "toLocalizedString", "includes", "icon", "onSelect", "view", "head", "link", "getDXN", "insertAtLineStart", "insertAtCursor", "EditorView", "Schema", "useMemo", "LayoutAction", "createResolver", "useIntentResolver", "invariant", "Cursor", "setSelection", "useSelectCurrentThread", "editorView", "documentId", "scrollIntoViewResolver", "useMemo", "createResolver", "intent", "LayoutAction", "UpdateLayout", "position", "filter", "data", "is", "ScrollIntoView", "fields", "input", "subject", "options", "cursor", "resolve", "invariant", "range", "Cursor", "getRangeFromCursor", "state", "selection", "main", "from", "anchor", "undefined", "effects", "EditorView", "scrollIntoView", "y", "yMargin", "push", "setSelection", "of", "current", "dispatch", "useIntentResolver", "meta", "id", "createContext", "React", "useMemo", "useState", "createPortal", "Surface", "DXN", "useClient", "EditorMenuProvider", "useEditorMenu", "useEditorToolbar", "isNonNullable", "React", "forwardRef", "useEffect", "useImperativeHandle", "useMemo", "useDynamicRef", "useThemeContext", "useTranslation", "createBasicExtensions", "createMarkdownExtensions", "createThemeExtensions", "dropFile", "editorGutter", "editorSlots", "formattingListener", "processEditorPayload", "stackItemContentEditorClassNames", "useTextEditor", "isTruthy", "MarkdownEditorContent", "forwardRef", "id", "role", "initialValue", "editorStateStore", "toolbarState", "extensions", "viewMode", "scrollPastEnd", "onFileUpload", "forwardedRef", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "toolbarStateRef", "useDynamicRef", "scrollTo", "selection", "useMemo", "getState", "parentRef", "view", "editorView", "focusAttributes", "useTextEditor", "selectionEnd", "createBasicExtensions", "readOnly", "placeholder", "search", "createThemeExtensions", "slots", "editorSlots", "syntaxHighlighting", "createMarkdownExtensions", "formattingListener", "current", "editorGutter", "dropFile", "onDrop", "files", "file", "info", "undefined", "processEditorPayload", "type", "data", "url", "filter", "isTruthy", "useImperativeHandle", "useSelectCurrentThread", "useTest", "React", "div", "ref", "data-testid", "className", "stackItemContentEditorClassNames", "data-popover-collision-boundary", "useEffect", "composer", "window", "React", "useCallback", "useState", "invariant", "EditorToolbar", "React", "forwardRef", "useEffect", "useImperativeHandle", "createPortal", "useDropzone", "addLink", "IMAGE_FILES", "FileUpload", "forwardRef", "editorView", "onFileUpload", "forwardedRef", "acceptedFiles", "open", "inputRef", "useDropzone", "disabled", "multiple", "noDrag", "accept", "useImperativeHandle", "useEffect", "length", "requestAnimationFrame", "f", "file", "File", "name", "type", "lastModified", "info", "addLink", "url", "image", "React", "createPortal", "input", "ref", "document", "body", "MarkdownEditorToolbar", "classNames", "id", "role", "state", "editorView", "customActions", "onFileUpload", "onViewModeChange", "upload", "setUpload", "useState", "uploadRef", "useCallback", "next", "handleViewModeChange", "mode", "getView", "invariant", "React", "div", "EditorToolbar", "attendableId", "onImageUpload", "undefined", "FileUpload", "ref", "MarkdownEditorContextProvider", "useMarkdownEditorContext", "createContext", "MarkdownEditorRoot", "children", "id", "object", "editorStateStore", "selectionManager", "settings", "viewMode", "extensions", "extensionsParam", "slashCommandGroups", "onLinkQuery", "props", "editorView", "setEditorView", "useState", "previewBlocks", "setPreviewBlocks", "previewOptions", "useMemo", "addBlockContainer", "block", "prev", "removeBlockContainer", "link", "filter", "prevLink", "ref", "toolbarState", "useEditorToolbar", "menuOptions", "useEditorMenuOptions", "extension", "menuExtension", "menuProps", "useEditorMenu", "coreExtensions", "useExtensions", "isNonNullable", "React", "popoverMenu", "displayName", "MarkdownEditorContent", "groupsRef", "EditorMenuProvider", "view", "groups", "current", "NaturalMarkdownEditorContent", "MarkdownEditorToolbar", "rootProps", "NaturalMarkdownToolbar", "state", "MarkdownEditorBlocks", "_props", "map", "el", "PreviewBlock", "key", "client", "useClient", "dxn", "DXN", "parse", "subject", "graph", "target", "data", "createPortal", "Surface", "role", "limit", "MarkdownEditor", "Root", "Content", "Toolbar", "Blocks", "MarkdownContainer", "id", "role", "object", "settings", "extensionProviders", "props", "space", "getSpace", "isDocument", "Obj", "instanceOf", "Markdown", "Document", "isText", "Text", "attendableId", "getDXN", "toString", "undefined", "otherExtensionProviders", "useCapabilities", "MarkdownCapabilities", "Extensions", "extensions", "useMemo", "flat", "reduce", "acc", "provider", "extension", "document", "push", "graph", "useAppGraph", "customActions", "Atom", "make", "get", "actions", "nodes", "filter", "action", "properties", "disposition", "edges", "map", "node", "source", "target", "upload", "Capabilities", "FileUploader", "handleFileUpload", "file", "handleLinkQuery", "useLinkQuery", "React", "StackItem", "Content", "toolbar", "MarkdownEditor", "Root", "onFileUpload", "onLinkQuery", "Toolbar", "initialValue", "content", "text", "scrollPastEnd", "Blocks"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/MarkdownCard/MarkdownCard.tsx", "../../../src/components/MarkdownCard/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport React, { useCallback } from 'react';\n\nimport { LayoutAction, chain, createIntent } from '@dxos/app-framework';\nimport { useIntentDispatcher } from '@dxos/app-framework/react';\nimport { Obj } from '@dxos/echo';\nimport { type CardPreviewProps } from '@dxos/plugin-preview';\nimport { IconButton, useTranslation } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui-stack';\nimport { Text } from '@dxos/schema';\n\nimport { meta } from '../../meta';\nimport { Markdown } from '../../types';\nimport { getContentSnippet, getFallbackName } from '../../util';\n\nexport type MarkdownCardProps = CardPreviewProps<Markdown.Document | Text.Text>;\n\nexport const MarkdownCard = ({ subject, role }: MarkdownCardProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { t } = useTranslation(meta.id);\n const snippet = getSnippet(subject, t('fallback abstract'));\n const info = getInfo(subject);\n\n // TODO(wittjosiah): Factor out so this component isn't dependent on the app framework.\n const handleNavigate = useCallback(\n () =>\n dispatch(\n Function.pipe(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n subject: null,\n options: { state: false, anchorId: '' },\n }),\n chain(LayoutAction.Open, {\n part: 'main',\n subject: [Obj.getDXN(subject).toString()],\n }),\n ),\n ),\n [dispatch, subject],\n );\n\n return (\n <Card.SurfaceRoot role={role}>\n <Card.Heading classNames='flex items-center'>\n {getTitle(subject, t('fallback title'))}\n <span className='grow' />\n <IconButton\n iconOnly\n icon='ph--arrow-right--regular'\n label={t('navigate to document label')}\n onClick={handleNavigate}\n />\n </Card.Heading>\n {snippet && <Card.Text classNames='line-clamp-3 text-sm text-description'>{snippet}</Card.Text>}\n <Card.Text classNames='text-xs text-description'>\n {info.words} {t('words label', { count: info.words })}\n </Card.Text>\n </Card.SurfaceRoot>\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// TODO(burdon): Factor out.\nconst getTitle = (subject: Markdown.Document | Text.Text, fallback: string) => {\n if (Obj.instanceOf(Markdown.Document, subject)) {\n const title = Obj.getLabel(subject);\n return title ?? getFallbackName(subject.content?.target?.content ?? fallback);\n } else if (Obj.instanceOf(Text.Text, subject)) {\n return getFallbackName(subject.content);\n }\n};\n\n// TODO(burdon): Factor out.\nconst getSnippet = (subject: Markdown.Document | Text.Text, fallback: string) => {\n if (Obj.instanceOf(Markdown.Document, subject)) {\n return Obj.getDescription(subject) || getContentSnippet(subject.content?.target?.content ?? fallback);\n } else if (Obj.instanceOf(Text.Text, subject)) {\n return getContentSnippet(subject.content ?? fallback);\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { MarkdownCard } from './MarkdownCard';\n\nexport * from './MarkdownCard';\n\nexport default MarkdownCard;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;AAIA,YAAYA,cAAc;AAC1B,OAAOC,SAASC,mBAAmB;AAEnC,SAASC,cAAcC,OAAOC,oBAAoB;AAClD,SAASC,2BAA2B;AACpC,SAASC,WAAW;AAEpB,SAASC,YAAYC,sBAAsB;AAC3C,SAASC,YAAY;AACrB,SAASC,YAAY;AAQd,IAAMC,eAAe,CAAC,EAAEC,SAASC,KAAI,MAAqB;;;AAC/D,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AACtC,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,UAAUC,WAAWV,SAASK,EAAE,mBAAA,CAAA;AACtC,UAAMM,OAAOC,QAAQZ,OAAAA;AAGrB,UAAMa,iBAAiBC,YACrB,MACEX,SACWY,cACPC,aAAaC,aAAaC,eAAe;MACvCC,MAAM;MACNnB,SAAS;MACToB,SAAS;QAAEC,OAAO;QAAOC,UAAU;MAAG;IACxC,CAAA,GACAC,MAAMN,aAAaO,MAAM;MACvBL,MAAM;MACNnB,SAAS;QAACyB,IAAIC,OAAO1B,OAAAA,EAAS2B,SAAQ;;IACxC,CAAA,CAAA,CAAA,GAGN;MAACxB;MAAUH;KAAQ;AAGrB,WACE,sBAAA,cAAC4B,KAAKC,aAAW;MAAC5B;OAChB,sBAAA,cAAC2B,KAAKE,SAAO;MAACC,YAAW;OACtBC,SAAShC,SAASK,EAAE,gBAAA,CAAA,GACrB,sBAAA,cAAC4B,QAAAA;MAAKC,WAAU;QAChB,sBAAA,cAACC,YAAAA;MACCC,UAAAA;MACAC,MAAK;MACLC,OAAOjC,EAAE,4BAAA;MACTkC,SAAS1B;SAGZJ,WAAW,sBAAA,cAACmB,KAAKY,MAAI;MAACT,YAAW;OAAyCtB,OAAAA,GAC3E,sBAAA,cAACmB,KAAKY,MAAI;MAACT,YAAW;OACnBpB,KAAK8B,OAAM,KAAEpC,EAAE,eAAe;MAAEqC,OAAO/B,KAAK8B;IAAM,CAAA,CAAA,CAAA;;;;AAI3D;AAEA,IAAM7B,UAAU,CAACZ,YAAAA;AACf,QAAM2C,QAAQlB,IAAImB,WAAWC,iBAASC,UAAU9C,OAAAA,IAAWA,QAAQ+C,SAASC,QAAQD,UAAU/C,QAAQ+C,YAAY;AAClH,SAAO;IAAEN,OAAOE,KAAKM,MAAM,GAAA,EAAKC;EAAO;AACzC;AAGA,IAAMlB,WAAW,CAAChC,SAAwCmD,aAAAA;AACxD,MAAI1B,IAAImB,WAAWC,iBAASC,UAAU9C,OAAAA,GAAU;AAC9C,UAAMoD,QAAQ3B,IAAI4B,SAASrD,OAAAA;AAC3B,WAAOoD,SAASE,gBAAgBtD,QAAQ+C,SAASC,QAAQD,WAAWI,QAAAA;EACtE,WAAW1B,IAAImB,WAAWJ,KAAKA,MAAMxC,OAAAA,GAAU;AAC7C,WAAOsD,gBAAgBtD,QAAQ+C,OAAO;EACxC;AACF;AAGA,IAAMrC,aAAa,CAACV,SAAwCmD,aAAAA;AAC1D,MAAI1B,IAAImB,WAAWC,iBAASC,UAAU9C,OAAAA,GAAU;AAC9C,WAAOyB,IAAI8B,eAAevD,OAAAA,KAAYwD,kBAAkBxD,QAAQ+C,SAASC,QAAQD,WAAWI,QAAAA;EAC9F,WAAW1B,IAAImB,WAAWJ,KAAKA,MAAMxC,OAAAA,GAAU;AAC7C,WAAOwD,kBAAkBxD,QAAQ+C,WAAWI,QAAAA;EAC9C;AACF;;;AChFA,IAAA,uBAAeM;",
|
|
6
|
-
"names": ["Function", "React", "useCallback", "LayoutAction", "chain", "createIntent", "useIntentDispatcher", "Obj", "IconButton", "useTranslation", "Card", "Text", "MarkdownCard", "subject", "role", "dispatchPromise", "dispatch", "useIntentDispatcher", "t", "useTranslation", "meta", "id", "snippet", "getSnippet", "info", "getInfo", "handleNavigate", "useCallback", "pipe", "createIntent", "LayoutAction", "UpdatePopover", "part", "options", "state", "anchorId", "chain", "Open", "Obj", "getDXN", "toString", "Card", "SurfaceRoot", "Heading", "classNames", "getTitle", "span", "className", "IconButton", "iconOnly", "icon", "label", "onClick", "Text", "words", "count", "text", "instanceOf", "Markdown", "Document", "content", "target", "split", "length", "fallback", "title", "getLabel", "getFallbackName", "getDescription", "getContentSnippet", "MarkdownCard"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types/MarkdownAction.ts", "../../../src/types/Markdown.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { EditorViewMode } from '@dxos/react-ui-editor/types';\n\nimport { meta } from '../meta';\n\nimport { Document } from './Markdown';\n\nexport class Create extends Schema.TaggedClass<Create>()(`${meta.id}/action/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n content: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Document,\n }),\n}) {}\n\nexport class SetViewMode extends Schema.TaggedClass<SetViewMode>()(`${meta.id}/action/set-view-mode`, {\n input: Schema.Struct({\n id: Schema.String,\n viewMode: EditorViewMode,\n }),\n output: Schema.Void,\n}) {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Obj, Ref, Type } from '@dxos/echo';\nimport { DescriptionAnnotation, FormAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { EditorInputMode, EditorViewMode } from '@dxos/react-ui-editor/types';\nimport { ItemAnnotation, Text } from '@dxos/schema';\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(FormAnnotation.set(false), Schema.optional),\n content: Type.Ref(Text.Text).pipe(FormAnnotation.set(false)),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Document',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name', 'fallbackName']),\n DescriptionAnnotation.set('description'),\n ItemAnnotation.set(true),\n);\n\nexport type Document = Schema.Schema.Type<typeof Document>;\n\n/**\n * Document factory.\n */\nexport const make = ({\n content = '',\n ...props\n}: Partial<{ name: string; fallbackName: string; content: string }> = {}) =>\n Obj.make(Document, { ...props, content: Ref.make(Text.make(content)) });\n\n/**\n * Plugin settings.\n */\nexport const Settings = Schema.mutable(\n Schema.Struct({\n defaultViewMode: EditorViewMode,\n editorInputMode: Schema.optional(EditorInputMode),\n experimental: Schema.optional(Schema.Boolean),\n debug: Schema.optional(Schema.Boolean),\n toolbar: Schema.optional(Schema.Boolean),\n typewriter: Schema.optional(Schema.String),\n // TODO(burdon): Per document settings.\n numberedHeadings: Schema.optional(Schema.Boolean),\n folding: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n"],
|
|
5
|
-
"mappings": ";;;;;;AAAA;;;;;AAIA,YAAYA,aAAY;AAExB,SAASC,kBAAAA,uBAAsB;;;ACN/B;;;;;;AAIA,YAAYC,YAAY;AAExB,SAASC,KAAKC,KAAKC,YAAY;AAC/B,SAASC,uBAAuBC,gBAAgBC,uBAAuB;AACvE,SAASC,iBAAiBC,sBAAsB;AAChD,SAASC,gBAAgBC,YAAY;AAK9B,IAAMC,WAAkBC,cAAO;EACpCC,MAAaC,gBAAgBC,aAAM;EACnCC,aAAoBF,gBAAgBC,aAAM;EAC1CE,cAAqBF,cAAOG,KAAKC,eAAeC,IAAI,KAAA,GAAeN,eAAQ;EAC3EO,SAASC,KAAKC,IAAIC,KAAKA,IAAI,EAAEN,KAAKC,eAAeC,IAAI,KAAA,CAAA;AACvD,CAAA,EAAGF,KACDI,KAAKG,IAAI;EACPC,UAAU;EACVC,SAAS;AACX,CAAA,GACAC,gBAAgBR,IAAI;EAAC;EAAQ;CAAe,GAC5CS,sBAAsBT,IAAI,aAAA,GAC1BU,eAAeV,IAAI,IAAA,CAAA;AAQd,IAAMW,OAAO,CAAC,EACnBV,UAAU,IACV,GAAGW,MAAAA,IACiE,CAAC,MACrEP,IAAIM,KAAKpB,UAAU;EAAE,GAAGqB;EAAOX,SAASE,IAAIQ,KAAKP,KAAKO,KAAKV,OAAAA,CAAAA;AAAU,CAAA;AAKhE,IAAMY,WAAkBC,eACtBtB,cAAO;EACZuB,iBAAiBC;EACjBC,iBAAwBvB,gBAASwB,eAAAA;EACjCC,cAAqBzB,gBAAgB0B,cAAO;EAC5CC,OAAc3B,gBAAgB0B,cAAO;EACrCE,SAAgB5B,gBAAgB0B,cAAO;EACvCG,YAAmB7B,gBAAgBC,aAAM;;EAEzC6B,kBAAyB9B,gBAAgB0B,cAAO;EAChDK,SAAgB/B,gBAAgB0B,cAAO;AACzC,CAAA,CAAA;;;AD1CK,IAAMM,SAAN,cAA4BC,oBAAW,EAAW,GAAGC,KAAKC,EAAE,kBAAkB;EACnFC,OAAcC,eAAO;IACnBC,MAAaC,iBAAgBC,cAAM;IACnCC,SAAgBF,iBAAgBC,cAAM;EACxC,CAAA;EACAE,QAAeL,eAAO;IACpBM,QAAQC;EACV,CAAA;AACF,CAAA,EAAA;AAAI;AAEG,IAAMC,cAAN,cAAiCZ,oBAAW,EAAgB,GAAGC,KAAKC,EAAE,yBAAyB;EACpGC,OAAcC,eAAO;IACnBF,IAAWK;IACXM,UAAUC;EACZ,CAAA;EACAL,QAAeM;AACjB,CAAA,EAAA;AAAI;",
|
|
6
|
-
"names": ["Schema", "EditorViewMode", "Schema", "Obj", "Ref", "Type", "DescriptionAnnotation", "FormAnnotation", "LabelAnnotation", "EditorInputMode", "EditorViewMode", "ItemAnnotation", "Text", "Document", "Struct", "name", "optional", "String", "description", "fallbackName", "pipe", "FormAnnotation", "set", "content", "Type", "Ref", "Text", "Obj", "typename", "version", "LabelAnnotation", "DescriptionAnnotation", "ItemAnnotation", "make", "props", "Settings", "mutable", "defaultViewMode", "EditorViewMode", "editorInputMode", "EditorInputMode", "experimental", "Boolean", "debug", "toolbar", "typewriter", "numberedHeadings", "folding", "Create", "TaggedClass", "meta", "id", "input", "Struct", "name", "optional", "String", "content", "output", "object", "Document", "SetViewMode", "viewMode", "EditorViewMode", "Void"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/create.ts", "../../../src/functions/open.ts", "../../../src/functions/update.ts", "../../../src/functions/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { Blueprint, Template } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\nimport { MarkdownFunction } from '../functions';\n\nconst functions: FunctionDefinition[] = [MarkdownFunction.create, MarkdownFunction.open, MarkdownFunction.update];\n\nexport const MARKDOWN_BLUEPRINT_KEY = 'dxos.org/blueprint/markdown';\n\nexport const MarkdownBlueprint: Blueprint.Blueprint = Blueprint.make({\n key: MARKDOWN_BLUEPRINT_KEY,\n name: 'Markdown',\n tools: Blueprint.toolDefinitions({ functions }),\n instructions: Template.make({\n // TODO(wittjosiah): Move example to function input schema annotation.\n source: trim`\n {{! Markdown }}\n\n You can create, read and update markdown documents.\n When asked to edit or update documents return updates as a set of compact diff string pairs.\n For each diff, respond with the smallest possible matching span.\n \n Example:\n ${'```'}diff\n - \"There is a tyop in this sentence.\"\n + \"There is a typo in this sentence.\"\n - \"This id good.\"\n + \"This sentence is really good.\"\n ${'```'}\n `,\n }),\n});\n\nexport default () => [\n contributes(Capabilities.Functions, functions),\n contributes(Capabilities.BlueprintDefinition, MarkdownBlueprint),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { defineFunction } from '@dxos/functions';\nimport { Collection } from '@dxos/schema';\n\nimport { Markdown } from '../types';\n\nexport default defineFunction({\n key: 'dxos.org/function/markdown/create',\n name: 'Create',\n description: 'Creates a new markdown document and adds it to the space.',\n inputSchema: Schema.Struct({\n name: Schema.String,\n content: Schema.String,\n }),\n outputSchema: Schema.Struct({\n id: ArtifactId,\n }),\n handler: Effect.fn(function* ({ data: { name, content } }) {\n const object = Markdown.make({ name, content });\n yield* Collection.add({ object });\n\n return {\n id: Obj.getDXN(object).toString(),\n };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\n\nimport { Markdown } from '../types';\n\nexport default defineFunction({\n key: 'dxos.org/function/markdown/open',\n name: 'Open',\n description: 'Opens and reads the contents of a new markdown document.',\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the markdown document.',\n }),\n }),\n outputSchema: Schema.Struct({\n content: Schema.String,\n }),\n handler: Effect.fn(function* ({ data: { id } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id), Markdown.Document);\n const { content } = yield* Effect.promise(() => object.content.load());\n return {\n content,\n };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId, applyDiffs } from '@dxos/assistant';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\nimport { Markdown } from '../types';\n\n// TODO(wittjosiah): Reconcile with ThreadAction.AddProposal.\nexport default defineFunction({\n key: 'dxos.org/function/markdown/update',\n name: 'Update',\n description: trim`\n Applies a set of diffs to the markdown document.\n `,\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the markdown document.',\n }),\n diffs: Schema.Array(Schema.String).annotations({\n description: 'The diffs to apply to the document.',\n }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ data: { id, diffs } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id), Markdown.Document);\n const content = yield* Effect.promise(() => object.content.load());\n const accessor = createDocAccessor(content, ['content']);\n applyDiffs(accessor, diffs);\n }),\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { default as create } from './create';\nimport { default as open } from './open';\nimport { default as update } from './update';\n\nexport const MarkdownFunction = {\n create,\n open,\n update,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Capabilities", "contributes", "Blueprint", "Template", "trim", "Effect", "Schema", "ArtifactId", "Obj", "defineFunction", "Collection", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "String", "content", "outputSchema", "id", "ArtifactId", "handler", "fn", "data", "object", "Markdown", "make", "Collection", "add", "Obj", "getDXN", "toString", "Effect", "Schema", "ArtifactId", "DatabaseService", "defineFunction", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "id", "ArtifactId", "annotations", "outputSchema", "content", "String", "handler", "fn", "data", "object", "DatabaseService", "resolve", "toDXN", "Markdown", "Document", "promise", "load", "Effect", "Schema", "ArtifactId", "applyDiffs", "createDocAccessor", "DatabaseService", "defineFunction", "trim", "defineFunction", "key", "name", "description", "trim", "inputSchema", "Struct", "id", "ArtifactId", "annotations", "diffs", "Array", "String", "outputSchema", "Void", "handler", "fn", "data", "object", "DatabaseService", "resolve", "toDXN", "Markdown", "Document", "content", "promise", "load", "accessor", "createDocAccessor", "applyDiffs", "MarkdownFunction", "create", "open", "update", "functions", "MarkdownFunction", "create", "open", "update", "MARKDOWN_BLUEPRINT_KEY", "MarkdownBlueprint", "Blueprint", "make", "key", "name", "tools", "toolDefinitions", "instructions", "Template", "source", "trim", "contributes", "Capabilities", "Functions", "BlueprintDefinition"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/index.ts", "../../../src/components/MarkdownSettings/MarkdownSettings.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { Capabilities, contributes, createSurface } from '@dxos/app-framework';\nimport { SurfaceCardRole, useCapability } from '@dxos/app-framework/react';\nimport { Obj } from '@dxos/echo';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { Text } from '@dxos/schema';\n\nimport { MarkdownCard, MarkdownContainer, type MarkdownContainerProps, MarkdownSettings } from '../components';\nimport { meta } from '../meta';\nimport { Markdown } from '../types';\nimport { isEditorModel } from '../util';\n\nimport { MarkdownCapabilities } from './capabilities';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${meta.id}/surface/document`,\n role: ['article', 'section', 'tabpanel'],\n filter: (data): data is { subject: Markdown.Document; variant: undefined } =>\n Obj.instanceOf(Markdown.Document, data.subject) && !data.variant,\n component: ({ data, role }) => {\n return <Container id={Obj.getDXN(data.subject).toString()} subject={data.subject} role={role} />;\n },\n }),\n createSurface({\n id: `${meta.id}/surface/text`,\n role: ['article', 'section', 'tabpanel'],\n filter: (data): data is { id: string; subject: Text.Text } =>\n typeof data.id === 'string' && Obj.instanceOf(Text.Text, data.subject),\n component: ({ data, role }) => {\n return <Container id={data.id} subject={data.subject} role={role} />;\n },\n }),\n // TODO(burdon): Remove this variant and conform to Text.\n createSurface({\n id: `${meta.id}/surface/editor`,\n role: ['article', 'section'],\n filter: (data): data is { subject: { id: string; text: string } } => isEditorModel(data.subject),\n component: ({ data, role }) => {\n return <Container id={data.subject.id} subject={data.subject} role={role} />;\n },\n }),\n createSurface({\n id: `${meta.id}/surface/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<Markdown.Settings> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === meta.id,\n component: ({ data: { subject } }) => <MarkdownSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${meta.id}/surface/preview`,\n role: SurfaceCardRole.literals as any,\n filter: (data): data is { subject: Markdown.Document | Text.Text } =>\n Obj.instanceOf(Markdown.Document, data.subject) || Obj.instanceOf(Text.Text, data.subject),\n component: ({ data, role }) => <MarkdownCard {...data} role={role as SurfaceCardRole} />,\n }),\n ]);\n\n/**\n * Common wrapper.\n */\nconst Container = ({ id, subject, role }: { id: string; subject: MarkdownContainerProps['object']; role: string }) => {\n const selectionManager = useCapability(AttentionCapabilities.Selection);\n const settingsStore = useCapability(Capabilities.SettingsStore);\n const settings = settingsStore.getStore<Markdown.Settings>(meta.id)!.value;\n const { state, editorState, getViewMode, setViewMode } = useCapability(MarkdownCapabilities.State);\n const viewMode = getViewMode(id);\n const handleViewModeChange = useCallback<NonNullable<MarkdownContainerProps['onViewModeChange']>>(\n (mode) => setViewMode(id, mode),\n [id, setViewMode],\n );\n\n return (\n <MarkdownContainer\n id={id}\n object={subject}\n role={role}\n settings={settings}\n selectionManager={selectionManager}\n extensionProviders={state.extensionProviders}\n editorStateStore={editorState}\n viewMode={viewMode}\n onViewModeChange={handleViewModeChange}\n />\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './MarkdownCard';\nexport * from './MarkdownContainer';\nexport * from './MarkdownSettings';\n\nexport const MarkdownCard = lazy(() => import('./MarkdownCard'));\nexport const MarkdownContainer = lazy(() => import('./MarkdownContainer'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { type EditorInputMode, EditorInputModes, type EditorViewMode, EditorViewModes } from '@dxos/react-ui-editor';\nimport { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../../meta';\nimport { type Markdown } from '../../types';\n\nexport const MarkdownSettings = ({ settings }: { settings: Markdown.Settings }) => {\n const { t } = useTranslation(meta.id);\n\n // TODO(wittjosiah): Add skill test confirmation for entering vim mode.\n return (\n <ControlPage>\n <ControlSection title={t('settings title', { ns: meta.id })}>\n <ControlGroup>\n <ControlItemInput title={t('default view mode label')}>\n <Select.Root\n value={settings.defaultViewMode}\n onValueChange={(value) => {\n settings.defaultViewMode = value as EditorViewMode;\n }}\n >\n <Select.TriggerButton />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorViewModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`${mode} mode label`, { ns: 'react-ui-editor' })}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </ControlItemInput>\n\n <ControlItemInput title={t('editor input mode label')}>\n <Select.Root\n value={settings.editorInputMode ?? 'default'}\n onValueChange={(value) => {\n settings.editorInputMode = value as EditorInputMode;\n }}\n >\n <Select.TriggerButton placeholder={t('select editor input mode placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorInputModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`settings editor input mode ${mode} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </ControlItemInput>\n\n <ControlItemInput title={t('settings toolbar label')}>\n <Input.Switch checked={settings.toolbar} onCheckedChange={(checked) => (settings.toolbar = !!checked)} />\n </ControlItemInput>\n\n <ControlItemInput title={t('settings numbered headings label')}>\n <Input.Switch\n checked={settings.numberedHeadings}\n onCheckedChange={(checked) => (settings.numberedHeadings = !!checked)}\n />\n </ControlItemInput>\n\n <ControlItemInput title={t('settings folding label')}>\n <Input.Switch checked={settings.folding} onCheckedChange={(checked) => (settings.folding = !!checked)} />\n </ControlItemInput>\n\n <ControlItemInput title={t('settings experimental label')}>\n <Input.Switch\n checked={settings.experimental}\n onCheckedChange={(checked) => (settings.experimental = !!checked)}\n />\n </ControlItemInput>\n\n <ControlItemInput title={t('settings debug label')}>\n <Input.Switch checked={settings.debug} onCheckedChange={(checked) => (settings.debug = !!checked)} />\n </ControlItemInput>\n\n {settings.debug && (\n <ControlItemInput title={t('settings debug textarea label', { ns: meta.id })}>\n <Input.TextArea\n rows={5}\n value={settings.typewriter}\n onChange={({ target: { value } }) => (settings.typewriter = value)}\n placeholder={t('settings debug placeholder')}\n />\n </ControlItemInput>\n )}\n </ControlGroup>\n </ControlSection>\n </ControlPage>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useCallback", "Capabilities", "contributes", "createSurface", "SurfaceCardRole", "useCapability", "Obj", "SettingsStore", "AttentionCapabilities", "Text", "lazy", "React", "Input", "Select", "useTranslation", "EditorInputModes", "EditorViewModes", "ControlGroup", "ControlItemInput", "ControlPage", "ControlSection", "MarkdownSettings", "settings", "t", "useTranslation", "meta", "id", "ControlPage", "ControlSection", "title", "ns", "ControlGroup", "ControlItemInput", "Select", "Root", "value", "defaultViewMode", "onValueChange", "TriggerButton", "Portal", "Content", "Viewport", "EditorViewModes", "map", "mode", "Option", "key", "Arrow", "editorInputMode", "placeholder", "EditorInputModes", "Input", "Switch", "checked", "toolbar", "onCheckedChange", "numberedHeadings", "folding", "experimental", "debug", "TextArea", "rows", "typewriter", "onChange", "target", "MarkdownCard", "lazy", "MarkdownContainer", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "Markdown", "Document", "subject", "variant", "component", "React", "Container", "getDXN", "toString", "Text", "isEditorModel", "SettingsStore", "prefix", "MarkdownSettings", "settings", "value", "SurfaceCardRole", "literals", "MarkdownCard", "selectionManager", "useCapability", "AttentionCapabilities", "Selection", "settingsStore", "getStore", "state", "editorState", "getViewMode", "setViewMode", "MarkdownCapabilities", "State", "viewMode", "handleViewModeChange", "useCallback", "mode", "MarkdownContainer", "object", "extensionProviders", "editorStateStore", "onViewModeChange"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/anchor-sort.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { createDocAccessor, getRangeFromCursor, getTarget } from '@dxos/react-client/echo';\nimport { type AnchoredTo } from '@dxos/types';\n\nimport { Markdown } from '../types';\n\nexport default () =>\n contributes(Capabilities.AnchorSort, {\n key: Markdown.Document.typename,\n sort: (anchorA: AnchoredTo.AnchoredTo, anchorB: AnchoredTo.AnchoredTo) => {\n const doc = getTarget(anchorA) as Markdown.Document;\n const accessor = doc.content.target ? createDocAccessor(doc.content.target, ['content']) : undefined;\n if (doc !== getTarget(anchorB) || !accessor) {\n return 0;\n }\n\n const getStartPosition = (cursor: string | undefined) => {\n const range = cursor ? getRangeFromCursor(accessor, cursor) : undefined;\n return range?.start ?? Number.MAX_SAFE_INTEGER;\n };\n\n const posA = getStartPosition(anchorA.anchor);\n const posB = getStartPosition(anchorB.anchor);\n return posA - posB;\n },\n });\n"],
|
|
5
|
-
"mappings": ";;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,mBAAmBC,oBAAoBC,iBAAiB;AAKjE,IAAA,uBAAe,MACbC,YAAYC,aAAaC,YAAY;EACnCC,KAAKC,iBAASC,SAASC;EACvBC,MAAM,CAACC,SAAgCC,YAAAA;AACrC,UAAMC,MAAMC,UAAUH,OAAAA;AACtB,UAAMI,WAAWF,IAAIG,QAAQC,SAASC,kBAAkBL,IAAIG,QAAQC,QAAQ;MAAC;KAAU,IAAIE;AAC3F,QAAIN,QAAQC,UAAUF,OAAAA,KAAY,CAACG,UAAU;AAC3C,aAAO;IACT;AAEA,UAAMK,mBAAmB,CAACC,WAAAA;AACxB,YAAMC,QAAQD,SAASE,mBAAmBR,UAAUM,MAAAA,IAAUF;AAC9D,aAAOG,OAAOE,SAASC,OAAOC;IAChC;AAEA,UAAMC,OAAOP,iBAAiBT,QAAQiB,MAAM;AAC5C,UAAMC,OAAOT,iBAAiBR,QAAQgB,MAAM;AAC5C,WAAOD,OAAOE;EAChB;AACF,CAAA;",
|
|
6
|
-
"names": ["Capabilities", "contributes", "createDocAccessor", "getRangeFromCursor", "getTarget", "contributes", "Capabilities", "AnchorSort", "key", "Markdown", "Document", "typename", "sort", "anchorA", "anchorB", "doc", "getTarget", "accessor", "content", "target", "createDocAccessor", "undefined", "getStartPosition", "cursor", "range", "getRangeFromCursor", "start", "Number", "MAX_SAFE_INTEGER", "posA", "anchor", "posB"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\nimport { Markdown } from './types';\n\nexport const translations = [\n {\n 'en-US': {\n [Markdown.Document.typename]: {\n 'typename label': 'Document',\n 'typename label_zero': 'Documents',\n 'typename label_one': 'Document',\n 'typename label_other': 'Documents',\n 'object name placeholder': 'New document',\n 'rename object label': 'Rename document',\n 'delete object label': 'Delete document',\n },\n [meta.id]: {\n 'plugin name': 'Editor',\n 'settings title': 'Editor settings',\n 'choose markdown from space dialog title': 'Choose one or more documents to add',\n // TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)\n 'empty choose markdown from space message': 'None available; try creating a new one instead?',\n 'chooser done label': 'Add selected',\n 'editor placeholder': '',\n 'editor input mode label': 'Editor input mode',\n 'select editor input mode placeholder': 'Select editor input mode…',\n 'settings editor input mode default label': 'Default',\n 'settings editor input mode vim label': 'Vim',\n 'settings editor input mode vscode label': 'VS Code',\n 'settings toolbar label': 'Show toolbar',\n 'settings numbered headings label': 'Numbered headings',\n 'settings folding label': 'Folding',\n 'settings experimental label': 'Enable experimental features',\n 'settings debug label': 'Enable debugging features',\n 'settings debug placeholder': 'Typewriter script...',\n 'toggle view mode label': 'Toggle read-only',\n 'default view mode label': 'Default view mode',\n 'upload image label': 'Upload image',\n 'fallback title': 'Untitled',\n 'navigate to document label': 'Open document',\n 'words label_zero': 'words',\n 'words label_one': 'word',\n 'words label_other': 'words',\n },\n },\n },\n] as const satisfies Resource[];\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;AASO,IAAMA,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,iBAASC,SAASC,QAAQ,GAAG;QAC5B,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;QAC3B,uBAAuB;QACvB,uBAAuB;MACzB;MACA,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,kBAAkB;QAClB,2CAA2C;;QAE3C,4CAA4C;QAC5C,sBAAsB;QACtB,sBAAsB;QACtB,2BAA2B;QAC3B,wCAAwC;QACxC,4CAA4C;QAC5C,wCAAwC;QACxC,2CAA2C;QAC3C,0BAA0B;QAC1B,oCAAoC;QACpC,0BAA0B;QAC1B,+BAA+B;QAC/B,wBAAwB;QACxB,8BAA8B;QAC9B,0BAA0B;QAC1B,2BAA2B;QAC3B,sBAAsB;QACtB,kBAAkB;QAClB,8BAA8B;QAC9B,oBAAoB;QACpB,mBAAmB;QACnB,qBAAqB;MACvB;IACF;EACF;;",
|
|
6
|
-
"names": ["translations", "Markdown", "Document", "typename", "meta", "id"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/MarkdownContainer.tsx", "../../../src/hooks/useEditorMenuOptions.ts", "../../../src/hooks/useExtensions.tsx", "../../../src/hooks/useLinkQuery.ts", "../../../src/hooks/useSelectCurrentThread.tsx", "../../../src/components/MarkdownEditor/MarkdownEditor.tsx", "../../../src/components/MarkdownEditor/MarkdownEditorContent.tsx", "../../../src/components/MarkdownEditor/MarkdownEditorToolbar.tsx", "../../../src/components/MarkdownEditor/FileUpload.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, { useMemo } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useAppGraph, useCapabilities } from '@dxos/app-framework/react';\nimport { Obj } from '@dxos/echo';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { type SelectionManager } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Text } from '@dxos/schema';\n\nimport { MarkdownCapabilities } from '../capabilities';\nimport { type DocumentType, useLinkQuery } from '../hooks';\nimport { Markdown, type MarkdownPluginState } from '../types';\n\nimport { MarkdownEditor, type MarkdownEditorContentProps, type MarkdownEditorRootProps } from './MarkdownEditor';\n\nexport type MarkdownContainerProps = {\n role?: string;\n object: DocumentType;\n settings: Markdown.Settings;\n selectionManager?: SelectionManager;\n} & (Pick<MarkdownEditorRootProps, 'id' | 'viewMode' | 'onViewModeChange'> &\n Pick<MarkdownEditorContentProps, 'editorStateStore'> &\n Pick<MarkdownPluginState, 'extensionProviders'>);\n\nexport const MarkdownContainer = ({\n id,\n role,\n object,\n settings,\n extensionProviders,\n ...props\n}: MarkdownContainerProps) => {\n const space = getSpace(object);\n const isDocument = Obj.instanceOf(Markdown.Document, object);\n const isText = Obj.instanceOf(Text.Text, object);\n const attendableId = isDocument ? Obj.getDXN(object).toString() : undefined;\n\n // Extensions from other plugins.\n // TODO(burdon): Document MarkdownPluginState.extensionProviders\n const otherExtensionProviders = useCapabilities(MarkdownCapabilities.Extensions);\n const extensions = useMemo<Extension[]>(() => {\n if (!Obj.instanceOf(Markdown.Document, object)) {\n return [];\n }\n\n return [...(otherExtensionProviders ?? []), ...(extensionProviders ?? [])]\n .flat()\n .reduce((acc: Extension[], provider) => {\n const extension =\n typeof provider === 'function' ? provider({ document: object as Markdown.Document }) : provider;\n if (extension) {\n acc.push(extension);\n }\n\n return acc;\n }, []);\n }, [extensionProviders, otherExtensionProviders, object]);\n\n // Toolbar actions from app graph.\n const { graph } = useAppGraph();\n const customActions = useMemo(() => {\n return Atom.make((get) => {\n const actions = get(graph.actions(id));\n const nodes = actions.filter((action) => action.properties.disposition === 'toolbar');\n const edges = nodes.map((node) => ({ source: 'root', target: node.id }));\n return { nodes, edges };\n });\n }, [graph]);\n\n // File upload.\n const [upload] = useCapabilities(Capabilities.FileUploader);\n const handleFileUpload = useMemo(() => {\n if (!space || !upload) {\n return undefined;\n }\n\n return async (file: File) => upload(space, file);\n }, [space, upload]);\n\n // Query for @ refs.\n const handleLinkQuery = useLinkQuery(space);\n\n return (\n <StackItem.Content toolbar={settings.toolbar}>\n <MarkdownEditor.Root\n id={attendableId ?? id}\n object={object}\n extensions={extensions}\n onFileUpload={handleFileUpload}\n onLinkQuery={handleLinkQuery}\n {...props}\n >\n {settings.toolbar && (\n <MarkdownEditor.Toolbar id={attendableId ?? id} role={role} customActions={customActions} />\n )}\n <MarkdownEditor.Content\n initialValue={isDocument ? object.content?.target?.content : isText ? object.content : object.text}\n scrollPastEnd={role === 'article'}\n />\n <MarkdownEditor.Blocks />\n </MarkdownEditor.Root>\n </StackItem.Content>\n );\n};\n\nexport default MarkdownContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { useCallback, useMemo, useRef } from 'react';\n\nimport { Domino, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type UseEditorMenuProps,\n filterMenuGroups,\n formattingCommands,\n linkSlashCommands,\n} from '@dxos/react-ui-editor';\n\nimport { meta } from '../meta';\n\nexport type UseEditorMenuOptionsProps = {\n editorView?: EditorView;\n slashCommandGroups?: EditorMenuGroup[];\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n};\n\nexport const useEditorMenuOptions = ({\n editorView,\n slashCommandGroups,\n onLinkQuery,\n}: UseEditorMenuOptionsProps): UseEditorMenuProps => {\n const { t } = useTranslation(meta.id);\n\n const getMenu = useCallback<NonNullable<UseEditorMenuProps['getMenu']>>(\n ({ text, trigger }) => {\n switch (trigger) {\n case '@': {\n return onLinkQuery?.(text) ?? [];\n }\n\n case '/':\n default: {\n return filterMenuGroups([formattingCommands, linkSlashCommands, ...(slashCommandGroups ?? [])], (item) =>\n text ? toLocalizedString(item.label, t).toLowerCase().includes(text.toLowerCase()) : true,\n );\n }\n }\n },\n [slashCommandGroups, onLinkQuery],\n );\n\n const viewRef = useRef(editorView);\n return useMemo<UseEditorMenuProps>(() => {\n const trigger = onLinkQuery ? ['/', '@'] : ['/'];\n const placeholder = {\n delay: 3_000,\n content: () =>\n Domino.of('div')\n .children(\n Domino.of('span').text('Press'),\n ...trigger.map((text) =>\n Domino.of('span')\n .classNames('mx-1 pli-1.5 pt-[1px] pb-[2px] border border-separator rounded-sm')\n .text(text),\n ),\n Domino.of('span').text('for commands.'),\n )\n .build(),\n };\n\n return { viewRef, getMenu, trigger, placeholder };\n }, [getMenu, onLinkQuery]);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ViewUpdate } from '@codemirror/view';\nimport React, { type AnchorHTMLAttributes, type ReactNode, useMemo } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { LayoutAction, type PromiseIntentDispatcher, createIntent } from '@dxos/app-framework';\nimport { useIntentDispatcher } from '@dxos/app-framework/react';\nimport { debounceAndThrottle } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ThemeProvider } from '@dxos/react-ui';\nimport { type SelectionManager } from '@dxos/react-ui-attention';\nimport {\n Cursor,\n type EditorStateStore,\n EditorView,\n type EditorViewMode,\n type Extension,\n InputModeExtensions,\n type PreviewOptions,\n type RenderCallback,\n createDataExtensions,\n decorateMarkdown,\n documentId,\n folding,\n formattingKeymap,\n linkTooltip,\n listener,\n preview,\n replacer,\n selectionState,\n typewriter,\n} from '@dxos/react-ui-editor';\nimport { defaultTx } from '@dxos/react-ui-theme';\nimport { Text } from '@dxos/schema';\nimport { isTruthy } from '@dxos/util';\n\nimport { Markdown } from '../types';\nimport { setFallbackName } from '../util';\n\nexport type DocumentType = Markdown.Document | Text.Text | { id: string; text: string };\n\nexport type ExtensionsOptions = {\n id: string;\n object?: DocumentType;\n dispatch?: PromiseIntentDispatcher;\n settings?: Markdown.Settings;\n selectionManager?: SelectionManager;\n viewMode?: EditorViewMode;\n editorStateStore?: EditorStateStore;\n previewOptions?: PreviewOptions;\n};\n\n// TODO(burdon): Merge with createBaseExtensions below.\nexport const useExtensions = ({\n id,\n object,\n settings,\n selectionManager,\n viewMode,\n editorStateStore,\n previewOptions,\n}: ExtensionsOptions): Extension[] => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const identity = useIdentity();\n const space = getSpace(object);\n\n let target: Obj.Any | undefined;\n if (Obj.instanceOf(Markdown.Document, object)) {\n target = (object as Markdown.Document).content.target;\n } else if (Obj.instanceOf(Text.Text, object)) {\n target = object;\n }\n\n // TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.\n // TODO(burdon): Unsubscribe.\n // const query = space?.db.query(Filter.type(DocumentType));\n // query?.subscribe();\n\n const baseExtensions = useMemo(\n () =>\n createBaseExtensions({\n id,\n object,\n settings,\n selectionManager,\n viewMode,\n previewOptions,\n dispatch,\n }),\n [\n id,\n object,\n viewMode,\n dispatch,\n previewOptions,\n settings,\n settings?.debug,\n settings?.editorInputMode,\n settings?.folding,\n settings?.numberedHeadings,\n settings?.typewriter,\n selectionManager,\n ],\n );\n\n return useMemo<Extension[]>(\n () =>\n [\n // TODO(burdon): Pass this in?\n // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.\n target &&\n createDataExtensions({\n id,\n text: createDocAccessor(target, ['content']),\n space,\n identity,\n }),\n\n // TODO(burdon): Reconcile with effect in parent.\n Obj.instanceOf(Markdown.Document, object) &&\n listener({\n onChange: ({ text }) => {\n setFallbackName(object as Markdown.Document, text);\n },\n }),\n\n baseExtensions,\n selectionState(editorStateStore),\n ].filter(isTruthy),\n [identity, space, id, object, target, baseExtensions],\n );\n};\n\n/**\n * Create extension instances for editor.\n */\nconst createBaseExtensions = ({\n id,\n object,\n dispatch,\n settings,\n selectionManager,\n viewMode,\n previewOptions,\n}: ExtensionsOptions): Extension[] => {\n const extensions: Extension[] = [\n selectionManager && selectionChange(selectionManager),\n settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],\n settings?.folding && folding(),\n ].filter(isTruthy);\n\n //\n // Markdown\n //\n if (viewMode !== 'source') {\n extensions.push(\n ...[\n formattingKeymap(),\n decorateMarkdown({\n selectionChangeDelay: 100,\n numberedHeadings: settings?.numberedHeadings ? { from: 2 } : undefined,\n // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.\n // TODO(burdon): Create dx-tag.\n renderLinkButton:\n dispatch && (object || id)\n ? createLinkRenderer((id: string) => {\n void dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [id],\n options: {\n pivotId: object && Obj.isObject(object) ? Obj.getDXN(object).toString() : id,\n },\n }),\n );\n })\n : undefined,\n }),\n linkTooltip(renderLinkTooltip),\n preview(previewOptions),\n replacer(),\n ],\n );\n }\n\n if (settings?.debug) {\n const items = settings.typewriter?.split(/[,\\n]/) ?? '';\n if (items) {\n extensions.push(typewriter({ items }));\n }\n }\n\n return extensions;\n};\n\nconst selectionChange = (selectionManager: SelectionManager) => {\n return EditorView.updateListener.of(\n debounceAndThrottle((update: ViewUpdate) => {\n if (update.selectionSet) {\n const id = update.state.facet(documentId);\n const cursorConverter = update.state.facet(Cursor.converter);\n const selection = update.state.selection;\n const ranges = selection.ranges\n .map((range) => ({\n from: cursorConverter.toCursor(range.from),\n to: cursorConverter.toCursor(range.to),\n }))\n .filter(({ from, to }) => to > from);\n\n selectionManager.updateMultiRange(id, ranges);\n }\n }, 100),\n );\n};\n\n// TODO(burdon): Factor out styles.\nconst style = {\n hover: 'rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400',\n icon: 'inline-block leading-none mis-1 cursor-pointer',\n};\n\nconst createLinkRenderer =\n (onSelectObject: (id: string) => void): RenderCallback<{ url: string }> =>\n (el, { url }) => {\n // TODO(burdon): Formalize/document internal link format.\n const isInternal =\n url.startsWith('/') ||\n // TODO(wittjosiah): This should probably be parsed out on paste?\n url.startsWith(window.location.origin);\n\n const options: AnchorHTMLAttributes<any> = isInternal\n ? {\n onClick: () => {\n const qualifiedId = url.split('/').at(-1);\n invariant(qualifiedId, 'Invalid link format.');\n onSelectObject(qualifiedId);\n },\n }\n : {\n href: url,\n rel: 'noreferrer',\n target: '_blank',\n };\n\n renderRoot(\n el,\n <a {...options} className={style.hover}>\n <Icon\n icon={isInternal ? 'ph--arrow-square-down--bold' : 'ph--arrow-square-out--bold'}\n size={4}\n classNames={style.icon}\n />\n </a>,\n );\n };\n\nconst renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {\n const web = new URL(url);\n renderRoot(\n el,\n <a href={url} rel='noreferrer' target='_blank' className={style.hover}>\n {web.origin}\n <Icon icon='ph--arrow-square-out--bold' size={4} classNames={style.icon} />\n </a>,\n );\n};\n\n// TODO(burdon): REMOVE.\nconst renderRoot = <T extends Element>(root: T, node: ReactNode): T => {\n createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);\n return root;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback, useMemo } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapabilities, usePluginManager } from '@dxos/app-framework/react';\nimport { Filter, Obj, Query, Type } from '@dxos/echo';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { type Space } from '@dxos/react-client/echo';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type EditorMenuGroup, type EditorMenuItem, insertAtCursor, insertAtLineStart } from '@dxos/react-ui-editor';\n\nexport const useLinkQuery = (space: Space | undefined) => {\n const { t } = useTranslation();\n\n const manager = usePluginManager();\n const resolve = useCallback(\n (typename: string) =>\n manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},\n [manager],\n );\n\n const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);\n const schemaWhiteList = useCapabilities(ClientCapabilities.SchemaWhiteList);\n const filter = useMemo(\n () =>\n Filter.or(\n ...objectForms.map((form) => Filter.type(form.objectSchema)),\n ...schemaWhiteList.flat().map((schema) => Filter.typename(Type.getTypename(schema))),\n ),\n [objectForms, schemaWhiteList],\n );\n\n const handleLinkQuery = useCallback(\n async (query?: string): Promise<EditorMenuGroup[]> => {\n const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');\n const results = await space?.db.query(Query.select(filter)).run();\n\n // TODO(wittjosiah): Use `Obj.Any` type.\n const getLabel = (object: any) => {\n const label = Obj.getLabel(object);\n if (label) {\n return label;\n }\n\n // TODO(wittjosiah): Remove metadata labels.\n const type = Obj.getTypename(object)!;\n const metadata = resolve(type);\n return metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New object' }];\n };\n\n const items =\n results?.objects\n .filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))\n // TODO(wittjosiah): Remove `any` type.\n .map((object: any): EditorMenuItem => {\n const metadata = resolve(Obj.getTypename(object)!);\n const label = toLocalizedString(getLabel(object), t);\n return {\n id: object.id,\n label,\n icon: metadata.icon,\n onSelect: ({ view, head }) => {\n const link = `[${label}](${Obj.getDXN(object)})`;\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n }) ?? [];\n\n return [{ id: 'echo', items }];\n },\n [space, filter, resolve],\n );\n\n return handleLinkQuery;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport * as Schema from 'effect/Schema';\nimport { useMemo } from 'react';\n\nimport { LayoutAction, createResolver } from '@dxos/app-framework';\nimport { useIntentResolver } from '@dxos/app-framework/react';\nimport { invariant } from '@dxos/invariant';\nimport { Cursor, setSelection } from '@dxos/react-ui-editor';\n\nimport { meta } from '../meta';\n\n/**\n * Handle scrolling and selection of the current thread in a markdown editor.\n */\nexport const useSelectCurrentThread = (editorView: EditorView | null, documentId: string) => {\n const scrollIntoViewResolver = useMemo(\n () =>\n createResolver({\n intent: LayoutAction.UpdateLayout,\n position: 'hoist',\n filter: (\n data,\n ): data is {\n part: 'current';\n subject: string;\n options: { cursor: string };\n } => {\n if (!Schema.is(LayoutAction.ScrollIntoView.fields.input)(data)) {\n return false;\n }\n\n return !!editorView && data.subject === documentId && !!data.options?.cursor;\n },\n resolve: ({ options: { cursor } }) => {\n invariant(editorView, 'Editor view is not defined.');\n const range = Cursor.getRangeFromCursor(editorView.state, cursor!);\n if (range) {\n const selection = editorView.state.selection.main.from !== range.from ? { anchor: range.from } : undefined;\n const effects = [\n // NOTE: This does not use the DOM scrollIntoView function.\n EditorView.scrollIntoView(range.from, {\n y: 'start',\n yMargin: 96,\n }),\n ];\n if (selection) {\n // Update the editor selection to get bi-directional highlighting.\n effects.push(setSelection.of({ current: documentId }));\n }\n\n editorView.dispatch({\n effects,\n selection: selection ? { anchor: range.from } : undefined,\n });\n }\n },\n }),\n [documentId, editorView],\n );\n\n useIntentResolver(meta.id, scrollIntoViewResolver);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Surface } from '@dxos/app-framework/react';\nimport { DXN } from '@dxos/keys';\nimport { type Live } from '@dxos/live-object';\nimport { useClient } from '@dxos/react-client';\nimport {\n EditorMenuProvider,\n type EditorToolbarState,\n type PreviewBlock,\n type PreviewOptions,\n type UseEditorMenu,\n useEditorMenu,\n useEditorToolbar,\n} from '@dxos/react-ui-editor';\nimport { isNonNullable } from '@dxos/util';\n\nimport {\n type DocumentType,\n type ExtensionsOptions,\n type UseEditorMenuOptionsProps,\n useEditorMenuOptions,\n useExtensions,\n} from '../../hooks';\n\nimport {\n MarkdownEditorContent as NaturalMarkdownEditorContent,\n type MarkdownEditorContentProps as NaturalMarkdownEditorContentProps,\n} from './MarkdownEditorContent';\nimport {\n MarkdownEditorToolbar as NaturalMarkdownToolbar,\n type MarkdownEditorToolbarProps as NaturalMarkdownToolbarProps,\n} from './MarkdownEditorToolbar';\n\n//\n// Context\n//\n\ntype MarkdownEditorContextValue = {\n id: string;\n setEditorView: (view: EditorView) => void;\n extensions: Extension[];\n previewBlocks: PreviewBlock[];\n toolbarState: Live<EditorToolbarState>;\n popoverMenu: Omit<UseEditorMenu, 'extension'>;\n} & (Pick<ExtensionsOptions, 'viewMode'> &\n Pick<NaturalMarkdownToolbarProps, 'editorView' | 'onFileUpload' | 'onViewModeChange'>);\n\nconst [MarkdownEditorContextProvider, useMarkdownEditorContext] =\n createContext<MarkdownEditorContextValue>('MarkdownEditor.Context');\n\n//\n// MarkdownEditor.Root\n//\n\ntype MarkdownEditorRootProps = PropsWithChildren<\n {\n object?: DocumentType;\n extensions?: Extension[];\n } & Pick<MarkdownEditorContextValue, 'id' | 'onFileUpload' | 'onViewModeChange' | 'viewMode'> &\n Pick<UseEditorMenuOptionsProps, 'slashCommandGroups' | 'onLinkQuery'> &\n Pick<ExtensionsOptions, 'editorStateStore' | 'selectionManager' | 'settings'>\n>;\n\nconst MarkdownEditorRoot = ({\n children,\n id,\n object,\n editorStateStore,\n selectionManager,\n settings,\n viewMode,\n extensions: extensionsParam,\n slashCommandGroups,\n onLinkQuery,\n ...props\n}: MarkdownEditorRootProps) => {\n const [editorView, setEditorView] = useState<EditorView>();\n\n // Preview blocks.\n const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);\n const previewOptions = useMemo<PreviewOptions>(\n () => ({\n addBlockContainer: (block) => {\n setPreviewBlocks((prev) => [...prev, block]);\n },\n removeBlockContainer: ({ link }) => {\n setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.ref !== link.ref));\n },\n }),\n [],\n );\n\n // Toolbar state.\n const toolbarState = useEditorToolbar({ viewMode });\n\n // Context menu.\n const menuOptions = useEditorMenuOptions({\n editorView,\n slashCommandGroups,\n onLinkQuery,\n });\n const { extension: menuExtension, ...menuProps } = useEditorMenu(menuOptions);\n\n // Extensions.\n const coreExtensions = useExtensions({\n id,\n object,\n editorStateStore,\n previewOptions,\n selectionManager,\n settings,\n viewMode,\n });\n\n const extensions = useMemo(\n () => [coreExtensions, menuExtension, extensionsParam].filter(isNonNullable),\n [coreExtensions, menuExtension, extensionsParam],\n );\n\n return (\n <MarkdownEditorContextProvider\n id={id}\n editorView={editorView}\n setEditorView={setEditorView}\n extensions={extensions}\n previewBlocks={previewBlocks}\n toolbarState={toolbarState}\n popoverMenu={menuProps}\n viewMode={viewMode}\n {...props}\n >\n {children}\n </MarkdownEditorContextProvider>\n );\n};\n\nMarkdownEditorRoot.displayName = 'MarkdownEditor.Root';\n\n//\n// MarkdownEditor.Main\n//\n\ntype MarkdownEditorContentProps = Omit<NaturalMarkdownEditorContentProps, 'id' | 'extensions' | 'toolbarState'>;\n\nconst MarkdownEditorContent = (props: MarkdownEditorContentProps) => {\n const {\n id,\n extensions,\n editorView,\n setEditorView,\n toolbarState,\n viewMode,\n popoverMenu: { groupsRef, ...menuProps },\n } = useMarkdownEditorContext(MarkdownEditorContent.displayName);\n\n return (\n <EditorMenuProvider view={editorView} groups={groupsRef.current} {...menuProps}>\n <NaturalMarkdownEditorContent\n {...props}\n id={id}\n extensions={extensions}\n toolbarState={toolbarState}\n viewMode={viewMode}\n ref={setEditorView}\n />\n </EditorMenuProvider>\n );\n};\n\nMarkdownEditorContent.displayName = 'MarkdownEditor.Content';\n\n//\n// MarkdownEditor.Toolbar\n//\n\ntype MarkdownEditorToolbarProps = Omit<\n NaturalMarkdownToolbarProps,\n 'state' | 'editorView' | 'onFileUpload' | 'onViewModeChange'\n>;\n\nconst MarkdownEditorToolbar = (props: MarkdownEditorToolbarProps) => {\n const { toolbarState, ...rootProps } = useMarkdownEditorContext(MarkdownEditorToolbar.displayName);\n\n return <NaturalMarkdownToolbar {...props} {...rootProps} state={toolbarState} />;\n};\n\nMarkdownEditorToolbar.displayName = 'MarkdownEditor.Toolbar';\n\n//\n// MarkdownEditor.Blocks (embedded objects)\n//\n\ntype MarkdownEditorBlocksProps = {};\n\nconst MarkdownEditorBlocks = (_props: MarkdownEditorBlocksProps) => {\n const { previewBlocks } = useMarkdownEditorContext(MarkdownEditorBlocks.displayName);\n\n return (\n <>\n {previewBlocks.map(({ link, el }) => (\n <PreviewBlock key={link.ref} link={link} el={el} />\n ))}\n </>\n );\n};\n\nMarkdownEditorBlocks.displayName = 'MarkdownEditor.Blocks';\n\nconst PreviewBlock = ({ el, link }: PreviewBlock) => {\n const client = useClient();\n const dxn = DXN.parse(link.ref);\n const subject = client.graph.ref(dxn).target;\n const data = useMemo(() => ({ subject }), [subject]);\n\n return createPortal(<Surface role='card--transclusion' data={data} limit={1} />, el);\n};\n\n//\n// MarkdownEditor\n//\n\nexport const MarkdownEditor = {\n Root: MarkdownEditorRoot,\n Content: MarkdownEditorContent,\n Toolbar: MarkdownEditorToolbar,\n Blocks: MarkdownEditorBlocks,\n};\n\nexport type {\n MarkdownEditorRootProps,\n MarkdownEditorContentProps,\n MarkdownEditorToolbarProps,\n MarkdownEditorBlocksProps,\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { forwardRef, useEffect, useImperativeHandle, useMemo } from 'react';\n\nimport { type Live } from '@dxos/live-object';\nimport { useDynamicRef, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type EditorSelectionState,\n type EditorStateStore,\n type EditorToolbarState,\n type EditorViewMode,\n type UseTextEditorProps,\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n dropFile,\n editorGutter,\n editorSlots,\n formattingListener,\n processEditorPayload,\n stackItemContentEditorClassNames,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { isTruthy } from '@dxos/util';\n\nimport { useSelectCurrentThread } from '../../hooks';\nimport { meta } from '../../meta';\n\nimport { type MarkdownEditorToolbarProps } from './MarkdownEditorToolbar';\n\nexport type MarkdownEditorContentProps = {\n id: string;\n role?: string;\n viewMode?: EditorViewMode;\n scrollPastEnd?: boolean;\n slashCommandGroups?: EditorMenuGroup[];\n editorStateStore?: EditorStateStore;\n toolbarState?: Live<EditorToolbarState>;\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n} & (Pick<UseTextEditorProps, 'initialValue' | 'extensions'> & Pick<MarkdownEditorToolbarProps, 'onFileUpload'>);\n\nexport const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEditorContentProps>(\n (\n { id, role, initialValue, editorStateStore, toolbarState, extensions, viewMode, scrollPastEnd, onFileUpload },\n forwardedRef,\n ) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n\n // TODO(burdon): Toolbar state is not reactive.\n const toolbarStateRef = useDynamicRef(toolbarState);\n\n // Restore last selection and scroll point.\n const { scrollTo, selection } = useMemo<EditorSelectionState>(() => editorStateStore?.getState(id) ?? {}, [id]);\n\n const {\n parentRef,\n view: editorView,\n focusAttributes,\n } = useTextEditor(\n () => ({\n ...(role !== 'section' && {\n id,\n scrollTo,\n selection,\n // TODO(wittjosiah): Autofocus based on layout is racy.\n // autoFocus: layoutPlugin?.provides.layout ? layoutPlugin?.provides.layout.scrollIntoView === id : true,\n selectionEnd: true,\n }),\n initialValue,\n extensions: [\n createBasicExtensions({\n readOnly: viewMode === 'readonly',\n placeholder: t('editor placeholder'),\n scrollPastEnd: scrollPastEnd && role !== 'section',\n search: true,\n }),\n createThemeExtensions({\n themeMode,\n slots: editorSlots,\n syntaxHighlighting: true,\n }),\n createMarkdownExtensions(),\n formattingListener(() => toolbarStateRef.current),\n editorGutter,\n role !== 'section' &&\n onFileUpload &&\n dropFile({\n // TODO(wittjosiah): Factor out to file uploader plugin.\n onDrop: async (view, { files }) => {\n const file = files[0];\n const info = file && onFileUpload ? await onFileUpload(file) : undefined;\n if (info) {\n processEditorPayload(view, { type: 'image', data: info.url });\n }\n },\n }),\n extensions,\n ].filter(isTruthy),\n }),\n [id, viewMode, themeMode, extensions],\n );\n\n useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => editorView, [editorView]);\n\n useSelectCurrentThread(editorView, id);\n\n useTest(editorView);\n\n return (\n <div\n role='none'\n ref={parentRef}\n data-testid='composer.markdownRoot'\n className={stackItemContentEditorClassNames(role)}\n data-popover-collision-boundary={true}\n {...focusAttributes}\n />\n );\n },\n);\n\n// Expose editor view for playwright tests.\n// TODO(wittjosiah): Find a better way to expose this or find a way to limit it to test runs.\nconst useTest = (view: EditorView | null) => {\n useEffect(() => {\n const composer = (window as any).composer;\n if (composer) {\n composer.editorView = view;\n }\n }, [view]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { useCallback, useState } from 'react';\n\nimport { type FileInfo } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { EditorToolbar, type EditorToolbarProps, type EditorViewMode } from '@dxos/react-ui-editor';\n\nimport { FileUpload, type FileUploadAction } from './FileUpload';\n\nexport type MarkdownEditorToolbarProps = ThemedClassName<\n {\n id: string;\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n } & Pick<EditorToolbarProps, 'role' | 'state' | 'customActions' | 'onViewModeChange'>\n>;\n\nexport const MarkdownEditorToolbar = ({\n classNames,\n id,\n role,\n state,\n editorView,\n customActions,\n onFileUpload,\n onViewModeChange,\n}: MarkdownEditorToolbarProps) => {\n const [upload, setUpload] = useState<FileUploadAction | null>(null);\n const uploadRef = useCallback((next: FileUploadAction) => setUpload(() => next), []);\n\n const handleViewModeChange = useCallback((mode: EditorViewMode) => onViewModeChange?.(mode), [onViewModeChange]);\n\n const getView = useCallback(() => {\n invariant(editorView);\n return editorView;\n }, [editorView]);\n\n if (!editorView) {\n return <div />;\n }\n\n return (\n <>\n <EditorToolbar\n classNames={classNames}\n attendableId={id}\n role={role}\n state={state}\n customActions={customActions}\n getView={getView}\n onImageUpload={upload ?? undefined}\n onViewModeChange={handleViewModeChange}\n />\n\n {onFileUpload && <FileUpload ref={uploadRef} editorView={editorView} onFileUpload={onFileUpload} />}\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { forwardRef, useEffect, useImperativeHandle } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useDropzone } from 'react-dropzone';\n\nimport { type FileInfo } from '@dxos/app-framework';\nimport { addLink } from '@dxos/react-ui-editor';\n\nexport const IMAGE_FILES = ['.jpg', '.jpeg', '.png', '.gif'];\n\nexport type FileUploadAction = () => void;\n\nexport type FileUploadProps = {\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n};\n\n// TODO(burdon): Factor out.\n// TODO(burdon): Move to root? (support drag into document via dropzone).\nexport const FileUpload = forwardRef<FileUploadAction, FileUploadProps>(\n ({ editorView, onFileUpload }, forwardedRef) => {\n // https://react-dropzone.js.org\n const { acceptedFiles, open, inputRef } = useDropzone({\n disabled: !onFileUpload,\n multiple: false,\n noDrag: true,\n accept: {\n 'image/*': IMAGE_FILES,\n },\n });\n\n useImperativeHandle(forwardedRef, () => open, []);\n\n useEffect(() => {\n if (editorView && acceptedFiles.length && onFileUpload) {\n requestAnimationFrame(async () => {\n // NOTE: Clone file since react-dropzone patches in a non-standard `path` property, which confuses IPFS.\n const f = acceptedFiles[0];\n const file = new File([f], f.name, {\n type: f.type,\n lastModified: f.lastModified,\n });\n\n // TODO(burdon): Factor out.\n const info = await onFileUpload(file);\n if (info) {\n addLink({ url: info.url, image: true })(editorView);\n }\n });\n }\n }, [editorView, acceptedFiles, onFileUpload]);\n\n if (!onFileUpload) {\n return null;\n }\n\n return <>{createPortal(<input ref={inputRef} />, document.body)} </>;\n },\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Atom", "React", "useMemo", "Capabilities", "useAppGraph", "useCapabilities", "Obj", "getSpace", "StackItem", "Text", "useCallback", "useMemo", "useRef", "Domino", "toLocalizedString", "useTranslation", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "useEditorMenuOptions", "editorView", "slashCommandGroups", "onLinkQuery", "t", "useTranslation", "meta", "id", "getMenu", "useCallback", "text", "trigger", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "item", "toLocalizedString", "label", "toLowerCase", "includes", "viewRef", "useRef", "useMemo", "placeholder", "delay", "content", "Domino", "of", "children", "map", "classNames", "build", "React", "useMemo", "createRoot", "LayoutAction", "createIntent", "useIntentDispatcher", "debounceAndThrottle", "Obj", "invariant", "createDocAccessor", "getSpace", "useIdentity", "Icon", "ThemeProvider", "Cursor", "EditorView", "InputModeExtensions", "createDataExtensions", "decorateMarkdown", "documentId", "folding", "formattingKeymap", "linkTooltip", "listener", "preview", "replacer", "selectionState", "typewriter", "defaultTx", "Text", "isTruthy", "useExtensions", "id", "object", "settings", "selectionManager", "viewMode", "editorStateStore", "previewOptions", "dispatchPromise", "dispatch", "useIntentDispatcher", "identity", "useIdentity", "space", "getSpace", "target", "Obj", "instanceOf", "Markdown", "Document", "content", "Text", "baseExtensions", "useMemo", "createBaseExtensions", "debug", "editorInputMode", "folding", "numberedHeadings", "typewriter", "createDataExtensions", "text", "createDocAccessor", "listener", "onChange", "setFallbackName", "selectionState", "filter", "isTruthy", "extensions", "selectionChange", "InputModeExtensions", "push", "formattingKeymap", "decorateMarkdown", "selectionChangeDelay", "from", "undefined", "renderLinkButton", "createLinkRenderer", "createIntent", "LayoutAction", "Open", "part", "subject", "options", "pivotId", "isObject", "getDXN", "toString", "linkTooltip", "renderLinkTooltip", "preview", "replacer", "items", "split", "EditorView", "updateListener", "of", "debounceAndThrottle", "update", "selectionSet", "state", "facet", "documentId", "cursorConverter", "Cursor", "converter", "selection", "ranges", "map", "range", "toCursor", "to", "updateMultiRange", "style", "hover", "icon", "onSelectObject", "el", "url", "isInternal", "startsWith", "window", "location", "origin", "onClick", "qualifiedId", "at", "invariant", "href", "rel", "renderRoot", "a", "className", "Icon", "size", "classNames", "web", "URL", "root", "node", "createRoot", "render", "ThemeProvider", "tx", "defaultTx", "useCallback", "useMemo", "Capabilities", "useCapabilities", "usePluginManager", "Filter", "Obj", "Query", "Type", "ClientCapabilities", "SpaceCapabilities", "toLocalizedString", "useTranslation", "insertAtCursor", "insertAtLineStart", "useLinkQuery", "space", "t", "useTranslation", "manager", "usePluginManager", "resolve", "useCallback", "typename", "context", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "objectForms", "useCapabilities", "SpaceCapabilities", "ObjectForm", "schemaWhiteList", "ClientCapabilities", "SchemaWhiteList", "filter", "useMemo", "Filter", "or", "map", "form", "type", "objectSchema", "flat", "schema", "Type", "getTypename", "handleLinkQuery", "query", "name", "startsWith", "slice", "toLowerCase", "results", "db", "Query", "select", "run", "getLabel", "object", "label", "Obj", "ns", "default", "items", "objects", "toLocalizedString", "includes", "icon", "onSelect", "view", "head", "link", "getDXN", "insertAtLineStart", "insertAtCursor", "EditorView", "Schema", "useMemo", "LayoutAction", "createResolver", "useIntentResolver", "invariant", "Cursor", "setSelection", "useSelectCurrentThread", "editorView", "documentId", "scrollIntoViewResolver", "useMemo", "createResolver", "intent", "LayoutAction", "UpdateLayout", "position", "filter", "data", "is", "ScrollIntoView", "fields", "input", "subject", "options", "cursor", "resolve", "invariant", "range", "Cursor", "getRangeFromCursor", "state", "selection", "main", "from", "anchor", "undefined", "effects", "EditorView", "scrollIntoView", "y", "yMargin", "push", "setSelection", "of", "current", "dispatch", "useIntentResolver", "meta", "id", "createContext", "React", "useMemo", "useState", "createPortal", "Surface", "DXN", "useClient", "EditorMenuProvider", "useEditorMenu", "useEditorToolbar", "isNonNullable", "React", "forwardRef", "useEffect", "useImperativeHandle", "useMemo", "useDynamicRef", "useThemeContext", "useTranslation", "createBasicExtensions", "createMarkdownExtensions", "createThemeExtensions", "dropFile", "editorGutter", "editorSlots", "formattingListener", "processEditorPayload", "stackItemContentEditorClassNames", "useTextEditor", "isTruthy", "MarkdownEditorContent", "forwardRef", "id", "role", "initialValue", "editorStateStore", "toolbarState", "extensions", "viewMode", "scrollPastEnd", "onFileUpload", "forwardedRef", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "toolbarStateRef", "useDynamicRef", "scrollTo", "selection", "useMemo", "getState", "parentRef", "view", "editorView", "focusAttributes", "useTextEditor", "selectionEnd", "createBasicExtensions", "readOnly", "placeholder", "search", "createThemeExtensions", "slots", "editorSlots", "syntaxHighlighting", "createMarkdownExtensions", "formattingListener", "current", "editorGutter", "dropFile", "onDrop", "files", "file", "info", "undefined", "processEditorPayload", "type", "data", "url", "filter", "isTruthy", "useImperativeHandle", "useSelectCurrentThread", "useTest", "React", "div", "ref", "data-testid", "className", "stackItemContentEditorClassNames", "data-popover-collision-boundary", "useEffect", "composer", "window", "React", "useCallback", "useState", "invariant", "EditorToolbar", "React", "forwardRef", "useEffect", "useImperativeHandle", "createPortal", "useDropzone", "addLink", "IMAGE_FILES", "FileUpload", "forwardRef", "editorView", "onFileUpload", "forwardedRef", "acceptedFiles", "open", "inputRef", "useDropzone", "disabled", "multiple", "noDrag", "accept", "useImperativeHandle", "useEffect", "length", "requestAnimationFrame", "f", "file", "File", "name", "type", "lastModified", "info", "addLink", "url", "image", "React", "createPortal", "input", "ref", "document", "body", "MarkdownEditorToolbar", "classNames", "id", "role", "state", "editorView", "customActions", "onFileUpload", "onViewModeChange", "upload", "setUpload", "useState", "uploadRef", "useCallback", "next", "handleViewModeChange", "mode", "getView", "invariant", "React", "div", "EditorToolbar", "attendableId", "onImageUpload", "undefined", "FileUpload", "ref", "MarkdownEditorContextProvider", "useMarkdownEditorContext", "createContext", "MarkdownEditorRoot", "children", "id", "object", "editorStateStore", "selectionManager", "settings", "viewMode", "extensions", "extensionsParam", "slashCommandGroups", "onLinkQuery", "props", "editorView", "setEditorView", "useState", "previewBlocks", "setPreviewBlocks", "previewOptions", "useMemo", "addBlockContainer", "block", "prev", "removeBlockContainer", "link", "filter", "prevLink", "ref", "toolbarState", "useEditorToolbar", "menuOptions", "useEditorMenuOptions", "extension", "menuExtension", "menuProps", "useEditorMenu", "coreExtensions", "useExtensions", "isNonNullable", "React", "popoverMenu", "displayName", "MarkdownEditorContent", "groupsRef", "EditorMenuProvider", "view", "groups", "current", "NaturalMarkdownEditorContent", "MarkdownEditorToolbar", "rootProps", "NaturalMarkdownToolbar", "state", "MarkdownEditorBlocks", "_props", "map", "el", "PreviewBlock", "key", "client", "useClient", "dxn", "DXN", "parse", "subject", "graph", "target", "data", "createPortal", "Surface", "role", "limit", "MarkdownEditor", "Root", "Content", "Toolbar", "Blocks", "MarkdownContainer", "id", "role", "object", "settings", "extensionProviders", "props", "space", "getSpace", "isDocument", "Obj", "instanceOf", "Markdown", "Document", "isText", "Text", "attendableId", "getDXN", "toString", "undefined", "otherExtensionProviders", "useCapabilities", "MarkdownCapabilities", "Extensions", "extensions", "useMemo", "flat", "reduce", "acc", "provider", "extension", "document", "push", "graph", "useAppGraph", "customActions", "Atom", "make", "get", "actions", "nodes", "filter", "action", "properties", "disposition", "edges", "map", "node", "source", "target", "upload", "Capabilities", "FileUploader", "handleFileUpload", "file", "handleLinkQuery", "useLinkQuery", "React", "StackItem", "Content", "toolbar", "MarkdownEditor", "Root", "onFileUpload", "onLinkQuery", "Toolbar", "initialValue", "content", "text", "scrollPastEnd", "Blocks"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/create.ts", "../../../src/functions/open.ts", "../../../src/functions/update.ts", "../../../src/functions/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { Blueprint, Template } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\nimport { MarkdownFunction } from '../functions';\n\nconst functions: FunctionDefinition[] = [MarkdownFunction.create, MarkdownFunction.open, MarkdownFunction.update];\n\nexport const MARKDOWN_BLUEPRINT_KEY = 'dxos.org/blueprint/markdown';\n\nexport const MarkdownBlueprint: Blueprint.Blueprint = Blueprint.make({\n key: MARKDOWN_BLUEPRINT_KEY,\n name: 'Markdown',\n tools: Blueprint.toolDefinitions({ functions }),\n instructions: Template.make({\n // TODO(wittjosiah): Move example to function input schema annotation.\n source: trim`\n {{! Markdown }}\n\n You can create, read and update markdown documents.\n When asked to edit or update documents return updates as a set of compact diff string pairs.\n For each diff, respond with the smallest possible matching span.\n \n Example:\n ${'```'}diff\n - \"There is a tyop in this sentence.\"\n + \"There is a typo in this sentence.\"\n - \"This id good.\"\n + \"This sentence is really good.\"\n ${'```'}\n `,\n }),\n});\n\nexport default () => [\n contributes(Capabilities.Functions, functions),\n contributes(Capabilities.BlueprintDefinition, MarkdownBlueprint),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { defineFunction } from '@dxos/functions';\nimport { Collection } from '@dxos/schema';\n\nimport { Markdown } from '../types';\n\nexport default defineFunction({\n key: 'dxos.org/function/markdown/create',\n name: 'Create',\n description: 'Creates a new markdown document and adds it to the space.',\n inputSchema: Schema.Struct({\n name: Schema.String,\n content: Schema.String,\n }),\n outputSchema: Schema.Struct({\n id: ArtifactId,\n }),\n handler: Effect.fn(function* ({ data: { name, content } }) {\n const object = Markdown.make({ name, content });\n yield* Collection.add({ object });\n\n return {\n id: Obj.getDXN(object).toString(),\n };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\n\nimport { Markdown } from '../types';\n\nexport default defineFunction({\n key: 'dxos.org/function/markdown/open',\n name: 'Open',\n description: 'Opens and reads the contents of a new markdown document.',\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the markdown document.',\n }),\n }),\n outputSchema: Schema.Struct({\n content: Schema.String,\n }),\n handler: Effect.fn(function* ({ data: { id } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id), Markdown.Document);\n const { content } = yield* Effect.promise(() => object.content.load());\n return {\n content,\n };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId, applyDiffs } from '@dxos/assistant';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\nimport { Markdown } from '../types';\n\n// TODO(wittjosiah): Reconcile with ThreadAction.AddProposal.\nexport default defineFunction({\n key: 'dxos.org/function/markdown/update',\n name: 'Update',\n description: trim`\n Applies a set of diffs to the markdown document.\n `,\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the markdown document.',\n }),\n diffs: Schema.Array(Schema.String).annotations({\n description: 'The diffs to apply to the document.',\n }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ data: { id, diffs } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id), Markdown.Document);\n const content = yield* Effect.promise(() => object.content.load());\n const accessor = createDocAccessor(content, ['content']);\n applyDiffs(accessor, diffs);\n }),\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { default as create } from './create';\nimport { default as open } from './open';\nimport { default as update } from './update';\n\nexport const MarkdownFunction = {\n create,\n open,\n update,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Capabilities", "contributes", "Blueprint", "Template", "trim", "Effect", "Schema", "ArtifactId", "Obj", "defineFunction", "Collection", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "String", "content", "outputSchema", "id", "ArtifactId", "handler", "fn", "data", "object", "Markdown", "make", "Collection", "add", "Obj", "getDXN", "toString", "Effect", "Schema", "ArtifactId", "DatabaseService", "defineFunction", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "id", "ArtifactId", "annotations", "outputSchema", "content", "String", "handler", "fn", "data", "object", "DatabaseService", "resolve", "toDXN", "Markdown", "Document", "promise", "load", "Effect", "Schema", "ArtifactId", "applyDiffs", "createDocAccessor", "DatabaseService", "defineFunction", "trim", "defineFunction", "key", "name", "description", "trim", "inputSchema", "Struct", "id", "ArtifactId", "annotations", "diffs", "Array", "String", "outputSchema", "Void", "handler", "fn", "data", "object", "DatabaseService", "resolve", "toDXN", "Markdown", "Document", "content", "promise", "load", "accessor", "createDocAccessor", "applyDiffs", "MarkdownFunction", "create", "open", "update", "functions", "MarkdownFunction", "create", "open", "update", "MARKDOWN_BLUEPRINT_KEY", "MarkdownBlueprint", "Blueprint", "make", "key", "name", "tools", "toolDefinitions", "instructions", "Template", "source", "trim", "contributes", "Capabilities", "Functions", "BlueprintDefinition"]
|
|
7
|
-
}
|