@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.
Files changed (142) hide show
  1. package/dist/lib/browser/MarkdownCard-THZFDOOV.mjs +13 -0
  2. package/dist/lib/browser/MarkdownContainer-VKPSVI5F.mjs +16 -0
  3. package/dist/lib/browser/{anchor-sort-3HGPGCOO.mjs → anchor-sort-3MYLO74J.mjs} +6 -5
  4. package/dist/lib/browser/anchor-sort-3MYLO74J.mjs.map +7 -0
  5. package/dist/lib/browser/{app-graph-serializer-POZN234F.mjs → app-graph-serializer-BZJ4TQOE.mjs} +3 -3
  6. package/dist/lib/browser/{blueprint-definition-GIPKFDY5.mjs → blueprint-definition-R5T6LTPN.mjs} +3 -3
  7. package/dist/lib/browser/{chunk-K3LXOU3E.mjs → chunk-56SUMOIZ.mjs} +102 -195
  8. package/dist/lib/browser/chunk-56SUMOIZ.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-6OMOMVO7.mjs +107 -0
  10. package/dist/lib/browser/chunk-6OMOMVO7.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-QYSEJ5GP.mjs → chunk-CN35HEBX.mjs} +6 -6
  12. package/dist/lib/browser/chunk-CN35HEBX.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-PBJLFIOX.mjs → chunk-KCOBZZIL.mjs} +38 -23
  14. package/dist/lib/browser/chunk-KCOBZZIL.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-GH6GQSBL.mjs → chunk-KPH4ZPQN.mjs} +53 -5
  16. package/dist/lib/browser/chunk-KPH4ZPQN.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-22XSSNBS.mjs → chunk-NXT2E2BG.mjs} +4 -3
  18. package/dist/lib/browser/chunk-NXT2E2BG.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-Y53FQREH.mjs → chunk-RJPOHSYN.mjs} +8 -6
  20. package/dist/lib/browser/chunk-RJPOHSYN.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-2MLGSYRN.mjs → chunk-U6Y53XZK.mjs} +7 -7
  22. package/dist/lib/browser/index.mjs +10 -24
  23. package/dist/lib/browser/index.mjs.map +3 -3
  24. package/dist/lib/browser/{intent-resolver-Z5L7TXUK.mjs → intent-resolver-55ASQRIW.mjs} +3 -3
  25. package/dist/lib/browser/{intent-resolver-Z5L7TXUK.mjs.map → intent-resolver-55ASQRIW.mjs.map} +1 -1
  26. package/dist/lib/browser/meta.json +1 -1
  27. package/dist/lib/browser/{react-surface-GO5ZOKNN.mjs → react-surface-Q3C5H2KT.mjs} +21 -17
  28. package/dist/lib/browser/react-surface-Q3C5H2KT.mjs.map +7 -0
  29. package/dist/lib/browser/{settings-TZUDB5EW.mjs → settings-G3ZOXJQY.mjs} +2 -2
  30. package/dist/lib/browser/toolkit.mjs +2 -2
  31. package/dist/lib/browser/types/index.mjs +1 -1
  32. package/dist/lib/node-esm/{MarkdownCard-ZXPJLUYO.mjs → MarkdownCard-QHSSZGIY.mjs} +5 -4
  33. package/dist/lib/node-esm/{MarkdownContainer-YRDSRDCS.mjs → MarkdownContainer-G3ZQJS7A.mjs} +7 -6
  34. package/dist/lib/node-esm/{anchor-sort-PCDXEBJ2.mjs → anchor-sort-W4HCTYUQ.mjs} +6 -5
  35. package/dist/lib/node-esm/anchor-sort-W4HCTYUQ.mjs.map +7 -0
  36. package/dist/lib/node-esm/{app-graph-serializer-NF65JYAS.mjs → app-graph-serializer-OCTHXWLF.mjs} +3 -3
  37. package/dist/lib/node-esm/{blueprint-definition-ENKJZYQS.mjs → blueprint-definition-2JV3WV22.mjs} +3 -3
  38. package/dist/lib/node-esm/{chunk-PLZ7EVCT.mjs → chunk-6F6FCTIA.mjs} +53 -5
  39. package/dist/lib/node-esm/chunk-6F6FCTIA.mjs.map +7 -0
  40. package/dist/lib/node-esm/{chunk-HAIEWPU7.mjs → chunk-C5KXP2ZE.mjs} +8 -6
  41. package/dist/lib/node-esm/chunk-C5KXP2ZE.mjs.map +7 -0
  42. package/dist/lib/node-esm/{chunk-CT7CFX5G.mjs → chunk-FR6RW6DH.mjs} +102 -195
  43. package/dist/lib/node-esm/chunk-FR6RW6DH.mjs.map +7 -0
  44. package/dist/lib/node-esm/{chunk-AMHACOXW.mjs → chunk-I5JSQBPI.mjs} +4 -3
  45. package/dist/lib/node-esm/chunk-I5JSQBPI.mjs.map +7 -0
  46. package/dist/lib/node-esm/{chunk-KCHUTL3Q.mjs → chunk-KM7KYV6W.mjs} +7 -7
  47. package/dist/lib/node-esm/chunk-KYWXTMKI.mjs +108 -0
  48. package/dist/lib/node-esm/chunk-KYWXTMKI.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-PIOOG7A5.mjs → chunk-R3SGV4ES.mjs} +38 -23
  50. package/dist/lib/node-esm/chunk-R3SGV4ES.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-NGYJNQ6A.mjs → chunk-YFRTKXTB.mjs} +6 -6
  52. package/dist/lib/node-esm/chunk-YFRTKXTB.mjs.map +7 -0
  53. package/dist/lib/node-esm/index.mjs +10 -24
  54. package/dist/lib/node-esm/index.mjs.map +3 -3
  55. package/dist/lib/node-esm/{intent-resolver-6B3PFQ5F.mjs → intent-resolver-DTBVWCNO.mjs} +3 -3
  56. package/dist/lib/node-esm/{intent-resolver-6B3PFQ5F.mjs.map → intent-resolver-DTBVWCNO.mjs.map} +1 -1
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/{react-surface-I46BPCWT.mjs → react-surface-QWRT4SD6.mjs} +21 -17
  59. package/dist/lib/node-esm/react-surface-QWRT4SD6.mjs.map +7 -0
  60. package/dist/lib/node-esm/{settings-CJ3T5EX4.mjs → settings-IBFFCGNL.mjs} +2 -2
  61. package/dist/lib/node-esm/toolkit.mjs +2 -2
  62. package/dist/lib/node-esm/types/index.mjs +1 -1
  63. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  65. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +14 -1
  66. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  67. package/dist/types/src/components/MarkdownContainer.d.ts +6 -1
  68. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  69. package/dist/types/src/components/MarkdownContainer.stories.d.ts +1 -0
  70. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +8 -5
  72. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  73. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/index.d.ts +5 -2
  75. package/dist/types/src/components/index.d.ts.map +1 -1
  76. package/dist/types/src/functions/open.d.ts.map +1 -1
  77. package/dist/types/src/functions/update.d.ts.map +1 -1
  78. package/dist/types/src/testing.d.ts +2 -2
  79. package/dist/types/src/testing.d.ts.map +1 -1
  80. package/dist/types/src/translations.d.ts +1 -0
  81. package/dist/types/src/translations.d.ts.map +1 -1
  82. package/dist/types/src/types/Markdown.d.ts +6 -6
  83. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  84. package/dist/types/src/types/MarkdownAction.d.ts +3 -3
  85. package/dist/types/src/util.d.ts +3 -0
  86. package/dist/types/src/util.d.ts.map +1 -1
  87. package/dist/types/src/util.test.d.ts +2 -0
  88. package/dist/types/src/util.test.d.ts.map +1 -0
  89. package/dist/types/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +44 -44
  91. package/src/MarkdownPlugin.tsx +5 -21
  92. package/src/capabilities/anchor-sort.ts +4 -3
  93. package/src/capabilities/artifact-definition.ts +1 -1
  94. package/src/capabilities/intent-resolver.ts +1 -1
  95. package/src/capabilities/react-surface.tsx +32 -28
  96. package/src/components/MarkdownCard/MarkdownCard.tsx +39 -32
  97. package/src/components/MarkdownContainer.tsx +68 -73
  98. package/src/components/MarkdownEditor/MarkdownEditor.tsx +5 -5
  99. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +24 -8
  100. package/src/components/Suggestions.stories.tsx +2 -1
  101. package/src/components/index.ts +8 -3
  102. package/src/functions/create.test.ts +14 -18
  103. package/src/functions/open.ts +3 -2
  104. package/src/functions/update.test.ts +17 -21
  105. package/src/functions/update.ts +3 -2
  106. package/src/hooks/useExtensions.tsx +2 -2
  107. package/src/hooks/useLinkQuery.ts +10 -10
  108. package/src/testing.ts +5 -5
  109. package/src/translations.ts +1 -0
  110. package/src/types/Markdown.ts +4 -5
  111. package/src/util.test.ts +44 -0
  112. package/src/util.tsx +72 -4
  113. package/dist/lib/browser/MarkdownCard-JYMDPKV5.mjs +0 -12
  114. package/dist/lib/browser/MarkdownContainer-Y75XSVBX.mjs +0 -15
  115. package/dist/lib/browser/anchor-sort-3HGPGCOO.mjs.map +0 -7
  116. package/dist/lib/browser/chunk-22XSSNBS.mjs.map +0 -7
  117. package/dist/lib/browser/chunk-GH6GQSBL.mjs.map +0 -7
  118. package/dist/lib/browser/chunk-K3LXOU3E.mjs.map +0 -7
  119. package/dist/lib/browser/chunk-PBJLFIOX.mjs.map +0 -7
  120. package/dist/lib/browser/chunk-QYSEJ5GP.mjs.map +0 -7
  121. package/dist/lib/browser/chunk-Y53FQREH.mjs.map +0 -7
  122. package/dist/lib/browser/react-surface-GO5ZOKNN.mjs.map +0 -7
  123. package/dist/lib/node-esm/anchor-sort-PCDXEBJ2.mjs.map +0 -7
  124. package/dist/lib/node-esm/chunk-AMHACOXW.mjs.map +0 -7
  125. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs.map +0 -7
  126. package/dist/lib/node-esm/chunk-HAIEWPU7.mjs.map +0 -7
  127. package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs.map +0 -7
  128. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs.map +0 -7
  129. package/dist/lib/node-esm/chunk-PLZ7EVCT.mjs.map +0 -7
  130. package/dist/lib/node-esm/react-surface-I46BPCWT.mjs.map +0 -7
  131. /package/dist/lib/browser/{MarkdownCard-JYMDPKV5.mjs.map → MarkdownCard-THZFDOOV.mjs.map} +0 -0
  132. /package/dist/lib/browser/{MarkdownContainer-Y75XSVBX.mjs.map → MarkdownContainer-VKPSVI5F.mjs.map} +0 -0
  133. /package/dist/lib/browser/{app-graph-serializer-POZN234F.mjs.map → app-graph-serializer-BZJ4TQOE.mjs.map} +0 -0
  134. /package/dist/lib/browser/{blueprint-definition-GIPKFDY5.mjs.map → blueprint-definition-R5T6LTPN.mjs.map} +0 -0
  135. /package/dist/lib/browser/{chunk-2MLGSYRN.mjs.map → chunk-U6Y53XZK.mjs.map} +0 -0
  136. /package/dist/lib/browser/{settings-TZUDB5EW.mjs.map → settings-G3ZOXJQY.mjs.map} +0 -0
  137. /package/dist/lib/node-esm/{MarkdownCard-ZXPJLUYO.mjs.map → MarkdownCard-QHSSZGIY.mjs.map} +0 -0
  138. /package/dist/lib/node-esm/{MarkdownContainer-YRDSRDCS.mjs.map → MarkdownContainer-G3ZQJS7A.mjs.map} +0 -0
  139. /package/dist/lib/node-esm/{app-graph-serializer-NF65JYAS.mjs.map → app-graph-serializer-OCTHXWLF.mjs.map} +0 -0
  140. /package/dist/lib/node-esm/{blueprint-definition-ENKJZYQS.mjs.map → blueprint-definition-2JV3WV22.mjs.map} +0 -0
  141. /package/dist/lib/node-esm/{chunk-KCHUTL3Q.mjs.map → chunk-KM7KYV6W.mjs.map} +0 -0
  142. /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-QYSEJ5GP.mjs";
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 { createDocAccessor, getRangeFromCursor, getTarget } from "@dxos/react-client/echo";
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-3HGPGCOO.mjs.map
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
+ }
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  translations
3
- } from "./chunk-22XSSNBS.mjs";
3
+ } from "./chunk-NXT2E2BG.mjs";
4
4
  import {
5
5
  MarkdownAction_exports,
6
6
  Markdown_exports
7
- } from "./chunk-QYSEJ5GP.mjs";
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-POZN234F.mjs.map
51
+ //# sourceMappingURL=app-graph-serializer-BZJ4TQOE.mjs.map
@@ -2,12 +2,12 @@ import {
2
2
  MARKDOWN_BLUEPRINT_KEY,
3
3
  MarkdownBlueprint,
4
4
  blueprint_definition_default
5
- } from "./chunk-Y53FQREH.mjs";
6
- import "./chunk-QYSEJ5GP.mjs";
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-GIPKFDY5.mjs.map
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-GH6GQSBL.mjs";
3
+ } from "./chunk-KPH4ZPQN.mjs";
7
4
  import {
8
5
  Markdown_exports
9
- } from "./chunk-QYSEJ5GP.mjs";
6
+ } from "./chunk-CN35HEBX.mjs";
10
7
  import {
11
8
  meta
12
9
  } from "./chunk-BQTYJOFB.mjs";
13
10
 
14
- // src/components/MarkdownContainer.tsx
15
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
16
- import { Atom } from "@effect-atom/atom-react";
17
- import React6, { useMemo as useMemo7 } from "react";
18
- import { Capabilities as Capabilities2 } from "@dxos/app-framework";
19
- import { useAppGraph, useCapabilities as useCapabilities2 } from "@dxos/app-framework/react";
20
- import { Obj as Obj3 } from "@dxos/echo";
21
- import { getSpace as getSpace2 } from "@dxos/react-client/echo";
22
- import { StackItem } from "@dxos/react-ui-stack";
23
- import { Text as Text2 } from "@dxos/schema";
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 } = useTranslation(meta.id);
31
- const getMenu = useCallback(({ text, trigger }) => {
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 ? toLocalizedString(item.label, t).toLowerCase().includes(text.toLowerCase()) : true);
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 useMemo(() => {
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 useMemo2 } from "react";
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 (Obj.instanceOf(Markdown_exports.Document, object)) {
154
+ if (Obj2.instanceOf(Markdown_exports.Document, object)) {
96
155
  target = object.content.target;
97
- } else if (Obj.instanceOf(Text.Text, object)) {
156
+ } else if (Obj2.instanceOf(Text.Text, object)) {
98
157
  target = object;
99
158
  }
100
- const baseExtensions = useMemo2(() => createBaseExtensions({
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 useMemo2(() => [
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
- Obj.instanceOf(Markdown_exports.Document, object) && listener({
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 && Obj.isObject(object) ? Obj.getDXN(object).toString() : id2
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, editorGutter, editorSlots, formattingListener, processEditorPayload, stackItemContentEditorClassNames, useTextEditor } from "@dxos/react-ui-editor";
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, viewMode, scrollPastEnd, onFileUpload }, forwardedRef) => {
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: editorSlots,
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, extensions, editorView, setEditorView, toolbarState, viewMode, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(MarkdownEditorContent2.displayName);
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.ref(dxn).target;
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
- MarkdownContainer,
825
- MarkdownContainer_default
731
+ useLinkQuery,
732
+ MarkdownEditor
826
733
  };
827
- //# sourceMappingURL=chunk-K3LXOU3E.mjs.map
734
+ //# sourceMappingURL=chunk-56SUMOIZ.mjs.map