@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
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MarkdownCard,
|
|
3
|
+
MarkdownCard_default
|
|
4
|
+
} from "./chunk-KCOBZZIL.mjs";
|
|
5
|
+
import "./chunk-56SUMOIZ.mjs";
|
|
6
|
+
import "./chunk-KPH4ZPQN.mjs";
|
|
7
|
+
import "./chunk-CN35HEBX.mjs";
|
|
8
|
+
import "./chunk-BQTYJOFB.mjs";
|
|
9
|
+
export {
|
|
10
|
+
MarkdownCard,
|
|
11
|
+
MarkdownCard_default as default
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=MarkdownCard-THZFDOOV.mjs.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MarkdownContainer,
|
|
3
|
+
MarkdownContainer_default
|
|
4
|
+
} from "./chunk-6OMOMVO7.mjs";
|
|
5
|
+
import "./chunk-U6Y53XZK.mjs";
|
|
6
|
+
import "./chunk-RJPOHSYN.mjs";
|
|
7
|
+
import "./chunk-IBCHVMZW.mjs";
|
|
8
|
+
import "./chunk-56SUMOIZ.mjs";
|
|
9
|
+
import "./chunk-KPH4ZPQN.mjs";
|
|
10
|
+
import "./chunk-CN35HEBX.mjs";
|
|
11
|
+
import "./chunk-BQTYJOFB.mjs";
|
|
12
|
+
export {
|
|
13
|
+
MarkdownContainer,
|
|
14
|
+
MarkdownContainer_default as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=MarkdownContainer-VKPSVI5F.mjs.map
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Markdown_exports
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CN35HEBX.mjs";
|
|
4
4
|
import "./chunk-BQTYJOFB.mjs";
|
|
5
5
|
|
|
6
6
|
// src/capabilities/anchor-sort.ts
|
|
7
7
|
import { Capabilities, contributes } from "@dxos/app-framework";
|
|
8
|
-
import {
|
|
8
|
+
import { Relation } from "@dxos/echo";
|
|
9
|
+
import { createDocAccessor, getRangeFromCursor } from "@dxos/echo-db";
|
|
9
10
|
var anchor_sort_default = (() => contributes(Capabilities.AnchorSort, {
|
|
10
11
|
key: Markdown_exports.Document.typename,
|
|
11
12
|
sort: (anchorA, anchorB) => {
|
|
12
|
-
const doc = getTarget(anchorA);
|
|
13
|
+
const doc = Relation.getTarget(anchorA);
|
|
13
14
|
const accessor = doc.content.target ? createDocAccessor(doc.content.target, [
|
|
14
15
|
"content"
|
|
15
16
|
]) : void 0;
|
|
16
|
-
if (doc !== getTarget(anchorB) || !accessor) {
|
|
17
|
+
if (doc !== Relation.getTarget(anchorB) || !accessor) {
|
|
17
18
|
return 0;
|
|
18
19
|
}
|
|
19
20
|
const getStartPosition = (cursor) => {
|
|
@@ -28,4 +29,4 @@ var anchor_sort_default = (() => contributes(Capabilities.AnchorSort, {
|
|
|
28
29
|
export {
|
|
29
30
|
anchor_sort_default as default
|
|
30
31
|
};
|
|
31
|
-
//# sourceMappingURL=anchor-sort-
|
|
32
|
+
//# sourceMappingURL=anchor-sort-3MYLO74J.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
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 { Relation } from '@dxos/echo';\nimport { createDocAccessor, getRangeFromCursor } from '@dxos/echo-db';\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 = Relation.getTarget(anchorA) as Markdown.Document;\n const accessor = doc.content.target ? createDocAccessor(doc.content.target, ['content']) : undefined;\n if (doc !== Relation.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,gBAAgB;AACzB,SAASC,mBAAmBC,0BAA0B;AAKtD,IAAA,uBAAe,MACbC,YAAYC,aAAaC,YAAY;EACnCC,KAAKC,iBAASC,SAASC;EACvBC,MAAM,CAACC,SAAgCC,YAAAA;AACrC,UAAMC,MAAMC,SAASC,UAAUJ,OAAAA;AAC/B,UAAMK,WAAWH,IAAII,QAAQC,SAASC,kBAAkBN,IAAII,QAAQC,QAAQ;MAAC;KAAU,IAAIE;AAC3F,QAAIP,QAAQC,SAASC,UAAUH,OAAAA,KAAY,CAACI,UAAU;AACpD,aAAO;IACT;AAEA,UAAMK,mBAAmB,CAACC,WAAAA;AACxB,YAAMC,QAAQD,SAASE,mBAAmBR,UAAUM,MAAAA,IAAUF;AAC9D,aAAOG,OAAOE,SAASC,OAAOC;IAChC;AAEA,UAAMC,OAAOP,iBAAiBV,QAAQkB,MAAM;AAC5C,UAAMC,OAAOT,iBAAiBT,QAAQiB,MAAM;AAC5C,WAAOD,OAAOE;EAChB;AACF,CAAA;",
|
|
6
|
+
"names": ["Capabilities", "contributes", "Relation", "createDocAccessor", "getRangeFromCursor", "contributes", "Capabilities", "AnchorSort", "key", "Markdown", "Document", "typename", "sort", "anchorA", "anchorB", "doc", "Relation", "getTarget", "accessor", "content", "target", "createDocAccessor", "undefined", "getStartPosition", "cursor", "range", "getRangeFromCursor", "start", "Number", "MAX_SAFE_INTEGER", "posA", "anchor", "posB"]
|
|
7
|
+
}
|
package/dist/lib/browser/{app-graph-serializer-POZN234F.mjs → app-graph-serializer-BZJ4TQOE.mjs}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
translations
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NXT2E2BG.mjs";
|
|
4
4
|
import {
|
|
5
5
|
MarkdownAction_exports,
|
|
6
6
|
Markdown_exports
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CN35HEBX.mjs";
|
|
8
8
|
import "./chunk-BQTYJOFB.mjs";
|
|
9
9
|
|
|
10
10
|
// src/capabilities/app-graph-serializer.ts
|
|
@@ -48,4 +48,4 @@ var app_graph_serializer_default = ((context) => contributes(Capabilities.AppGra
|
|
|
48
48
|
export {
|
|
49
49
|
app_graph_serializer_default as default
|
|
50
50
|
};
|
|
51
|
-
//# sourceMappingURL=app-graph-serializer-
|
|
51
|
+
//# sourceMappingURL=app-graph-serializer-BZJ4TQOE.mjs.map
|
package/dist/lib/browser/{blueprint-definition-GIPKFDY5.mjs → blueprint-definition-R5T6LTPN.mjs}
RENAMED
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
MARKDOWN_BLUEPRINT_KEY,
|
|
3
3
|
MarkdownBlueprint,
|
|
4
4
|
blueprint_definition_default
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-RJPOHSYN.mjs";
|
|
6
|
+
import "./chunk-CN35HEBX.mjs";
|
|
7
7
|
import "./chunk-BQTYJOFB.mjs";
|
|
8
8
|
export {
|
|
9
9
|
MARKDOWN_BLUEPRINT_KEY,
|
|
10
10
|
MarkdownBlueprint,
|
|
11
11
|
blueprint_definition_default as default
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=blueprint-definition-
|
|
13
|
+
//# sourceMappingURL=blueprint-definition-R5T6LTPN.mjs.map
|
|
@@ -1,34 +1,93 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MarkdownCapabilities
|
|
3
|
-
} from "./chunk-IBCHVMZW.mjs";
|
|
4
1
|
import {
|
|
5
2
|
setFallbackName
|
|
6
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KPH4ZPQN.mjs";
|
|
7
4
|
import {
|
|
8
5
|
Markdown_exports
|
|
9
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CN35HEBX.mjs";
|
|
10
7
|
import {
|
|
11
8
|
meta
|
|
12
9
|
} from "./chunk-BQTYJOFB.mjs";
|
|
13
10
|
|
|
14
|
-
// src/
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
|
|
11
|
+
// src/hooks/useLinkQuery.ts
|
|
12
|
+
import * as Option from "effect/Option";
|
|
13
|
+
import { useCallback, useMemo } from "react";
|
|
14
|
+
import { Capabilities } from "@dxos/app-framework";
|
|
15
|
+
import { usePluginManager } from "@dxos/app-framework/react";
|
|
16
|
+
import { Filter, Obj, Query, Type } from "@dxos/echo";
|
|
17
|
+
import { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from "@dxos/echo/internal";
|
|
18
|
+
import { toLocalizedString, useTranslation } from "@dxos/react-ui";
|
|
19
|
+
import { insertAtCursor, insertAtLineStart } from "@dxos/react-ui-editor";
|
|
20
|
+
var useLinkQuery = (space) => {
|
|
21
|
+
const { t } = useTranslation();
|
|
22
|
+
const manager = usePluginManager();
|
|
23
|
+
const resolve = useCallback((typename) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {}, [
|
|
24
|
+
manager
|
|
25
|
+
]);
|
|
26
|
+
const filter = useMemo(() => Filter.or(...(space?.db.schemaRegistry.query({
|
|
27
|
+
location: [
|
|
28
|
+
"database",
|
|
29
|
+
"runtime"
|
|
30
|
+
]
|
|
31
|
+
}).runSync() ?? []).filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation).filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false))).map((schema) => Filter.typename(Type.getTypename(schema)))), [
|
|
32
|
+
space
|
|
33
|
+
]);
|
|
34
|
+
const handleLinkQuery = useCallback(async (query) => {
|
|
35
|
+
const name = query?.startsWith("@") ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? "";
|
|
36
|
+
const results = await space?.db.query(Query.select(filter)).run();
|
|
37
|
+
const getLabel = (object) => {
|
|
38
|
+
const label = Obj.getLabel(object);
|
|
39
|
+
if (label) {
|
|
40
|
+
return label;
|
|
41
|
+
}
|
|
42
|
+
const type = Obj.getTypename(object);
|
|
43
|
+
const metadata = resolve(type);
|
|
44
|
+
return metadata.label?.(object) || [
|
|
45
|
+
"object name placeholder",
|
|
46
|
+
{
|
|
47
|
+
ns: type,
|
|
48
|
+
default: "New object"
|
|
49
|
+
}
|
|
50
|
+
];
|
|
51
|
+
};
|
|
52
|
+
const items = results?.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name)).map((object) => {
|
|
53
|
+
const metadata = resolve(Obj.getTypename(object));
|
|
54
|
+
const label = toLocalizedString(getLabel(object), t);
|
|
55
|
+
return {
|
|
56
|
+
id: object.id,
|
|
57
|
+
label,
|
|
58
|
+
icon: metadata.icon,
|
|
59
|
+
onSelect: ({ view, head }) => {
|
|
60
|
+
const link = `[${label}](${Obj.getDXN(object)})`;
|
|
61
|
+
if (query?.startsWith("@")) {
|
|
62
|
+
insertAtLineStart(view, head, `!${link}
|
|
63
|
+
`);
|
|
64
|
+
} else {
|
|
65
|
+
insertAtCursor(view, head, `${link} `);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}) ?? [];
|
|
70
|
+
return [
|
|
71
|
+
{
|
|
72
|
+
id: "echo",
|
|
73
|
+
items
|
|
74
|
+
}
|
|
75
|
+
];
|
|
76
|
+
}, [
|
|
77
|
+
space,
|
|
78
|
+
filter,
|
|
79
|
+
resolve
|
|
80
|
+
]);
|
|
81
|
+
return handleLinkQuery;
|
|
82
|
+
};
|
|
24
83
|
|
|
25
84
|
// src/hooks/useEditorMenuOptions.ts
|
|
26
|
-
import { useCallback, useMemo, useRef } from "react";
|
|
27
|
-
import { Domino, toLocalizedString, useTranslation } from "@dxos/react-ui";
|
|
85
|
+
import { useCallback as useCallback2, useMemo as useMemo2, useRef } from "react";
|
|
86
|
+
import { Domino, toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
28
87
|
import { filterMenuGroups, formattingCommands, linkSlashCommands } from "@dxos/react-ui-editor";
|
|
29
88
|
var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) => {
|
|
30
|
-
const { t } =
|
|
31
|
-
const getMenu =
|
|
89
|
+
const { t } = useTranslation2(meta.id);
|
|
90
|
+
const getMenu = useCallback2(({ text, trigger }) => {
|
|
32
91
|
switch (trigger) {
|
|
33
92
|
case "@": {
|
|
34
93
|
return onLinkQuery?.(text) ?? [];
|
|
@@ -39,7 +98,7 @@ var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) =>
|
|
|
39
98
|
formattingCommands,
|
|
40
99
|
linkSlashCommands,
|
|
41
100
|
...slashCommandGroups ?? []
|
|
42
|
-
], (item) => text ?
|
|
101
|
+
], (item) => text ? toLocalizedString2(item.label, t).toLowerCase().includes(text.toLowerCase()) : true);
|
|
43
102
|
}
|
|
44
103
|
}
|
|
45
104
|
}, [
|
|
@@ -47,7 +106,7 @@ var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) =>
|
|
|
47
106
|
onLinkQuery
|
|
48
107
|
]);
|
|
49
108
|
const viewRef = useRef(editorView);
|
|
50
|
-
return
|
|
109
|
+
return useMemo2(() => {
|
|
51
110
|
const trigger = onLinkQuery ? [
|
|
52
111
|
"/",
|
|
53
112
|
"@"
|
|
@@ -71,14 +130,14 @@ var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) =>
|
|
|
71
130
|
};
|
|
72
131
|
|
|
73
132
|
// src/hooks/useExtensions.tsx
|
|
74
|
-
import React, { useMemo as
|
|
133
|
+
import React, { useMemo as useMemo3 } from "react";
|
|
75
134
|
import { createRoot } from "react-dom/client";
|
|
76
135
|
import { LayoutAction, createIntent } from "@dxos/app-framework";
|
|
77
136
|
import { useIntentDispatcher } from "@dxos/app-framework/react";
|
|
78
137
|
import { debounceAndThrottle } from "@dxos/async";
|
|
79
|
-
import { Obj } from "@dxos/echo";
|
|
138
|
+
import { Obj as Obj2 } from "@dxos/echo";
|
|
139
|
+
import { createDocAccessor } from "@dxos/echo-db";
|
|
80
140
|
import { invariant } from "@dxos/invariant";
|
|
81
|
-
import { createDocAccessor } from "@dxos/react-client/echo";
|
|
82
141
|
import { getSpace } from "@dxos/react-client/echo";
|
|
83
142
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
84
143
|
import { Icon, ThemeProvider } from "@dxos/react-ui";
|
|
@@ -92,12 +151,12 @@ var useExtensions = ({ id, object, settings, selectionManager, viewMode, editorS
|
|
|
92
151
|
const identity = useIdentity();
|
|
93
152
|
const space = getSpace(object);
|
|
94
153
|
let target;
|
|
95
|
-
if (
|
|
154
|
+
if (Obj2.instanceOf(Markdown_exports.Document, object)) {
|
|
96
155
|
target = object.content.target;
|
|
97
|
-
} else if (
|
|
156
|
+
} else if (Obj2.instanceOf(Text.Text, object)) {
|
|
98
157
|
target = object;
|
|
99
158
|
}
|
|
100
|
-
const baseExtensions =
|
|
159
|
+
const baseExtensions = useMemo3(() => createBaseExtensions({
|
|
101
160
|
id,
|
|
102
161
|
object,
|
|
103
162
|
settings,
|
|
@@ -119,7 +178,7 @@ var useExtensions = ({ id, object, settings, selectionManager, viewMode, editorS
|
|
|
119
178
|
settings?.typewriter,
|
|
120
179
|
selectionManager
|
|
121
180
|
]);
|
|
122
|
-
return
|
|
181
|
+
return useMemo3(() => [
|
|
123
182
|
// TODO(burdon): Pass this in?
|
|
124
183
|
// NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
|
|
125
184
|
target && createDataExtensions({
|
|
@@ -127,11 +186,11 @@ var useExtensions = ({ id, object, settings, selectionManager, viewMode, editorS
|
|
|
127
186
|
text: createDocAccessor(target, [
|
|
128
187
|
"content"
|
|
129
188
|
]),
|
|
130
|
-
space,
|
|
189
|
+
messenger: space,
|
|
131
190
|
identity
|
|
132
191
|
}),
|
|
133
192
|
// TODO(burdon): Reconcile with effect in parent.
|
|
134
|
-
|
|
193
|
+
Obj2.instanceOf(Markdown_exports.Document, object) && listener({
|
|
135
194
|
onChange: ({ text }) => {
|
|
136
195
|
setFallbackName(object, text);
|
|
137
196
|
}
|
|
@@ -170,7 +229,7 @@ var createBaseExtensions = ({ id, object, dispatch, settings, selectionManager,
|
|
|
170
229
|
id2
|
|
171
230
|
],
|
|
172
231
|
options: {
|
|
173
|
-
pivotId: object &&
|
|
232
|
+
pivotId: object && Obj2.isObject(object) ? Obj2.getDXN(object).toString() : id2
|
|
174
233
|
}
|
|
175
234
|
}));
|
|
176
235
|
}) : void 0
|
|
@@ -259,77 +318,6 @@ var renderRoot = (root, node) => {
|
|
|
259
318
|
return root;
|
|
260
319
|
};
|
|
261
320
|
|
|
262
|
-
// src/hooks/useLinkQuery.ts
|
|
263
|
-
import { useCallback as useCallback2, useMemo as useMemo3 } from "react";
|
|
264
|
-
import { Capabilities } from "@dxos/app-framework";
|
|
265
|
-
import { useCapabilities, usePluginManager } from "@dxos/app-framework/react";
|
|
266
|
-
import { Filter, Obj as Obj2, Query, Type } from "@dxos/echo";
|
|
267
|
-
import { ClientCapabilities } from "@dxos/plugin-client";
|
|
268
|
-
import { SpaceCapabilities } from "@dxos/plugin-space";
|
|
269
|
-
import { toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
270
|
-
import { insertAtCursor, insertAtLineStart } from "@dxos/react-ui-editor";
|
|
271
|
-
var useLinkQuery = (space) => {
|
|
272
|
-
const { t } = useTranslation2();
|
|
273
|
-
const manager = usePluginManager();
|
|
274
|
-
const resolve = useCallback2((typename) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {}, [
|
|
275
|
-
manager
|
|
276
|
-
]);
|
|
277
|
-
const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
|
|
278
|
-
const schemaWhiteList = useCapabilities(ClientCapabilities.SchemaWhiteList);
|
|
279
|
-
const filter = useMemo3(() => Filter.or(...objectForms.map((form) => Filter.type(form.objectSchema)), ...schemaWhiteList.flat().map((schema) => Filter.typename(Type.getTypename(schema)))), [
|
|
280
|
-
objectForms,
|
|
281
|
-
schemaWhiteList
|
|
282
|
-
]);
|
|
283
|
-
const handleLinkQuery = useCallback2(async (query) => {
|
|
284
|
-
const name = query?.startsWith("@") ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? "";
|
|
285
|
-
const results = await space?.db.query(Query.select(filter)).run();
|
|
286
|
-
const getLabel = (object) => {
|
|
287
|
-
const label = Obj2.getLabel(object);
|
|
288
|
-
if (label) {
|
|
289
|
-
return label;
|
|
290
|
-
}
|
|
291
|
-
const type = Obj2.getTypename(object);
|
|
292
|
-
const metadata = resolve(type);
|
|
293
|
-
return metadata.label?.(object) || [
|
|
294
|
-
"object name placeholder",
|
|
295
|
-
{
|
|
296
|
-
ns: type,
|
|
297
|
-
default: "New object"
|
|
298
|
-
}
|
|
299
|
-
];
|
|
300
|
-
};
|
|
301
|
-
const items = results?.objects.filter((object) => toLocalizedString2(getLabel(object), t).toLowerCase().includes(name)).map((object) => {
|
|
302
|
-
const metadata = resolve(Obj2.getTypename(object));
|
|
303
|
-
const label = toLocalizedString2(getLabel(object), t);
|
|
304
|
-
return {
|
|
305
|
-
id: object.id,
|
|
306
|
-
label,
|
|
307
|
-
icon: metadata.icon,
|
|
308
|
-
onSelect: ({ view, head }) => {
|
|
309
|
-
const link = `[${label}](${Obj2.getDXN(object)})`;
|
|
310
|
-
if (query?.startsWith("@")) {
|
|
311
|
-
insertAtLineStart(view, head, `!${link}
|
|
312
|
-
`);
|
|
313
|
-
} else {
|
|
314
|
-
insertAtCursor(view, head, `${link} `);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
}) ?? [];
|
|
319
|
-
return [
|
|
320
|
-
{
|
|
321
|
-
id: "echo",
|
|
322
|
-
items
|
|
323
|
-
}
|
|
324
|
-
];
|
|
325
|
-
}, [
|
|
326
|
-
space,
|
|
327
|
-
filter,
|
|
328
|
-
resolve
|
|
329
|
-
]);
|
|
330
|
-
return handleLinkQuery;
|
|
331
|
-
};
|
|
332
|
-
|
|
333
321
|
// src/hooks/useSelectCurrentThread.tsx
|
|
334
322
|
import { EditorView as EditorView2 } from "@codemirror/view";
|
|
335
323
|
import * as Schema from "effect/Schema";
|
|
@@ -406,9 +394,10 @@ import { isNonNullable } from "@dxos/util";
|
|
|
406
394
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
407
395
|
import React2, { forwardRef, useEffect, useImperativeHandle, useMemo as useMemo5 } from "react";
|
|
408
396
|
import { useDynamicRef, useThemeContext, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
409
|
-
import { createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile,
|
|
397
|
+
import { createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorSlots, formattingListener, processEditorPayload, stackItemContentEditorClassNames, useTextEditor } from "@dxos/react-ui-editor";
|
|
398
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
410
399
|
import { isTruthy as isTruthy2 } from "@dxos/util";
|
|
411
|
-
var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ id, role, initialValue, editorStateStore, toolbarState, extensions,
|
|
400
|
+
var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, role, viewMode, initialValue, editorStateStore, toolbarState, extensions, scrollPastEnd, slots = editorSlots, onFileUpload }, forwardedRef) => {
|
|
412
401
|
var _effect = _useSignals();
|
|
413
402
|
try {
|
|
414
403
|
const { t } = useTranslation3(meta.id);
|
|
@@ -436,12 +425,11 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ id, role, initialValue
|
|
|
436
425
|
}),
|
|
437
426
|
createThemeExtensions({
|
|
438
427
|
themeMode,
|
|
439
|
-
slots
|
|
428
|
+
slots,
|
|
440
429
|
syntaxHighlighting: true
|
|
441
430
|
}),
|
|
442
431
|
createMarkdownExtensions(),
|
|
443
432
|
formattingListener(() => toolbarStateRef.current),
|
|
444
|
-
editorGutter,
|
|
445
433
|
role !== "section" && onFileUpload && dropFile({
|
|
446
434
|
// TODO(wittjosiah): Factor out to file uploader plugin.
|
|
447
435
|
onDrop: async (view, { files }) => {
|
|
@@ -472,7 +460,7 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ id, role, initialValue
|
|
|
472
460
|
role: "none",
|
|
473
461
|
ref: parentRef,
|
|
474
462
|
"data-testid": "composer.markdownRoot",
|
|
475
|
-
className: stackItemContentEditorClassNames(role),
|
|
463
|
+
className: mx(stackItemContentEditorClassNames(role), classNames),
|
|
476
464
|
"data-popover-collision-boundary": true,
|
|
477
465
|
...focusAttributes
|
|
478
466
|
});
|
|
@@ -666,7 +654,7 @@ MarkdownEditorRoot.displayName = "MarkdownEditor.Root";
|
|
|
666
654
|
var MarkdownEditorContent2 = (props) => {
|
|
667
655
|
var _effect = _useSignals4();
|
|
668
656
|
try {
|
|
669
|
-
const { id,
|
|
657
|
+
const { id, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(MarkdownEditorContent2.displayName);
|
|
670
658
|
return /* @__PURE__ */ React5.createElement(EditorMenuProvider, {
|
|
671
659
|
view: editorView,
|
|
672
660
|
groups: groupsRef.current,
|
|
@@ -674,9 +662,9 @@ var MarkdownEditorContent2 = (props) => {
|
|
|
674
662
|
}, /* @__PURE__ */ React5.createElement(MarkdownEditorContent, {
|
|
675
663
|
...props,
|
|
676
664
|
id,
|
|
677
|
-
extensions,
|
|
678
|
-
toolbarState,
|
|
679
665
|
viewMode,
|
|
666
|
+
toolbarState,
|
|
667
|
+
extensions,
|
|
680
668
|
ref: setEditorView
|
|
681
669
|
}));
|
|
682
670
|
} finally {
|
|
@@ -717,7 +705,7 @@ var PreviewBlock = ({ el, link }) => {
|
|
|
717
705
|
try {
|
|
718
706
|
const client = useClient();
|
|
719
707
|
const dxn = DXN.parse(link.ref);
|
|
720
|
-
const subject = client.graph.
|
|
708
|
+
const subject = client.graph.makeRef(dxn).target;
|
|
721
709
|
const data = useMemo6(() => ({
|
|
722
710
|
subject
|
|
723
711
|
}), [
|
|
@@ -739,89 +727,8 @@ var MarkdownEditor = {
|
|
|
739
727
|
Blocks: MarkdownEditorBlocks
|
|
740
728
|
};
|
|
741
729
|
|
|
742
|
-
// src/components/MarkdownContainer.tsx
|
|
743
|
-
var MarkdownContainer = ({ id, role, object, settings, extensionProviders, ...props }) => {
|
|
744
|
-
var _effect = _useSignals5();
|
|
745
|
-
try {
|
|
746
|
-
const space = getSpace2(object);
|
|
747
|
-
const isDocument = Obj3.instanceOf(Markdown_exports.Document, object);
|
|
748
|
-
const isText = Obj3.instanceOf(Text2.Text, object);
|
|
749
|
-
const attendableId = isDocument ? Obj3.getDXN(object).toString() : void 0;
|
|
750
|
-
const otherExtensionProviders = useCapabilities2(MarkdownCapabilities.Extensions);
|
|
751
|
-
const extensions = useMemo7(() => {
|
|
752
|
-
if (!Obj3.instanceOf(Markdown_exports.Document, object)) {
|
|
753
|
-
return [];
|
|
754
|
-
}
|
|
755
|
-
return [
|
|
756
|
-
...otherExtensionProviders ?? [],
|
|
757
|
-
...extensionProviders ?? []
|
|
758
|
-
].flat().reduce((acc, provider) => {
|
|
759
|
-
const extension = typeof provider === "function" ? provider({
|
|
760
|
-
document: object
|
|
761
|
-
}) : provider;
|
|
762
|
-
if (extension) {
|
|
763
|
-
acc.push(extension);
|
|
764
|
-
}
|
|
765
|
-
return acc;
|
|
766
|
-
}, []);
|
|
767
|
-
}, [
|
|
768
|
-
extensionProviders,
|
|
769
|
-
otherExtensionProviders,
|
|
770
|
-
object
|
|
771
|
-
]);
|
|
772
|
-
const { graph } = useAppGraph();
|
|
773
|
-
const customActions = useMemo7(() => {
|
|
774
|
-
return Atom.make((get) => {
|
|
775
|
-
const actions = get(graph.actions(id));
|
|
776
|
-
const nodes = actions.filter((action) => action.properties.disposition === "toolbar");
|
|
777
|
-
const edges = nodes.map((node) => ({
|
|
778
|
-
source: "root",
|
|
779
|
-
target: node.id
|
|
780
|
-
}));
|
|
781
|
-
return {
|
|
782
|
-
nodes,
|
|
783
|
-
edges
|
|
784
|
-
};
|
|
785
|
-
});
|
|
786
|
-
}, [
|
|
787
|
-
graph
|
|
788
|
-
]);
|
|
789
|
-
const [upload] = useCapabilities2(Capabilities2.FileUploader);
|
|
790
|
-
const handleFileUpload = useMemo7(() => {
|
|
791
|
-
if (!space || !upload) {
|
|
792
|
-
return void 0;
|
|
793
|
-
}
|
|
794
|
-
return async (file) => upload(space, file);
|
|
795
|
-
}, [
|
|
796
|
-
space,
|
|
797
|
-
upload
|
|
798
|
-
]);
|
|
799
|
-
const handleLinkQuery = useLinkQuery(space);
|
|
800
|
-
return /* @__PURE__ */ React6.createElement(StackItem.Content, {
|
|
801
|
-
toolbar: settings.toolbar
|
|
802
|
-
}, /* @__PURE__ */ React6.createElement(MarkdownEditor.Root, {
|
|
803
|
-
id: attendableId ?? id,
|
|
804
|
-
object,
|
|
805
|
-
extensions,
|
|
806
|
-
onFileUpload: handleFileUpload,
|
|
807
|
-
onLinkQuery: handleLinkQuery,
|
|
808
|
-
...props
|
|
809
|
-
}, settings.toolbar && /* @__PURE__ */ React6.createElement(MarkdownEditor.Toolbar, {
|
|
810
|
-
id: attendableId ?? id,
|
|
811
|
-
role,
|
|
812
|
-
customActions
|
|
813
|
-
}), /* @__PURE__ */ React6.createElement(MarkdownEditor.Content, {
|
|
814
|
-
initialValue: isDocument ? object.content?.target?.content : isText ? object.content : object.text,
|
|
815
|
-
scrollPastEnd: role === "article"
|
|
816
|
-
}), /* @__PURE__ */ React6.createElement(MarkdownEditor.Blocks, null)));
|
|
817
|
-
} finally {
|
|
818
|
-
_effect.f();
|
|
819
|
-
}
|
|
820
|
-
};
|
|
821
|
-
var MarkdownContainer_default = MarkdownContainer;
|
|
822
|
-
|
|
823
730
|
export {
|
|
824
|
-
|
|
825
|
-
|
|
731
|
+
useLinkQuery,
|
|
732
|
+
MarkdownEditor
|
|
826
733
|
};
|
|
827
|
-
//# sourceMappingURL=chunk-
|
|
734
|
+
//# sourceMappingURL=chunk-56SUMOIZ.mjs.map
|