@dxos/plugin-thread 0.8.4-main.72ec0f3 → 0.8.4-main.765dc60934

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 (568) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/ChannelArticle-ACZD7YFT.mjs +28 -0
  4. package/dist/lib/neutral/ChannelArticle-ACZD7YFT.mjs.map +7 -0
  5. package/dist/lib/neutral/ChannelChat-6YTD5HWL.mjs +10 -0
  6. package/dist/lib/neutral/ThreadCompanion-NQWPS2H6.mjs +208 -0
  7. package/dist/lib/neutral/ThreadCompanion-NQWPS2H6.mjs.map +7 -0
  8. package/dist/lib/neutral/ThreadContainer-XYEPEOSD.mjs +61 -0
  9. package/dist/lib/neutral/ThreadContainer-XYEPEOSD.mjs.map +7 -0
  10. package/dist/lib/neutral/ThreadPlugin.mjs +80 -0
  11. package/dist/lib/neutral/ThreadPlugin.mjs.map +7 -0
  12. package/dist/lib/neutral/ThreadPlugin.node.mjs +40 -0
  13. package/dist/lib/neutral/ThreadPlugin.node.mjs.map +7 -0
  14. package/dist/lib/neutral/ThreadSettings-5MKTDK3A.mjs +15 -0
  15. package/dist/lib/neutral/ThreadSettings-5MKTDK3A.mjs.map +7 -0
  16. package/dist/lib/neutral/add-message-FBIROBEZ.mjs +87 -0
  17. package/dist/lib/neutral/add-message-FBIROBEZ.mjs.map +7 -0
  18. package/dist/lib/neutral/app-graph-builder-7Q6MA6RT.mjs +120 -0
  19. package/dist/lib/neutral/app-graph-builder-7Q6MA6RT.mjs.map +7 -0
  20. package/dist/lib/neutral/append-channel-message-FTFAD3PK.mjs +40 -0
  21. package/dist/lib/neutral/append-channel-message-FTFAD3PK.mjs.map +7 -0
  22. package/dist/lib/neutral/blueprint-definition-S3EBOH4R.mjs +15 -0
  23. package/dist/lib/neutral/blueprint-definition-S3EBOH4R.mjs.map +7 -0
  24. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  25. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  26. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-5T5LPLBN.mjs +36 -0
  28. package/dist/lib/neutral/chunk-5T5LPLBN.mjs.map +7 -0
  29. package/dist/lib/{browser/chunk-K2DUJRFJ.mjs → neutral/chunk-7GHUS3IX.mjs} +4 -11
  30. package/dist/lib/neutral/chunk-7GHUS3IX.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-D5LGFCUY.mjs +55 -0
  32. package/dist/lib/neutral/chunk-D5LGFCUY.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  34. package/dist/lib/{browser/chunk-CP7E2HRE.mjs → neutral/chunk-JLY4NVTA.mjs} +12 -5
  35. package/dist/lib/neutral/chunk-JLY4NVTA.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-KRXHIW4P.mjs +164 -0
  37. package/dist/lib/neutral/chunk-KRXHIW4P.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-PE7IH7EL.mjs +271 -0
  39. package/dist/lib/neutral/chunk-PE7IH7EL.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-QFDT33VT.mjs +69 -0
  41. package/dist/lib/neutral/chunk-QFDT33VT.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-QK4QZUR5.mjs +8 -0
  43. package/dist/lib/neutral/chunk-QK4QZUR5.mjs.map +7 -0
  44. package/dist/lib/neutral/components/index.mjs +539 -0
  45. package/dist/lib/neutral/components/index.mjs.map +7 -0
  46. package/dist/lib/neutral/containers/index.mjs +15 -0
  47. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  48. package/dist/lib/neutral/create-OAQJ6LXN.mjs +52 -0
  49. package/dist/lib/neutral/create-OAQJ6LXN.mjs.map +7 -0
  50. package/dist/lib/neutral/create-channel-3E4FJ662.mjs +19 -0
  51. package/dist/lib/neutral/create-channel-3E4FJ662.mjs.map +7 -0
  52. package/dist/lib/neutral/create-object-HIEWSBZB.mjs +27 -0
  53. package/dist/lib/neutral/create-object-HIEWSBZB.mjs.map +7 -0
  54. package/dist/lib/neutral/create-proposals-GRYZXRMV.mjs +56 -0
  55. package/dist/lib/neutral/create-proposals-GRYZXRMV.mjs.map +7 -0
  56. package/dist/lib/neutral/delete-HCCG5RVR.mjs +57 -0
  57. package/dist/lib/neutral/delete-HCCG5RVR.mjs.map +7 -0
  58. package/dist/lib/neutral/delete-message-DHFRACB4.mjs +54 -0
  59. package/dist/lib/neutral/delete-message-DHFRACB4.mjs.map +7 -0
  60. package/dist/lib/neutral/hooks/index.mjs +10 -0
  61. package/dist/lib/neutral/index.mjs +28 -0
  62. package/dist/lib/neutral/markdown-BUORNCPG.mjs +83 -0
  63. package/dist/lib/neutral/markdown-BUORNCPG.mjs.map +7 -0
  64. package/dist/lib/neutral/meta.json +1 -0
  65. package/dist/lib/neutral/meta.mjs +10 -0
  66. package/dist/lib/neutral/on-create-space-OEBRKOAM.mjs +23 -0
  67. package/dist/lib/neutral/on-create-space-OEBRKOAM.mjs.map +7 -0
  68. package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs +13 -0
  69. package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs.map +7 -0
  70. package/dist/lib/neutral/operations/index.mjs +8 -0
  71. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  72. package/dist/lib/neutral/plugin.mjs +16 -0
  73. package/dist/lib/neutral/plugin.mjs.map +7 -0
  74. package/dist/lib/neutral/react-surface-XY23GVZH.mjs +76 -0
  75. package/dist/lib/neutral/react-surface-XY23GVZH.mjs.map +7 -0
  76. package/dist/lib/neutral/restore-P4ZLXLF7.mjs +32 -0
  77. package/dist/lib/neutral/restore-P4ZLXLF7.mjs.map +7 -0
  78. package/dist/lib/neutral/restore-message-AUBOP2DF.mjs +33 -0
  79. package/dist/lib/neutral/restore-message-AUBOP2DF.mjs.map +7 -0
  80. package/dist/lib/neutral/select-LIVAMBCE.mjs +24 -0
  81. package/dist/lib/neutral/select-LIVAMBCE.mjs.map +7 -0
  82. package/dist/lib/neutral/settings-HK4EB6TF.mjs +30 -0
  83. package/dist/lib/neutral/settings-HK4EB6TF.mjs.map +7 -0
  84. package/dist/lib/neutral/state-UU7VEAKV.mjs +22 -0
  85. package/dist/lib/neutral/state-UU7VEAKV.mjs.map +7 -0
  86. package/dist/lib/neutral/testing/index.mjs +58 -0
  87. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  88. package/dist/lib/neutral/toggle-resolved-RQBDQZSV.mjs +36 -0
  89. package/dist/lib/neutral/toggle-resolved-RQBDQZSV.mjs.map +7 -0
  90. package/dist/lib/neutral/translations.mjs +90 -0
  91. package/dist/lib/neutral/translations.mjs.map +7 -0
  92. package/dist/lib/neutral/types/index.mjs +12 -0
  93. package/dist/lib/neutral/types/index.mjs.map +7 -0
  94. package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs +54 -0
  95. package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs.map +7 -0
  96. package/dist/types/src/ThreadPlugin.d.ts +3 -1
  97. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  98. package/dist/types/src/ThreadPlugin.node.d.ts +4 -0
  99. package/dist/types/src/ThreadPlugin.node.d.ts.map +1 -0
  100. package/dist/types/src/ThreadPlugin.test.d.ts +2 -0
  101. package/dist/types/src/ThreadPlugin.test.d.ts.map +1 -0
  102. package/dist/types/src/blueprints/index.d.ts +2 -0
  103. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  104. package/dist/types/src/blueprints/thread-blueprint.d.ts +4 -0
  105. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  106. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  107. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -4
  109. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  111. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/index.d.ts +15 -15
  113. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/markdown.d.ts +3 -2
  115. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  117. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  118. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  119. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/settings.d.ts +5 -2
  121. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  122. package/dist/types/src/capabilities/state.d.ts +5 -5
  123. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  125. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  126. package/dist/types/src/components/Chat/Chat.d.ts +51 -0
  127. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -0
  128. package/dist/types/src/components/Chat/index.d.ts +2 -0
  129. package/dist/types/src/components/Chat/index.d.ts.map +1 -0
  130. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts +13 -0
  131. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
  132. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts +160 -0
  133. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts.map +1 -0
  134. package/dist/types/src/components/{CommentsThreadContainer.d.ts → CommentsPanel/CommentsThread.d.ts} +3 -3
  135. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts.map +1 -0
  136. package/dist/types/src/components/CommentsPanel/index.d.ts +3 -0
  137. package/dist/types/src/components/CommentsPanel/index.d.ts.map +1 -0
  138. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts +15 -0
  139. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
  140. package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
  141. package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
  142. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts +6 -0
  143. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts.map +1 -0
  144. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts +161 -0
  145. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts.map +1 -0
  146. package/dist/types/src/components/ThreadSettings/index.d.ts +2 -0
  147. package/dist/types/src/components/ThreadSettings/index.d.ts.map +1 -0
  148. package/dist/types/src/components/index.d.ts +5 -10
  149. package/dist/types/src/components/index.d.ts.map +1 -1
  150. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts +13 -0
  151. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts.map +1 -0
  152. package/dist/types/src/containers/ChannelArticle/ChannelArticle.stories.d.ts +162 -0
  153. package/dist/types/src/containers/ChannelArticle/ChannelArticle.stories.d.ts.map +1 -0
  154. package/dist/types/src/containers/ChannelArticle/index.d.ts +2 -0
  155. package/dist/types/src/containers/ChannelArticle/index.d.ts.map +1 -0
  156. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts +20 -0
  157. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts.map +1 -0
  158. package/dist/types/src/containers/ChannelChat/index.d.ts +4 -0
  159. package/dist/types/src/containers/ChannelChat/index.d.ts.map +1 -0
  160. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +8 -0
  161. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +1 -0
  162. package/dist/types/src/containers/ThreadCompanion/index.d.ts +2 -0
  163. package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +1 -0
  164. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts +20 -0
  165. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts.map +1 -0
  166. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts +162 -0
  167. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts.map +1 -0
  168. package/dist/types/src/containers/ThreadContainer/index.d.ts +4 -0
  169. package/dist/types/src/containers/ThreadContainer/index.d.ts.map +1 -0
  170. package/dist/types/src/containers/index.d.ts +6 -0
  171. package/dist/types/src/containers/index.d.ts.map +1 -0
  172. package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
  173. package/dist/types/src/extensions/command.d.ts.map +1 -0
  174. package/dist/types/src/extensions/index.d.ts +1 -0
  175. package/dist/types/src/extensions/index.d.ts.map +1 -1
  176. package/dist/types/src/extensions/threads.d.ts +9 -4
  177. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  178. package/dist/types/src/hooks/analytics.d.ts +1 -2
  179. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  180. package/dist/types/src/hooks/index.d.ts +0 -4
  181. package/dist/types/src/hooks/index.d.ts.map +1 -1
  182. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  183. package/dist/types/src/index.d.ts +2 -3
  184. package/dist/types/src/index.d.ts.map +1 -1
  185. package/dist/types/src/meta.d.ts +2 -2
  186. package/dist/types/src/meta.d.ts.map +1 -1
  187. package/dist/types/src/operations/add-message.d.ts +5 -0
  188. package/dist/types/src/operations/add-message.d.ts.map +1 -0
  189. package/dist/types/src/operations/append-channel-message.d.ts +5 -0
  190. package/dist/types/src/operations/append-channel-message.d.ts.map +1 -0
  191. package/dist/types/src/operations/create-channel.d.ts +5 -0
  192. package/dist/types/src/operations/create-channel.d.ts.map +1 -0
  193. package/dist/types/src/operations/create-proposals.d.ts +5 -0
  194. package/dist/types/src/operations/create-proposals.d.ts.map +1 -0
  195. package/dist/types/src/operations/create.d.ts +5 -0
  196. package/dist/types/src/operations/create.d.ts.map +1 -0
  197. package/dist/types/src/operations/delete-message.d.ts +5 -0
  198. package/dist/types/src/operations/delete-message.d.ts.map +1 -0
  199. package/dist/types/src/operations/delete.d.ts +5 -0
  200. package/dist/types/src/operations/delete.d.ts.map +1 -0
  201. package/dist/types/src/operations/index.d.ts +3 -0
  202. package/dist/types/src/operations/index.d.ts.map +1 -0
  203. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  204. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  205. package/dist/types/src/operations/restore-message.d.ts +5 -0
  206. package/dist/types/src/operations/restore-message.d.ts.map +1 -0
  207. package/dist/types/src/operations/restore.d.ts +5 -0
  208. package/dist/types/src/operations/restore.d.ts.map +1 -0
  209. package/dist/types/src/operations/select.d.ts +5 -0
  210. package/dist/types/src/operations/select.d.ts.map +1 -0
  211. package/dist/types/src/operations/toggle-resolved.d.ts +5 -0
  212. package/dist/types/src/operations/toggle-resolved.d.ts.map +1 -0
  213. package/dist/types/src/plugin.d.ts +4 -0
  214. package/dist/types/src/plugin.d.ts.map +1 -0
  215. package/dist/types/src/{components/testing.d.ts → testing/data.d.ts} +2 -2
  216. package/dist/types/src/testing/data.d.ts.map +1 -0
  217. package/dist/types/src/testing/index.d.ts +1 -1
  218. package/dist/types/src/testing/index.d.ts.map +1 -1
  219. package/dist/types/src/translations.d.ts +140 -138
  220. package/dist/types/src/translations.d.ts.map +1 -1
  221. package/dist/types/src/types/Settings.d.ts +5 -0
  222. package/dist/types/src/types/Settings.d.ts.map +1 -0
  223. package/dist/types/src/types/ThreadCapabilities.d.ts +13 -0
  224. package/dist/types/src/types/ThreadCapabilities.d.ts.map +1 -0
  225. package/dist/types/src/types/ThreadOperation.d.ts +1995 -0
  226. package/dist/types/src/types/ThreadOperation.d.ts.map +1 -0
  227. package/dist/types/src/types/index.d.ts +3 -2
  228. package/dist/types/src/types/index.d.ts.map +1 -1
  229. package/dist/types/src/types/types.d.ts +1 -368
  230. package/dist/types/src/types/types.d.ts.map +1 -1
  231. package/dist/types/src/util.d.ts +6 -3
  232. package/dist/types/src/util.d.ts.map +1 -1
  233. package/dist/types/tsconfig.tsbuildinfo +1 -1
  234. package/package.json +149 -90
  235. package/src/ThreadPlugin.node.ts +39 -0
  236. package/src/ThreadPlugin.test.ts +37 -0
  237. package/src/ThreadPlugin.tsx +42 -133
  238. package/src/blueprints/index.ts +5 -0
  239. package/src/blueprints/thread-blueprint.ts +36 -0
  240. package/src/capabilities/app-graph-builder.ts +123 -174
  241. package/src/capabilities/blueprint-definition.ts +11 -30
  242. package/src/capabilities/create-object.ts +29 -0
  243. package/src/capabilities/index.ts +15 -12
  244. package/src/capabilities/markdown.ts +53 -38
  245. package/src/capabilities/operation-handler.ts +16 -0
  246. package/src/capabilities/react-surface.tsx +64 -79
  247. package/src/capabilities/settings.ts +26 -12
  248. package/src/capabilities/state.ts +14 -18
  249. package/src/capabilities/undo-mappings.ts +46 -0
  250. package/src/components/Chat/Chat.tsx +258 -0
  251. package/src/components/Chat/index.ts +5 -0
  252. package/src/components/CommentsPanel/CommentsPanel.stories.tsx +95 -0
  253. package/src/components/{CommentsContainer.tsx → CommentsPanel/CommentsPanel.tsx} +16 -16
  254. package/src/components/{CommentsThreadContainer.tsx → CommentsPanel/CommentsThread.tsx} +30 -33
  255. package/src/components/CommentsPanel/index.ts +6 -0
  256. package/src/components/{MessageContainer.tsx → MessagePanel/MessagePanel.tsx} +81 -45
  257. package/src/components/MessagePanel/index.ts +5 -0
  258. package/src/components/ThreadSettings/ThreadSettings.stories.tsx +32 -0
  259. package/src/components/ThreadSettings/ThreadSettings.tsx +19 -0
  260. package/src/components/ThreadSettings/index.ts +5 -0
  261. package/src/components/index.ts +5 -12
  262. package/src/containers/ChannelArticle/ChannelArticle.stories.tsx +105 -0
  263. package/src/containers/ChannelArticle/ChannelArticle.tsx +42 -0
  264. package/src/containers/ChannelArticle/index.ts +5 -0
  265. package/src/containers/ChannelChat/ChannelChat.tsx +75 -0
  266. package/src/containers/ChannelChat/index.ts +8 -0
  267. package/src/containers/ThreadCompanion/ThreadCompanion.tsx +215 -0
  268. package/src/containers/ThreadCompanion/index.ts +5 -0
  269. package/src/{components/Chat.stories.tsx → containers/ThreadContainer/ThreadContainer.stories.tsx} +27 -26
  270. package/src/containers/ThreadContainer/ThreadContainer.tsx +75 -0
  271. package/src/containers/ThreadContainer/index.ts +8 -0
  272. package/src/containers/index.ts +10 -0
  273. package/src/{components/command-extension.ts → extensions/command.ts} +3 -3
  274. package/src/extensions/index.ts +1 -0
  275. package/src/extensions/threads.ts +80 -44
  276. package/src/hooks/analytics.ts +24 -20
  277. package/src/hooks/index.ts +0 -5
  278. package/src/index.ts +4 -4
  279. package/src/meta.ts +5 -6
  280. package/src/operations/add-message.ts +81 -0
  281. package/src/operations/append-channel-message.ts +37 -0
  282. package/src/operations/create-channel.ts +20 -0
  283. package/src/operations/create-proposals.ts +49 -0
  284. package/src/operations/create.ts +48 -0
  285. package/src/operations/delete-message.ts +53 -0
  286. package/src/operations/delete.ts +63 -0
  287. package/src/operations/index.ts +20 -0
  288. package/src/operations/on-create-space.ts +27 -0
  289. package/src/operations/restore-message.ts +38 -0
  290. package/src/operations/restore.ts +38 -0
  291. package/src/operations/select.ts +24 -0
  292. package/src/operations/toggle-resolved.ts +41 -0
  293. package/src/plugin.ts +11 -0
  294. package/src/{components/testing.ts → testing/data.ts} +8 -10
  295. package/src/testing/index.ts +1 -1
  296. package/src/translations.ts +74 -76
  297. package/src/types/Settings.ts +10 -0
  298. package/src/types/ThreadCapabilities.ts +26 -0
  299. package/src/types/ThreadOperation.ts +178 -0
  300. package/src/types/index.ts +4 -2
  301. package/src/types/types.ts +2 -99
  302. package/src/util.ts +37 -5
  303. package/dist/lib/browser/ChannelContainer-MX5ABVGC.mjs +0 -16
  304. package/dist/lib/browser/ChatContainer-7F5Y6GXJ.mjs +0 -15
  305. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs +0 -170
  306. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs.map +0 -7
  307. package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs +0 -104
  308. package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs.map +0 -7
  309. package/dist/lib/browser/call-manager-MAXQLMMS.mjs +0 -24
  310. package/dist/lib/browser/call-manager-MAXQLMMS.mjs.map +0 -7
  311. package/dist/lib/browser/chunk-BBTXGRIR.mjs +0 -18
  312. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +0 -7
  313. package/dist/lib/browser/chunk-BQWQFTWT.mjs +0 -612
  314. package/dist/lib/browser/chunk-BQWQFTWT.mjs.map +0 -7
  315. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-FR6MEAZI.mjs +0 -377
  317. package/dist/lib/browser/chunk-FR6MEAZI.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-INQVAYPN.mjs +0 -989
  319. package/dist/lib/browser/chunk-INQVAYPN.mjs.map +0 -7
  320. package/dist/lib/browser/chunk-ISCHODBV.mjs +0 -106
  321. package/dist/lib/browser/chunk-ISCHODBV.mjs.map +0 -7
  322. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +0 -7
  323. package/dist/lib/browser/chunk-KOBXMDCI.mjs +0 -182
  324. package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +0 -7
  325. package/dist/lib/browser/chunk-NMJEVD36.mjs +0 -168
  326. package/dist/lib/browser/chunk-NMJEVD36.mjs.map +0 -7
  327. package/dist/lib/browser/chunk-OOUDK7Q7.mjs +0 -23
  328. package/dist/lib/browser/chunk-OOUDK7Q7.mjs.map +0 -7
  329. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs +0 -1793
  330. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +0 -7
  331. package/dist/lib/browser/index.mjs +0 -312
  332. package/dist/lib/browser/index.mjs.map +0 -7
  333. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs +0 -361
  334. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs.map +0 -7
  335. package/dist/lib/browser/markdown-74EUSQGV.mjs +0 -171
  336. package/dist/lib/browser/markdown-74EUSQGV.mjs.map +0 -7
  337. package/dist/lib/browser/meta.json +0 -1
  338. package/dist/lib/browser/react-root-BVG7B2LW.mjs +0 -28
  339. package/dist/lib/browser/react-root-BVG7B2LW.mjs.map +0 -7
  340. package/dist/lib/browser/react-surface-BCD5ODQ6.mjs +0 -110
  341. package/dist/lib/browser/react-surface-BCD5ODQ6.mjs.map +0 -7
  342. package/dist/lib/browser/settings-LGQUZITB.mjs +0 -22
  343. package/dist/lib/browser/settings-LGQUZITB.mjs.map +0 -7
  344. package/dist/lib/browser/state-36REWXO5.mjs +0 -34
  345. package/dist/lib/browser/state-36REWXO5.mjs.map +0 -7
  346. package/dist/lib/browser/types/index.mjs +0 -14
  347. package/dist/lib/node-esm/ChannelContainer-2JJJ3IDK.mjs +0 -17
  348. package/dist/lib/node-esm/ChatContainer-C526R4DI.mjs +0 -16
  349. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs +0 -171
  350. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs.map +0 -7
  351. package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs +0 -105
  352. package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs.map +0 -7
  353. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs +0 -25
  354. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs.map +0 -7
  355. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs +0 -25
  356. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs.map +0 -7
  357. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs +0 -1794
  358. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +0 -7
  359. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs +0 -33
  360. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +0 -7
  361. package/dist/lib/node-esm/chunk-JF7THR7F.mjs +0 -990
  362. package/dist/lib/node-esm/chunk-JF7THR7F.mjs.map +0 -7
  363. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs +0 -613
  364. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs.map +0 -7
  365. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs +0 -183
  366. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +0 -7
  367. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs +0 -169
  368. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs.map +0 -7
  369. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs +0 -378
  370. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs.map +0 -7
  371. package/dist/lib/node-esm/chunk-VBI32FGI.mjs +0 -108
  372. package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +0 -7
  373. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +0 -28
  374. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +0 -7
  375. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +0 -19
  376. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +0 -7
  377. package/dist/lib/node-esm/index.mjs +0 -313
  378. package/dist/lib/node-esm/index.mjs.map +0 -7
  379. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs +0 -362
  380. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs.map +0 -7
  381. package/dist/lib/node-esm/markdown-566XXB55.mjs +0 -172
  382. package/dist/lib/node-esm/markdown-566XXB55.mjs.map +0 -7
  383. package/dist/lib/node-esm/meta.json +0 -1
  384. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs +0 -29
  385. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs.map +0 -7
  386. package/dist/lib/node-esm/react-surface-WZH7OAO3.mjs +0 -111
  387. package/dist/lib/node-esm/react-surface-WZH7OAO3.mjs.map +0 -7
  388. package/dist/lib/node-esm/settings-WKLJSP6R.mjs +0 -23
  389. package/dist/lib/node-esm/settings-WKLJSP6R.mjs.map +0 -7
  390. package/dist/lib/node-esm/state-X3W67GTL.mjs +0 -35
  391. package/dist/lib/node-esm/state-X3W67GTL.mjs.map +0 -7
  392. package/dist/lib/node-esm/types/index.mjs +0 -15
  393. package/dist/types/src/calls/call-manager.d.ts +0 -77
  394. package/dist/types/src/calls/call-manager.d.ts.map +0 -1
  395. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +0 -66
  396. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +0 -1
  397. package/dist/types/src/calls/index.d.ts +0 -7
  398. package/dist/types/src/calls/index.d.ts.map +0 -1
  399. package/dist/types/src/calls/media-manager.d.ts +0 -60
  400. package/dist/types/src/calls/media-manager.d.ts.map +0 -1
  401. package/dist/types/src/calls/speaking-monitor.d.ts +0 -24
  402. package/dist/types/src/calls/speaking-monitor.d.ts.map +0 -1
  403. package/dist/types/src/calls/types.d.ts +0 -45
  404. package/dist/types/src/calls/types.d.ts.map +0 -1
  405. package/dist/types/src/calls/util/audio.d.ts +0 -6
  406. package/dist/types/src/calls/util/audio.d.ts.map +0 -1
  407. package/dist/types/src/calls/util/calls-service.d.ts +0 -77
  408. package/dist/types/src/calls/util/calls-service.d.ts.map +0 -1
  409. package/dist/types/src/calls/util/history-cache.d.ts +0 -11
  410. package/dist/types/src/calls/util/history-cache.d.ts.map +0 -1
  411. package/dist/types/src/calls/util/index.d.ts +0 -5
  412. package/dist/types/src/calls/util/index.d.ts.map +0 -1
  413. package/dist/types/src/calls/util/media.d.ts +0 -6
  414. package/dist/types/src/calls/util/media.d.ts.map +0 -1
  415. package/dist/types/src/calls/util/stub-media-streams.d.ts +0 -18
  416. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +0 -1
  417. package/dist/types/src/calls/util/task-scheduling.d.ts +0 -17
  418. package/dist/types/src/calls/util/task-scheduling.d.ts.map +0 -1
  419. package/dist/types/src/calls-service.stories.d.ts +0 -23
  420. package/dist/types/src/calls-service.stories.d.ts.map +0 -1
  421. package/dist/types/src/capabilities/call-manager.d.ts +0 -5
  422. package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
  423. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  424. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  425. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  426. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  427. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  428. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  429. package/dist/types/src/components/Call/Call.d.ts +0 -17
  430. package/dist/types/src/components/Call/Call.d.ts.map +0 -1
  431. package/dist/types/src/components/Call/Toolbar.d.ts +0 -16
  432. package/dist/types/src/components/Call/Toolbar.d.ts.map +0 -1
  433. package/dist/types/src/components/Call/index.d.ts +0 -3
  434. package/dist/types/src/components/Call/index.d.ts.map +0 -1
  435. package/dist/types/src/components/CallDebugPanel.d.ts +0 -15
  436. package/dist/types/src/components/CallDebugPanel.d.ts.map +0 -1
  437. package/dist/types/src/components/CallSidebar.d.ts +0 -4
  438. package/dist/types/src/components/CallSidebar.d.ts.map +0 -1
  439. package/dist/types/src/components/ChannelContainer.d.ts +0 -14
  440. package/dist/types/src/components/ChannelContainer.d.ts.map +0 -1
  441. package/dist/types/src/components/ChannelContainer.stories.d.ts +0 -160
  442. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +0 -1
  443. package/dist/types/src/components/Chat.stories.d.ts +0 -160
  444. package/dist/types/src/components/Chat.stories.d.ts.map +0 -1
  445. package/dist/types/src/components/ChatContainer.d.ts +0 -18
  446. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  447. package/dist/types/src/components/Comments.stories.d.ts +0 -158
  448. package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
  449. package/dist/types/src/components/CommentsContainer.d.ts +0 -13
  450. package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
  451. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +0 -1
  452. package/dist/types/src/components/Lobby/Lobby.d.ts +0 -15
  453. package/dist/types/src/components/Lobby/Lobby.d.ts.map +0 -1
  454. package/dist/types/src/components/Lobby/index.d.ts +0 -2
  455. package/dist/types/src/components/Lobby/index.d.ts.map +0 -1
  456. package/dist/types/src/components/Media/AudioStream.d.ts +0 -6
  457. package/dist/types/src/components/Media/AudioStream.d.ts.map +0 -1
  458. package/dist/types/src/components/Media/VideoObject.d.ts +0 -15
  459. package/dist/types/src/components/Media/VideoObject.d.ts.map +0 -1
  460. package/dist/types/src/components/Media/VideoObject.stories.d.ts +0 -22
  461. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +0 -1
  462. package/dist/types/src/components/Media/index.d.ts +0 -3
  463. package/dist/types/src/components/Media/index.d.ts.map +0 -1
  464. package/dist/types/src/components/MessageContainer.d.ts +0 -14
  465. package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
  466. package/dist/types/src/components/Participant/Participant.d.ts +0 -6
  467. package/dist/types/src/components/Participant/Participant.d.ts.map +0 -1
  468. package/dist/types/src/components/Participant/ParticipantGrid.d.ts +0 -11
  469. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +0 -1
  470. package/dist/types/src/components/Participant/index.d.ts +0 -3
  471. package/dist/types/src/components/Participant/index.d.ts.map +0 -1
  472. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts +0 -12
  473. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
  474. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -162
  475. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +0 -1
  476. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts +0 -32
  477. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +0 -1
  478. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +0 -176
  479. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +0 -1
  480. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts +0 -21
  481. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +0 -1
  482. package/dist/types/src/components/ResponsiveGrid/index.d.ts +0 -4
  483. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +0 -1
  484. package/dist/types/src/components/ThreadCompanion.d.ts +0 -5
  485. package/dist/types/src/components/ThreadCompanion.d.ts.map +0 -1
  486. package/dist/types/src/components/ThreadSettings.d.ts +0 -6
  487. package/dist/types/src/components/ThreadSettings.d.ts.map +0 -1
  488. package/dist/types/src/components/command-extension.d.ts.map +0 -1
  489. package/dist/types/src/components/testing.d.ts.map +0 -1
  490. package/dist/types/src/functions/create-proposals.d.ts +0 -6
  491. package/dist/types/src/functions/create-proposals.d.ts.map +0 -1
  492. package/dist/types/src/functions/index.d.ts +0 -2
  493. package/dist/types/src/functions/index.d.ts.map +0 -1
  494. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +0 -2
  495. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +0 -1
  496. package/dist/types/src/hooks/useDebugMode.d.ts +0 -2
  497. package/dist/types/src/hooks/useDebugMode.d.ts.map +0 -1
  498. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +0 -2
  499. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +0 -1
  500. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +0 -3
  501. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +0 -1
  502. package/dist/types/src/testing/stories.d.ts +0 -2
  503. package/dist/types/src/testing/stories.d.ts.map +0 -1
  504. package/dist/types/src/types/Channel.d.ts +0 -16
  505. package/dist/types/src/types/Channel.d.ts.map +0 -1
  506. package/dist/types/src/types/Thread.d.ts +0 -167
  507. package/dist/types/src/types/Thread.d.ts.map +0 -1
  508. package/src/calls/call-manager.ts +0 -246
  509. package/src/calls/call-swarm-synchronizer.ts +0 -350
  510. package/src/calls/index.ts +0 -10
  511. package/src/calls/media-manager.ts +0 -378
  512. package/src/calls/speaking-monitor.ts +0 -85
  513. package/src/calls/types.ts +0 -74
  514. package/src/calls/util/audio.ts +0 -58
  515. package/src/calls/util/calls-service.ts +0 -581
  516. package/src/calls/util/history-cache.ts +0 -27
  517. package/src/calls/util/index.ts +0 -8
  518. package/src/calls/util/media.ts +0 -52
  519. package/src/calls/util/stub-media-streams.ts +0 -127
  520. package/src/calls/util/task-scheduling.ts +0 -92
  521. package/src/calls-service.stories.tsx +0 -229
  522. package/src/capabilities/call-manager.ts +0 -20
  523. package/src/capabilities/capabilities.ts +0 -33
  524. package/src/capabilities/intent-resolver.ts +0 -311
  525. package/src/capabilities/react-root.tsx +0 -17
  526. package/src/components/Call/Call.tsx +0 -89
  527. package/src/components/Call/Toolbar.tsx +0 -182
  528. package/src/components/Call/index.ts +0 -6
  529. package/src/components/CallDebugPanel.tsx +0 -172
  530. package/src/components/CallSidebar.tsx +0 -18
  531. package/src/components/ChannelContainer.stories.tsx +0 -59
  532. package/src/components/ChannelContainer.tsx +0 -205
  533. package/src/components/ChatContainer.tsx +0 -154
  534. package/src/components/Comments.stories.tsx +0 -91
  535. package/src/components/Lobby/Lobby.tsx +0 -119
  536. package/src/components/Lobby/index.ts +0 -5
  537. package/src/components/Media/AudioStream.tsx +0 -67
  538. package/src/components/Media/VideoObject.stories.tsx +0 -60
  539. package/src/components/Media/VideoObject.tsx +0 -58
  540. package/src/components/Media/index.ts +0 -6
  541. package/src/components/Participant/Participant.tsx +0 -63
  542. package/src/components/Participant/ParticipantGrid.tsx +0 -89
  543. package/src/components/Participant/index.ts +0 -6
  544. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +0 -54
  545. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +0 -31
  546. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +0 -158
  547. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +0 -341
  548. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +0 -134
  549. package/src/components/ResponsiveGrid/index.ts +0 -7
  550. package/src/components/ThreadCompanion.tsx +0 -188
  551. package/src/components/ThreadSettings.tsx +0 -16
  552. package/src/functions/create-proposals.ts +0 -58
  553. package/src/functions/index.ts +0 -5
  554. package/src/hooks/useBlackCanvasStreamTrack.tsx +0 -27
  555. package/src/hooks/useDebugMode.ts +0 -25
  556. package/src/hooks/useInaudibleAudioStreamTrack.tsx +0 -27
  557. package/src/hooks/useVideoStreamTrack.tsx +0 -36
  558. package/src/testing/stories.ts +0 -51
  559. package/src/types/Channel.ts +0 -27
  560. package/src/types/Thread.ts +0 -26
  561. package/src/typings/peermetrics-webrtc-stats.d.ts +0 -46
  562. package/src/typings.d.ts +0 -8
  563. /package/dist/lib/{browser/ChannelContainer-MX5ABVGC.mjs.map → neutral/ChannelChat-6YTD5HWL.mjs.map} +0 -0
  564. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  565. /package/dist/lib/{browser/ChatContainer-7F5Y6GXJ.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  566. /package/dist/lib/{node-esm/types → neutral/hooks}/index.mjs.map +0 -0
  567. /package/dist/lib/{node-esm/ChannelContainer-2JJJ3IDK.mjs.map → neutral/index.mjs.map} +0 -0
  568. /package/dist/lib/{node-esm/ChatContainer-C526R4DI.mjs.map → neutral/meta.mjs.map} +0 -0
@@ -5,15 +5,14 @@
5
5
  import React, { useEffect } from 'react';
6
6
 
7
7
  import { Obj, Relation } from '@dxos/echo';
8
- import { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';
9
- import { type AnchoredTo } from '@dxos/types';
8
+ import { Icon, Message, Trans, useTranslation } from '@dxos/react-ui';
9
+ import { type AnchoredTo, type Thread } from '@dxos/types';
10
10
 
11
- import { meta } from '../meta';
12
- import { type Thread } from '../types';
11
+ import { meta } from '#meta';
13
12
 
14
- import { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';
13
+ import { CommentsThread, type CommentsThreadProps } from './CommentsThread';
15
14
 
16
- export type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {
15
+ export type CommentsPanelProps = Omit<CommentsThreadProps, 'anchor' | 'current'> & {
17
16
  anchors: AnchoredTo.AnchoredTo[];
18
17
  currentId?: string;
19
18
  showResolvedThreads?: boolean;
@@ -22,7 +21,7 @@ export type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor'
22
21
  /**
23
22
  * Root container for collection of comment threads.
24
23
  */
25
- export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: CommentsContainerProps) => {
24
+ export const CommentsPanel = ({ anchors, currentId, showResolvedThreads, ...props }: CommentsPanelProps) => {
26
25
  const { t } = useTranslation(meta.id);
27
26
 
28
27
  // TODO(wittjosiah): There seems to be a race between thread and anchor being deleted.
@@ -30,7 +29,8 @@ export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...
30
29
  ? anchors.filter((anchor) => !!Relation.getSource(anchor))
31
30
  : anchors.filter((anchor) => {
32
31
  const thread = Relation.getSource(anchor);
33
- return thread && thread.status !== 'resolved';
32
+ // TODO(dmaretskyi): Do Obj.instanceOf check instead.
33
+ return thread && (thread as any).status !== 'resolved';
34
34
  });
35
35
 
36
36
  useEffect(() => {
@@ -41,20 +41,20 @@ export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...
41
41
 
42
42
  if (filteredAnchors.length === 0) {
43
43
  return (
44
- <div role='none' className='plb-cardSpacingBlock pli-cardSpacingInline'>
45
- <Callout.Root>
46
- <Callout.Title>
44
+ <div className='p-form-padding'>
45
+ <Message.Root>
46
+ <Message.Content>
47
47
  <Trans
48
48
  {...{
49
49
  t,
50
- i18nKey: 'no comments message',
50
+ i18nKey: 'no-comments.message',
51
51
  components: {
52
- commentIcon: <Icon icon='ph--chat-text--regular' size={4} classNames='inline-block' />,
52
+ commentIcon: <Icon icon='ph--chat-text--regular' size={4} classNames='dx-icon-inline' />,
53
53
  },
54
54
  }}
55
55
  />
56
- </Callout.Title>
57
- </Callout.Root>
56
+ </Message.Content>
57
+ </Message.Root>
58
58
  </div>
59
59
  );
60
60
  }
@@ -64,7 +64,7 @@ export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...
64
64
  {filteredAnchors.map((anchor) => {
65
65
  const thread = Relation.getSource(anchor) as Thread.Thread;
66
66
  const threadId = Obj.getDXN(thread).toString();
67
- return <CommentsThreadContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;
67
+ return <CommentsThread key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;
68
68
  })}
69
69
  </div>
70
70
  );
@@ -4,30 +4,29 @@
4
4
 
5
5
  import React, { useCallback, useMemo, useRef, useState } from 'react';
6
6
 
7
- import { Obj, Ref, Relation } from '@dxos/echo';
7
+ import { Obj, Relation } from '@dxos/echo';
8
+ import { useObject } from '@dxos/echo-react';
8
9
  import { getSpace, useMembers } from '@dxos/react-client/echo';
9
10
  import { useIdentity } from '@dxos/react-client/halo';
10
11
  import { IconButton, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';
11
- import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';
12
- import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';
13
12
  import {
14
13
  MessageTextbox,
15
14
  type MessageTextboxProps,
16
15
  Thread as ThreadComponent,
17
16
  type ThreadRootProps,
18
17
  } from '@dxos/react-ui-thread';
19
- import { type AnchoredTo } from '@dxos/types';
20
- import { isNonNullable } from '@dxos/util';
18
+ import { type AnchoredTo, type Thread } from '@dxos/types';
19
+ import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/ui-editor';
20
+ import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/ui-theme';
21
21
 
22
- import { useStatus } from '../hooks';
23
- import { meta } from '../meta';
24
- import { type Thread } from '../types';
25
- import { getMessageMetadata } from '../util';
22
+ import { useStatus } from '#hooks';
23
+ import { meta } from '#meta';
26
24
 
27
- import { command } from './command-extension';
28
- import { MessageContainer, buttonClassNames, buttonGroupClassNames } from './MessageContainer';
25
+ import { command } from '../../extensions/command';
26
+ import { getMessageMetadata } from '../../util';
27
+ import { MessagePanel, buttonClassNames, buttonGroupClassNames } from '../MessagePanel';
29
28
 
30
- export type CommentsThreadContainerProps = {
29
+ export type CommentsThreadProps = {
31
30
  anchor: AnchoredTo.AnchoredTo;
32
31
  onAttend?: (anchor: AnchoredTo.AnchoredTo) => void;
33
32
  onComment?: (anchor: AnchoredTo.AnchoredTo, message: string) => void;
@@ -37,7 +36,7 @@ export type CommentsThreadContainerProps = {
37
36
  onAcceptProposal?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;
38
37
  } & Pick<ThreadRootProps, 'current'>;
39
38
 
40
- export const CommentsThreadContainer = ({
39
+ export const CommentsThread = ({
41
40
  anchor,
42
41
  current,
43
42
  onAttend,
@@ -46,14 +45,15 @@ export const CommentsThreadContainer = ({
46
45
  onMessageDelete,
47
46
  onThreadDelete,
48
47
  onAcceptProposal,
49
- }: CommentsThreadContainerProps) => {
48
+ }: CommentsThreadProps) => {
50
49
  const { themeMode } = useThemeContext();
51
50
  const { t } = useTranslation(meta.id);
52
51
  const identity = useIdentity()!;
53
52
  const space = getSpace(anchor);
54
- const members = useMembers(space?.key);
53
+ const members = useMembers(space?.id);
55
54
  const detached = !anchor.anchor;
56
55
  const thread = Relation.getSource(anchor) as Thread.Thread;
56
+ const [messages] = useObject(thread, 'messages');
57
57
  const activity = useStatus(space, Obj.getDXN(thread).toString());
58
58
  const threadScrollRef = useRef<HTMLDivElement | null>(null);
59
59
 
@@ -64,7 +64,7 @@ export const CommentsThreadContainer = ({
64
64
  const messageRef = useRef('');
65
65
  const extensions = useMemo(
66
66
  () => [
67
- createBasicExtensions({ placeholder: t('message placeholder') }),
67
+ createBasicExtensions({ placeholder: t('message.placeholder') }),
68
68
  createThemeExtensions({ themeMode }),
69
69
  listener({ onChange: ({ text }) => (messageRef.current = text) }),
70
70
  command,
@@ -82,7 +82,7 @@ export const CommentsThreadContainer = ({
82
82
  const handleThreadDelete = useCallback(() => onThreadDelete?.(anchor), [onThreadDelete, anchor]);
83
83
  const handleAcceptProposal = useCallback((id: string) => onAcceptProposal?.(anchor, id), [onAcceptProposal, anchor]);
84
84
 
85
- const handleComment: MessageTextboxProps['onSend'] = useCallback(() => {
85
+ const handleComment = useCallback<NonNullable<MessageTextboxProps['onSend']>>(() => {
86
86
  if (!messageRef.current) {
87
87
  return false;
88
88
  }
@@ -98,35 +98,34 @@ export const CommentsThreadContainer = ({
98
98
  return (
99
99
  <ThreadComponent.Root
100
100
  id={Obj.getDXN(thread).toString()}
101
- classNames='pbs-2 border-be border-subduedSeparator last:border-none'
101
+ classNames='pt-2 border-b border-subdued-separator last:border-none'
102
102
  current={current}
103
103
  onClickCapture={handleAttend}
104
104
  onFocusCapture={handleAttend}
105
105
  >
106
106
  <div
107
- role='none'
108
107
  className={mx(
109
- 'col-span-2 grid grid-cols-[var(--rail-size)_1fr_min-content]',
108
+ 'col-span-2 grid grid-cols-[var(--dx-rail-size)_1fr_min-content]',
110
109
  hoverableControls,
111
110
  hoverableFocusedWithinControls,
112
111
  )}
113
112
  >
114
113
  {detached ? (
115
- <Tooltip.Trigger asChild content={t('detached thread label')} side='top'>
114
+ <Tooltip.Trigger asChild content={t('detached-thread.label')} side='top'>
116
115
  <ThreadComponent.Header detached>{thread.name}</ThreadComponent.Header>
117
116
  </Tooltip.Trigger>
118
117
  ) : (
119
118
  <ThreadComponent.Header>{thread.name}</ThreadComponent.Header>
120
119
  )}
121
- <div role='none' className={buttonGroupClassNames}>
122
- {thread.status === 'staged' && <Tag palette='neutral'>{t('draft button')}</Tag>}
120
+ <div className={buttonGroupClassNames}>
121
+ {thread.status === 'staged' && <Tag palette='neutral'>{t('draft.button')}</Tag>}
123
122
  {onResolve && !(thread?.status === 'staged') && (
124
123
  <IconButton
125
124
  data-testid='thread.resolve'
126
125
  variant='ghost'
127
126
  icon={thread?.status === 'resolved' ? 'ph--check--fill' : 'ph--check--regular'}
128
127
  iconOnly
129
- label={t('resolve thread label')}
128
+ label={t('resolve-thread.label')}
130
129
  classNames={[buttonClassNames, thread?.status !== 'resolved' && hoverableControlItem]}
131
130
  onClick={handleResolve}
132
131
  />
@@ -137,7 +136,7 @@ export const CommentsThreadContainer = ({
137
136
  variant='ghost'
138
137
  icon='ph--x--regular'
139
138
  iconOnly
140
- label={t('delete thread label')}
139
+ label={t('delete-thread.label')}
141
140
  classNames={[buttonClassNames, hoverableControlItem]}
142
141
  onClick={handleThreadDelete}
143
142
  />
@@ -145,12 +144,11 @@ export const CommentsThreadContainer = ({
145
144
  </div>
146
145
  </div>
147
146
 
148
- {/** TODO(dmaretskyi): How's `thread.messages` undefined? */}
149
- {Ref.Array.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => (
150
- <MessageContainer
151
- key={message.id}
147
+ {messages?.map((ref) => (
148
+ <MessagePanel
149
+ key={ref.dxn.toString()}
152
150
  editable
153
- message={message}
151
+ message={ref}
154
152
  members={members}
155
153
  onDelete={handleMessageDelete}
156
154
  onAcceptProposal={handleAcceptProposal}
@@ -165,10 +163,9 @@ export const CommentsThreadContainer = ({
165
163
  */}
166
164
  <MessageTextbox extensions={extensions} onSend={handleComment} {...textboxMetadata} />
167
165
 
168
- <ThreadComponent.Status activity={activity}>{t('activity message')}</ThreadComponent.Status>
166
+ <ThreadComponent.Status activity={activity}>{t('activity.message')}</ThreadComponent.Status>
169
167
 
170
- {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}
171
- <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />
168
+ <div className='h-px -mt-px' ref={threadScrollRef} />
172
169
  </ThreadComponent.Root>
173
170
  );
174
171
  };
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './CommentsPanel';
6
+ export * from './CommentsThread';
@@ -5,70 +5,102 @@
5
5
  import { EditorView } from '@codemirror/view';
6
6
  import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
7
7
 
8
- import { Surface } from '@dxos/app-framework/react';
9
- import { type Obj, Ref, type Type } from '@dxos/echo';
8
+ import { Surface } from '@dxos/app-framework/ui';
9
+ import { AppSurface } from '@dxos/app-toolkit/ui';
10
+ import { type Obj, Ref } from '@dxos/echo';
11
+ import { useObject } from '@dxos/echo-react';
10
12
  import { PublicKey } from '@dxos/react-client';
11
13
  import { type SpaceMember } from '@dxos/react-client/echo';
12
14
  import { type Identity, useIdentity } from '@dxos/react-client/halo';
13
15
  import { IconButton, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';
14
- import { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';
15
- import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';
16
+ import { Card } from '@dxos/react-ui';
17
+ import { useTextEditor } from '@dxos/react-ui-editor';
16
18
  import { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';
17
19
  import { type ContentBlock, type Message } from '@dxos/types';
20
+ import { createBasicExtensions, createThemeExtensions } from '@dxos/ui-editor';
21
+ import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/ui-theme';
18
22
 
19
- import { useOnEditAnalytics } from '../hooks';
20
- import { meta } from '../meta';
21
- import { getMessageMetadata } from '../util';
23
+ import { useOnEditAnalytics } from '#hooks';
24
+ import { meta } from '#meta';
22
25
 
23
- import { command } from './command-extension';
26
+ import { command } from '../../extensions/command';
27
+ import { getMessageMetadata } from '../../util';
24
28
 
25
- export const buttonGroupClassNames = 'flex flex-row items-center gap-0.5 pie-2';
26
- export const buttonClassNames = '!p-1 transition-opacity';
29
+ export const buttonGroupClassNames = 'flex flex-row items-center gap-0.5 pe-2';
30
+ export const buttonClassNames = 'p-1! transition-opacity';
27
31
 
28
- export type MessageContainerProps = {
29
- message: Message.Message;
32
+ export type MessagePanelProps = {
33
+ message: Obj.OfShape<Message.Message> | Ref.Ref<Obj.OfShape<Message.Message>>;
30
34
  members: SpaceMember[];
31
35
  editable?: boolean;
32
36
  onDelete?: (id: string) => void;
33
37
  onAcceptProposal?: (id: string) => void;
34
38
  };
35
39
 
36
- export const MessageContainer = ({
37
- message,
40
+ export const MessagePanel = ({
41
+ message: messageOrRef,
38
42
  members,
39
43
  editable = false,
40
44
  onDelete,
41
45
  onAcceptProposal,
42
- }: MessageContainerProps) => {
46
+ }: MessagePanelProps) => {
43
47
  const { t } = useTranslation(meta.id);
48
+ const [message, updateMessage] = useObject(messageOrRef);
49
+ const identity = useIdentity();
50
+ const [editing, setEditing] = useState(false);
51
+
52
+ const textBlockIndex = message?.blocks.findIndex((block) => block._tag === 'text') ?? -1;
53
+
54
+ const handleEdit = useCallback(() => setEditing((editing) => !editing), []);
55
+ const handleDelete = useCallback(() => message && onDelete?.(message.id), [message, onDelete]);
56
+ const handleAcceptProposal = useCallback(
57
+ () => message && onAcceptProposal?.(message.id),
58
+ [message, onAcceptProposal],
59
+ );
60
+ const handleTextBlockChange = useCallback(
61
+ (newText: string) => {
62
+ updateMessage((m) => {
63
+ const targetBlock = m.blocks[textBlockIndex];
64
+ if (targetBlock && targetBlock._tag === 'text') {
65
+ targetBlock.text = newText;
66
+ }
67
+ });
68
+ },
69
+ [updateMessage, textBlockIndex],
70
+ );
71
+
72
+ const textBlock =
73
+ message && textBlockIndex !== -1 ? (message.blocks[textBlockIndex] as ContentBlock.Text) : undefined;
74
+ useOnEditAnalytics(message, textBlock, !!editing);
75
+
76
+ if (!message) {
77
+ return null;
78
+ }
79
+
44
80
  const senderIdentity = members.find(
45
81
  (member) =>
46
82
  (message.sender.identityDid && member.identity.did === message.sender.identityDid) ||
47
83
  (message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey)),
48
84
  )?.identity;
49
- const messageMetadata = getMessageMetadata(message.id, senderIdentity);
50
- const userIsAuthor = useIdentity()?.did === messageMetadata.authorId;
51
- const [editing, setEditing] = useState(false);
52
- const handleEdit = useCallback(() => setEditing((editing) => !editing), []);
53
- const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);
54
- const handleAcceptProposal = useCallback(() => onAcceptProposal?.(message.id), [message, onAcceptProposal]);
55
- const textBlock = message.blocks.find((block) => block._tag === 'text');
85
+ // Pass `message.sender` as the fallback so externally-synced messages
86
+ // (Slack, etc.) display the source-side sender name instead of "Anonymous"
87
+ // when no DXOS identity matches.
88
+ const messageMetadata = getMessageMetadata(message.id, senderIdentity, message.sender);
89
+ const userIsAuthor = identity?.did === messageMetadata.authorId;
56
90
  const proposalBlock = message.blocks.find((block) => block._tag === 'proposal');
57
91
  const references = message.blocks.filter((block) => block._tag === 'reference').map((block) => block.reference);
58
92
 
59
- useOnEditAnalytics(message, textBlock, !!editing);
60
-
61
93
  return (
62
94
  <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>
63
95
  <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>
64
- <div role='none' className={buttonGroupClassNames}>
96
+ <div className={buttonGroupClassNames}>
65
97
  {userIsAuthor && editable && (
66
98
  <IconButton
67
99
  data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}
68
100
  variant='ghost'
69
101
  icon={editing ? 'ph--check--regular' : 'ph--pencil-simple--regular'}
70
102
  iconOnly
71
- label={t(editing ? 'save message label' : 'edit message label')}
103
+ label={t(editing ? 'save-message.label' : 'edit-message.label')}
72
104
  classNames={[buttonClassNames, hoverableControlItem]}
73
105
  onClick={handleEdit}
74
106
  />
@@ -80,7 +112,7 @@ export const MessageContainer = ({
80
112
  variant='ghost'
81
113
  icon='ph--check--regular'
82
114
  iconOnly
83
- label={t('accept proposal label')}
115
+ label={t('accept-proposal.label')}
84
116
  classNames={[buttonClassNames, hoverableControlItem]}
85
117
  onClick={handleAcceptProposal}
86
118
  />
@@ -91,23 +123,25 @@ export const MessageContainer = ({
91
123
  variant='ghost'
92
124
  icon='ph--x--regular'
93
125
  iconOnly
94
- label={t('delete message label')}
126
+ label={t('delete-message.label')}
95
127
  classNames={[buttonClassNames, hoverableControlItem]}
96
128
  onClick={handleDelete}
97
129
  />
98
130
  )}
99
131
  </div>
100
132
  </MessageHeading>
101
- {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}
133
+ {textBlock && (
134
+ <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} onSave={handleTextBlockChange} />
135
+ )}
102
136
  {proposalBlock && <ProposalBlock block={proposalBlock} />}
103
137
  {Ref.Array.targets(references).map((reference, index) => (
104
- <MessagePart key={index} part={reference} />
138
+ <MessagePart key={index} part={reference as Obj.Unknown} />
105
139
  ))}
106
140
  </MessageRoot>
107
141
  );
108
142
  };
109
143
 
110
- const MessagePart = ({ part }: { part: Type.Expando }) => {
144
+ const MessagePart = ({ part }: { part: Obj.Unknown }) => {
111
145
  return <MessageBlockObjectTile subject={part} />;
112
146
  };
113
147
 
@@ -115,11 +149,13 @@ const TextboxBlock = ({
115
149
  block,
116
150
  isAuthor,
117
151
  editing,
152
+ onSave,
118
153
  }: {
119
154
  block: ContentBlock.Text;
120
155
  editing?: boolean;
121
156
  isAuthor?: boolean;
122
157
  identity?: Identity;
158
+ onSave?: (newText: string) => void;
123
159
  }) => {
124
160
  const { themeMode } = useThemeContext();
125
161
  const inMemoryContentRef = useRef(block.text);
@@ -129,8 +165,8 @@ const TextboxBlock = ({
129
165
  }, []);
130
166
 
131
167
  const saveDocumentChange = useCallback(() => {
132
- block.text = inMemoryContentRef.current;
133
- }, [block]);
168
+ onSave?.(inMemoryContentRef.current);
169
+ }, [onSave]);
134
170
 
135
171
  useOnTransition(editing, true, false, saveDocumentChange);
136
172
 
@@ -155,18 +191,14 @@ const TextboxBlock = ({
155
191
  editing && view?.focus();
156
192
  }, [editing, view]);
157
193
 
158
- return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;
194
+ return <div ref={parentRef} className='me-4' {...focusAttributes} />;
159
195
  };
160
196
 
161
197
  const ProposalBlock = ({ block }: { block: ContentBlock.Proposal }) => {
162
- return (
163
- <div role='none' className='mie-4 italic'>
164
- {block.text}
165
- </div>
166
- );
198
+ return <div className='me-4 italic'>{block.text}</div>;
167
199
  };
168
200
 
169
- const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Any }>(({ subject }, forwardedRef) => {
201
+ const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Unknown }>(({ subject }, forwardedRef) => {
170
202
  // TODO(burdon): Use annotation to get title.
171
203
  let title = (subject as any).name ?? (subject as any).title ?? (subject as any).type ?? 'Object';
172
204
  if (typeof title !== 'string') {
@@ -174,12 +206,16 @@ const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Any }>(
174
206
  }
175
207
 
176
208
  return (
177
- <div
178
- role='group'
179
- className={mx('grid col-span-3 plb-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}
209
+ <Card.Root
210
+ className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}
180
211
  ref={forwardedRef}
181
212
  >
182
- <Surface role='card' limit={1} data={{ subject }} fallback={title} />
183
- </div>
213
+ <Surface.Surface
214
+ type={AppSurface.Card}
215
+ limit={1}
216
+ data={{ subject } satisfies AppSurface.ObjectCardData}
217
+ fallback={title}
218
+ />
219
+ </Card.Root>
184
220
  );
185
221
  });
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './MessagePanel';
@@ -0,0 +1,32 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+
7
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
8
+
9
+ import { translations } from '#translations';
10
+
11
+ import { ThreadSettings } from './ThreadSettings';
12
+
13
+ const meta = {
14
+ title: 'plugins/plugin-thread/components/ThreadSettings',
15
+ component: ThreadSettings,
16
+ tags: ['settings'],
17
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
18
+ parameters: {
19
+ layout: 'fullscreen',
20
+ translations,
21
+ },
22
+ } satisfies Meta<typeof ThreadSettings>;
23
+
24
+ export default meta;
25
+
26
+ type Story = StoryObj<typeof meta>;
27
+
28
+ export const Default: Story = {
29
+ args: {
30
+ settings: {},
31
+ },
32
+ };
@@ -0,0 +1,19 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { type AppSurface } from '@dxos/app-toolkit/ui';
8
+ import { useTranslation } from '@dxos/react-ui';
9
+ import { Settings as SettingsForm } from '@dxos/react-ui-form';
10
+
11
+ import { meta } from '#meta';
12
+ import { type Settings } from '#types';
13
+
14
+ export type ThreadSettingsProps = AppSurface.SettingsArticleProps<Settings.Settings>;
15
+
16
+ export const ThreadSettings = ({ settings: _settings }: ThreadSettingsProps) => {
17
+ const { t: _t } = useTranslation(meta.id);
18
+ return <SettingsForm.Viewport></SettingsForm.Viewport>;
19
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ export { ThreadSettings as default } from './ThreadSettings';
@@ -2,17 +2,10 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { lazy } from 'react';
5
+ import { type ComponentType, lazy } from 'react';
6
6
 
7
- // TODO(wittjosiah): Suspense boundary for sidebar?
8
- export * from './Call';
9
- export * from './CallDebugPanel';
10
- export * from './CallSidebar';
11
- export * from './CommentsContainer';
12
- export * from './CommentsThreadContainer';
13
- export * from './MessageContainer';
14
- export * from './ThreadCompanion';
15
- export * from './ThreadSettings';
7
+ export * from './Chat';
8
+ export * from './CommentsPanel';
9
+ export * from './MessagePanel';
16
10
 
17
- export const ChannelContainer = lazy(() => import('./ChannelContainer'));
18
- export const ChatContainer = lazy(() => import('./ChatContainer'));
11
+ export const ThreadSettings: ComponentType<any> = lazy(() => import('./ThreadSettings'));