@dxos/plugin-thread 0.8.1-staging.391c573 → 0.8.1-staging.5be625a

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 (169) hide show
  1. package/dist/lib/browser/ChannelContainer-ITIG7L7P.mjs +75 -0
  2. package/dist/lib/browser/ChannelContainer-ITIG7L7P.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-NAO3LZMZ.mjs → chunk-NOOMCX5E.mjs} +3 -2
  4. package/dist/lib/browser/chunk-NOOMCX5E.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-UPKU23DA.mjs → chunk-NRMJGYMA.mjs} +50 -43
  6. package/dist/lib/browser/chunk-NRMJGYMA.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-YK3ICB7G.mjs → chunk-SJPT347G.mjs} +19 -6
  8. package/dist/lib/browser/chunk-SJPT347G.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-BNEWNQBO.mjs → chunk-SMQYULO6.mjs} +16 -4
  10. package/dist/lib/browser/{chunk-BNEWNQBO.mjs.map → chunk-SMQYULO6.mjs.map} +4 -4
  11. package/dist/lib/browser/{chunk-636QDHE3.mjs → chunk-WBJLUUOK.mjs} +1 -1
  12. package/dist/lib/browser/{chunk-636QDHE3.mjs.map → chunk-WBJLUUOK.mjs.map} +2 -2
  13. package/dist/lib/browser/index.mjs +42 -31
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/{intent-resolver-FAFQ54NP.mjs → intent-resolver-FSG3ZOIM.mjs} +65 -62
  16. package/dist/lib/browser/intent-resolver-FSG3ZOIM.mjs.map +7 -0
  17. package/dist/lib/browser/{markdown-RPYOUBVR.mjs → markdown-MYZQDQFY.mjs} +6 -6
  18. package/dist/lib/browser/markdown-MYZQDQFY.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-surface-Y4MUSICN.mjs → react-surface-KOYRIK3E.mjs} +25 -32
  21. package/dist/lib/browser/react-surface-KOYRIK3E.mjs.map +7 -0
  22. package/dist/lib/browser/{settings-WQTE5AEZ.mjs → settings-5CREE7BH.mjs} +3 -3
  23. package/dist/lib/browser/{state-GNFUURIC.mjs → state-HPUFZBB7.mjs} +4 -3
  24. package/dist/lib/browser/state-HPUFZBB7.mjs.map +7 -0
  25. package/dist/lib/browser/types.mjs +2 -2
  26. package/dist/lib/node/ChannelContainer-F7345XW2.cjs +99 -0
  27. package/dist/lib/node/ChannelContainer-F7345XW2.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-CMEMMYDL.cjs → chunk-AXTPNGRI.cjs} +23 -10
  29. package/dist/lib/node/chunk-AXTPNGRI.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-RQR5Z23G.cjs → chunk-DGV5ABT6.cjs} +52 -45
  31. package/dist/lib/node/chunk-DGV5ABT6.cjs.map +7 -0
  32. package/dist/lib/node/{chunk-AWSTZ2KN.cjs → chunk-JBOC6MIE.cjs} +30 -6
  33. package/dist/lib/node/chunk-JBOC6MIE.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-F735VMTN.cjs → chunk-ONLWOUYZ.cjs} +4 -4
  35. package/dist/lib/node/{chunk-F735VMTN.cjs.map → chunk-ONLWOUYZ.cjs.map} +2 -2
  36. package/dist/lib/node/{chunk-FPWNZ6TB.cjs → chunk-VEVJBOWK.cjs} +8 -7
  37. package/dist/lib/node/chunk-VEVJBOWK.cjs.map +7 -0
  38. package/dist/lib/node/index.cjs +77 -67
  39. package/dist/lib/node/index.cjs.map +4 -4
  40. package/dist/lib/node/{intent-resolver-DVBEXJ33.cjs → intent-resolver-NBME5QSW.cjs} +79 -76
  41. package/dist/lib/node/intent-resolver-NBME5QSW.cjs.map +7 -0
  42. package/dist/lib/node/{markdown-ELRGISXE.cjs → markdown-QBQTARMD.cjs} +12 -12
  43. package/dist/lib/node/markdown-QBQTARMD.cjs.map +7 -0
  44. package/dist/lib/node/meta.json +1 -1
  45. package/dist/lib/node/{react-surface-7HLTN5XS.cjs → react-surface-ICWYXRJU.cjs} +46 -53
  46. package/dist/lib/node/react-surface-ICWYXRJU.cjs.map +7 -0
  47. package/dist/lib/node/{settings-7VQYARM5.cjs → settings-XOLYNUHH.cjs} +8 -8
  48. package/dist/lib/node/{state-TQWEZ6B3.cjs → state-JMI5ZXZI.cjs} +8 -7
  49. package/dist/lib/node/state-JMI5ZXZI.cjs.map +7 -0
  50. package/dist/lib/node/types.cjs +4 -4
  51. package/dist/lib/node/types.cjs.map +1 -1
  52. package/dist/lib/node-esm/ChannelContainer-GP6Y6JSN.mjs +76 -0
  53. package/dist/lib/node-esm/ChannelContainer-GP6Y6JSN.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-FXUATCLW.mjs → chunk-42F2DTMM.mjs} +1 -1
  55. package/dist/lib/node-esm/{chunk-FXUATCLW.mjs.map → chunk-42F2DTMM.mjs.map} +2 -2
  56. package/dist/lib/node-esm/{chunk-33NDMQQQ.mjs → chunk-FZXTP57V.mjs} +19 -6
  57. package/dist/lib/node-esm/chunk-FZXTP57V.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-CISLDOH7.mjs → chunk-TW2NME6Z.mjs} +50 -43
  59. package/dist/lib/node-esm/chunk-TW2NME6Z.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-ZJITX3TO.mjs → chunk-TXW5SIBN.mjs} +3 -2
  61. package/dist/lib/node-esm/chunk-TXW5SIBN.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-HLWJTUWZ.mjs → chunk-XQO5DGHF.mjs} +16 -4
  63. package/dist/lib/node-esm/{chunk-HLWJTUWZ.mjs.map → chunk-XQO5DGHF.mjs.map} +4 -4
  64. package/dist/lib/node-esm/index.mjs +42 -31
  65. package/dist/lib/node-esm/index.mjs.map +4 -4
  66. package/dist/lib/node-esm/{intent-resolver-DHVLBNCC.mjs → intent-resolver-QQCCKVEW.mjs} +65 -62
  67. package/dist/lib/node-esm/intent-resolver-QQCCKVEW.mjs.map +7 -0
  68. package/dist/lib/node-esm/{markdown-23OB7EZG.mjs → markdown-QO5HK24O.mjs} +6 -6
  69. package/dist/lib/node-esm/markdown-QO5HK24O.mjs.map +7 -0
  70. package/dist/lib/node-esm/meta.json +1 -1
  71. package/dist/lib/node-esm/{react-surface-AZHTTR6J.mjs → react-surface-Z4CLCKTN.mjs} +25 -32
  72. package/dist/lib/node-esm/react-surface-Z4CLCKTN.mjs.map +7 -0
  73. package/dist/lib/node-esm/{settings-SGMM7UDT.mjs → settings-32PBKVBB.mjs} +3 -3
  74. package/dist/lib/node-esm/{state-7MLR27YG.mjs → state-PSZO57LP.mjs} +4 -3
  75. package/dist/lib/node-esm/state-PSZO57LP.mjs.map +7 -0
  76. package/dist/lib/node-esm/types.mjs +2 -2
  77. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  78. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  79. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  82. package/dist/types/src/components/ChannelContainer.d.ts +9 -0
  83. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -0
  84. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/ChatContainer.d.ts +7 -1
  86. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  87. package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
  88. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  89. package/dist/types/src/components/MessageContainer.d.ts +3 -2
  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/index.d.ts +3 -2
  93. package/dist/types/src/components/index.d.ts.map +1 -1
  94. package/dist/types/src/components/testing.d.ts +44 -40
  95. package/dist/types/src/components/testing.d.ts.map +1 -1
  96. package/dist/types/src/events.d.ts +4 -0
  97. package/dist/types/src/events.d.ts.map +1 -0
  98. package/dist/types/src/hooks/analytics.d.ts +2 -1
  99. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  100. package/dist/types/src/index.d.ts +2 -0
  101. package/dist/types/src/index.d.ts.map +1 -1
  102. package/dist/types/src/meta.d.ts +2 -7
  103. package/dist/types/src/meta.d.ts.map +1 -1
  104. package/dist/types/src/translations.d.ts +2 -9
  105. package/dist/types/src/translations.d.ts.map +1 -1
  106. package/dist/types/src/types.d.ts +20 -4
  107. package/dist/types/src/types.d.ts.map +1 -1
  108. package/package.json +33 -30
  109. package/src/ThreadPlugin.tsx +11 -7
  110. package/src/capabilities/capabilities.ts +6 -0
  111. package/src/capabilities/intent-resolver.ts +39 -33
  112. package/src/capabilities/react-surface.tsx +6 -18
  113. package/src/capabilities/state.ts +1 -1
  114. package/src/components/ChannelContainer.tsx +80 -0
  115. package/src/components/Chat.stories.tsx +19 -9
  116. package/src/components/ChatContainer.tsx +27 -29
  117. package/src/components/CommentContainer.tsx +8 -2
  118. package/src/components/Comments.stories.tsx +2 -1
  119. package/src/components/MessageContainer.tsx +18 -14
  120. package/src/components/ThreadComplementary.tsx +5 -4
  121. package/src/components/index.ts +1 -1
  122. package/src/components/testing.ts +4 -27
  123. package/src/events.ts +11 -0
  124. package/src/extensions/threads.ts +2 -2
  125. package/src/hooks/analytics.ts +7 -2
  126. package/src/index.ts +2 -0
  127. package/src/meta.ts +2 -2
  128. package/src/translations.ts +1 -3
  129. package/src/types.ts +18 -4
  130. package/dist/lib/browser/ThreadContainer-6OP5AG2W.mjs +0 -19
  131. package/dist/lib/browser/ThreadContainer-6OP5AG2W.mjs.map +0 -7
  132. package/dist/lib/browser/chunk-NAO3LZMZ.mjs.map +0 -7
  133. package/dist/lib/browser/chunk-UPKU23DA.mjs.map +0 -7
  134. package/dist/lib/browser/chunk-VOMIDDNO.mjs +0 -15
  135. package/dist/lib/browser/chunk-VOMIDDNO.mjs.map +0 -7
  136. package/dist/lib/browser/chunk-YK3ICB7G.mjs.map +0 -7
  137. package/dist/lib/browser/intent-resolver-FAFQ54NP.mjs.map +0 -7
  138. package/dist/lib/browser/markdown-RPYOUBVR.mjs.map +0 -7
  139. package/dist/lib/browser/react-surface-Y4MUSICN.mjs.map +0 -7
  140. package/dist/lib/browser/state-GNFUURIC.mjs.map +0 -7
  141. package/dist/lib/node/ThreadContainer-LTKKLPXX.cjs +0 -45
  142. package/dist/lib/node/ThreadContainer-LTKKLPXX.cjs.map +0 -7
  143. package/dist/lib/node/chunk-AWSTZ2KN.cjs.map +0 -7
  144. package/dist/lib/node/chunk-BHFHFTHO.cjs +0 -50
  145. package/dist/lib/node/chunk-BHFHFTHO.cjs.map +0 -7
  146. package/dist/lib/node/chunk-CMEMMYDL.cjs.map +0 -7
  147. package/dist/lib/node/chunk-FPWNZ6TB.cjs.map +0 -7
  148. package/dist/lib/node/chunk-RQR5Z23G.cjs.map +0 -7
  149. package/dist/lib/node/intent-resolver-DVBEXJ33.cjs.map +0 -7
  150. package/dist/lib/node/markdown-ELRGISXE.cjs.map +0 -7
  151. package/dist/lib/node/react-surface-7HLTN5XS.cjs.map +0 -7
  152. package/dist/lib/node/state-TQWEZ6B3.cjs.map +0 -7
  153. package/dist/lib/node-esm/ThreadContainer-SV74JFRH.mjs +0 -20
  154. package/dist/lib/node-esm/ThreadContainer-SV74JFRH.mjs.map +0 -7
  155. package/dist/lib/node-esm/chunk-33NDMQQQ.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-CISLDOH7.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-PJPVEO7E.mjs +0 -17
  158. package/dist/lib/node-esm/chunk-PJPVEO7E.mjs.map +0 -7
  159. package/dist/lib/node-esm/chunk-ZJITX3TO.mjs.map +0 -7
  160. package/dist/lib/node-esm/intent-resolver-DHVLBNCC.mjs.map +0 -7
  161. package/dist/lib/node-esm/markdown-23OB7EZG.mjs.map +0 -7
  162. package/dist/lib/node-esm/react-surface-AZHTTR6J.mjs.map +0 -7
  163. package/dist/lib/node-esm/state-7MLR27YG.mjs.map +0 -7
  164. package/dist/types/src/components/ThreadContainer.d.ts +0 -7
  165. package/dist/types/src/components/ThreadContainer.d.ts.map +0 -1
  166. package/src/components/ThreadContainer.tsx +0 -22
  167. /package/dist/lib/browser/{settings-WQTE5AEZ.mjs.map → settings-5CREE7BH.mjs.map} +0 -0
  168. /package/dist/lib/node/{settings-7VQYARM5.cjs.map → settings-XOLYNUHH.cjs.map} +0 -0
  169. /package/dist/lib/node-esm/{settings-SGMM7UDT.mjs.map → settings-32PBKVBB.mjs.map} +0 -0
@@ -26,17 +26,16 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var react_surface_7HLTN5XS_exports = {};
30
- __export(react_surface_7HLTN5XS_exports, {
29
+ var react_surface_ICWYXRJU_exports = {};
30
+ __export(react_surface_ICWYXRJU_exports, {
31
31
  default: () => react_surface_default
32
32
  });
33
- module.exports = __toCommonJS(react_surface_7HLTN5XS_exports);
34
- var import_chunk_BHFHFTHO = require("./chunk-BHFHFTHO.cjs");
35
- var import_chunk_RQR5Z23G = require("./chunk-RQR5Z23G.cjs");
36
- var import_chunk_AWSTZ2KN = require("./chunk-AWSTZ2KN.cjs");
37
- var import_chunk_CMEMMYDL = require("./chunk-CMEMMYDL.cjs");
38
- var import_chunk_FPWNZ6TB = require("./chunk-FPWNZ6TB.cjs");
39
- var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
33
+ module.exports = __toCommonJS(react_surface_ICWYXRJU_exports);
34
+ var import_chunk_DGV5ABT6 = require("./chunk-DGV5ABT6.cjs");
35
+ var import_chunk_JBOC6MIE = require("./chunk-JBOC6MIE.cjs");
36
+ var import_chunk_AXTPNGRI = require("./chunk-AXTPNGRI.cjs");
37
+ var import_chunk_VEVJBOWK = require("./chunk-VEVJBOWK.cjs");
38
+ var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
40
39
  var import_react = __toESM(require("react"));
41
40
  var import_app_framework = require("@dxos/app-framework");
42
41
  var import_local_storage = require("@dxos/local-storage");
@@ -61,19 +60,19 @@ var import_react_ui_theme2 = require("@dxos/react-ui-theme");
61
60
  var import_react7 = __toESM(require("react"));
62
61
  var import_app_framework2 = require("@dxos/app-framework");
63
62
  var import_plugin_space = require("@dxos/plugin-space");
64
- var import_types2 = require("@dxos/plugin-space/types");
65
63
  var import_echo4 = require("@dxos/react-client/echo");
66
64
  var import_halo2 = require("@dxos/react-client/halo");
67
65
  var import_react_ui3 = require("@dxos/react-ui");
68
66
  var import_react_ui_attention = require("@dxos/react-ui-attention");
69
67
  var import_react_ui_tabs = require("@dxos/react-ui-tabs");
68
+ var import_schema = require("@dxos/schema");
70
69
  var import_util2 = require("@dxos/util");
71
70
  var import_react8 = __toESM(require("react"));
72
71
  var import_react_ui_form = require("@dxos/react-ui-form");
73
72
  var sizeClass = (0, import_react_ui_theme.getSize)(4);
74
73
  var commentControlClassNames = "!p-1 !min-bs-0 transition-opacity";
75
74
  var ToggleResolvedButton = ({ isResolved, onResolve }) => {
76
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
75
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_ONLWOUYZ.THREAD_PLUGIN);
77
76
  const label = t(isResolved ? "mark as unresolved label" : "mark as resolved label");
78
77
  return /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Root, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Trigger, {
79
78
  asChild: true
@@ -95,7 +94,7 @@ var ToggleResolvedButton = ({ isResolved, onResolve }) => {
95
94
  }))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Portal, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Content, null, label, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Arrow, null))));
96
95
  };
97
96
  var DeleteThreadButton = ({ onDelete }) => {
98
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
97
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_ONLWOUYZ.THREAD_PLUGIN);
99
98
  const label = t("delete thread label");
100
99
  return /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Root, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Trigger, {
101
100
  asChild: true
@@ -119,11 +118,11 @@ var CommentContainer = ({ thread, detached, current, onAttend, onComment, onReso
119
118
  const identity = (0, import_halo.useIdentity)();
120
119
  const space = (0, import_echo2.getSpace)(thread);
121
120
  const members = (0, import_echo2.useMembers)(space?.key);
122
- const activity = (0, import_chunk_AWSTZ2KN.useStatus)(space, (0, import_echo2.fullyQualifiedId)(thread));
123
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
121
+ const activity = (0, import_chunk_JBOC6MIE.useStatus)(space, (0, import_echo2.fullyQualifiedId)(thread));
122
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_ONLWOUYZ.THREAD_PLUGIN);
124
123
  const threadScrollRef = (0, import_react4.useRef)(null);
125
124
  const { themeMode } = (0, import_react_ui.useThemeContext)();
126
- const textboxMetadata = (0, import_chunk_RQR5Z23G.getMessageMetadata)((0, import_echo2.fullyQualifiedId)(thread), identity);
125
+ const textboxMetadata = (0, import_chunk_DGV5ABT6.getMessageMetadata)((0, import_echo2.fullyQualifiedId)(thread), identity);
127
126
  const [_count, _setCount] = (0, import_react4.useState)(0);
128
127
  const rerenderEditor = () => _setCount((count) => count + 1);
129
128
  const messageRef = (0, import_react4.useRef)("");
@@ -137,7 +136,7 @@ var CommentContainer = ({ thread, detached, current, onAttend, onComment, onReso
137
136
  (0, import_react_ui_editor.listener)({
138
137
  onChange: (text) => messageRef.current = text
139
138
  }),
140
- import_chunk_RQR5Z23G.command
139
+ import_chunk_DGV5ABT6.command
141
140
  ], [
142
141
  _count
143
142
  ]);
@@ -198,8 +197,9 @@ var CommentContainer = ({ thread, detached, current, onAttend, onComment, onReso
198
197
  onResolve: handleResolve
199
198
  }), onThreadDelete && /* @__PURE__ */ import_react4.default.createElement(DeleteThreadButton, {
200
199
  onDelete: handleThreadDelete
201
- }))), import_live_object.RefArray.allResolvedTargets(thread.messages?.filter(import_util.isNonNullable) ?? []).map((message) => /* @__PURE__ */ import_react4.default.createElement(import_chunk_RQR5Z23G.MessageContainer, {
200
+ }))), import_live_object.RefArray.targets(thread.messages?.filter(import_util.isNonNullable) ?? []).map((message) => /* @__PURE__ */ import_react4.default.createElement(import_chunk_DGV5ABT6.MessageContainer, {
202
201
  key: message.id,
202
+ editable: true,
203
203
  message,
204
204
  members,
205
205
  onDelete: handleMessageDelete
@@ -216,7 +216,7 @@ var CommentContainer = ({ thread, detached, current, onAttend, onComment, onReso
216
216
  }));
217
217
  };
218
218
  var CommentsContainer = ({ threads, detached = [], currentId, showResolvedThreads, ...props }) => {
219
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
219
+ const { t } = (0, import_react_ui2.useTranslation)(import_chunk_ONLWOUYZ.THREAD_PLUGIN);
220
220
  const filteredThreads = showResolvedThreads ? threads : threads.filter((thread) => !(thread?.status === "resolved"));
221
221
  (0, import_react6.useEffect)(() => {
222
222
  if (currentId) {
@@ -255,8 +255,8 @@ var CommentsContainer = ({ threads, detached = [], currentId, showResolvedThread
255
255
  var ThreadComplementary = ({ subject }) => {
256
256
  const { dispatchPromise: dispatch } = (0, import_app_framework2.useIntentDispatcher)();
257
257
  const identity = (0, import_halo2.useIdentity)();
258
- const { t } = (0, import_react_ui3.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
259
- const { state, getViewState } = (0, import_app_framework2.useCapability)(import_chunk_FPWNZ6TB.ThreadCapabilities.MutableState);
258
+ const { t } = (0, import_react_ui3.useTranslation)(import_chunk_ONLWOUYZ.THREAD_PLUGIN);
259
+ const { state, getViewState } = (0, import_app_framework2.useCapability)(import_chunk_VEVJBOWK.ThreadCapabilities.MutableState);
260
260
  const viewState = getViewState((0, import_echo4.fullyQualifiedId)(subject));
261
261
  const { showResolvedThreads } = viewState;
262
262
  const onChangeViewState = (0, import_react7.useCallback)((nextValue) => {
@@ -274,7 +274,7 @@ var ThreadComplementary = ({ subject }) => {
274
274
  createSort,
275
275
  subject
276
276
  ]);
277
- const threadObjects = import_echo4.RefArray.allResolvedTargets(subject.threads ?? []);
277
+ const threadObjects = import_echo4.RefArray.targets(subject.threads ?? []);
278
278
  const threads = (0, import_react7.useMemo)(() => {
279
279
  return threadObjects.concat(drafts ?? []).filter(import_util2.isNonNullable);
280
280
  }, [
@@ -316,14 +316,19 @@ var ThreadComplementary = ({ subject }) => {
316
316
  subject
317
317
  ]);
318
318
  const handleComment = (0, import_react7.useCallback)(async (thread, message) => {
319
- thread.messages.push((0, import_echo4.makeRef)((0, import_echo4.create)(import_types2.MessageType, {
319
+ thread.messages.push((0, import_echo4.makeRef)((0, import_echo4.create)(import_schema.MessageType, {
320
320
  sender: {
321
321
  identityKey: identity?.identityKey.toHex()
322
322
  },
323
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
324
- text: message
323
+ created: (/* @__PURE__ */ new Date()).toISOString(),
324
+ blocks: [
325
+ {
326
+ type: "text",
327
+ text: message
328
+ }
329
+ ]
325
330
  })));
326
- await dispatch((0, import_app_framework2.createIntent)(import_chunk_CMEMMYDL.ThreadAction.OnMessageAdd, {
331
+ await dispatch((0, import_app_framework2.createIntent)(import_chunk_AXTPNGRI.ThreadAction.OnMessageAdd, {
327
332
  thread,
328
333
  subject
329
334
  }));
@@ -333,19 +338,19 @@ var ThreadComplementary = ({ subject }) => {
333
338
  identity,
334
339
  subject
335
340
  ]);
336
- const handleResolve = (0, import_react7.useCallback)((thread) => dispatch((0, import_app_framework2.createIntent)(import_chunk_CMEMMYDL.ThreadAction.ToggleResolved, {
341
+ const handleResolve = (0, import_react7.useCallback)((thread) => dispatch((0, import_app_framework2.createIntent)(import_chunk_AXTPNGRI.ThreadAction.ToggleResolved, {
337
342
  thread
338
343
  })), [
339
344
  dispatch
340
345
  ]);
341
- const handleThreadDelete = (0, import_react7.useCallback)((thread) => dispatch((0, import_app_framework2.createIntent)(import_chunk_CMEMMYDL.ThreadAction.Delete, {
346
+ const handleThreadDelete = (0, import_react7.useCallback)((thread) => dispatch((0, import_app_framework2.createIntent)(import_chunk_AXTPNGRI.ThreadAction.Delete, {
342
347
  thread,
343
348
  subject
344
349
  })), [
345
350
  dispatch,
346
351
  subject
347
352
  ]);
348
- const handleMessageDelete = (0, import_react7.useCallback)((thread, messageId) => dispatch((0, import_app_framework2.createIntent)(import_chunk_CMEMMYDL.ThreadAction.DeleteMessage, {
353
+ const handleMessageDelete = (0, import_react7.useCallback)((thread, messageId) => dispatch((0, import_app_framework2.createIntent)(import_chunk_AXTPNGRI.ThreadAction.DeleteMessage, {
349
354
  thread,
350
355
  subject,
351
356
  messageId
@@ -385,38 +390,26 @@ var ThreadComplementary = ({ subject }) => {
385
390
  var ThreadSettings = ({ settings }) => {
386
391
  return /* @__PURE__ */ import_react8.default.createElement(import_react_ui_form.DeprecatedFormContainer, null);
387
392
  };
388
- var ThreadContainer = (0, import_react2.lazy)(() => import("./ThreadContainer-LTKKLPXX.cjs"));
393
+ var ChannelContainer = (0, import_react2.lazy)(() => import("./ChannelContainer-F7345XW2.cjs"));
389
394
  var react_surface_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactSurface, [
390
395
  (0, import_app_framework.createSurface)({
391
- id: `${import_chunk_F735VMTN.THREAD_PLUGIN}/channel`,
396
+ id: `${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/channel`,
392
397
  role: "article",
393
- filter: (data) => data.subject instanceof import_types.ChannelType && !!data.subject.threads[0],
394
- component: ({ data, role }) => {
398
+ filter: (data) => data.subject instanceof import_types.ChannelType,
399
+ component: ({ data: { subject: channel }, role }) => {
395
400
  const layout = (0, import_app_framework.useLayout)();
396
- const channel = data.subject;
397
- void channel.threads[0].load();
398
- const thread = channel.threads[0].target;
399
- if (!thread) {
400
- return null;
401
- }
402
401
  const currentPosition = layout.active.findIndex((id) => id === channel.id);
403
- if (currentPosition > 0) {
404
- const objectToTheLeft = layout.active[currentPosition - 1];
405
- const context = (0, import_echo.getSpace)(channel)?.db.getObjectById(objectToTheLeft);
406
- return /* @__PURE__ */ import_react.default.createElement(ThreadContainer, {
407
- role,
408
- thread,
409
- context
410
- });
411
- }
412
- return /* @__PURE__ */ import_react.default.createElement(ThreadContainer, {
402
+ const objectToTheLeft = layout.active[currentPosition - 1];
403
+ const context = currentPosition > 0 ? (0, import_echo.getSpace)(channel)?.db.getObjectById(objectToTheLeft) : void 0;
404
+ return /* @__PURE__ */ import_react.default.createElement(ChannelContainer, {
413
405
  role,
414
- thread
406
+ channel,
407
+ context
415
408
  });
416
409
  }
417
410
  }),
418
411
  (0, import_app_framework.createSurface)({
419
- id: `${import_chunk_F735VMTN.THREAD_PLUGIN}/thread`,
412
+ id: `${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/thread`,
420
413
  role: "complementary--comments",
421
414
  filter: (data) => !!data.subject && typeof data.subject === "object" && "threads" in data.subject && Array.isArray(data.subject.threads) && !(data.subject instanceof import_types.ChannelType),
422
415
  component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(ThreadComplementary, {
@@ -424,12 +417,12 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
424
417
  })
425
418
  }),
426
419
  (0, import_app_framework.createSurface)({
427
- id: `${import_chunk_F735VMTN.THREAD_PLUGIN}/settings`,
420
+ id: `${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/settings`,
428
421
  role: "article",
429
- filter: (data) => data.subject instanceof import_local_storage.SettingsStore && data.subject.prefix === import_chunk_F735VMTN.THREAD_PLUGIN,
422
+ filter: (data) => data.subject instanceof import_local_storage.SettingsStore && data.subject.prefix === import_chunk_ONLWOUYZ.THREAD_PLUGIN,
430
423
  component: ({ data: { subject } }) => /* @__PURE__ */ import_react.default.createElement(ThreadSettings, {
431
424
  settings: subject.value
432
425
  })
433
426
  })
434
427
  ]);
435
- //# sourceMappingURL=react-surface-7HLTN5XS.cjs.map
428
+ //# sourceMappingURL=react-surface-ICWYXRJU.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/index.ts", "../../../src/components/CommentContainer.tsx", "../../../src/components/CommentsContainer.tsx", "../../../src/components/ThreadComplementary.tsx", "../../../src/components/ThreadSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useLayout } from '@dxos/app-framework';\nimport { type Ref } from '@dxos/echo-schema';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { ChannelType, type ThreadType } from '@dxos/plugin-space/types';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { ChannelContainer, ThreadComplementary, ThreadSettings } from '../components';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadSettingsProps } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${THREAD_PLUGIN}/channel`,\n role: 'article',\n filter: (data): data is { subject: ChannelType } => data.subject instanceof ChannelType,\n component: ({ data: { subject: channel }, role }) => {\n const layout = useLayout();\n const currentPosition = layout.active.findIndex((id) => id === channel.id);\n const objectToTheLeft = layout.active[currentPosition - 1];\n const context = currentPosition > 0 ? getSpace(channel)?.db.getObjectById(objectToTheLeft) : undefined;\n return <ChannelContainer role={role} channel={channel} context={context} />;\n },\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/thread`,\n role: 'complementary--comments',\n filter: (data): data is { subject: { threads: Ref<ThreadType>[] } } =>\n !!data.subject &&\n typeof data.subject === 'object' &&\n 'threads' in data.subject &&\n Array.isArray(data.subject.threads) &&\n !(data.subject instanceof ChannelType),\n component: ({ data }) => <ThreadComplementary subject={data.subject} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<ThreadSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === THREAD_PLUGIN,\n component: ({ data: { subject } }) => <ThreadSettings settings={subject.value} />,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const ChannelContainer = lazy(() => import('./ChannelContainer'));\n\n// TODO(wittjosiah): Suspense boundary for sidebar?\nexport * from './CommentContainer';\nexport * from './CommentsContainer';\nexport * from './ChatContainer';\nexport * from './MessageContainer';\nexport * from './ThreadComplementary';\nexport * from './ThreadSettings';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CheckCircle, X } from '@phosphor-icons/react';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { RefArray } from '@dxos/live-object';\nimport { fullyQualifiedId, getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Button, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, ThreadHeading } from '@dxos/react-ui-thread';\nimport { isNonNullable } from '@dxos/util';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { type ThreadContainerProps } from './types';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nconst sizeClass = getSize(4);\n\n// TODO(thure): #8149\nconst commentControlClassNames = '!p-1 !min-bs-0 transition-opacity';\n\nconst ToggleResolvedButton = ({\n isResolved,\n onResolve,\n}: {\n isResolved: boolean | undefined;\n onResolve: () => void;\n}) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const label = t(isResolved ? 'mark as unresolved label' : 'mark as resolved label');\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid='thread.toggle-resolved'\n onClick={onResolve}\n classNames={[commentControlClassNames, !isResolved && hoverableControlItem]}\n >\n <span className='sr-only'>{label}</span>\n {isResolved ? <CheckCircle className={sizeClass} weight='fill' /> : <CheckCircle className={sizeClass} />}\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n {label}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nconst DeleteThreadButton = ({ onDelete }: { onDelete: () => void }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const label = t('delete thread label');\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid='thread.delete'\n onClick={onDelete}\n classNames={[commentControlClassNames, hoverableControlItem]}\n >\n <span className='sr-only'>{label}</span>\n <X className={sizeClass} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-30'>\n {label}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nexport const CommentContainer = ({\n thread,\n detached,\n current,\n onAttend,\n onComment,\n onResolve,\n onMessageDelete,\n onThreadDelete,\n}: ThreadContainerProps) => {\n const identity = useIdentity()!;\n const space = getSpace(thread);\n const members = useMembers(space?.key);\n const activity = useStatus(space, fullyQualifiedId(thread));\n const { t } = useTranslation(THREAD_PLUGIN);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(fullyQualifiedId(thread), identity);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: (text) => (messageRef.current = text) }),\n command,\n ],\n [_count],\n );\n\n // TODO(thure): Factor out.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n const handleAttend = useCallback(() => onAttend?.(thread), [onAttend, thread]);\n const handleResolve = useCallback(() => onResolve?.(thread), [onResolve, thread]);\n const handleMessageDelete = useCallback((id: string) => onMessageDelete?.(thread, id), [onMessageDelete, thread]);\n const handleThreadDelete = useCallback(() => onThreadDelete?.(thread), [onThreadDelete, thread]);\n\n const handleComment: MessageTextboxProps['onSend'] = useCallback(() => {\n if (!messageRef.current) {\n return false;\n }\n\n onComment?.(thread, messageRef.current);\n messageRef.current = '';\n scrollToEnd('instant');\n rerenderEditor();\n\n return true;\n }, [thread, identity]);\n\n return (\n <Thread onClickCapture={handleAttend} onFocusCapture={handleAttend} current={current} id={fullyQualifiedId(thread)}>\n <div\n role='none'\n className={mx(\n 'col-span-2 grid grid-cols-[var(--rail-size)_1fr_min-content]',\n hoverableControls,\n hoverableFocusedWithinControls,\n )}\n >\n {detached ? (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <ThreadHeading detached>{thread.name}</ThreadHeading>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-30' side='top'>\n {t('detached thread label')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n ) : (\n <ThreadHeading>{thread.name}</ThreadHeading>\n )}\n <div className='flex flex-row items-center pli-1'>\n {thread.status === 'staged' && <Tag palette='neutral'>{t('draft button')}</Tag>}\n {onResolve && !(thread?.status === 'staged') && (\n <ToggleResolvedButton isResolved={thread?.status === 'resolved'} onResolve={handleResolve} />\n )}\n {onThreadDelete && <DeleteThreadButton onDelete={handleThreadDelete} />}\n </div>\n </div>\n {/** TODO(dmaretskyi): How's `thread.messages` undefined? */}\n {RefArray.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => (\n <MessageContainer\n key={message.id}\n editable\n message={message}\n members={members}\n onDelete={handleMessageDelete}\n />\n ))}\n {/*\n TODO(wittjosiah): Can't autofocus this generally.\n There can be multiple threads with inputs and they can't all be focused.\n Also, it steals focus from documents when first rendered.\n Need to find a way to autofocus in one scenario only: when a new thread is created.\n */}\n <MessageTextbox extensions={extensions} onSend={handleComment} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n </Thread>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { ChatText } from '@phosphor-icons/react';\nimport React, { useEffect } from 'react';\n\nimport { type ThreadType } from '@dxos/plugin-space/types';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { useTranslation, Trans } from '@dxos/react-ui';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\n\nimport { CommentContainer } from './CommentContainer';\nimport { type ThreadContainerProps } from './types';\nimport { THREAD_PLUGIN } from '../meta';\n\nexport type ThreadsContainerProps = Omit<ThreadContainerProps, 'thread' | 'detached' | 'current' | 'autoFocus'> & {\n threads: ThreadType[];\n /**\n * Threads that are no longer anchored to a position in the object.\n */\n detached?: string[];\n currentId?: string;\n showResolvedThreads?: boolean;\n};\n\n/**\n * Comment threads.\n */\nexport const CommentsContainer = ({\n threads,\n detached = [],\n currentId,\n showResolvedThreads,\n ...props\n}: ThreadsContainerProps) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const filteredThreads = showResolvedThreads ? threads : threads.filter((thread) => !(thread?.status === 'resolved'));\n\n useEffect(() => {\n if (currentId) {\n document.getElementById(currentId)?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n }, [currentId]);\n\n return (\n <>\n {filteredThreads.length > 0 ? (\n filteredThreads.map((thread) => {\n const threadId = fullyQualifiedId(thread);\n return (\n <CommentContainer\n key={threadId}\n thread={thread}\n current={currentId === threadId}\n detached={detached.includes(threadId)}\n {...props}\n />\n );\n })\n ) : (\n <div\n role='alert'\n className={mx(\n descriptionText,\n 'place-self-center border border-dashed border-unAccent rounded-lg text-center p-4 m-4',\n )}\n >\n <h2 className='mbe-2 font-medium text-baseText'>{t('no comments title')}</h2>\n <p>\n <Trans\n {...{\n t,\n i18nKey: 'no comments message',\n components: {\n commentIcon: <ChatText className='inline-block' />,\n },\n }}\n />\n </p>\n </div>\n )}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo } from 'react';\n\nimport { createIntent, LayoutAction, useCapability, useCapabilities, useIntentDispatcher } from '@dxos/app-framework';\nimport { ThreadCapabilities } from '@dxos/plugin-space';\nimport { type ThreadType } from '@dxos/plugin-space/types';\nimport { create, fullyQualifiedId, makeRef, RefArray } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { MessageType } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { ThreadCapabilities as LocalThreadCapabilities } from '../capabilities';\nimport { CommentsContainer } from '../components';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ThreadAction } from '../types';\n\nexport const ThreadComplementary = ({ subject }: { subject: any }) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const identity = useIdentity();\n const { t } = useTranslation(THREAD_PLUGIN);\n\n const { state, getViewState } = useCapability(LocalThreadCapabilities.MutableState);\n const viewState = getViewState(fullyQualifiedId(subject));\n const { showResolvedThreads } = viewState;\n const onChangeViewState = useCallback(\n (nextValue: string) => {\n viewState.showResolvedThreads = nextValue === 'all';\n },\n [viewState],\n );\n const drafts = state.drafts[fullyQualifiedId(subject)];\n\n const threadsIntegrators = useCapabilities(ThreadCapabilities.Thread);\n const createSort = useMemo(\n () => threadsIntegrators.find((p) => p.predicate(subject))?.createSort,\n [threadsIntegrators, subject],\n );\n const sort = useMemo(() => createSort?.(subject), [createSort, subject]);\n\n const threadObjects = RefArray.targets(subject.threads ?? []);\n\n const threads = useMemo(() => {\n return threadObjects.concat(drafts ?? []).filter(isNonNullable) as ThreadType[];\n }, [JSON.stringify(threadObjects), JSON.stringify(drafts)]);\n\n const detachedIds = useMemo(() => {\n return threads.filter(({ anchor }) => !anchor).map((thread) => fullyQualifiedId(thread));\n }, [threads]);\n\n useEffect(() => {\n if (!sort) {\n return;\n }\n threads.sort((a, b) => sort(a?.anchor, b?.anchor));\n }, [sort, threads]);\n\n const attended = useAttended();\n const qualifiedSubjectId = fullyQualifiedId(subject);\n\n const handleAttend = useCallback(\n (thread: ThreadType) => {\n const threadId = fullyQualifiedId(thread);\n if (state.current !== threadId) {\n state.current = threadId;\n\n // TODO(wittjosiah): Should this be a thread-specific intent?\n // The layout doesn't know about threads and this working depends on other plugins conditionally handling it.\n // This may be overloading this intent or highjacking its intended purpose.\n void dispatch(\n createIntent(LayoutAction.ScrollIntoView, {\n part: 'current',\n subject: fullyQualifiedId(subject),\n options: {\n cursor: thread.anchor,\n ref: threadId,\n },\n }),\n );\n }\n },\n [state.current, dispatch, subject],\n );\n\n const handleComment = useCallback(\n async (thread: ThreadType, message: string) => {\n thread.messages.push(\n makeRef(\n create(MessageType, {\n sender: { identityKey: identity?.identityKey.toHex() },\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text: message }],\n // TODO(wittjosiah): Context based on attention.\n // context: context ? makeRef(context) : undefined,\n }),\n ),\n );\n\n await dispatch(createIntent(ThreadAction.OnMessageAdd, { thread, subject }));\n\n state.current = fullyQualifiedId(thread);\n },\n [dispatch, identity, subject],\n );\n\n const handleResolve = useCallback(\n (thread: ThreadType) => dispatch(createIntent(ThreadAction.ToggleResolved, { thread })),\n [dispatch],\n );\n\n const handleThreadDelete = useCallback(\n (thread: ThreadType) => dispatch(createIntent(ThreadAction.Delete, { thread, subject })),\n [dispatch, subject],\n );\n\n const handleMessageDelete = useCallback(\n (thread: ThreadType, messageId: string) =>\n dispatch(createIntent(ThreadAction.DeleteMessage, { thread, subject, messageId })),\n [dispatch, subject],\n );\n\n const comments = (\n <CommentsContainer\n threads={threads}\n detached={detachedIds}\n currentId={attended.includes(qualifiedSubjectId) ? state.current : undefined}\n showResolvedThreads={showResolvedThreads}\n onAttend={handleAttend}\n onComment={handleComment}\n onResolve={handleResolve}\n onMessageDelete={handleMessageDelete}\n onThreadDelete={handleThreadDelete}\n />\n );\n\n return (\n <Tabs.Root\n value={showResolvedThreads ? 'all' : 'unresolved'}\n onValueChange={onChangeViewState}\n orientation='horizontal'\n >\n <Tabs.Tablist classNames='p-1 gap-1 bs-[--rail-action] border-be border-separator'>\n <Tabs.Tab value='unresolved' classNames='text-sm'>\n {t('show unresolved label')}\n </Tabs.Tab>\n <Tabs.Tab value='all' classNames='text-sm'>\n {t('show all label')}\n </Tabs.Tab>\n </Tabs.Tablist>\n <Tabs.Tabpanel value='all'>{showResolvedThreads && comments}</Tabs.Tabpanel>\n <Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>\n </Tabs.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\n// import { useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer } from '@dxos/react-ui-form';\n\n// import { THREAD_PLUGIN } from '../meta';\nimport type { ThreadSettingsProps } from '../types';\n\nexport const ThreadSettings = ({ settings }: { settings: ThreadSettingsProps }) => {\n // const { t } = useTranslation(THREAD_PLUGIN);\n\n return <DeprecatedFormContainer></DeprecatedFormContainer>;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_echo", "import_react_ui", "import_react_ui_theme", "import_app_framework", "import_halo", "import_util", "sizeClass", "getSize", "commentControlClassNames", "ToggleResolvedButton", "isResolved", "onResolve", "t", "useTranslation", "THREAD_PLUGIN", "label", "React", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "data-testid", "onClick", "classNames", "hoverableControlItem", "span", "className", "CheckCircle", "weight", "Portal", "Content", "Arrow", "DeleteThreadButton", "onDelete", "X", "CommentContainer", "thread", "detached", "current", "onAttend", "onComment", "onMessageDelete", "onThreadDelete", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "activity", "useStatus", "fullyQualifiedId", "threadScrollRef", "useRef", "themeMode", "useThemeContext", "textboxMetadata", "getMessageMetadata", "_count", "_setCount", "useState", "rerenderEditor", "count", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "handleAttend", "useCallback", "handleResolve", "handleMessageDelete", "id", "handleThreadDelete", "handleComment", "Thread", "onClickCapture", "onFocusCapture", "div", "role", "mx", "hoverableControls", "hoverableFocusedWithinControls", "ThreadHeading", "name", "side", "status", "Tag", "palette", "RefArray", "targets", "messages", "filter", "isNonNullable", "map", "message", "MessageContainer", "editable", "MessageTextbox", "onSend", "ThreadFooter", "ref", "CommentsContainer", "threads", "currentId", "showResolvedThreads", "props", "filteredThreads", "useEffect", "document", "getElementById", "length", "threadId", "includes", "descriptionText", "h2", "p", "Trans", "i18nKey", "components", "commentIcon", "ChatText", "ThreadComplementary", "subject", "dispatchPromise", "dispatch", "useIntentDispatcher", "state", "getViewState", "useCapability", "LocalThreadCapabilities", "MutableState", "viewState", "onChangeViewState", "nextValue", "drafts", "threadsIntegrators", "useCapabilities", "ThreadCapabilities", "createSort", "find", "predicate", "sort", "threadObjects", "concat", "JSON", "stringify", "detachedIds", "anchor", "a", "b", "attended", "useAttended", "qualifiedSubjectId", "createIntent", "LayoutAction", "ScrollIntoView", "part", "options", "cursor", "push", "makeRef", "create", "MessageType", "sender", "identityKey", "toHex", "created", "Date", "toISOString", "blocks", "type", "ThreadAction", "OnMessageAdd", "ToggleResolved", "Delete", "messageId", "DeleteMessage", "comments", "undefined", "Tabs", "value", "onValueChange", "orientation", "Tablist", "Tab", "Tabpanel", "ThreadSettings", "settings", "DeprecatedFormContainer", "ChannelContainer", "lazy", "contributes", "Capabilities", "ReactSurface", "createSurface", "data", "ChannelType", "component", "channel", "layout", "useLayout", "currentPosition", "active", "findIndex", "objectToTheLeft", "context", "db", "getObjectById", "Array", "isArray", "SettingsStore", "prefix"]
7
+ }
@@ -16,21 +16,21 @@ 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 settings_7VQYARM5_exports = {};
20
- __export(settings_7VQYARM5_exports, {
19
+ var settings_XOLYNUHH_exports = {};
20
+ __export(settings_XOLYNUHH_exports, {
21
21
  default: () => settings_default
22
22
  });
23
- module.exports = __toCommonJS(settings_7VQYARM5_exports);
24
- var import_chunk_CMEMMYDL = require("./chunk-CMEMMYDL.cjs");
25
- var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
23
+ module.exports = __toCommonJS(settings_XOLYNUHH_exports);
24
+ var import_chunk_AXTPNGRI = require("./chunk-AXTPNGRI.cjs");
25
+ var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
26
26
  var import_app_framework = require("@dxos/app-framework");
27
27
  var import_live_object = require("@dxos/live-object");
28
28
  var settings_default = () => {
29
29
  const settings = (0, import_live_object.create)({});
30
30
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.Settings, {
31
- schema: import_chunk_CMEMMYDL.ThreadSettingsSchema,
32
- prefix: import_chunk_F735VMTN.THREAD_PLUGIN,
31
+ schema: import_chunk_AXTPNGRI.ThreadSettingsSchema,
32
+ prefix: import_chunk_ONLWOUYZ.THREAD_PLUGIN,
33
33
  value: settings
34
34
  });
35
35
  };
36
- //# sourceMappingURL=settings-7VQYARM5.cjs.map
36
+ //# sourceMappingURL=settings-XOLYNUHH.cjs.map
@@ -16,13 +16,13 @@ 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 state_TQWEZ6B3_exports = {};
20
- __export(state_TQWEZ6B3_exports, {
19
+ var state_JMI5ZXZI_exports = {};
20
+ __export(state_JMI5ZXZI_exports, {
21
21
  default: () => state_default
22
22
  });
23
- module.exports = __toCommonJS(state_TQWEZ6B3_exports);
24
- var import_chunk_FPWNZ6TB = require("./chunk-FPWNZ6TB.cjs");
25
- var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
23
+ module.exports = __toCommonJS(state_JMI5ZXZI_exports);
24
+ var import_chunk_VEVJBOWK = require("./chunk-VEVJBOWK.cjs");
25
+ var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
26
26
  var import_app_framework = require("@dxos/app-framework");
27
27
  var import_live_object = require("@dxos/live-object");
28
28
  var initialViewState = {
@@ -30,6 +30,7 @@ var initialViewState = {
30
30
  };
31
31
  var state_default = () => {
32
32
  const state = (0, import_live_object.create)({
33
+ activities: {},
33
34
  drafts: {}
34
35
  });
35
36
  const viewStore = (0, import_live_object.create)({});
@@ -41,9 +42,9 @@ var state_default = () => {
41
42
  }
42
43
  return viewStore[subjectId];
43
44
  };
44
- return (0, import_app_framework.contributes)(import_chunk_FPWNZ6TB.ThreadCapabilities.State, {
45
+ return (0, import_app_framework.contributes)(import_chunk_VEVJBOWK.ThreadCapabilities.State, {
45
46
  state,
46
47
  getViewState
47
48
  });
48
49
  };
49
- //# sourceMappingURL=state-TQWEZ6B3.cjs.map
50
+ //# sourceMappingURL=state-JMI5ZXZI.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/state.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes } from '@dxos/app-framework';\nimport { create } from '@dxos/live-object';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { type ThreadState, type ViewStore } from '../types';\n\nconst initialViewState = { showResolvedThreads: false };\n\nexport default () => {\n const state = create<ThreadState>({ activities: {}, drafts: {} });\n const viewStore = create<ViewStore>({});\n\n const getViewState = (subjectId: string) => {\n if (!viewStore[subjectId]) {\n viewStore[subjectId] = { ...initialViewState };\n }\n return viewStore[subjectId];\n };\n\n return contributes(ThreadCapabilities.State, { state, getViewState });\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA4B;AAC5B,yBAAuB;AAKvB,IAAMA,mBAAmB;EAAEC,qBAAqB;AAAM;AAEtD,IAAA,gBAAe,MAAA;AACb,QAAMC,YAAQC,2BAAoB;IAAEC,YAAY,CAAC;IAAGC,QAAQ,CAAC;EAAE,CAAA;AAC/D,QAAMC,gBAAYH,2BAAkB,CAAC,CAAA;AAErC,QAAMI,eAAe,CAACC,cAAAA;AACpB,QAAI,CAACF,UAAUE,SAAAA,GAAY;AACzBF,gBAAUE,SAAAA,IAAa;QAAE,GAAGR;MAAiB;IAC/C;AACA,WAAOM,UAAUE,SAAAA;EACnB;AAEA,aAAOC,kCAAYC,yCAAmBC,OAAO;IAAET;IAAOK;EAAa,CAAA;AACrE;",
6
+ "names": ["initialViewState", "showResolvedThreads", "state", "create", "activities", "drafts", "viewStore", "getViewState", "subjectId", "contributes", "ThreadCapabilities", "State"]
7
+ }
@@ -18,12 +18,12 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var types_exports = {};
20
20
  __export(types_exports, {
21
- ThreadAction: () => import_chunk_CMEMMYDL.ThreadAction,
22
- ThreadSettingsSchema: () => import_chunk_CMEMMYDL.ThreadSettingsSchema
21
+ ThreadAction: () => import_chunk_AXTPNGRI.ThreadAction,
22
+ ThreadSettingsSchema: () => import_chunk_AXTPNGRI.ThreadSettingsSchema
23
23
  });
24
24
  module.exports = __toCommonJS(types_exports);
25
- var import_chunk_CMEMMYDL = require("./chunk-CMEMMYDL.cjs");
26
- var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
25
+ var import_chunk_AXTPNGRI = require("./chunk-AXTPNGRI.cjs");
26
+ var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
27
27
  // Annotate the CommonJS export names for ESM import in node:
28
28
  0 && (module.exports = {
29
29
  ThreadAction,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["types.cjs"],
4
- "sourcesContent": ["import {\n ThreadAction,\n ThreadSettingsSchema\n} from \"./chunk-CMEMMYDL.cjs\";\nimport \"./chunk-F735VMTN.cjs\";\nexport {\n ThreadAction,\n ThreadSettingsSchema\n};\n//# sourceMappingURL=types.cjs.map\n"],
4
+ "sourcesContent": ["import {\n ThreadAction,\n ThreadSettingsSchema\n} from \"./chunk-AXTPNGRI.cjs\";\nimport \"./chunk-ONLWOUYZ.cjs\";\nexport {\n ThreadAction,\n ThreadSettingsSchema\n};\n//# sourceMappingURL=types.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;AACP,4BAAO;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,76 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ ChatContainer
4
+ } from "./chunk-TW2NME6Z.mjs";
5
+ import "./chunk-XQO5DGHF.mjs";
6
+ import {
7
+ ThreadCapabilities
8
+ } from "./chunk-TXW5SIBN.mjs";
9
+ import "./chunk-42F2DTMM.mjs";
10
+
11
+ // packages/plugins/plugin-thread/src/components/ChannelContainer.tsx
12
+ import React, { useCallback } from "react";
13
+ import { Surface, useCapabilities, useCapability } from "@dxos/app-framework";
14
+ import { fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
15
+ import { createEditorActionGroup } from "@dxos/react-ui-editor";
16
+ import { createMenuAction, MenuProvider, ToolbarMenu, useMenuActions } from "@dxos/react-ui-menu";
17
+ import { StackItem } from "@dxos/react-ui-stack";
18
+ var useActivitiesMenu = (activities, activity) => {
19
+ return useMenuActions(() => ({
20
+ nodes: [
21
+ createEditorActionGroup("activities", {
22
+ variant: "toggleGroup",
23
+ selectCardinality: "single",
24
+ value: activity
25
+ }),
26
+ ...activities.map(({ id, ...properties }) => createMenuAction(id, {
27
+ ...properties,
28
+ checked: true
29
+ }))
30
+ ],
31
+ edges: [
32
+ {
33
+ source: "root",
34
+ target: "activities"
35
+ },
36
+ ...activities.map((activity2) => ({
37
+ source: "activities",
38
+ target: activity2.id
39
+ }))
40
+ ]
41
+ }));
42
+ };
43
+ var ChannelContainer = ({ role, channel, context }) => {
44
+ const { state } = useCapability(ThreadCapabilities.MutableState);
45
+ const currentActivity = state.activities[channel.id];
46
+ const activities = useCapabilities(ThreadCapabilities.Activity);
47
+ const menu = useActivitiesMenu(activities, currentActivity);
48
+ const handleAction = useCallback((action) => state.activities[channel.id] = currentActivity === action.id ? void 0 : action.id, [
49
+ currentActivity
50
+ ]);
51
+ const space = getSpace(channel);
52
+ if (!space) {
53
+ return null;
54
+ }
55
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
56
+ toolbar: true
57
+ }, /* @__PURE__ */ React.createElement(MenuProvider, {
58
+ ...menu,
59
+ onAction: handleAction,
60
+ attendableId: fullyQualifiedId(channel)
61
+ }, /* @__PURE__ */ React.createElement(ToolbarMenu, null)), currentActivity ? /* @__PURE__ */ React.createElement(Surface, {
62
+ role: `channel-activity--${currentActivity}`,
63
+ data: {
64
+ subject: channel
65
+ }
66
+ }) : /* @__PURE__ */ React.createElement(ChatContainer, {
67
+ space,
68
+ dxn: channel.queue.dxn,
69
+ context
70
+ }));
71
+ };
72
+ var ChannelContainer_default = ChannelContainer;
73
+ export {
74
+ ChannelContainer_default as default
75
+ };
76
+ //# sourceMappingURL=ChannelContainer-GP6Y6JSN.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ChannelContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, type ComponentProps } from 'react';\n\nimport { Surface, useCapabilities, useCapability } from '@dxos/app-framework';\nimport { type NodeArg } from '@dxos/plugin-graph';\nimport { type ChannelType } from '@dxos/plugin-space/types';\nimport { fullyQualifiedId, getSpace } from '@dxos/react-client/echo';\nimport { createEditorActionGroup } from '@dxos/react-ui-editor';\nimport {\n createMenuAction,\n MenuProvider,\n ToolbarMenu,\n type ToolbarMenuActionGroupProperties,\n useMenuActions,\n type MenuAction,\n} from '@dxos/react-ui-menu';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { ChatContainer } from './ChatContainer';\nimport { ThreadCapabilities } from '../capabilities';\n\nconst useActivitiesMenu = (activities: ThreadCapabilities.Activity[], activity: string | undefined) => {\n return useMenuActions(() => ({\n nodes: [\n createEditorActionGroup('activities', {\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value: activity,\n } as ToolbarMenuActionGroupProperties) as NodeArg<any>,\n ...activities.map(({ id, ...properties }) =>\n createMenuAction(id, {\n ...properties,\n checked: true,\n }),\n ),\n ],\n edges: [\n { source: 'root', target: 'activities' },\n ...activities.map((activity) => ({ source: 'activities', target: activity.id })),\n ],\n }));\n};\n\nconst ChannelContainer = ({\n role,\n channel,\n context,\n}: Pick<ComponentProps<typeof ChatContainer>, 'context'> & { channel: ChannelType; role: string }) => {\n const { state } = useCapability(ThreadCapabilities.MutableState);\n const currentActivity = state.activities[channel.id];\n const activities = useCapabilities(ThreadCapabilities.Activity);\n const menu = useActivitiesMenu(activities, currentActivity);\n const handleAction = useCallback(\n (action: MenuAction) => (state.activities[channel.id] = currentActivity === action.id ? undefined : action.id),\n [currentActivity],\n );\n\n const space = getSpace(channel);\n if (!space) {\n return null;\n }\n\n return (\n <StackItem.Content toolbar>\n <MenuProvider {...menu} onAction={handleAction} attendableId={fullyQualifiedId(channel)}>\n <ToolbarMenu />\n </MenuProvider>\n {currentActivity ? (\n <Surface role={`channel-activity--${currentActivity}`} data={{ subject: channel }} />\n ) : (\n <ChatContainer space={space} dxn={channel.queue.dxn} context={context} />\n )}\n </StackItem.Content>\n );\n};\n\nexport default ChannelContainer;\n"],
5
+ "mappings": ";;;;;;;;;;;AAIA,OAAOA,SAASC,mBAAwC;AAExD,SAASC,SAASC,iBAAiBC,qBAAqB;AAGxD,SAASC,kBAAkBC,gBAAgB;AAC3C,SAASC,+BAA+B;AACxC,SACEC,kBACAC,cACAC,aAEAC,sBAEK;AACP,SAASC,iBAAiB;AAK1B,IAAMC,oBAAoB,CAACC,YAA2CC,aAAAA;AACpE,SAAOC,eAAe,OAAO;IAC3BC,OAAO;MACLC,wBAAwB,cAAc;QACpCC,SAAS;QACTC,mBAAmB;QACnBC,OAAON;MACT,CAAA;SACGD,WAAWQ,IAAI,CAAC,EAAEC,IAAI,GAAGC,WAAAA,MAC1BC,iBAAiBF,IAAI;QACnB,GAAGC;QACHE,SAAS;MACX,CAAA,CAAA;;IAGJC,OAAO;MACL;QAAEC,QAAQ;QAAQC,QAAQ;MAAa;SACpCf,WAAWQ,IAAI,CAACP,eAAc;QAAEa,QAAQ;QAAcC,QAAQd,UAASQ;MAAG,EAAA;;EAEjF,EAAA;AACF;AAEA,IAAMO,mBAAmB,CAAC,EACxBC,MACAC,SACAC,QAAO,MACwF;AAC/F,QAAM,EAAEC,MAAK,IAAKC,cAAcC,mBAAmBC,YAAY;AAC/D,QAAMC,kBAAkBJ,MAAMpB,WAAWkB,QAAQT,EAAE;AACnD,QAAMT,aAAayB,gBAAgBH,mBAAmBI,QAAQ;AAC9D,QAAMC,OAAO5B,kBAAkBC,YAAYwB,eAAAA;AAC3C,QAAMI,eAAeC,YACnB,CAACC,WAAwBV,MAAMpB,WAAWkB,QAAQT,EAAE,IAAIe,oBAAoBM,OAAOrB,KAAKsB,SAAYD,OAAOrB,IAC3G;IAACe;GAAgB;AAGnB,QAAMQ,QAAQC,SAASf,OAAAA;AACvB,MAAI,CAACc,OAAO;AACV,WAAO;EACT;AAEA,SACE,sBAAA,cAACE,UAAUC,SAAO;IAACC,SAAAA;KACjB,sBAAA,cAACC,cAAAA;IAAc,GAAGV;IAAMW,UAAUV;IAAcW,cAAcC,iBAAiBtB,OAAAA;KAC7E,sBAAA,cAACuB,aAAAA,IAAAA,CAAAA,GAEFjB,kBACC,sBAAA,cAACkB,SAAAA;IAAQzB,MAAM,qBAAqBO,eAAAA;IAAmBmB,MAAM;MAAEC,SAAS1B;IAAQ;OAEhF,sBAAA,cAAC2B,eAAAA;IAAcb;IAAcc,KAAK5B,QAAQ6B,MAAMD;IAAK3B;;AAI7D;AAEA,IAAA,2BAAeH;",
6
+ "names": ["React", "useCallback", "Surface", "useCapabilities", "useCapability", "fullyQualifiedId", "getSpace", "createEditorActionGroup", "createMenuAction", "MenuProvider", "ToolbarMenu", "useMenuActions", "StackItem", "useActivitiesMenu", "activities", "activity", "useMenuActions", "nodes", "createEditorActionGroup", "variant", "selectCardinality", "value", "map", "id", "properties", "createMenuAction", "checked", "edges", "source", "target", "ChannelContainer", "role", "channel", "context", "state", "useCapability", "ThreadCapabilities", "MutableState", "currentActivity", "useCapabilities", "Activity", "menu", "handleAction", "useCallback", "action", "undefined", "space", "getSpace", "StackItem", "Content", "toolbar", "MenuProvider", "onAction", "attendableId", "fullyQualifiedId", "ToolbarMenu", "Surface", "data", "subject", "ChatContainer", "dxn", "queue"]
7
+ }
@@ -16,4 +16,4 @@ export {
16
16
  THREAD_ITEM,
17
17
  meta
18
18
  };
19
- //# sourceMappingURL=chunk-FXUATCLW.mjs.map
19
+ //# sourceMappingURL=chunk-42F2DTMM.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const THREAD_PLUGIN = 'dxos.org/plugin/thread';\nexport const THREAD_ITEM = `${THREAD_PLUGIN}/item`;\n\nexport const meta = {\n id: THREAD_PLUGIN,\n name: 'Threads',\n description: 'Add comment threads to objects.',\n icon: 'ph--chat--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-thread',\n} satisfies PluginMeta;\n"],
5
- "mappings": ";;;AAMO,IAAMA,gBAAgB;AACtB,IAAMC,cAAc,GAAGD,aAAAA;AAEvB,IAAME,OAAO;EAClBC,IAAIH;EACJI,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;AACV;",
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const THREAD_PLUGIN = 'dxos.org/plugin/thread';\nexport const THREAD_ITEM = `${THREAD_PLUGIN}/item`;\n\nexport const meta: PluginMeta = {\n id: THREAD_PLUGIN,\n name: 'Threads',\n description: 'Add comment threads to objects.',\n icon: 'ph--chat--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-thread',\n};\n"],
5
+ "mappings": ";;;AAMO,IAAMA,gBAAgB;AACtB,IAAMC,cAAc,GAAGD,aAAAA;AAEvB,IAAME,OAAmB;EAC9BC,IAAIH;EACJI,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;AACV;",
6
6
  "names": ["THREAD_PLUGIN", "THREAD_ITEM", "meta", "id", "name", "description", "icon", "source"]
7
7
  }
@@ -1,23 +1,36 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  THREAD_PLUGIN
4
- } from "./chunk-FXUATCLW.mjs";
4
+ } from "./chunk-42F2DTMM.mjs";
5
5
 
6
6
  // packages/plugins/plugin-thread/src/types.ts
7
7
  import { S } from "@dxos/echo-schema";
8
- import { ChannelType, MessageType, ThreadType } from "@dxos/plugin-space/types";
8
+ import { ChannelType, ThreadType } from "@dxos/plugin-space/types";
9
9
  import { EchoObjectSchema } from "@dxos/react-client/echo";
10
+ import { MessageType } from "@dxos/schema";
10
11
  var ThreadAction;
11
12
  (function(ThreadAction2) {
12
13
  const THREAD_ACTION = `${THREAD_PLUGIN}/action`;
14
+ class CreateChannel extends S.TaggedClass()(`${THREAD_ACTION}/create-channel`, {
15
+ input: S.Struct({
16
+ // TODO(wittjosiah): Should be SpaceId.
17
+ spaceId: S.String,
18
+ name: S.optional(S.String)
19
+ }),
20
+ output: S.Struct({
21
+ object: ChannelType
22
+ })
23
+ }) {
24
+ }
25
+ ThreadAction2.CreateChannel = CreateChannel;
13
26
  class Create extends S.TaggedClass()(`${THREAD_ACTION}/create`, {
14
27
  input: S.Struct({
15
28
  name: S.optional(S.String),
16
- cursor: S.optional(S.String),
17
- subject: S.optional(EchoObjectSchema)
29
+ cursor: S.String,
30
+ subject: EchoObjectSchema
18
31
  }),
19
32
  output: S.Struct({
20
- object: S.Union(ChannelType, ThreadType)
33
+ object: ThreadType
21
34
  })
22
35
  }) {
23
36
  }
@@ -77,4 +90,4 @@ export {
77
90
  ThreadAction,
78
91
  ThreadSettingsSchema
79
92
  };
80
- //# sourceMappingURL=chunk-33NDMQQQ.mjs.map
93
+ //# sourceMappingURL=chunk-FZXTP57V.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { S } from '@dxos/echo-schema';\nimport { ChannelType, ThreadType } from '@dxos/plugin-space/types';\nimport { EchoObjectSchema } from '@dxos/react-client/echo';\nimport { MessageType } from '@dxos/schema';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport namespace ThreadAction {\n const THREAD_ACTION = `${THREAD_PLUGIN}/action`;\n\n export class CreateChannel extends S.TaggedClass<CreateChannel>()(`${THREAD_ACTION}/create-channel`, {\n input: S.Struct({\n // TODO(wittjosiah): Should be SpaceId.\n spaceId: S.String,\n name: S.optional(S.String),\n }),\n output: S.Struct({\n object: ChannelType,\n }),\n }) {}\n\n export class Create extends S.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {\n input: S.Struct({\n name: S.optional(S.String),\n cursor: S.String,\n subject: EchoObjectSchema,\n }),\n output: S.Struct({\n object: ThreadType,\n }),\n }) {}\n\n export class Select extends S.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {\n input: S.Struct({\n current: S.String,\n skipOpen: S.optional(S.Boolean),\n }),\n output: S.Void,\n }) {}\n\n export class ToggleResolved extends S.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {\n input: S.Struct({\n thread: ThreadType,\n }),\n output: S.Void,\n }) {}\n\n export class Delete extends S.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n cursor: S.optional(S.String),\n }),\n output: S.Void,\n }) {}\n\n // TODO(wittjosiah): Rename?\n export class OnMessageAdd extends S.TaggedClass<OnMessageAdd>()(`${THREAD_ACTION}/on-message-add`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n }),\n output: S.Void,\n }) {}\n\n export class DeleteMessage extends S.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n messageId: S.String,\n message: S.optional(MessageType),\n messageIndex: S.optional(S.Number),\n }),\n output: S.Void,\n }) {}\n}\n\nexport const ThreadSettingsSchema = S.mutable(S.Struct({}));\n\nexport type ThreadSettingsProps = S.Schema.Type<typeof ThreadSettingsSchema>;\n\nexport interface ThreadModel {\n root: ThreadType;\n}\n\ntype SubjectId = string;\nexport type ViewState = { showResolvedThreads: boolean };\nexport type ViewStore = Record<SubjectId, ViewState>;\n\nexport type ThreadState = {\n /** Current channel activity. */\n activities: Record<string, string | undefined>;\n /** In-memory draft threads. */\n drafts: Record<string, ThreadType[]>;\n current?: string | undefined;\n};\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,SAAS;AAClB,SAASC,aAAaC,kBAAkB;AACxC,SAASC,wBAAwB;AACjC,SAASC,mBAAmB;;UAIXC,eAAAA;AACf,QAAMC,gBAAgB,GAAGC,aAAAA;EAElB,MAAMC,sBAAsBC,EAAEC,YAAW,EAAkB,GAAGJ,aAAAA,mBAAgC;IACnGK,OAAOF,EAAEG,OAAO;;MAEdC,SAASJ,EAAEK;MACXC,MAAMN,EAAEO,SAASP,EAAEK,MAAM;IAC3B,CAAA;IACAG,QAAQR,EAAEG,OAAO;MACfM,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBATSX,gBAAAA;EAWN,MAAMY,eAAeX,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdG,MAAMN,EAAEO,SAASP,EAAEK,MAAM;MACzBO,QAAQZ,EAAEK;MACVQ,SAASC;IACX,CAAA;IACAN,QAAQR,EAAEG,OAAO;MACfM,QAAQM;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBATSJ,SAAAA;EAWN,MAAMK,eAAehB,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdc,SAASjB,EAAEK;MACXa,UAAUlB,EAAEO,SAASP,EAAEmB,OAAO;IAChC,CAAA;IACAX,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBANSJ,SAAAA;EAQN,MAAMK,uBAAuBrB,EAAEC,YAAW,EAAmB,GAAGJ,aAAAA,oBAAiC;IACtGK,OAAOF,EAAEG,OAAO;MACdmB,QAAQP;IACV,CAAA;IACAP,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBALSC,iBAAAA;EAON,MAAME,eAAevB,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdmB,QAAQP;MACRF,SAASC;MACTF,QAAQZ,EAAEO,SAASP,EAAEK,MAAM;IAC7B,CAAA;IACAG,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBAPSG,SAAAA;EAUN,MAAMC,qBAAqBxB,EAAEC,YAAW,EAAiB,GAAGJ,aAAAA,mBAAgC;IACjGK,OAAOF,EAAEG,OAAO;MACdmB,QAAQP;MACRF,SAASC;IACX,CAAA;IACAN,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBANSI,eAAAA;EAQN,MAAMC,sBAAsBzB,EAAEC,YAAW,EAAkB,GAAGJ,aAAAA,mBAAgC;IACnGK,OAAOF,EAAEG,OAAO;MACdmB,QAAQP;MACRF,SAASC;MACTY,WAAW1B,EAAEK;MACbsB,SAAS3B,EAAEO,SAASqB,WAAAA;MACpBC,cAAc7B,EAAEO,SAASP,EAAE8B,MAAM;IACnC,CAAA;IACAtB,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBATSK,gBAAAA;AAUf,GApEiB7B,iBAAAA,eAAAA,CAAAA,EAAAA;AAsEV,IAAMmC,uBAAuB/B,EAAEgC,QAAQhC,EAAEG,OAAO,CAAC,CAAA,CAAA;",
6
+ "names": ["S", "ChannelType", "ThreadType", "EchoObjectSchema", "MessageType", "ThreadAction", "THREAD_ACTION", "THREAD_PLUGIN", "CreateChannel", "S", "TaggedClass", "input", "Struct", "spaceId", "String", "name", "optional", "output", "object", "ChannelType", "Create", "cursor", "subject", "EchoObjectSchema", "ThreadType", "Select", "current", "skipOpen", "Boolean", "Void", "ToggleResolved", "thread", "Delete", "OnMessageAdd", "DeleteMessage", "messageId", "message", "MessageType", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"]
7
+ }