@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
@@ -26,17 +26,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var react_root_IAYQ2DBO_exports = {};
30
- __export(react_root_IAYQ2DBO_exports, {
29
+ var react_root_6HHDMULJ_exports = {};
30
+ __export(react_root_6HHDMULJ_exports, {
31
31
  default: () => react_root_default
32
32
  });
33
- module.exports = __toCommonJS(react_root_IAYQ2DBO_exports);
34
- var import_chunk_JLHENFGK = require("./chunk-JLHENFGK.cjs");
35
- var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
36
- var import_chunk_6B3M6XRE = require("./chunk-6B3M6XRE.cjs");
37
- var import_chunk_U7NOIXN6 = require("./chunk-U7NOIXN6.cjs");
33
+ module.exports = __toCommonJS(react_root_6HHDMULJ_exports);
34
+ var import_chunk_IP533AMV = require("./chunk-IP533AMV.cjs");
35
+ var import_chunk_ZGDN3XBR = require("./chunk-ZGDN3XBR.cjs");
36
+ var import_chunk_UM36TPCT = require("./chunk-UM36TPCT.cjs");
37
+ var import_chunk_ERG7G6FF = require("./chunk-ERG7G6FF.cjs");
38
38
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
39
- var import_chunk_4B3PPXA6 = require("./chunk-4B3PPXA6.cjs");
39
+ var import_chunk_E3WBZTTI = require("./chunk-E3WBZTTI.cjs");
40
40
  var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
41
41
  var import_chunk_LR5NENBE = require("./chunk-LR5NENBE.cjs");
42
42
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
@@ -45,7 +45,7 @@ var import_app_framework = require("@dxos/app-framework");
45
45
  var react_root_default = () => {
46
46
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactRoot, {
47
47
  id: import_chunk_HLMCEE5K.THREAD_PLUGIN,
48
- root: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_6B3M6XRE.Call.Audio, null)
48
+ root: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_UM36TPCT.Call.Audio, null)
49
49
  });
50
50
  };
51
- //# sourceMappingURL=react-root-IAYQ2DBO.cjs.map
51
+ //# sourceMappingURL=react-root-6HHDMULJ.cjs.map
@@ -26,31 +26,31 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var react_surface_AVC5VVIS_exports = {};
30
- __export(react_surface_AVC5VVIS_exports, {
29
+ var react_surface_NBH42NN2_exports = {};
30
+ __export(react_surface_NBH42NN2_exports, {
31
31
  default: () => react_surface_default
32
32
  });
33
- module.exports = __toCommonJS(react_surface_AVC5VVIS_exports);
34
- var import_chunk_JLHENFGK = require("./chunk-JLHENFGK.cjs");
35
- var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
36
- var import_chunk_6B3M6XRE = require("./chunk-6B3M6XRE.cjs");
37
- var import_chunk_U7NOIXN6 = require("./chunk-U7NOIXN6.cjs");
33
+ module.exports = __toCommonJS(react_surface_NBH42NN2_exports);
34
+ var import_chunk_IP533AMV = require("./chunk-IP533AMV.cjs");
35
+ var import_chunk_ZGDN3XBR = require("./chunk-ZGDN3XBR.cjs");
36
+ var import_chunk_UM36TPCT = require("./chunk-UM36TPCT.cjs");
37
+ var import_chunk_ERG7G6FF = require("./chunk-ERG7G6FF.cjs");
38
38
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
39
- var import_chunk_4B3PPXA6 = require("./chunk-4B3PPXA6.cjs");
39
+ var import_chunk_E3WBZTTI = require("./chunk-E3WBZTTI.cjs");
40
40
  var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
41
41
  var import_chunk_LR5NENBE = require("./chunk-LR5NENBE.cjs");
42
42
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
43
43
  var import_react = __toESM(require("react"));
44
44
  var import_app_framework = require("@dxos/app-framework");
45
- var import_echo_schema = require("@dxos/echo-schema");
45
+ var import_echo = require("@dxos/echo");
46
46
  var import_local_storage = require("@dxos/local-storage");
47
- var import_echo = require("@dxos/react-client/echo");
47
+ var import_echo2 = require("@dxos/react-client/echo");
48
48
  var react_surface_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactSurface, [
49
49
  (0, import_app_framework.createSurface)({
50
50
  id: `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/channel`,
51
51
  role: "article",
52
- filter: (data) => (0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ChannelType, data.subject),
53
- component: ({ data: { subject: channel }, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_JLHENFGK.ChannelContainer, {
52
+ filter: (data) => import_echo.Obj.instanceOf(import_chunk_ZGDN3XBR.ChannelType, data.subject),
53
+ component: ({ data: { subject: channel }, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_IP533AMV.ChannelContainer, {
54
54
  channel,
55
55
  role
56
56
  })
@@ -58,14 +58,14 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
58
58
  (0, import_app_framework.createSurface)({
59
59
  id: `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/chat-companion`,
60
60
  role: "article",
61
- filter: (data) => (0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ChannelType, data.companionTo) && data.subject === "chat",
61
+ filter: (data) => import_echo.Obj.instanceOf(import_chunk_ZGDN3XBR.ChannelType, data.companionTo) && data.subject === "chat",
62
62
  component: ({ data: { companionTo: channel } }) => {
63
- const space = (0, import_echo.getSpace)(channel);
63
+ const space = (0, import_echo2.getSpace)(channel);
64
64
  const thread = channel.defaultThread.target;
65
65
  if (!space || !thread) {
66
66
  return null;
67
67
  }
68
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_JLHENFGK.ChatContainer, {
68
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_IP533AMV.ChatContainer, {
69
69
  thread,
70
70
  space
71
71
  });
@@ -74,13 +74,13 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
74
74
  (0, import_app_framework.createSurface)({
75
75
  id: `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/thread`,
76
76
  role: "article",
77
- filter: (data) => (0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ThreadType, data.subject),
77
+ filter: (data) => import_echo.Obj.instanceOf(import_chunk_ZGDN3XBR.ThreadType, data.subject),
78
78
  component: ({ data: { subject: thread } }) => {
79
- const space = (0, import_echo.getSpace)(thread);
79
+ const space = (0, import_echo2.getSpace)(thread);
80
80
  if (!space || !thread) {
81
81
  return null;
82
82
  }
83
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_JLHENFGK.ChatContainer, {
83
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_IP533AMV.ChatContainer, {
84
84
  thread,
85
85
  space
86
86
  });
@@ -89,9 +89,9 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
89
89
  (0, import_app_framework.createSurface)({
90
90
  id: `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/comments`,
91
91
  role: "article",
92
- filter: (data) => data.subject === "comments" && (0, import_echo.isEchoObject)(data.companionTo),
92
+ filter: (data) => data.subject === "comments" && import_echo.Obj.isObject(data.companionTo),
93
93
  // TODO(wittjosiah): This isn't scrolling properly in a plank.
94
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_JLHENFGK.ThreadComplementary, {
94
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_IP533AMV.ThreadComplementary, {
95
95
  subject: data.companionTo
96
96
  })
97
97
  }),
@@ -99,24 +99,24 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
99
99
  id: `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/plugin-settings`,
100
100
  role: "article",
101
101
  filter: (data) => data.subject instanceof import_local_storage.SettingsStore && data.subject.prefix === import_chunk_HLMCEE5K.THREAD_PLUGIN,
102
- component: ({ data: { subject } }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_JLHENFGK.ThreadSettings, {
102
+ component: ({ data: { subject } }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_IP533AMV.ThreadSettings, {
103
103
  settings: subject.value
104
104
  })
105
105
  }),
106
106
  (0, import_app_framework.createSurface)({
107
107
  id: `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/assistant`,
108
108
  role: "deck-companion--active-call",
109
- component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_JLHENFGK.CallSidebar, null)
109
+ component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_IP533AMV.CallSidebar, null)
110
110
  }),
111
111
  (0, import_app_framework.createSurface)({
112
112
  id: `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/devtools-overview`,
113
113
  role: "devtools-overview",
114
114
  component: () => {
115
115
  const call = (0, import_app_framework.useCapability)(import_chunk_4YSNVPWU.ThreadCapabilities.CallManager);
116
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_JLHENFGK.CallDebugPanel, {
116
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_IP533AMV.CallDebugPanel, {
117
117
  state: call.state
118
118
  });
119
119
  }
120
120
  })
121
121
  ]);
122
- //# sourceMappingURL=react-surface-AVC5VVIS.cjs.map
122
+ //# sourceMappingURL=react-surface-NBH42NN2.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';\nimport { Obj, type Ref } from '@dxos/echo';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport {\n CallSidebar,\n CallDebugPanel,\n ChannelContainer,\n ThreadComplementary,\n ThreadSettings,\n ChatContainer,\n} from '../components';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadType, type ThreadSettingsProps } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${THREAD_PLUGIN}/channel`,\n role: 'article',\n filter: (data): data is { subject: ChannelType } => Obj.instanceOf(ChannelType, data.subject),\n component: ({ data: { subject: channel }, role }) => <ChannelContainer channel={channel} role={role} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/chat-companion`,\n role: 'article',\n filter: (data): data is { companionTo: ChannelType; subject: 'chat' } =>\n Obj.instanceOf(ChannelType, data.companionTo) && data.subject === 'chat',\n component: ({ data: { companionTo: channel } }) => {\n const space = getSpace(channel);\n const thread = channel.defaultThread.target;\n if (!space || !thread) {\n return null;\n }\n\n return <ChatContainer thread={thread} space={space} />;\n },\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/thread`,\n role: 'article',\n filter: (data): data is { subject: ThreadType } => Obj.instanceOf(ThreadType, data.subject),\n component: ({ data: { subject: thread } }) => {\n const space = getSpace(thread);\n if (!space || !thread) {\n return null;\n }\n\n return <ChatContainer thread={thread} space={space} />;\n },\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/comments`,\n role: 'article',\n filter: (data): data is { companionTo: { threads: Ref.Ref<ThreadType>[] } } =>\n data.subject === 'comments' && Obj.isObject(data.companionTo),\n // TODO(wittjosiah): This isn't scrolling properly in a plank.\n component: ({ data }) => <ThreadComplementary subject={data.companionTo} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<ThreadSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === THREAD_PLUGIN,\n component: ({ data: { subject } }) => <ThreadSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/assistant`,\n role: 'deck-companion--active-call',\n component: () => <CallSidebar />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/devtools-overview`,\n role: 'devtools-overview',\n component: () => {\n const call = useCapability(ThreadCapabilities.CallManager);\n return <CallDebugPanel state={call.state} />;\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAAwE;AACxE,kBAA8B;AAC9B,2BAA8B;AAC9B,IAAAA,eAAyB;AAczB,IAAA,wBAAe,UACbC,kCAAYC,kCAAaC,cAAc;MACrCC,oCAAc;IACZC,IAAI,GAAGC,mCAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA2CC,gBAAIC,WAAWC,mCAAaH,KAAKI,OAAO;IAC5FC,WAAW,CAAC,EAAEL,MAAM,EAAEI,SAASE,QAAO,GAAIR,KAAI,MAAO,6BAAAS,QAAA,cAACC,wCAAAA;MAAiBF;MAAkBR;;EAC3F,CAAA;MACAH,oCAAc;IACZC,IAAI,GAAGC,mCAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPC,gBAAIC,WAAWC,mCAAaH,KAAKS,WAAW,KAAKT,KAAKI,YAAY;IACpEC,WAAW,CAAC,EAAEL,MAAM,EAAES,aAAaH,QAAO,EAAE,MAAE;AAC5C,YAAMI,YAAQC,uBAASL,OAAAA;AACvB,YAAMM,SAASN,QAAQO,cAAcC;AACrC,UAAI,CAACJ,SAAS,CAACE,QAAQ;AACrB,eAAO;MACT;AAEA,aAAO,6BAAAL,QAAA,cAACQ,qCAAAA;QAAcH;QAAgBF;;IACxC;EACF,CAAA;MACAf,oCAAc;IACZC,IAAI,GAAGC,mCAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA0CC,gBAAIC,WAAWc,kCAAYhB,KAAKI,OAAO;IAC1FC,WAAW,CAAC,EAAEL,MAAM,EAAEI,SAASQ,OAAM,EAAE,MAAE;AACvC,YAAMF,YAAQC,uBAASC,MAAAA;AACvB,UAAI,CAACF,SAAS,CAACE,QAAQ;AACrB,eAAO;MACT;AAEA,aAAO,6BAAAL,QAAA,cAACQ,qCAAAA;QAAcH;QAAgBF;;IACxC;EACF,CAAA;MACAf,oCAAc;IACZC,IAAI,GAAGC,mCAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKI,YAAY,cAAcH,gBAAIgB,SAASjB,KAAKS,WAAW;;IAE9DJ,WAAW,CAAC,EAAEL,KAAI,MAAO,6BAAAO,QAAA,cAACW,2CAAAA;MAAoBd,SAASJ,KAAKS;;EAC9D,CAAA;MACAd,oCAAc;IACZC,IAAI,GAAGC,mCAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKI,mBAAmBe,sCAAiBnB,KAAKI,QAAQgB,WAAWvB;IACnEQ,WAAW,CAAC,EAAEL,MAAM,EAAEI,QAAO,EAAE,MAAO,6BAAAG,QAAA,cAACc,sCAAAA;MAAeC,UAAUlB,QAAQmB;;EAC1E,CAAA;MACA5B,oCAAc;IACZC,IAAI,GAAGC,mCAAAA;IACPC,MAAM;IACNO,WAAW,MAAM,6BAAAE,QAAA,cAACiB,mCAAAA,IAAAA;EACpB,CAAA;MACA7B,oCAAc;IACZC,IAAI,GAAGC,mCAAAA;IACPC,MAAM;IACNO,WAAW,MAAA;AACT,YAAMoB,WAAOC,oCAAcC,yCAAmBC,WAAW;AACzD,aAAO,6BAAArB,QAAA,cAACsB,sCAAAA;QAAeC,OAAOL,KAAKK;;IACrC;EACF,CAAA;CACD;",
6
+ "names": ["import_echo", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "THREAD_PLUGIN", "role", "filter", "data", "Obj", "instanceOf", "ChannelType", "subject", "component", "channel", "React", "ChannelContainer", "companionTo", "space", "getSpace", "thread", "defaultThread", "target", "ChatContainer", "ThreadType", "isObject", "ThreadComplementary", "SettingsStore", "prefix", "ThreadSettings", "settings", "value", "CallSidebar", "call", "useCapability", "ThreadCapabilities", "CallManager", "CallDebugPanel", "state"]
7
+ }
@@ -16,21 +16,21 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var settings_H45P5YO2_exports = {};
20
- __export(settings_H45P5YO2_exports, {
19
+ var settings_4LQSFEDK_exports = {};
20
+ __export(settings_4LQSFEDK_exports, {
21
21
  default: () => settings_default
22
22
  });
23
- module.exports = __toCommonJS(settings_H45P5YO2_exports);
24
- var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
23
+ module.exports = __toCommonJS(settings_4LQSFEDK_exports);
24
+ var import_chunk_ZGDN3XBR = require("./chunk-ZGDN3XBR.cjs");
25
25
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
26
26
  var import_app_framework = require("@dxos/app-framework");
27
27
  var import_live_object = require("@dxos/live-object");
28
28
  var settings_default = () => {
29
29
  const settings = (0, import_live_object.live)({});
30
30
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.Settings, {
31
- schema: import_chunk_TKHJVC2C.ThreadSettingsSchema,
32
- prefix: import_chunk_HLMCEE5K.THREAD_PLUGIN,
31
+ prefix: import_chunk_HLMCEE5K.meta.id,
32
+ schema: import_chunk_ZGDN3XBR.ThreadSettingsSchema,
33
33
  value: settings
34
34
  });
35
35
  };
36
- //# sourceMappingURL=settings-H45P5YO2.cjs.map
36
+ //# sourceMappingURL=settings-4LQSFEDK.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/settings.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { live } from '@dxos/live-object';\n\nimport { meta } from '../meta';\nimport { type ThreadSettingsProps, ThreadSettingsSchema } from '../types';\n\nexport default () => {\n const settings = live<ThreadSettingsProps>({});\n\n return contributes(Capabilities.Settings, {\n prefix: meta.id,\n schema: ThreadSettingsSchema,\n value: settings,\n });\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA0C;AAC1C,yBAAqB;AAKrB,IAAA,mBAAe,MAAA;AACb,QAAMA,eAAWC,yBAA0B,CAAC,CAAA;AAE5C,aAAOC,kCAAYC,kCAAaC,UAAU;IACxCC,QAAQC,2BAAKC;IACbC,QAAQC;IACRC,OAAOV;EACT,CAAA;AACF;",
6
+ "names": ["settings", "live", "contributes", "Capabilities", "Settings", "prefix", "meta", "id", "schema", "ThreadSettingsSchema", "value"]
7
+ }
@@ -18,14 +18,14 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var types_exports = {};
20
20
  __export(types_exports, {
21
- ChannelType: () => import_chunk_TKHJVC2C.ChannelType,
22
- ThreadAction: () => import_chunk_TKHJVC2C.ThreadAction,
23
- ThreadSettingsSchema: () => import_chunk_TKHJVC2C.ThreadSettingsSchema,
24
- ThreadStatus: () => import_chunk_TKHJVC2C.ThreadStatus,
25
- ThreadType: () => import_chunk_TKHJVC2C.ThreadType
21
+ ChannelType: () => import_chunk_ZGDN3XBR.ChannelType,
22
+ ThreadAction: () => import_chunk_ZGDN3XBR.ThreadAction,
23
+ ThreadSettingsSchema: () => import_chunk_ZGDN3XBR.ThreadSettingsSchema,
24
+ ThreadStatus: () => import_chunk_ZGDN3XBR.ThreadStatus,
25
+ ThreadType: () => import_chunk_ZGDN3XBR.ThreadType
26
26
  });
27
27
  module.exports = __toCommonJS(types_exports);
28
- var import_chunk_TKHJVC2C = require("../chunk-TKHJVC2C.cjs");
28
+ var import_chunk_ZGDN3XBR = require("../chunk-ZGDN3XBR.cjs");
29
29
  var import_chunk_HLMCEE5K = require("../chunk-HLMCEE5K.cjs");
30
30
  // Annotate the CommonJS export names for ESM import in node:
31
31
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["index.cjs"],
4
- "sourcesContent": ["import {\n ChannelType,\n ThreadAction,\n ThreadSettingsSchema,\n ThreadStatus,\n ThreadType\n} from \"../chunk-TKHJVC2C.cjs\";\nimport \"../chunk-HLMCEE5K.cjs\";\nexport {\n ChannelType,\n ThreadAction,\n ThreadSettingsSchema,\n ThreadStatus,\n ThreadType\n};\n//# sourceMappingURL=index.cjs.map\n"],
4
+ "sourcesContent": ["import {\n ChannelType,\n ThreadAction,\n ThreadSettingsSchema,\n ThreadStatus,\n ThreadType\n} from \"../chunk-ZGDN3XBR.cjs\";\nimport \"../chunk-HLMCEE5K.cjs\";\nexport {\n ChannelType,\n ThreadAction,\n ThreadSettingsSchema,\n ThreadStatus,\n ThreadType\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAMO;AACP,4BAAO;",
6
6
  "names": []
7
7
  }
@@ -2,10 +2,10 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  ChannelContainer,
4
4
  ChannelContainer_default
5
- } from "./chunk-X6AUQDTE.mjs";
6
- import "./chunk-ODUB4GAB.mjs";
5
+ } from "./chunk-2RNIPFDA.mjs";
6
+ import "./chunk-O63QJPQX.mjs";
7
7
  import "./chunk-K4KAUOKT.mjs";
8
- import "./chunk-POKXRTII.mjs";
8
+ import "./chunk-P6RLFCNT.mjs";
9
9
  import "./chunk-O3V45YJP.mjs";
10
10
  import "./chunk-PGRP3O4O.mjs";
11
11
  import "./chunk-ESQC6SYE.mjs";
@@ -13,4 +13,4 @@ export {
13
13
  ChannelContainer,
14
14
  ChannelContainer_default as default
15
15
  };
16
- //# sourceMappingURL=ChannelContainer-KFS2RWWW.mjs.map
16
+ //# sourceMappingURL=ChannelContainer-O4QJII2P.mjs.map
@@ -3,7 +3,7 @@ import {
3
3
  ChatContainer,
4
4
  ChatContainer_default,
5
5
  ChatHeading
6
- } from "./chunk-POKXRTII.mjs";
6
+ } from "./chunk-P6RLFCNT.mjs";
7
7
  import "./chunk-O3V45YJP.mjs";
8
8
  import "./chunk-PGRP3O4O.mjs";
9
9
  import "./chunk-ESQC6SYE.mjs";
@@ -12,4 +12,4 @@ export {
12
12
  ChatHeading,
13
13
  ChatContainer_default as default
14
14
  };
15
- //# sourceMappingURL=ChatContainer-UJYPQMLV.mjs.map
15
+ //# sourceMappingURL=ChatContainer-F6CSADV7.mjs.map
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  ChannelType,
4
4
  ThreadAction
5
- } from "./chunk-J323VQ4P.mjs";
5
+ } from "./chunk-UJMPYKT3.mjs";
6
6
  import {
7
7
  ThreadCapabilities
8
8
  } from "./chunk-K4KAUOKT.mjs";
@@ -18,11 +18,11 @@ import {
18
18
  import { Rx } from "@effect-rx/rx-react";
19
19
  import { Option, pipe } from "effect";
20
20
  import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
21
- import { getTypename, isInstanceOf } from "@dxos/echo-schema";
21
+ import { Obj } from "@dxos/echo";
22
22
  import { AttentionCapabilities } from "@dxos/plugin-attention";
23
23
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
24
24
  import { createExtension, ROOT_ID, rxFromSignal } from "@dxos/plugin-graph";
25
- import { fullyQualifiedId, isEchoObject } from "@dxos/react-client/echo";
25
+ import { fullyQualifiedId } from "@dxos/react-client/echo";
26
26
  var app_graph_builder_default = (context) => {
27
27
  const resolve = (typename) => context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
28
28
  return contributes(Capabilities.AppGraphBuilder, [
@@ -56,7 +56,7 @@ var app_graph_builder_default = (context) => {
56
56
  id: `${THREAD_PLUGIN}/channel-chat-companion`,
57
57
  connector: (node) => {
58
58
  return Rx.make((get) => {
59
- return pipe(get(node), Option.flatMap((node2) => isInstanceOf(ChannelType, node2.data) ? Option.some(node2.data) : Option.none()), Option.map((channel) => {
59
+ return pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(ChannelType, node2.data) ? Option.some(node2.data) : Option.none()), Option.map((channel) => {
60
60
  const callManager = context.getCapability(ThreadCapabilities.CallManager);
61
61
  const joined = get(rxFromSignal(() => callManager.joined && callManager.roomId === fullyQualifiedId(channel)));
62
62
  if (!joined) {
@@ -87,10 +87,10 @@ var app_graph_builder_default = (context) => {
87
87
  createExtension({
88
88
  id: `${meta.id}/comments-companion`,
89
89
  connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
90
- if (!isEchoObject(node2.data) || isInstanceOf(ChannelType, node2.data)) {
90
+ if (!Obj.isObject(node2.data) || Obj.instanceOf(ChannelType, node2.data)) {
91
91
  return Option.none();
92
92
  }
93
- const metadata = resolve(getTypename(node2.data));
93
+ const metadata = resolve(Obj.getTypename(node2.data));
94
94
  return typeof metadata.comments === "string" ? Option.some(node2) : Option.none();
95
95
  }), Option.map((node2) => [
96
96
  {
@@ -117,16 +117,16 @@ var app_graph_builder_default = (context) => {
117
117
  createExtension({
118
118
  id: `${meta.id}/comment-toolbar`,
119
119
  actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
120
- if (!isEchoObject(node2.data) || isInstanceOf(ChannelType, node2.data)) {
120
+ if (!Obj.isObject(node2.data) || Obj.instanceOf(ChannelType, node2.data)) {
121
121
  return Option.none();
122
122
  }
123
- const metadata = resolve(getTypename(node2.data));
123
+ const metadata = resolve(Obj.getTypename(node2.data));
124
124
  return typeof metadata.comments === "string" ? Option.some(node2.data) : Option.none();
125
125
  }), Option.map((object) => {
126
126
  const selectionManager = context.getCapability(AttentionCapabilities.Selection);
127
127
  const toolbar = get(context.capabilities(ThreadCapabilities.State))[0]?.state.toolbar ?? {};
128
128
  const disabled = get(rxFromSignal(() => {
129
- const metadata = resolve(getTypename(object));
129
+ const metadata = resolve(Obj.getTypename(object));
130
130
  const selection = selectionManager.getSelection(fullyQualifiedId(object), metadata.selectionMode);
131
131
  const anchor = getAnchor(selection);
132
132
  const invalidSelection = !anchor;
@@ -138,7 +138,7 @@ var app_graph_builder_default = (context) => {
138
138
  id: `${fullyQualifiedId(object)}/comment`,
139
139
  data: () => {
140
140
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
141
- const metadata = resolve(getTypename(object));
141
+ const metadata = resolve(Obj.getTypename(object));
142
142
  const selection = selectionManager.getSelection(fullyQualifiedId(object));
143
143
  const anchor = metadata.comments === "anchored" ? getAnchor(selection) : Date.now().toString();
144
144
  const name = metadata.getAnchorLabel?.(object, anchor);
@@ -169,4 +169,4 @@ var app_graph_builder_default = (context) => {
169
169
  export {
170
170
  app_graph_builder_default as default
171
171
  };
172
- //# sourceMappingURL=app-graph-builder-I5VMPLE4.mjs.map
172
+ //# sourceMappingURL=app-graph-builder-BAHBHYWI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { meta, THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadAction } from '../types';\nimport { getAnchor } from '../util';\n\nexport default (context: PluginContext) => {\n const resolve = (typename: string) =>\n context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${THREAD_PLUGIN}/active-call`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map((node) => {\n const [call] = get(context.capabilities(ThreadCapabilities.CallManager));\n return get(\n rxFromSignal(() =>\n call?.joined\n ? [\n {\n id: `${node.id}${ATTENDABLE_PATH_SEPARATOR}active-call`,\n type: DECK_COMPANION_TYPE,\n data: null,\n properties: {\n label: ['call panel label', { ns: THREAD_PLUGIN }],\n icon: 'ph--video-conference--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ]\n : [],\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n // TODO(wittjosiah): The channel shouldn't become the companion during a call.\n // Alternative: the call/meeting/thread should be a child node of the channel and that should be opened.\n createExtension({\n id: `${THREAD_PLUGIN}/channel-chat-companion`,\n connector: (node) => {\n return Rx.make((get) => {\n return pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ChannelType, node.data) ? Option.some(node.data) : Option.none())),\n Option.map((channel) => {\n const callManager = context.getCapability(ThreadCapabilities.CallManager);\n const joined = get(\n rxFromSignal(() => callManager.joined && callManager.roomId === fullyQualifiedId(channel)),\n );\n if (!joined) {\n return [];\n }\n\n return [\n {\n id: `${fullyQualifiedId(channel)}${ATTENDABLE_PATH_SEPARATOR}chat`,\n type: PLANK_COMPANION_TYPE,\n data: 'chat',\n properties: {\n label: ['channel companion label', { ns: THREAD_PLUGIN }],\n icon: 'ph--hash--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n );\n });\n },\n }),\n createExtension({\n id: `${meta.id}/comments-companion`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node) : Option.none();\n }),\n Option.map((node) => [\n {\n id: [node.id, 'comments'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'comments',\n properties: {\n label: ['comments label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'hidden',\n position: 'hoist',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/comment-toolbar`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node.data) : Option.none();\n }),\n Option.map((object) => {\n const selectionManager = context.getCapability(AttentionCapabilities.Selection);\n const toolbar = get(context.capabilities(ThreadCapabilities.State))[0]?.state.toolbar ?? {};\n const disabled = get(\n rxFromSignal(() => {\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object), metadata.selectionMode);\n const anchor = getAnchor(selection);\n const invalidSelection = !anchor;\n const overlappingComment = toolbar[fullyQualifiedId(object)];\n return (metadata.comments === 'anchored' && invalidSelection) || overlappingComment;\n }),\n );\n\n return [\n {\n id: `${fullyQualifiedId(object)}/comment`,\n data: () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object));\n // TODO(wittjosiah): Use presence of selection to determine if the comment should be anchored.\n // Requires all components which support selection (e.g. table/kanban) to support anchored comments.\n const anchor = metadata.comments === 'anchored' ? getAnchor(selection) : Date.now().toString();\n const name = metadata.getAnchorLabel?.(object, anchor);\n void dispatch(createIntent(ThreadAction.Create, { anchor, name, subject: object }));\n },\n properties: {\n label: ['add comment label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'toolbar',\n disabled,\n testId: 'thread.comment.add',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "createIntent", "Obj", "AttentionCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "createExtension", "ROOT_ID", "rxFromSignal", "fullyQualifiedId", "context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "THREAD_PLUGIN", "connector", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "call", "capabilities", "ThreadCapabilities", "CallManager", "rxFromSignal", "joined", "ATTENDABLE_PATH_SEPARATOR", "type", "DECK_COMPANION_TYPE", "data", "properties", "label", "ns", "icon", "position", "disposition", "getOrElse", "Obj", "instanceOf", "ChannelType", "channel", "callManager", "getCapability", "roomId", "fullyQualifiedId", "PLANK_COMPANION_TYPE", "meta", "isObject", "getTypename", "comments", "join", "actions", "object", "selectionManager", "AttentionCapabilities", "Selection", "toolbar", "State", "state", "disabled", "selection", "getSelection", "selectionMode", "anchor", "getAnchor", "invalidSelection", "overlappingComment", "dispatchPromise", "dispatch", "IntentDispatcher", "Date", "now", "toString", "name", "getAnchorLabel", "createIntent", "ThreadAction", "Create", "subject", "testId"]
7
+ }
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-K4KAUOKT.mjs";
5
5
  import {
6
6
  ChatContainer_default
7
- } from "./chunk-POKXRTII.mjs";
7
+ } from "./chunk-P6RLFCNT.mjs";
8
8
  import {
9
9
  useDebugMode
10
10
  } from "./chunk-O3V45YJP.mjs";
@@ -40,7 +40,7 @@ import { useAppGraph, useCapability } from "@dxos/app-framework";
40
40
  import { useNode, useActions } from "@dxos/plugin-graph";
41
41
  import { fullyQualifiedId } from "@dxos/react-client/echo";
42
42
  import { Icon, IconButton, Toolbar as NativeToolbar, toLocalizedString, useTranslation } from "@dxos/react-ui";
43
- import { hoverableHidden, mx } from "@dxos/react-ui-theme";
43
+ import { groupHoverControlItemWithTransition, mx } from "@dxos/react-ui-theme";
44
44
  var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJoin, onLeave }) => {
45
45
  var _effect = _useSignals();
46
46
  try {
@@ -52,10 +52,10 @@ var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJ
52
52
  const isScreensharing = call.media.screenshareTrack !== void 0;
53
53
  const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
54
54
  return /* @__PURE__ */ React.createElement("div", {
55
- className: mx("z-20 flex justify-center m-8", autoHideControls && hoverableHidden)
55
+ className: mx("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition)
56
56
  }, /* @__PURE__ */ React.createElement(NativeToolbar.Root, {
57
57
  classNames: [
58
- "p-2 bg-modalSurface rounded-lg shadow-lg",
58
+ "p-2 bg-modalSurface rounded-md shadow-md",
59
59
  classNames
60
60
  ]
61
61
  }, /* @__PURE__ */ React.createElement(ToggleButton, {
@@ -535,7 +535,7 @@ import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking"
535
535
  import React6, { useEffect as useEffect4, useState as useState2 } from "react";
536
536
  import { Icon as Icon2, IconButton as IconButton2, useTranslation as useTranslation2 } from "@dxos/react-ui";
537
537
  import { Waveform } from "@dxos/react-ui-sfx";
538
- import { hoverableHidden as hoverableHidden2, mx as mx5 } from "@dxos/react-ui-theme";
538
+ import { groupHoverControlItemWithTransition as groupHoverControlItemWithTransition2, mx as mx5 } from "@dxos/react-ui-theme";
539
539
  var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinned, screenshare, video, mute, wave, speaking, onClick }) => {
540
540
  var _effect = _useSignals6();
541
541
  try {
@@ -571,7 +571,7 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
571
571
  }, children, onClick && /* @__PURE__ */ React6.createElement("div", {
572
572
  className: "z-10 absolute top-1 right-1 flex"
573
573
  }, /* @__PURE__ */ React6.createElement(IconButton2, {
574
- classNames: mx5("p-1 min-bs-1 rounded", hoverableHidden2),
574
+ classNames: mx5("p-1 min-bs-1 rounded", groupHoverControlItemWithTransition2),
575
575
  iconOnly: true,
576
576
  icon: pinned ? "ph--x--regular" : "ph--arrows-out--regular",
577
577
  size: pinned ? 5 : 4,
@@ -928,40 +928,38 @@ var DisplayNameMissing = () => {
928
928
  };
929
929
  var useChannelToolbarActions = (onJoinCall) => {
930
930
  const creator = useMemo4(() => Rx.make(() => {
931
- const nodes = [];
932
- const edges = [];
933
- const rootGroup = createMenuItemGroup("root", {
934
- label: [
935
- "channel toolbar title",
931
+ return {
932
+ nodes: [
933
+ createMenuItemGroup("root", {
934
+ label: [
935
+ "channel toolbar title",
936
+ {
937
+ ns: THREAD_PLUGIN
938
+ }
939
+ ]
940
+ }),
941
+ createMenuAction("video-call", () => onJoinCall?.(), {
942
+ label: [
943
+ "start video call label",
944
+ {
945
+ ns: THREAD_PLUGIN
946
+ }
947
+ ],
948
+ icon: "ph--video-camera--regular",
949
+ type: "video-call"
950
+ })
951
+ ],
952
+ edges: [
936
953
  {
937
- ns: THREAD_PLUGIN
954
+ source: "root",
955
+ target: "video-call"
938
956
  }
939
957
  ]
940
- });
941
- nodes.push(rootGroup);
942
- const sortAction = createMenuAction("video-call", () => onJoinCall?.(), {
943
- label: [
944
- "start video call label",
945
- {
946
- ns: THREAD_PLUGIN
947
- }
948
- ],
949
- icon: "ph--video-camera--regular",
950
- type: "video-call"
951
- });
952
- nodes.push(sortAction);
953
- edges.push({
954
- source: "root",
955
- target: sortAction.id
956
- });
957
- return {
958
- nodes,
959
- edges
960
958
  };
961
959
  }), []);
962
960
  return useMenuActions(creator);
963
961
  };
964
- var ChannelToolbar = ({ attendableId, role, onJoinCall }) => {
962
+ var ChannelToolbar = ({ attendableId, role, onJoinCall, classNames }) => {
965
963
  var _effect = _useSignals10();
966
964
  try {
967
965
  const menuProps = useChannelToolbarActions(onJoinCall);
@@ -970,7 +968,9 @@ var ChannelToolbar = ({ attendableId, role, onJoinCall }) => {
970
968
  }, /* @__PURE__ */ React10.createElement(MenuProvider, {
971
969
  ...menuProps,
972
970
  attendableId
973
- }, /* @__PURE__ */ React10.createElement(ToolbarMenu, null)));
971
+ }, /* @__PURE__ */ React10.createElement(ToolbarMenu, {
972
+ classNames
973
+ })));
974
974
  } finally {
975
975
  _effect.f();
976
976
  }
@@ -981,4 +981,4 @@ export {
981
981
  ChannelContainer,
982
982
  ChannelContainer_default
983
983
  };
984
- //# sourceMappingURL=chunk-X6AUQDTE.mjs.map
984
+ //# sourceMappingURL=chunk-2RNIPFDA.mjs.map