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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/dist/lib/browser/ChannelContainer-SVV4ZX5T.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-ALFWQ65B.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-FHAOPO57.mjs → app-graph-builder-ACBXRBOS.mjs} +20 -20
  4. package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-EW2QC6Q4.mjs → call-manager-P3MYR2JS.mjs} +7 -7
  6. package/dist/lib/browser/{call-manager-EW2QC6Q4.mjs.map → call-manager-P3MYR2JS.mjs.map} +1 -1
  7. package/dist/lib/browser/{chunk-H63NDV62.mjs → chunk-6CUDBEYP.mjs} +12 -11
  8. package/dist/lib/browser/chunk-6CUDBEYP.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-BBTXGRIR.mjs +18 -0
  10. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  12. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-TQJYDFBU.mjs → chunk-DJOUMWEL.mjs} +20 -18
  14. package/dist/lib/browser/chunk-DJOUMWEL.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-2P3GVRHP.mjs → chunk-HDEQRBOC.mjs} +2 -2
  16. package/dist/lib/browser/{chunk-2P3GVRHP.mjs.map → chunk-HDEQRBOC.mjs.map} +2 -2
  17. package/dist/lib/browser/{chunk-J26C57ZY.mjs → chunk-IQSXEHOW.mjs} +139 -69
  18. package/dist/lib/browser/chunk-IQSXEHOW.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-K2DUJRFJ.mjs +27 -0
  20. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-L6F2AG6W.mjs +23 -0
  22. package/dist/lib/browser/{chunk-TUSBPMNU.mjs → chunk-US5ZQYC3.mjs} +267 -367
  23. package/dist/lib/browser/chunk-US5ZQYC3.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-UTSLSZED.mjs +178 -0
  25. package/dist/lib/browser/chunk-UTSLSZED.mjs.map +7 -0
  26. package/dist/lib/browser/{chunk-KEXJGF2R.mjs → chunk-XYUJXHYV.mjs} +53 -3
  27. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  28. package/dist/lib/browser/index.mjs +23 -22
  29. package/dist/lib/browser/index.mjs.map +3 -3
  30. package/dist/lib/browser/{intent-resolver-IB5GYU2D.mjs → intent-resolver-5POQTZ24.mjs} +25 -34
  31. package/dist/lib/browser/intent-resolver-5POQTZ24.mjs.map +7 -0
  32. package/dist/lib/browser/{markdown-Z677YORA.mjs → markdown-L7LDNF56.mjs} +9 -9
  33. package/dist/lib/browser/markdown-L7LDNF56.mjs.map +7 -0
  34. package/dist/lib/browser/meta.json +1 -1
  35. package/dist/lib/browser/react-root-RCJLK4EP.mjs +28 -0
  36. package/dist/lib/browser/react-root-RCJLK4EP.mjs.map +7 -0
  37. package/dist/lib/browser/{react-surface-X2VB6P37.mjs → react-surface-IC576W2W.mjs} +27 -27
  38. package/dist/lib/browser/react-surface-IC576W2W.mjs.map +7 -0
  39. package/dist/lib/browser/{settings-GRKEID73.mjs → settings-5FYGBOGI.mjs} +5 -5
  40. package/dist/lib/browser/{settings-GRKEID73.mjs.map → settings-5FYGBOGI.mjs.map} +1 -1
  41. package/dist/lib/browser/{state-2T4KDWBX.mjs → state-36REWXO5.mjs} +5 -5
  42. package/dist/lib/browser/{state-2T4KDWBX.mjs.map → state-36REWXO5.mjs.map} +1 -1
  43. package/dist/lib/browser/toolkit-PXASLYEQ.mjs +74 -0
  44. package/dist/lib/browser/toolkit-PXASLYEQ.mjs.map +7 -0
  45. package/dist/lib/browser/types/index.mjs +7 -9
  46. package/dist/lib/node-esm/ChannelContainer-63GMQ753.mjs +17 -0
  47. package/dist/lib/node-esm/{ChatContainer-4EGHKHIU.mjs → ChatContainer-MFKPXMIK.mjs} +6 -6
  48. package/dist/lib/node-esm/{app-graph-builder-XEYWX5FC.mjs → app-graph-builder-JXD7KY3G.mjs} +20 -20
  49. package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs.map +7 -0
  50. package/dist/lib/node-esm/{call-manager-N3KASRDQ.mjs → call-manager-FCEFP7EJ.mjs} +7 -7
  51. package/dist/lib/node-esm/{call-manager-N3KASRDQ.mjs.map → call-manager-FCEFP7EJ.mjs.map} +1 -1
  52. package/dist/lib/node-esm/{chunk-CTZ75IFK.mjs → chunk-2MMJF7DW.mjs} +2 -2
  53. package/dist/lib/node-esm/{chunk-CTZ75IFK.mjs.map → chunk-2MMJF7DW.mjs.map} +2 -2
  54. package/dist/lib/node-esm/{chunk-S3D7DTBF.mjs → chunk-2V3WSLUZ.mjs} +53 -3
  55. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  57. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs +25 -0
  59. package/dist/lib/node-esm/{chunk-JR7KESLL.mjs → chunk-KGYDYYKJ.mjs} +267 -367
  60. package/dist/lib/node-esm/chunk-KGYDYYKJ.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-UHZQTPXU.mjs → chunk-NWUUMKVQ.mjs} +12 -11
  62. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-NNKKNW57.mjs → chunk-Q7AKKZNY.mjs} +139 -69
  64. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-CCE5LHBE.mjs → chunk-QCQAAU6J.mjs} +20 -18
  66. package/dist/lib/node-esm/chunk-QCQAAU6J.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-TYLLHI46.mjs +179 -0
  68. package/dist/lib/node-esm/chunk-TYLLHI46.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +28 -0
  70. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +19 -0
  72. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +7 -0
  73. package/dist/lib/node-esm/index.mjs +23 -22
  74. package/dist/lib/node-esm/index.mjs.map +3 -3
  75. package/dist/lib/node-esm/{intent-resolver-VIMI5VLH.mjs → intent-resolver-63NV3XD2.mjs} +25 -34
  76. package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs.map +7 -0
  77. package/dist/lib/node-esm/{markdown-FL4IXLRP.mjs → markdown-ZQW7MI5U.mjs} +9 -9
  78. package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs.map +7 -0
  79. package/dist/lib/node-esm/meta.json +1 -1
  80. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs +29 -0
  81. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs.map +7 -0
  82. package/dist/lib/node-esm/{react-surface-OLN3XNND.mjs → react-surface-O4LGTAZ3.mjs} +27 -27
  83. package/dist/lib/node-esm/react-surface-O4LGTAZ3.mjs.map +7 -0
  84. package/dist/lib/node-esm/{settings-F2ODVNNW.mjs → settings-EOBQUZSW.mjs} +5 -5
  85. package/dist/lib/node-esm/{settings-F2ODVNNW.mjs.map → settings-EOBQUZSW.mjs.map} +1 -1
  86. package/dist/lib/node-esm/{state-62TQKQVB.mjs → state-X3W67GTL.mjs} +5 -5
  87. package/dist/lib/node-esm/{state-62TQKQVB.mjs.map → state-X3W67GTL.mjs.map} +1 -1
  88. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs +75 -0
  89. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs.map +7 -0
  90. package/dist/lib/node-esm/types/index.mjs +7 -9
  91. package/dist/types/src/ThreadPlugin.d.ts +1 -1
  92. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  93. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  94. package/dist/types/src/calls/types.d.ts.map +1 -1
  95. package/dist/types/src/calls/util/calls-service.d.ts +2 -0
  96. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  97. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  98. package/dist/types/src/calls-service.stories.d.ts +0 -1
  99. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  102. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/toolkit.d.ts +21 -2
  105. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  106. package/dist/types/src/components/Call/Toolbar.d.ts +2 -2
  107. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  108. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  109. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  110. package/dist/types/src/components/ChannelContainer.d.ts +2 -2
  111. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  112. package/dist/types/src/components/ChannelContainer.stories.d.ts +74 -8
  113. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  114. package/dist/types/src/components/Chat.stories.d.ts +74 -6
  115. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/ChatContainer.d.ts +6 -5
  117. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  118. package/dist/types/src/components/Comments.stories.d.ts +3 -2
  119. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  120. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  121. package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
  122. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  123. package/dist/types/src/components/Media/VideoObject.stories.d.ts +5 -3
  124. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +4 -2
  126. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +4 -2
  128. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  130. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  131. package/dist/types/src/components/index.d.ts +1 -1
  132. package/dist/types/src/components/index.d.ts.map +1 -1
  133. package/dist/types/src/components/testing.d.ts +3 -3
  134. package/dist/types/src/components/testing.d.ts.map +1 -1
  135. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  136. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  137. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  138. package/dist/types/src/meta.d.ts +1 -2
  139. package/dist/types/src/meta.d.ts.map +1 -1
  140. package/dist/types/src/testing/stories.d.ts.map +1 -1
  141. package/dist/types/src/translations.d.ts +73 -6
  142. package/dist/types/src/translations.d.ts.map +1 -1
  143. package/dist/types/src/types/Channel.d.ts +16 -0
  144. package/dist/types/src/types/Channel.d.ts.map +1 -0
  145. package/dist/types/src/types/{schema.d.ts → Thread.d.ts} +18 -28
  146. package/dist/types/src/types/Thread.d.ts.map +1 -0
  147. package/dist/types/src/types/index.d.ts +2 -1
  148. package/dist/types/src/types/index.d.ts.map +1 -1
  149. package/dist/types/src/types/types.d.ts +37 -50
  150. package/dist/types/src/types/types.d.ts.map +1 -1
  151. package/dist/types/tsconfig.tsbuildinfo +1 -1
  152. package/package.json +59 -59
  153. package/src/ThreadPlugin.tsx +133 -130
  154. package/src/calls/call-manager.ts +1 -1
  155. package/src/calls/media-manager.ts +2 -1
  156. package/src/calls/types.ts +7 -3
  157. package/src/calls/util/calls-service.ts +12 -7
  158. package/src/calls/util/stub-media-streams.ts +60 -2
  159. package/src/calls-service.stories.tsx +2 -5
  160. package/src/capabilities/app-graph-builder.ts +17 -14
  161. package/src/capabilities/capabilities.ts +7 -7
  162. package/src/capabilities/intent-resolver.ts +14 -19
  163. package/src/capabilities/react-root.tsx +2 -2
  164. package/src/capabilities/react-surface.tsx +15 -15
  165. package/src/capabilities/toolkit.ts +18 -11
  166. package/src/components/Call/Toolbar.tsx +6 -6
  167. package/src/components/CallDebugPanel.tsx +108 -49
  168. package/src/components/ChannelContainer.stories.tsx +9 -9
  169. package/src/components/ChannelContainer.tsx +14 -11
  170. package/src/components/Chat.stories.tsx +13 -18
  171. package/src/components/ChatContainer.tsx +26 -17
  172. package/src/components/Comments.stories.tsx +8 -13
  173. package/src/components/CommentsContainer.tsx +2 -2
  174. package/src/components/CommentsThreadContainer.tsx +19 -14
  175. package/src/components/Media/VideoObject.stories.tsx +12 -7
  176. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +3 -4
  177. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +3 -4
  178. package/src/components/ThreadComplementary.tsx +7 -7
  179. package/src/components/ThreadSettings.tsx +4 -5
  180. package/src/components/testing.ts +5 -5
  181. package/src/extensions/threads.ts +5 -5
  182. package/src/hooks/useVideoStreamTrack.tsx +1 -1
  183. package/src/meta.ts +9 -5
  184. package/src/testing/stories.ts +3 -6
  185. package/src/translations.ts +5 -3
  186. package/src/types/Channel.ts +27 -0
  187. package/src/types/Thread.ts +26 -0
  188. package/src/types/index.ts +2 -1
  189. package/src/types/types.ts +10 -9
  190. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  191. package/src/util.ts +1 -1
  192. package/dist/lib/browser/ChannelContainer-GHDNEZT2.mjs +0 -16
  193. package/dist/lib/browser/ChatContainer-42ALOWUA.mjs +0 -15
  194. package/dist/lib/browser/app-graph-builder-FHAOPO57.mjs.map +0 -7
  195. package/dist/lib/browser/chunk-2I277V52.mjs +0 -23
  196. package/dist/lib/browser/chunk-4APCDRSH.mjs +0 -18
  197. package/dist/lib/browser/chunk-4APCDRSH.mjs.map +0 -7
  198. package/dist/lib/browser/chunk-EV4JWI7L.mjs +0 -17
  199. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  200. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  201. package/dist/lib/browser/chunk-H63NDV62.mjs.map +0 -7
  202. package/dist/lib/browser/chunk-J26C57ZY.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-KEXJGF2R.mjs.map +0 -7
  204. package/dist/lib/browser/chunk-KTWYVC5X.mjs +0 -147
  205. package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +0 -7
  206. package/dist/lib/browser/chunk-TQJYDFBU.mjs.map +0 -7
  207. package/dist/lib/browser/chunk-TUSBPMNU.mjs.map +0 -7
  208. package/dist/lib/browser/intent-resolver-IB5GYU2D.mjs.map +0 -7
  209. package/dist/lib/browser/markdown-Z677YORA.mjs.map +0 -7
  210. package/dist/lib/browser/react-root-PTTTW2MO.mjs +0 -28
  211. package/dist/lib/browser/react-root-PTTTW2MO.mjs.map +0 -7
  212. package/dist/lib/browser/react-surface-X2VB6P37.mjs.map +0 -7
  213. package/dist/lib/browser/toolkit-KUPIIFC6.mjs +0 -80
  214. package/dist/lib/browser/toolkit-KUPIIFC6.mjs.map +0 -7
  215. package/dist/lib/node-esm/ChannelContainer-D5E2S6AI.mjs +0 -17
  216. package/dist/lib/node-esm/app-graph-builder-XEYWX5FC.mjs.map +0 -7
  217. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-CCE5LHBE.mjs.map +0 -7
  219. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs +0 -19
  220. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-JR7KESLL.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-NNKKNW57.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-P6E247RF.mjs +0 -148
  224. package/dist/lib/node-esm/chunk-P6E247RF.mjs.map +0 -7
  225. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs +0 -19
  226. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs.map +0 -7
  227. package/dist/lib/node-esm/chunk-S3D7DTBF.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-UHZQTPXU.mjs.map +0 -7
  229. package/dist/lib/node-esm/chunk-UJ2QNRLS.mjs +0 -25
  230. package/dist/lib/node-esm/intent-resolver-VIMI5VLH.mjs.map +0 -7
  231. package/dist/lib/node-esm/markdown-FL4IXLRP.mjs.map +0 -7
  232. package/dist/lib/node-esm/react-root-2HHRRUME.mjs +0 -29
  233. package/dist/lib/node-esm/react-root-2HHRRUME.mjs.map +0 -7
  234. package/dist/lib/node-esm/react-surface-OLN3XNND.mjs.map +0 -7
  235. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs +0 -81
  236. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs.map +0 -7
  237. package/dist/types/src/types/schema.d.ts.map +0 -1
  238. package/src/types/schema.ts +0 -33
  239. /package/dist/lib/browser/{ChannelContainer-GHDNEZT2.mjs.map → ChannelContainer-SVV4ZX5T.mjs.map} +0 -0
  240. /package/dist/lib/browser/{ChatContainer-42ALOWUA.mjs.map → ChatContainer-ALFWQ65B.mjs.map} +0 -0
  241. /package/dist/lib/browser/{chunk-2I277V52.mjs.map → chunk-L6F2AG6W.mjs.map} +0 -0
  242. /package/dist/lib/node-esm/{ChannelContainer-D5E2S6AI.mjs.map → ChannelContainer-63GMQ753.mjs.map} +0 -0
  243. /package/dist/lib/node-esm/{ChatContainer-4EGHKHIU.mjs.map → ChatContainer-MFKPXMIK.mjs.map} +0 -0
  244. /package/dist/lib/node-esm/{chunk-UJ2QNRLS.mjs.map → chunk-AFDO2SUZ.mjs.map} +0 -0
@@ -11,12 +11,12 @@ import {
11
11
  getScreenshare,
12
12
  getUserMediaTrack,
13
13
  monitorAudioLevel
14
- } from "./chunk-TUSBPMNU.mjs";
14
+ } from "./chunk-US5ZQYC3.mjs";
15
15
  import {
16
- ChannelType,
16
+ Channel_exports,
17
17
  ThreadAction,
18
- ThreadType
19
- } from "./chunk-KTWYVC5X.mjs";
18
+ Thread_exports
19
+ } from "./chunk-UTSLSZED.mjs";
20
20
  import {
21
21
  AppGraphBuilder,
22
22
  CallManager as CallManager2,
@@ -26,10 +26,10 @@ import {
26
26
  ReactSurface,
27
27
  ThreadState,
28
28
  Toolkit
29
- } from "./chunk-2I277V52.mjs";
29
+ } from "./chunk-L6F2AG6W.mjs";
30
30
  import {
31
31
  ThreadCapabilities
32
- } from "./chunk-4APCDRSH.mjs";
32
+ } from "./chunk-BBTXGRIR.mjs";
33
33
  import {
34
34
  useBlackCanvasStreamTrack,
35
35
  useDebugMode,
@@ -37,20 +37,19 @@ import {
37
37
  useOnEditAnalytics,
38
38
  useStatus,
39
39
  useVideoStreamTrack
40
- } from "./chunk-2P3GVRHP.mjs";
40
+ } from "./chunk-HDEQRBOC.mjs";
41
41
  import {
42
42
  createBlackCanvasStreamTrack,
43
43
  createInaudibleAudioStreamTrack
44
- } from "./chunk-KEXJGF2R.mjs";
44
+ } from "./chunk-XYUJXHYV.mjs";
45
45
  import {
46
46
  THREAD_ITEM,
47
- THREAD_PLUGIN,
48
47
  meta
49
- } from "./chunk-EV4JWI7L.mjs";
48
+ } from "./chunk-K2DUJRFJ.mjs";
50
49
 
51
50
  // src/ThreadPlugin.tsx
52
51
  import { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from "@dxos/app-framework";
53
- import { Ref } from "@dxos/echo";
52
+ import { Ref, Type as Type2 } from "@dxos/echo";
54
53
  import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
55
54
  import { MarkdownEvents } from "@dxos/plugin-markdown";
56
55
  import { SpaceCapabilities, SpaceEvents } from "@dxos/plugin-space";
@@ -59,10 +58,11 @@ import { translations as threadTranslations } from "@dxos/react-ui-thread";
59
58
  import { AnchoredTo, DataType } from "@dxos/schema";
60
59
 
61
60
  // src/translations.ts
61
+ import { Type } from "@dxos/echo";
62
62
  var translations = [
63
63
  {
64
64
  "en-US": {
65
- [ChannelType.typename]: {
65
+ [Type.getTypename(Channel_exports.Channel)]: {
66
66
  "typename label": "Channel",
67
67
  "typename label_zero": "Channels",
68
68
  "typename label_one": "Channel",
@@ -109,7 +109,8 @@ var translations = [
109
109
  "call tab label": "Call",
110
110
  "meeting status title": "Meeting",
111
111
  "share meeting link label": "Share meeting",
112
- "show webrtc stats title": "Detailed WebRTC Stats",
112
+ "show webrtc stats title": "WebRTC Stats",
113
+ "show calls history title": "Service History",
113
114
  "meeting summary label": "Summary",
114
115
  "summarize label": "Summarize",
115
116
  "summarizing label": "Creating summary...",
@@ -139,7 +140,7 @@ var translations = [
139
140
  ];
140
141
 
141
142
  // src/ThreadPlugin.tsx
142
- var ThreadPlugin = () => definePlugin(meta, [
143
+ var ThreadPlugin = definePlugin(meta, () => [
143
144
  defineModule({
144
145
  id: `${meta.id}/module/call-manager`,
145
146
  activatesOn: ClientEvents.ClientReady,
@@ -172,13 +173,14 @@ var ThreadPlugin = () => definePlugin(meta, [
172
173
  activatesOn: Events.SetupMetadata,
173
174
  activate: () => [
174
175
  contributes(Capabilities.Metadata, {
175
- id: ChannelType.typename,
176
+ id: Type2.getTypename(Channel_exports.Channel),
176
177
  metadata: {
177
- icon: "ph--hash--regular"
178
+ icon: "ph--hash--regular",
179
+ iconHue: "rose"
178
180
  }
179
181
  }),
180
182
  contributes(Capabilities.Metadata, {
181
- id: ThreadType.typename,
183
+ id: Type2.getTypename(Thread_exports.Thread),
182
184
  metadata: {
183
185
  // TODO(wittjosiah): Move out of metadata.
184
186
  loadReferences: async (thread) => await Ref.Array.loadAll(thread.messages ?? [])
@@ -188,7 +190,7 @@ var ThreadPlugin = () => definePlugin(meta, [
188
190
  id: DataType.Message.typename,
189
191
  metadata: {
190
192
  // TODO(wittjosiah): Move out of metadata.
191
- loadReferences: (message) => []
193
+ loadReferences: () => []
192
194
  }
193
195
  }),
194
196
  contributes(Capabilities.Metadata, {
@@ -219,7 +221,7 @@ var ThreadPlugin = () => definePlugin(meta, [
219
221
  id: `${meta.id}/module/object-form`,
220
222
  activatesOn: ClientEvents.SetupSchema,
221
223
  activate: () => contributes(SpaceCapabilities.ObjectForm, defineObjectForm({
222
- objectSchema: ChannelType,
224
+ objectSchema: Channel_exports.Channel,
223
225
  getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, {
224
226
  spaceId: options.space.id
225
227
  })
@@ -230,7 +232,7 @@ var ThreadPlugin = () => definePlugin(meta, [
230
232
  activatesOn: ClientEvents.SetupSchema,
231
233
  activate: () => contributes(ClientCapabilities.Schema, [
232
234
  AnchoredTo,
233
- ThreadType,
235
+ Thread_exports.Thread,
234
236
  DataType.Message,
235
237
  DataType.MessageV1
236
238
  ])
@@ -245,7 +247,7 @@ var ThreadPlugin = () => definePlugin(meta, [
245
247
  defineModule({
246
248
  id: `${meta.id}/module/on-space-created`,
247
249
  activatesOn: SpaceEvents.SpaceCreated,
248
- activate: () => contributes(SpaceCapabilities.OnSpaceCreated, ({ space, rootCollection }) => createIntent(ThreadAction.OnSpaceCreated, {
250
+ activate: () => contributes(SpaceCapabilities.onCreateSpace, ({ space, rootCollection }) => createIntent(ThreadAction.onCreateSpace, {
249
251
  space,
250
252
  rootCollection
251
253
  }))
@@ -290,7 +292,6 @@ export {
290
292
  MediaManager,
291
293
  SpeakingMonitor,
292
294
  THREAD_ITEM,
293
- THREAD_PLUGIN,
294
295
  ThreadCapabilities,
295
296
  ThreadPlugin,
296
297
  TrackNameCodec,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/ThreadPlugin.tsx", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from '@dxos/app-framework';\nimport { Ref } from '@dxos/echo';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities, SpaceEvents } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\nimport { translations as threadTranslations } from '@dxos/react-ui-thread';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport {\n AppGraphBuilder,\n CallManager,\n IntentResolver,\n Markdown,\n ReactRoot,\n ReactSurface,\n ThreadState,\n Toolkit,\n} from './capabilities';\nimport { THREAD_ITEM, meta } from './meta';\nimport { translations } from './translations';\nimport { ChannelType, ThreadAction, ThreadType } from './types';\n\n// TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.\n// NOTE(burdon): Review/discuss CursorConverter semantics.\n\n// TODO(wittjosiah): Rename to ChatPlugin.\n// TODO(wittjosiah): Enabling comments should likely be factored out of this plugin but depend on it's capabilities.\nexport const ThreadPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/call-manager`,\n activatesOn: ClientEvents.ClientReady,\n activate: CallManager,\n }),\n // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.\n // defineModule({\n // id: `${meta.id}/module/settings`,\n // activatesOn: Events.SetupSettings,\n // activate: ThreadSettings,\n // }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: ThreadState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: ChannelType.typename,\n metadata: {\n icon: 'ph--hash--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: ThreadType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (thread: ThreadType) => await Ref.Array.loadAll(thread.messages ?? []),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: DataType.Message.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (message: DataType.Message) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: THREAD_ITEM,\n metadata: {\n parse: (item: ThreadType, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.name, data: item };\n case 'object':\n return item;\n case 'view-object':\n return { id: `${item.id}-view`, object: item };\n }\n },\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ChannelType,\n getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, { spaceId: options.space.id }),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(ClientCapabilities.Schema, [AnchoredTo, ThreadType, DataType.Message, DataType.MessageV1]),\n }),\n defineModule({\n id: `${meta.id}/module/migration`,\n activatesOn: ClientEvents.SetupMigration,\n activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),\n }),\n defineModule({\n id: `${meta.id}/module/on-space-created`,\n activatesOn: SpaceEvents.SpaceCreated,\n activate: () =>\n contributes(SpaceCapabilities.OnSpaceCreated, ({ space, rootCollection }) =>\n createIntent(ThreadAction.OnSpaceCreated, { space, rootCollection }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/toolkit`,\n // TODO(wittjosiah): Shouldn't use the startup event.\n activatesOn: Events.Startup,\n activate: Toolkit,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\nimport { ChannelType } from './types';\n\nexport const translations = [\n {\n 'en-US': {\n [ChannelType.typename]: {\n 'typename label': 'Channel',\n 'typename label_zero': 'Channels',\n 'typename label_one': 'Channel',\n 'typename label_other': 'Channels',\n 'object name placeholder': 'New channel',\n 'rename object label': 'Rename channel',\n 'delete object label': 'Delete channel',\n },\n [meta.id]: {\n 'plugin name': 'Chat',\n 'channel title label': 'Title',\n 'message placeholder': 'Reply…',\n 'activity message': 'Processing…',\n 'anonymous label': 'Anonymous',\n 'delete message block label': 'Delete message block',\n 'detached thread label': 'Referenced content was removed',\n 'delete thread label': 'Delete thread',\n 'resolve thread label': 'Resolve thread',\n 'thread deleted label': 'Thread deleted',\n 'message deleted label': 'Message deleted',\n 'comments heading': 'Comments',\n 'chat heading': 'Chat',\n 'draft button': 'DRAFT',\n 'no comments title': 'Comments',\n 'no comments message':\n 'Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.',\n 'toggle show resolved': 'Show resolved',\n 'unnamed object threads label': 'Threads',\n 'mark as resolved label': 'Mark as resolved',\n 'mark as unresolved label': 'Mark as unresolved',\n 'save message label': 'Save',\n 'edit message label': 'Edit',\n 'delete message label': 'Delete message',\n 'accept proposal label': 'Accept proposal',\n 'open comments panel label': 'Show Comments',\n 'comments label': 'Comments',\n 'show all label': 'All comments',\n 'show unresolved label': 'Unresolved comments',\n\n 'channel companion label': 'Channel',\n 'call panel label': 'Active Call',\n\n 'display name label': 'Display name',\n 'display name description': 'Set your display name before joining a meeting.',\n 'display name input placeholder': 'Enter your name',\n 'set display name label': 'Continue',\n\n 'call tab label': 'Call',\n 'meeting status title': 'Meeting',\n 'share meeting link label': 'Share meeting',\n 'show webrtc stats title': 'Detailed WebRTC Stats',\n\n 'meeting summary label': 'Summary',\n 'summarize label': 'Summarize',\n 'summarizing label': 'Creating summary...',\n 'create summary message': 'A summary doesn’t exist for this meeting yet. Create one now?',\n\n 'join call': 'Join',\n 'leave call': 'Leave',\n\n 'lobby participants_zero': 'No participants',\n 'lobby participants_one': '1 participant',\n 'lobby participants_other': '{{count}} participants',\n\n 'icon pin': 'Pin video',\n 'icon unpin': 'Unpin video',\n 'icon wave': 'Waving',\n 'icon muted': 'Muted',\n 'icon speaking': 'Speaking',\n\n 'mic on': 'Unmute',\n 'mic off': 'Mute',\n 'camera on': 'Turn camera on',\n 'camera off': 'Turn camera off',\n 'camera off label': 'Camera off',\n\n 'raise hand': 'Raise hand',\n 'lower hand': 'Lower hand',\n 'screenshare on': 'Share screen',\n 'screenshare off': 'Stop streaming',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
- "mappings": "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",
6
- "names": ["Capabilities", "Events", "contributes", "createIntent", "defineModule", "definePlugin", "Ref", "ClientCapabilities", "ClientEvents", "MarkdownEvents", "SpaceCapabilities", "SpaceEvents", "defineObjectForm", "translations", "threadTranslations", "AnchoredTo", "DataType", "translations", "ChannelType", "typename", "meta", "id", "ThreadPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "ClientEvents", "ClientReady", "activate", "CallManager", "Events", "SetupSettings", "ThreadState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "threadTranslations", "SetupMetadata", "Metadata", "ChannelType", "typename", "metadata", "icon", "ThreadType", "loadReferences", "thread", "Ref", "Array", "loadAll", "messages", "DataType", "Message", "message", "THREAD_ITEM", "parse", "item", "type", "label", "name", "data", "object", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "options", "createIntent", "ThreadAction", "CreateChannel", "spaceId", "space", "ClientCapabilities", "Schema", "AnchoredTo", "MessageV1", "SetupMigration", "Migration", "MessageV1ToV2", "SpaceEvents", "SpaceCreated", "OnSpaceCreated", "rootCollection", "MarkdownEvents", "SetupExtensions", "Markdown", "Startup", "ReactRoot", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "AppGraphBuilder", "Toolkit"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from '@dxos/app-framework';\nimport { Ref, Type } from '@dxos/echo';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities, SpaceEvents } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\nimport { translations as threadTranslations } from '@dxos/react-ui-thread';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport {\n AppGraphBuilder,\n CallManager,\n IntentResolver,\n Markdown,\n ReactRoot,\n ReactSurface,\n ThreadState,\n Toolkit,\n} from './capabilities';\nimport { THREAD_ITEM, meta } from './meta';\nimport { translations } from './translations';\nimport { Channel, Thread, ThreadAction } from './types';\n\n// TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.\n// NOTE(burdon): Review/discuss CursorConverter semantics.\n\n// TODO(wittjosiah): Rename to ChatPlugin.\n// TODO(wittjosiah): Enabling comments should likely be factored out of this plugin but depend on it's capabilities.\nexport const ThreadPlugin = definePlugin(meta, () => [\n defineModule({\n id: `${meta.id}/module/call-manager`,\n activatesOn: ClientEvents.ClientReady,\n activate: CallManager,\n }),\n // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.\n // defineModule({\n // id: `${meta.id}/module/settings`,\n // activatesOn: Events.SetupSettings,\n // activate: ThreadSettings,\n // }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: ThreadState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: Type.getTypename(Channel.Channel),\n metadata: {\n icon: 'ph--hash--regular',\n iconHue: 'rose',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: Type.getTypename(Thread.Thread),\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (thread: Thread.Thread) => await Ref.Array.loadAll(thread.messages ?? []),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: DataType.Message.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: () => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: THREAD_ITEM,\n metadata: {\n parse: (item: Thread.Thread, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.name, data: item };\n case 'object':\n return item;\n case 'view-object':\n return { id: `${item.id}-view`, object: item };\n }\n },\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: Channel.Channel,\n getIntent: (_, options) =>\n createIntent(ThreadAction.CreateChannel, {\n spaceId: options.space.id,\n }),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(ClientCapabilities.Schema, [AnchoredTo, Thread.Thread, DataType.Message, DataType.MessageV1]),\n }),\n defineModule({\n id: `${meta.id}/module/migration`,\n activatesOn: ClientEvents.SetupMigration,\n activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),\n }),\n defineModule({\n id: `${meta.id}/module/on-space-created`,\n activatesOn: SpaceEvents.SpaceCreated,\n activate: () =>\n contributes(SpaceCapabilities.onCreateSpace, ({ space, rootCollection }) =>\n createIntent(ThreadAction.onCreateSpace, { space, rootCollection }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/toolkit`,\n // TODO(wittjosiah): Shouldn't use the startup event.\n activatesOn: Events.Startup,\n activate: Toolkit,\n }),\n]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Type } from '@dxos/echo';\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\nimport { Channel } from './types';\n\nexport const translations = [\n {\n 'en-US': {\n [Type.getTypename(Channel.Channel)]: {\n 'typename label': 'Channel',\n 'typename label_zero': 'Channels',\n 'typename label_one': 'Channel',\n 'typename label_other': 'Channels',\n 'object name placeholder': 'New channel',\n 'rename object label': 'Rename channel',\n 'delete object label': 'Delete channel',\n },\n [meta.id]: {\n 'plugin name': 'Chat',\n 'channel title label': 'Title',\n 'message placeholder': 'Reply…',\n 'activity message': 'Processing…',\n 'anonymous label': 'Anonymous',\n 'delete message block label': 'Delete message block',\n 'detached thread label': 'Referenced content was removed',\n 'delete thread label': 'Delete thread',\n 'resolve thread label': 'Resolve thread',\n 'thread deleted label': 'Thread deleted',\n 'message deleted label': 'Message deleted',\n 'comments heading': 'Comments',\n 'chat heading': 'Chat',\n 'draft button': 'DRAFT',\n 'no comments title': 'Comments',\n 'no comments message':\n 'Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.',\n 'toggle show resolved': 'Show resolved',\n 'unnamed object threads label': 'Threads',\n 'mark as resolved label': 'Mark as resolved',\n 'mark as unresolved label': 'Mark as unresolved',\n 'save message label': 'Save',\n 'edit message label': 'Edit',\n 'delete message label': 'Delete message',\n 'accept proposal label': 'Accept proposal',\n 'open comments panel label': 'Show Comments',\n 'comments label': 'Comments',\n 'show all label': 'All comments',\n 'show unresolved label': 'Unresolved comments',\n\n 'channel companion label': 'Channel',\n 'call panel label': 'Active Call',\n\n 'display name label': 'Display name',\n 'display name description': 'Set your display name before joining a meeting.',\n 'display name input placeholder': 'Enter your name',\n 'set display name label': 'Continue',\n\n 'call tab label': 'Call',\n 'meeting status title': 'Meeting',\n 'share meeting link label': 'Share meeting',\n 'show webrtc stats title': 'WebRTC Stats',\n 'show calls history title': 'Service History',\n\n 'meeting summary label': 'Summary',\n 'summarize label': 'Summarize',\n 'summarizing label': 'Creating summary...',\n 'create summary message': 'A summary doesn’t exist for this meeting yet. Create one now?',\n\n 'join call': 'Join',\n 'leave call': 'Leave',\n\n 'lobby participants_zero': 'No participants',\n 'lobby participants_one': '1 participant',\n 'lobby participants_other': '{{count}} participants',\n\n 'icon pin': 'Pin video',\n 'icon unpin': 'Unpin video',\n 'icon wave': 'Waving',\n 'icon muted': 'Muted',\n 'icon speaking': 'Speaking',\n\n 'mic on': 'Unmute',\n 'mic off': 'Mute',\n 'camera on': 'Turn camera on',\n 'camera off': 'Turn camera off',\n 'camera off label': 'Camera off',\n\n 'raise hand': 'Raise hand',\n 'lower hand': 'Lower hand',\n 'screenshare on': 'Share screen',\n 'screenshare off': 'Stop streaming',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
+ "mappings": "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",
6
+ "names": ["Capabilities", "Events", "contributes", "createIntent", "defineModule", "definePlugin", "Ref", "Type", "ClientCapabilities", "ClientEvents", "MarkdownEvents", "SpaceCapabilities", "SpaceEvents", "defineObjectForm", "translations", "threadTranslations", "AnchoredTo", "DataType", "Type", "translations", "Type", "getTypename", "Channel", "meta", "id", "ThreadPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "ClientEvents", "ClientReady", "activate", "CallManager", "Events", "SetupSettings", "ThreadState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "threadTranslations", "SetupMetadata", "Metadata", "Type", "getTypename", "Channel", "metadata", "icon", "iconHue", "Thread", "loadReferences", "thread", "Ref", "Array", "loadAll", "messages", "DataType", "Message", "typename", "THREAD_ITEM", "parse", "item", "type", "label", "name", "data", "object", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "options", "createIntent", "ThreadAction", "CreateChannel", "spaceId", "space", "ClientCapabilities", "Schema", "AnchoredTo", "MessageV1", "SetupMigration", "Migration", "MessageV1ToV2", "SpaceEvents", "SpaceCreated", "onCreateSpace", "rootCollection", "MarkdownEvents", "SetupExtensions", "Markdown", "Startup", "ReactRoot", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "AppGraphBuilder", "Toolkit"]
7
7
  }
@@ -1,17 +1,17 @@
1
1
  import {
2
- ChannelType,
2
+ Channel_exports,
3
3
  ThreadAction,
4
- ThreadType
5
- } from "./chunk-KTWYVC5X.mjs";
4
+ Thread_exports
5
+ } from "./chunk-UTSLSZED.mjs";
6
6
  import {
7
7
  ThreadCapabilities
8
- } from "./chunk-4APCDRSH.mjs";
8
+ } from "./chunk-BBTXGRIR.mjs";
9
9
  import {
10
- THREAD_PLUGIN
11
- } from "./chunk-EV4JWI7L.mjs";
10
+ meta
11
+ } from "./chunk-K2DUJRFJ.mjs";
12
12
 
13
13
  // src/capabilities/intent-resolver.ts
14
- import { Effect } from "effect";
14
+ import * as Effect from "effect/Effect";
15
15
  import { Capabilities, contributes, createIntent, createResolver } from "@dxos/app-framework";
16
16
  import { sleep } from "@dxos/async";
17
17
  import { Obj, Relation, Type } from "@dxos/echo";
@@ -22,13 +22,13 @@ import { CollectionAction, SpaceAction } from "@dxos/plugin-space/types";
22
22
  import { Ref, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
23
23
  import { AnchoredTo, DataType } from "@dxos/schema";
24
24
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/capabilities/intent-resolver.ts";
25
- var intent_resolver_default = (context) => contributes(Capabilities.IntentResolver, [
25
+ var intent_resolver_default = ((context) => contributes(Capabilities.IntentResolver, [
26
26
  createResolver({
27
- intent: ThreadAction.OnSpaceCreated,
27
+ intent: ThreadAction.onCreateSpace,
28
28
  resolve: ({ space, rootCollection }) => Effect.gen(function* () {
29
29
  const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);
30
30
  const { object: collection } = yield* dispatch(createIntent(CollectionAction.CreateQueryCollection, {
31
- typename: Type.getTypename(ChannelType)
31
+ typename: Type.getTypename(Channel_exports.Channel)
32
32
  }));
33
33
  rootCollection.objects.push(Ref.make(collection));
34
34
  const { object: channel } = yield* dispatch(createIntent(ThreadAction.CreateChannel, {
@@ -42,13 +42,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
42
42
  intent: ThreadAction.CreateChannel,
43
43
  resolve: ({ name }) => ({
44
44
  data: {
45
- object: Obj.make(ChannelType, {
46
- name,
47
- defaultThread: Ref.make(Obj.make(ThreadType, {
48
- messages: [],
49
- status: "active"
50
- })),
51
- threads: []
45
+ object: Channel_exports.make({
46
+ name
52
47
  })
53
48
  }
54
49
  })
@@ -56,8 +51,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
56
51
  createResolver({
57
52
  intent: ThreadAction.CreateChannelThread,
58
53
  resolve: ({ channel }) => {
59
- const thread = Obj.make(ThreadType, {
60
- messages: [],
54
+ const thread = Thread_exports.make({
61
55
  status: "active"
62
56
  });
63
57
  channel.threads.push(Ref.make(thread));
@@ -75,7 +69,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
75
69
  const space = getSpace(subject);
76
70
  invariant(space, "Space not found", {
77
71
  F: __dxlog_file,
78
- L: 69,
72
+ L: 65,
79
73
  S: void 0,
80
74
  A: [
81
75
  "space",
@@ -84,10 +78,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
84
78
  });
85
79
  const { state } = context.getCapability(ThreadCapabilities.MutableState);
86
80
  const subjectId = fullyQualifiedId(subject);
87
- const thread = Obj.make(ThreadType, {
88
- name,
89
- messages: [],
90
- status: "staged"
81
+ const thread = Thread_exports.make({
82
+ name
91
83
  });
92
84
  const anchor = Relation.make(AnchoredTo, {
93
85
  [Relation.Source]: thread,
@@ -118,11 +110,10 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
118
110
  createResolver({
119
111
  intent: ThreadAction.AddProposal,
120
112
  resolve: ({ text, anchor, sender, subject }) => {
121
- console.log("add-proposal", text, anchor, sender, subject);
122
113
  const space = getSpace(subject);
123
114
  invariant(space, "Space not found", {
124
115
  F: __dxlog_file,
125
- L: 103,
116
+ L: 98,
126
117
  S: void 0,
127
118
  A: [
128
119
  "space",
@@ -140,7 +131,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
140
131
  }
141
132
  ]
142
133
  });
143
- const thread = Obj.make(ThreadType, {
134
+ const thread = Thread_exports.make({
144
135
  name: "Proposal",
145
136
  messages: [
146
137
  Ref.make(proposal)
@@ -192,7 +183,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
192
183
  const space = getSpace(thread);
193
184
  invariant(space, "Space not found", {
194
185
  F: __dxlog_file,
195
- L: 149,
186
+ L: 144,
196
187
  S: void 0,
197
188
  A: [
198
189
  "space",
@@ -240,7 +231,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
240
231
  message: [
241
232
  "thread deleted label",
242
233
  {
243
- ns: THREAD_PLUGIN
234
+ ns: meta.id
244
235
  }
245
236
  ],
246
237
  data: {
@@ -285,7 +276,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
285
276
  const space = getSpace(subject);
286
277
  invariant(space, "Space not found", {
287
278
  F: __dxlog_file,
288
- L: 234,
279
+ L: 229,
289
280
  S: void 0,
290
281
  A: [
291
282
  "space",
@@ -352,7 +343,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
352
343
  const space = getSpace(subject);
353
344
  invariant(space, "Space not found", {
354
345
  F: __dxlog_file,
355
- L: 294,
346
+ L: 289,
356
347
  S: void 0,
357
348
  A: [
358
349
  "space",
@@ -382,7 +373,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
382
373
  message: [
383
374
  "message deleted label",
384
375
  {
385
- ns: THREAD_PLUGIN
376
+ ns: meta.id
386
377
  }
387
378
  ],
388
379
  data: {
@@ -421,8 +412,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
421
412
  }
422
413
  }
423
414
  })
424
- ]);
415
+ ]));
425
416
  export {
426
417
  intent_resolver_default as default
427
418
  };
428
- //# sourceMappingURL=intent-resolver-IB5GYU2D.mjs.map
419
+ //# sourceMappingURL=intent-resolver-5POQTZ24.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, type PluginContext, contributes, createIntent, createResolver } from '@dxos/app-framework';\nimport { sleep } from '@dxos/async';\nimport { Obj, Relation, Type } 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 { CollectionAction, SpaceAction } from '@dxos/plugin-space/types';\nimport { Ref, fullyQualifiedId, getSpace } from '@dxos/react-client/echo';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport { meta } from '../meta';\nimport { Channel, Thread, ThreadAction } from '../types';\n\nimport { ThreadCapabilities } from './capabilities';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: ThreadAction.onCreateSpace,\n resolve: ({ space, rootCollection }) =>\n Effect.gen(function* () {\n const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const { object: collection } = yield* dispatch(\n createIntent(CollectionAction.CreateQueryCollection, { typename: Type.getTypename(Channel.Channel) }),\n );\n rootCollection.objects.push(Ref.make(collection));\n\n const { object: channel } = yield* dispatch(\n createIntent(ThreadAction.CreateChannel, { name: 'General', spaceId: space.id }),\n );\n space.db.add(channel);\n }),\n }),\n createResolver({\n intent: ThreadAction.CreateChannel,\n resolve: ({ name }) => ({\n data: {\n object: Channel.make({ name }),\n },\n }),\n }),\n createResolver({\n intent: ThreadAction.CreateChannelThread,\n resolve: ({ channel }) => {\n const thread = Thread.make({ 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 = Thread.make({ name });\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.AddProposal,\n resolve: ({ text, anchor, sender, subject }) => {\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n\n const subjectId = fullyQualifiedId(subject);\n const proposal = Obj.make(DataType.Message, {\n created: new Date().toISOString(),\n sender,\n blocks: [{ _tag: 'proposal', text }],\n });\n const thread = Thread.make({ name: 'Proposal', messages: [Ref.make(proposal)], status: 'active' });\n\n return {\n intents: [\n createIntent(SpaceAction.AddObject, { object: thread, target: space, hidden: true }),\n createIntent(SpaceAction.AddRelation, {\n space,\n schema: AnchoredTo,\n source: thread,\n target: subject,\n fields: { anchor },\n }),\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 Thread.Thread);\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: meta.id }],\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 Thread.Thread;\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n\n const message = Obj.make(DataType.Message, {\n created: new Date().toISOString(),\n sender,\n blocks: [{ _tag: '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 intents = [];\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 Thread.Thread;\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: meta.id }],\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": ["Effect", "Capabilities", "contributes", "createIntent", "createResolver", "sleep", "Obj", "Relation", "Type", "invariant", "ATTENDABLE_PATH_SEPARATOR", "DeckAction", "ObservabilityAction", "CollectionAction", "SpaceAction", "Ref", "fullyQualifiedId", "getSpace", "AnchoredTo", "DataType", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "ThreadAction", "onCreateSpace", "resolve", "space", "rootCollection", "gen", "dispatch", "getCapability", "IntentDispatcher", "object", "collection", "createIntent", "CollectionAction", "CreateQueryCollection", "typename", "Type", "getTypename", "Channel", "objects", "push", "Ref", "make", "channel", "CreateChannel", "name", "spaceId", "id", "db", "add", "data", "CreateChannelThread", "thread", "Thread", "status", "threads", "Create", "anchor", "_anchor", "subject", "getSpace", "invariant", "state", "ThreadCapabilities", "MutableState", "subjectId", "fullyQualifiedId", "Relation", "AnchoredTo", "Source", "Target", "draft", "drafts", "intents", "Select", "current", "DeckAction", "ChangeCompanion", "primary", "companion", "ATTENDABLE_PATH_SEPARATOR", "AddProposal", "text", "sender", "proposal", "Obj", "DataType", "Message", "created", "Date", "toISOString", "blocks", "_tag", "messages", "SpaceAction", "AddObject", "target", "hidden", "AddRelation", "schema", "source", "fields", "ToggleResolved", "undefined", "ObservabilityAction", "SendEvent", "properties", "threadId", "Delete", "_thread", "undo", "getSource", "index", "findIndex", "a", "splice", "remove", "sleep", "undoable", "message", "ns", "meta", "AddMessage", "find", "filter", "threadLength", "length", "messageId", "messageLength", "DeleteMessage", "messageIndex", "hasObjectId"]
7
+ }
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ThreadAction,
3
- ThreadType
4
- } from "./chunk-KTWYVC5X.mjs";
3
+ Thread_exports
4
+ } from "./chunk-UTSLSZED.mjs";
5
5
  import {
6
6
  ThreadCapabilities
7
- } from "./chunk-4APCDRSH.mjs";
8
- import "./chunk-EV4JWI7L.mjs";
7
+ } from "./chunk-BBTXGRIR.mjs";
8
+ import "./chunk-K2DUJRFJ.mjs";
9
9
 
10
10
  // src/capabilities/markdown.ts
11
11
  import { EditorView as EditorView2 } from "@codemirror/view";
@@ -42,7 +42,7 @@ var threads = (state, doc, dispatch) => {
42
42
  const unsubscribe = query.subscribe();
43
43
  const anchors = computed(() => query.objects.filter((anchor) => {
44
44
  const thread = Relation.getSource(anchor);
45
- return Obj.instanceOf(ThreadType, thread) && thread.status !== "resolved";
45
+ return Obj.instanceOf(Thread_exports.Thread, thread) && thread.status !== "resolved";
46
46
  }).concat(state.drafts[fullyQualifiedId(doc)] ?? []));
47
47
  return [
48
48
  EditorView.domEventHandlers({
@@ -100,7 +100,7 @@ var threads = (state, doc, dispatch) => {
100
100
  const relation = query.objects.find((object) => getSource(object).id === id);
101
101
  if (relation) {
102
102
  const thread = getSource(relation);
103
- if (Obj.instanceOf(ThreadType, thread)) {
103
+ if (Obj.instanceOf(Thread_exports.Thread, thread)) {
104
104
  thread.name = getName(doc, cursor);
105
105
  relation.anchor = cursor;
106
106
  }
@@ -119,7 +119,7 @@ var threads = (state, doc, dispatch) => {
119
119
  };
120
120
 
121
121
  // src/capabilities/markdown.ts
122
- var markdown_default = (context) => contributes(MarkdownCapabilities.Extensions, [
122
+ var markdown_default = ((context) => contributes(MarkdownCapabilities.Extensions, [
123
123
  ({ document: doc }) => {
124
124
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
125
125
  const { state } = context.getCapability(ThreadCapabilities.MutableState);
@@ -149,7 +149,7 @@ var markdown_default = (context) => contributes(MarkdownCapabilities.Extensions,
149
149
  });
150
150
  });
151
151
  }
152
- ]);
152
+ ]));
153
153
  var selectionOverlapsComment = (state) => {
154
154
  const commentState = state.field(commentsState, false);
155
155
  if (commentState === void 0) {
@@ -166,4 +166,4 @@ var selectionOverlapsComment = (state) => {
166
166
  export {
167
167
  markdown_default as default
168
168
  };
169
- //# sourceMappingURL=markdown-Z677YORA.mjs.map
169
+ //# sourceMappingURL=markdown-L7LDNF56.mjs.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, type PluginContext, contributes, createIntent } 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 { type EditorState, commentClickedEffect, commentsState, overlap } from '@dxos/react-ui-editor';\n\nimport { threads } from '../extensions';\n\nimport { ThreadCapabilities } from './capabilities';\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 { type PromiseIntentDispatcher, createIntent } from '@dxos/app-framework';\nimport { Filter, Obj, Query, Relation } from '@dxos/echo';\nimport { type Markdown } from '@dxos/plugin-markdown/types';\nimport { createDocAccessor, fullyQualifiedId, getSource, getSpace, getTextInRange } from '@dxos/react-client/echo';\nimport { comments, createExternalCommentSync } from '@dxos/react-ui-editor';\nimport { AnchoredTo } from '@dxos/schema';\n\nimport { Thread, ThreadAction, type ThreadState } from '../types';\n\n// TODO(burdon): Factor out.\nconst getName = (doc: Markdown.Document, anchor: string): string | undefined => {\n if (doc.content) {\n const [start, end] = anchor.split(':');\n return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);\n }\n};\n\n/**\n * Construct plugins.\n */\nexport const threads = (state: ThreadState, doc?: Markdown.Document, 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(Thread.Thread, 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 Thread.Thread;\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 Thread.Thread;\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(Thread.Thread, 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": ["EditorView", "Capabilities", "contributes", "createIntent", "ATTENDABLE_PATH_SEPARATOR", "DeckAction", "MarkdownCapabilities", "fullyQualifiedId", "commentClickedEffect", "commentsState", "overlap", "EditorView", "computed", "effect", "createIntent", "Filter", "Obj", "Query", "Relation", "createDocAccessor", "fullyQualifiedId", "getSource", "getSpace", "getTextInRange", "comments", "createExternalCommentSync", "AnchoredTo", "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", "Thread", "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", "doc", "dispatchPromise", "dispatch", "getCapability", "Capabilities", "IntentDispatcher", "state", "ThreadCapabilities", "MutableState", "threads", "EditorView", "updateListener", "of", "update", "docChanged", "selectionSet", "toolbar", "fullyQualifiedId", "selectionOverlapsComment", "id", "transactions", "forEach", "transaction", "effects", "effect", "is", "commentClickedEffect", "createIntent", "DeckAction", "ChangeCompanion", "primary", "companion", "ATTENDABLE_PATH_SEPARATOR", "commentState", "field", "commentsState", "undefined", "selection", "range", "ranges", "comments", "some", "commentRange", "overlap"]
7
+ }