@dxos/plugin-thread 0.8.3-main.672df60 → 0.8.3-staging.0fa589b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/dist/lib/browser/{ChannelContainer-LGYSQMC7.mjs → ChannelContainer-PKFBVENP.mjs} +4 -4
  2. package/dist/lib/browser/{ChatContainer-JWRI73OG.mjs → ChatContainer-RSOKYAMK.mjs} +2 -2
  3. package/dist/lib/browser/{app-graph-builder-K3CFBN7V.mjs → app-graph-builder-OY7R7EJP.mjs} +11 -11
  4. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-6NBVNXTM.mjs +21 -0
  6. package/dist/lib/browser/{chunk-WDOQXTI2.mjs → chunk-AEXWNS6Z.mjs} +5 -3
  7. package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-KMVGJG23.mjs → chunk-PG5CTFKK.mjs} +50 -45
  9. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-G3TS64FP.mjs → chunk-TAFSCSUR.mjs} +4 -4
  11. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-5PGLGDIP.mjs → chunk-XZKBN3NS.mjs} +35 -35
  13. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +35 -9
  15. package/dist/lib/browser/index.mjs.map +3 -3
  16. package/dist/lib/browser/{intent-resolver-YUYZCTLF.mjs → intent-resolver-FK2MDVDT.mjs} +24 -26
  17. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +7 -0
  18. package/dist/lib/browser/{markdown-4EC3OCF2.mjs → markdown-TE5SWWNJ.mjs} +9 -9
  19. package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +7 -0
  20. package/dist/lib/browser/meta.json +1 -1
  21. package/dist/lib/browser/{react-root-EECCWHCW.mjs → react-root-NK3A4VG7.mjs} +6 -6
  22. package/dist/lib/browser/{react-surface-5QLZAFDL.mjs → react-surface-VXUJKSOG.mjs} +12 -12
  23. package/dist/lib/browser/react-surface-VXUJKSOG.mjs.map +7 -0
  24. package/dist/lib/browser/{settings-KVBQQSO5.mjs → settings-RB2RSLXV.mjs} +4 -4
  25. package/dist/lib/browser/settings-RB2RSLXV.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +1 -1
  27. package/dist/lib/node/{ChannelContainer-5EKNEH56.cjs → ChannelContainer-YS5YT2ML.cjs} +9 -9
  28. package/dist/lib/node/{ChannelContainer-5EKNEH56.cjs.map → ChannelContainer-YS5YT2ML.cjs.map} +2 -2
  29. package/dist/lib/node/{ChatContainer-EE3FPSYO.cjs → ChatContainer-GCOM3M56.cjs} +8 -8
  30. package/dist/lib/node/{ChatContainer-EE3FPSYO.cjs.map → ChatContainer-GCOM3M56.cjs.map} +2 -2
  31. package/dist/lib/node/{app-graph-builder-IRE3GYKE.cjs → app-graph-builder-PBHJNDQY.cjs} +21 -21
  32. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +7 -0
  33. package/dist/lib/node/{chunk-4B3PPXA6.cjs → chunk-E3WBZTTI.cjs} +12 -12
  34. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +7 -0
  35. package/dist/lib/node/{chunk-U7NOIXN6.cjs → chunk-ERG7G6FF.cjs} +10 -10
  36. package/dist/lib/node/{chunk-JLHENFGK.cjs → chunk-IP533AMV.cjs} +76 -71
  37. package/dist/lib/node/chunk-IP533AMV.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-6B3M6XRE.cjs → chunk-UM36TPCT.cjs} +37 -37
  39. package/dist/lib/node/chunk-UM36TPCT.cjs.map +7 -0
  40. package/dist/lib/node/{chunk-TKHJVC2C.cjs → chunk-ZGDN3XBR.cjs} +8 -6
  41. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +7 -0
  42. package/dist/lib/node/index.cjs +45 -19
  43. package/dist/lib/node/index.cjs.map +3 -3
  44. package/dist/lib/node/{intent-resolver-MZ3HADNY.cjs → intent-resolver-SYSJ5SJG.cjs} +50 -52
  45. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +7 -0
  46. package/dist/lib/node/{markdown-NJDPXIKD.cjs → markdown-GQIPJS2F.cjs} +27 -27
  47. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +7 -0
  48. package/dist/lib/node/meta.json +1 -1
  49. package/dist/lib/node/{react-root-IAYQ2DBO.cjs → react-root-6HHDMULJ.cjs} +10 -10
  50. package/dist/lib/node/{react-surface-AVC5VVIS.cjs → react-surface-NBH42NN2.cjs} +24 -24
  51. package/dist/lib/node/react-surface-NBH42NN2.cjs.map +7 -0
  52. package/dist/lib/node/{settings-H45P5YO2.cjs → settings-4LQSFEDK.cjs} +7 -7
  53. package/dist/lib/node/settings-4LQSFEDK.cjs.map +7 -0
  54. package/dist/lib/node/types/index.cjs +6 -6
  55. package/dist/lib/node/types/index.cjs.map +1 -1
  56. package/dist/lib/node-esm/{ChannelContainer-KFS2RWWW.mjs → ChannelContainer-O4QJII2P.mjs} +4 -4
  57. package/dist/lib/node-esm/{ChatContainer-UJYPQMLV.mjs → ChatContainer-F6CSADV7.mjs} +2 -2
  58. package/dist/lib/node-esm/{app-graph-builder-I5VMPLE4.mjs → app-graph-builder-BAHBHYWI.mjs} +11 -11
  59. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-X6AUQDTE.mjs → chunk-2RNIPFDA.mjs} +35 -35
  61. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-ODUB4GAB.mjs → chunk-O63QJPQX.mjs} +7 -7
  63. package/dist/lib/node-esm/{chunk-POKXRTII.mjs → chunk-P6RLFCNT.mjs} +4 -4
  64. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-J323VQ4P.mjs → chunk-UJMPYKT3.mjs} +5 -3
  66. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-MNJ3V4XM.mjs → chunk-UZWVVFT3.mjs} +50 -45
  68. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +7 -0
  69. package/dist/lib/node-esm/index.mjs +35 -9
  70. package/dist/lib/node-esm/index.mjs.map +3 -3
  71. package/dist/lib/node-esm/{intent-resolver-CU22OPAH.mjs → intent-resolver-BU73VYW3.mjs} +24 -26
  72. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +7 -0
  73. package/dist/lib/node-esm/{markdown-HRGGO7IA.mjs → markdown-HJUWNBLS.mjs} +9 -9
  74. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +7 -0
  75. package/dist/lib/node-esm/meta.json +1 -1
  76. package/dist/lib/node-esm/{react-root-NQMUEI6Z.mjs → react-root-RUXOAQNW.mjs} +6 -6
  77. package/dist/lib/node-esm/{react-surface-Z4X5VLMY.mjs → react-surface-ELXFYKP6.mjs} +12 -12
  78. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs.map +7 -0
  79. package/dist/lib/node-esm/{settings-IJGUOU3F.mjs → settings-EA7DFSM6.mjs} +4 -4
  80. package/dist/lib/node-esm/settings-EA7DFSM6.mjs.map +7 -0
  81. package/dist/lib/node-esm/types/index.mjs +1 -1
  82. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  85. package/dist/types/src/components/ChatContainer.d.ts +3 -2
  86. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  87. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/CommentsContainer.d.ts +1 -1
  89. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  90. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  91. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  92. package/dist/types/src/components/testing.d.ts +2 -103
  93. package/dist/types/src/components/testing.d.ts.map +1 -1
  94. package/dist/types/src/translations.d.ts +128 -2
  95. package/dist/types/src/translations.d.ts.map +1 -1
  96. package/dist/types/src/types/schema.d.ts +117 -301
  97. package/dist/types/src/types/schema.d.ts.map +1 -1
  98. package/dist/types/src/types/types.d.ts +153 -828
  99. package/dist/types/src/types/types.d.ts.map +1 -1
  100. package/package.json +42 -42
  101. package/src/ThreadPlugin.tsx +29 -6
  102. package/src/capabilities/app-graph-builder.ts +9 -9
  103. package/src/capabilities/intent-resolver.ts +26 -26
  104. package/src/capabilities/react-surface.tsx +7 -7
  105. package/src/capabilities/settings.ts +7 -2
  106. package/src/components/Call/Toolbar.tsx +3 -3
  107. package/src/components/ChannelContainer.tsx +18 -22
  108. package/src/components/Chat.stories.tsx +4 -4
  109. package/src/components/ChatContainer.tsx +6 -6
  110. package/src/components/CommentContainer.tsx +2 -2
  111. package/src/components/Comments.stories.tsx +15 -5
  112. package/src/components/CommentsContainer.tsx +21 -24
  113. package/src/components/MessageContainer.tsx +20 -20
  114. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
  115. package/src/components/ThreadComplementary.tsx +19 -15
  116. package/src/components/testing.ts +5 -5
  117. package/src/extensions/threads.ts +7 -7
  118. package/src/testing/stories.ts +3 -3
  119. package/src/translations.ts +7 -2
  120. package/src/types/schema.ts +8 -4
  121. package/dist/lib/browser/app-graph-builder-K3CFBN7V.mjs.map +0 -7
  122. package/dist/lib/browser/chunk-5PGLGDIP.mjs.map +0 -7
  123. package/dist/lib/browser/chunk-CF2MXRCH.mjs +0 -21
  124. package/dist/lib/browser/chunk-G3TS64FP.mjs.map +0 -7
  125. package/dist/lib/browser/chunk-KMVGJG23.mjs.map +0 -7
  126. package/dist/lib/browser/chunk-WDOQXTI2.mjs.map +0 -7
  127. package/dist/lib/browser/intent-resolver-YUYZCTLF.mjs.map +0 -7
  128. package/dist/lib/browser/markdown-4EC3OCF2.mjs.map +0 -7
  129. package/dist/lib/browser/react-surface-5QLZAFDL.mjs.map +0 -7
  130. package/dist/lib/browser/settings-KVBQQSO5.mjs.map +0 -7
  131. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs.map +0 -7
  132. package/dist/lib/node/chunk-4B3PPXA6.cjs.map +0 -7
  133. package/dist/lib/node/chunk-6B3M6XRE.cjs.map +0 -7
  134. package/dist/lib/node/chunk-JLHENFGK.cjs.map +0 -7
  135. package/dist/lib/node/chunk-TKHJVC2C.cjs.map +0 -7
  136. package/dist/lib/node/intent-resolver-MZ3HADNY.cjs.map +0 -7
  137. package/dist/lib/node/markdown-NJDPXIKD.cjs.map +0 -7
  138. package/dist/lib/node/react-surface-AVC5VVIS.cjs.map +0 -7
  139. package/dist/lib/node/settings-H45P5YO2.cjs.map +0 -7
  140. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs.map +0 -7
  141. package/dist/lib/node-esm/chunk-J323VQ4P.mjs.map +0 -7
  142. package/dist/lib/node-esm/chunk-MNJ3V4XM.mjs.map +0 -7
  143. package/dist/lib/node-esm/chunk-POKXRTII.mjs.map +0 -7
  144. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs.map +0 -7
  145. package/dist/lib/node-esm/intent-resolver-CU22OPAH.mjs.map +0 -7
  146. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs.map +0 -7
  147. package/dist/lib/node-esm/react-surface-Z4X5VLMY.mjs.map +0 -7
  148. package/dist/lib/node-esm/settings-IJGUOU3F.mjs.map +0 -7
  149. /package/dist/lib/browser/{ChannelContainer-LGYSQMC7.mjs.map → ChannelContainer-PKFBVENP.mjs.map} +0 -0
  150. /package/dist/lib/browser/{ChatContainer-JWRI73OG.mjs.map → ChatContainer-RSOKYAMK.mjs.map} +0 -0
  151. /package/dist/lib/browser/{chunk-CF2MXRCH.mjs.map → chunk-6NBVNXTM.mjs.map} +0 -0
  152. /package/dist/lib/browser/{react-root-EECCWHCW.mjs.map → react-root-NK3A4VG7.mjs.map} +0 -0
  153. /package/dist/lib/node/{chunk-U7NOIXN6.cjs.map → chunk-ERG7G6FF.cjs.map} +0 -0
  154. /package/dist/lib/node/{react-root-IAYQ2DBO.cjs.map → react-root-6HHDMULJ.cjs.map} +0 -0
  155. /package/dist/lib/node-esm/{ChannelContainer-KFS2RWWW.mjs.map → ChannelContainer-O4QJII2P.mjs.map} +0 -0
  156. /package/dist/lib/node-esm/{ChatContainer-UJYPQMLV.mjs.map → ChatContainer-F6CSADV7.mjs.map} +0 -0
  157. /package/dist/lib/node-esm/{chunk-ODUB4GAB.mjs.map → chunk-O63QJPQX.mjs.map} +0 -0
  158. /package/dist/lib/node-esm/{react-root-NQMUEI6Z.mjs.map → react-root-RUXOAQNW.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,UAAU,EAAY,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAe,UAAU,EAAE,MAAM,UAAU,CAAC;AAGnD,yBAAiB,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDAiGs0P,CAAC;;;;+CAAgM,CAAC;wCAA8C,CAAC;0CAAgD,CAAC;yCAAkG,CAAC;2CAAiD,CAAC;;;;;;;;;;;kDAAye,CAAC;;;;kDAAoK,CAAC;;;;kDAAsK,CAAC;;;;uDAAkK,CAAC;yDAA+D,CAAC;yDAA+D,CAAC;uDAA6D,CAAC;2DAAiE,CAAC;oEAA0E,CAAC;wDAA8D,CAAC;;kDAA+E,CAAC;;;;kDAA8J,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDAAzgE,CAAC;;;;+CAAgM,CAAC;wCAA8C,CAAC;0CAAgD,CAAC;yCAAkG,CAAC;2CAAiD,CAAC;;;;;;;;;;;kDAAye,CAAC;;;;kDAAoK,CAAC;;;;kDAAsK,CAAC;;;;uDAAkK,CAAC;yDAA+D,CAAC;yDAA+D,CAAC;uDAA6D,CAAC;2DAAiE,CAAC;oEAA0E,CAAC;wDAA8D,CAAC;;kDAA+E,CAAC;;;;kDAA8J,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA9F32T,MAAM,OAAO,aAAc,SAAQ,kBAQjC;KAAG;;;;;;;;;;;;;;;;;;;;;;qDAsF61P,CAAC;;;;+CAAgM,CAAC;wCAA8C,CAAC;0CAAgD,CAAC;yCAAkG,CAAC;2CAAiD,CAAC;;;;;;;;;;;kDAAye,CAAC;;;;kDAAoK,CAAC;;;;kDAAsK,CAAC;;;;uDAAkK,CAAC;yDAA+D,CAAC;yDAA+D,CAAC;uDAA6D,CAAC;2DAAiE,CAAC;oEAA0E,CAAC;wDAA8D,CAAC;;kDAA+E,CAAC;;;;kDAA8J,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDAAzgE,CAAC;;;;+CAAgM,CAAC;wCAA8C,CAAC;0CAAgD,CAAC;yCAAkG,CAAC;2CAAiD,CAAC;;;;;;;;;;;kDAAye,CAAC;;;;kDAAoK,CAAC;;;;kDAAsK,CAAC;;;;uDAAkK,CAAC;yDAA+D,CAAC;yDAA+D,CAAC;uDAA6D,CAAC;2DAAiE,CAAC;oEAA0E,CAAC;wDAA8D,CAAC;;kDAA+E,CAAC;;;;kDAA8J,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAzgE,CAAC;;;;2CAAgM,CAAC;oCAA8C,CAAC;sCAAgD,CAAC;qCAAkG,CAAC;uCAAiD,CAAC;;;;;;;;;;;8CAAye,CAAC;;;;8CAAoK,CAAC;;;;8CAAsK,CAAC;;;;mDAAkK,CAAC;qDAA+D,CAAC;qDAA+D,CAAC;mDAA6D,CAAC;uDAAiE,CAAC;gEAA0E,CAAC;oDAA8D,CAAC;;8CAA+E,CAAC;;;;8CAA8J,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IApF32T,MAAM,OAAO,mBAAoB,SAAQ,wBAUxC;KAAG;;;;;;;;;;;IAEJ,MAAM,OAAO,MAAO,SAAQ,WAO1B;KAAG;;;;;;;;;;;;;;;;;;;;;;;;iDAiE61P,CAAC;;;;2CAAgM,CAAC;oCAA8C,CAAC;sCAAgD,CAAC;qCAAkG,CAAC;uCAAiD,CAAC;;;;;;;;;;;8CAAye,CAAC;;;;8CAAoK,CAAC;;;;8CAAsK,CAAC;;;;mDAAkK,CAAC;qDAA+D,CAAC;qDAA+D,CAAC;mDAA6D,CAAC;uDAAiE,CAAC;gEAA0E,CAAC;oDAA8D,CAAC;;8CAA+E,CAAC;;;;8CAA8J,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA/D32T,MAAM,OAAO,MAAO,SAAQ,WAO1B;KAAG;;;;;;;;;IAEL,MAAM,OAAO,MAAO,SAAQ,WAK1B;KAAG;;;;;;;;;;;;;;;;;;;iDAiD61P,CAAC;;;;2CAAgM,CAAC;oCAA8C,CAAC;sCAAgD,CAAC;qCAAkG,CAAC;uCAAiD,CAAC;;;;;;;;;;;8CAAye,CAAC;;;;8CAAoK,CAAC;;;;8CAAsK,CAAC;;;;mDAAkK,CAAC;qDAA+D,CAAC;qDAA+D,CAAC;mDAA6D,CAAC;uDAAiE,CAAC;gEAA0E,CAAC;oDAA8D,CAAC;;8CAA+E,CAAC;;;;8CAA8J,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA/C32T,MAAM,OAAO,cAAe,SAAQ,mBAKlC;KAAG;;;;;;;;;;;;;0BAlBD,CAAA;;;yCAMD,CAAC;;gCAA2E,CAAC;;mCAK7E,CAAA;4BAEiC,CAAC;8BAA4C,CAAC;6BAIhF,CAAC;+BAGW,CAAC;;yBAAmE,CAAC;4BAE/E,CAAN;iCACc,CAAC;4BAET,CAAJ;4BAEO,CAAC;8BAGU,CAAC;yBAAuC,CAAC;0BAAwC,CAAC;;sCAGzF,CAAC;;8BAEQ,CAAC;;sCACwB,CAAC;;gCAMrB,CAAC;;sCACI,CAAA;;6BAEZ,CAAC;;2CAKN,CAAC;6CACC,CAAC;6CAEI,CAAC;2CAEF,CAAC;+CAET,CAAC;wDAGL,CAAC;4CAA0D,CAAC;;sCAAuE,CAAC;;wBAAmE,CAAC;;sCAA0E,CAAC;;4BAAuE,CAAC;;;;;;;;;;;;IAxClW,MAAM,OAAO,UAAW,SAAQ,eAQ9B;KAAG;;;;;;;;;;;;;;;;;8BAgC2tP,CAAC;;;6CAAiI,CAAC;;oCAAmF,CAAC;;uCAA4G,CAAC;gCAA8C,CAAC;kCAAgD,CAAC;iCAAkG,CAAC;mCAAiD,CAAC;;6BAA2E,CAAC;gCAA8C,CAAC;qCAAmD,CAAC;gCAA8C,CAAC;gCAA8C,CAAC;kCAAgD,CAAC;6BAA2C,CAAC;8BAA4C,CAAC;;0CAAkF,CAAC;;kCAAiF,CAAC;;0CAAkF,CAAC;;oCAAmF,CAAC;;0CAAkF,CAAC;;iCAAgF,CAAC;;+CAAiF,CAAC;iDAA+D,CAAC;iDAA+D,CAAC;+CAA6D,CAAC;mDAAiE,CAAC;4DAA0E,CAAC;gDAA8D,CAAC;;0CAA+E,CAAC;;4BAA2E,CAAC;;0CAAkF,CAAC;;gCAA+E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA9B37T,MAAM,OAAO,aAAc,SAAQ,kBASjC;KAAG;;CACN;AAED,eAAO,MAAM,oBAAoB,mCAAoC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,KAAK,SAAS,GAAG,MAAM,CAAC;AACxB,MAAM,MAAM,SAAS,GAAG;IAAE,mBAAmB,EAAE,OAAO,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,UAAU,EAAY,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGnD,yBAAiB,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;IAG5B,MAAM,OAAO,aAAc,SAAQ,kBAQjC;KAAG;;;;;;;;;;;;;;;;;;;;;IAEL,MAAM,OAAO,mBAAoB,SAAQ,wBAUxC;KAAG;;;;;;;;;;;IAEJ,MAAM,OAAO,MAAO,SAAQ,WAO1B;KAAG;;;;;;;;;;;;;;;;;;;;;;;;;IAEL,MAAM,OAAO,MAAO,SAAQ,WAO1B;KAAG;;;;;;;;;IAEL,MAAM,OAAO,MAAO,SAAQ,WAK1B;KAAG;;;;;;;;;;;;;;IAEL,MAAM,OAAO,cAAe,SAAQ,mBAKlC;KAAG;;;;;;;;;;;;;;;;;;;;;;;mCAOE,CAAC;;4BAKC,CAAC;8BAA4C,CAAC;6BAE3C,CAAC;+BAET,CAAJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAdA,MAAM,OAAO,UAAW,SAAQ,eAQ9B;KAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAgCyjhB,CAAC;;gCAA8E,CAAC;kCAAgD,CAAC;iCAAkG,CAAC;mCAAiD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA9Bp1hB,MAAM,OAAO,aAAc,SAAQ,kBASjC;KAAG;;CACN;AAED,eAAO,MAAM,oBAAoB,mCAAoC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,KAAK,SAAS,GAAG,MAAM,CAAC;AACxB,MAAM,MAAM,SAAS,GAAG;IAAE,mBAAmB,EAAE,OAAO,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-thread",
3
- "version": "0.8.3-main.672df60",
3
+ "version": "0.8.3-staging.0fa589b",
4
4
  "description": "DXOS Threads Surface plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -45,40 +45,40 @@
45
45
  "md5-hex": "5.0.0",
46
46
  "react-resize-detector": "^12.0.2",
47
47
  "wavefile": "^11.0.0",
48
- "@dxos/app-framework": "0.8.3-main.672df60",
49
- "@dxos/async": "0.8.3-main.672df60",
50
- "@dxos/context": "0.8.3-main.672df60",
51
- "@dxos/devtools": "0.8.3-main.672df60",
52
- "@dxos/display-name": "0.8.3-main.672df60",
53
- "@dxos/codec-protobuf": "0.8.3-main.672df60",
54
- "@dxos/echo": "0.8.3-main.672df60",
55
- "@dxos/echo-schema": "0.8.3-main.672df60",
56
- "@dxos/keys": "0.8.3-main.672df60",
57
- "@dxos/live-object": "0.8.3-main.672df60",
58
- "@dxos/log": "0.8.3-main.672df60",
59
- "@dxos/local-storage": "0.8.3-main.672df60",
60
- "@dxos/invariant": "0.8.3-main.672df60",
61
- "@dxos/plugin-attention": "0.8.3-main.672df60",
62
- "@dxos/plugin-client": "0.8.3-main.672df60",
63
- "@dxos/plugin-deck": "0.8.3-main.672df60",
64
- "@dxos/plugin-graph": "0.8.3-main.672df60",
65
- "@dxos/plugin-observability": "0.8.3-main.672df60",
66
- "@dxos/plugin-markdown": "0.8.3-main.672df60",
67
- "@dxos/plugin-space": "0.8.3-main.672df60",
68
- "@dxos/protocols": "0.8.3-main.672df60",
69
- "@dxos/react-client": "0.8.3-main.672df60",
70
- "@dxos/react-ui-dnd": "0.8.3-main.672df60",
71
- "@dxos/react-ui-editor": "0.8.3-main.672df60",
72
- "@dxos/react-ui-attention": "0.8.3-main.672df60",
73
- "@dxos/react-ui-menu": "0.8.3-main.672df60",
74
- "@dxos/react-ui-stack": "0.8.3-main.672df60",
75
- "@dxos/react-ui-form": "0.8.3-main.672df60",
76
- "@dxos/react-ui-sfx": "0.8.3-main.672df60",
77
- "@dxos/react-ui-syntax-highlighter": "0.8.3-main.672df60",
78
- "@dxos/react-ui-tabs": "0.8.3-main.672df60",
79
- "@dxos/react-ui-thread": "0.8.3-main.672df60",
80
- "@dxos/schema": "0.8.3-main.672df60",
81
- "@dxos/util": "0.8.3-main.672df60"
48
+ "@dxos/app-framework": "0.8.3-staging.0fa589b",
49
+ "@dxos/async": "0.8.3-staging.0fa589b",
50
+ "@dxos/codec-protobuf": "0.8.3-staging.0fa589b",
51
+ "@dxos/context": "0.8.3-staging.0fa589b",
52
+ "@dxos/display-name": "0.8.3-staging.0fa589b",
53
+ "@dxos/echo-schema": "0.8.3-staging.0fa589b",
54
+ "@dxos/invariant": "0.8.3-staging.0fa589b",
55
+ "@dxos/echo": "0.8.3-staging.0fa589b",
56
+ "@dxos/devtools": "0.8.3-staging.0fa589b",
57
+ "@dxos/live-object": "0.8.3-staging.0fa589b",
58
+ "@dxos/keys": "0.8.3-staging.0fa589b",
59
+ "@dxos/log": "0.8.3-staging.0fa589b",
60
+ "@dxos/local-storage": "0.8.3-staging.0fa589b",
61
+ "@dxos/plugin-client": "0.8.3-staging.0fa589b",
62
+ "@dxos/plugin-attention": "0.8.3-staging.0fa589b",
63
+ "@dxos/plugin-graph": "0.8.3-staging.0fa589b",
64
+ "@dxos/plugin-markdown": "0.8.3-staging.0fa589b",
65
+ "@dxos/plugin-deck": "0.8.3-staging.0fa589b",
66
+ "@dxos/plugin-observability": "0.8.3-staging.0fa589b",
67
+ "@dxos/plugin-space": "0.8.3-staging.0fa589b",
68
+ "@dxos/protocols": "0.8.3-staging.0fa589b",
69
+ "@dxos/react-client": "0.8.3-staging.0fa589b",
70
+ "@dxos/react-ui-dnd": "0.8.3-staging.0fa589b",
71
+ "@dxos/react-ui-attention": "0.8.3-staging.0fa589b",
72
+ "@dxos/react-ui-form": "0.8.3-staging.0fa589b",
73
+ "@dxos/react-ui-editor": "0.8.3-staging.0fa589b",
74
+ "@dxos/react-ui-menu": "0.8.3-staging.0fa589b",
75
+ "@dxos/react-ui-sfx": "0.8.3-staging.0fa589b",
76
+ "@dxos/react-ui-stack": "0.8.3-staging.0fa589b",
77
+ "@dxos/react-ui-tabs": "0.8.3-staging.0fa589b",
78
+ "@dxos/react-ui-thread": "0.8.3-staging.0fa589b",
79
+ "@dxos/schema": "0.8.3-staging.0fa589b",
80
+ "@dxos/react-ui-syntax-highlighter": "0.8.3-staging.0fa589b",
81
+ "@dxos/util": "0.8.3-staging.0fa589b"
82
82
  },
83
83
  "devDependencies": {
84
84
  "@effect-rx/rx-react": "^0.34.1",
@@ -90,11 +90,11 @@
90
90
  "react": "~18.2.0",
91
91
  "react-dom": "~18.2.0",
92
92
  "vite": "5.4.7",
93
- "@dxos/plugin-theme": "0.8.3-main.672df60",
94
- "@dxos/random": "0.8.3-main.672df60",
95
- "@dxos/storybook-utils": "0.8.3-main.672df60",
96
- "@dxos/react-ui": "0.8.3-main.672df60",
97
- "@dxos/react-ui-theme": "0.8.3-main.672df60"
93
+ "@dxos/random": "0.8.3-staging.0fa589b",
94
+ "@dxos/plugin-theme": "0.8.3-staging.0fa589b",
95
+ "@dxos/react-ui": "0.8.3-staging.0fa589b",
96
+ "@dxos/storybook-utils": "0.8.3-staging.0fa589b",
97
+ "@dxos/react-ui-theme": "0.8.3-staging.0fa589b"
98
98
  },
99
99
  "peerDependencies": {
100
100
  "@effect-rx/rx-react": "^0.34.1",
@@ -103,8 +103,8 @@
103
103
  "effect": "^3.13.3",
104
104
  "react": "~18.2.0",
105
105
  "react-dom": "~18.2.0",
106
- "@dxos/react-ui": "0.8.3-main.672df60",
107
- "@dxos/react-ui-theme": "0.8.3-main.672df60"
106
+ "@dxos/react-ui": "0.8.3-staging.0fa589b",
107
+ "@dxos/react-ui-theme": "0.8.3-staging.0fa589b"
108
108
  },
109
109
  "publishConfig": {
110
110
  "access": "public"
@@ -2,12 +2,14 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Effect } from 'effect';
6
+
5
7
  import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';
8
+ import { Ref, Type } from '@dxos/echo';
6
9
  import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
7
10
  import { MarkdownEvents } from '@dxos/plugin-markdown';
8
- import { SpaceCapabilities } from '@dxos/plugin-space';
9
- import { defineObjectForm } from '@dxos/plugin-space/types';
10
- import { type AnyLiveObject, RefArray } from '@dxos/react-client/echo';
11
+ import { SpaceCapabilities, SpaceEvents } from '@dxos/plugin-space';
12
+ import { CollectionAction, defineObjectForm } from '@dxos/plugin-space/types';
11
13
  import { translations as threadTranslations } from '@dxos/react-ui-thread';
12
14
  import { AnchoredTo, DataType } from '@dxos/schema';
13
15
 
@@ -69,7 +71,7 @@ export const ThreadPlugin = () =>
69
71
  id: ThreadType.typename,
70
72
  metadata: {
71
73
  // TODO(wittjosiah): Move out of metadata.
72
- loadReferences: async (thread: ThreadType) => await RefArray.loadAll(thread.messages ?? []),
74
+ loadReferences: async (thread: ThreadType) => await Ref.Array.loadAll(thread.messages ?? []),
73
75
  },
74
76
  }),
75
77
  contributes(Capabilities.Metadata, {
@@ -82,10 +84,10 @@ export const ThreadPlugin = () =>
82
84
  contributes(Capabilities.Metadata, {
83
85
  id: THREAD_ITEM,
84
86
  metadata: {
85
- parse: (item: AnyLiveObject<any>, type: string) => {
87
+ parse: (item: ThreadType, type: string) => {
86
88
  switch (type) {
87
89
  case 'node':
88
- return { id: item.id, label: item.title, data: item };
90
+ return { id: item.id, label: item.name, data: item };
89
91
  case 'object':
90
92
  return item;
91
93
  case 'view-object':
@@ -119,6 +121,27 @@ export const ThreadPlugin = () =>
119
121
  activatesOn: ClientEvents.SetupMigration,
120
122
  activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),
121
123
  }),
124
+ defineModule({
125
+ id: `${meta.id}/module/on-space-created`,
126
+ activatesOn: SpaceEvents.SpaceCreated,
127
+ activate: (context) => {
128
+ const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);
129
+ return contributes(SpaceCapabilities.OnSpaceCreated, async ({ space, rootCollection }) => {
130
+ const program = Effect.gen(function* () {
131
+ const { object: collection } = yield* dispatch(
132
+ createIntent(CollectionAction.CreateQueryCollection, { typename: Type.getTypename(ChannelType) }),
133
+ );
134
+ rootCollection.objects.push(Ref.make(collection));
135
+
136
+ const { object: channel } = yield* dispatch(
137
+ createIntent(ThreadAction.CreateChannel, { name: 'General', spaceId: space.id }),
138
+ );
139
+ space.db.add(channel);
140
+ });
141
+ await Effect.runPromise(program);
142
+ });
143
+ },
144
+ }),
122
145
  defineModule({
123
146
  id: `${meta.id}/module/markdown`,
124
147
  activatesOn: MarkdownEvents.SetupExtensions,
@@ -6,11 +6,11 @@ import { Rx } from '@effect-rx/rx-react';
6
6
  import { Option, pipe } from 'effect';
7
7
 
8
8
  import { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';
9
- import { getTypename, isInstanceOf } from '@dxos/echo-schema';
9
+ import { Obj } from '@dxos/echo';
10
10
  import { AttentionCapabilities } from '@dxos/plugin-attention';
11
11
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
12
12
  import { createExtension, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';
13
- import { fullyQualifiedId, isEchoObject } from '@dxos/react-client/echo';
13
+ import { fullyQualifiedId } from '@dxos/react-client/echo';
14
14
 
15
15
  import { ThreadCapabilities } from './capabilities';
16
16
  import { meta, THREAD_PLUGIN } from '../meta';
@@ -63,7 +63,7 @@ export default (context: PluginContext) => {
63
63
  return Rx.make((get) => {
64
64
  return pipe(
65
65
  get(node),
66
- Option.flatMap((node) => (isInstanceOf(ChannelType, node.data) ? Option.some(node.data) : Option.none())),
66
+ Option.flatMap((node) => (Obj.instanceOf(ChannelType, node.data) ? Option.some(node.data) : Option.none())),
67
67
  Option.map((channel) => {
68
68
  const callManager = context.getCapability(ThreadCapabilities.CallManager);
69
69
  const joined = get(
@@ -99,10 +99,10 @@ export default (context: PluginContext) => {
99
99
  pipe(
100
100
  get(node),
101
101
  Option.flatMap((node) => {
102
- if (!isEchoObject(node.data) || isInstanceOf(ChannelType, node.data)) {
102
+ if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {
103
103
  return Option.none();
104
104
  }
105
- const metadata = resolve(getTypename(node.data)!);
105
+ const metadata = resolve(Obj.getTypename(node.data)!);
106
106
  return typeof metadata.comments === 'string' ? Option.some(node) : Option.none();
107
107
  }),
108
108
  Option.map((node) => [
@@ -129,10 +129,10 @@ export default (context: PluginContext) => {
129
129
  pipe(
130
130
  get(node),
131
131
  Option.flatMap((node) => {
132
- if (!isEchoObject(node.data) || isInstanceOf(ChannelType, node.data)) {
132
+ if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {
133
133
  return Option.none();
134
134
  }
135
- const metadata = resolve(getTypename(node.data)!);
135
+ const metadata = resolve(Obj.getTypename(node.data)!);
136
136
  return typeof metadata.comments === 'string' ? Option.some(node.data) : Option.none();
137
137
  }),
138
138
  Option.map((object) => {
@@ -140,7 +140,7 @@ export default (context: PluginContext) => {
140
140
  const toolbar = get(context.capabilities(ThreadCapabilities.State))[0]?.state.toolbar ?? {};
141
141
  const disabled = get(
142
142
  rxFromSignal(() => {
143
- const metadata = resolve(getTypename(object)!);
143
+ const metadata = resolve(Obj.getTypename(object)!);
144
144
  const selection = selectionManager.getSelection(fullyQualifiedId(object), metadata.selectionMode);
145
145
  const anchor = getAnchor(selection);
146
146
  const invalidSelection = !anchor;
@@ -154,7 +154,7 @@ export default (context: PluginContext) => {
154
154
  id: `${fullyQualifiedId(object)}/comment`,
155
155
  data: () => {
156
156
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
157
- const metadata = resolve(getTypename(object)!);
157
+ const metadata = resolve(Obj.getTypename(object)!);
158
158
  const selection = selectionManager.getSelection(fullyQualifiedId(object));
159
159
  // TODO(wittjosiah): Use presence of selection to determine if the comment should be anchored.
160
160
  // Requires all components which support selection (e.g. table/kanban) to support anchored comments.
@@ -2,15 +2,14 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { batch } from '@preact/signals-core';
6
-
7
5
  import { Capabilities, contributes, createIntent, createResolver, type PluginContext } from '@dxos/app-framework';
8
- import { RelationSourceId, RelationTargetId } from '@dxos/echo-schema';
6
+ import { sleep } from '@dxos/async';
7
+ import { Obj, Relation } from '@dxos/echo';
9
8
  import { invariant } from '@dxos/invariant';
10
9
  import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';
11
10
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
12
11
  import { SpaceAction } from '@dxos/plugin-space/types';
13
- import { live, fullyQualifiedId, getSpace, Ref } from '@dxos/react-client/echo';
12
+ import { fullyQualifiedId, getSpace, Ref } from '@dxos/react-client/echo';
14
13
  import { AnchoredTo, DataType } from '@dxos/schema';
15
14
 
16
15
  import { ThreadCapabilities } from './capabilities';
@@ -23,9 +22,9 @@ export default (context: PluginContext) =>
23
22
  intent: ThreadAction.CreateChannel,
24
23
  resolve: ({ name }) => ({
25
24
  data: {
26
- object: live(ChannelType, {
25
+ object: Obj.make(ChannelType, {
27
26
  name,
28
- defaultThread: Ref.make(live(ThreadType, { messages: [], status: 'active' })),
27
+ defaultThread: Ref.make(Obj.make(ThreadType, { messages: [], status: 'active' })),
29
28
  threads: [],
30
29
  }),
31
30
  },
@@ -34,7 +33,7 @@ export default (context: PluginContext) =>
34
33
  createResolver({
35
34
  intent: ThreadAction.CreateChannelThread,
36
35
  resolve: ({ channel }) => {
37
- const thread = live(ThreadType, { messages: [], status: 'active' });
36
+ const thread = Obj.make(ThreadType, { messages: [], status: 'active' });
38
37
  channel.threads.push(Ref.make(thread));
39
38
  return {
40
39
  data: {
@@ -52,12 +51,13 @@ export default (context: PluginContext) =>
52
51
 
53
52
  const { state } = context.getCapability(ThreadCapabilities.MutableState);
54
53
  const subjectId = fullyQualifiedId(subject);
55
- const thread = live(ThreadType, { name, messages: [], status: 'staged' });
56
- const anchor = live(AnchoredTo, {
57
- [RelationSourceId]: thread,
58
- [RelationTargetId]: subject,
54
+ const thread = Obj.make(ThreadType, { name, messages: [], status: 'staged' });
55
+ const anchor = Relation.make(AnchoredTo, {
56
+ [Relation.Source]: thread,
57
+ [Relation.Target]: subject,
59
58
  anchor: _anchor,
60
59
  });
60
+
61
61
  const draft = state.drafts[subjectId];
62
62
  if (draft) {
63
63
  draft.push(anchor);
@@ -111,13 +111,13 @@ export default (context: PluginContext) =>
111
111
  }),
112
112
  createResolver({
113
113
  intent: ThreadAction.Delete,
114
- resolve: ({ subject, anchor, thread: _thread }, undo) => {
115
- const thread = _thread ?? (anchor[RelationSourceId] as ThreadType);
114
+ resolve: async ({ subject, anchor, thread: _thread }, undo) => {
115
+ const thread = _thread ?? (Relation.getSource(anchor) as ThreadType);
116
116
  const { state } = context.getCapability(ThreadCapabilities.MutableState);
117
117
  const subjectId = fullyQualifiedId(subject);
118
118
  const draft = state.drafts[subjectId];
119
119
  if (draft) {
120
- // Check if we're deleting a draft; if so, remove it.
120
+ // Check if we're deleting a draft; if so, remo ve it.
121
121
  const index = draft.findIndex((a) => a.id === anchor.id);
122
122
  if (index !== -1) {
123
123
  draft.splice(index, 1);
@@ -131,10 +131,10 @@ export default (context: PluginContext) =>
131
131
  }
132
132
 
133
133
  if (!undo) {
134
- batch(() => {
135
- space.db.remove(thread);
136
- space.db.remove(anchor);
137
- });
134
+ // TODO(wittjosiah): Without sleep, rendering crashes at `Relation.setSource(anchor)`.
135
+ space.db.remove(anchor);
136
+ await sleep(100);
137
+ space.db.remove(thread);
138
138
 
139
139
  return {
140
140
  undoable: {
@@ -152,10 +152,10 @@ export default (context: PluginContext) =>
152
152
  ],
153
153
  };
154
154
  } else {
155
- batch(() => {
156
- space.db.add(thread);
157
- space.db.add(anchor);
158
- });
155
+ // TODO(wittjosiah): Without sleep, rendering crashes at `Relation.setSource(anchor)`.
156
+ space.db.add(thread);
157
+ await sleep(100);
158
+ space.db.add(anchor);
159
159
 
160
160
  return {
161
161
  intents: [
@@ -174,19 +174,19 @@ export default (context: PluginContext) =>
174
174
  createResolver({
175
175
  intent: ThreadAction.AddMessage,
176
176
  resolve: ({ anchor, subject, sender, text }) => {
177
- const thread = anchor[RelationSourceId] as ThreadType;
177
+ const thread = Relation.getSource(anchor) as ThreadType;
178
178
  const { state } = context.getCapability(ThreadCapabilities.MutableState);
179
179
  const subjectId = fullyQualifiedId(subject);
180
180
  const space = getSpace(subject);
181
181
  invariant(space, 'Space not found');
182
182
  const intents = [];
183
183
 
184
- const message = live(DataType.Message, {
184
+ const message = Obj.make(DataType.Message, {
185
185
  sender,
186
186
  created: new Date().toISOString(),
187
187
  blocks: [{ type: 'text', text }],
188
188
  // TODO(wittjosiah): Context based on attention.
189
- // context: context ? makeRef(context) : undefined,
189
+ // context: context ? Ref.make(context) : undefined,
190
190
  });
191
191
  thread.messages.push(Ref.make(message));
192
192
 
@@ -236,7 +236,7 @@ export default (context: PluginContext) =>
236
236
  createResolver({
237
237
  intent: ThreadAction.DeleteMessage,
238
238
  resolve: ({ subject, anchor, messageId, message, messageIndex }, undo) => {
239
- const thread = anchor[RelationSourceId] as ThreadType;
239
+ const thread = Relation.getSource(anchor) as ThreadType;
240
240
  const space = getSpace(subject);
241
241
  invariant(space, 'Space not found');
242
242
 
@@ -5,9 +5,9 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';
8
- import { isInstanceOf, type Ref } from '@dxos/echo-schema';
8
+ import { Obj, type Ref } from '@dxos/echo';
9
9
  import { SettingsStore } from '@dxos/local-storage';
10
- import { getSpace, isEchoObject } from '@dxos/react-client/echo';
10
+ import { getSpace } from '@dxos/react-client/echo';
11
11
 
12
12
  import { ThreadCapabilities } from './capabilities';
13
13
  import {
@@ -26,14 +26,14 @@ export default () =>
26
26
  createSurface({
27
27
  id: `${THREAD_PLUGIN}/channel`,
28
28
  role: 'article',
29
- filter: (data): data is { subject: ChannelType } => isInstanceOf(ChannelType, data.subject),
29
+ filter: (data): data is { subject: ChannelType } => Obj.instanceOf(ChannelType, data.subject),
30
30
  component: ({ data: { subject: channel }, role }) => <ChannelContainer channel={channel} role={role} />,
31
31
  }),
32
32
  createSurface({
33
33
  id: `${THREAD_PLUGIN}/chat-companion`,
34
34
  role: 'article',
35
35
  filter: (data): data is { companionTo: ChannelType; subject: 'chat' } =>
36
- isInstanceOf(ChannelType, data.companionTo) && data.subject === 'chat',
36
+ Obj.instanceOf(ChannelType, data.companionTo) && data.subject === 'chat',
37
37
  component: ({ data: { companionTo: channel } }) => {
38
38
  const space = getSpace(channel);
39
39
  const thread = channel.defaultThread.target;
@@ -47,7 +47,7 @@ export default () =>
47
47
  createSurface({
48
48
  id: `${THREAD_PLUGIN}/thread`,
49
49
  role: 'article',
50
- filter: (data): data is { subject: ThreadType } => isInstanceOf(ThreadType, data.subject),
50
+ filter: (data): data is { subject: ThreadType } => Obj.instanceOf(ThreadType, data.subject),
51
51
  component: ({ data: { subject: thread } }) => {
52
52
  const space = getSpace(thread);
53
53
  if (!space || !thread) {
@@ -60,8 +60,8 @@ export default () =>
60
60
  createSurface({
61
61
  id: `${THREAD_PLUGIN}/comments`,
62
62
  role: 'article',
63
- filter: (data): data is { companionTo: { threads: Ref<ThreadType>[] } } =>
64
- data.subject === 'comments' && isEchoObject(data.companionTo),
63
+ filter: (data): data is { companionTo: { threads: Ref.Ref<ThreadType>[] } } =>
64
+ data.subject === 'comments' && Obj.isObject(data.companionTo),
65
65
  // TODO(wittjosiah): This isn't scrolling properly in a plank.
66
66
  component: ({ data }) => <ThreadComplementary subject={data.companionTo} />,
67
67
  }),
@@ -5,10 +5,15 @@
5
5
  import { Capabilities, contributes } from '@dxos/app-framework';
6
6
  import { live } from '@dxos/live-object';
7
7
 
8
- import { THREAD_PLUGIN } from '../meta';
8
+ import { meta } from '../meta';
9
9
  import { type ThreadSettingsProps, ThreadSettingsSchema } from '../types';
10
10
 
11
11
  export default () => {
12
12
  const settings = live<ThreadSettingsProps>({});
13
- return contributes(Capabilities.Settings, { schema: ThreadSettingsSchema, prefix: THREAD_PLUGIN, value: settings });
13
+
14
+ return contributes(Capabilities.Settings, {
15
+ prefix: meta.id,
16
+ schema: ThreadSettingsSchema,
17
+ value: settings,
18
+ });
14
19
  };
@@ -16,7 +16,7 @@ import {
16
16
  toLocalizedString,
17
17
  useTranslation,
18
18
  } from '@dxos/react-ui';
19
- import { hoverableHidden, mx } from '@dxos/react-ui-theme';
19
+ import { groupHoverControlItemWithTransition, mx } from '@dxos/react-ui-theme';
20
20
 
21
21
  import { ThreadCapabilities } from '../../capabilities';
22
22
  import { THREAD_PLUGIN } from '../../meta';
@@ -55,8 +55,8 @@ export const Toolbar = ({
55
55
 
56
56
  // TODO(wittjosiah): In order to use toolbar, need to update to actually use the graph action callbacks directly.
57
57
  return (
58
- <div className={mx('z-20 flex justify-center m-8', autoHideControls && hoverableHidden)}>
59
- <NativeToolbar.Root classNames={['p-2 bg-modalSurface rounded-lg shadow-lg', classNames]}>
58
+ <div className={mx('z-20 flex justify-center m-8', autoHideControls && groupHoverControlItemWithTransition)}>
59
+ <NativeToolbar.Root classNames={['p-2 bg-modalSurface rounded-md shadow-md', classNames]}>
60
60
  <ToggleButton
61
61
  active={call.media.audioEnabled}
62
62
  state={{
@@ -11,7 +11,7 @@ import { log } from '@dxos/log';
11
11
  import { useClient } from '@dxos/react-client';
12
12
  import { fullyQualifiedId, getSpace } from '@dxos/react-client/echo';
13
13
  import { useIdentity } from '@dxos/react-client/halo';
14
- import { useTranslation, Input, ElevationProvider } from '@dxos/react-ui';
14
+ import { useTranslation, Input, ElevationProvider, type ThemedClassName } from '@dxos/react-ui';
15
15
  import { ControlGroup, ControlItemInput, ControlGroupButton } from '@dxos/react-ui-form';
16
16
  import { ToolbarMenu, MenuProvider, createMenuAction, useMenuActions, createMenuItemGroup } from '@dxos/react-ui-menu';
17
17
  import { useSoundEffect } from '@dxos/react-ui-sfx';
@@ -160,23 +160,19 @@ const useChannelToolbarActions = (onJoinCall?: () => void) => {
160
160
  const creator = useMemo(
161
161
  () =>
162
162
  Rx.make(() => {
163
- const nodes = [];
164
- const edges = [];
165
-
166
- const rootGroup = createMenuItemGroup('root', {
167
- label: ['channel toolbar title', { ns: THREAD_PLUGIN }],
168
- });
169
- nodes.push(rootGroup);
170
-
171
- const sortAction = createMenuAction('video-call', () => onJoinCall?.(), {
172
- label: ['start video call label', { ns: THREAD_PLUGIN }],
173
- icon: 'ph--video-camera--regular',
174
- type: 'video-call',
175
- });
176
- nodes.push(sortAction);
177
- edges.push({ source: 'root', target: sortAction.id });
178
-
179
- return { nodes, edges };
163
+ return {
164
+ nodes: [
165
+ createMenuItemGroup('root', {
166
+ label: ['channel toolbar title', { ns: THREAD_PLUGIN }],
167
+ }),
168
+ createMenuAction('video-call', () => onJoinCall?.(), {
169
+ label: ['start video call label', { ns: THREAD_PLUGIN }],
170
+ icon: 'ph--video-camera--regular',
171
+ type: 'video-call',
172
+ }),
173
+ ],
174
+ edges: [{ source: 'root', target: 'video-call' }],
175
+ };
180
176
  }),
181
177
  [],
182
178
  );
@@ -184,19 +180,19 @@ const useChannelToolbarActions = (onJoinCall?: () => void) => {
184
180
  return useMenuActions(creator);
185
181
  };
186
182
 
187
- type ChannelToolbarProps = {
183
+ type ChannelToolbarProps = ThemedClassName<{
188
184
  attendableId?: string;
189
185
  role?: string;
190
186
  onJoinCall?: () => void;
191
- };
187
+ }>;
192
188
 
193
- const ChannelToolbar = ({ attendableId, role, onJoinCall }: ChannelToolbarProps) => {
189
+ const ChannelToolbar = ({ attendableId, role, onJoinCall, classNames }: ChannelToolbarProps) => {
194
190
  const menuProps = useChannelToolbarActions(onJoinCall);
195
191
 
196
192
  return (
197
193
  <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>
198
194
  <MenuProvider {...menuProps} attendableId={attendableId}>
199
- <ToolbarMenu />
195
+ <ToolbarMenu classNames={classNames} />
200
196
  </MenuProvider>
201
197
  </ElevationProvider>
202
198
  );
@@ -9,10 +9,10 @@ import React, { useEffect, useState } from 'react';
9
9
 
10
10
  import { Capabilities, contributes, createSurface, IntentPlugin } from '@dxos/app-framework';
11
11
  import { withPluginManager } from '@dxos/app-framework/testing';
12
- import { makeRef } from '@dxos/live-object';
12
+ import { Obj, Ref } from '@dxos/echo';
13
13
  import { faker } from '@dxos/random';
14
14
  import { useClient } from '@dxos/react-client';
15
- import { live, type Space } from '@dxos/react-client/echo';
15
+ import { type Space } from '@dxos/react-client/echo';
16
16
  import { useIdentity } from '@dxos/react-client/halo';
17
17
  import { withClientProvider } from '@dxos/react-client/testing';
18
18
  import { Thread } from '@dxos/react-ui-thread';
@@ -36,8 +36,8 @@ const Story = () => {
36
36
  setTimeout(async () => {
37
37
  const space = await client.spaces.create();
38
38
  const channel = space.db.add(
39
- live(ChannelType, {
40
- defaultThread: makeRef(live(ThreadType, { messages: [], status: 'active' })),
39
+ Obj.make(ChannelType, {
40
+ defaultThread: Ref.make(Obj.make(ThreadType, { messages: [], status: 'active' })),
41
41
  threads: [],
42
42
  }),
43
43
  );
@@ -4,8 +4,8 @@
4
4
 
5
5
  import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
6
6
 
7
- import { live, makeRef } from '@dxos/live-object';
8
- import { type AnyLiveObject, fullyQualifiedId, type Space, useMembers } from '@dxos/react-client/echo';
7
+ import { Obj, Ref } from '@dxos/echo';
8
+ import { fullyQualifiedId, type Space, useMembers } from '@dxos/react-client/echo';
9
9
  import { useIdentity } from '@dxos/react-client/halo';
10
10
  import { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';
11
11
  import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';
@@ -44,7 +44,7 @@ export const ChatHeading = ({ attendableId }: { attendableId?: string }) => {
44
44
  export type ChatContainerProps = {
45
45
  space: Space;
46
46
  thread: ThreadType;
47
- context?: AnyLiveObject<any>;
47
+ context?: Obj.Any;
48
48
  autoFocusTextbox?: boolean;
49
49
  } & Pick<ThreadProps, 'current'>;
50
50
 
@@ -91,12 +91,12 @@ export const ChatContainer = ({ space, thread, context, current, autoFocusTextbo
91
91
  }
92
92
 
93
93
  thread.messages.push(
94
- makeRef(
95
- live(DataType.Message, {
94
+ Ref.make(
95
+ Obj.make(DataType.Message, {
96
96
  sender: { identityDid: identity.did },
97
97
  created: new Date().toISOString(),
98
98
  blocks: [{ type: 'text', text: messageRef.current }],
99
- properties: context ? { context: makeRef(context) } : undefined,
99
+ properties: context ? { context: Ref.make(context) } : undefined,
100
100
  }),
101
101
  ),
102
102
  );
@@ -5,7 +5,7 @@
5
5
  import { CheckCircle, X } from '@phosphor-icons/react';
6
6
  import React, { useCallback, useMemo, useRef, useState } from 'react';
7
7
 
8
- import { RelationSourceId } from '@dxos/echo-schema';
8
+ import { Relation } from '@dxos/echo';
9
9
  import { RefArray } from '@dxos/live-object';
10
10
  import { fullyQualifiedId, getSpace, useMembers } from '@dxos/react-client/echo';
11
11
  import { useIdentity } from '@dxos/react-client/halo';
@@ -105,7 +105,7 @@ export const CommentContainer = ({
105
105
  const space = getSpace(anchor);
106
106
  const members = useMembers(space?.key);
107
107
  const detached = !anchor.anchor;
108
- const thread = anchor[RelationSourceId] as ThreadType;
108
+ const thread = Relation.getSource(anchor) as ThreadType;
109
109
  const activity = useStatus(space, fullyQualifiedId(thread));
110
110
  const { t } = useTranslation(THREAD_PLUGIN);
111
111
  const threadScrollRef = useRef<HTMLDivElement | null>(null);