@dxos/plugin-thread 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 (158) hide show
  1. package/dist/lib/browser/{ChannelContainer-LGYSQMC7.mjs → ChannelContainer-PKFBVENP.mjs} +4 -4
  2. package/dist/lib/browser/{ChatContainer-JWRI73OG.mjs → ChatContainer-RSOKYAMK.mjs} +2 -2
  3. package/dist/lib/browser/{app-graph-builder-K3CFBN7V.mjs → app-graph-builder-OY7R7EJP.mjs} +11 -11
  4. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-6NBVNXTM.mjs +21 -0
  6. package/dist/lib/browser/{chunk-WDOQXTI2.mjs → chunk-AEXWNS6Z.mjs} +5 -3
  7. package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-KMVGJG23.mjs → chunk-PG5CTFKK.mjs} +50 -45
  9. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-G3TS64FP.mjs → chunk-TAFSCSUR.mjs} +4 -4
  11. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-5PGLGDIP.mjs → chunk-XZKBN3NS.mjs} +35 -35
  13. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +35 -9
  15. package/dist/lib/browser/index.mjs.map +3 -3
  16. package/dist/lib/browser/{intent-resolver-YUYZCTLF.mjs → intent-resolver-FK2MDVDT.mjs} +24 -26
  17. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +7 -0
  18. package/dist/lib/browser/{markdown-4EC3OCF2.mjs → markdown-TE5SWWNJ.mjs} +9 -9
  19. package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +7 -0
  20. package/dist/lib/browser/meta.json +1 -1
  21. package/dist/lib/browser/{react-root-EECCWHCW.mjs → react-root-NK3A4VG7.mjs} +6 -6
  22. package/dist/lib/browser/{react-surface-5QLZAFDL.mjs → react-surface-VXUJKSOG.mjs} +12 -12
  23. package/dist/lib/browser/react-surface-VXUJKSOG.mjs.map +7 -0
  24. package/dist/lib/browser/{settings-KVBQQSO5.mjs → settings-RB2RSLXV.mjs} +4 -4
  25. package/dist/lib/browser/settings-RB2RSLXV.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +1 -1
  27. package/dist/lib/node/{ChannelContainer-5EKNEH56.cjs → ChannelContainer-YS5YT2ML.cjs} +9 -9
  28. package/dist/lib/node/{ChannelContainer-5EKNEH56.cjs.map → ChannelContainer-YS5YT2ML.cjs.map} +2 -2
  29. package/dist/lib/node/{ChatContainer-EE3FPSYO.cjs → ChatContainer-GCOM3M56.cjs} +8 -8
  30. package/dist/lib/node/{ChatContainer-EE3FPSYO.cjs.map → ChatContainer-GCOM3M56.cjs.map} +2 -2
  31. package/dist/lib/node/{app-graph-builder-IRE3GYKE.cjs → app-graph-builder-PBHJNDQY.cjs} +21 -21
  32. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +7 -0
  33. package/dist/lib/node/{chunk-4B3PPXA6.cjs → chunk-E3WBZTTI.cjs} +12 -12
  34. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +7 -0
  35. package/dist/lib/node/{chunk-U7NOIXN6.cjs → chunk-ERG7G6FF.cjs} +10 -10
  36. package/dist/lib/node/{chunk-JLHENFGK.cjs → chunk-IP533AMV.cjs} +76 -71
  37. package/dist/lib/node/chunk-IP533AMV.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-6B3M6XRE.cjs → chunk-UM36TPCT.cjs} +37 -37
  39. package/dist/lib/node/chunk-UM36TPCT.cjs.map +7 -0
  40. package/dist/lib/node/{chunk-TKHJVC2C.cjs → chunk-ZGDN3XBR.cjs} +8 -6
  41. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +7 -0
  42. package/dist/lib/node/index.cjs +45 -19
  43. package/dist/lib/node/index.cjs.map +3 -3
  44. package/dist/lib/node/{intent-resolver-MZ3HADNY.cjs → intent-resolver-SYSJ5SJG.cjs} +50 -52
  45. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +7 -0
  46. package/dist/lib/node/{markdown-NJDPXIKD.cjs → markdown-GQIPJS2F.cjs} +27 -27
  47. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +7 -0
  48. package/dist/lib/node/meta.json +1 -1
  49. package/dist/lib/node/{react-root-IAYQ2DBO.cjs → react-root-6HHDMULJ.cjs} +10 -10
  50. package/dist/lib/node/{react-surface-AVC5VVIS.cjs → react-surface-NBH42NN2.cjs} +24 -24
  51. package/dist/lib/node/react-surface-NBH42NN2.cjs.map +7 -0
  52. package/dist/lib/node/{settings-H45P5YO2.cjs → settings-4LQSFEDK.cjs} +7 -7
  53. package/dist/lib/node/settings-4LQSFEDK.cjs.map +7 -0
  54. package/dist/lib/node/types/index.cjs +6 -6
  55. package/dist/lib/node/types/index.cjs.map +1 -1
  56. package/dist/lib/node-esm/{ChannelContainer-KFS2RWWW.mjs → ChannelContainer-O4QJII2P.mjs} +4 -4
  57. package/dist/lib/node-esm/{ChatContainer-UJYPQMLV.mjs → ChatContainer-F6CSADV7.mjs} +2 -2
  58. package/dist/lib/node-esm/{app-graph-builder-I5VMPLE4.mjs → app-graph-builder-BAHBHYWI.mjs} +11 -11
  59. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-X6AUQDTE.mjs → chunk-2RNIPFDA.mjs} +35 -35
  61. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-ODUB4GAB.mjs → chunk-O63QJPQX.mjs} +7 -7
  63. package/dist/lib/node-esm/{chunk-POKXRTII.mjs → chunk-P6RLFCNT.mjs} +4 -4
  64. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-J323VQ4P.mjs → chunk-UJMPYKT3.mjs} +5 -3
  66. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-MNJ3V4XM.mjs → chunk-UZWVVFT3.mjs} +50 -45
  68. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +7 -0
  69. package/dist/lib/node-esm/index.mjs +35 -9
  70. package/dist/lib/node-esm/index.mjs.map +3 -3
  71. package/dist/lib/node-esm/{intent-resolver-CU22OPAH.mjs → intent-resolver-BU73VYW3.mjs} +24 -26
  72. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +7 -0
  73. package/dist/lib/node-esm/{markdown-HRGGO7IA.mjs → markdown-HJUWNBLS.mjs} +9 -9
  74. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +7 -0
  75. package/dist/lib/node-esm/meta.json +1 -1
  76. package/dist/lib/node-esm/{react-root-NQMUEI6Z.mjs → react-root-RUXOAQNW.mjs} +6 -6
  77. package/dist/lib/node-esm/{react-surface-Z4X5VLMY.mjs → react-surface-ELXFYKP6.mjs} +12 -12
  78. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs.map +7 -0
  79. package/dist/lib/node-esm/{settings-IJGUOU3F.mjs → settings-EA7DFSM6.mjs} +4 -4
  80. package/dist/lib/node-esm/settings-EA7DFSM6.mjs.map +7 -0
  81. package/dist/lib/node-esm/types/index.mjs +1 -1
  82. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  85. package/dist/types/src/components/ChatContainer.d.ts +3 -2
  86. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  87. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/CommentsContainer.d.ts +1 -1
  89. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  90. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  91. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  92. package/dist/types/src/components/testing.d.ts +2 -103
  93. package/dist/types/src/components/testing.d.ts.map +1 -1
  94. package/dist/types/src/translations.d.ts +128 -2
  95. package/dist/types/src/translations.d.ts.map +1 -1
  96. package/dist/types/src/types/schema.d.ts +117 -301
  97. package/dist/types/src/types/schema.d.ts.map +1 -1
  98. package/dist/types/src/types/types.d.ts +153 -828
  99. package/dist/types/src/types/types.d.ts.map +1 -1
  100. package/package.json +42 -42
  101. package/src/ThreadPlugin.tsx +29 -6
  102. package/src/capabilities/app-graph-builder.ts +9 -9
  103. package/src/capabilities/intent-resolver.ts +26 -26
  104. package/src/capabilities/react-surface.tsx +7 -7
  105. package/src/capabilities/settings.ts +7 -2
  106. package/src/components/Call/Toolbar.tsx +3 -3
  107. package/src/components/ChannelContainer.tsx +18 -22
  108. package/src/components/Chat.stories.tsx +4 -4
  109. package/src/components/ChatContainer.tsx +6 -6
  110. package/src/components/CommentContainer.tsx +2 -2
  111. package/src/components/Comments.stories.tsx +15 -5
  112. package/src/components/CommentsContainer.tsx +21 -24
  113. package/src/components/MessageContainer.tsx +20 -20
  114. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
  115. package/src/components/ThreadComplementary.tsx +19 -15
  116. package/src/components/testing.ts +5 -5
  117. package/src/extensions/threads.ts +7 -7
  118. package/src/testing/stories.ts +3 -3
  119. package/src/translations.ts +7 -2
  120. package/src/types/schema.ts +8 -4
  121. package/dist/lib/browser/app-graph-builder-K3CFBN7V.mjs.map +0 -7
  122. package/dist/lib/browser/chunk-5PGLGDIP.mjs.map +0 -7
  123. package/dist/lib/browser/chunk-CF2MXRCH.mjs +0 -21
  124. package/dist/lib/browser/chunk-G3TS64FP.mjs.map +0 -7
  125. package/dist/lib/browser/chunk-KMVGJG23.mjs.map +0 -7
  126. package/dist/lib/browser/chunk-WDOQXTI2.mjs.map +0 -7
  127. package/dist/lib/browser/intent-resolver-YUYZCTLF.mjs.map +0 -7
  128. package/dist/lib/browser/markdown-4EC3OCF2.mjs.map +0 -7
  129. package/dist/lib/browser/react-surface-5QLZAFDL.mjs.map +0 -7
  130. package/dist/lib/browser/settings-KVBQQSO5.mjs.map +0 -7
  131. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs.map +0 -7
  132. package/dist/lib/node/chunk-4B3PPXA6.cjs.map +0 -7
  133. package/dist/lib/node/chunk-6B3M6XRE.cjs.map +0 -7
  134. package/dist/lib/node/chunk-JLHENFGK.cjs.map +0 -7
  135. package/dist/lib/node/chunk-TKHJVC2C.cjs.map +0 -7
  136. package/dist/lib/node/intent-resolver-MZ3HADNY.cjs.map +0 -7
  137. package/dist/lib/node/markdown-NJDPXIKD.cjs.map +0 -7
  138. package/dist/lib/node/react-surface-AVC5VVIS.cjs.map +0 -7
  139. package/dist/lib/node/settings-H45P5YO2.cjs.map +0 -7
  140. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs.map +0 -7
  141. package/dist/lib/node-esm/chunk-J323VQ4P.mjs.map +0 -7
  142. package/dist/lib/node-esm/chunk-MNJ3V4XM.mjs.map +0 -7
  143. package/dist/lib/node-esm/chunk-POKXRTII.mjs.map +0 -7
  144. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs.map +0 -7
  145. package/dist/lib/node-esm/intent-resolver-CU22OPAH.mjs.map +0 -7
  146. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs.map +0 -7
  147. package/dist/lib/node-esm/react-surface-Z4X5VLMY.mjs.map +0 -7
  148. package/dist/lib/node-esm/settings-IJGUOU3F.mjs.map +0 -7
  149. /package/dist/lib/browser/{ChannelContainer-LGYSQMC7.mjs.map → ChannelContainer-PKFBVENP.mjs.map} +0 -0
  150. /package/dist/lib/browser/{ChatContainer-JWRI73OG.mjs.map → ChatContainer-RSOKYAMK.mjs.map} +0 -0
  151. /package/dist/lib/browser/{chunk-CF2MXRCH.mjs.map → chunk-6NBVNXTM.mjs.map} +0 -0
  152. /package/dist/lib/browser/{react-root-EECCWHCW.mjs.map → react-root-NK3A4VG7.mjs.map} +0 -0
  153. /package/dist/lib/node/{chunk-U7NOIXN6.cjs.map → chunk-ERG7G6FF.cjs.map} +0 -0
  154. /package/dist/lib/node/{react-root-IAYQ2DBO.cjs.map → react-root-6HHDMULJ.cjs.map} +0 -0
  155. /package/dist/lib/node-esm/{ChannelContainer-KFS2RWWW.mjs.map → ChannelContainer-O4QJII2P.mjs.map} +0 -0
  156. /package/dist/lib/node-esm/{ChatContainer-UJYPQMLV.mjs.map → ChatContainer-F6CSADV7.mjs.map} +0 -0
  157. /package/dist/lib/node-esm/{chunk-ODUB4GAB.mjs.map → chunk-O63QJPQX.mjs.map} +0 -0
  158. /package/dist/lib/node-esm/{react-root-NQMUEI6Z.mjs.map → react-root-RUXOAQNW.mjs.map} +0 -0
@@ -16,32 +16,32 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var intent_resolver_MZ3HADNY_exports = {};
20
- __export(intent_resolver_MZ3HADNY_exports, {
19
+ var intent_resolver_SYSJ5SJG_exports = {};
20
+ __export(intent_resolver_SYSJ5SJG_exports, {
21
21
  default: () => intent_resolver_default
22
22
  });
23
- module.exports = __toCommonJS(intent_resolver_MZ3HADNY_exports);
24
- var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
23
+ module.exports = __toCommonJS(intent_resolver_SYSJ5SJG_exports);
24
+ var import_chunk_ZGDN3XBR = require("./chunk-ZGDN3XBR.cjs");
25
25
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
26
26
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
27
- var import_signals_core = require("@preact/signals-core");
28
27
  var import_app_framework = require("@dxos/app-framework");
29
- var import_echo_schema = require("@dxos/echo-schema");
28
+ var import_async = require("@dxos/async");
29
+ var import_echo = require("@dxos/echo");
30
30
  var import_invariant = require("@dxos/invariant");
31
31
  var import_types = require("@dxos/plugin-deck/types");
32
32
  var import_types2 = require("@dxos/plugin-observability/types");
33
33
  var import_types3 = require("@dxos/plugin-space/types");
34
- var import_echo = require("@dxos/react-client/echo");
34
+ var import_echo2 = require("@dxos/react-client/echo");
35
35
  var import_schema = require("@dxos/schema");
36
36
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/capabilities/intent-resolver.ts";
37
37
  var intent_resolver_default = (context) => (0, import_app_framework.contributes)(import_app_framework.Capabilities.IntentResolver, [
38
38
  (0, import_app_framework.createResolver)({
39
- intent: import_chunk_TKHJVC2C.ThreadAction.CreateChannel,
39
+ intent: import_chunk_ZGDN3XBR.ThreadAction.CreateChannel,
40
40
  resolve: ({ name }) => ({
41
41
  data: {
42
- object: (0, import_echo.live)(import_chunk_TKHJVC2C.ChannelType, {
42
+ object: import_echo.Obj.make(import_chunk_ZGDN3XBR.ChannelType, {
43
43
  name,
44
- defaultThread: import_echo.Ref.make((0, import_echo.live)(import_chunk_TKHJVC2C.ThreadType, {
44
+ defaultThread: import_echo2.Ref.make(import_echo.Obj.make(import_chunk_ZGDN3XBR.ThreadType, {
45
45
  messages: [],
46
46
  status: "active"
47
47
  })),
@@ -51,13 +51,13 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
51
51
  })
52
52
  }),
53
53
  (0, import_app_framework.createResolver)({
54
- intent: import_chunk_TKHJVC2C.ThreadAction.CreateChannelThread,
54
+ intent: import_chunk_ZGDN3XBR.ThreadAction.CreateChannelThread,
55
55
  resolve: ({ channel }) => {
56
- const thread = (0, import_echo.live)(import_chunk_TKHJVC2C.ThreadType, {
56
+ const thread = import_echo.Obj.make(import_chunk_ZGDN3XBR.ThreadType, {
57
57
  messages: [],
58
58
  status: "active"
59
59
  });
60
- channel.threads.push(import_echo.Ref.make(thread));
60
+ channel.threads.push(import_echo2.Ref.make(thread));
61
61
  return {
62
62
  data: {
63
63
  object: thread
@@ -67,12 +67,12 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
67
67
  }),
68
68
  // TODO(wittjosiah): Break this up into more composable pieces.
69
69
  (0, import_app_framework.createResolver)({
70
- intent: import_chunk_TKHJVC2C.ThreadAction.Create,
70
+ intent: import_chunk_ZGDN3XBR.ThreadAction.Create,
71
71
  resolve: ({ name, anchor: _anchor, subject }) => {
72
- const space = (0, import_echo.getSpace)(subject);
72
+ const space = (0, import_echo2.getSpace)(subject);
73
73
  (0, import_invariant.invariant)(space, "Space not found", {
74
74
  F: __dxlog_file,
75
- L: 51,
75
+ L: 50,
76
76
  S: void 0,
77
77
  A: [
78
78
  "space",
@@ -80,15 +80,15 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
80
80
  ]
81
81
  });
82
82
  const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
83
- const subjectId = (0, import_echo.fullyQualifiedId)(subject);
84
- const thread = (0, import_echo.live)(import_chunk_TKHJVC2C.ThreadType, {
83
+ const subjectId = (0, import_echo2.fullyQualifiedId)(subject);
84
+ const thread = import_echo.Obj.make(import_chunk_ZGDN3XBR.ThreadType, {
85
85
  name,
86
86
  messages: [],
87
87
  status: "staged"
88
88
  });
89
- const anchor = (0, import_echo.live)(import_schema.AnchoredTo, {
90
- [import_echo_schema.RelationSourceId]: thread,
91
- [import_echo_schema.RelationTargetId]: subject,
89
+ const anchor = import_echo.Relation.make(import_schema.AnchoredTo, {
90
+ [import_echo.Relation.Source]: thread,
91
+ [import_echo.Relation.Target]: subject,
92
92
  anchor: _anchor
93
93
  });
94
94
  const draft = state.drafts[subjectId];
@@ -101,8 +101,8 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
101
101
  }
102
102
  return {
103
103
  intents: [
104
- (0, import_app_framework.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Select, {
105
- current: (0, import_echo.fullyQualifiedId)(thread)
104
+ (0, import_app_framework.createIntent)(import_chunk_ZGDN3XBR.ThreadAction.Select, {
105
+ current: (0, import_echo2.fullyQualifiedId)(thread)
106
106
  }),
107
107
  (0, import_app_framework.createIntent)(import_types.DeckAction.ChangeCompanion, {
108
108
  primary: subjectId,
@@ -113,21 +113,21 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
113
113
  }
114
114
  }),
115
115
  (0, import_app_framework.createResolver)({
116
- intent: import_chunk_TKHJVC2C.ThreadAction.Select,
116
+ intent: import_chunk_ZGDN3XBR.ThreadAction.Select,
117
117
  resolve: ({ current }) => {
118
118
  const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
119
119
  state.current = current;
120
120
  }
121
121
  }),
122
122
  (0, import_app_framework.createResolver)({
123
- intent: import_chunk_TKHJVC2C.ThreadAction.ToggleResolved,
123
+ intent: import_chunk_ZGDN3XBR.ThreadAction.ToggleResolved,
124
124
  resolve: ({ thread }) => {
125
125
  if (thread.status === "active" || thread.status === void 0) {
126
126
  thread.status = "resolved";
127
127
  } else if (thread.status === "resolved") {
128
128
  thread.status = "active";
129
129
  }
130
- const space = (0, import_echo.getSpace)(thread);
130
+ const space = (0, import_echo2.getSpace)(thread);
131
131
  (0, import_invariant.invariant)(space, "Space not found", {
132
132
  F: __dxlog_file,
133
133
  L: 96,
@@ -152,11 +152,11 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
152
152
  }
153
153
  }),
154
154
  (0, import_app_framework.createResolver)({
155
- intent: import_chunk_TKHJVC2C.ThreadAction.Delete,
156
- resolve: ({ subject, anchor, thread: _thread }, undo) => {
157
- const thread = _thread ?? anchor[import_echo_schema.RelationSourceId];
155
+ intent: import_chunk_ZGDN3XBR.ThreadAction.Delete,
156
+ resolve: async ({ subject, anchor, thread: _thread }, undo) => {
157
+ const thread = _thread ?? import_echo.Relation.getSource(anchor);
158
158
  const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
159
- const subjectId = (0, import_echo.fullyQualifiedId)(subject);
159
+ const subjectId = (0, import_echo2.fullyQualifiedId)(subject);
160
160
  const draft = state.drafts[subjectId];
161
161
  if (draft) {
162
162
  const index = draft.findIndex((a) => a.id === anchor.id);
@@ -165,15 +165,14 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
165
165
  return;
166
166
  }
167
167
  }
168
- const space = (0, import_echo.getSpace)(anchor);
168
+ const space = (0, import_echo2.getSpace)(anchor);
169
169
  if (!space) {
170
170
  return;
171
171
  }
172
172
  if (!undo) {
173
- (0, import_signals_core.batch)(() => {
174
- space.db.remove(thread);
175
- space.db.remove(anchor);
176
- });
173
+ space.db.remove(anchor);
174
+ await (0, import_async.sleep)(100);
175
+ space.db.remove(thread);
177
176
  return {
178
177
  undoable: {
179
178
  message: [
@@ -198,10 +197,9 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
198
197
  ]
199
198
  };
200
199
  } else {
201
- (0, import_signals_core.batch)(() => {
202
- space.db.add(thread);
203
- space.db.add(anchor);
204
- });
200
+ space.db.add(thread);
201
+ await (0, import_async.sleep)(100);
202
+ space.db.add(anchor);
205
203
  return {
206
204
  intents: [
207
205
  (0, import_app_framework.createIntent)(import_types2.ObservabilityAction.SendEvent, {
@@ -217,12 +215,12 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
217
215
  }
218
216
  }),
219
217
  (0, import_app_framework.createResolver)({
220
- intent: import_chunk_TKHJVC2C.ThreadAction.AddMessage,
218
+ intent: import_chunk_ZGDN3XBR.ThreadAction.AddMessage,
221
219
  resolve: ({ anchor, subject, sender, text }) => {
222
- const thread = anchor[import_echo_schema.RelationSourceId];
220
+ const thread = import_echo.Relation.getSource(anchor);
223
221
  const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
224
- const subjectId = (0, import_echo.fullyQualifiedId)(subject);
225
- const space = (0, import_echo.getSpace)(subject);
222
+ const subjectId = (0, import_echo2.fullyQualifiedId)(subject);
223
+ const space = (0, import_echo2.getSpace)(subject);
226
224
  (0, import_invariant.invariant)(space, "Space not found", {
227
225
  F: __dxlog_file,
228
226
  L: 181,
@@ -233,7 +231,7 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
233
231
  ]
234
232
  });
235
233
  const intents = [];
236
- const message = (0, import_echo.live)(import_schema.DataType.Message, {
234
+ const message = import_echo.Obj.make(import_schema.DataType.Message, {
237
235
  sender,
238
236
  created: (/* @__PURE__ */ new Date()).toISOString(),
239
237
  blocks: [
@@ -243,7 +241,7 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
243
241
  }
244
242
  ]
245
243
  });
246
- thread.messages.push(import_echo.Ref.make(message));
244
+ thread.messages.push(import_echo2.Ref.make(message));
247
245
  const draft = state.drafts[subjectId]?.find((a) => a.id === anchor.id);
248
246
  if (draft) {
249
247
  thread.status = "active";
@@ -286,10 +284,10 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
286
284
  }
287
285
  }),
288
286
  (0, import_app_framework.createResolver)({
289
- intent: import_chunk_TKHJVC2C.ThreadAction.DeleteMessage,
287
+ intent: import_chunk_ZGDN3XBR.ThreadAction.DeleteMessage,
290
288
  resolve: ({ subject, anchor, messageId, message, messageIndex }, undo) => {
291
- const thread = anchor[import_echo_schema.RelationSourceId];
292
- const space = (0, import_echo.getSpace)(subject);
289
+ const thread = import_echo.Relation.getSource(anchor);
290
+ const space = (0, import_echo2.getSpace)(subject);
293
291
  (0, import_invariant.invariant)(space, "Space not found", {
294
292
  F: __dxlog_file,
295
293
  L: 241,
@@ -300,7 +298,7 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
300
298
  ]
301
299
  });
302
300
  if (!undo) {
303
- const messageIndex2 = thread.messages.findIndex(import_echo.Ref.hasObjectId(messageId));
301
+ const messageIndex2 = thread.messages.findIndex(import_echo2.Ref.hasObjectId(messageId));
304
302
  const message2 = thread.messages[messageIndex2]?.target;
305
303
  if (!message2) {
306
304
  return;
@@ -308,7 +306,7 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
308
306
  if (messageIndex2 === 0 && thread.messages.length === 1) {
309
307
  return {
310
308
  intents: [
311
- (0, import_app_framework.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Delete, {
309
+ (0, import_app_framework.createIntent)(import_chunk_ZGDN3XBR.ThreadAction.Delete, {
312
310
  subject,
313
311
  anchor
314
312
  })
@@ -345,7 +343,7 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
345
343
  if (messageIndex === void 0 || !message) {
346
344
  return;
347
345
  }
348
- thread.messages.splice(messageIndex, 0, import_echo.Ref.make(message));
346
+ thread.messages.splice(messageIndex, 0, import_echo2.Ref.make(message));
349
347
  return {
350
348
  intents: [
351
349
  (0, import_app_framework.createIntent)(import_types2.ObservabilityAction.SendEvent, {
@@ -362,4 +360,4 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
362
360
  }
363
361
  })
364
362
  ]);
365
- //# sourceMappingURL=intent-resolver-MZ3HADNY.cjs.map
363
+ //# sourceMappingURL=intent-resolver-SYSJ5SJG.cjs.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 { Capabilities, contributes, createIntent, createResolver, type PluginContext } from '@dxos/app-framework';\nimport { sleep } from '@dxos/async';\nimport { Obj, Relation } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { fullyQualifiedId, getSpace, Ref } from '@dxos/react-client/echo';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadAction, ThreadType } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: ThreadAction.CreateChannel,\n resolve: ({ name }) => ({\n data: {\n object: Obj.make(ChannelType, {\n name,\n defaultThread: Ref.make(Obj.make(ThreadType, { messages: [], status: 'active' })),\n threads: [],\n }),\n },\n }),\n }),\n createResolver({\n intent: ThreadAction.CreateChannelThread,\n resolve: ({ channel }) => {\n const thread = Obj.make(ThreadType, { messages: [], status: 'active' });\n channel.threads.push(Ref.make(thread));\n return {\n data: {\n object: thread,\n },\n };\n },\n }),\n // TODO(wittjosiah): Break this up into more composable pieces.\n createResolver({\n intent: ThreadAction.Create,\n resolve: ({ name, anchor: _anchor, subject }) => {\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const thread = Obj.make(ThreadType, { name, messages: [], status: 'staged' });\n const anchor = Relation.make(AnchoredTo, {\n [Relation.Source]: thread,\n [Relation.Target]: subject,\n anchor: _anchor,\n });\n\n const draft = state.drafts[subjectId];\n if (draft) {\n draft.push(anchor);\n } else {\n state.drafts[subjectId] = [anchor];\n }\n\n return {\n intents: [\n createIntent(ThreadAction.Select, { current: fullyQualifiedId(thread) }),\n createIntent(DeckAction.ChangeCompanion, {\n primary: subjectId,\n companion: `${subjectId}${ATTENDABLE_PATH_SEPARATOR}comments`,\n }),\n ],\n };\n },\n }),\n createResolver({\n intent: ThreadAction.Select,\n resolve: ({ current }) => {\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n state.current = current;\n },\n }),\n createResolver({\n intent: ThreadAction.ToggleResolved,\n resolve: ({ thread }) => {\n if (thread.status === 'active' || thread.status === undefined) {\n thread.status = 'resolved';\n } else if (thread.status === 'resolved') {\n thread.status = 'active';\n }\n\n const space = getSpace(thread);\n invariant(space, 'Space not found');\n const spaceId = space.id;\n\n return {\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.toggle-resolved',\n properties: {\n spaceId,\n threadId: thread.id,\n },\n }),\n ],\n };\n },\n }),\n createResolver({\n intent: ThreadAction.Delete,\n resolve: async ({ subject, anchor, thread: _thread }, undo) => {\n const thread = _thread ?? (Relation.getSource(anchor) as ThreadType);\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const draft = state.drafts[subjectId];\n if (draft) {\n // Check if we're deleting a draft; if so, remo ve it.\n const index = draft.findIndex((a) => a.id === anchor.id);\n if (index !== -1) {\n draft.splice(index, 1);\n return;\n }\n }\n\n const space = getSpace(anchor);\n if (!space) {\n return;\n }\n\n if (!undo) {\n // TODO(wittjosiah): Without sleep, rendering crashes at `Relation.setSource(anchor)`.\n space.db.remove(anchor);\n await sleep(100);\n space.db.remove(thread);\n\n return {\n undoable: {\n message: ['thread deleted label', { ns: THREAD_PLUGIN }],\n data: { thread, anchor },\n },\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n },\n }),\n ],\n };\n } else {\n // TODO(wittjosiah): Without sleep, rendering crashes at `Relation.setSource(anchor)`.\n space.db.add(thread);\n await sleep(100);\n space.db.add(anchor);\n\n return {\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.undo-delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n },\n }),\n ],\n };\n }\n },\n }),\n createResolver({\n intent: ThreadAction.AddMessage,\n resolve: ({ anchor, subject, sender, text }) => {\n const thread = Relation.getSource(anchor) as ThreadType;\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n const intents = [];\n\n const message = Obj.make(DataType.Message, {\n sender,\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text }],\n // TODO(wittjosiah): Context based on attention.\n // context: context ? Ref.make(context) : undefined,\n });\n thread.messages.push(Ref.make(message));\n\n const draft = state.drafts[subjectId]?.find((a) => a.id === anchor.id);\n if (draft) {\n // Move draft to document.\n thread.status = 'active';\n // TODO(wittjosiah): This causes the thread to flash as it transitions from draft to db.\n state.drafts[subjectId] = state.drafts[subjectId]?.filter((a) => a.id !== anchor.id);\n intents.push(createIntent(SpaceAction.AddObject, { object: thread, target: space, hidden: true }));\n intents.push(\n createIntent(SpaceAction.AddRelation, {\n space,\n schema: AnchoredTo,\n source: thread,\n target: subject,\n fields: { anchor: draft.anchor },\n }),\n );\n intents.push(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.create',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n },\n }),\n );\n }\n\n intents.push(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.add',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n threadLength: thread.messages.length,\n messageId: message.id,\n messageLength: text.length,\n },\n }),\n );\n\n return { intents };\n },\n }),\n createResolver({\n intent: ThreadAction.DeleteMessage,\n resolve: ({ subject, anchor, messageId, message, messageIndex }, undo) => {\n const thread = Relation.getSource(anchor) as ThreadType;\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n\n if (!undo) {\n const messageIndex = thread.messages.findIndex(Ref.hasObjectId(messageId));\n const message = thread.messages[messageIndex]?.target;\n if (!message) {\n return;\n }\n\n if (messageIndex === 0 && thread.messages.length === 1) {\n // If the message is the only message in the thread, delete the thread.\n return {\n intents: [createIntent(ThreadAction.Delete, { subject, anchor })],\n };\n } else {\n thread.messages.splice(messageIndex, 1);\n }\n\n return {\n undoable: {\n message: ['message deleted label', { ns: THREAD_PLUGIN }],\n data: { message, messageIndex },\n },\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n messageId: message.id,\n },\n }),\n ],\n };\n } else {\n if (messageIndex === undefined || !message) {\n return;\n }\n\n thread.messages.splice(messageIndex, 0, Ref.make(message));\n return {\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.undo-delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n messageId: message.id,\n },\n }),\n ],\n };\n }\n },\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["import_types", "import_echo", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "ThreadAction", "CreateChannel", "resolve", "name", "data", "object", "Obj", "make", "ChannelType", "defaultThread", "Ref", "ThreadType", "messages", "status", "threads", "CreateChannelThread", "channel", "thread", "push", "Create", "anchor", "_anchor", "subject", "space", "getSpace", "invariant", "state", "getCapability", "ThreadCapabilities", "MutableState", "subjectId", "fullyQualifiedId", "Relation", "AnchoredTo", "Source", "Target", "draft", "drafts", "intents", "createIntent", "Select", "current", "DeckAction", "ChangeCompanion", "primary", "companion", "ATTENDABLE_PATH_SEPARATOR", "ToggleResolved", "undefined", "spaceId", "id", "ObservabilityAction", "SendEvent", "properties", "threadId", "Delete", "_thread", "undo", "getSource", "index", "findIndex", "a", "splice", "db", "remove", "sleep", "undoable", "message", "ns", "THREAD_PLUGIN", "add", "AddMessage", "sender", "text", "DataType", "Message", "created", "Date", "toISOString", "blocks", "type", "find", "filter", "SpaceAction", "AddObject", "target", "hidden", "AddRelation", "schema", "source", "fields", "threadLength", "length", "messageId", "messageLength", "DeleteMessage", "messageIndex", "hasObjectId"]
7
+ }
@@ -16,12 +16,12 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var markdown_NJDPXIKD_exports = {};
20
- __export(markdown_NJDPXIKD_exports, {
19
+ var markdown_GQIPJS2F_exports = {};
20
+ __export(markdown_GQIPJS2F_exports, {
21
21
  default: () => markdown_default
22
22
  });
23
- module.exports = __toCommonJS(markdown_NJDPXIKD_exports);
24
- var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
23
+ module.exports = __toCommonJS(markdown_GQIPJS2F_exports);
24
+ var import_chunk_ZGDN3XBR = require("./chunk-ZGDN3XBR.cjs");
25
25
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
26
26
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
27
27
  var import_view = require("@codemirror/view");
@@ -33,31 +33,31 @@ var import_react_ui_editor = require("@dxos/react-ui-editor");
33
33
  var import_view2 = require("@codemirror/view");
34
34
  var import_signals_core = require("@preact/signals-core");
35
35
  var import_app_framework2 = require("@dxos/app-framework");
36
- var import_echo_schema = require("@dxos/echo-schema");
37
- var import_echo2 = require("@dxos/react-client/echo");
36
+ var import_echo2 = require("@dxos/echo");
37
+ var import_echo3 = require("@dxos/react-client/echo");
38
38
  var import_react_ui_editor2 = require("@dxos/react-ui-editor");
39
39
  var import_schema = require("@dxos/schema");
40
40
  var getName = (doc, anchor) => {
41
41
  if (doc.content) {
42
42
  const [start, end] = anchor.split(":");
43
- return (0, import_echo2.getTextInRange)((0, import_echo2.createDocAccessor)(doc.content.target, [
43
+ return (0, import_echo3.getTextInRange)((0, import_echo3.createDocAccessor)(doc.content.target, [
44
44
  "content"
45
45
  ]), start, end);
46
46
  }
47
47
  };
48
48
  var threads = (state, doc, dispatch) => {
49
- const space = doc && (0, import_echo2.getSpace)(doc);
49
+ const space = doc && (0, import_echo3.getSpace)(doc);
50
50
  if (!doc || !space || !dispatch) {
51
51
  return [
52
52
  (0, import_react_ui_editor2.comments)()
53
53
  ];
54
54
  }
55
- const query = space.db.query(import_echo_schema.Query.select(import_echo_schema.Filter.ids(doc.id)).targetOf(import_schema.AnchoredTo));
55
+ const query = space.db.query(import_echo2.Query.select(import_echo2.Filter.ids(doc.id)).targetOf(import_schema.AnchoredTo));
56
56
  const unsubscribe = query.subscribe();
57
57
  const anchors = (0, import_signals_core.computed)(() => query.objects.filter((anchor) => {
58
- const thread = anchor[import_echo_schema.RelationSourceId];
59
- return (0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ThreadType, thread) && thread.status !== "resolved";
60
- }).concat(state.drafts[(0, import_echo2.fullyQualifiedId)(doc)] ?? []));
58
+ const thread = import_echo2.Relation.getSource(anchor);
59
+ return import_echo2.Obj.instanceOf(import_chunk_ZGDN3XBR.ThreadType, thread) && thread.status !== "resolved";
60
+ }).concat(state.drafts[(0, import_echo3.fullyQualifiedId)(doc)] ?? []));
61
61
  return [
62
62
  import_view2.EditorView.domEventHandlers({
63
63
  destroy: () => {
@@ -69,7 +69,7 @@ var threads = (state, doc, dispatch) => {
69
69
  anchors.value.forEach((anchor) => {
70
70
  if (anchor.anchor) {
71
71
  const name = getName(doc, anchor.anchor);
72
- const thread = anchor[import_echo_schema.RelationSourceId];
72
+ const thread = import_echo2.Relation.getSource(anchor);
73
73
  if (name && name !== thread.name) {
74
74
  thread.name = name;
75
75
  }
@@ -77,44 +77,44 @@ var threads = (state, doc, dispatch) => {
77
77
  });
78
78
  }
79
79
  }),
80
- (0, import_react_ui_editor2.createExternalCommentSync)((0, import_echo2.fullyQualifiedId)(doc), (sink) => (0, import_signals_core.effect)(() => sink()), () => anchors.value.filter((anchor) => anchor.anchor).map((anchor) => ({
81
- id: (0, import_echo2.fullyQualifiedId)(anchor[import_echo_schema.RelationSourceId]),
80
+ (0, import_react_ui_editor2.createExternalCommentSync)((0, import_echo3.fullyQualifiedId)(doc), (sink) => (0, import_signals_core.effect)(() => sink()), () => anchors.value.filter((anchor) => anchor.anchor).map((anchor) => ({
81
+ id: (0, import_echo3.fullyQualifiedId)(import_echo2.Relation.getSource(anchor)),
82
82
  cursor: anchor.anchor
83
83
  }))),
84
84
  (0, import_react_ui_editor2.comments)({
85
- id: (0, import_echo2.fullyQualifiedId)(doc),
85
+ id: (0, import_echo3.fullyQualifiedId)(doc),
86
86
  onCreate: ({ cursor }) => {
87
87
  const name = getName(doc, cursor);
88
- void dispatch((0, import_app_framework2.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Create, {
88
+ void dispatch((0, import_app_framework2.createIntent)(import_chunk_ZGDN3XBR.ThreadAction.Create, {
89
89
  anchor: cursor,
90
90
  name,
91
91
  subject: doc
92
92
  }));
93
93
  },
94
94
  onDelete: ({ id }) => {
95
- const draft = state.drafts[(0, import_echo2.fullyQualifiedId)(doc)];
95
+ const draft = state.drafts[(0, import_echo3.fullyQualifiedId)(doc)];
96
96
  if (draft) {
97
- const index = draft.findIndex((thread2) => (0, import_echo2.fullyQualifiedId)(thread2) === id);
97
+ const index = draft.findIndex((thread2) => (0, import_echo3.fullyQualifiedId)(thread2) === id);
98
98
  if (index !== -1) {
99
99
  draft.splice(index, 1);
100
100
  }
101
101
  }
102
- const thread = query.objects.find((object) => (0, import_echo2.getSource)(object).id === id);
102
+ const thread = query.objects.find((object) => (0, import_echo3.getSource)(object).id === id);
103
103
  if (thread) {
104
104
  thread.anchor = void 0;
105
105
  }
106
106
  },
107
107
  onUpdate: ({ id, cursor }) => {
108
- const draft = state.drafts[(0, import_echo2.fullyQualifiedId)(doc)]?.find((thread) => (0, import_echo2.fullyQualifiedId)(thread) === id);
108
+ const draft = state.drafts[(0, import_echo3.fullyQualifiedId)(doc)]?.find((thread) => (0, import_echo3.fullyQualifiedId)(thread) === id);
109
109
  if (draft) {
110
- const thread = draft[import_echo_schema.RelationSourceId];
110
+ const thread = import_echo2.Relation.getSource(draft);
111
111
  thread.name = getName(doc, cursor);
112
112
  draft.anchor = cursor;
113
113
  }
114
- const relation = query.objects.find((object) => (0, import_echo2.getSource)(object).id === id);
114
+ const relation = query.objects.find((object) => (0, import_echo3.getSource)(object).id === id);
115
115
  if (relation) {
116
- const thread = (0, import_echo2.getSource)(relation);
117
- if ((0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ThreadType, thread)) {
116
+ const thread = (0, import_echo3.getSource)(relation);
117
+ if (import_echo2.Obj.instanceOf(import_chunk_ZGDN3XBR.ThreadType, thread)) {
118
118
  thread.name = getName(doc, cursor);
119
119
  relation.anchor = cursor;
120
120
  }
@@ -123,7 +123,7 @@ var threads = (state, doc, dispatch) => {
123
123
  onSelect: ({ selection }) => {
124
124
  const current = selection.current ?? selection.closest;
125
125
  if (current) {
126
- void dispatch((0, import_app_framework2.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Select, {
126
+ void dispatch((0, import_app_framework2.createIntent)(import_chunk_ZGDN3XBR.ThreadAction.Select, {
127
127
  current
128
128
  }));
129
129
  }
@@ -175,4 +175,4 @@ var selectionOverlapsComment = (state) => {
175
175
  }
176
176
  return false;
177
177
  };
178
- //# sourceMappingURL=markdown-NJDPXIKD.cjs.map
178
+ //# sourceMappingURL=markdown-GQIPJS2F.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/markdown.ts", "../../../src/extensions/threads.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { MarkdownCapabilities } from '@dxos/plugin-markdown';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { commentClickedEffect, commentsState, type EditorState, overlap } from '@dxos/react-ui-editor';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { threads } from '../extensions';\n\nexport default (context: PluginContext) =>\n contributes(MarkdownCapabilities.Extensions, [\n ({ document: doc }) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n return threads(state, doc, dispatch);\n },\n ({ document: doc }) => {\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n\n return EditorView.updateListener.of((update) => {\n if (update.docChanged || update.selectionSet) {\n state.toolbar[fullyQualifiedId(doc)] = selectionOverlapsComment(update.state);\n }\n });\n },\n ({ document: doc }) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const id = fullyQualifiedId(doc);\n\n return EditorView.updateListener.of((update) => {\n update.transactions.forEach((transaction) => {\n transaction.effects.forEach(async (effect) => {\n if (effect.is(commentClickedEffect)) {\n void dispatch(\n createIntent(DeckAction.ChangeCompanion, {\n primary: id,\n companion: `${id}${ATTENDABLE_PATH_SEPARATOR}comments`,\n }),\n );\n }\n });\n });\n });\n },\n ]);\n\nconst selectionOverlapsComment = (state: EditorState): boolean => {\n // May not be defined if thread plugin not installed.\n const commentState = state.field(commentsState, false);\n if (commentState === undefined) {\n return false;\n }\n\n const { selection } = state;\n for (const range of selection.ranges) {\n if (commentState.comments.some(({ range: commentRange }) => overlap(commentRange, range))) {\n return true;\n }\n }\n\n return false;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { computed, effect } from '@preact/signals-core';\n\nimport { createIntent, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { Filter, Obj, Query, Relation } from '@dxos/echo';\nimport { type DocumentType } from '@dxos/plugin-markdown/types';\nimport { getSpace, getTextInRange, createDocAccessor, fullyQualifiedId, getSource } from '@dxos/react-client/echo';\nimport { comments, createExternalCommentSync } from '@dxos/react-ui-editor';\nimport { AnchoredTo } from '@dxos/schema';\n\nimport { ThreadAction, ThreadType, type ThreadState } from '../types';\n\n// TODO(burdon): Factor out.\nconst getName = (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 * Construct plugins.\n */\nexport const threads = (state: ThreadState, doc?: DocumentType, dispatch?: PromiseIntentDispatcher): Extension => {\n const space = doc && getSpace(doc);\n if (!doc || !space || !dispatch) {\n // Include no-op comments extension here to ensure that the facets are always present when they are expected.\n // TODO(wittjosiah): The Editor should only look for these facets when comments are available.\n return [comments()];\n }\n\n const query = space.db.query(Query.select(Filter.ids(doc.id)).targetOf(AnchoredTo));\n const unsubscribe = query.subscribe();\n\n const anchors = computed(() =>\n query.objects\n .filter((anchor) => {\n const thread = Relation.getSource(anchor);\n return Obj.instanceOf(ThreadType, thread) && thread.status !== 'resolved';\n })\n .concat(state.drafts[fullyQualifiedId(doc)] ?? []),\n );\n\n return [\n EditorView.domEventHandlers({\n destroy: () => {\n unsubscribe();\n },\n }),\n\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n anchors.value.forEach((anchor) => {\n if (anchor.anchor) {\n // Only update if the name has changed, otherwise this will cause an infinite loop.\n // Skip if the name is empty; this means comment text was deleted, but thread name should remain.\n const name = getName(doc, anchor.anchor);\n const thread = Relation.getSource(anchor) as ThreadType;\n if (name && name !== thread.name) {\n thread.name = name;\n }\n }\n });\n }\n }),\n\n createExternalCommentSync(\n fullyQualifiedId(doc),\n (sink) => effect(() => sink()),\n () =>\n anchors.value\n .filter((anchor) => anchor.anchor)\n .map((anchor) => ({ id: fullyQualifiedId(Relation.getSource(anchor)), cursor: anchor.anchor })),\n ),\n\n comments({\n id: fullyQualifiedId(doc),\n onCreate: ({ cursor }) => {\n const name = getName(doc, cursor);\n void dispatch(createIntent(ThreadAction.Create, { anchor: cursor, name, subject: doc }));\n },\n onDelete: ({ id }) => {\n const draft = state.drafts[fullyQualifiedId(doc)];\n if (draft) {\n const index = draft.findIndex((thread) => fullyQualifiedId(thread) === id);\n if (index !== -1) {\n draft.splice(index, 1);\n }\n }\n\n const thread = query.objects.find((object) => getSource(object).id === id);\n if (thread) {\n thread.anchor = undefined;\n }\n },\n onUpdate: ({ id, cursor }) => {\n const draft = state.drafts[fullyQualifiedId(doc)]?.find((thread) => fullyQualifiedId(thread) === id);\n if (draft) {\n const thread = Relation.getSource(draft) as ThreadType;\n thread.name = getName(doc, cursor);\n draft.anchor = cursor;\n }\n\n const relation = query.objects.find((object) => getSource(object).id === id);\n if (relation) {\n const thread = getSource(relation);\n if (Obj.instanceOf(ThreadType, thread)) {\n thread.name = getName(doc, cursor);\n relation.anchor = cursor;\n }\n }\n },\n onSelect: ({ selection }) => {\n const current = selection.current ?? selection.closest;\n if (current) {\n void dispatch(createIntent(ThreadAction.Select, { current }));\n }\n },\n }),\n ];\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_view", "import_app_framework", "import_echo", "import_react_ui_editor", "getName", "doc", "anchor", "content", "start", "end", "split", "getTextInRange", "createDocAccessor", "target", "threads", "state", "dispatch", "space", "getSpace", "comments", "query", "db", "Query", "select", "Filter", "ids", "id", "targetOf", "AnchoredTo", "unsubscribe", "subscribe", "anchors", "computed", "objects", "filter", "thread", "Relation", "getSource", "Obj", "instanceOf", "ThreadType", "status", "concat", "drafts", "fullyQualifiedId", "EditorView", "domEventHandlers", "destroy", "updateListener", "of", "update", "docChanged", "value", "forEach", "name", "createExternalCommentSync", "sink", "effect", "map", "cursor", "onCreate", "createIntent", "ThreadAction", "Create", "subject", "onDelete", "draft", "index", "findIndex", "splice", "find", "object", "undefined", "onUpdate", "relation", "onSelect", "selection", "current", "closest", "Select", "context", "contributes", "MarkdownCapabilities", "Extensions", "document", "dispatchPromise", "getCapability", "Capabilities", "IntentDispatcher", "ThreadCapabilities", "MutableState", "selectionSet", "toolbar", "selectionOverlapsComment", "transactions", "transaction", "effects", "is", "commentClickedEffect", "DeckAction", "ChangeCompanion", "primary", "companion", "ATTENDABLE_PATH_SEPARATOR", "commentState", "field", "commentsState", "range", "ranges", "some", "commentRange", "overlap"]
7
+ }