@dxos/plugin-markdown 0.8.4-main.5ea62a8 → 0.8.4-main.ae835ea

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 (206) hide show
  1. package/dist/lib/browser/MarkdownCard-SLM6QZYC.mjs +12 -0
  2. package/dist/lib/browser/MarkdownContainer-UZFQC6XY.mjs +15 -0
  3. package/dist/lib/browser/{anchor-sort-E33BSTYF.mjs → anchor-sort-4XPPLMZS.mjs} +5 -5
  4. package/dist/lib/browser/{anchor-sort-E33BSTYF.mjs.map → anchor-sort-4XPPLMZS.mjs.map} +1 -1
  5. package/dist/lib/browser/{app-graph-serializer-OX62DNPT.mjs → app-graph-serializer-QQFV4K6P.mjs} +8 -8
  6. package/dist/lib/browser/app-graph-serializer-QQFV4K6P.mjs.map +7 -0
  7. package/dist/lib/browser/blueprint-definition-BC5R3T72.mjs +11 -0
  8. package/dist/lib/browser/blueprint-definition-BC5R3T72.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-LAVZ2W6X.mjs → chunk-2LLVTQCK.mjs} +6 -5
  10. package/dist/lib/browser/chunk-2LLVTQCK.mjs.map +7 -0
  11. package/dist/lib/browser/{MarkdownCard-JLUQITYK.mjs → chunk-3VILQLA4.mjs} +46 -31
  12. package/dist/lib/browser/chunk-3VILQLA4.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-5AYTOIUF.mjs +822 -0
  14. package/dist/lib/browser/chunk-5AYTOIUF.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-Z7P6JGGW.mjs → chunk-A3CQYGCN.mjs} +7 -4
  16. package/dist/lib/browser/{chunk-Z7P6JGGW.mjs.map → chunk-A3CQYGCN.mjs.map} +2 -2
  17. package/dist/lib/browser/{chunk-ODB2PTBP.mjs → chunk-BQTYJOFB.mjs} +4 -4
  18. package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-GLEYXJX3.mjs +22 -0
  20. package/dist/lib/browser/{chunk-D7UYVHL6.mjs.map → chunk-GLEYXJX3.mjs.map} +3 -3
  21. package/dist/lib/browser/{chunk-OY6CGPOO.mjs → chunk-IBCHVMZW.mjs} +2 -2
  22. package/dist/lib/browser/{chunk-OY6CGPOO.mjs.map → chunk-IBCHVMZW.mjs.map} +2 -2
  23. package/dist/lib/browser/{chunk-ZVVKLB5L.mjs → chunk-JAETS5LE.mjs} +33 -48
  24. package/dist/lib/browser/chunk-JAETS5LE.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-BEE7VQPU.mjs → chunk-UKTCPHLI.mjs} +9 -8
  26. package/dist/lib/browser/chunk-UKTCPHLI.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +21 -13
  28. package/dist/lib/browser/index.mjs.map +3 -3
  29. package/dist/lib/browser/{intent-resolver-WDDH56JC.mjs → intent-resolver-VQGMBNXZ.mjs} +7 -7
  30. package/dist/lib/browser/intent-resolver-VQGMBNXZ.mjs.map +7 -0
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/{react-surface-LN2XK2UN.mjs → react-surface-WOMJOPJE.mjs} +52 -50
  33. package/dist/lib/browser/react-surface-WOMJOPJE.mjs.map +7 -0
  34. package/dist/lib/browser/{settings-AABBTB4Q.mjs → settings-LBXJHVBU.mjs} +5 -5
  35. package/dist/lib/browser/{settings-AABBTB4Q.mjs.map → settings-LBXJHVBU.mjs.map} +1 -1
  36. package/dist/lib/browser/{state-FTHQQX7V.mjs → state-BTUKVZHY.mjs} +5 -5
  37. package/dist/lib/browser/{state-FTHQQX7V.mjs.map → state-BTUKVZHY.mjs.map} +1 -1
  38. package/dist/lib/browser/toolkit-YPIVDB4A.mjs +66 -0
  39. package/dist/lib/browser/toolkit-YPIVDB4A.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +2 -2
  41. package/dist/lib/node-esm/MarkdownCard-MCWEFW4F.mjs +13 -0
  42. package/dist/lib/node-esm/MarkdownCard-MCWEFW4F.mjs.map +7 -0
  43. package/dist/lib/node-esm/MarkdownContainer-KAQOK7K5.mjs +16 -0
  44. package/dist/lib/node-esm/MarkdownContainer-KAQOK7K5.mjs.map +7 -0
  45. package/dist/lib/node-esm/{anchor-sort-ALP2NH24.mjs → anchor-sort-4SXYVYXT.mjs} +5 -5
  46. package/dist/lib/node-esm/{anchor-sort-ALP2NH24.mjs.map → anchor-sort-4SXYVYXT.mjs.map} +1 -1
  47. package/dist/lib/node-esm/{app-graph-serializer-56TD3BMX.mjs → app-graph-serializer-KBVRLQN2.mjs} +8 -8
  48. package/dist/lib/node-esm/app-graph-serializer-KBVRLQN2.mjs.map +7 -0
  49. package/dist/lib/node-esm/blueprint-definition-FPNOTEYC.mjs +12 -0
  50. package/dist/lib/node-esm/blueprint-definition-FPNOTEYC.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-2Q4WCKWT.mjs +823 -0
  52. package/dist/lib/node-esm/chunk-2Q4WCKWT.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-Y422WR6A.mjs → chunk-DOB2MJAX.mjs} +33 -48
  54. package/dist/lib/node-esm/chunk-DOB2MJAX.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-GGKPPGWA.mjs +24 -0
  56. package/dist/lib/node-esm/{chunk-JPXFCBC4.mjs.map → chunk-GGKPPGWA.mjs.map} +3 -3
  57. package/dist/lib/node-esm/{chunk-CB2R4YIY.mjs → chunk-GMMVSXQ6.mjs} +2 -2
  58. package/dist/lib/node-esm/{chunk-CB2R4YIY.mjs.map → chunk-GMMVSXQ6.mjs.map} +2 -2
  59. package/dist/lib/node-esm/{chunk-FXILAQ5F.mjs → chunk-JELROKGD.mjs} +9 -8
  60. package/dist/lib/node-esm/chunk-JELROKGD.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-O6EXWGGS.mjs → chunk-QH4MC5BE.mjs} +6 -5
  62. package/dist/lib/node-esm/chunk-QH4MC5BE.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-VCG2U522.mjs → chunk-SHAMSMKQ.mjs} +4 -4
  64. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-J7A6TUB2.mjs → chunk-SJ2QRGPM.mjs} +7 -4
  66. package/dist/lib/node-esm/{chunk-J7A6TUB2.mjs.map → chunk-SJ2QRGPM.mjs.map} +2 -2
  67. package/dist/lib/node-esm/{MarkdownCard-XL5EVSJ7.mjs → chunk-YYSASY7X.mjs} +46 -31
  68. package/dist/lib/node-esm/chunk-YYSASY7X.mjs.map +7 -0
  69. package/dist/lib/node-esm/index.mjs +21 -13
  70. package/dist/lib/node-esm/index.mjs.map +3 -3
  71. package/dist/lib/node-esm/{intent-resolver-2I5HKCUU.mjs → intent-resolver-Q4XVI5EX.mjs} +7 -7
  72. package/dist/lib/node-esm/intent-resolver-Q4XVI5EX.mjs.map +7 -0
  73. package/dist/lib/node-esm/meta.json +1 -1
  74. package/dist/lib/node-esm/{react-surface-DJGGKYBD.mjs → react-surface-FAMZTAXK.mjs} +52 -50
  75. package/dist/lib/node-esm/react-surface-FAMZTAXK.mjs.map +7 -0
  76. package/dist/lib/node-esm/{settings-CXGR6DH4.mjs → settings-2YRA67H6.mjs} +5 -5
  77. package/dist/lib/node-esm/{settings-CXGR6DH4.mjs.map → settings-2YRA67H6.mjs.map} +1 -1
  78. package/dist/lib/node-esm/{state-NWMQ3XAI.mjs → state-K6EH7SRZ.mjs} +5 -5
  79. package/dist/lib/node-esm/{state-NWMQ3XAI.mjs.map → state-K6EH7SRZ.mjs.map} +1 -1
  80. package/dist/lib/node-esm/toolkit-36BFLIR3.mjs +67 -0
  81. package/dist/lib/node-esm/toolkit-36BFLIR3.mjs.map +7 -0
  82. package/dist/lib/node-esm/types/index.mjs +2 -2
  83. package/dist/types/src/MarkdownPlugin.d.ts +1 -1
  84. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -1
  87. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/index.d.ts +1 -0
  90. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/toolkit.d.ts +20 -0
  94. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  95. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  96. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -1
  97. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  98. package/dist/types/src/components/MarkdownContainer.d.ts +8 -12
  99. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  100. package/dist/types/src/components/MarkdownContainer.stories.d.ts +7 -4
  101. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  102. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +11 -0
  103. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -0
  104. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +42 -23
  105. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  106. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +5 -110
  107. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  108. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +26 -0
  109. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -0
  110. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +12 -0
  111. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -0
  112. package/dist/types/src/components/Suggestions.stories.d.ts +1 -2
  113. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  114. package/dist/types/src/components/index.d.ts +3 -1
  115. package/dist/types/src/components/index.d.ts.map +1 -1
  116. package/dist/types/src/functions/diff.d.ts.map +1 -1
  117. package/dist/types/src/functions/index.d.ts +0 -1
  118. package/dist/types/src/functions/index.d.ts.map +1 -1
  119. package/dist/types/src/functions/open.d.ts.map +1 -1
  120. package/dist/types/src/hooks/index.d.ts +3 -0
  121. package/dist/types/src/hooks/index.d.ts.map +1 -1
  122. package/dist/types/src/hooks/useExtensions.d.ts +21 -0
  123. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -0
  124. package/dist/types/src/hooks/useLinkQuery.d.ts +4 -0
  125. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -0
  126. package/dist/types/src/hooks/usePopoverMenuOptions.d.ts +9 -0
  127. package/dist/types/src/hooks/usePopoverMenuOptions.d.ts.map +1 -0
  128. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +1 -1
  129. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  130. package/dist/types/src/translations.d.ts +3 -0
  131. package/dist/types/src/translations.d.ts.map +1 -1
  132. package/dist/types/src/types/Markdown.d.ts +6 -4
  133. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  134. package/dist/types/src/types/MarkdownAction.d.ts +3 -2
  135. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -1
  136. package/dist/types/src/util.d.ts +1 -1
  137. package/dist/types/src/util.d.ts.map +1 -1
  138. package/dist/types/tsconfig.tsbuildinfo +1 -1
  139. package/package.json +58 -55
  140. package/src/MarkdownPlugin.tsx +100 -93
  141. package/src/capabilities/app-graph-serializer.ts +2 -2
  142. package/src/capabilities/artifact-definition.ts +4 -3
  143. package/src/capabilities/blueprint-definition.ts +5 -5
  144. package/src/capabilities/capabilities.ts +1 -0
  145. package/src/capabilities/index.ts +1 -0
  146. package/src/capabilities/intent-resolver.ts +2 -1
  147. package/src/capabilities/react-surface.tsx +35 -57
  148. package/src/capabilities/toolkit.ts +53 -0
  149. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +3 -6
  150. package/src/components/MarkdownCard/MarkdownCard.tsx +42 -32
  151. package/src/components/MarkdownContainer.stories.tsx +75 -38
  152. package/src/components/MarkdownContainer.tsx +84 -218
  153. package/src/components/MarkdownEditor/FileUpload.tsx +63 -0
  154. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +56 -35
  155. package/src/components/MarkdownEditor/MarkdownEditor.tsx +220 -272
  156. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +134 -0
  157. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +63 -0
  158. package/src/components/Suggestions.stories.tsx +28 -27
  159. package/src/components/index.ts +3 -1
  160. package/src/functions/diff.ts +4 -2
  161. package/src/functions/index.ts +0 -1
  162. package/src/functions/open.ts +4 -2
  163. package/src/hooks/index.ts +3 -0
  164. package/src/{extensions.tsx → hooks/useExtensions.tsx} +56 -114
  165. package/src/hooks/useLinkQuery.ts +82 -0
  166. package/src/hooks/usePopoverMenuOptions.ts +71 -0
  167. package/src/hooks/useSelectCurrentThread.tsx +2 -2
  168. package/src/meta.ts +3 -3
  169. package/src/translations.ts +3 -0
  170. package/src/types/Markdown.ts +6 -4
  171. package/src/types/MarkdownAction.ts +1 -1
  172. package/src/util.tsx +9 -2
  173. package/dist/lib/browser/MarkdownCard-JLUQITYK.mjs.map +0 -7
  174. package/dist/lib/browser/MarkdownContainer-7M37DXAD.mjs +0 -781
  175. package/dist/lib/browser/MarkdownContainer-7M37DXAD.mjs.map +0 -7
  176. package/dist/lib/browser/app-graph-serializer-OX62DNPT.mjs.map +0 -7
  177. package/dist/lib/browser/blueprint-definition-Z3RQGWUD.mjs +0 -11
  178. package/dist/lib/browser/chunk-BEE7VQPU.mjs.map +0 -7
  179. package/dist/lib/browser/chunk-D7UYVHL6.mjs +0 -20
  180. package/dist/lib/browser/chunk-LAVZ2W6X.mjs.map +0 -7
  181. package/dist/lib/browser/chunk-ODB2PTBP.mjs.map +0 -7
  182. package/dist/lib/browser/chunk-ZVVKLB5L.mjs.map +0 -7
  183. package/dist/lib/browser/intent-resolver-WDDH56JC.mjs.map +0 -7
  184. package/dist/lib/browser/react-surface-LN2XK2UN.mjs.map +0 -7
  185. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs.map +0 -7
  186. package/dist/lib/node-esm/MarkdownContainer-K3BPAGWO.mjs +0 -782
  187. package/dist/lib/node-esm/MarkdownContainer-K3BPAGWO.mjs.map +0 -7
  188. package/dist/lib/node-esm/app-graph-serializer-56TD3BMX.mjs.map +0 -7
  189. package/dist/lib/node-esm/blueprint-definition-735OAX33.mjs +0 -12
  190. package/dist/lib/node-esm/chunk-FXILAQ5F.mjs.map +0 -7
  191. package/dist/lib/node-esm/chunk-JPXFCBC4.mjs +0 -22
  192. package/dist/lib/node-esm/chunk-O6EXWGGS.mjs.map +0 -7
  193. package/dist/lib/node-esm/chunk-VCG2U522.mjs.map +0 -7
  194. package/dist/lib/node-esm/chunk-Y422WR6A.mjs.map +0 -7
  195. package/dist/lib/node-esm/intent-resolver-2I5HKCUU.mjs.map +0 -7
  196. package/dist/lib/node-esm/react-surface-DJGGKYBD.mjs.map +0 -7
  197. package/dist/types/src/components/Toolbar.stories.d.ts +0 -48
  198. package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
  199. package/dist/types/src/extensions.d.ts +0 -24
  200. package/dist/types/src/extensions.d.ts.map +0 -1
  201. package/dist/types/src/functions/create.d.ts +0 -12
  202. package/dist/types/src/functions/create.d.ts.map +0 -1
  203. package/src/components/Toolbar.stories.tsx +0 -118
  204. package/src/functions/create.ts +0 -23
  205. /package/dist/lib/browser/{blueprint-definition-Z3RQGWUD.mjs.map → MarkdownCard-SLM6QZYC.mjs.map} +0 -0
  206. /package/dist/lib/{node-esm/blueprint-definition-735OAX33.mjs.map → browser/MarkdownContainer-UZFQC6XY.mjs.map} +0 -0
@@ -1,46 +1,33 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- getAbstract,
3
+ getContentSnippet,
4
4
  getFallbackName
5
- } from "./chunk-O6EXWGGS.mjs";
5
+ } from "./chunk-QH4MC5BE.mjs";
6
6
  import {
7
7
  Markdown_exports
8
- } from "./chunk-FXILAQ5F.mjs";
8
+ } from "./chunk-JELROKGD.mjs";
9
9
  import {
10
10
  meta
11
- } from "./chunk-VCG2U522.mjs";
11
+ } from "./chunk-SHAMSMKQ.mjs";
12
12
 
13
13
  // src/components/MarkdownCard/MarkdownCard.tsx
14
14
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
15
- import { pipe } from "effect";
15
+ import * as Function from "effect/Function";
16
16
  import React, { useCallback } from "react";
17
17
  import { LayoutAction, chain, createIntent, useIntentDispatcher } from "@dxos/app-framework";
18
18
  import { Obj } from "@dxos/echo";
19
19
  import { fullyQualifiedId } from "@dxos/react-client/echo";
20
- import { Button, Icon, useTranslation } from "@dxos/react-ui";
20
+ import { IconButton, useTranslation } from "@dxos/react-ui";
21
21
  import { Card } from "@dxos/react-ui-stack";
22
22
  import { DataType } from "@dxos/schema";
23
- var getTitle = (subject, fallback) => {
24
- if (Obj.instanceOf(Markdown_exports.Document, subject)) {
25
- return subject.name ?? subject.fallbackName ?? getFallbackName(subject.content?.target?.content ?? fallback);
26
- } else if (Obj.instanceOf(DataType.Text, subject)) {
27
- return getFallbackName(subject.content);
28
- }
29
- };
30
- var getSnippet = (subject, fallback) => {
31
- if (Obj.instanceOf(Markdown_exports.Document, subject)) {
32
- return getAbstract(subject.content?.target?.content ?? fallback);
33
- } else if (Obj.instanceOf(DataType.Text, subject)) {
34
- return getAbstract(subject.content);
35
- }
36
- };
37
23
  var MarkdownCard = ({ subject, role }) => {
38
24
  var _effect = _useSignals();
39
25
  try {
40
26
  const { dispatchPromise: dispatch } = useIntentDispatcher();
41
27
  const { t } = useTranslation(meta.id);
42
28
  const snippet = getSnippet(subject, t("fallback abstract"));
43
- const handleNavigate = useCallback(() => dispatch(pipe(createIntent(LayoutAction.UpdatePopover, {
29
+ const info = getInfo(subject);
30
+ const handleNavigate = useCallback(() => dispatch(Function.pipe(createIntent(LayoutAction.UpdatePopover, {
44
31
  part: "popover",
45
32
  subject: null,
46
33
  options: {
@@ -58,24 +45,52 @@ var MarkdownCard = ({ subject, role }) => {
58
45
  ]);
59
46
  return /* @__PURE__ */ React.createElement(Card.SurfaceRoot, {
60
47
  role
61
- }, /* @__PURE__ */ React.createElement(Card.Heading, null, getTitle(subject, t("fallback title"))), snippet && /* @__PURE__ */ React.createElement(Card.Text, {
62
- classNames: "line-clamp-3 break-words col-span-2"
63
- }, snippet), role === "card--popover" && /* @__PURE__ */ React.createElement(Card.Chrome, null, /* @__PURE__ */ React.createElement(Button, {
64
- onClick: handleNavigate
65
- }, /* @__PURE__ */ React.createElement("span", {
48
+ }, /* @__PURE__ */ React.createElement(Card.Heading, {
49
+ classNames: "flex items-center"
50
+ }, getTitle(subject, t("fallback title")), /* @__PURE__ */ React.createElement("span", {
66
51
  className: "grow"
67
- }, t("navigate to document label")), /* @__PURE__ */ React.createElement(Icon, {
68
- icon: "ph--arrow-right--regular"
69
- }))));
52
+ }), /* @__PURE__ */ React.createElement(IconButton, {
53
+ iconOnly: true,
54
+ icon: "ph--arrow-right--regular",
55
+ label: t("navigate to document label"),
56
+ onClick: handleNavigate
57
+ })), snippet && /* @__PURE__ */ React.createElement(Card.Text, {
58
+ classNames: "line-clamp-3 text-sm text-description"
59
+ }, snippet), /* @__PURE__ */ React.createElement(Card.Text, {
60
+ classNames: "text-xs text-description"
61
+ }, info.words, " ", t("words label", {
62
+ count: info.words
63
+ })));
70
64
  } finally {
71
65
  _effect.f();
72
66
  }
73
67
  };
68
+ var getInfo = (subject) => {
69
+ const text = (Obj.instanceOf(Markdown_exports.Document, subject) ? subject.content?.target?.content : subject.content) ?? "";
70
+ return {
71
+ words: text.split(" ").length
72
+ };
73
+ };
74
+ var getTitle = (subject, fallback) => {
75
+ if (Obj.instanceOf(Markdown_exports.Document, subject)) {
76
+ return subject.name ?? subject.fallbackName ?? getFallbackName(subject.content?.target?.content ?? fallback);
77
+ } else if (Obj.instanceOf(DataType.Text, subject)) {
78
+ return getFallbackName(subject.content);
79
+ }
80
+ };
81
+ var getSnippet = (subject, fallback) => {
82
+ if (Obj.instanceOf(Markdown_exports.Document, subject)) {
83
+ return Obj.getDescription(subject) || getContentSnippet(subject.content?.target?.content ?? fallback);
84
+ } else if (Obj.instanceOf(DataType.Text, subject)) {
85
+ return getContentSnippet(subject.content ?? fallback);
86
+ }
87
+ };
74
88
 
75
89
  // src/components/MarkdownCard/index.ts
76
90
  var MarkdownCard_default = MarkdownCard;
91
+
77
92
  export {
78
93
  MarkdownCard,
79
- MarkdownCard_default as default
94
+ MarkdownCard_default
80
95
  };
81
- //# sourceMappingURL=MarkdownCard-XL5EVSJ7.mjs.map
96
+ //# sourceMappingURL=chunk-YYSASY7X.mjs.map
@@ -0,0 +1,7 @@
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, useIntentDispatcher } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { type PreviewProps } from '@dxos/plugin-preview';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { IconButton, useTranslation } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui-stack';\nimport { DataType } from '@dxos/schema';\n\nimport { meta } from '../../meta';\nimport { Markdown } from '../../types';\nimport { getContentSnippet, getFallbackName } from '../../util';\n\nexport type MarkdownCardProps = PreviewProps<Markdown.Document | DataType.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, { part: 'main', subject: [fullyQualifiedId(subject)] }),\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 | DataType.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 | DataType.Text, fallback: string) => {\n if (Obj.instanceOf(Markdown.Document, subject)) {\n return subject.name ?? subject.fallbackName ?? getFallbackName(subject.content?.target?.content ?? fallback);\n } else if (Obj.instanceOf(DataType.Text, subject)) {\n return getFallbackName(subject.content);\n }\n};\n\n// TODO(burdon): Factor out.\nconst getSnippet = (subject: Markdown.Document | DataType.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(DataType.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,cAAcC,2BAA2B;AACvE,SAASC,WAAW;AAEpB,SAASC,wBAAwB;AACjC,SAASC,YAAYC,sBAAsB;AAC3C,SAASC,YAAY;AACrB,SAASC,gBAAgB;AAQlB,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;MAAEL,MAAM;MAAQnB,SAAS;QAACyB,iBAAiBzB,OAAAA;;IAAU,CAAA,CAAA,CAAA,GAGpF;MAACG;MAAUH;KAAQ;AAGrB,WACE,sBAAA,cAAC0B,KAAKC,aAAW;MAAC1B;OAChB,sBAAA,cAACyB,KAAKE,SAAO;MAACC,YAAW;OACtBC,SAAS9B,SAASK,EAAE,gBAAA,CAAA,GACrB,sBAAA,cAAC0B,QAAAA;MAAKC,WAAU;QAChB,sBAAA,cAACC,YAAAA;MACCC,UAAAA;MACAC,MAAK;MACLC,OAAO/B,EAAE,4BAAA;MACTgC,SAASxB;SAGZJ,WAAW,sBAAA,cAACiB,KAAKY,MAAI;MAACT,YAAW;OAAyCpB,OAAAA,GAC3E,sBAAA,cAACiB,KAAKY,MAAI;MAACT,YAAW;OACnBlB,KAAK4B,OAAM,KAAElC,EAAE,eAAe;MAAEmC,OAAO7B,KAAK4B;IAAM,CAAA,CAAA,CAAA;;;;AAI3D;AAEA,IAAM3B,UAAU,CAACZ,YAAAA;AACf,QAAMyC,QAAQC,IAAIC,WAAWC,iBAASC,UAAU7C,OAAAA,IAAWA,QAAQ8C,SAASC,QAAQD,UAAU9C,QAAQ8C,YAAY;AAClH,SAAO;IAAEP,OAAOE,KAAKO,MAAM,GAAA,EAAKC;EAAO;AACzC;AAGA,IAAMnB,WAAW,CAAC9B,SAA4CkD,aAAAA;AAC5D,MAAIR,IAAIC,WAAWC,iBAASC,UAAU7C,OAAAA,GAAU;AAC9C,WAAOA,QAAQmD,QAAQnD,QAAQoD,gBAAgBC,gBAAgBrD,QAAQ8C,SAASC,QAAQD,WAAWI,QAAAA;EACrG,WAAWR,IAAIC,WAAWW,SAAShB,MAAMtC,OAAAA,GAAU;AACjD,WAAOqD,gBAAgBrD,QAAQ8C,OAAO;EACxC;AACF;AAGA,IAAMpC,aAAa,CAACV,SAA4CkD,aAAAA;AAC9D,MAAIR,IAAIC,WAAWC,iBAASC,UAAU7C,OAAAA,GAAU;AAC9C,WAAO0C,IAAIa,eAAevD,OAAAA,KAAYwD,kBAAkBxD,QAAQ8C,SAASC,QAAQD,WAAWI,QAAAA;EAC9F,WAAWR,IAAIC,WAAWW,SAAShB,MAAMtC,OAAAA,GAAU;AACjD,WAAOwD,kBAAkBxD,QAAQ8C,WAAWI,QAAAA;EAC9C;AACF;;;AC5EA,IAAA,uBAAeO;",
6
+ "names": ["Function", "React", "useCallback", "LayoutAction", "chain", "createIntent", "useIntentDispatcher", "Obj", "fullyQualifiedId", "IconButton", "useTranslation", "Card", "DataType", "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", "fullyQualifiedId", "Card", "SurfaceRoot", "Heading", "classNames", "getTitle", "span", "className", "IconButton", "iconOnly", "icon", "label", "onClick", "Text", "words", "count", "text", "Obj", "instanceOf", "Markdown", "Document", "content", "target", "split", "length", "fallback", "name", "fallbackName", "getFallbackName", "DataType", "getDescription", "getContentSnippet", "MarkdownCard"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  translations
4
- } from "./chunk-J7A6TUB2.mjs";
4
+ } from "./chunk-SJ2QRGPM.mjs";
5
5
  import {
6
6
  AnchorSort,
7
7
  AppGraphSerializer,
@@ -9,29 +9,30 @@ import {
9
9
  IntentResolver,
10
10
  MarkdownSettings,
11
11
  MarkdownState,
12
- ReactSurface
13
- } from "./chunk-JPXFCBC4.mjs";
12
+ ReactSurface,
13
+ Toolkit
14
+ } from "./chunk-GGKPPGWA.mjs";
14
15
  import {
15
- BLUEPRINT_KEY
16
- } from "./chunk-Y422WR6A.mjs";
16
+ ASSISTANT_BLUEPRINT_KEY
17
+ } from "./chunk-DOB2MJAX.mjs";
17
18
  import {
18
19
  MarkdownCapabilities
19
- } from "./chunk-CB2R4YIY.mjs";
20
+ } from "./chunk-GMMVSXQ6.mjs";
20
21
  import {
21
- getAbstract,
22
+ getContentSnippet,
22
23
  getFallbackName,
23
24
  isEditorModel,
24
25
  isMarkdownProperties,
25
26
  serializer,
26
27
  setFallbackName
27
- } from "./chunk-O6EXWGGS.mjs";
28
+ } from "./chunk-QH4MC5BE.mjs";
28
29
  import {
29
30
  MarkdownAction_exports,
30
31
  Markdown_exports
31
- } from "./chunk-FXILAQ5F.mjs";
32
+ } from "./chunk-JELROKGD.mjs";
32
33
  import {
33
34
  meta
34
- } from "./chunk-VCG2U522.mjs";
35
+ } from "./chunk-SHAMSMKQ.mjs";
35
36
 
36
37
  // src/events.ts
37
38
  import { Events } from "@dxos/app-framework";
@@ -49,7 +50,7 @@ import { defineObjectForm } from "@dxos/plugin-space/types";
49
50
  import { createDocAccessor, getTextInRange } from "@dxos/react-client/echo";
50
51
  import { translations as editorTranslations } from "@dxos/react-ui-editor";
51
52
  import { DataType } from "@dxos/schema";
52
- var MarkdownPlugin = () => definePlugin(meta, [
53
+ var MarkdownPlugin = definePlugin(meta, () => [
53
54
  defineModule({
54
55
  id: `${meta.id}/module/translations`,
55
56
  activatesOn: Events2.SetupTranslations,
@@ -79,8 +80,9 @@ var MarkdownPlugin = () => definePlugin(meta, [
79
80
  metadata: {
80
81
  label: (object) => object.name || object.fallbackName,
81
82
  icon: "ph--text-aa--regular",
83
+ iconHue: "indigo",
82
84
  blueprints: [
83
- BLUEPRINT_KEY
85
+ ASSISTANT_BLUEPRINT_KEY
84
86
  ],
85
87
  graphProps: {
86
88
  managesAutofocus: true
@@ -148,6 +150,12 @@ var MarkdownPlugin = () => definePlugin(meta, [
148
150
  id: `${meta.id}/module/blueprint`,
149
151
  activatesOn: Events2.SetupArtifactDefinition,
150
152
  activate: BlueprintDefinition
153
+ }),
154
+ defineModule({
155
+ id: `${meta.id}/module/toolkit`,
156
+ // TODO(wittjosiah): Use a different event.
157
+ activatesOn: Events2.Startup,
158
+ activate: Toolkit
151
159
  })
152
160
  ]);
153
161
  export {
@@ -156,7 +164,7 @@ export {
156
164
  MarkdownCapabilities,
157
165
  MarkdownEvents,
158
166
  MarkdownPlugin,
159
- getAbstract,
167
+ getContentSnippet,
160
168
  getFallbackName,
161
169
  isEditorModel,
162
170
  isMarkdownProperties,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/events.ts", "../../../src/MarkdownPlugin.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport namespace MarkdownEvents {\n export const SetupExtensions = Events.createStateEvent(`${meta.id}/event/setup-extensions`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from '@dxos/app-framework';\nimport { type Obj, Ref } from '@dxos/echo';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\nimport { createDocAccessor, getTextInRange } from '@dxos/react-client/echo';\nimport { translations as editorTranslations } from '@dxos/react-ui-editor';\nimport { DataType } from '@dxos/schema';\n\nimport {\n AnchorSort,\n AppGraphSerializer,\n BLUEPRINT_KEY,\n BlueprintDefinition,\n IntentResolver,\n MarkdownSettings,\n MarkdownState,\n ReactSurface,\n} from './capabilities';\nimport { MarkdownEvents } from './events';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { Markdown, MarkdownAction } from './types';\nimport { serializer } from './util';\n\nexport const MarkdownPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...editorTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: MarkdownSettings,\n }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: MarkdownState,\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () =>\n contributes(Capabilities.Metadata, {\n id: Markdown.Document.typename,\n metadata: {\n label: (object: Markdown.Document) => object.name || object.fallbackName,\n icon: 'ph--text-aa--regular',\n blueprints: [BLUEPRINT_KEY],\n graphProps: {\n managesAutofocus: true,\n },\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (doc: Markdown.Document) => await Ref.Array.loadAll<Obj.Any>([doc.content]),\n serializer,\n // TODO(wittjosiah): Consider how to do generic comments without these.\n comments: 'anchored',\n selectionMode: 'multi-range',\n getAnchorLabel: (doc: Markdown.Document, anchor: string): string | undefined => {\n if (doc.content) {\n const [start, end] = anchor.split(':');\n return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);\n }\n },\n },\n }),\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: Markdown.Document,\n getIntent: () => createIntent(MarkdownAction.Create, {}),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [DataType.Text]),\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the editor is loaded when surfaces activation is more granular.\n activatesBefore: [MarkdownEvents.SetupExtensions],\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-serializer`,\n activatesOn: Events.AppGraphReady,\n activate: AppGraphSerializer,\n }),\n defineModule({\n id: `${meta.id}/module/anchor-sort`,\n // TODO(wittjosiah): More relevant event?\n activatesOn: Events.AppGraphReady,\n activate: AnchorSort,\n }),\n defineModule({\n id: `${meta.id}/module/blueprint`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: BlueprintDefinition,\n }),\n ]);\n"],
5
- "mappings": "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",
6
- "names": ["Events", "MarkdownEvents", "SetupExtensions", "Events", "createStateEvent", "meta", "id", "Capabilities", "Events", "contributes", "createIntent", "defineModule", "definePlugin", "Ref", "ClientCapabilities", "ClientEvents", "SpaceCapabilities", "defineObjectForm", "createDocAccessor", "getTextInRange", "translations", "editorTranslations", "DataType", "MarkdownPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "editorTranslations", "SetupSettings", "MarkdownSettings", "MarkdownState", "SetupMetadata", "Metadata", "Markdown", "Document", "typename", "metadata", "label", "object", "name", "fallbackName", "icon", "blueprints", "BLUEPRINT_KEY", "graphProps", "managesAutofocus", "loadReferences", "doc", "Ref", "Array", "loadAll", "content", "serializer", "comments", "selectionMode", "getAnchorLabel", "anchor", "start", "end", "split", "getTextInRange", "createDocAccessor", "target", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "createIntent", "MarkdownAction", "Create", "ClientCapabilities", "Schema", "DataType", "Text", "SetupReactSurface", "activatesBefore", "MarkdownEvents", "SetupExtensions", "ReactSurface", "SetupIntentResolver", "IntentResolver", "AppGraphReady", "AppGraphSerializer", "AnchorSort", "SetupArtifactDefinition", "BlueprintDefinition"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport namespace MarkdownEvents {\n export const SetupExtensions = Events.createStateEvent(`${meta.id}/event/setup-extensions`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from '@dxos/app-framework';\nimport { type Obj, Ref } from '@dxos/echo';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\nimport { createDocAccessor, getTextInRange } from '@dxos/react-client/echo';\nimport { translations as editorTranslations } from '@dxos/react-ui-editor';\nimport { DataType } from '@dxos/schema';\n\nimport {\n ASSISTANT_BLUEPRINT_KEY,\n AnchorSort,\n AppGraphSerializer,\n BlueprintDefinition,\n IntentResolver,\n MarkdownSettings,\n MarkdownState,\n ReactSurface,\n Toolkit,\n} from './capabilities';\nimport { MarkdownEvents } from './events';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { Markdown, MarkdownAction } from './types';\nimport { serializer } from './util';\n\nexport const MarkdownPlugin = definePlugin(meta, () => [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...editorTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: MarkdownSettings,\n }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: MarkdownState,\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () =>\n contributes(Capabilities.Metadata, {\n id: Markdown.Document.typename,\n metadata: {\n label: (object: Markdown.Document) => object.name || object.fallbackName,\n icon: 'ph--text-aa--regular',\n iconHue: 'indigo',\n blueprints: [ASSISTANT_BLUEPRINT_KEY],\n graphProps: {\n managesAutofocus: true,\n },\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (doc: Markdown.Document) => await Ref.Array.loadAll<Obj.Any>([doc.content]),\n serializer,\n // TODO(wittjosiah): Consider how to do generic comments without these.\n comments: 'anchored',\n selectionMode: 'multi-range',\n getAnchorLabel: (doc: Markdown.Document, anchor: string): string | undefined => {\n if (doc.content) {\n const [start, end] = anchor.split(':');\n return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);\n }\n },\n },\n }),\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: Markdown.Document,\n getIntent: () => createIntent(MarkdownAction.Create, {}),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [DataType.Text]),\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the editor is loaded when surfaces activation is more granular.\n activatesBefore: [MarkdownEvents.SetupExtensions],\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-serializer`,\n activatesOn: Events.AppGraphReady,\n activate: AppGraphSerializer,\n }),\n defineModule({\n id: `${meta.id}/module/anchor-sort`,\n // TODO(wittjosiah): More relevant event?\n activatesOn: Events.AppGraphReady,\n activate: AnchorSort,\n }),\n defineModule({\n id: `${meta.id}/module/blueprint`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: BlueprintDefinition,\n }),\n defineModule({\n id: `${meta.id}/module/toolkit`,\n // TODO(wittjosiah): Use a different event.\n activatesOn: Events.Startup,\n activate: Toolkit,\n }),\n]);\n"],
5
+ "mappings": "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",
6
+ "names": ["Events", "MarkdownEvents", "SetupExtensions", "Events", "createStateEvent", "meta", "id", "Capabilities", "Events", "contributes", "createIntent", "defineModule", "definePlugin", "Ref", "ClientCapabilities", "ClientEvents", "SpaceCapabilities", "defineObjectForm", "createDocAccessor", "getTextInRange", "translations", "editorTranslations", "DataType", "MarkdownPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "editorTranslations", "SetupSettings", "MarkdownSettings", "MarkdownState", "SetupMetadata", "Metadata", "Markdown", "Document", "typename", "metadata", "label", "object", "name", "fallbackName", "icon", "iconHue", "blueprints", "ASSISTANT_BLUEPRINT_KEY", "graphProps", "managesAutofocus", "loadReferences", "doc", "Ref", "Array", "loadAll", "content", "serializer", "comments", "selectionMode", "getAnchorLabel", "anchor", "start", "end", "split", "getTextInRange", "createDocAccessor", "target", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "createIntent", "MarkdownAction", "Create", "ClientCapabilities", "Schema", "DataType", "Text", "SetupReactSurface", "activatesBefore", "MarkdownEvents", "SetupExtensions", "ReactSurface", "SetupIntentResolver", "IntentResolver", "AppGraphReady", "AppGraphSerializer", "AnchorSort", "SetupArtifactDefinition", "BlueprintDefinition", "Startup", "Toolkit"]
7
7
  }
@@ -1,20 +1,20 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  MarkdownCapabilities
4
- } from "./chunk-CB2R4YIY.mjs";
4
+ } from "./chunk-GMMVSXQ6.mjs";
5
5
  import {
6
6
  MarkdownAction_exports,
7
7
  Markdown_exports
8
- } from "./chunk-FXILAQ5F.mjs";
9
- import "./chunk-VCG2U522.mjs";
8
+ } from "./chunk-JELROKGD.mjs";
9
+ import "./chunk-SHAMSMKQ.mjs";
10
10
 
11
11
  // src/capabilities/intent-resolver.ts
12
12
  import { next as A } from "@automerge/automerge";
13
- import { Option } from "effect";
13
+ import * as Option from "effect/Option";
14
14
  import { Capabilities, CollaborationActions, contributes, createResolver } from "@dxos/app-framework";
15
15
  import { Obj } from "@dxos/echo";
16
16
  import { createDocAccessor, getRangeFromCursor } from "@dxos/react-client/echo";
17
- var intent_resolver_default = (context) => contributes(Capabilities.IntentResolver, [
17
+ var intent_resolver_default = ((context) => contributes(Capabilities.IntentResolver, [
18
18
  createResolver({
19
19
  intent: MarkdownAction_exports.Create,
20
20
  resolve: ({ name, content }) => {
@@ -56,8 +56,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
56
56
  });
57
57
  }
58
58
  })
59
- ]);
59
+ ]));
60
60
  export {
61
61
  intent_resolver_default as default
62
62
  };
63
- //# sourceMappingURL=intent-resolver-2I5HKCUU.mjs.map
63
+ //# sourceMappingURL=intent-resolver-Q4XVI5EX.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { next as A } from '@automerge/automerge';\nimport * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\n\nimport {\n Capabilities,\n CollaborationActions,\n type PluginContext,\n contributes,\n createResolver,\n} from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { createDocAccessor, getRangeFromCursor } from '@dxos/react-client/echo';\n\nimport { Markdown, MarkdownAction } from '../types';\n\nimport { MarkdownCapabilities } from './capabilities';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: MarkdownAction.Create,\n resolve: ({ name, content }) => {\n return { data: { object: Markdown.makeDocument({ name, content }) } };\n },\n }),\n createResolver({\n intent: MarkdownAction.SetViewMode,\n resolve: ({ id, viewMode }) => {\n const { state } = context.getCapability(MarkdownCapabilities.State);\n state.viewMode[id] = viewMode;\n },\n }),\n createResolver({\n intent: CollaborationActions.AcceptProposal,\n filter: (\n data,\n ): data is Omit<Schema.Schema.Type<typeof CollaborationActions.AcceptProposal.fields.input>, 'subject'> & {\n subject: Markdown.Document;\n } => Obj.instanceOf(Markdown.Document, data.subject),\n resolve: async ({ subject, anchor, proposal }) => {\n const text = await subject.content.load();\n const accessor = createDocAccessor(text, ['content']);\n const { start, end } = Option.fromNullable(anchor).pipe(\n Option.flatMap((at) => Option.fromNullable(getRangeFromCursor(accessor, at))),\n // Fallback to the end of the document.\n Option.getOrElse(() => ({ start: text.content.length - 1, end: text.content.length - 1 })),\n );\n accessor.handle.change((doc) => {\n A.splice(doc, accessor.path.slice(), start, end - start, proposal.text);\n });\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;AAIA,SAASA,QAAQC,SAAS;AAC1B,YAAYC,YAAY;AAGxB,SACEC,cACAC,sBAEAC,aACAC,sBACK;AACP,SAASC,WAAW;AACpB,SAASC,mBAAmBC,0BAA0B;AAMtD,IAAA,2BAAe,CAACC,YACdC,YAAYC,aAAaC,gBAAgB;EACvCC,eAAe;IACbC,QAAQC,uBAAeC;IACvBC,SAAS,CAAC,EAAEC,MAAMC,QAAO,MAAE;AACzB,aAAO;QAAEC,MAAM;UAAEC,QAAQC,iBAASC,aAAa;YAAEL;YAAMC;UAAQ,CAAA;QAAG;MAAE;IACtE;EACF,CAAA;EACAN,eAAe;IACbC,QAAQC,uBAAeS;IACvBP,SAAS,CAAC,EAAEQ,IAAIC,SAAQ,MAAE;AACxB,YAAM,EAAEC,MAAK,IAAKlB,QAAQmB,cAAcC,qBAAqBC,KAAK;AAClEH,YAAMD,SAASD,EAAAA,IAAMC;IACvB;EACF,CAAA;EACAb,eAAe;IACbC,QAAQiB,qBAAqBC;IAC7BC,QAAQ,CACNb,SAGGc,IAAIC,WAAWb,iBAASc,UAAUhB,KAAKiB,OAAO;IACnDpB,SAAS,OAAO,EAAEoB,SAASC,QAAQC,SAAQ,MAAE;AAC3C,YAAMC,OAAO,MAAMH,QAAQlB,QAAQsB,KAAI;AACvC,YAAMC,WAAWC,kBAAkBH,MAAM;QAAC;OAAU;AACpD,YAAM,EAAEI,OAAOC,IAAG,IAAYC,oBAAaR,MAAAA,EAAQS;QAC1CC,eAAQ,CAACC,OAAcH,oBAAaI,mBAAmBR,UAAUO,EAAAA,CAAAA,CAAAA;;QAEjEE,iBAAU,OAAO;UAAEP,OAAOJ,KAAKrB,QAAQiC,SAAS;UAAGP,KAAKL,KAAKrB,QAAQiC,SAAS;QAAE,EAAA;MAAA;AAEzFV,eAASW,OAAOC,OAAO,CAACC,QAAAA;AACtBC,UAAEC,OAAOF,KAAKb,SAASgB,KAAKC,MAAK,GAAIf,OAAOC,MAAMD,OAAOL,SAASC,IAAI;MACxE,CAAA;IACF;EACF,CAAA;CACD;",
6
+ "names": ["next", "A", "Option", "Capabilities", "CollaborationActions", "contributes", "createResolver", "Obj", "createDocAccessor", "getRangeFromCursor", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "MarkdownAction", "Create", "resolve", "name", "content", "data", "object", "Markdown", "makeDocument", "SetViewMode", "id", "viewMode", "state", "getCapability", "MarkdownCapabilities", "State", "CollaborationActions", "AcceptProposal", "filter", "Obj", "instanceOf", "Document", "subject", "anchor", "proposal", "text", "load", "accessor", "createDocAccessor", "start", "end", "fromNullable", "pipe", "flatMap", "at", "getRangeFromCursor", "getOrElse", "length", "handle", "change", "doc", "A", "splice", "path", "slice"]
7
+ }