@dxos/plugin-markdown 0.8.3-main.672df60 → 0.8.3-staging.0fa589b

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 (159) hide show
  1. package/dist/lib/browser/{MarkdownContainer-DGPA7SEG.mjs → MarkdownContainer-EFWQ6DHD.mjs} +231 -49
  2. package/dist/lib/browser/MarkdownContainer-EFWQ6DHD.mjs.map +7 -0
  3. package/dist/lib/browser/{MarkdownPreview-KQN2TGK6.mjs → MarkdownPreview-F4PYFW5L.mjs} +8 -8
  4. package/dist/lib/browser/MarkdownPreview-F4PYFW5L.mjs.map +7 -0
  5. package/dist/lib/browser/{anchor-sort-VS4OZVPP.mjs → anchor-sort-BMAN2ABT.mjs} +4 -4
  6. package/dist/lib/browser/anchor-sort-BMAN2ABT.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-serializer-V6RLEHVY.mjs → app-graph-serializer-EI6TEHRQ.mjs} +7 -5
  8. package/dist/lib/browser/app-graph-serializer-EI6TEHRQ.mjs.map +7 -0
  9. package/dist/lib/browser/{artifact-definition-5NAODQLG.mjs → artifact-definition-FQ2R6KPT.mjs} +6 -6
  10. package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-OTOPAFWC.mjs → chunk-354IBM5X.mjs} +7 -7
  12. package/dist/lib/browser/{chunk-C5RABVIX.mjs → chunk-D767LUGU.mjs} +7 -3
  13. package/dist/lib/browser/chunk-D767LUGU.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-77NGW7EO.mjs → chunk-LXSRQPEP.mjs} +9 -9
  15. package/dist/lib/browser/chunk-LXSRQPEP.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-ECSM56YC.mjs → chunk-N2D26K6W.mjs} +4 -5
  17. package/dist/lib/browser/chunk-N2D26K6W.mjs.map +7 -0
  18. package/dist/lib/browser/index.mjs +7 -8
  19. package/dist/lib/browser/index.mjs.map +3 -3
  20. package/dist/lib/browser/{intent-resolver-4GDYST4Y.mjs → intent-resolver-6ZOABX2J.mjs} +6 -7
  21. package/dist/lib/browser/intent-resolver-6ZOABX2J.mjs.map +7 -0
  22. package/dist/lib/browser/meta.json +1 -1
  23. package/dist/lib/browser/{react-surface-DM6B4UUJ.mjs → react-surface-4B5ELMEW.mjs} +14 -9
  24. package/dist/lib/browser/react-surface-4B5ELMEW.mjs.map +7 -0
  25. package/dist/lib/browser/{settings-W5CK4PXP.mjs → settings-PLH54VC7.mjs} +4 -4
  26. package/dist/lib/browser/settings-PLH54VC7.mjs.map +7 -0
  27. package/dist/lib/browser/types/index.mjs +1 -1
  28. package/dist/lib/node/{MarkdownContainer-BZK66EQD.cjs → MarkdownContainer-KYGUEZIL.cjs} +277 -95
  29. package/dist/lib/node/MarkdownContainer-KYGUEZIL.cjs.map +7 -0
  30. package/dist/lib/node/{MarkdownPreview-H7FFIWJH.cjs → MarkdownPreview-GCJJCXY6.cjs} +17 -17
  31. package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs.map +7 -0
  32. package/dist/lib/node/{anchor-sort-NHVF23EU.cjs → anchor-sort-V3T4SFFI.cjs} +12 -12
  33. package/dist/lib/node/anchor-sort-V3T4SFFI.cjs.map +7 -0
  34. package/dist/lib/node/{app-graph-serializer-CLALIYN3.cjs → app-graph-serializer-E6BXEDEL.cjs} +14 -12
  35. package/dist/lib/node/app-graph-serializer-E6BXEDEL.cjs.map +7 -0
  36. package/dist/lib/node/{artifact-definition-VEAHK7BX.cjs → artifact-definition-U27MH5SC.cjs} +16 -16
  37. package/dist/lib/node/artifact-definition-U27MH5SC.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-RQS4KBMG.cjs → chunk-3HHV4MM6.cjs} +6 -7
  39. package/dist/lib/node/chunk-3HHV4MM6.cjs.map +7 -0
  40. package/dist/lib/node/{chunk-G7RBJX22.cjs → chunk-CJLYFGPI.cjs} +12 -12
  41. package/dist/lib/node/chunk-CJLYFGPI.cjs.map +7 -0
  42. package/dist/lib/node/{chunk-BBDDZLQH.cjs → chunk-FU3XZZCO.cjs} +10 -10
  43. package/dist/lib/node/{chunk-ZDTL47I7.cjs → chunk-LQAC5HL7.cjs} +10 -6
  44. package/dist/lib/node/chunk-LQAC5HL7.cjs.map +7 -0
  45. package/dist/lib/node/index.cjs +26 -27
  46. package/dist/lib/node/index.cjs.map +3 -3
  47. package/dist/lib/node/{intent-resolver-AUZVK3NZ.cjs → intent-resolver-OEFLRNEJ.cjs} +14 -15
  48. package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs.map +7 -0
  49. package/dist/lib/node/meta.json +1 -1
  50. package/dist/lib/node/{react-surface-QBW4FFXF.cjs → react-surface-456HQ4KZ.cjs} +21 -16
  51. package/dist/lib/node/react-surface-456HQ4KZ.cjs.map +7 -0
  52. package/dist/lib/node/{settings-IRKU3WPM.cjs → settings-E3NUTXJ4.cjs} +7 -7
  53. package/dist/lib/node/settings-E3NUTXJ4.cjs.map +7 -0
  54. package/dist/lib/node/types/index.cjs +7 -7
  55. package/dist/lib/node/types/index.cjs.map +1 -1
  56. package/dist/lib/node-esm/{MarkdownContainer-2DYVQ6RC.mjs → MarkdownContainer-O3SGMH4G.mjs} +231 -49
  57. package/dist/lib/node-esm/MarkdownContainer-O3SGMH4G.mjs.map +7 -0
  58. package/dist/lib/node-esm/{MarkdownPreview-JUIXYYKF.mjs → MarkdownPreview-KFDRV4GC.mjs} +8 -8
  59. package/dist/lib/node-esm/MarkdownPreview-KFDRV4GC.mjs.map +7 -0
  60. package/dist/lib/node-esm/{anchor-sort-G2HLCYFK.mjs → anchor-sort-BXL7BE67.mjs} +4 -4
  61. package/dist/lib/node-esm/anchor-sort-BXL7BE67.mjs.map +7 -0
  62. package/dist/lib/node-esm/{app-graph-serializer-C3RNTQGM.mjs → app-graph-serializer-F7DGNF3G.mjs} +7 -5
  63. package/dist/lib/node-esm/app-graph-serializer-F7DGNF3G.mjs.map +7 -0
  64. package/dist/lib/node-esm/{artifact-definition-7TIJW2CO.mjs → artifact-definition-NQOHB6S5.mjs} +6 -6
  65. package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-TCFJNUAE.mjs → chunk-BWDDFDJY.mjs} +7 -3
  67. package/dist/lib/node-esm/chunk-BWDDFDJY.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-6RPARLIK.mjs → chunk-K26TX5V4.mjs} +9 -9
  69. package/dist/lib/node-esm/chunk-K26TX5V4.mjs.map +7 -0
  70. package/dist/lib/node-esm/{chunk-NCMPVEXO.mjs → chunk-T2Y2BT53.mjs} +4 -5
  71. package/dist/lib/node-esm/chunk-T2Y2BT53.mjs.map +7 -0
  72. package/dist/lib/node-esm/{chunk-KK7LP3UQ.mjs → chunk-YOABAQ7A.mjs} +7 -7
  73. package/dist/lib/node-esm/index.mjs +7 -8
  74. package/dist/lib/node-esm/index.mjs.map +3 -3
  75. package/dist/lib/node-esm/{intent-resolver-FTNXUNI2.mjs → intent-resolver-CLMSVF2K.mjs} +6 -7
  76. package/dist/lib/node-esm/intent-resolver-CLMSVF2K.mjs.map +7 -0
  77. package/dist/lib/node-esm/meta.json +1 -1
  78. package/dist/lib/node-esm/{react-surface-A4VAOQG6.mjs → react-surface-YHFOQTVO.mjs} +14 -9
  79. package/dist/lib/node-esm/react-surface-YHFOQTVO.mjs.map +7 -0
  80. package/dist/lib/node-esm/{settings-MK7D7LHQ.mjs → settings-SIY33P3F.mjs} +4 -4
  81. package/dist/lib/node-esm/settings-SIY33P3F.mjs.map +7 -0
  82. package/dist/lib/node-esm/types/index.mjs +1 -1
  83. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  86. package/dist/types/src/components/MarkdownContainer.d.ts +1 -1
  87. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  88. package/dist/types/src/components/MarkdownContainer.stories.d.ts +9 -0
  89. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -0
  90. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +4 -3
  91. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  92. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +3 -9
  93. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +1 -1
  94. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  95. package/dist/types/src/extensions.d.ts +3 -2
  96. package/dist/types/src/extensions.d.ts.map +1 -1
  97. package/dist/types/src/translations.d.ts +52 -2
  98. package/dist/types/src/translations.d.ts.map +1 -1
  99. package/dist/types/src/types/schema.d.ts +11 -14
  100. package/dist/types/src/types/schema.d.ts.map +1 -1
  101. package/dist/types/src/types/types.d.ts +5 -6
  102. package/dist/types/src/types/types.d.ts.map +1 -1
  103. package/dist/types/src/util.d.ts.map +1 -1
  104. package/package.json +38 -38
  105. package/src/MarkdownPlugin.tsx +3 -5
  106. package/src/capabilities/anchor-sort.ts +2 -2
  107. package/src/capabilities/app-graph-serializer.ts +5 -3
  108. package/src/capabilities/artifact-definition.ts +3 -3
  109. package/src/capabilities/intent-resolver.ts +4 -5
  110. package/src/capabilities/react-surface.tsx +5 -5
  111. package/src/capabilities/settings.ts +2 -2
  112. package/src/components/MarkdownContainer.stories.tsx +103 -0
  113. package/src/components/MarkdownContainer.tsx +149 -52
  114. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +1 -1
  115. package/src/components/MarkdownEditor/MarkdownEditor.tsx +215 -139
  116. package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +8 -7
  117. package/src/components/MarkdownPreview/MarkdownPreview.tsx +5 -5
  118. package/src/components/Suggestions.stories.tsx +7 -9
  119. package/src/components/Toolbar.stories.tsx +3 -3
  120. package/src/extensions.tsx +7 -1
  121. package/src/translations.ts +6 -1
  122. package/src/types/schema.ts +2 -3
  123. package/src/util.tsx +5 -7
  124. package/dist/lib/browser/MarkdownContainer-DGPA7SEG.mjs.map +0 -7
  125. package/dist/lib/browser/MarkdownPreview-KQN2TGK6.mjs.map +0 -7
  126. package/dist/lib/browser/anchor-sort-VS4OZVPP.mjs.map +0 -7
  127. package/dist/lib/browser/app-graph-serializer-V6RLEHVY.mjs.map +0 -7
  128. package/dist/lib/browser/artifact-definition-5NAODQLG.mjs.map +0 -7
  129. package/dist/lib/browser/chunk-77NGW7EO.mjs.map +0 -7
  130. package/dist/lib/browser/chunk-C5RABVIX.mjs.map +0 -7
  131. package/dist/lib/browser/chunk-ECSM56YC.mjs.map +0 -7
  132. package/dist/lib/browser/intent-resolver-4GDYST4Y.mjs.map +0 -7
  133. package/dist/lib/browser/react-surface-DM6B4UUJ.mjs.map +0 -7
  134. package/dist/lib/browser/settings-W5CK4PXP.mjs.map +0 -7
  135. package/dist/lib/node/MarkdownContainer-BZK66EQD.cjs.map +0 -7
  136. package/dist/lib/node/MarkdownPreview-H7FFIWJH.cjs.map +0 -7
  137. package/dist/lib/node/anchor-sort-NHVF23EU.cjs.map +0 -7
  138. package/dist/lib/node/app-graph-serializer-CLALIYN3.cjs.map +0 -7
  139. package/dist/lib/node/artifact-definition-VEAHK7BX.cjs.map +0 -7
  140. package/dist/lib/node/chunk-G7RBJX22.cjs.map +0 -7
  141. package/dist/lib/node/chunk-RQS4KBMG.cjs.map +0 -7
  142. package/dist/lib/node/chunk-ZDTL47I7.cjs.map +0 -7
  143. package/dist/lib/node/intent-resolver-AUZVK3NZ.cjs.map +0 -7
  144. package/dist/lib/node/react-surface-QBW4FFXF.cjs.map +0 -7
  145. package/dist/lib/node/settings-IRKU3WPM.cjs.map +0 -7
  146. package/dist/lib/node-esm/MarkdownContainer-2DYVQ6RC.mjs.map +0 -7
  147. package/dist/lib/node-esm/MarkdownPreview-JUIXYYKF.mjs.map +0 -7
  148. package/dist/lib/node-esm/anchor-sort-G2HLCYFK.mjs.map +0 -7
  149. package/dist/lib/node-esm/app-graph-serializer-C3RNTQGM.mjs.map +0 -7
  150. package/dist/lib/node-esm/artifact-definition-7TIJW2CO.mjs.map +0 -7
  151. package/dist/lib/node-esm/chunk-6RPARLIK.mjs.map +0 -7
  152. package/dist/lib/node-esm/chunk-NCMPVEXO.mjs.map +0 -7
  153. package/dist/lib/node-esm/chunk-TCFJNUAE.mjs.map +0 -7
  154. package/dist/lib/node-esm/intent-resolver-FTNXUNI2.mjs.map +0 -7
  155. package/dist/lib/node-esm/react-surface-A4VAOQG6.mjs.map +0 -7
  156. package/dist/lib/node-esm/settings-MK7D7LHQ.mjs.map +0 -7
  157. /package/dist/lib/browser/{chunk-OTOPAFWC.mjs.map → chunk-354IBM5X.mjs.map} +0 -0
  158. /package/dist/lib/node/{chunk-BBDDZLQH.cjs.map → chunk-FU3XZZCO.cjs.map} +0 -0
  159. /package/dist/lib/node-esm/{chunk-KK7LP3UQ.mjs.map → chunk-YOABAQ7A.mjs.map} +0 -0
@@ -1,18 +1,20 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  translations_default
4
- } from "./chunk-TCFJNUAE.mjs";
4
+ } from "./chunk-BWDDFDJY.mjs";
5
5
  import {
6
6
  DocumentType,
7
7
  MarkdownAction
8
- } from "./chunk-NCMPVEXO.mjs";
8
+ } from "./chunk-T2Y2BT53.mjs";
9
9
  import "./chunk-RX63ZNML.mjs";
10
10
 
11
11
  // packages/plugins/plugin-markdown/src/capabilities/app-graph-serializer.ts
12
12
  import { pipe } from "effect";
13
13
  import { contributes, Capabilities, chain, createIntent } from "@dxos/app-framework";
14
- import { SpaceAction, CollectionType } from "@dxos/plugin-space/types";
14
+ import { Obj, Type } from "@dxos/echo";
15
+ import { SpaceAction } from "@dxos/plugin-space/types";
15
16
  import { isSpace } from "@dxos/react-client/echo";
17
+ import { DataType } from "@dxos/schema";
16
18
  var app_graph_serializer_default = (context) => contributes(Capabilities.AppGraphSerializer, [
17
19
  {
18
20
  inputType: DocumentType.typename,
@@ -29,7 +31,7 @@ var app_graph_serializer_default = (context) => contributes(Capabilities.AppGrap
29
31
  },
30
32
  deserialize: async (data, ancestors) => {
31
33
  const space = ancestors.find(isSpace);
32
- const target = ancestors.findLast((ancestor) => ancestor instanceof CollectionType) ?? space?.properties[CollectionType.typename]?.target;
34
+ const target = ancestors.findLast((ancestor) => Obj.instanceOf(DataType.Collection, ancestor)) ?? space?.properties[Type.getTypename(DataType.Collection)]?.target;
33
35
  if (!space || !target) {
34
36
  return;
35
37
  }
@@ -48,4 +50,4 @@ var app_graph_serializer_default = (context) => contributes(Capabilities.AppGrap
48
50
  export {
49
51
  app_graph_serializer_default as default
50
52
  };
51
- //# sourceMappingURL=app-graph-serializer-C3RNTQGM.mjs.map
53
+ //# sourceMappingURL=app-graph-serializer-F7DGNF3G.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-serializer.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { pipe } from 'effect';\n\nimport { contributes, Capabilities, type PluginContext, chain, createIntent } from '@dxos/app-framework';\nimport { Obj, Type } from '@dxos/echo';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { isSpace } from '@dxos/react-client/echo';\nimport { DataType } from '@dxos/schema';\n\nimport translations from '../translations';\nimport { MarkdownAction, DocumentType } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphSerializer, [\n {\n inputType: DocumentType.typename,\n outputType: 'text/markdown',\n // Reconcile with metadata serializers.\n serialize: async (node) => {\n const doc = node.data;\n const content = await doc.content.load();\n return {\n name:\n doc.name || doc.fallbackName || translations[0]['en-US'][DocumentType.typename]['object name placeholder'],\n data: content.content,\n type: 'text/markdown',\n };\n },\n deserialize: async (data, ancestors) => {\n const space = ancestors.find(isSpace);\n const target =\n ancestors.findLast((ancestor) => Obj.instanceOf(DataType.Collection, ancestor)) ??\n space?.properties[Type.getTypename(DataType.Collection)]?.target;\n if (!space || !target) {\n return;\n }\n\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const result = await dispatch(\n pipe(\n createIntent(MarkdownAction.Create, { spaceId: space.id, name: data.name, content: data.data }),\n chain(SpaceAction.AddObject, { target }),\n ),\n );\n\n return result.data?.object;\n },\n },\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;AAIA,SAASA,YAAY;AAErB,SAASC,aAAaC,cAAkCC,OAAOC,oBAAoB;AACnF,SAASC,KAAKC,YAAY;AAC1B,SAASC,mBAAmB;AAC5B,SAASC,eAAe;AACxB,SAASC,gBAAgB;AAKzB,IAAA,+BAAe,CAACC,YACdC,YAAYC,aAAaC,oBAAoB;EAC3C;IACEC,WAAWC,aAAaC;IACxBC,YAAY;;IAEZC,WAAW,OAAOC,SAAAA;AAChB,YAAMC,MAAMD,KAAKE;AACjB,YAAMC,UAAU,MAAMF,IAAIE,QAAQC,KAAI;AACtC,aAAO;QACLC,MACEJ,IAAII,QAAQJ,IAAIK,gBAAgBC,qBAAa,CAAA,EAAG,OAAA,EAASX,aAAaC,QAAQ,EAAE,yBAAA;QAClFK,MAAMC,QAAQA;QACdK,MAAM;MACR;IACF;IACAC,aAAa,OAAOP,MAAMQ,cAAAA;AACxB,YAAMC,QAAQD,UAAUE,KAAKC,OAAAA;AAC7B,YAAMC,SACJJ,UAAUK,SAAS,CAACC,aAAaC,IAAIC,WAAWC,SAASC,YAAYJ,QAAAA,CAAAA,KACrEL,OAAOU,WAAWC,KAAKC,YAAYJ,SAASC,UAAU,CAAA,GAAIN;AAC5D,UAAI,CAACH,SAAS,CAACG,QAAQ;AACrB;MACF;AAEA,YAAM,EAAEU,iBAAiBC,SAAQ,IAAKlC,QAAQmC,cAAcjC,aAAakC,gBAAgB;AACzF,YAAMC,SAAS,MAAMH,SACnBI,KACEC,aAAaC,eAAeC,QAAQ;QAAEC,SAAStB,MAAMuB;QAAI7B,MAAMH,KAAKG;QAAMF,SAASD,KAAKA;MAAK,CAAA,GAC7FiC,MAAMC,YAAYC,WAAW;QAAEvB;MAAO,CAAA,CAAA,CAAA;AAI1C,aAAOc,OAAO1B,MAAMoC;IACtB;EACF;CACD;",
6
+ "names": ["pipe", "contributes", "Capabilities", "chain", "createIntent", "Obj", "Type", "SpaceAction", "isSpace", "DataType", "context", "contributes", "Capabilities", "AppGraphSerializer", "inputType", "DocumentType", "typename", "outputType", "serialize", "node", "doc", "data", "content", "load", "name", "fallbackName", "translations", "type", "deserialize", "ancestors", "space", "find", "isSpace", "target", "findLast", "ancestor", "Obj", "instanceOf", "DataType", "Collection", "properties", "Type", "getTypename", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "result", "pipe", "createIntent", "MarkdownAction", "Create", "spaceId", "id", "chain", "SpaceAction", "AddObject", "object"]
7
+ }
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  DocumentType,
4
4
  MarkdownAction
5
- } from "./chunk-NCMPVEXO.mjs";
5
+ } from "./chunk-T2Y2BT53.mjs";
6
6
  import {
7
7
  meta
8
8
  } from "./chunk-RX63ZNML.mjs";
@@ -13,7 +13,7 @@ import { createTool, ToolResult } from "@dxos/ai";
13
13
  import { Capabilities, chain, contributes, createIntent } from "@dxos/app-framework";
14
14
  import { ArtifactId, defineArtifact } from "@dxos/artifact";
15
15
  import { createArtifactElement } from "@dxos/assistant";
16
- import { isInstanceOf } from "@dxos/echo-schema";
16
+ import { Obj } from "@dxos/echo";
17
17
  import { invariant, assertArgument } from "@dxos/invariant";
18
18
  import { SpaceAction } from "@dxos/plugin-space/types";
19
19
  import { Filter, fullyQualifiedId } from "@dxos/react-client/echo";
@@ -92,12 +92,12 @@ var artifact_definition_default = () => {
92
92
  const space = extensions.space;
93
93
  const { objects: documents } = await space.db.query(Filter.type(DocumentType)).run();
94
94
  const documentInfo = documents.map((doc) => {
95
- invariant(isInstanceOf(DocumentType, doc), void 0, {
95
+ invariant(Obj.instanceOf(DocumentType, doc), void 0, {
96
96
  F: __dxlog_file,
97
97
  L: 81,
98
98
  S: void 0,
99
99
  A: [
100
- "isInstanceOf(DocumentType, doc)",
100
+ "Obj.instanceOf(DocumentType, doc)",
101
101
  ""
102
102
  ]
103
103
  });
@@ -127,7 +127,7 @@ var artifact_definition_default = () => {
127
127
  ]
128
128
  });
129
129
  const document = await extensions.space.db.query(Filter.ids(ArtifactId.toDXN(id).toString())).first();
130
- assertArgument(isInstanceOf(DocumentType, document), "Invalid type");
130
+ assertArgument(Obj.instanceOf(DocumentType, document), "Invalid type");
131
131
  const { content } = await document.content?.load();
132
132
  return ToolResult.Success({
133
133
  id: fullyQualifiedId(document),
@@ -143,4 +143,4 @@ var artifact_definition_default = () => {
143
143
  export {
144
144
  artifact_definition_default as default
145
145
  };
146
- //# sourceMappingURL=artifact-definition-7TIJW2CO.mjs.map
146
+ //# sourceMappingURL=artifact-definition-NQOHB6S5.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/artifact-definition.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { pipe, Schema } from 'effect';\n\nimport { createTool, ToolResult } from '@dxos/ai';\nimport { Capabilities, chain, contributes, createIntent, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { ArtifactId, defineArtifact } from '@dxos/artifact';\nimport { createArtifactElement } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { invariant, assertArgument } from '@dxos/invariant';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Filter, fullyQualifiedId, type Space } from '@dxos/react-client/echo';\n\nimport { meta } from '../meta';\nimport { DocumentType, MarkdownAction } from '../types';\n\n// TODO(burdon): Factor out.\ndeclare global {\n interface ToolContextExtensions {\n space?: Space;\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\nexport default () => {\n const definition = defineArtifact({\n id: `artifact:${meta.id}`,\n name: meta.name,\n instructions: `\n - The markdown plugin allows you to work with text documents in the current space.\n - Use these tools to interact with documents, including listing available documents and retrieving their content.\n - Documents are stored in Markdown format.\n `,\n schema: DocumentType,\n tools: [\n createTool(meta.id, {\n name: 'create',\n description: 'Create a new markdown document',\n caption: 'Creating document...',\n schema: Schema.Struct({\n name: Schema.optional(Schema.String).annotations({\n description: 'Optional name for the document.',\n }),\n content: Schema.String.annotations({\n description: 'The content of the document.',\n }),\n }),\n execute: async ({ name, content }, { extensions }) => {\n invariant(extensions?.space, 'No space');\n invariant(extensions?.dispatch, 'No intent dispatcher');\n\n const intent = pipe(\n createIntent(MarkdownAction.Create, {\n spaceId: extensions.space.id,\n name,\n content,\n }),\n chain(SpaceAction.AddObject, { target: extensions.space }),\n );\n\n const { data, error } = await extensions.dispatch(intent);\n if (!data || error) {\n return ToolResult.Error(error?.message ?? 'Failed to create document');\n }\n\n return ToolResult.Success(createArtifactElement(data.id));\n },\n }),\n createTool(meta.id, {\n name: 'list',\n description: 'List all markdown documents in the current space.',\n caption: 'Listing markdown documents...',\n schema: Schema.Struct({}),\n execute: async (_input, { extensions }) => {\n invariant(extensions?.space, 'No space');\n const space = extensions.space;\n const { objects: documents } = await space.db.query(Filter.type(DocumentType)).run();\n const documentInfo = documents.map((doc) => {\n invariant(Obj.instanceOf(DocumentType, doc));\n return {\n id: fullyQualifiedId(doc),\n name: doc.name || doc.fallbackName || 'Unnamed Document',\n // TODO(ZaymonFC): Include updatedAt?\n };\n });\n\n return ToolResult.Success(documentInfo);\n },\n }),\n createTool(meta.id, {\n name: 'inspect',\n description: 'Read the content of a markdown document.',\n caption: 'Inspecting markdown document...',\n schema: Schema.Struct({\n id: ArtifactId,\n }),\n execute: async ({ id }, { extensions }) => {\n invariant(extensions?.space, 'No space');\n const document = await extensions.space.db.query(Filter.ids(ArtifactId.toDXN(id).toString())).first();\n assertArgument(Obj.instanceOf(DocumentType, document), 'Invalid type');\n\n const { content } = await document.content?.load();\n return ToolResult.Success({\n id: fullyQualifiedId(document),\n name: document.name || document.fallbackName || 'Unnamed Document',\n content,\n });\n },\n }),\n ],\n });\n\n return contributes(Capabilities.ArtifactDefinition, definition);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["pipe", "Schema", "createTool", "ToolResult", "Capabilities", "chain", "contributes", "createIntent", "ArtifactId", "defineArtifact", "createArtifactElement", "Obj", "invariant", "assertArgument", "SpaceAction", "Filter", "fullyQualifiedId", "definition", "defineArtifact", "id", "meta", "name", "instructions", "schema", "DocumentType", "tools", "createTool", "description", "caption", "Schema", "Struct", "optional", "String", "annotations", "content", "execute", "extensions", "invariant", "space", "dispatch", "intent", "pipe", "createIntent", "MarkdownAction", "Create", "spaceId", "chain", "SpaceAction", "AddObject", "target", "data", "error", "ToolResult", "Error", "message", "Success", "createArtifactElement", "_input", "objects", "documents", "db", "query", "Filter", "type", "run", "documentInfo", "map", "doc", "Obj", "instanceOf", "fullyQualifiedId", "fallbackName", "ArtifactId", "document", "ids", "toDXN", "toString", "first", "assertArgument", "load", "contributes", "Capabilities", "ArtifactDefinition"]
7
+ }
@@ -1,17 +1,21 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  DocumentType
4
- } from "./chunk-NCMPVEXO.mjs";
4
+ } from "./chunk-T2Y2BT53.mjs";
5
5
  import {
6
6
  MARKDOWN_PLUGIN
7
7
  } from "./chunk-RX63ZNML.mjs";
8
8
 
9
9
  // packages/plugins/plugin-markdown/src/translations.ts
10
+ import { Type } from "@dxos/echo";
10
11
  var translations_default = [
11
12
  {
12
13
  "en-US": {
13
- [DocumentType.typename]: {
14
+ [Type.getTypename(DocumentType)]: {
14
15
  "typename label": "Document",
16
+ "typename label_zero": "Documents",
17
+ "typename label_one": "Document",
18
+ "typename label_other": "Documents",
15
19
  "object name placeholder": "New document"
16
20
  },
17
21
  [MARKDOWN_PLUGIN]: {
@@ -45,4 +49,4 @@ var translations_default = [
45
49
  export {
46
50
  translations_default
47
51
  };
48
- //# sourceMappingURL=chunk-TCFJNUAE.mjs.map
52
+ //# sourceMappingURL=chunk-BWDDFDJY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/translations.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Type } from '@dxos/echo';\n\nimport { MARKDOWN_PLUGIN } from './meta';\nimport { DocumentType } from './types';\n\nexport default [\n {\n 'en-US': {\n [Type.getTypename(DocumentType)]: {\n 'typename label': 'Document',\n 'typename label_zero': 'Documents',\n 'typename label_one': 'Document',\n 'typename label_other': 'Documents',\n 'object name placeholder': 'New document',\n },\n [MARKDOWN_PLUGIN]: {\n 'plugin name': 'Editor',\n 'choose markdown from space dialog title': 'Choose one or more documents to add',\n // TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)\n 'empty choose markdown from space message': 'None available; try creating a new one instead?',\n 'chooser done label': 'Add selected',\n 'editor placeholder': '',\n 'editor input mode label': 'Editor input mode',\n 'select editor input mode placeholder': 'Select editor input mode…',\n 'settings editor input mode default label': 'Default',\n 'settings editor input mode vim label': 'Vim',\n 'settings editor input mode vscode label': 'VS Code',\n 'settings toolbar label': 'Show toolbar',\n 'settings numbered headings label': 'Numbered headings',\n 'settings folding label': 'Folding',\n 'settings experimental label': 'Enable experimental features',\n 'settings debug label': 'Enable debugging features',\n 'settings debug placeholder': 'Typewriter script...',\n 'toggle view mode label': 'Toggle read-only',\n 'default view mode label': 'Default view mode',\n 'upload image label': 'Upload image',\n 'fallback title': 'Untitled',\n 'navigate to document label': 'Open document',\n },\n },\n },\n];\n"],
5
+ "mappings": ";;;;;;;;;AAIA,SAASA,YAAY;AAKrB,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACC,KAAKC,YAAYC,YAAAA,CAAAA,GAAgB;QAChC,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;MAC7B;MACA,CAACC,eAAAA,GAAkB;QACjB,eAAe;QACf,2CAA2C;;QAE3C,4CAA4C;QAC5C,sBAAsB;QACtB,sBAAsB;QACtB,2BAA2B;QAC3B,wCAAwC;QACxC,4CAA4C;QAC5C,wCAAwC;QACxC,2CAA2C;QAC3C,0BAA0B;QAC1B,oCAAoC;QACpC,0BAA0B;QAC1B,+BAA+B;QAC/B,wBAAwB;QACxB,8BAA8B;QAC9B,0BAA0B;QAC1B,2BAA2B;QAC3B,sBAAsB;QACtB,kBAAkB;QAClB,8BAA8B;MAChC;IACF;EACF;;",
6
+ "names": ["Type", "Type", "getTypename", "DocumentType", "MARKDOWN_PLUGIN"]
7
+ }
@@ -1,13 +1,13 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  DocumentType
4
- } from "./chunk-NCMPVEXO.mjs";
4
+ } from "./chunk-T2Y2BT53.mjs";
5
5
 
6
6
  // packages/plugins/plugin-markdown/src/util.tsx
7
7
  import { debounce } from "@dxos/async";
8
- import { live, createObject, isEchoObject, loadObjectReferences, Ref } from "@dxos/react-client/echo";
8
+ import { Obj, Ref } from "@dxos/echo";
9
9
  import { DataType } from "@dxos/schema";
10
- var isMarkdownProperties = (data) => isEchoObject(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
10
+ var isMarkdownProperties = (data) => Obj.isObject(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
11
11
  var nonTitleChars = /[^\w ]/g;
12
12
  var getFallbackName = (content) => {
13
13
  return content.substring(0, 31).split("\n")[0].replaceAll(nonTitleChars, "").trim();
@@ -23,22 +23,22 @@ var setFallbackName = debounce((doc, content) => {
23
23
  }, 200);
24
24
  var serializer = {
25
25
  serialize: async ({ object }) => {
26
- const content = await loadObjectReferences(object, (doc) => doc.content);
26
+ const { content } = await object.content.load();
27
27
  return JSON.stringify({
28
28
  name: object.name,
29
29
  fallbackName: object.fallbackName,
30
- content: content.target?.content
30
+ content
31
31
  });
32
32
  },
33
33
  deserialize: async ({ content: serialized }) => {
34
34
  const { name, fallbackName, content } = JSON.parse(serialized);
35
- return createObject(live(DocumentType, {
35
+ return Obj.make(DocumentType, {
36
36
  name,
37
37
  fallbackName,
38
- content: Ref.make(live(DataType.Text, {
38
+ content: Ref.make(Obj.make(DataType.Text, {
39
39
  content
40
40
  }))
41
- }));
41
+ });
42
42
  }
43
43
  };
44
44
 
@@ -49,4 +49,4 @@ export {
49
49
  setFallbackName,
50
50
  serializer
51
51
  };
52
- //# sourceMappingURL=chunk-6RPARLIK.mjs.map
52
+ //# sourceMappingURL=chunk-K26TX5V4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { debounce } from '@dxos/async';\nimport { Obj, Ref } from '@dxos/echo';\nimport { type TypedObjectSerializer } from '@dxos/plugin-space/types';\nimport { DataType } from '@dxos/schema';\n\nimport { DocumentType, type MarkdownProperties } from './types';\n\nexport const isMarkdownProperties = (data: unknown): data is MarkdownProperties =>\n (Obj.isObject(data) as boolean)\n ? true\n : data && typeof data === 'object'\n ? 'title' in data && typeof data.title === 'string'\n : false;\n\nconst nonTitleChars = /[^\\w ]/g;\n\nexport const getFallbackName = (content: string) => {\n return content.substring(0, 31).split('\\n')[0].replaceAll(nonTitleChars, '').trim();\n};\n\nexport const getAbstract = (content: string) => {\n return content.substring(0, 128).split('\\n')[0].replaceAll(nonTitleChars, '').trim();\n};\n\nexport const setFallbackName = debounce((doc: DocumentType, content: string) => {\n const name = getFallbackName(content);\n if (doc.fallbackName !== name) {\n doc.fallbackName = name;\n }\n}, 200);\n\nexport const serializer: TypedObjectSerializer<DocumentType> = {\n serialize: async ({ object }): Promise<string> => {\n const { content } = await object.content.load();\n return JSON.stringify({ name: object.name, fallbackName: object.fallbackName, content });\n },\n\n deserialize: async ({ content: serialized }) => {\n const { name, fallbackName, content } = JSON.parse(serialized);\n return Obj.make(DocumentType, { name, fallbackName, content: Ref.make(Obj.make(DataType.Text, { content })) });\n },\n};\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,gBAAgB;AACzB,SAASC,KAAKC,WAAW;AAEzB,SAASC,gBAAgB;AAIlB,IAAMC,uBAAuB,CAACC,SAClCC,IAAIC,SAASF,IAAAA,IACV,OACAA,QAAQ,OAAOA,SAAS,WACtB,WAAWA,QAAQ,OAAOA,KAAKG,UAAU,WACzC;AAER,IAAMC,gBAAgB;AAEf,IAAMC,kBAAkB,CAACC,YAAAA;AAC9B,SAAOA,QAAQC,UAAU,GAAG,EAAA,EAAIC,MAAM,IAAA,EAAM,CAAA,EAAGC,WAAWL,eAAe,EAAA,EAAIM,KAAI;AACnF;AAEO,IAAMC,cAAc,CAACL,YAAAA;AAC1B,SAAOA,QAAQC,UAAU,GAAG,GAAA,EAAKC,MAAM,IAAA,EAAM,CAAA,EAAGC,WAAWL,eAAe,EAAA,EAAIM,KAAI;AACpF;AAEO,IAAME,kBAAkBC,SAAS,CAACC,KAAmBR,YAAAA;AAC1D,QAAMS,OAAOV,gBAAgBC,OAAAA;AAC7B,MAAIQ,IAAIE,iBAAiBD,MAAM;AAC7BD,QAAIE,eAAeD;EACrB;AACF,GAAG,GAAA;AAEI,IAAME,aAAkD;EAC7DC,WAAW,OAAO,EAAEC,OAAM,MAAE;AAC1B,UAAM,EAAEb,QAAO,IAAK,MAAMa,OAAOb,QAAQc,KAAI;AAC7C,WAAOC,KAAKC,UAAU;MAAEP,MAAMI,OAAOJ;MAAMC,cAAcG,OAAOH;MAAcV;IAAQ,CAAA;EACxF;EAEAiB,aAAa,OAAO,EAAEjB,SAASkB,WAAU,MAAE;AACzC,UAAM,EAAET,MAAMC,cAAcV,QAAO,IAAKe,KAAKI,MAAMD,UAAAA;AACnD,WAAOvB,IAAIyB,KAAKC,cAAc;MAAEZ;MAAMC;MAAcV,SAASsB,IAAIF,KAAKzB,IAAIyB,KAAKG,SAASC,MAAM;QAAExB;MAAQ,CAAA,CAAA;IAAI,CAAA;EAC9G;AACF;",
6
+ "names": ["debounce", "Obj", "Ref", "DataType", "isMarkdownProperties", "data", "Obj", "isObject", "title", "nonTitleChars", "getFallbackName", "content", "substring", "split", "replaceAll", "trim", "getAbstract", "setFallbackName", "debounce", "doc", "name", "fallbackName", "serializer", "serialize", "object", "load", "JSON", "stringify", "deserialize", "serialized", "parse", "make", "DocumentType", "Ref", "DataType", "Text"]
7
+ }
@@ -5,9 +5,8 @@ import {
5
5
 
6
6
  // packages/plugins/plugin-markdown/src/types/schema.ts
7
7
  import { Schema } from "effect";
8
- import { Type, Ref } from "@dxos/echo";
8
+ import { Obj, Ref, Type } from "@dxos/echo";
9
9
  import { LabelAnnotation } from "@dxos/echo-schema";
10
- import { live } from "@dxos/live-object";
11
10
  import { DataType } from "@dxos/schema";
12
11
  var DocumentSchema = Schema.Struct({
13
12
  name: Schema.optional(Schema.String),
@@ -21,9 +20,9 @@ var DocumentType = DocumentSchema.pipe(Type.Obj({
21
20
  typename: "dxos.org/type/Document",
22
21
  version: "0.1.0"
23
22
  }));
24
- var createDocument = ({ name, content }) => live(DocumentType, {
23
+ var createDocument = ({ name, content }) => Obj.make(DocumentType, {
25
24
  name,
26
- content: Ref.make(live(DataType.Text, {
25
+ content: Ref.make(Obj.make(DataType.Text, {
27
26
  content
28
27
  }))
29
28
  });
@@ -78,4 +77,4 @@ export {
78
77
  MarkdownSettingsSchema,
79
78
  MarkdownAction
80
79
  };
81
- //# sourceMappingURL=chunk-NCMPVEXO.mjs.map
80
+ //# sourceMappingURL=chunk-T2Y2BT53.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Obj, Ref, Type } from '@dxos/echo';\nimport { LabelAnnotation } from '@dxos/echo-schema';\nimport { DataType } from '@dxos/schema';\n\nexport const DocumentSchema = Schema.Struct({\n name: Schema.optional(Schema.String),\n fallbackName: Schema.optional(Schema.String),\n content: Type.Ref(DataType.Text),\n}).pipe(LabelAnnotation.set(['name', 'fallbackName']));\n\nexport const DocumentType = DocumentSchema.pipe(\n Type.Obj({\n typename: 'dxos.org/type/Document',\n version: '0.1.0',\n }),\n);\nexport type DocumentType = Schema.Schema.Type<typeof DocumentType>;\n\n// TODO(burdon): Replace when defaults are supported.\nexport const createDocument = ({ name, content }: { name: string; content: string }) =>\n Obj.make(DocumentType, { name, content: Ref.make(Obj.make(DataType.Text, { content })) });\n\n/**\n * Checks if an object conforms to the interface needed to render an editor.\n */\n// TODO(burdon): Normalize types (from FilesPlugin).\nexport const isEditorModel = (data: any): data is { id: string; text: string } =>\n data &&\n typeof data === 'object' &&\n 'id' in data &&\n typeof data.id === 'string' &&\n 'text' in data &&\n typeof data.text === 'string';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\n// TODO(wittjosiah): This pulls in UI code into the types entrypoint.\nimport { type Extension, EditorInputMode, EditorViewMode } from '@dxos/react-ui-editor';\n\nimport { DocumentType } from './schema';\nimport { MARKDOWN_PLUGIN } from '../meta';\n\nconst MARKDOWN_ACTION = `${MARKDOWN_PLUGIN}/action`;\n\nexport namespace MarkdownAction {\n export class Create extends Schema.TaggedClass<Create>()(MARKDOWN_ACTION, {\n input: Schema.Struct({\n spaceId: Type.SpaceId,\n name: Schema.optional(Schema.String),\n content: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: DocumentType,\n }),\n }) {}\n\n export class SetViewMode extends Schema.TaggedClass<SetViewMode>()(`${MARKDOWN_ACTION}/set-view-mode`, {\n input: Schema.Struct({\n id: Schema.String,\n viewMode: EditorViewMode,\n }),\n output: Schema.Void,\n }) {}\n}\n\nexport type MarkdownProperties = Record<string, any>;\n\n// TODO(burdon): Async.\nexport type MarkdownExtensionProvider = (props: { document?: DocumentType }) => Extension | undefined;\n\nexport type OnChange = (text: string) => void;\n\nexport type MarkdownPluginState = {\n // Codemirror extensions provided by other plugins.\n extensionProviders?: MarkdownExtensionProvider[];\n\n // TODO(burdon): Extend view mode per document to include scroll position, etc.\n // View mode per document.\n viewMode: Record<string, EditorViewMode>;\n};\n\nexport const MarkdownSettingsSchema = Schema.mutable(\n Schema.Struct({\n defaultViewMode: EditorViewMode,\n editorInputMode: Schema.optional(EditorInputMode),\n experimental: Schema.optional(Schema.Boolean),\n debug: Schema.optional(Schema.Boolean),\n toolbar: Schema.optional(Schema.Boolean),\n typewriter: Schema.optional(Schema.String),\n // TODO(burdon): Per document settings.\n numberedHeadings: Schema.optional(Schema.Boolean),\n folding: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport type MarkdownSettingsProps = Schema.Schema.Type<typeof MarkdownSettingsSchema>;\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,KAAKC,KAAKC,YAAY;AAC/B,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AAElB,IAAMC,iBAAiBC,OAAOC,OAAO;EAC1CC,MAAMF,OAAOG,SAASH,OAAOI,MAAM;EACnCC,cAAcL,OAAOG,SAASH,OAAOI,MAAM;EAC3CE,SAASC,KAAKC,IAAIC,SAASC,IAAI;AACjC,CAAA,EAAGC,KAAKC,gBAAgBC,IAAI;EAAC;EAAQ;CAAe,CAAA;AAE7C,IAAMC,eAAef,eAAeY,KACzCJ,KAAKQ,IAAI;EACPC,UAAU;EACVC,SAAS;AACX,CAAA,CAAA;AAKK,IAAMC,iBAAiB,CAAC,EAAEhB,MAAMI,QAAO,MAC5CS,IAAII,KAAKL,cAAc;EAAEZ;EAAMI,SAASE,IAAIW,KAAKJ,IAAII,KAAKV,SAASC,MAAM;IAAEJ;EAAQ,CAAA,CAAA;AAAI,CAAA;AAMlF,IAAMc,gBAAgB,CAACC,SAC5BA,QACA,OAAOA,SAAS,YAChB,QAAQA,QACR,OAAOA,KAAKC,OAAO,YACnB,UAAUD,QACV,OAAOA,KAAKE,SAAS;;;AClCvB,SAASC,UAAAA,eAAc;AAEvB,SAASC,QAAAA,aAAY;AAErB,SAAyBC,iBAAiBC,sBAAsB;AAKhE,IAAMC,kBAAkB,GAAGC,eAAAA;UAEVC,iBAAAA;EACR,MAAMC,eAAeC,QAAOC,YAAW,EAAWL,iBAAiB;IACxEM,OAAOF,QAAOG,OAAO;MACnBC,SAASC,MAAKC;MACdC,MAAMP,QAAOQ,SAASR,QAAOS,MAAM;MACnCC,SAASV,QAAOQ,SAASR,QAAOS,MAAM;IACxC,CAAA;IACAE,QAAQX,QAAOG,OAAO;MACpBS,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;kBATSd,SAAAA;EAWN,MAAMe,oBAAoBd,QAAOC,YAAW,EAAgB,GAAGL,eAAAA,kBAAiC;IACrGM,OAAOF,QAAOG,OAAO;MACnBY,IAAIf,QAAOS;MACXO,UAAUC;IACZ,CAAA;IACAN,QAAQX,QAAOkB;EACjB,CAAA,EAAA;EAAI;kBANSJ,cAAAA;AAOf,GAnBiBhB,mBAAAA,iBAAAA,CAAAA,EAAAA;AAqCV,IAAMqB,yBAAyBnB,QAAOoB,QAC3CpB,QAAOG,OAAO;EACZkB,iBAAiBJ;EACjBK,iBAAiBtB,QAAOQ,SAASe,eAAAA;EACjCC,cAAcxB,QAAOQ,SAASR,QAAOyB,OAAO;EAC5CC,OAAO1B,QAAOQ,SAASR,QAAOyB,OAAO;EACrCE,SAAS3B,QAAOQ,SAASR,QAAOyB,OAAO;EACvCG,YAAY5B,QAAOQ,SAASR,QAAOS,MAAM;;EAEzCoB,kBAAkB7B,QAAOQ,SAASR,QAAOyB,OAAO;EAChDK,SAAS9B,QAAOQ,SAASR,QAAOyB,OAAO;AACzC,CAAA,CAAA;;",
6
+ "names": ["Schema", "Obj", "Ref", "Type", "LabelAnnotation", "DataType", "DocumentSchema", "Schema", "Struct", "name", "optional", "String", "fallbackName", "content", "Type", "Ref", "DataType", "Text", "pipe", "LabelAnnotation", "set", "DocumentType", "Obj", "typename", "version", "createDocument", "make", "isEditorModel", "data", "id", "text", "Schema", "Type", "EditorInputMode", "EditorViewMode", "MARKDOWN_ACTION", "MARKDOWN_PLUGIN", "MarkdownAction", "Create", "Schema", "TaggedClass", "input", "Struct", "spaceId", "Type", "SpaceId", "name", "optional", "String", "content", "output", "object", "DocumentType", "SetViewMode", "id", "viewMode", "EditorViewMode", "Void", "MarkdownSettingsSchema", "mutable", "defaultViewMode", "editorInputMode", "EditorInputMode", "experimental", "Boolean", "debug", "toolbar", "typewriter", "numberedHeadings", "folding"]
7
+ }
@@ -2,12 +2,12 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
 
3
3
  // packages/plugins/plugin-markdown/src/capabilities/index.ts
4
4
  import { lazy } from "@dxos/app-framework";
5
- var AnchorSort = lazy(() => import("./anchor-sort-G2HLCYFK.mjs"));
6
- var AppGraphSerializer = lazy(() => import("./app-graph-serializer-C3RNTQGM.mjs"));
7
- var ArtifactDefinition = lazy(() => import("./artifact-definition-7TIJW2CO.mjs"));
8
- var IntentResolver = lazy(() => import("./intent-resolver-FTNXUNI2.mjs"));
9
- var ReactSurface = lazy(() => import("./react-surface-A4VAOQG6.mjs"));
10
- var MarkdownSettings = lazy(() => import("./settings-MK7D7LHQ.mjs"));
5
+ var AnchorSort = lazy(() => import("./anchor-sort-BXL7BE67.mjs"));
6
+ var AppGraphSerializer = lazy(() => import("./app-graph-serializer-F7DGNF3G.mjs"));
7
+ var ArtifactDefinition = lazy(() => import("./artifact-definition-NQOHB6S5.mjs"));
8
+ var IntentResolver = lazy(() => import("./intent-resolver-CLMSVF2K.mjs"));
9
+ var ReactSurface = lazy(() => import("./react-surface-YHFOQTVO.mjs"));
10
+ var MarkdownSettings = lazy(() => import("./settings-SIY33P3F.mjs"));
11
11
  var MarkdownState = lazy(() => import("./state-LLGVRYKL.mjs"));
12
12
 
13
13
  export {
@@ -19,4 +19,4 @@ export {
19
19
  MarkdownSettings,
20
20
  MarkdownState
21
21
  };
22
- //# sourceMappingURL=chunk-KK7LP3UQ.mjs.map
22
+ //# sourceMappingURL=chunk-YOABAQ7A.mjs.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  translations_default
4
- } from "./chunk-TCFJNUAE.mjs";
4
+ } from "./chunk-BWDDFDJY.mjs";
5
5
  import {
6
6
  AnchorSort,
7
7
  AppGraphSerializer,
@@ -10,7 +10,7 @@ import {
10
10
  MarkdownSettings,
11
11
  MarkdownState,
12
12
  ReactSurface
13
- } from "./chunk-KK7LP3UQ.mjs";
13
+ } from "./chunk-YOABAQ7A.mjs";
14
14
  import {
15
15
  MarkdownCapabilities
16
16
  } from "./chunk-JXXDCSMW.mjs";
@@ -20,11 +20,11 @@ import {
20
20
  isMarkdownProperties,
21
21
  serializer,
22
22
  setFallbackName
23
- } from "./chunk-6RPARLIK.mjs";
23
+ } from "./chunk-K26TX5V4.mjs";
24
24
  import {
25
25
  DocumentType,
26
26
  MarkdownAction
27
- } from "./chunk-NCMPVEXO.mjs";
27
+ } from "./chunk-T2Y2BT53.mjs";
28
28
  import {
29
29
  MARKDOWN_PLUGIN,
30
30
  meta
@@ -39,8 +39,7 @@ var MarkdownEvents;
39
39
 
40
40
  // packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx
41
41
  import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events as Events2 } from "@dxos/app-framework";
42
- import { isInstanceOf } from "@dxos/echo-schema";
43
- import { RefArray } from "@dxos/live-object";
42
+ import { Ref } from "@dxos/echo";
44
43
  import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
45
44
  import { SpaceCapabilities } from "@dxos/plugin-space";
46
45
  import { defineObjectForm } from "@dxos/plugin-space/types";
@@ -75,13 +74,13 @@ var MarkdownPlugin = () => definePlugin(meta, [
75
74
  activate: () => contributes(Capabilities.Metadata, {
76
75
  id: DocumentType.typename,
77
76
  metadata: {
78
- label: (object) => isInstanceOf(DocumentType, object) ? object.name || object.fallbackName : void 0,
77
+ label: (object) => object.name || object.fallbackName,
79
78
  icon: "ph--text-aa--regular",
80
79
  graphProps: {
81
80
  managesAutofocus: true
82
81
  },
83
82
  // TODO(wittjosiah): Move out of metadata.
84
- loadReferences: async (doc) => await RefArray.loadAll([
83
+ loadReferences: async (doc) => await Ref.Array.loadAll([
85
84
  doc.content
86
85
  ]),
87
86
  serializer,
@@ -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 { MARKDOWN_PLUGIN } from './meta';\n\nexport namespace MarkdownEvents {\n export const SetupExtensions = Events.createStateEvent(`${MARKDOWN_PLUGIN}/setup-extensions`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { isInstanceOf, type BaseObject } from '@dxos/echo-schema';\nimport { RefArray } from '@dxos/live-object';\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 ArtifactDefinition,\n IntentResolver,\n MarkdownState,\n MarkdownSettings,\n ReactSurface,\n} from './capabilities';\nimport { MarkdownEvents } from './events';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { DocumentType, 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: DocumentType.typename,\n metadata: {\n label: (object: any) =>\n isInstanceOf(DocumentType, object) ? object.name || object.fallbackName : undefined,\n icon: 'ph--text-aa--regular',\n graphProps: {\n managesAutofocus: true,\n },\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (doc: DocumentType) => await RefArray.loadAll<BaseObject>([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: DocumentType, 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: DocumentType,\n getIntent: (_, { space }) => createIntent(MarkdownAction.Create, { spaceId: space.id }),\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/artifact-definition`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: ArtifactDefinition,\n }),\n ]);\n"],
5
- "mappings": "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",
6
- "names": ["Events", "MarkdownEvents", "SetupExtensions", "Events", "createStateEvent", "MARKDOWN_PLUGIN", "Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "isInstanceOf", "RefArray", "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", "DocumentType", "typename", "metadata", "label", "object", "isInstanceOf", "name", "fallbackName", "undefined", "icon", "graphProps", "managesAutofocus", "loadReferences", "doc", "RefArray", "loadAll", "content", "serializer", "comments", "selectionMode", "getAnchorLabel", "anchor", "start", "end", "split", "getTextInRange", "createDocAccessor", "target", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "space", "createIntent", "MarkdownAction", "Create", "spaceId", "ClientCapabilities", "Schema", "DataType", "Text", "SetupReactSurface", "activatesBefore", "MarkdownEvents", "SetupExtensions", "ReactSurface", "SetupIntentResolver", "IntentResolver", "AppGraphReady", "AppGraphSerializer", "AnchorSort", "SetupArtifactDefinition", "ArtifactDefinition"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { MARKDOWN_PLUGIN } from './meta';\n\nexport namespace MarkdownEvents {\n export const SetupExtensions = Events.createStateEvent(`${MARKDOWN_PLUGIN}/setup-extensions`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } 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 ArtifactDefinition,\n IntentResolver,\n MarkdownState,\n MarkdownSettings,\n ReactSurface,\n} from './capabilities';\nimport { MarkdownEvents } from './events';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { DocumentType, 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: DocumentType.typename,\n metadata: {\n label: (object: DocumentType) => object.name || object.fallbackName,\n icon: 'ph--text-aa--regular',\n graphProps: {\n managesAutofocus: true,\n },\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (doc: DocumentType) => 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: DocumentType, 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: DocumentType,\n getIntent: (_, { space }) => createIntent(MarkdownAction.Create, { spaceId: space.id }),\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/artifact-definition`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: ArtifactDefinition,\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["Events", "MarkdownEvents", "SetupExtensions", "Events", "createStateEvent", "MARKDOWN_PLUGIN", "Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "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", "DocumentType", "typename", "metadata", "label", "object", "name", "fallbackName", "icon", "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", "_", "space", "createIntent", "MarkdownAction", "Create", "spaceId", "ClientCapabilities", "Schema", "DataType", "Text", "SetupReactSurface", "activatesBefore", "MarkdownEvents", "SetupExtensions", "ReactSurface", "SetupIntentResolver", "IntentResolver", "AppGraphReady", "AppGraphSerializer", "AnchorSort", "SetupArtifactDefinition", "ArtifactDefinition"]
7
7
  }
@@ -5,24 +5,23 @@ import {
5
5
  import {
6
6
  DocumentType,
7
7
  MarkdownAction
8
- } from "./chunk-NCMPVEXO.mjs";
8
+ } from "./chunk-T2Y2BT53.mjs";
9
9
  import "./chunk-RX63ZNML.mjs";
10
10
 
11
11
  // packages/plugins/plugin-markdown/src/capabilities/intent-resolver.ts
12
12
  import { next as A } from "@automerge/automerge";
13
13
  import { Option, pipe } from "effect";
14
14
  import { Capabilities, CollaborationActions, contributes, createResolver } from "@dxos/app-framework";
15
- import { isInstanceOf } from "@dxos/echo-schema";
16
- import { live } from "@dxos/live-object";
15
+ import { Obj } from "@dxos/echo";
17
16
  import { createDocAccessor, getRangeFromCursor, Ref } from "@dxos/react-client/echo";
18
17
  import { DataType } from "@dxos/schema";
19
18
  var intent_resolver_default = (context) => contributes(Capabilities.IntentResolver, [
20
19
  createResolver({
21
20
  intent: MarkdownAction.Create,
22
21
  resolve: ({ name, content }) => {
23
- const doc = live(DocumentType, {
22
+ const doc = Obj.make(DocumentType, {
24
23
  name,
25
- content: Ref.make(live(DataType.Text, {
24
+ content: Ref.make(Obj.make(DataType.Text, {
26
25
  content: content ?? ""
27
26
  }))
28
27
  });
@@ -42,7 +41,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
42
41
  }),
43
42
  createResolver({
44
43
  intent: CollaborationActions.InsertContent,
45
- filter: (data) => isInstanceOf(DocumentType, data.target),
44
+ filter: (data) => Obj.instanceOf(DocumentType, data.target),
46
45
  resolve: async ({ target, object: objectRef, at, label }) => {
47
46
  const text = await target.content.load();
48
47
  const accessor = createDocAccessor(text, [
@@ -63,4 +62,4 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
63
62
  export {
64
63
  intent_resolver_default as default
65
64
  };
66
- //# sourceMappingURL=intent-resolver-FTNXUNI2.mjs.map
65
+ //# sourceMappingURL=intent-resolver-CLMSVF2K.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 { Option, pipe, type Schema } from 'effect';\n\nimport {\n Capabilities,\n CollaborationActions,\n contributes,\n createResolver,\n type PluginContext,\n} from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { createDocAccessor, getRangeFromCursor, Ref } from '@dxos/react-client/echo';\nimport { DataType } from '@dxos/schema';\n\nimport { MarkdownCapabilities } from './capabilities';\nimport { DocumentType, MarkdownAction } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: MarkdownAction.Create,\n resolve: ({ name, content }) => {\n const doc = Obj.make(DocumentType, {\n name,\n content: Ref.make(Obj.make(DataType.Text, { content: content ?? '' })),\n });\n\n return { data: { object: doc } };\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.InsertContent,\n filter: (\n data,\n ): data is Omit<Schema.Schema.Type<typeof CollaborationActions.InsertContent.fields.input>, 'target'> & {\n target: DocumentType;\n } => Obj.instanceOf(DocumentType, data.target),\n resolve: async ({ target, object: objectRef, at, label }) => {\n const text = await target.content.load();\n const accessor = createDocAccessor(text, ['content']);\n const { start, end } = pipe(\n Option.fromNullable(at),\n Option.flatMap((at) => Option.fromNullable(getRangeFromCursor(accessor, at))),\n Option.getOrElse(() => ({ start: text.content.length - 1, end: text.content.length - 1 })),\n );\n accessor.handle.change((doc) => {\n const ref = `[${label ?? 'Generated content'}]](${objectRef.dxn.toString()})\\n`;\n A.splice(doc, accessor.path.slice(), start, end - start, ref);\n });\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;AAIA,SAASA,QAAQC,SAAS;AAC1B,SAASC,QAAQC,YAAyB;AAE1C,SACEC,cACAC,sBACAC,aACAC,sBAEK;AACP,SAASC,WAAW;AACpB,SAASC,mBAAmBC,oBAAoBC,WAAW;AAC3D,SAASC,gBAAgB;AAKzB,IAAA,0BAAe,CAACC,YACdC,YAAYC,aAAaC,gBAAgB;EACvCC,eAAe;IACbC,QAAQC,eAAeC;IACvBC,SAAS,CAAC,EAAEC,MAAMC,QAAO,MAAE;AACzB,YAAMC,MAAMC,IAAIC,KAAKC,cAAc;QACjCL;QACAC,SAASK,IAAIF,KAAKD,IAAIC,KAAKG,SAASC,MAAM;UAAEP,SAASA,WAAW;QAAG,CAAA,CAAA;MACrE,CAAA;AAEA,aAAO;QAAEQ,MAAM;UAAEC,QAAQR;QAAI;MAAE;IACjC;EACF,CAAA;EACAP,eAAe;IACbC,QAAQC,eAAec;IACvBZ,SAAS,CAAC,EAAEa,IAAIC,SAAQ,MAAE;AACxB,YAAM,EAAEC,MAAK,IAAKvB,QAAQwB,cAAcC,qBAAqBC,KAAK;AAClEH,YAAMD,SAASD,EAAAA,IAAMC;IACvB;EACF,CAAA;EACAlB,eAAe;IACbC,QAAQsB,qBAAqBC;IAC7BC,QAAQ,CACNX,SAGGN,IAAIkB,WAAWhB,cAAcI,KAAKa,MAAM;IAC7CvB,SAAS,OAAO,EAAEuB,QAAQZ,QAAQa,WAAWC,IAAIC,MAAK,MAAE;AACtD,YAAMC,OAAO,MAAMJ,OAAOrB,QAAQ0B,KAAI;AACtC,YAAMC,WAAWC,kBAAkBH,MAAM;QAAC;OAAU;AACpD,YAAM,EAAEI,OAAOC,IAAG,IAAKC,KACrBC,OAAOC,aAAaV,EAAAA,GACpBS,OAAOE,QAAQ,CAACX,QAAOS,OAAOC,aAAaE,mBAAmBR,UAAUJ,GAAAA,CAAAA,CAAAA,GACxES,OAAOI,UAAU,OAAO;QAAEP,OAAOJ,KAAKzB,QAAQqC,SAAS;QAAGP,KAAKL,KAAKzB,QAAQqC,SAAS;MAAE,EAAA,CAAA;AAEzFV,eAASW,OAAOC,OAAO,CAACtC,QAAAA;AACtB,cAAMuC,MAAM,IAAIhB,SAAS,mBAAA,MAAyBF,UAAUmB,IAAIC,SAAQ,CAAA;;AACxEC,UAAEC,OAAO3C,KAAK0B,SAASkB,KAAKC,MAAK,GAAIjB,OAAOC,MAAMD,OAAOW,GAAAA;MAC3D,CAAA;IACF;EACF,CAAA;CACD;",
6
+ "names": ["next", "A", "Option", "pipe", "Capabilities", "CollaborationActions", "contributes", "createResolver", "Obj", "createDocAccessor", "getRangeFromCursor", "Ref", "DataType", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "MarkdownAction", "Create", "resolve", "name", "content", "doc", "Obj", "make", "DocumentType", "Ref", "DataType", "Text", "data", "object", "SetViewMode", "id", "viewMode", "state", "getCapability", "MarkdownCapabilities", "State", "CollaborationActions", "InsertContent", "filter", "instanceOf", "target", "objectRef", "at", "label", "text", "load", "accessor", "createDocAccessor", "start", "end", "pipe", "Option", "fromNullable", "flatMap", "getRangeFromCursor", "getOrElse", "length", "handle", "change", "ref", "dxn", "toString", "A", "splice", "path", "slice"]
7
+ }