@dxos/plugin-thread 0.8.2 → 0.8.3-main.7f5a14c

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 (132) hide show
  1. package/dist/lib/browser/{ChannelContainer-LGYSQMC7.mjs → ChannelContainer-KWXUKR5Q.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-CBWNZCXB.mjs} +10 -10
  4. package/dist/lib/browser/app-graph-builder-CBWNZCXB.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-KMVGJG23.mjs → chunk-3EYX6CV7.mjs} +10 -9
  6. package/dist/lib/browser/chunk-3EYX6CV7.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-5PGLGDIP.mjs → chunk-5IRYNA5K.mjs} +6 -6
  8. package/dist/lib/browser/chunk-5IRYNA5K.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-FWBJHKRW.mjs +21 -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/index.mjs +4 -4
  13. package/dist/lib/browser/index.mjs.map +3 -3
  14. package/dist/lib/browser/{intent-resolver-YUYZCTLF.mjs → intent-resolver-I37YU7K3.mjs} +13 -12
  15. package/dist/lib/browser/intent-resolver-I37YU7K3.mjs.map +7 -0
  16. package/dist/lib/browser/{markdown-4EC3OCF2.mjs → markdown-LS3XO2KB.mjs} +5 -4
  17. package/dist/lib/browser/markdown-LS3XO2KB.mjs.map +7 -0
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-root-EECCWHCW.mjs → react-root-KNCKPHGS.mjs} +5 -5
  20. package/dist/lib/browser/{react-surface-5QLZAFDL.mjs → react-surface-ASWIBD7H.mjs} +11 -11
  21. package/dist/lib/browser/react-surface-ASWIBD7H.mjs.map +7 -0
  22. package/dist/lib/browser/{settings-KVBQQSO5.mjs → settings-ZUY7OX24.mjs} +3 -3
  23. package/dist/lib/browser/settings-ZUY7OX24.mjs.map +7 -0
  24. package/dist/lib/node/{ChannelContainer-5EKNEH56.cjs → ChannelContainer-MA5CFESJ.cjs} +9 -9
  25. package/dist/lib/node/{ChannelContainer-5EKNEH56.cjs.map → ChannelContainer-MA5CFESJ.cjs.map} +2 -2
  26. package/dist/lib/node/{ChatContainer-EE3FPSYO.cjs → ChatContainer-GCOM3M56.cjs} +8 -8
  27. package/dist/lib/node/{ChatContainer-EE3FPSYO.cjs.map → ChatContainer-GCOM3M56.cjs.map} +2 -2
  28. package/dist/lib/node/{app-graph-builder-IRE3GYKE.cjs → app-graph-builder-K5OAVYI6.cjs} +19 -19
  29. package/dist/lib/node/app-graph-builder-K5OAVYI6.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-U7NOIXN6.cjs → chunk-3YYSLZE4.cjs} +10 -10
  31. package/dist/lib/node/{chunk-4B3PPXA6.cjs → chunk-E3WBZTTI.cjs} +12 -12
  32. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +7 -0
  33. package/dist/lib/node/{chunk-6B3M6XRE.cjs → chunk-U4SZUERU.cjs} +8 -8
  34. package/dist/lib/node/chunk-U4SZUERU.cjs.map +7 -0
  35. package/dist/lib/node/{chunk-JLHENFGK.cjs → chunk-WCQKISL5.cjs} +32 -31
  36. package/dist/lib/node/chunk-WCQKISL5.cjs.map +7 -0
  37. package/dist/lib/node/index.cjs +11 -11
  38. package/dist/lib/node/index.cjs.map +3 -3
  39. package/dist/lib/node/{intent-resolver-MZ3HADNY.cjs → intent-resolver-2TX6HSOL.cjs} +29 -28
  40. package/dist/lib/node/intent-resolver-2TX6HSOL.cjs.map +7 -0
  41. package/dist/lib/node/{markdown-NJDPXIKD.cjs → markdown-GNFW2XDO.cjs} +21 -20
  42. package/dist/lib/node/markdown-GNFW2XDO.cjs.map +7 -0
  43. package/dist/lib/node/meta.json +1 -1
  44. package/dist/lib/node/{react-root-IAYQ2DBO.cjs → react-root-BKOXG5AC.cjs} +9 -9
  45. package/dist/lib/node/{react-surface-AVC5VVIS.cjs → react-surface-Q5DWX3UO.cjs} +23 -23
  46. package/dist/lib/node/react-surface-Q5DWX3UO.cjs.map +7 -0
  47. package/dist/lib/node/{settings-H45P5YO2.cjs → settings-5O5V2NOE.cjs} +5 -5
  48. package/dist/lib/node/settings-5O5V2NOE.cjs.map +7 -0
  49. package/dist/lib/node-esm/{ChannelContainer-KFS2RWWW.mjs → ChannelContainer-VGVEAUAQ.mjs} +4 -4
  50. package/dist/lib/node-esm/{ChatContainer-UJYPQMLV.mjs → ChatContainer-F6CSADV7.mjs} +2 -2
  51. package/dist/lib/node-esm/{app-graph-builder-I5VMPLE4.mjs → app-graph-builder-UWJQE534.mjs} +10 -10
  52. package/dist/lib/node-esm/app-graph-builder-UWJQE534.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-MNJ3V4XM.mjs → chunk-6EGLDARC.mjs} +10 -9
  54. package/dist/lib/node-esm/chunk-6EGLDARC.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-ODUB4GAB.mjs → chunk-EHDXOE5R.mjs} +7 -7
  56. package/dist/lib/node-esm/{chunk-X6AUQDTE.mjs → chunk-KP2JBSWF.mjs} +6 -6
  57. package/dist/lib/node-esm/chunk-KP2JBSWF.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-POKXRTII.mjs → chunk-P6RLFCNT.mjs} +4 -4
  59. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +7 -0
  60. package/dist/lib/node-esm/index.mjs +4 -4
  61. package/dist/lib/node-esm/index.mjs.map +3 -3
  62. package/dist/lib/node-esm/{intent-resolver-CU22OPAH.mjs → intent-resolver-FHRK77IS.mjs} +13 -12
  63. package/dist/lib/node-esm/intent-resolver-FHRK77IS.mjs.map +7 -0
  64. package/dist/lib/node-esm/{markdown-HRGGO7IA.mjs → markdown-HBGB3UPJ.mjs} +5 -4
  65. package/dist/lib/node-esm/markdown-HBGB3UPJ.mjs.map +7 -0
  66. package/dist/lib/node-esm/meta.json +1 -1
  67. package/dist/lib/node-esm/{react-root-NQMUEI6Z.mjs → react-root-UPDDCRBV.mjs} +5 -5
  68. package/dist/lib/node-esm/{react-surface-Z4X5VLMY.mjs → react-surface-LU3CZDC4.mjs} +11 -11
  69. package/dist/lib/node-esm/react-surface-LU3CZDC4.mjs.map +7 -0
  70. package/dist/lib/node-esm/{settings-IJGUOU3F.mjs → settings-KFEFSAYG.mjs} +3 -3
  71. package/dist/lib/node-esm/settings-KFEFSAYG.mjs.map +7 -0
  72. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  74. package/dist/types/src/components/ChatContainer.d.ts +3 -2
  75. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  76. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  77. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  78. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  79. package/dist/types/src/components/testing.d.ts +2 -103
  80. package/dist/types/src/components/testing.d.ts.map +1 -1
  81. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  82. package/package.json +42 -42
  83. package/src/ThreadPlugin.tsx +4 -4
  84. package/src/capabilities/app-graph-builder.ts +9 -9
  85. package/src/capabilities/intent-resolver.ts +9 -8
  86. package/src/capabilities/react-surface.tsx +7 -7
  87. package/src/capabilities/settings.ts +7 -2
  88. package/src/components/Call/Toolbar.tsx +2 -2
  89. package/src/components/Chat.stories.tsx +4 -4
  90. package/src/components/ChatContainer.tsx +6 -6
  91. package/src/components/Comments.stories.tsx +6 -5
  92. package/src/components/MessageContainer.tsx +20 -20
  93. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
  94. package/src/components/ThreadComplementary.tsx +9 -4
  95. package/src/components/testing.ts +5 -5
  96. package/src/extensions/threads.ts +4 -3
  97. package/src/testing/stories.ts +3 -3
  98. package/dist/lib/browser/app-graph-builder-K3CFBN7V.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-5PGLGDIP.mjs.map +0 -7
  100. package/dist/lib/browser/chunk-CF2MXRCH.mjs +0 -21
  101. package/dist/lib/browser/chunk-G3TS64FP.mjs.map +0 -7
  102. package/dist/lib/browser/chunk-KMVGJG23.mjs.map +0 -7
  103. package/dist/lib/browser/intent-resolver-YUYZCTLF.mjs.map +0 -7
  104. package/dist/lib/browser/markdown-4EC3OCF2.mjs.map +0 -7
  105. package/dist/lib/browser/react-surface-5QLZAFDL.mjs.map +0 -7
  106. package/dist/lib/browser/settings-KVBQQSO5.mjs.map +0 -7
  107. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs.map +0 -7
  108. package/dist/lib/node/chunk-4B3PPXA6.cjs.map +0 -7
  109. package/dist/lib/node/chunk-6B3M6XRE.cjs.map +0 -7
  110. package/dist/lib/node/chunk-JLHENFGK.cjs.map +0 -7
  111. package/dist/lib/node/intent-resolver-MZ3HADNY.cjs.map +0 -7
  112. package/dist/lib/node/markdown-NJDPXIKD.cjs.map +0 -7
  113. package/dist/lib/node/react-surface-AVC5VVIS.cjs.map +0 -7
  114. package/dist/lib/node/settings-H45P5YO2.cjs.map +0 -7
  115. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs.map +0 -7
  116. package/dist/lib/node-esm/chunk-MNJ3V4XM.mjs.map +0 -7
  117. package/dist/lib/node-esm/chunk-POKXRTII.mjs.map +0 -7
  118. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs.map +0 -7
  119. package/dist/lib/node-esm/intent-resolver-CU22OPAH.mjs.map +0 -7
  120. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs.map +0 -7
  121. package/dist/lib/node-esm/react-surface-Z4X5VLMY.mjs.map +0 -7
  122. package/dist/lib/node-esm/settings-IJGUOU3F.mjs.map +0 -7
  123. /package/dist/lib/browser/{ChannelContainer-LGYSQMC7.mjs.map → ChannelContainer-KWXUKR5Q.mjs.map} +0 -0
  124. /package/dist/lib/browser/{ChatContainer-JWRI73OG.mjs.map → ChatContainer-RSOKYAMK.mjs.map} +0 -0
  125. /package/dist/lib/browser/{chunk-CF2MXRCH.mjs.map → chunk-FWBJHKRW.mjs.map} +0 -0
  126. /package/dist/lib/browser/{react-root-EECCWHCW.mjs.map → react-root-KNCKPHGS.mjs.map} +0 -0
  127. /package/dist/lib/node/{chunk-U7NOIXN6.cjs.map → chunk-3YYSLZE4.cjs.map} +0 -0
  128. /package/dist/lib/node/{react-root-IAYQ2DBO.cjs.map → react-root-BKOXG5AC.cjs.map} +0 -0
  129. /package/dist/lib/node-esm/{ChannelContainer-KFS2RWWW.mjs.map → ChannelContainer-VGVEAUAQ.mjs.map} +0 -0
  130. /package/dist/lib/node-esm/{ChatContainer-UJYPQMLV.mjs.map → ChatContainer-F6CSADV7.mjs.map} +0 -0
  131. /package/dist/lib/node-esm/{chunk-ODUB4GAB.mjs.map → chunk-EHDXOE5R.mjs.map} +0 -0
  132. /package/dist/lib/node-esm/{react-root-NQMUEI6Z.mjs.map → react-root-UPDDCRBV.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_BKOXG5AC_exports = {};
30
+ __export(react_root_BKOXG5AC_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");
33
+ module.exports = __toCommonJS(react_root_BKOXG5AC_exports);
34
+ var import_chunk_WCQKISL5 = require("./chunk-WCQKISL5.cjs");
35
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");
36
+ var import_chunk_U4SZUERU = require("./chunk-U4SZUERU.cjs");
37
+ var import_chunk_3YYSLZE4 = require("./chunk-3YYSLZE4.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_U4SZUERU.Call.Audio, null)
49
49
  });
50
50
  };
51
- //# sourceMappingURL=react-root-IAYQ2DBO.cjs.map
51
+ //# sourceMappingURL=react-root-BKOXG5AC.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_Q5DWX3UO_exports = {};
30
+ __export(react_surface_Q5DWX3UO_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");
33
+ module.exports = __toCommonJS(react_surface_Q5DWX3UO_exports);
34
+ var import_chunk_WCQKISL5 = require("./chunk-WCQKISL5.cjs");
35
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");
36
+ var import_chunk_U4SZUERU = require("./chunk-U4SZUERU.cjs");
37
+ var import_chunk_3YYSLZE4 = require("./chunk-3YYSLZE4.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_TKHJVC2C.ChannelType, data.subject),
53
+ component: ({ data: { subject: channel }, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_WCQKISL5.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_TKHJVC2C.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_WCQKISL5.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_TKHJVC2C.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_WCQKISL5.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_WCQKISL5.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_WCQKISL5.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_WCQKISL5.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_WCQKISL5.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-Q5DWX3UO.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,11 +16,11 @@ 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_5O5V2NOE_exports = {};
20
+ __export(settings_5O5V2NOE_exports, {
21
21
  default: () => settings_default
22
22
  });
23
- module.exports = __toCommonJS(settings_H45P5YO2_exports);
23
+ module.exports = __toCommonJS(settings_5O5V2NOE_exports);
24
24
  var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
25
25
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
26
26
  var import_app_framework = require("@dxos/app-framework");
@@ -28,9 +28,9 @@ 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
+ prefix: import_chunk_HLMCEE5K.meta.id,
31
32
  schema: import_chunk_TKHJVC2C.ThreadSettingsSchema,
32
- prefix: import_chunk_HLMCEE5K.THREAD_PLUGIN,
33
33
  value: settings
34
34
  });
35
35
  };
36
- //# sourceMappingURL=settings-H45P5YO2.cjs.map
36
+ //# sourceMappingURL=settings-5O5V2NOE.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
+ }
@@ -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-KP2JBSWF.mjs";
6
+ import "./chunk-EHDXOE5R.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-VGVEAUAQ.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
@@ -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-UWJQE534.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
+ }
@@ -5,14 +5,14 @@ import {
5
5
  } from "./chunk-J323VQ4P.mjs";
6
6
  import {
7
7
  ChannelContainer
8
- } from "./chunk-X6AUQDTE.mjs";
8
+ } from "./chunk-KP2JBSWF.mjs";
9
9
  import {
10
10
  ThreadCapabilities
11
11
  } from "./chunk-K4KAUOKT.mjs";
12
12
  import {
13
13
  MessageContainer,
14
14
  command
15
- } from "./chunk-POKXRTII.mjs";
15
+ } from "./chunk-P6RLFCNT.mjs";
16
16
  import {
17
17
  useStatus
18
18
  } from "./chunk-O3V45YJP.mjs";
@@ -160,7 +160,8 @@ var CallSidebar = () => {
160
160
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
161
161
  import React6, { useCallback as useCallback2, useMemo as useMemo3 } from "react";
162
162
  import { createIntent, LayoutAction, useCapability as useCapability2, useCapabilities, useIntentDispatcher, Capabilities } from "@dxos/app-framework";
163
- import { Filter, getTypename, isInstanceOf, Query, RelationSourceId as RelationSourceId3 } from "@dxos/echo-schema";
163
+ import { Filter, Obj, Query } from "@dxos/echo";
164
+ import { RelationSourceId as RelationSourceId3 } from "@dxos/echo-schema";
164
165
  import { fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
165
166
  import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
166
167
  import { useTranslation as useTranslation4 } from "@dxos/react-ui";
@@ -416,8 +417,8 @@ var ThreadSettings = ({ settings }) => {
416
417
  };
417
418
 
418
419
  // packages/plugins/plugin-thread/src/components/index.ts
419
- var ChannelContainer2 = lazy(() => import("./ChannelContainer-KFS2RWWW.mjs"));
420
- var ChatContainer = lazy(() => import("./ChatContainer-UJYPQMLV.mjs"));
420
+ var ChannelContainer2 = lazy(() => import("./ChannelContainer-VGVEAUAQ.mjs"));
421
+ var ChatContainer = lazy(() => import("./ChatContainer-F6CSADV7.mjs"));
421
422
 
422
423
  // packages/plugins/plugin-thread/src/components/ThreadComplementary.tsx
423
424
  var ThreadComplementary = ({ subject }) => {
@@ -436,13 +437,13 @@ var ThreadComplementary = ({ subject }) => {
436
437
  ]);
437
438
  const drafts = state.drafts[fullyQualifiedId3(subject)];
438
439
  const anchorSorts = useCapabilities(Capabilities.AnchorSort);
439
- const sort = useMemo3(() => anchorSorts.find(({ key }) => key === getTypename(subject))?.sort, [
440
+ const sort = useMemo3(() => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort, [
440
441
  anchorSorts,
441
442
  subject
442
443
  ]);
443
444
  const space = getSpace2(subject);
444
445
  const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));
445
- const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => isInstanceOf(ThreadType, anchor[RelationSourceId3])).concat(drafts ?? []);
446
+ const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj.instanceOf(ThreadType, anchor[RelationSourceId3])).concat(drafts ?? []);
446
447
  const attended = useAttended();
447
448
  const qualifiedSubjectId = fullyQualifiedId3(subject);
448
449
  const handleAttend = useCallback2((anchor) => {
@@ -518,7 +519,7 @@ var ThreadComplementary = ({ subject }) => {
518
519
  orientation: "horizontal",
519
520
  classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin'
520
521
  }, /* @__PURE__ */ React6.createElement(Tabs.Tablist, {
521
- classNames: "p-1 gap-1 bs-[--rail-action] border-be border-separator"
522
+ classNames: "p-1 gap-1 overflow-y-hidden border-be border-subduedSeparator"
522
523
  }, /* @__PURE__ */ React6.createElement(Tabs.Tab, {
523
524
  value: "unresolved",
524
525
  classNames: "text-sm"
@@ -543,4 +544,4 @@ export {
543
544
  ChannelContainer2 as ChannelContainer,
544
545
  ChatContainer
545
546
  };
546
- //# sourceMappingURL=chunk-MNJ3V4XM.mjs.map
547
+ //# sourceMappingURL=chunk-6EGLDARC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/CallDebugPanel.tsx", "../../../src/components/CallSidebar.tsx", "../../../src/components/ThreadComplementary.tsx", "../../../src/components/index.ts", "../../../src/components/CommentContainer.tsx", "../../../src/components/CommentsContainer.tsx", "../../../src/components/ThreadSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { WebRTCStats } from '@peermetrics/webrtc-stats';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { Panel } from '@dxos/devtools';\nimport { log } from '@dxos/log';\nimport { Input, useTranslation, type ThemedClassName } from '@dxos/react-ui';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\n\nimport { type GlobalState } from '../calls';\nimport { THREAD_PLUGIN } from '../meta';\n\nexport type CallDebugPanelProps = ThemedClassName<{\n state?: GlobalState;\n}>;\n\nexport const CallDebugPanel = ({ state }: CallDebugPanelProps) => {\n const users = state?.call?.users;\n const self = state?.call?.self;\n const { t } = useTranslation(THREAD_PLUGIN);\n\n const [open, setOpen] = useState(false);\n const handleToggle = () => setOpen(!open);\n const [showDetailedWebRTCStats, setShowDetailedWebRTCStats] = useState(false);\n const handleShowDetailedWebRTCStats = () => setShowDetailedWebRTCStats(!showDetailedWebRTCStats);\n\n const webrtcStats = useMemo(\n () =>\n new WebRTCStats({\n getStatsInterval: 1000,\n }),\n [],\n );\n\n const [stats, setStats] = useState<Record<string, any>>({});\n useEffect(() => {\n const pc = state?.media.peer?.session?.peerConnection;\n const handleStats = (stats: Record<string, any>) => setStats(stats.data);\n let added = false;\n if (pc && showDetailedWebRTCStats) {\n webrtcStats.addConnection({ pc, peerId: 1, connectionId: '1' });\n webrtcStats.on('stats', handleStats);\n added = true;\n }\n return () => {\n try {\n if (pc && added) {\n webrtcStats.removeConnection({ pc });\n webrtcStats.removeListener('stats', handleStats);\n }\n } catch (error) {\n log.error('error removing webrtc stats', { error, pc, peerId: 1, connectionId: '1' });\n }\n };\n }, [state?.media.peer?.session?.peerConnection, showDetailedWebRTCStats]);\n\n return (\n <Panel\n id='meeting-status'\n icon='ph--video-conference--regular'\n open={open}\n onToggle={handleToggle}\n title={t('meeting status title')}\n maxHeight={false}\n info={\n <div className='flex items-center gap-2'>\n <span title='Joined'>{self?.joined ? 'Active' : 'Inactive'}</span>\n {users?.length !== undefined && <span title='Users'>{users?.length ?? 0} User(s)</span>}\n </div>\n }\n >\n <div className='flex flex-col gap-2 overflow-y-auto'>\n <div className='flex items-row gap-2'>\n <Input.Root>\n <Input.Label classNames={'text-sm'}>{t('show webrtc stats title')}</Input.Label>\n <Input.Checkbox checked={showDetailedWebRTCStats} onCheckedChange={handleShowDetailedWebRTCStats} />\n </Input.Root>\n </div>\n <Json\n classNames='text-sm'\n data={{\n users,\n activities: state?.call?.activities,\n ...(showDetailedWebRTCStats\n ? {\n webrtc: {\n connectionState: state?.media.peer?.session?.peerConnection.connectionState,\n iceConnectionState: state?.media.peer?.session?.peerConnection.iceConnectionState,\n stats,\n },\n }\n : {}),\n tracks: state?.media.peer?.session?.peerConnection.getTransceivers().map((transceiver) => {\n const track =\n transceiver.direction === 'recvonly' ? transceiver.receiver.track : transceiver.sender.track;\n return {\n id: track?.id,\n kind: track?.kind,\n direction: transceiver.direction,\n enabled: track?.enabled,\n muted: track?.muted,\n readyState: track?.readyState,\n settings: track?.getSettings(),\n };\n }),\n callsServiceHistory: state?.media.peer?.history.get(),\n }}\n />\n </div>\n </Panel>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useCapability } from '@dxos/app-framework';\n\nimport { ChannelContainer } from './ChannelContainer';\nimport { ThreadCapabilities } from '../capabilities';\n\nexport const CallSidebar = () => {\n const call = useCapability(ThreadCapabilities.CallManager);\n return <ChannelContainer roomId={call.roomId} />;\n};\n\nexport default CallSidebar;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport {\n createIntent,\n LayoutAction,\n useCapability,\n useCapabilities,\n useIntentDispatcher,\n Capabilities,\n} from '@dxos/app-framework';\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { RelationSourceId } from '@dxos/echo-schema';\nimport { fullyQualifiedId, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { AnchoredTo } from '@dxos/schema';\n\nimport { ThreadCapabilities } from '../capabilities';\nimport { CommentsContainer } from '../components';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ThreadAction, ThreadType } from '../types';\n\nexport const ThreadComplementary = ({ subject }: { subject: any }) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const identity = useIdentity();\n const { t } = useTranslation(THREAD_PLUGIN);\n\n const { state, getViewState } = useCapability(ThreadCapabilities.MutableState);\n const viewState = getViewState(fullyQualifiedId(subject));\n const { showResolvedThreads } = viewState;\n const onChangeViewState = useCallback(\n (nextValue: string) => {\n viewState.showResolvedThreads = nextValue === 'all';\n },\n [viewState],\n );\n const drafts = state.drafts[fullyQualifiedId(subject)];\n\n const anchorSorts = useCapabilities(Capabilities.AnchorSort);\n const sort = useMemo(\n () => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort,\n [anchorSorts, subject],\n );\n\n const space = getSpace(subject);\n const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));\n const anchors = objectsAnchoredTo\n .toSorted((a, b) => sort?.(a, b) ?? 0)\n .filter((anchor) => Obj.instanceOf(ThreadType, anchor[RelationSourceId]))\n .concat(drafts ?? []);\n\n const attended = useAttended();\n const qualifiedSubjectId = fullyQualifiedId(subject);\n\n const handleAttend = useCallback(\n (anchor: AnchoredTo) => {\n const thread = anchor[RelationSourceId] as ThreadType;\n const threadId = fullyQualifiedId(thread);\n\n if (state.current !== threadId) {\n state.current = threadId;\n\n // TODO(wittjosiah): Should this be a thread-specific intent?\n // The layout doesn't know about threads and this working depends on other plugins conditionally handling it.\n // This may be overloading this intent or highjacking its intended purpose.\n void dispatch(\n createIntent(LayoutAction.ScrollIntoView, {\n part: 'current',\n subject: fullyQualifiedId(subject),\n options: {\n cursor: anchor.anchor,\n ref: threadId,\n },\n }),\n );\n }\n },\n [state.current, dispatch, subject],\n );\n\n const handleComment = useCallback(\n async (anchor: AnchoredTo, text: string) => {\n await dispatch(\n createIntent(ThreadAction.AddMessage, { anchor, subject, sender: { identityDid: identity?.did }, text }),\n );\n\n const thread = anchor[RelationSourceId] as ThreadType;\n state.current = fullyQualifiedId(thread);\n },\n [dispatch, identity, subject],\n );\n\n const handleResolve = useCallback(\n (anchor: AnchoredTo) =>\n dispatch(createIntent(ThreadAction.ToggleResolved, { thread: anchor[RelationSourceId] as ThreadType })),\n [dispatch],\n );\n\n const handleThreadDelete = useCallback(\n (anchor: AnchoredTo) => dispatch(createIntent(ThreadAction.Delete, { anchor, subject })),\n [dispatch, subject],\n );\n\n const handleMessageDelete = useCallback(\n (anchor: AnchoredTo, messageId: string) =>\n dispatch(createIntent(ThreadAction.DeleteMessage, { anchor, subject, messageId })),\n [dispatch, subject],\n );\n\n const comments = (\n <CommentsContainer\n anchors={anchors}\n currentId={attended.includes(qualifiedSubjectId) ? state.current : undefined}\n showResolvedThreads={showResolvedThreads}\n onAttend={handleAttend}\n onComment={handleComment}\n onResolve={handleResolve}\n onMessageDelete={handleMessageDelete}\n onThreadDelete={handleThreadDelete}\n />\n );\n\n return (\n <StackItem.Content toolbar>\n <Tabs.Root\n value={showResolvedThreads ? 'all' : 'unresolved'}\n onValueChange={onChangeViewState}\n orientation='horizontal'\n classNames='contents [&_[role=\"tabpanel\"]]:min-bs-0 [&_[role=\"tabpanel\"]]:overflow-y-auto [&_[role=\"tabpanel\"]]:scrollbar-thin'\n >\n {/* TODO(burdon): Should have common container/frags with toolbar. Standardize border-be for all StackItem toolbars. */}\n <Tabs.Tablist classNames='p-1 gap-1 overflow-y-hidden border-be border-subduedSeparator'>\n <Tabs.Tab value='unresolved' classNames='text-sm'>\n {t('show unresolved label')}\n </Tabs.Tab>\n <Tabs.Tab value='all' classNames='text-sm'>\n {t('show all label')}\n </Tabs.Tab>\n </Tabs.Tablist>\n <Tabs.Tabpanel value='all'>{showResolvedThreads && comments}</Tabs.Tabpanel>\n <Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>\n </Tabs.Root>\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const ChannelContainer = lazy(() => import('./ChannelContainer'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n\n// TODO(wittjosiah): Suspense boundary for sidebar?\nexport * from './Call';\nexport * from './CallDebugPanel';\nexport * from './CallSidebar';\nexport * from './CommentContainer';\nexport * from './CommentsContainer';\nexport * from './MessageContainer';\nexport * from './ThreadComplementary';\nexport * from './ThreadSettings';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CheckCircle, X } from '@phosphor-icons/react';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { RelationSourceId } from '@dxos/echo-schema';\nimport { RefArray } from '@dxos/live-object';\nimport { fullyQualifiedId, getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Button, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport {\n MessageTextbox,\n type MessageTextboxProps,\n Thread,\n ThreadFooter,\n ThreadHeading,\n type ThreadProps,\n} from '@dxos/react-ui-thread';\nimport { type AnchoredTo } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadType } from '../types';\nimport { getMessageMetadata } from '../util';\n\nconst sizeClass = getSize(4);\n\n// TODO(thure): #8149\nconst commentControlClassNames = '!p-1 !min-bs-0 transition-opacity';\n\nconst ToggleResolvedButton = ({\n isResolved,\n onResolve,\n}: {\n isResolved: boolean | undefined;\n onResolve: () => void;\n}) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const label = t(isResolved ? 'mark as unresolved label' : 'mark as resolved label');\n return (\n <Tooltip.Trigger asChild content={label}>\n <Button\n variant='ghost'\n data-testid='thread.toggle-resolved'\n onClick={onResolve}\n classNames={[commentControlClassNames, !isResolved && hoverableControlItem]}\n >\n <span className='sr-only'>{label}</span>\n {isResolved ? <CheckCircle className={sizeClass} weight='fill' /> : <CheckCircle className={sizeClass} />}\n </Button>\n </Tooltip.Trigger>\n );\n};\n\nconst DeleteThreadButton = ({ onDelete }: { onDelete: () => void }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const label = t('delete thread label');\n return (\n <Tooltip.Trigger asChild content={label}>\n <Button\n variant='ghost'\n data-testid='thread.delete'\n onClick={onDelete}\n classNames={[commentControlClassNames, hoverableControlItem]}\n >\n <span className='sr-only'>{label}</span>\n <X className={sizeClass} />\n </Button>\n </Tooltip.Trigger>\n );\n};\n\nexport type CommentContainerProps = {\n anchor: AnchoredTo;\n onAttend?: (anchor: AnchoredTo) => void;\n onComment?: (anchor: AnchoredTo, message: string) => void;\n onResolve?: (anchor: AnchoredTo) => void;\n onMessageDelete?: (anchor: AnchoredTo, messageId: string) => void;\n onThreadDelete?: (anchor: AnchoredTo) => void;\n} & Pick<ThreadProps, 'current'>;\n\nexport const CommentContainer = ({\n anchor,\n current,\n onAttend,\n onComment,\n onResolve,\n onMessageDelete,\n onThreadDelete,\n}: CommentContainerProps) => {\n const identity = useIdentity()!;\n const space = getSpace(anchor);\n const members = useMembers(space?.key);\n const detached = !anchor.anchor;\n const thread = anchor[RelationSourceId] as ThreadType;\n const activity = useStatus(space, fullyQualifiedId(thread));\n const { t } = useTranslation(THREAD_PLUGIN);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(fullyQualifiedId(thread), identity);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: (text) => (messageRef.current = text) }),\n command,\n ],\n [_count],\n );\n\n // TODO(thure): Factor out.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n const handleAttend = useCallback(() => onAttend?.(anchor), [onAttend, anchor]);\n const handleResolve = useCallback(() => onResolve?.(anchor), [onResolve, anchor]);\n const handleMessageDelete = useCallback((id: string) => onMessageDelete?.(anchor, id), [onMessageDelete, anchor]);\n const handleThreadDelete = useCallback(() => onThreadDelete?.(anchor), [onThreadDelete, anchor]);\n\n const handleComment: MessageTextboxProps['onSend'] = useCallback(() => {\n if (!messageRef.current) {\n return false;\n }\n\n onComment?.(anchor, messageRef.current);\n messageRef.current = '';\n scrollToEnd('instant');\n rerenderEditor();\n\n return true;\n }, [anchor, identity]);\n\n return (\n <Thread onClickCapture={handleAttend} onFocusCapture={handleAttend} current={current} id={fullyQualifiedId(thread)}>\n <div\n role='none'\n className={mx(\n 'col-span-2 grid grid-cols-[var(--rail-size)_1fr_min-content]',\n hoverableControls,\n hoverableFocusedWithinControls,\n )}\n >\n {detached ? (\n <Tooltip.Trigger asChild content={t('detached thread label')} side='top'>\n <ThreadHeading detached>{thread.name}</ThreadHeading>\n </Tooltip.Trigger>\n ) : (\n <ThreadHeading>{thread.name}</ThreadHeading>\n )}\n <div className='flex flex-row items-center pli-1'>\n {thread.status === 'staged' && <Tag palette='neutral'>{t('draft button')}</Tag>}\n {onResolve && !(thread?.status === 'staged') && (\n <ToggleResolvedButton isResolved={thread?.status === 'resolved'} onResolve={handleResolve} />\n )}\n {onThreadDelete && <DeleteThreadButton onDelete={handleThreadDelete} />}\n </div>\n </div>\n {/** TODO(dmaretskyi): How's `thread.messages` undefined? */}\n {RefArray.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => (\n <MessageContainer\n key={message.id}\n editable\n message={message}\n members={members}\n onDelete={handleMessageDelete}\n />\n ))}\n {/*\n TODO(wittjosiah): Can't autofocus this generally.\n There can be multiple threads with inputs and they can't all be focused.\n Also, it steals focus from documents when first rendered.\n Need to find a way to autofocus in one scenario only: when a new thread is created.\n */}\n <MessageTextbox extensions={extensions} onSend={handleComment} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n </Thread>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { ChatText } from '@phosphor-icons/react';\nimport React, { useEffect } from 'react';\n\nimport { RelationSourceId } from '@dxos/echo-schema';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { useTranslation, Trans } from '@dxos/react-ui';\nimport { descriptionMessage, mx } from '@dxos/react-ui-theme';\nimport { type AnchoredTo } from '@dxos/schema';\n\nimport { CommentContainer, type CommentContainerProps } from './CommentContainer';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadType } from '../types';\n\nexport type ThreadsContainerProps = Omit<CommentContainerProps, 'anchor' | 'current'> & {\n anchors: AnchoredTo[];\n currentId?: string;\n showResolvedThreads?: boolean;\n};\n\n/**\n * Comment threads.\n */\nexport const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: ThreadsContainerProps) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): There seems to be a race between thread and anchor being deleted.\n const filteredAnchors = showResolvedThreads\n ? anchors.filter((anchor) => !!anchor[RelationSourceId])\n : anchors.filter((anchor) => {\n const thread = anchor[RelationSourceId];\n return thread && thread.status !== 'resolved';\n });\n\n useEffect(() => {\n if (currentId) {\n document.getElementById(currentId)?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n }, [currentId]);\n\n return (\n <>\n {filteredAnchors.length > 0 ? (\n filteredAnchors.map((anchor) => {\n const thread = anchor[RelationSourceId] as ThreadType;\n const threadId = fullyQualifiedId(thread);\n return <CommentContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;\n })\n ) : (\n <div role='alert' className={mx(descriptionMessage, 'place-self-center rounded-lg text-center m-4')}>\n <h2 className='mbe-2 font-medium text-baseText'>{t('no comments title')}</h2>\n <p>\n <Trans\n {...{\n t,\n i18nKey: 'no comments message',\n components: {\n commentIcon: <ChatText className='inline-block' />,\n },\n }}\n />\n </p>\n </div>\n )}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\n// import { useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer } from '@dxos/react-ui-form';\n\n// import { THREAD_PLUGIN } from '../meta';\nimport type { ThreadSettingsProps } from '../types';\n\nexport const ThreadSettings = ({ settings }: { settings: ThreadSettingsProps }) => {\n // const { t } = useTranslation(THREAD_PLUGIN);\n\n return <DeprecatedFormContainer></DeprecatedFormContainer>;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,mBAAmB;AAC5B,OAAOC,SAASC,WAAWC,SAASC,gBAAgB;AAEpD,SAASC,aAAa;AACtB,SAASC,WAAW;AACpB,SAASC,OAAOC,sBAA4C;AAC5D,SAASC,YAAY;;AASd,IAAMC,iBAAiB,CAAC,EAAEC,MAAK,MAAuB;;;AAC3D,UAAMC,QAAQD,OAAOE,MAAMD;AAC3B,UAAME,OAAOH,OAAOE,MAAMC;AAC1B,UAAM,EAAEC,EAAC,IAAKC,eAAeC,aAAAA;AAE7B,UAAM,CAACC,MAAMC,OAAAA,IAAWC,SAAS,KAAA;AACjC,UAAMC,eAAe,MAAMF,QAAQ,CAACD,IAAAA;AACpC,UAAM,CAACI,yBAAyBC,0BAAAA,IAA8BH,SAAS,KAAA;AACvE,UAAMI,gCAAgC,MAAMD,2BAA2B,CAACD,uBAAAA;AAExE,UAAMG,cAAcC,QAClB,MACE,IAAIC,YAAY;MACdC,kBAAkB;IACpB,CAAA,GACF,CAAA,CAAE;AAGJ,UAAM,CAACC,OAAOC,QAAAA,IAAYV,SAA8B,CAAC,CAAA;AACzDW,cAAU,MAAA;AACR,YAAMC,KAAKrB,OAAOsB,MAAMC,MAAMC,SAASC;AACvC,YAAMC,cAAc,CAACR,WAA+BC,SAASD,OAAMS,IAAI;AACvE,UAAIC,QAAQ;AACZ,UAAIP,MAAMV,yBAAyB;AACjCG,oBAAYe,cAAc;UAAER;UAAIS,QAAQ;UAAGC,cAAc;QAAI,CAAA;AAC7DjB,oBAAYkB,GAAG,SAASN,WAAAA;AACxBE,gBAAQ;MACV;AACA,aAAO,MAAA;AACL,YAAI;AACF,cAAIP,MAAMO,OAAO;AACfd,wBAAYmB,iBAAiB;cAAEZ;YAAG,CAAA;AAClCP,wBAAYoB,eAAe,SAASR,WAAAA;UACtC;QACF,SAASS,OAAO;AACdC,cAAID,MAAM,+BAA+B;YAAEA;YAAOd;YAAIS,QAAQ;YAAGC,cAAc;UAAI,GAAA;;;;;;QACrF;MACF;IACF,GAAG;MAAC/B,OAAOsB,MAAMC,MAAMC,SAASC;MAAgBd;KAAwB;AAExE,WACE,sBAAA,cAAC0B,OAAAA;MACCC,IAAG;MACHC,MAAK;MACLhC;MACAiC,UAAU9B;MACV+B,OAAOrC,EAAE,sBAAA;MACTsC,WAAW;MACXC,MACE,sBAAA,cAACC,OAAAA;QAAIC,WAAU;SACb,sBAAA,cAACC,QAAAA;QAAKL,OAAM;SAAUtC,MAAM4C,SAAS,WAAW,UAAA,GAC/C9C,OAAO+C,WAAWC,UAAa,sBAAA,cAACH,QAAAA;QAAKL,OAAM;SAASxC,OAAO+C,UAAU,GAAE,UAAA,CAAA;OAI5E,sBAAA,cAACJ,OAAAA;MAAIC,WAAU;OACb,sBAAA,cAACD,OAAAA;MAAIC,WAAU;OACb,sBAAA,cAACK,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAME,OAAK;MAACC,YAAY;OAAYjD,EAAE,yBAAA,CAAA,GACvC,sBAAA,cAAC8C,MAAMI,UAAQ;MAACC,SAAS5C;MAAyB6C,iBAAiB3C;UAGvE,sBAAA,cAAC4C,MAAAA;MACCJ,YAAW;MACX1B,MAAM;QACJ1B;QACAyD,YAAY1D,OAAOE,MAAMwD;QACzB,GAAI/C,0BACA;UACEgD,QAAQ;YACNC,iBAAiB5D,OAAOsB,MAAMC,MAAMC,SAASC,eAAemC;YAC5DC,oBAAoB7D,OAAOsB,MAAMC,MAAMC,SAASC,eAAeoC;YAC/D3C;UACF;QACF,IACA,CAAC;QACL4C,QAAQ9D,OAAOsB,MAAMC,MAAMC,SAASC,eAAesC,gBAAAA,EAAkBC,IAAI,CAACC,gBAAAA;AACxE,gBAAMC,QACJD,YAAYE,cAAc,aAAaF,YAAYG,SAASF,QAAQD,YAAYI,OAAOH;AACzF,iBAAO;YACL5B,IAAI4B,OAAO5B;YACXgC,MAAMJ,OAAOI;YACbH,WAAWF,YAAYE;YACvBI,SAASL,OAAOK;YAChBC,OAAON,OAAOM;YACdC,YAAYP,OAAOO;YACnBC,UAAUR,OAAOS,YAAAA;UACnB;QACF,CAAA;QACAC,qBAAqB5E,OAAOsB,MAAMC,MAAMsD,QAAQC,IAAAA;MAClD;;;;;AAKV;;;;AC9GA,OAAOC,YAAW;AAElB,SAASC,qBAAqB;AAKvB,IAAMC,cAAc,MAAA;;;AACzB,UAAMC,OAAOC,cAAcC,mBAAmBC,WAAW;AACzD,WAAO,gBAAAC,OAAA,cAACC,kBAAAA;MAAiBC,QAAQN,KAAKM;;;;;AACxC;;;;ACVA,OAAOC,UAASC,eAAAA,cAAaC,WAAAA,gBAAe;AAE5C,SACEC,cACAC,cACAC,iBAAAA,gBACAC,iBACAC,qBACAC,oBACK;AACP,SAASC,QAAQC,KAAKC,aAAa;AACnC,SAASC,oBAAAA,yBAAwB;AACjC,SAASC,oBAAAA,mBAAkBC,YAAAA,WAAUC,gBAAgB;AACrD,SAASC,eAAAA,oBAAmB;AAC5B,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,mBAAmB;AAC5B,SAASC,iBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,kBAAkB;;;AClB3B,SAASC,YAAY;;;;ACArB,SAASC,aAAaC,SAAS;AAC/B,OAAOC,UAASC,aAAaC,WAAAA,UAASC,QAAQC,YAAAA,iBAAgB;AAE9D,SAASC,wBAAwB;AACjC,SAASC,gBAAgB;AACzB,SAASC,kBAAkBC,UAAUC,kBAAkB;AACvD,SAASC,mBAAmB;AAC5B,SAASC,QAAQC,KAAKC,SAASC,iBAAiBC,kBAAAA,uBAAsB;AACtE,SAASC,uBAAuBC,uBAAuBC,gBAAgB;AACvE,SACEC,SACAC,sBACAC,mBACAC,gCACAC,UACK;AACP,SACEC,gBAEAC,QACAC,cACAC,qBAEK;AAEP,SAASC,qBAAqB;AAS9B,IAAMC,YAAYC,QAAQ,CAAA;AAG1B,IAAMC,2BAA2B;AAEjC,IAAMC,uBAAuB,CAAC,EAC5BC,YACAC,UAAS,MAIV;;;AACC,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,aAAAA;AAC7B,UAAMC,QAAQH,EAAEF,aAAa,6BAA6B,wBAAA;AAC1D,WACE,gBAAAM,OAAA,cAACC,QAAQC,SAAO;MAACC,SAAAA;MAAQC,SAASL;OAChC,gBAAAC,OAAA,cAACK,QAAAA;MACCC,SAAQ;MACRC,eAAY;MACZC,SAASb;MACTc,YAAY;QAACjB;QAA0B,CAACE,cAAcgB;;OAEtD,gBAAAV,OAAA,cAACW,QAAAA;MAAKC,WAAU;OAAWb,KAAAA,GAC1BL,aAAa,gBAAAM,OAAA,cAACa,aAAAA;MAAYD,WAAWtB;MAAWwB,QAAO;SAAY,gBAAAd,OAAA,cAACa,aAAAA;MAAYD,WAAWtB;;;;;AAIpG;AAEA,IAAMyB,qBAAqB,CAAC,EAAEC,SAAQ,MAA4B;;;AAChE,UAAM,EAAEpB,EAAC,IAAKC,gBAAeC,aAAAA;AAC7B,UAAMC,QAAQH,EAAE,qBAAA;AAChB,WACE,gBAAAI,OAAA,cAACC,QAAQC,SAAO;MAACC,SAAAA;MAAQC,SAASL;OAChC,gBAAAC,OAAA,cAACK,QAAAA;MACCC,SAAQ;MACRC,eAAY;MACZC,SAASQ;MACTP,YAAY;QAACjB;QAA0BkB;;OAEvC,gBAAAV,OAAA,cAACW,QAAAA;MAAKC,WAAU;OAAWb,KAAAA,GAC3B,gBAAAC,OAAA,cAACiB,GAAAA;MAAEL,WAAWtB;;;;;AAItB;AAWO,IAAM4B,mBAAmB,CAAC,EAC/BC,QACAC,SACAC,UACAC,WACA3B,WACA4B,iBACAC,eAAc,MACQ;;;AACtB,UAAMC,WAAWC,YAAAA;AACjB,UAAMC,QAAQC,SAAST,MAAAA;AACvB,UAAMU,UAAUC,WAAWH,OAAOI,GAAAA;AAClC,UAAMC,WAAW,CAACb,OAAOA;AACzB,UAAMc,SAASd,OAAOe,gBAAAA;AACtB,UAAMC,WAAWC,UAAUT,OAAOU,iBAAiBJ,MAAAA,CAAAA;AACnD,UAAM,EAAErC,EAAC,IAAKC,gBAAeC,aAAAA;AAC7B,UAAMwC,kBAAkBC,OAA8B,IAAA;AACtD,UAAM,EAAEC,UAAS,IAAKC,gBAAAA;AAEtB,UAAMC,kBAAkBC,mBAAmBN,iBAAiBJ,MAAAA,GAASR,QAAAA;AAErE,UAAM,CAACmB,QAAQC,SAAAA,IAAaC,UAAS,CAAA;AACrC,UAAMC,iBAAiB,MAAMF,UAAU,CAACG,UAAUA,QAAQ,CAAA;AAC1D,UAAMC,aAAaV,OAAO,EAAA;AAC1B,UAAMW,aAAaC,SACjB,MAAM;MACJC,sBAAsB;QAAEC,aAAazD,EAAE,qBAAA;MAAuB,CAAA;MAC9D0D,sBAAsB;QAAEd;MAAU,CAAA;MAClCe,SAAS;QAAEC,UAAU,CAACC,SAAUR,WAAW7B,UAAUqC;MAAM,CAAA;MAC3DC;OAEF;MAACd;KAAO;AAIV,UAAMe,cAAc,CAACC,aACnBC,WAAW,MAAMvB,gBAAgBlB,SAAS0C,eAAe;MAAEF;MAAUG,OAAO;IAAM,CAAA,GAAI,EAAA;AAExF,UAAMC,eAAeC,YAAY,MAAM5C,WAAWF,MAAAA,GAAS;MAACE;MAAUF;KAAO;AAC7E,UAAM+C,gBAAgBD,YAAY,MAAMtE,YAAYwB,MAAAA,GAAS;MAACxB;MAAWwB;KAAO;AAChF,UAAMgD,sBAAsBF,YAAY,CAACG,OAAe7C,kBAAkBJ,QAAQiD,EAAAA,GAAK;MAAC7C;MAAiBJ;KAAO;AAChH,UAAMkD,qBAAqBJ,YAAY,MAAMzC,iBAAiBL,MAAAA,GAAS;MAACK;MAAgBL;KAAO;AAE/F,UAAMmD,gBAA+CL,YAAY,MAAA;AAC/D,UAAI,CAAChB,WAAW7B,SAAS;AACvB,eAAO;MACT;AAEAE,kBAAYH,QAAQ8B,WAAW7B,OAAO;AACtC6B,iBAAW7B,UAAU;AACrBuC,kBAAY,SAAA;AACZZ,qBAAAA;AAEA,aAAO;IACT,GAAG;MAAC5B;MAAQM;KAAS;AAErB,WACE,gBAAAzB,OAAA,cAACuE,QAAAA;MAAOC,gBAAgBR;MAAcS,gBAAgBT;MAAc5C;MAAkBgD,IAAI/B,iBAAiBJ,MAAAA;OACzG,gBAAAjC,OAAA,cAAC0E,OAAAA;MACCC,MAAK;MACL/D,WAAWgE,GACT,gEACAC,mBACAC,8BAAAA;OAGD9C,WACC,gBAAAhC,OAAA,cAACC,QAAQC,SAAO;MAACC,SAAAA;MAAQC,SAASR,EAAE,uBAAA;MAA0BmF,MAAK;OACjE,gBAAA/E,OAAA,cAACgF,eAAAA;MAAchD,UAAAA;OAAUC,OAAOgD,IAAI,CAAA,IAGtC,gBAAAjF,OAAA,cAACgF,eAAAA,MAAe/C,OAAOgD,IAAI,GAE7B,gBAAAjF,OAAA,cAAC0E,OAAAA;MAAI9D,WAAU;OACZqB,OAAOiD,WAAW,YAAY,gBAAAlF,OAAA,cAACmF,KAAAA;MAAIC,SAAQ;OAAWxF,EAAE,cAAA,CAAA,GACxDD,aAAa,EAAEsC,QAAQiD,WAAW,aACjC,gBAAAlF,OAAA,cAACP,sBAAAA;MAAqBC,YAAYuC,QAAQiD,WAAW;MAAYvF,WAAWuE;QAE7E1C,kBAAkB,gBAAAxB,OAAA,cAACe,oBAAAA;MAAmBC,UAAUqD;UAIpDgB,SAASC,QAAQrD,OAAOsD,UAAUC,OAAOC,aAAAA,KAAkB,CAAA,CAAE,EAAEC,IAAI,CAACC,YACnE,gBAAA3F,OAAA,cAAC4F,kBAAAA;MACC7D,KAAK4D,QAAQvB;MACbyB,UAAAA;MACAF;MACA9D;MACAb,UAAUmD;SASd,gBAAAnE,OAAA,cAAC8F,gBAAAA;MAAe5C;MAAwB6C,QAAQzB;MAAgB,GAAG5B;QACnE,gBAAA1C,OAAA,cAACgG,cAAAA;MAAa7D;OAAqBvC,EAAE,kBAAA,CAAA,GAErC,gBAAAI,OAAA,cAAC0E,OAAAA;MAAIC,MAAK;MAAO/D,WAAU;MAAgBqF,KAAK3D;;;;;AAGtD;;;;ACjMA,SAAS4D,gBAAgB;AACzB,OAAOC,UAASC,aAAAA,kBAAiB;AAEjC,SAASC,oBAAAA,yBAAwB;AACjC,SAASC,oBAAAA,yBAAwB;AACjC,SAASC,kBAAAA,iBAAgBC,aAAa;AACtC,SAASC,oBAAoBC,MAAAA,WAAU;AAgBhC,IAAMC,oBAAoB,CAAC,EAAEC,SAASC,WAAWC,qBAAqB,GAAGC,MAAAA,MAA8B;;;AAC5G,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,aAAAA;AAE7B,UAAMC,kBAAkBL,sBACpBF,QAAQQ,OAAO,CAACC,WAAW,CAAC,CAACA,OAAOC,iBAAAA,CAAiB,IACrDV,QAAQQ,OAAO,CAACC,WAAAA;AACd,YAAME,SAASF,OAAOC,iBAAAA;AACtB,aAAOC,UAAUA,OAAOC,WAAW;IACrC,CAAA;AAEJC,IAAAA,WAAU,MAAA;AACR,UAAIZ,WAAW;AACba,iBAASC,eAAed,SAAAA,GAAYe,eAAe;UAAEC,UAAU;UAAUC,OAAO;QAAM,CAAA;MACxF;IACF,GAAG;MAACjB;KAAU;AAEd,WACE,gBAAAkB,OAAA,cAAAA,OAAA,UAAA,MACGZ,gBAAgBa,SAAS,IACxBb,gBAAgBc,IAAI,CAACZ,WAAAA;AACnB,YAAME,SAASF,OAAOC,iBAAAA;AACtB,YAAMY,WAAWC,kBAAiBZ,MAAAA;AAClC,aAAO,gBAAAQ,OAAA,cAACK,kBAAAA;QAAiBC,KAAKH;QAAUb;QAAgBiB,SAASzB,cAAcqB;QAAW,GAAGnB;;IAC/F,CAAA,IAEA,gBAAAgB,OAAA,cAACQ,OAAAA;MAAIC,MAAK;MAAQC,WAAWC,IAAGC,oBAAoB,8CAAA;OAClD,gBAAAZ,OAAA,cAACa,MAAAA;MAAGH,WAAU;OAAmCzB,EAAE,mBAAA,CAAA,GACnD,gBAAAe,OAAA,cAACc,KAAAA,MACC,gBAAAd,OAAA,cAACe,OACK;MACF9B;MACA+B,SAAS;MACTC,YAAY;QACVC,aAAa,gBAAAlB,OAAA,cAACmB,UAAAA;UAAST,WAAU;;MACnC;IACF,CAAA,CAAA,CAAA,CAAA;;;;AAOd;;;;AChEA,OAAOU,YAAW;AAGlB,SAASC,+BAA+B;AAKjC,IAAMC,iBAAiB,CAAC,EAAEC,SAAQ,MAAqC;;;AAG5E,WAAO,gBAAAC,OAAA,cAACC,yBAAAA,IAAAA;;;;AACV;;;AHVO,IAAMC,oBAAmBC,KAAK,MAAM,OAAO,iCAAA,CAAA;AAC3C,IAAMC,gBAAgBD,KAAK,MAAM,OAAO,8BAAA,CAAA;;;ADsBxC,IAAME,sBAAsB,CAAC,EAAEC,QAAO,MAAoB;;;AAC/D,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AACtC,UAAMC,WAAWC,aAAAA;AACjB,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,aAAAA;AAE7B,UAAM,EAAEC,OAAOC,aAAY,IAAKC,eAAcC,mBAAmBC,YAAY;AAC7E,UAAMC,YAAYJ,aAAaK,kBAAiBf,OAAAA,CAAAA;AAChD,UAAM,EAAEgB,oBAAmB,IAAKF;AAChC,UAAMG,oBAAoBC,aACxB,CAACC,cAAAA;AACCL,gBAAUE,sBAAsBG,cAAc;IAChD,GACA;MAACL;KAAU;AAEb,UAAMM,SAASX,MAAMW,OAAOL,kBAAiBf,OAAAA,CAAAA;AAE7C,UAAMqB,cAAcC,gBAAgBC,aAAaC,UAAU;AAC3D,UAAMC,OAAOC,SACX,MAAML,YAAYM,KAAK,CAAC,EAAEC,IAAG,MAAOA,QAAQC,IAAIC,YAAY9B,OAAAA,CAAAA,GAAWyB,MACvE;MAACJ;MAAarB;KAAQ;AAGxB,UAAM+B,QAAQC,UAAShC,OAAAA;AACvB,UAAMiC,oBAAoBC,SAASH,OAAOI,MAAMC,OAAOC,OAAOC,IAAItC,QAAQuC,EAAE,CAAA,EAAGC,SAASC,UAAAA,CAAAA;AACxF,UAAMC,UAAUT,kBACbU,SAAS,CAACC,GAAGC,MAAMpB,OAAOmB,GAAGC,CAAAA,KAAM,CAAA,EACnCC,OAAO,CAACC,WAAWlB,IAAImB,WAAWC,YAAYF,OAAOG,iBAAAA,CAAiB,CAAA,EACtEC,OAAO/B,UAAU,CAAA,CAAE;AAEtB,UAAMgC,WAAWC,YAAAA;AACjB,UAAMC,qBAAqBvC,kBAAiBf,OAAAA;AAE5C,UAAMuD,eAAerC,aACnB,CAAC6B,WAAAA;AACC,YAAMS,SAAST,OAAOG,iBAAAA;AACtB,YAAMO,WAAW1C,kBAAiByC,MAAAA;AAElC,UAAI/C,MAAMiD,YAAYD,UAAU;AAC9BhD,cAAMiD,UAAUD;AAKhB,aAAKvD,SACHyD,aAAaC,aAAaC,gBAAgB;UACxCC,MAAM;UACN9D,SAASe,kBAAiBf,OAAAA;UAC1B+D,SAAS;YACPC,QAAQjB,OAAOA;YACfkB,KAAKR;UACP;QACF,CAAA,CAAA;MAEJ;IACF,GACA;MAAChD,MAAMiD;MAASxD;MAAUF;KAAQ;AAGpC,UAAMkE,gBAAgBhD,aACpB,OAAO6B,QAAoBoB,SAAAA;AACzB,YAAMjE,SACJyD,aAAaS,aAAaC,YAAY;QAAEtB;QAAQ/C;QAASsE,QAAQ;UAAEC,aAAanE,UAAUoE;QAAI;QAAGL;MAAK,CAAA,CAAA;AAGxG,YAAMX,SAAST,OAAOG,iBAAAA;AACtBzC,YAAMiD,UAAU3C,kBAAiByC,MAAAA;IACnC,GACA;MAACtD;MAAUE;MAAUJ;KAAQ;AAG/B,UAAMyE,gBAAgBvD,aACpB,CAAC6B,WACC7C,SAASyD,aAAaS,aAAaM,gBAAgB;MAAElB,QAAQT,OAAOG,iBAAAA;IAAgC,CAAA,CAAA,GACtG;MAAChD;KAAS;AAGZ,UAAMyE,qBAAqBzD,aACzB,CAAC6B,WAAuB7C,SAASyD,aAAaS,aAAaQ,QAAQ;MAAE7B;MAAQ/C;IAAQ,CAAA,CAAA,GACrF;MAACE;MAAUF;KAAQ;AAGrB,UAAM6E,sBAAsB3D,aAC1B,CAAC6B,QAAoB+B,cACnB5E,SAASyD,aAAaS,aAAaW,eAAe;MAAEhC;MAAQ/C;MAAS8E;IAAU,CAAA,CAAA,GACjF;MAAC5E;MAAUF;KAAQ;AAGrB,UAAMgF,WACJ,gBAAAC,OAAA,cAACC,mBAAAA;MACCxC;MACAyC,WAAW/B,SAASgC,SAAS9B,kBAAAA,IAAsB7C,MAAMiD,UAAU2B;MACnErE;MACAsE,UAAU/B;MACVgC,WAAWrB;MACXsB,WAAWf;MACXgB,iBAAiBZ;MACjBa,gBAAgBf;;AAIpB,WACE,gBAAAM,OAAA,cAACU,UAAUC,SAAO;MAACC,SAAAA;OACjB,gBAAAZ,OAAA,cAACa,KAAKC,MAAI;MACRC,OAAOhF,sBAAsB,QAAQ;MACrCiF,eAAehF;MACfiF,aAAY;MACZC,YAAW;OAGX,gBAAAlB,OAAA,cAACa,KAAKM,SAAO;MAACD,YAAW;OACvB,gBAAAlB,OAAA,cAACa,KAAKO,KAAG;MAACL,OAAM;MAAaG,YAAW;OACrC7F,EAAE,uBAAA,CAAA,GAEL,gBAAA2E,OAAA,cAACa,KAAKO,KAAG;MAACL,OAAM;MAAMG,YAAW;OAC9B7F,EAAE,gBAAA,CAAA,CAAA,GAGP,gBAAA2E,OAAA,cAACa,KAAKQ,UAAQ;MAACN,OAAM;OAAOhF,uBAAuBgE,QAAAA,GACnD,gBAAAC,OAAA,cAACa,KAAKQ,UAAQ;MAACN,OAAM;OAAc,CAAChF,uBAAuBgE,QAAAA,CAAAA,CAAAA;;;;AAInE;",
6
+ "names": ["WebRTCStats", "React", "useEffect", "useMemo", "useState", "Panel", "log", "Input", "useTranslation", "Json", "CallDebugPanel", "state", "users", "call", "self", "t", "useTranslation", "THREAD_PLUGIN", "open", "setOpen", "useState", "handleToggle", "showDetailedWebRTCStats", "setShowDetailedWebRTCStats", "handleShowDetailedWebRTCStats", "webrtcStats", "useMemo", "WebRTCStats", "getStatsInterval", "stats", "setStats", "useEffect", "pc", "media", "peer", "session", "peerConnection", "handleStats", "data", "added", "addConnection", "peerId", "connectionId", "on", "removeConnection", "removeListener", "error", "log", "Panel", "id", "icon", "onToggle", "title", "maxHeight", "info", "div", "className", "span", "joined", "length", "undefined", "Input", "Root", "Label", "classNames", "Checkbox", "checked", "onCheckedChange", "Json", "activities", "webrtc", "connectionState", "iceConnectionState", "tracks", "getTransceivers", "map", "transceiver", "track", "direction", "receiver", "sender", "kind", "enabled", "muted", "readyState", "settings", "getSettings", "callsServiceHistory", "history", "get", "React", "useCapability", "CallSidebar", "call", "useCapability", "ThreadCapabilities", "CallManager", "React", "ChannelContainer", "roomId", "React", "useCallback", "useMemo", "createIntent", "LayoutAction", "useCapability", "useCapabilities", "useIntentDispatcher", "Capabilities", "Filter", "Obj", "Query", "RelationSourceId", "fullyQualifiedId", "getSpace", "useQuery", "useIdentity", "useTranslation", "useAttended", "StackItem", "Tabs", "AnchoredTo", "lazy", "CheckCircle", "X", "React", "useCallback", "useMemo", "useRef", "useState", "RelationSourceId", "RefArray", "fullyQualifiedId", "getSpace", "useMembers", "useIdentity", "Button", "Tag", "Tooltip", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "listener", "getSize", "hoverableControlItem", "hoverableControls", "hoverableFocusedWithinControls", "mx", "MessageTextbox", "Thread", "ThreadFooter", "ThreadHeading", "isNonNullable", "sizeClass", "getSize", "commentControlClassNames", "ToggleResolvedButton", "isResolved", "onResolve", "t", "useTranslation", "THREAD_PLUGIN", "label", "React", "Tooltip", "Trigger", "asChild", "content", "Button", "variant", "data-testid", "onClick", "classNames", "hoverableControlItem", "span", "className", "CheckCircle", "weight", "DeleteThreadButton", "onDelete", "X", "CommentContainer", "anchor", "current", "onAttend", "onComment", "onMessageDelete", "onThreadDelete", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "detached", "thread", "RelationSourceId", "activity", "useStatus", "fullyQualifiedId", "threadScrollRef", "useRef", "themeMode", "useThemeContext", "textboxMetadata", "getMessageMetadata", "_count", "_setCount", "useState", "rerenderEditor", "count", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "handleAttend", "useCallback", "handleResolve", "handleMessageDelete", "id", "handleThreadDelete", "handleComment", "Thread", "onClickCapture", "onFocusCapture", "div", "role", "mx", "hoverableControls", "hoverableFocusedWithinControls", "side", "ThreadHeading", "name", "status", "Tag", "palette", "RefArray", "targets", "messages", "filter", "isNonNullable", "map", "message", "MessageContainer", "editable", "MessageTextbox", "onSend", "ThreadFooter", "ref", "ChatText", "React", "useEffect", "RelationSourceId", "fullyQualifiedId", "useTranslation", "Trans", "descriptionMessage", "mx", "CommentsContainer", "anchors", "currentId", "showResolvedThreads", "props", "t", "useTranslation", "THREAD_PLUGIN", "filteredAnchors", "filter", "anchor", "RelationSourceId", "thread", "status", "useEffect", "document", "getElementById", "scrollIntoView", "behavior", "block", "React", "length", "map", "threadId", "fullyQualifiedId", "CommentContainer", "key", "current", "div", "role", "className", "mx", "descriptionMessage", "h2", "p", "Trans", "i18nKey", "components", "commentIcon", "ChatText", "React", "DeprecatedFormContainer", "ThreadSettings", "settings", "React", "DeprecatedFormContainer", "ChannelContainer", "lazy", "ChatContainer", "ThreadComplementary", "subject", "dispatchPromise", "dispatch", "useIntentDispatcher", "identity", "useIdentity", "t", "useTranslation", "THREAD_PLUGIN", "state", "getViewState", "useCapability", "ThreadCapabilities", "MutableState", "viewState", "fullyQualifiedId", "showResolvedThreads", "onChangeViewState", "useCallback", "nextValue", "drafts", "anchorSorts", "useCapabilities", "Capabilities", "AnchorSort", "sort", "useMemo", "find", "key", "Obj", "getTypename", "space", "getSpace", "objectsAnchoredTo", "useQuery", "Query", "select", "Filter", "ids", "id", "targetOf", "AnchoredTo", "anchors", "toSorted", "a", "b", "filter", "anchor", "instanceOf", "ThreadType", "RelationSourceId", "concat", "attended", "useAttended", "qualifiedSubjectId", "handleAttend", "thread", "threadId", "current", "createIntent", "LayoutAction", "ScrollIntoView", "part", "options", "cursor", "ref", "handleComment", "text", "ThreadAction", "AddMessage", "sender", "identityDid", "did", "handleResolve", "ToggleResolved", "handleThreadDelete", "Delete", "handleMessageDelete", "messageId", "DeleteMessage", "comments", "React", "CommentsContainer", "currentId", "includes", "undefined", "onAttend", "onComment", "onResolve", "onMessageDelete", "onThreadDelete", "StackItem", "Content", "toolbar", "Tabs", "Root", "value", "onValueChange", "orientation", "classNames", "Tablist", "Tab", "Tabpanel"]
7
+ }
@@ -2,13 +2,13 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
 
3
3
  // packages/plugins/plugin-thread/src/capabilities/index.ts
4
4
  import { lazy } from "@dxos/app-framework";
5
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-I5VMPLE4.mjs"));
5
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-UWJQE534.mjs"));
6
6
  var CallManager = lazy(() => import("./call-manager-UUYXLF4T.mjs"));
7
- var IntentResolver = lazy(() => import("./intent-resolver-CU22OPAH.mjs"));
8
- var Markdown = lazy(() => import("./markdown-HRGGO7IA.mjs"));
9
- var ReactRoot = lazy(() => import("./react-root-NQMUEI6Z.mjs"));
10
- var ReactSurface = lazy(() => import("./react-surface-Z4X5VLMY.mjs"));
11
- var ThreadSettings = lazy(() => import("./settings-IJGUOU3F.mjs"));
7
+ var IntentResolver = lazy(() => import("./intent-resolver-FHRK77IS.mjs"));
8
+ var Markdown = lazy(() => import("./markdown-HBGB3UPJ.mjs"));
9
+ var ReactRoot = lazy(() => import("./react-root-UPDDCRBV.mjs"));
10
+ var ReactSurface = lazy(() => import("./react-surface-LU3CZDC4.mjs"));
11
+ var ThreadSettings = lazy(() => import("./settings-KFEFSAYG.mjs"));
12
12
  var ThreadState = lazy(() => import("./state-6AUTNROZ.mjs"));
13
13
 
14
14
  export {
@@ -20,4 +20,4 @@ export {
20
20
  ReactSurface,
21
21
  ThreadState
22
22
  };
23
- //# sourceMappingURL=chunk-ODUB4GAB.mjs.map
23
+ //# sourceMappingURL=chunk-EHDXOE5R.mjs.map
@@ -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,7 +52,7 @@ 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
58
  "p-2 bg-modalSurface rounded-lg shadow-lg",
@@ -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,
@@ -981,4 +981,4 @@ export {
981
981
  ChannelContainer,
982
982
  ChannelContainer_default
983
983
  };
984
- //# sourceMappingURL=chunk-X6AUQDTE.mjs.map
984
+ //# sourceMappingURL=chunk-KP2JBSWF.mjs.map