@dxos/plugin-thread 0.8.3-staging.0fa589b → 0.8.4-main.f9ba587

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 (232) hide show
  1. package/dist/lib/browser/ChannelContainer-5YH4FTBL.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-2UYQ23KO.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-OY7R7EJP.mjs → app-graph-builder-Q5V3KXE3.mjs} +6 -6
  4. package/dist/lib/browser/{call-manager-APQAZWHT.mjs → call-manager-NIPDYUVD.mjs} +6 -5
  5. package/dist/lib/browser/chunk-5ZVJ4GAS.mjs +21 -0
  6. package/dist/lib/browser/chunk-6NSMBO3B.mjs +56 -0
  7. package/dist/lib/browser/chunk-6NSMBO3B.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-5P5BH5GE.mjs → chunk-ERWASUQK.mjs} +66 -5
  9. package/dist/lib/browser/chunk-ERWASUQK.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-IIUTBDVB.mjs → chunk-EV4JWI7L.mjs} +2 -2
  11. package/dist/lib/browser/{chunk-JKQUJOTX.mjs → chunk-GERVMFQW.mjs} +2 -2
  12. package/dist/lib/browser/{chunk-AEXWNS6Z.mjs → chunk-JVIKVYTI.mjs} +4 -4
  13. package/dist/lib/browser/{chunk-XZKBN3NS.mjs → chunk-LCJD3NOB.mjs} +32 -31
  14. package/dist/lib/browser/chunk-LCJD3NOB.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-R5MDLUPC.mjs → chunk-LGSDKXPF.mjs} +3 -3
  16. package/dist/lib/browser/chunk-NCSFNWBZ.mjs +479 -0
  17. package/dist/lib/browser/chunk-NCSFNWBZ.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-YD57K2SL.mjs +367 -0
  19. package/dist/lib/browser/chunk-YD57K2SL.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-4H4A264L.mjs → chunk-ZE7KWN36.mjs} +85 -124
  21. package/dist/lib/browser/chunk-ZE7KWN36.mjs.map +7 -0
  22. package/dist/lib/browser/index.mjs +28 -22
  23. package/dist/lib/browser/index.mjs.map +3 -3
  24. package/dist/lib/browser/{intent-resolver-FK2MDVDT.mjs → intent-resolver-MWE6XLPY.mjs} +6 -6
  25. package/dist/lib/browser/{markdown-TE5SWWNJ.mjs → markdown-ZO34G7RM.mjs} +7 -7
  26. package/dist/lib/browser/meta.json +1 -1
  27. package/dist/lib/browser/react-root-YNDNPODD.mjs +28 -0
  28. package/dist/lib/browser/{react-surface-VXUJKSOG.mjs → react-surface-2AXRNTCA.mjs} +12 -11
  29. package/dist/lib/browser/{settings-RB2RSLXV.mjs → settings-XZGPZNAU.mjs} +4 -4
  30. package/dist/lib/browser/{state-RKL5MSDP.mjs → state-H6CYONWE.mjs} +4 -4
  31. package/dist/lib/browser/types/index.mjs +2 -2
  32. package/dist/lib/node-esm/ChannelContainer-O2LZKMRM.mjs +17 -0
  33. package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs → ChatContainer-6N35MP5J.mjs} +6 -5
  34. package/dist/lib/node-esm/{app-graph-builder-BAHBHYWI.mjs → app-graph-builder-GAKBZNU3.mjs} +6 -6
  35. package/dist/lib/node-esm/{call-manager-UUYXLF4T.mjs → call-manager-D6O5ZJJ4.mjs} +6 -5
  36. package/dist/lib/{browser/call-manager-APQAZWHT.mjs.map → node-esm/call-manager-D6O5ZJJ4.mjs.map} +1 -1
  37. package/dist/lib/node-esm/{chunk-O3V45YJP.mjs → chunk-25ABSYP2.mjs} +65 -5
  38. package/dist/lib/node-esm/chunk-25ABSYP2.mjs.map +7 -0
  39. package/dist/lib/node-esm/{chunk-UJMPYKT3.mjs → chunk-3X3YKRM2.mjs} +4 -4
  40. package/dist/lib/node-esm/{chunk-PGRP3O4O.mjs → chunk-57XR3LEF.mjs} +2 -2
  41. package/dist/lib/node-esm/{chunk-2RNIPFDA.mjs → chunk-5UQ4KKDE.mjs} +32 -31
  42. package/dist/lib/node-esm/chunk-5UQ4KKDE.mjs.map +7 -0
  43. package/dist/lib/node-esm/{chunk-K4KAUOKT.mjs → chunk-75RJ5DJI.mjs} +3 -3
  44. package/dist/lib/node-esm/chunk-A6QLTZCY.mjs +480 -0
  45. package/dist/lib/node-esm/chunk-A6QLTZCY.mjs.map +7 -0
  46. package/dist/lib/node-esm/{chunk-ESQC6SYE.mjs → chunk-GRLRWTRU.mjs} +2 -2
  47. package/dist/lib/node-esm/{chunk-WXNPD542.mjs → chunk-IHDNQLLR.mjs} +84 -124
  48. package/dist/lib/node-esm/chunk-IHDNQLLR.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-OU5BYIDO.mjs +58 -0
  50. package/dist/lib/node-esm/chunk-OU5BYIDO.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-RGTWAVEE.mjs +368 -0
  52. package/dist/lib/node-esm/chunk-RGTWAVEE.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-X62X3VOK.mjs +23 -0
  54. package/dist/lib/node-esm/index.mjs +28 -22
  55. package/dist/lib/node-esm/index.mjs.map +3 -3
  56. package/dist/lib/node-esm/{intent-resolver-BU73VYW3.mjs → intent-resolver-B6PNTMPY.mjs} +6 -6
  57. package/dist/lib/node-esm/{markdown-HJUWNBLS.mjs → markdown-ZJUFV2TA.mjs} +7 -7
  58. package/dist/lib/node-esm/meta.json +1 -1
  59. package/dist/lib/node-esm/{react-root-RUXOAQNW.mjs → react-root-ZUVVTKWG.mjs} +12 -11
  60. package/dist/lib/{browser/react-root-NK3A4VG7.mjs.map → node-esm/react-root-ZUVVTKWG.mjs.map} +1 -1
  61. package/dist/lib/node-esm/{react-surface-ELXFYKP6.mjs → react-surface-OMEZTOU6.mjs} +12 -11
  62. package/dist/lib/{browser/react-surface-VXUJKSOG.mjs.map → node-esm/react-surface-OMEZTOU6.mjs.map} +1 -1
  63. package/dist/lib/node-esm/{settings-EA7DFSM6.mjs → settings-XECBSD6Q.mjs} +4 -4
  64. package/dist/lib/node-esm/{state-6AUTNROZ.mjs → state-D7WNDT3N.mjs} +4 -4
  65. package/dist/lib/node-esm/types/index.mjs +2 -2
  66. package/dist/types/src/calls/call-manager.d.ts +1 -1
  67. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  68. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  69. package/dist/types/src/calls/util/calls-service.d.ts +4 -1
  70. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  71. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  72. package/dist/types/src/calls-service.stories.d.ts +22 -0
  73. package/dist/types/src/calls-service.stories.d.ts.map +1 -0
  74. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  75. package/dist/types/src/components/ChannelContainer.stories.d.ts +2 -2
  76. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  77. package/dist/types/src/components/Chat.stories.d.ts +3 -2
  78. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  79. package/dist/types/src/components/ChatContainer.d.ts +2 -2
  80. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  81. package/dist/types/src/components/Comments.stories.d.ts +1 -1
  82. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  83. package/dist/types/src/components/CommentsContainer.d.ts +4 -4
  84. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  85. package/dist/types/src/components/CommentsThreadContainer.d.ts +14 -0
  86. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -0
  87. package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
  88. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  89. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  90. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +1 -1
  91. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  92. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +1 -1
  93. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  94. package/dist/types/src/components/index.d.ts +1 -1
  95. package/dist/types/src/components/index.d.ts.map +1 -1
  96. package/dist/types/src/hooks/index.d.ts +2 -0
  97. package/dist/types/src/hooks/index.d.ts.map +1 -1
  98. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +2 -0
  99. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +1 -0
  100. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +3 -0
  101. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -0
  102. package/dist/types/src/testing/stories.d.ts.map +1 -1
  103. package/dist/types/src/translations.d.ts +72 -194
  104. package/dist/types/src/translations.d.ts.map +1 -1
  105. package/dist/types/tsconfig.tsbuildinfo +1 -1
  106. package/package.json +47 -48
  107. package/src/ThreadPlugin.tsx +1 -1
  108. package/src/calls/call-manager.ts +6 -2
  109. package/src/calls/media-manager.ts +11 -4
  110. package/src/calls/util/calls-service.ts +8 -5
  111. package/src/calls/util/stub-media-streams.ts +3 -6
  112. package/src/calls-service.stories.tsx +216 -0
  113. package/src/components/Call/Call.tsx +1 -1
  114. package/src/components/Call/Toolbar.tsx +2 -2
  115. package/src/components/CallDebugPanel.tsx +2 -2
  116. package/src/components/ChannelContainer.stories.tsx +5 -5
  117. package/src/components/ChannelContainer.tsx +6 -5
  118. package/src/components/Chat.stories.tsx +4 -4
  119. package/src/components/ChatContainer.tsx +10 -9
  120. package/src/components/Comments.stories.tsx +22 -15
  121. package/src/components/CommentsContainer.tsx +16 -11
  122. package/src/components/{CommentContainer.tsx → CommentsThreadContainer.tsx} +49 -80
  123. package/src/components/Media/VideoObject.stories.tsx +1 -1
  124. package/src/components/MessageContainer.tsx +27 -43
  125. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +2 -2
  126. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +2 -2
  127. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
  128. package/src/components/ThreadComplementary.tsx +2 -2
  129. package/src/components/ThreadSettings.tsx +2 -2
  130. package/src/components/index.ts +1 -1
  131. package/src/hooks/index.ts +2 -0
  132. package/src/hooks/useInaudibleAudioStreamTrack.tsx +27 -0
  133. package/src/hooks/useVideoStreamTrack.tsx +33 -0
  134. package/src/testing/stories.ts +5 -1
  135. package/src/translations.ts +9 -8
  136. package/dist/lib/browser/ChannelContainer-PKFBVENP.mjs +0 -15
  137. package/dist/lib/browser/ChatContainer-RSOKYAMK.mjs +0 -14
  138. package/dist/lib/browser/chunk-4H4A264L.mjs.map +0 -7
  139. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +0 -7
  140. package/dist/lib/browser/chunk-6NBVNXTM.mjs +0 -21
  141. package/dist/lib/browser/chunk-PG5CTFKK.mjs +0 -550
  142. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +0 -7
  143. package/dist/lib/browser/chunk-TAFSCSUR.mjs +0 -351
  144. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +0 -7
  146. package/dist/lib/browser/react-root-NK3A4VG7.mjs +0 -27
  147. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs +0 -36
  148. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs.map +0 -7
  149. package/dist/lib/node/ChatContainer-GCOM3M56.cjs +0 -35
  150. package/dist/lib/node/ChatContainer-GCOM3M56.cjs.map +0 -7
  151. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs +0 -179
  152. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +0 -7
  153. package/dist/lib/node/call-manager-HV2XJW5O.cjs +0 -37
  154. package/dist/lib/node/call-manager-HV2XJW5O.cjs.map +0 -7
  155. package/dist/lib/node/chunk-44I33JDT.cjs +0 -1731
  156. package/dist/lib/node/chunk-44I33JDT.cjs.map +0 -7
  157. package/dist/lib/node/chunk-4YSNVPWU.cjs +0 -37
  158. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +0 -7
  159. package/dist/lib/node/chunk-E3WBZTTI.cjs +0 -371
  160. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +0 -7
  161. package/dist/lib/node/chunk-ERG7G6FF.cjs +0 -59
  162. package/dist/lib/node/chunk-ERG7G6FF.cjs.map +0 -7
  163. package/dist/lib/node/chunk-FUXJAVFZ.cjs +0 -108
  164. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +0 -7
  165. package/dist/lib/node/chunk-HLMCEE5K.cjs +0 -41
  166. package/dist/lib/node/chunk-HLMCEE5K.cjs.map +0 -7
  167. package/dist/lib/node/chunk-IP533AMV.cjs +0 -554
  168. package/dist/lib/node/chunk-IP533AMV.cjs.map +0 -7
  169. package/dist/lib/node/chunk-LR5NENBE.cjs +0 -54
  170. package/dist/lib/node/chunk-LR5NENBE.cjs.map +0 -7
  171. package/dist/lib/node/chunk-UM36TPCT.cjs +0 -984
  172. package/dist/lib/node/chunk-UM36TPCT.cjs.map +0 -7
  173. package/dist/lib/node/chunk-ZGDN3XBR.cjs +0 -149
  174. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +0 -7
  175. package/dist/lib/node/index.cjs +0 -310
  176. package/dist/lib/node/index.cjs.map +0 -7
  177. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs +0 -363
  178. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +0 -7
  179. package/dist/lib/node/markdown-GQIPJS2F.cjs +0 -178
  180. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +0 -7
  181. package/dist/lib/node/meta.json +0 -1
  182. package/dist/lib/node/react-root-6HHDMULJ.cjs +0 -51
  183. package/dist/lib/node/react-root-6HHDMULJ.cjs.map +0 -7
  184. package/dist/lib/node/react-surface-NBH42NN2.cjs +0 -122
  185. package/dist/lib/node/react-surface-NBH42NN2.cjs.map +0 -7
  186. package/dist/lib/node/settings-4LQSFEDK.cjs +0 -36
  187. package/dist/lib/node/settings-4LQSFEDK.cjs.map +0 -7
  188. package/dist/lib/node/state-IY5XX3H2.cjs +0 -50
  189. package/dist/lib/node/state-IY5XX3H2.cjs.map +0 -7
  190. package/dist/lib/node/types/index.cjs +0 -38
  191. package/dist/lib/node/types/index.cjs.map +0 -7
  192. package/dist/lib/node-esm/ChannelContainer-O4QJII2P.mjs +0 -16
  193. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +0 -7
  194. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +0 -7
  195. package/dist/lib/node-esm/chunk-O63QJPQX.mjs +0 -23
  196. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs +0 -352
  197. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +0 -7
  198. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs +0 -551
  199. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +0 -7
  200. package/dist/lib/node-esm/chunk-WXNPD542.mjs.map +0 -7
  201. package/dist/types/src/components/CommentContainer.d.ts +0 -13
  202. package/dist/types/src/components/CommentContainer.d.ts.map +0 -1
  203. package/dist/types/src/peers.stories.d.ts +0 -11
  204. package/dist/types/src/peers.stories.d.ts.map +0 -1
  205. package/src/peers.stories.tsx +0 -189
  206. /package/dist/lib/browser/{ChannelContainer-PKFBVENP.mjs.map → ChannelContainer-5YH4FTBL.mjs.map} +0 -0
  207. /package/dist/lib/browser/{ChatContainer-RSOKYAMK.mjs.map → ChatContainer-2UYQ23KO.mjs.map} +0 -0
  208. /package/dist/lib/browser/{app-graph-builder-OY7R7EJP.mjs.map → app-graph-builder-Q5V3KXE3.mjs.map} +0 -0
  209. /package/dist/lib/{node-esm/call-manager-UUYXLF4T.mjs.map → browser/call-manager-NIPDYUVD.mjs.map} +0 -0
  210. /package/dist/lib/browser/{chunk-6NBVNXTM.mjs.map → chunk-5ZVJ4GAS.mjs.map} +0 -0
  211. /package/dist/lib/browser/{chunk-IIUTBDVB.mjs.map → chunk-EV4JWI7L.mjs.map} +0 -0
  212. /package/dist/lib/browser/{chunk-JKQUJOTX.mjs.map → chunk-GERVMFQW.mjs.map} +0 -0
  213. /package/dist/lib/browser/{chunk-AEXWNS6Z.mjs.map → chunk-JVIKVYTI.mjs.map} +0 -0
  214. /package/dist/lib/browser/{chunk-R5MDLUPC.mjs.map → chunk-LGSDKXPF.mjs.map} +0 -0
  215. /package/dist/lib/browser/{intent-resolver-FK2MDVDT.mjs.map → intent-resolver-MWE6XLPY.mjs.map} +0 -0
  216. /package/dist/lib/browser/{markdown-TE5SWWNJ.mjs.map → markdown-ZO34G7RM.mjs.map} +0 -0
  217. /package/dist/lib/{node-esm/react-root-RUXOAQNW.mjs.map → browser/react-root-YNDNPODD.mjs.map} +0 -0
  218. /package/dist/lib/{node-esm/react-surface-ELXFYKP6.mjs.map → browser/react-surface-2AXRNTCA.mjs.map} +0 -0
  219. /package/dist/lib/browser/{settings-RB2RSLXV.mjs.map → settings-XZGPZNAU.mjs.map} +0 -0
  220. /package/dist/lib/browser/{state-RKL5MSDP.mjs.map → state-H6CYONWE.mjs.map} +0 -0
  221. /package/dist/lib/node-esm/{ChannelContainer-O4QJII2P.mjs.map → ChannelContainer-O2LZKMRM.mjs.map} +0 -0
  222. /package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs.map → ChatContainer-6N35MP5J.mjs.map} +0 -0
  223. /package/dist/lib/node-esm/{app-graph-builder-BAHBHYWI.mjs.map → app-graph-builder-GAKBZNU3.mjs.map} +0 -0
  224. /package/dist/lib/node-esm/{chunk-UJMPYKT3.mjs.map → chunk-3X3YKRM2.mjs.map} +0 -0
  225. /package/dist/lib/node-esm/{chunk-PGRP3O4O.mjs.map → chunk-57XR3LEF.mjs.map} +0 -0
  226. /package/dist/lib/node-esm/{chunk-K4KAUOKT.mjs.map → chunk-75RJ5DJI.mjs.map} +0 -0
  227. /package/dist/lib/node-esm/{chunk-ESQC6SYE.mjs.map → chunk-GRLRWTRU.mjs.map} +0 -0
  228. /package/dist/lib/node-esm/{chunk-O63QJPQX.mjs.map → chunk-X62X3VOK.mjs.map} +0 -0
  229. /package/dist/lib/node-esm/{intent-resolver-BU73VYW3.mjs.map → intent-resolver-B6PNTMPY.mjs.map} +0 -0
  230. /package/dist/lib/node-esm/{markdown-HJUWNBLS.mjs.map → markdown-ZJUFV2TA.mjs.map} +0 -0
  231. /package/dist/lib/node-esm/{settings-EA7DFSM6.mjs.map → settings-XECBSD6Q.mjs.map} +0 -0
  232. /package/dist/lib/node-esm/{state-6AUTNROZ.mjs.map → state-D7WNDT3N.mjs.map} +0 -0
@@ -1,371 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_E3WBZTTI_exports = {};
30
- __export(chunk_E3WBZTTI_exports, {
31
- ChatContainer: () => ChatContainer,
32
- ChatContainer_default: () => ChatContainer_default,
33
- ChatHeading: () => ChatHeading,
34
- MessageContainer: () => MessageContainer,
35
- command: () => command
36
- });
37
- module.exports = __toCommonJS(chunk_E3WBZTTI_exports);
38
- var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
39
- var import_chunk_LR5NENBE = require("./chunk-LR5NENBE.cjs");
40
- var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
41
- var import_tracking = require("@preact-signals/safe-react/tracking");
42
- var import_react = __toESM(require("react"));
43
- var import_echo = require("@dxos/echo");
44
- var import_echo2 = require("@dxos/react-client/echo");
45
- var import_halo = require("@dxos/react-client/halo");
46
- var import_react_ui = require("@dxos/react-ui");
47
- var import_react_ui_editor = require("@dxos/react-ui-editor");
48
- var import_react_ui_stack = require("@dxos/react-ui-stack");
49
- var import_react_ui_theme = require("@dxos/react-ui-theme");
50
- var import_react_ui_thread = require("@dxos/react-ui-thread");
51
- var import_schema = require("@dxos/schema");
52
- var import_util = require("@dxos/util");
53
- var import_tracking2 = require("@preact-signals/safe-react/tracking");
54
- var import_view = require("@codemirror/view");
55
- var import_react2 = require("@phosphor-icons/react");
56
- var import_react3 = __toESM(require("react"));
57
- var import_app_framework = require("@dxos/app-framework");
58
- var import_live_object = require("@dxos/live-object");
59
- var import_react_client = require("@dxos/react-client");
60
- var import_halo2 = require("@dxos/react-client/halo");
61
- var import_react_ui2 = require("@dxos/react-ui");
62
- var import_react_ui_editor2 = require("@dxos/react-ui-editor");
63
- var import_react_ui_theme2 = require("@dxos/react-ui-theme");
64
- var import_react_ui_thread2 = require("@dxos/react-ui-thread");
65
- var import_language = require("@codemirror/language");
66
- var import_react_ui_editor3 = require("@dxos/react-ui-editor");
67
- var import_react_ui_theme3 = require("@dxos/react-ui-theme");
68
- var parser = import_language.StreamLanguage.define({
69
- startState: () => ({
70
- count: 0
71
- }),
72
- token: (stream, state) => {
73
- state.count++;
74
- if (stream.eatSpace()) {
75
- return null;
76
- }
77
- if (state.count === 1 && stream.match(/^(\/\w+)/)) {
78
- return "tagName";
79
- }
80
- stream.next();
81
- return null;
82
- }
83
- });
84
- var styles = import_language.HighlightStyle.define([
85
- {
86
- tag: import_react_ui_editor3.tags.tagName,
87
- class: (0, import_react_ui_theme3.mx)("dx-tag dx-tag--indigo text-baseText font-medium")
88
- }
89
- ]);
90
- var command = [
91
- parser,
92
- (0, import_language.syntaxHighlighting)(styles)
93
- ];
94
- var messageControlClassNames = [
95
- "!p-1 !min-bs-0 transition-opacity",
96
- import_react_ui_theme2.hoverableControlItem
97
- ];
98
- var MessageContainer = ({ message, members, editable = false, onDelete }) => {
99
- var _effect = (0, import_tracking2.useSignals)();
100
- try {
101
- const senderIdentity = members.find((member) => message.sender.identityDid && member.identity.did === message.sender.identityDid || message.sender.identityKey && import_react_client.PublicKey.equals(member.identity.identityKey, message.sender.identityKey))?.identity;
102
- const messageMetadata = (0, import_chunk_LR5NENBE.getMessageMetadata)(message.id, senderIdentity);
103
- const userIsAuthor = (0, import_halo2.useIdentity)()?.did === messageMetadata.authorId;
104
- const [editing, setEditing] = (0, import_react3.useState)(false);
105
- const handleDelete = (0, import_react3.useCallback)(() => onDelete?.(message.id), [
106
- message,
107
- onDelete
108
- ]);
109
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
110
- const editLabel = t(editing ? "save message label" : "edit message label");
111
- const deleteLabel = t("delete message label");
112
- const textBlock = message.blocks.find((block) => block.type === "text");
113
- const references = message.blocks.filter((block) => block.type === "reference").map((block) => block.reference);
114
- (0, import_chunk_FUXJAVFZ.useOnEditAnalytics)(message, textBlock, !!editing);
115
- return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageRoot, {
116
- ...messageMetadata,
117
- classNames: [
118
- import_react_ui_theme2.hoverableControls,
119
- import_react_ui_theme2.hoverableFocusedWithinControls
120
- ]
121
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageHeading, {
122
- authorName: messageMetadata.authorName,
123
- timestamp: messageMetadata.timestamp
124
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ButtonGroup, {
125
- classNames: "mie-1"
126
- }, userIsAuthor && editable && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
127
- asChild: true,
128
- content: editLabel
129
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
130
- variant: "ghost",
131
- "data-testid": editing ? "thread.message.save" : "thread.message.edit",
132
- classNames: messageControlClassNames,
133
- onClick: () => setEditing((editing2) => !editing2)
134
- }, /* @__PURE__ */ import_react3.default.createElement("span", {
135
- className: "sr-only"
136
- }, editLabel), editing ? /* @__PURE__ */ import_react3.default.createElement(import_react2.Check, {
137
- className: (0, import_react_ui_theme2.getSize)(4)
138
- }) : /* @__PURE__ */ import_react3.default.createElement(import_react2.PencilSimple, {
139
- className: (0, import_react_ui_theme2.getSize)(4)
140
- }))), onDelete && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
141
- asChild: true,
142
- content: deleteLabel
143
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
144
- variant: "ghost",
145
- "data-testid": "thread.message.delete",
146
- classNames: messageControlClassNames,
147
- onClick: () => handleDelete()
148
- }, /* @__PURE__ */ import_react3.default.createElement("span", {
149
- className: "sr-only"
150
- }, deleteLabel), /* @__PURE__ */ import_react3.default.createElement(import_react2.X, {
151
- className: (0, import_react_ui_theme2.getSize)(4)
152
- }))))), textBlock && /* @__PURE__ */ import_react3.default.createElement(TextboxBlock, {
153
- block: textBlock,
154
- isAuthor: userIsAuthor,
155
- editing
156
- }), import_live_object.RefArray.targets(references).map((reference, index) => /* @__PURE__ */ import_react3.default.createElement(MessagePart, {
157
- key: index,
158
- part: reference
159
- })));
160
- } finally {
161
- _effect.f();
162
- }
163
- };
164
- var MessagePart = ({ part }) => {
165
- var _effect = (0, import_tracking2.useSignals)();
166
- try {
167
- return /* @__PURE__ */ import_react3.default.createElement(MessageBlockObjectTile, {
168
- subject: part
169
- });
170
- } finally {
171
- _effect.f();
172
- }
173
- };
174
- var TextboxBlock = ({ block, isAuthor, editing }) => {
175
- var _effect = (0, import_tracking2.useSignals)();
176
- try {
177
- const { themeMode } = (0, import_react_ui2.useThemeContext)();
178
- const inMemoryContentRef = (0, import_react3.useRef)(block.text);
179
- const handleDocumentChange = (0, import_react3.useCallback)((newState) => {
180
- inMemoryContentRef.current = newState;
181
- }, []);
182
- const saveDocumentChange = (0, import_react3.useCallback)(() => {
183
- block.text = inMemoryContentRef.current;
184
- }, [
185
- block
186
- ]);
187
- (0, import_react_ui2.useOnTransition)(editing, true, false, saveDocumentChange);
188
- const { parentRef, focusAttributes, view } = (0, import_react_ui_editor2.useTextEditor)(() => ({
189
- initialValue: block.text,
190
- extensions: [
191
- (0, import_react_ui_editor2.createBasicExtensions)({
192
- readOnly: !isAuthor || !editing
193
- }),
194
- (0, import_react_ui_editor2.createThemeExtensions)({
195
- themeMode
196
- }),
197
- command,
198
- import_view.EditorView.updateListener.of((update) => {
199
- if (update.docChanged) {
200
- handleDocumentChange(update.state.doc.toString());
201
- }
202
- })
203
- ]
204
- }), [
205
- block.text,
206
- editing,
207
- isAuthor,
208
- themeMode,
209
- handleDocumentChange
210
- ]);
211
- (0, import_react3.useEffect)(() => {
212
- editing && view?.focus();
213
- }, [
214
- editing,
215
- view
216
- ]);
217
- return /* @__PURE__ */ import_react3.default.createElement("div", {
218
- role: "none",
219
- ref: parentRef,
220
- className: "mie-4",
221
- ...focusAttributes
222
- });
223
- } finally {
224
- _effect.f();
225
- }
226
- };
227
- var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react3.forwardRef)(({ subject }, forwardedRef) => {
228
- var _effect = (0, import_tracking2.useSignals)();
229
- try {
230
- let title = subject.name ?? subject.title ?? subject.type ?? "Object";
231
- if (typeof title !== "string") {
232
- title = title?.content ?? "";
233
- }
234
- return /* @__PURE__ */ import_react3.default.createElement("div", {
235
- role: "group",
236
- className: (0, import_react_ui_theme2.mx)("grid col-span-3 py-1 pr-4", import_react_ui_theme2.hoverableControls, import_react_ui_theme2.hoverableFocusedWithinControls),
237
- ref: forwardedRef
238
- }, /* @__PURE__ */ import_react3.default.createElement(import_app_framework.Surface, {
239
- role: "card",
240
- limit: 1,
241
- data: {
242
- subject
243
- },
244
- fallback: title
245
- }));
246
- } finally {
247
- _effect.f();
248
- }
249
- });
250
- var ChatHeading = ({ attendableId }) => {
251
- var _effect = (0, import_tracking.useSignals)();
252
- try {
253
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
254
- return /* @__PURE__ */ import_react.default.createElement("div", {
255
- role: "none",
256
- className: "flex items-center"
257
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.SigilButton, {
258
- attendableId
259
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Icon, {
260
- icon: "ph--chat--regular",
261
- size: 5
262
- })), /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.HeadingLabel, {
263
- attendableId
264
- }, t("chat heading")));
265
- } finally {
266
- _effect.f();
267
- }
268
- };
269
- var ChatContainer = ({ space, thread, context, current, autoFocusTextbox }) => {
270
- var _effect = (0, import_tracking.useSignals)();
271
- try {
272
- const id = (0, import_echo2.fullyQualifiedId)(thread);
273
- const identity = (0, import_halo.useIdentity)();
274
- const members = (0, import_echo2.useMembers)(space?.key);
275
- const activity = (0, import_chunk_FUXJAVFZ.useStatus)(space, id);
276
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
277
- const [_count, _setCount] = (0, import_react.useState)(0);
278
- const rerenderEditor = () => _setCount((count) => count + 1);
279
- const [autoFocus, setAutoFocus] = (0, import_react.useState)(autoFocusTextbox);
280
- const threadScrollRef = (0, import_react.useRef)(null);
281
- const { themeMode } = (0, import_react_ui.useThemeContext)();
282
- const textboxMetadata = (0, import_chunk_LR5NENBE.getMessageMetadata)(id, identity);
283
- const messageRef = (0, import_react.useRef)("");
284
- const extensions = (0, import_react.useMemo)(() => [
285
- (0, import_react_ui_editor.createBasicExtensions)({
286
- placeholder: t("message placeholder")
287
- }),
288
- (0, import_react_ui_editor.createThemeExtensions)({
289
- themeMode
290
- }),
291
- (0, import_react_ui_editor.listener)({
292
- onChange: (text) => messageRef.current = text
293
- }),
294
- command
295
- ], [
296
- themeMode,
297
- _count
298
- ]);
299
- const scrollToEnd = (behavior) => setTimeout(() => threadScrollRef.current?.scrollIntoView({
300
- behavior,
301
- block: "end"
302
- }), 10);
303
- (0, import_react.useLayoutEffect)(() => {
304
- scrollToEnd("instant");
305
- }, []);
306
- const handleCreate = () => {
307
- if (!messageRef.current?.length) {
308
- return false;
309
- }
310
- thread.messages.push(import_echo.Ref.make(import_echo.Obj.make(import_schema.DataType.Message, {
311
- sender: {
312
- identityDid: identity.did
313
- },
314
- created: (/* @__PURE__ */ new Date()).toISOString(),
315
- blocks: [
316
- {
317
- type: "text",
318
- text: messageRef.current
319
- }
320
- ],
321
- properties: context ? {
322
- context: import_echo.Ref.make(context)
323
- } : void 0
324
- })));
325
- messageRef.current = "";
326
- setAutoFocus(true);
327
- scrollToEnd("smooth");
328
- rerenderEditor();
329
- return true;
330
- };
331
- return /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.Thread, {
332
- current,
333
- id,
334
- classNames: "bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0"
335
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Root, {
336
- classNames: "col-span-2"
337
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Viewport, {
338
- classNames: "overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]"
339
- }, /* @__PURE__ */ import_react.default.createElement("div", {
340
- role: "none",
341
- className: (0, import_react_ui_theme.mx)(import_react_ui_thread.threadLayout, "place-self-end")
342
- }, thread.messages.map((message) => message.target).filter(import_util.isNonNullable).map((message) => /* @__PURE__ */ import_react.default.createElement(MessageContainer, {
343
- key: message.id,
344
- message,
345
- members
346
- }))), /* @__PURE__ */ import_react.default.createElement("div", {
347
- role: "none",
348
- className: "bs-px -mbs-px",
349
- ref: threadScrollRef
350
- }), /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Scrollbar, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Thumb, null)))), /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.MessageTextbox, {
351
- extensions,
352
- autoFocus,
353
- onSend: handleCreate,
354
- ...textboxMetadata
355
- }), /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.ThreadFooter, {
356
- activity
357
- }, t("activity message")));
358
- } finally {
359
- _effect.f();
360
- }
361
- };
362
- var ChatContainer_default = ChatContainer;
363
- // Annotate the CommonJS export names for ESM import in node:
364
- 0 && (module.exports = {
365
- ChatContainer,
366
- ChatContainer_default,
367
- ChatHeading,
368
- MessageContainer,
369
- command
370
- });
371
- //# sourceMappingURL=chunk-E3WBZTTI.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/ChatContainer.tsx", "../../../src/components/MessageContainer.tsx", "../../../src/components/command-extension.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { Obj, Ref } from '@dxos/echo';\nimport { fullyQualifiedId, type Space, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport {\n MessageTextbox,\n type MessageTextboxProps,\n Thread,\n ThreadFooter,\n threadLayout,\n type ThreadProps,\n} from '@dxos/react-ui-thread';\nimport { DataType } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadType } from '../types';\nimport { getMessageMetadata } from '../util';\n\nexport const ChatHeading = ({ attendableId }: { attendableId?: string }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n return (\n <div role='none' className='flex items-center'>\n <StackItem.SigilButton attendableId={attendableId}>\n <Icon icon='ph--chat--regular' size={5} />\n </StackItem.SigilButton>\n <StackItem.HeadingLabel attendableId={attendableId}>{t('chat heading')}</StackItem.HeadingLabel>\n </div>\n );\n};\n\nexport type ChatContainerProps = {\n space: Space;\n thread: ThreadType;\n context?: Obj.Any;\n autoFocusTextbox?: boolean;\n} & Pick<ThreadProps, 'current'>;\n\nexport const ChatContainer = ({ space, thread, context, current, autoFocusTextbox }: ChatContainerProps) => {\n const id = fullyQualifiedId(thread);\n const identity = useIdentity()!;\n const members = useMembers(space?.key);\n const activity = useStatus(space, id);\n const { t } = useTranslation(THREAD_PLUGIN);\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 [autoFocus, setAutoFocus] = useState(autoFocusTextbox);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(id, identity);\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 [themeMode, _count],\n );\n\n // TODO(thure): Factor out.\n // TODO(thure): `flex-col-reverse` does not work to start the container scrolled to the end while also using\n // `ScrollArea`. This is the least-bad way I found to scroll to the end on mount. Note that 0ms was insufficient\n // for the desired effect; this is likely hardware-dependent and should be reevaluated.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n useLayoutEffect(() => {\n scrollToEnd('instant');\n }, []);\n\n // TODO(burdon): Change to model.\n const handleCreate: MessageTextboxProps['onSend'] = () => {\n if (!messageRef.current?.length) {\n return false;\n }\n\n thread.messages.push(\n Ref.make(\n Obj.make(DataType.Message, {\n sender: { identityDid: identity.did },\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text: messageRef.current }],\n properties: context ? { context: Ref.make(context) } : undefined,\n }),\n ),\n );\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n return (\n <Thread\n current={current}\n id={id}\n classNames='bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0'\n >\n <ScrollArea.Root classNames='col-span-2'>\n <ScrollArea.Viewport classNames='overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]'>\n <div role='none' className={mx(threadLayout, 'place-self-end')}>\n {thread.messages\n .map((message) => message.target)\n .filter(isNonNullable)\n .map((message) => (\n <MessageContainer key={message.id} message={message} members={members} />\n ))}\n </div>\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 <ScrollArea.Scrollbar>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n </Thread>\n );\n};\n\nexport default ChatContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport { Check, PencilSimple, X } from '@phosphor-icons/react';\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { type Obj, type Type } from '@dxos/echo';\nimport { RefArray } from '@dxos/live-object';\nimport { PublicKey } from '@dxos/react-client';\nimport { type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\nimport { type DataType } from '@dxos/schema';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\n// TODO(thure): #8149\nconst messageControlClassNames = ['!p-1 !min-bs-0 transition-opacity', hoverableControlItem];\n\nexport type MessageContainerProps = {\n message: DataType.Message;\n members: SpaceMember[];\n editable?: boolean;\n onDelete?: (id: string) => void;\n};\n\nexport const MessageContainer = ({ message, members, editable = false, onDelete }: MessageContainerProps) => {\n const senderIdentity = members.find(\n (member) =>\n (message.sender.identityDid && member.identity.did === message.sender.identityDid) ||\n (message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey)),\n )?.identity;\n const messageMetadata = getMessageMetadata(message.id, senderIdentity);\n const userIsAuthor = useIdentity()?.did === messageMetadata.authorId;\n const [editing, setEditing] = useState(false);\n const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);\n const { t } = useTranslation(THREAD_PLUGIN);\n const editLabel = t(editing ? 'save message label' : 'edit message label');\n const deleteLabel = t('delete message label');\n const textBlock = message.blocks.find((block) => block.type === 'text');\n const references = message.blocks.filter((block) => block.type === 'reference').map((block) => block.reference);\n\n useOnEditAnalytics(message, textBlock, !!editing);\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && editable && (\n <Tooltip.Trigger asChild content={editLabel}>\n <Button\n variant='ghost'\n data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}\n classNames={messageControlClassNames}\n onClick={() => setEditing((editing) => !editing)}\n >\n <span className='sr-only'>{editLabel}</span>\n {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}\n </Button>\n </Tooltip.Trigger>\n )}\n {onDelete && (\n <Tooltip.Trigger asChild content={deleteLabel}>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={() => handleDelete()}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n )}\n </ButtonGroup>\n </MessageHeading>\n {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}\n {RefArray.targets(references).map((reference, index) => (\n <MessagePart key={index} part={reference} />\n ))}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Type.Expando }) => {\n return <MessageBlockObjectTile subject={part} />;\n};\n\nconst TextboxBlock = ({\n block,\n isAuthor,\n editing,\n}: {\n block: DataType.MessageBlock.Text;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(block.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n block.text = inMemoryContentRef.current;\n }, [block]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: block.text,\n extensions: [\n createBasicExtensions({ readOnly: !isAuthor || !editing }),\n createThemeExtensions({ themeMode }),\n command,\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n handleDocumentChange(update.state.doc.toString());\n }\n }),\n ],\n }),\n [block.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Any }>(({ subject }, forwardedRef) => {\n // TODO(burdon): Use annotation to get title.\n let title = (subject as any).name ?? (subject as any).title ?? (subject as any).type ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n ref={forwardedRef}\n >\n <Surface role='card' limit={1} data={{ subject }} fallback={title} />\n </div>\n );\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n { tag: tags.tagName, class: mx('dx-tag dx-tag--indigo text-baseText font-medium') },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n"],
5
- "mappings": "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",
6
- "names": ["import_echo", "import_react", "import_halo", "import_react_ui", "import_react_ui_editor", "import_react_ui_theme", "import_react_ui_thread", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "command", "syntaxHighlighting", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "message", "members", "editable", "onDelete", "senderIdentity", "find", "member", "sender", "identityDid", "identity", "did", "identityKey", "PublicKey", "equals", "messageMetadata", "getMessageMetadata", "id", "userIsAuthor", "useIdentity", "authorId", "editing", "setEditing", "useState", "handleDelete", "useCallback", "t", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "textBlock", "blocks", "block", "type", "references", "filter", "map", "reference", "useOnEditAnalytics", "React", "MessageRoot", "classNames", "hoverableControls", "hoverableFocusedWithinControls", "MessageHeading", "authorName", "timestamp", "ButtonGroup", "Tooltip", "Trigger", "asChild", "content", "Button", "variant", "data-testid", "onClick", "span", "className", "Check", "getSize", "PencilSimple", "X", "TextboxBlock", "isAuthor", "RefArray", "targets", "index", "MessagePart", "key", "part", "MessageBlockObjectTile", "subject", "themeMode", "useThemeContext", "inMemoryContentRef", "useRef", "text", "handleDocumentChange", "newState", "current", "saveDocumentChange", "useOnTransition", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "readOnly", "createThemeExtensions", "EditorView", "updateListener", "of", "update", "docChanged", "doc", "toString", "useEffect", "focus", "div", "role", "ref", "forwardRef", "forwardedRef", "title", "name", "Surface", "limit", "data", "fallback", "ChatHeading", "attendableId", "StackItem", "SigilButton", "Icon", "icon", "size", "HeadingLabel", "ChatContainer", "space", "thread", "context", "autoFocusTextbox", "fullyQualifiedId", "useMembers", "activity", "useStatus", "_count", "_setCount", "rerenderEditor", "autoFocus", "setAutoFocus", "threadScrollRef", "textboxMetadata", "messageRef", "useMemo", "placeholder", "listener", "onChange", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "useLayoutEffect", "handleCreate", "length", "messages", "push", "Ref", "make", "Obj", "DataType", "Message", "created", "Date", "toISOString", "properties", "undefined", "Thread", "ScrollArea", "Root", "Viewport", "threadLayout", "target", "isNonNullable", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
7
- }
@@ -1,59 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_ERG7G6FF_exports = {};
30
- __export(chunk_ERG7G6FF_exports, {
31
- AppGraphBuilder: () => AppGraphBuilder,
32
- CallManager: () => CallManager,
33
- IntentResolver: () => IntentResolver,
34
- Markdown: () => Markdown,
35
- ReactRoot: () => ReactRoot,
36
- ReactSurface: () => ReactSurface,
37
- ThreadState: () => ThreadState
38
- });
39
- module.exports = __toCommonJS(chunk_ERG7G6FF_exports);
40
- var import_app_framework = require("@dxos/app-framework");
41
- var AppGraphBuilder = (0, import_app_framework.lazy)(() => import("./app-graph-builder-PBHJNDQY.cjs"));
42
- var CallManager = (0, import_app_framework.lazy)(() => import("./call-manager-HV2XJW5O.cjs"));
43
- var IntentResolver = (0, import_app_framework.lazy)(() => import("./intent-resolver-SYSJ5SJG.cjs"));
44
- var Markdown = (0, import_app_framework.lazy)(() => import("./markdown-GQIPJS2F.cjs"));
45
- var ReactRoot = (0, import_app_framework.lazy)(() => import("./react-root-6HHDMULJ.cjs"));
46
- var ReactSurface = (0, import_app_framework.lazy)(() => import("./react-surface-NBH42NN2.cjs"));
47
- var ThreadSettings = (0, import_app_framework.lazy)(() => import("./settings-4LQSFEDK.cjs"));
48
- var ThreadState = (0, import_app_framework.lazy)(() => import("./state-IY5XX3H2.cjs"));
49
- // Annotate the CommonJS export names for ESM import in node:
50
- 0 && (module.exports = {
51
- AppGraphBuilder,
52
- CallManager,
53
- IntentResolver,
54
- Markdown,
55
- ReactRoot,
56
- ReactSurface,
57
- ThreadState
58
- });
59
- //# sourceMappingURL=chunk-ERG7G6FF.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const CallManager = lazy(() => import('./call-manager'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactRoot = lazy(() => import('./react-root'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\n\nexport * from './capabilities';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAAqB;AAEd,IAAMA,sBAAkBC,2BAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,kBAAcD,2BAAK,MAAM,OAAO,6BAAA,CAAA;AACtC,IAAME,qBAAiBF,2BAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMG,eAAWH,2BAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAMI,gBAAYJ,2BAAK,MAAM,OAAO,2BAAA,CAAA;AACpC,IAAMK,mBAAeL,2BAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMM,qBAAiBN,2BAAK,MAAM,OAAO,yBAAA,CAAA;AACzC,IAAMO,kBAAcP,2BAAK,MAAM,OAAO,sBAAA,CAAA;",
6
- "names": ["AppGraphBuilder", "lazy", "CallManager", "IntentResolver", "Markdown", "ReactRoot", "ReactSurface", "ThreadSettings", "ThreadState"]
7
- }
@@ -1,108 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_FUXJAVFZ_exports = {};
20
- __export(chunk_FUXJAVFZ_exports, {
21
- useDebugMode: () => useDebugMode,
22
- useOnEditAnalytics: () => useOnEditAnalytics,
23
- useStatus: () => useStatus
24
- });
25
- module.exports = __toCommonJS(chunk_FUXJAVFZ_exports);
26
- var import_react = require("react");
27
- var import_app_framework = require("@dxos/app-framework");
28
- var import_types = require("@dxos/plugin-observability/types");
29
- var import_echo = require("@dxos/react-client/echo");
30
- var import_react_ui = require("@dxos/react-ui");
31
- var import_react2 = require("react");
32
- var import_react3 = require("react");
33
- var useOnEditAnalytics = (message, textBlock, editing) => {
34
- const { dispatchPromise: dispatch } = (0, import_app_framework.useIntentDispatcher)();
35
- const onEdit = (0, import_react.useCallback)(() => {
36
- const space = (0, import_echo.getSpace)(message);
37
- if (!space || !textBlock) {
38
- return;
39
- }
40
- void dispatch((0, import_app_framework.createIntent)(import_types.ObservabilityAction.SendEvent, {
41
- name: "threads.message.update",
42
- properties: {
43
- spaceId: space.id,
44
- messageId: message.id,
45
- messageLength: textBlock?.text.length
46
- }
47
- }));
48
- }, [
49
- dispatch,
50
- message,
51
- textBlock
52
- ]);
53
- (0, import_react_ui.useOnTransition)(editing, true, false, onEdit);
54
- };
55
- var useDebugMode = () => {
56
- const [enabled, setEnabled] = (0, import_react2.useState)(false);
57
- (0, import_react2.useEffect)(() => {
58
- const handler = (ev) => {
59
- if (ev.key.toLowerCase() === "d" && ev.ctrlKey) {
60
- ev.preventDefault();
61
- setEnabled(!enabled);
62
- }
63
- };
64
- document.addEventListener("keypress", handler);
65
- return () => {
66
- document.removeEventListener("keypress", handler);
67
- };
68
- }, [
69
- enabled
70
- ]);
71
- return enabled;
72
- };
73
- var useStatus = (space, channel) => {
74
- const [processing, setProcessing] = (0, import_react3.useState)(false);
75
- (0, import_react3.useEffect)(() => {
76
- if (!space || !channel) {
77
- return;
78
- }
79
- const unsubscribe = space.listen(`status/${channel}`, (status) => {
80
- const { event } = status.payload ?? {};
81
- setProcessing(event === "processing");
82
- });
83
- const t = setInterval(() => {
84
- setProcessing((prev) => {
85
- if (typeof prev?.ts === "number" && Date.now() - prev.ts > 3e4) {
86
- return void 0;
87
- } else {
88
- return prev;
89
- }
90
- });
91
- }, 1e3);
92
- return () => {
93
- unsubscribe();
94
- clearInterval(t);
95
- };
96
- }, [
97
- space,
98
- channel
99
- ]);
100
- return processing;
101
- };
102
- // Annotate the CommonJS export names for ESM import in node:
103
- 0 && (module.exports = {
104
- useDebugMode,
105
- useOnEditAnalytics,
106
- useStatus
107
- });
108
- //# sourceMappingURL=chunk-FUXJAVFZ.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/hooks/analytics.ts", "../../../src/hooks/useDebugMode.ts", "../../../src/hooks/useStatus.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type Live } from '@dxos/live-object';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { type DataType } from '@dxos/schema';\n\nexport const useOnEditAnalytics = (\n message: Live<any>,\n textBlock: DataType.MessageBlock.Text | undefined,\n editing: boolean,\n) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const onEdit = useCallback(() => {\n const space = getSpace(message);\n if (!space || !textBlock) {\n return;\n }\n\n void dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.update',\n properties: {\n spaceId: space.id,\n messageId: message.id,\n messageLength: textBlock?.text.length,\n },\n }),\n );\n }, [dispatch, message, textBlock]);\n\n useOnTransition(editing, true, false, onEdit);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useState, useEffect } from 'react';\n\n// TODO(burdon): Standardize across plugins/composer.\nexport const useDebugMode = () => {\n const [enabled, setEnabled] = useState(false);\n useEffect(() => {\n const handler = (ev: KeyboardEvent) => {\n if (ev.key.toLowerCase() === 'd' && ev.ctrlKey) {\n ev.preventDefault();\n setEnabled(!enabled);\n }\n };\n\n document.addEventListener('keypress', handler);\n return () => {\n document.removeEventListener('keypress', handler);\n };\n }, [enabled]);\n\n return enabled;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAA4B;AAE5B,2BAAkD;AAElD,mBAAoC;AACpC,kBAAyB;AACzB,sBAAgC;ACNhC,IAAAA,gBAAoC;ACApC,IAAAA,gBAAoC;AFS7B,IAAMC,qBAAqB,CAChCC,SACAC,WACAC,YAAAA;AAEA,QAAM,EAAEC,iBAAiBC,SAAQ,QAAKC,0CAAAA;AAEtC,QAAMC,aAASC,0BAAY,MAAA;AACzB,UAAMC,YAAQC,sBAAST,OAAAA;AACvB,QAAI,CAACQ,SAAS,CAACP,WAAW;AACxB;IACF;AAEA,SAAKG,aACHM,mCAAaC,iCAAoBC,WAAW;MAC1CC,MAAM;MACNC,YAAY;QACVC,SAASP,MAAMQ;QACfC,WAAWjB,QAAQgB;QACnBE,eAAejB,WAAWkB,KAAKC;MACjC;IACF,CAAA,CAAA;EAEJ,GAAG;IAAChB;IAAUJ;IAASC;GAAU;AAEjCoB,uCAAgBnB,SAAS,MAAM,OAAOI,MAAAA;AACxC;AChCO,IAAMgB,eAAe,MAAA;AAC1B,QAAM,CAACC,SAASC,UAAAA,QAAcC,wBAAS,KAAA;AACvCC,+BAAU,MAAA;AACR,UAAMC,UAAU,CAACC,OAAAA;AACf,UAAIA,GAAGC,IAAIC,YAAW,MAAO,OAAOF,GAAGG,SAAS;AAC9CH,WAAGI,eAAc;AACjBR,mBAAW,CAACD,OAAAA;MACd;IACF;AAEAU,aAASC,iBAAiB,YAAYP,OAAAA;AACtC,WAAO,MAAA;AACLM,eAASE,oBAAoB,YAAYR,OAAAA;IAC3C;EACF,GAAG;IAACJ;GAAQ;AAEZ,SAAOA;AACT;ACfO,IAAMa,YAAY,CAAC5B,OAAe6B,YAAAA;AACvC,QAAM,CAACC,YAAYC,aAAAA,QAAiBd,cAAAA,UAAS,KAAA;AAC7CC,oBAAAA,WAAU,MAAA;AACR,QAAI,CAAClB,SAAS,CAAC6B,SAAS;AACtB;IACF;AAEA,UAAMG,cAAchC,MAAMiC,OAAO,UAAUJ,OAAAA,IAAW,CAACK,WAAAA;AACrD,YAAM,EAAEC,MAAK,IAAKD,OAAOE,WAAW,CAAC;AACrCL,oBAAcI,UAAU,YAAA;IAC1B,CAAA;AAEA,UAAME,IAAIC,YAAY,MAAA;AACpBP,oBAAc,CAACQ,SAAAA;AACb,YAAI,OAAOA,MAAMC,OAAO,YAAYC,KAAKC,IAAG,IAAKH,KAAKC,KAAK,KAAQ;AACjE,iBAAOG;QACT,OAAO;AACL,iBAAOJ;QACT;MACF,CAAA;IACF,GAAG,GAAA;AAEH,WAAO,MAAA;AACLP,kBAAAA;AACAY,oBAAcP,CAAAA;IAChB;EACF,GAAG;IAACrC;IAAO6B;GAAQ;AAEnB,SAAOC;AACT;",
6
- "names": ["import_react", "useOnEditAnalytics", "message", "textBlock", "editing", "dispatchPromise", "dispatch", "useIntentDispatcher", "onEdit", "useCallback", "space", "getSpace", "createIntent", "ObservabilityAction", "SendEvent", "name", "properties", "spaceId", "id", "messageId", "messageLength", "text", "length", "useOnTransition", "useDebugMode", "enabled", "setEnabled", "useState", "useEffect", "handler", "ev", "key", "toLowerCase", "ctrlKey", "preventDefault", "document", "addEventListener", "removeEventListener", "useStatus", "channel", "processing", "setProcessing", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval"]
7
- }