@dxos/plugin-thread 0.8.3-main.7f5a14c → 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 (120) hide show
  1. package/dist/lib/browser/{ChannelContainer-KWXUKR5Q.mjs → ChannelContainer-PKFBVENP.mjs} +3 -3
  2. package/dist/lib/browser/{app-graph-builder-CBWNZCXB.mjs → app-graph-builder-OY7R7EJP.mjs} +2 -2
  3. package/dist/lib/browser/chunk-6NBVNXTM.mjs +21 -0
  4. package/dist/lib/browser/{chunk-WDOQXTI2.mjs → chunk-AEXWNS6Z.mjs} +5 -3
  5. package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-3EYX6CV7.mjs → chunk-PG5CTFKK.mjs} +47 -43
  7. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-5IRYNA5K.mjs → chunk-XZKBN3NS.mjs} +30 -30
  9. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +7 -0
  10. package/dist/lib/browser/index.mjs +33 -7
  11. package/dist/lib/browser/index.mjs.map +3 -3
  12. package/dist/lib/browser/{intent-resolver-I37YU7K3.mjs → intent-resolver-FK2MDVDT.mjs} +19 -22
  13. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +7 -0
  14. package/dist/lib/browser/{markdown-LS3XO2KB.mjs → markdown-TE5SWWNJ.mjs} +7 -8
  15. package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +7 -0
  16. package/dist/lib/browser/meta.json +1 -1
  17. package/dist/lib/browser/{react-root-KNCKPHGS.mjs → react-root-NK3A4VG7.mjs} +5 -5
  18. package/dist/lib/browser/{react-surface-ASWIBD7H.mjs → react-surface-VXUJKSOG.mjs} +5 -5
  19. package/dist/lib/browser/{settings-ZUY7OX24.mjs → settings-RB2RSLXV.mjs} +2 -2
  20. package/dist/lib/browser/types/index.mjs +1 -1
  21. package/dist/lib/node/{ChannelContainer-MA5CFESJ.cjs → ChannelContainer-YS5YT2ML.cjs} +8 -8
  22. package/dist/lib/node/{ChannelContainer-MA5CFESJ.cjs.map → ChannelContainer-YS5YT2ML.cjs.map} +2 -2
  23. package/dist/lib/node/{app-graph-builder-K5OAVYI6.cjs → app-graph-builder-PBHJNDQY.cjs} +9 -9
  24. package/dist/lib/node/{chunk-3YYSLZE4.cjs → chunk-ERG7G6FF.cjs} +10 -10
  25. package/dist/lib/node/{chunk-WCQKISL5.cjs → chunk-IP533AMV.cjs} +64 -60
  26. package/dist/lib/node/chunk-IP533AMV.cjs.map +7 -0
  27. package/dist/lib/node/{chunk-U4SZUERU.cjs → chunk-UM36TPCT.cjs} +33 -33
  28. package/dist/lib/node/chunk-UM36TPCT.cjs.map +7 -0
  29. package/dist/lib/node/{chunk-TKHJVC2C.cjs → chunk-ZGDN3XBR.cjs} +8 -6
  30. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +7 -0
  31. package/dist/lib/node/index.cjs +42 -16
  32. package/dist/lib/node/index.cjs.map +3 -3
  33. package/dist/lib/node/{intent-resolver-2TX6HSOL.cjs → intent-resolver-SYSJ5SJG.cjs} +36 -39
  34. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +7 -0
  35. package/dist/lib/node/{markdown-GNFW2XDO.cjs → markdown-GQIPJS2F.cjs} +13 -14
  36. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +7 -0
  37. package/dist/lib/node/meta.json +1 -1
  38. package/dist/lib/node/{react-root-BKOXG5AC.cjs → react-root-6HHDMULJ.cjs} +9 -9
  39. package/dist/lib/node/{react-surface-Q5DWX3UO.cjs → react-surface-NBH42NN2.cjs} +18 -18
  40. package/dist/lib/node/{settings-5O5V2NOE.cjs → settings-4LQSFEDK.cjs} +6 -6
  41. package/dist/lib/node/types/index.cjs +6 -6
  42. package/dist/lib/node/types/index.cjs.map +1 -1
  43. package/dist/lib/node-esm/{ChannelContainer-VGVEAUAQ.mjs → ChannelContainer-O4QJII2P.mjs} +3 -3
  44. package/dist/lib/node-esm/{app-graph-builder-UWJQE534.mjs → app-graph-builder-BAHBHYWI.mjs} +2 -2
  45. package/dist/lib/node-esm/{chunk-KP2JBSWF.mjs → chunk-2RNIPFDA.mjs} +30 -30
  46. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-EHDXOE5R.mjs → chunk-O63QJPQX.mjs} +7 -7
  48. package/dist/lib/node-esm/{chunk-J323VQ4P.mjs → chunk-UJMPYKT3.mjs} +5 -3
  49. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-6EGLDARC.mjs → chunk-UZWVVFT3.mjs} +47 -43
  51. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +7 -0
  52. package/dist/lib/node-esm/index.mjs +33 -7
  53. package/dist/lib/node-esm/index.mjs.map +3 -3
  54. package/dist/lib/node-esm/{intent-resolver-FHRK77IS.mjs → intent-resolver-BU73VYW3.mjs} +19 -22
  55. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +7 -0
  56. package/dist/lib/node-esm/{markdown-HBGB3UPJ.mjs → markdown-HJUWNBLS.mjs} +7 -8
  57. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +7 -0
  58. package/dist/lib/node-esm/meta.json +1 -1
  59. package/dist/lib/node-esm/{react-root-UPDDCRBV.mjs → react-root-RUXOAQNW.mjs} +5 -5
  60. package/dist/lib/node-esm/{react-surface-LU3CZDC4.mjs → react-surface-ELXFYKP6.mjs} +5 -5
  61. package/dist/lib/node-esm/{settings-KFEFSAYG.mjs → settings-EA7DFSM6.mjs} +2 -2
  62. package/dist/lib/node-esm/types/index.mjs +1 -1
  63. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  65. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  66. package/dist/types/src/components/CommentsContainer.d.ts +1 -1
  67. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  68. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  69. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  70. package/dist/types/src/translations.d.ts +128 -2
  71. package/dist/types/src/translations.d.ts.map +1 -1
  72. package/dist/types/src/types/schema.d.ts +117 -301
  73. package/dist/types/src/types/schema.d.ts.map +1 -1
  74. package/dist/types/src/types/types.d.ts +153 -828
  75. package/dist/types/src/types/types.d.ts.map +1 -1
  76. package/package.json +42 -42
  77. package/src/ThreadPlugin.tsx +26 -3
  78. package/src/capabilities/intent-resolver.ts +17 -18
  79. package/src/components/Call/Toolbar.tsx +1 -1
  80. package/src/components/ChannelContainer.tsx +18 -22
  81. package/src/components/CommentContainer.tsx +2 -2
  82. package/src/components/Comments.stories.tsx +12 -3
  83. package/src/components/CommentsContainer.tsx +21 -24
  84. package/src/components/ThreadComplementary.tsx +15 -16
  85. package/src/extensions/threads.ts +5 -6
  86. package/src/translations.ts +7 -2
  87. package/src/types/schema.ts +8 -4
  88. package/dist/lib/browser/chunk-3EYX6CV7.mjs.map +0 -7
  89. package/dist/lib/browser/chunk-5IRYNA5K.mjs.map +0 -7
  90. package/dist/lib/browser/chunk-FWBJHKRW.mjs +0 -21
  91. package/dist/lib/browser/chunk-WDOQXTI2.mjs.map +0 -7
  92. package/dist/lib/browser/intent-resolver-I37YU7K3.mjs.map +0 -7
  93. package/dist/lib/browser/markdown-LS3XO2KB.mjs.map +0 -7
  94. package/dist/lib/node/chunk-TKHJVC2C.cjs.map +0 -7
  95. package/dist/lib/node/chunk-U4SZUERU.cjs.map +0 -7
  96. package/dist/lib/node/chunk-WCQKISL5.cjs.map +0 -7
  97. package/dist/lib/node/intent-resolver-2TX6HSOL.cjs.map +0 -7
  98. package/dist/lib/node/markdown-GNFW2XDO.cjs.map +0 -7
  99. package/dist/lib/node-esm/chunk-6EGLDARC.mjs.map +0 -7
  100. package/dist/lib/node-esm/chunk-J323VQ4P.mjs.map +0 -7
  101. package/dist/lib/node-esm/chunk-KP2JBSWF.mjs.map +0 -7
  102. package/dist/lib/node-esm/intent-resolver-FHRK77IS.mjs.map +0 -7
  103. package/dist/lib/node-esm/markdown-HBGB3UPJ.mjs.map +0 -7
  104. /package/dist/lib/browser/{ChannelContainer-KWXUKR5Q.mjs.map → ChannelContainer-PKFBVENP.mjs.map} +0 -0
  105. /package/dist/lib/browser/{app-graph-builder-CBWNZCXB.mjs.map → app-graph-builder-OY7R7EJP.mjs.map} +0 -0
  106. /package/dist/lib/browser/{chunk-FWBJHKRW.mjs.map → chunk-6NBVNXTM.mjs.map} +0 -0
  107. /package/dist/lib/browser/{react-root-KNCKPHGS.mjs.map → react-root-NK3A4VG7.mjs.map} +0 -0
  108. /package/dist/lib/browser/{react-surface-ASWIBD7H.mjs.map → react-surface-VXUJKSOG.mjs.map} +0 -0
  109. /package/dist/lib/browser/{settings-ZUY7OX24.mjs.map → settings-RB2RSLXV.mjs.map} +0 -0
  110. /package/dist/lib/node/{app-graph-builder-K5OAVYI6.cjs.map → app-graph-builder-PBHJNDQY.cjs.map} +0 -0
  111. /package/dist/lib/node/{chunk-3YYSLZE4.cjs.map → chunk-ERG7G6FF.cjs.map} +0 -0
  112. /package/dist/lib/node/{react-root-BKOXG5AC.cjs.map → react-root-6HHDMULJ.cjs.map} +0 -0
  113. /package/dist/lib/node/{react-surface-Q5DWX3UO.cjs.map → react-surface-NBH42NN2.cjs.map} +0 -0
  114. /package/dist/lib/node/{settings-5O5V2NOE.cjs.map → settings-4LQSFEDK.cjs.map} +0 -0
  115. /package/dist/lib/node-esm/{ChannelContainer-VGVEAUAQ.mjs.map → ChannelContainer-O4QJII2P.mjs.map} +0 -0
  116. /package/dist/lib/node-esm/{app-graph-builder-UWJQE534.mjs.map → app-graph-builder-BAHBHYWI.mjs.map} +0 -0
  117. /package/dist/lib/node-esm/{chunk-EHDXOE5R.mjs.map → chunk-O63QJPQX.mjs.map} +0 -0
  118. /package/dist/lib/node-esm/{react-root-UPDDCRBV.mjs.map → react-root-RUXOAQNW.mjs.map} +0 -0
  119. /package/dist/lib/node-esm/{react-surface-LU3CZDC4.mjs.map → react-surface-ELXFYKP6.mjs.map} +0 -0
  120. /package/dist/lib/node-esm/{settings-KFEFSAYG.mjs.map → settings-EA7DFSM6.mjs.map} +0 -0
@@ -1,9 +1,9 @@
1
- import "./chunk-3EYX6CV7.mjs";
2
- import "./chunk-WDOQXTI2.mjs";
1
+ import "./chunk-PG5CTFKK.mjs";
2
+ import "./chunk-AEXWNS6Z.mjs";
3
3
  import {
4
4
  Call
5
- } from "./chunk-5IRYNA5K.mjs";
6
- import "./chunk-FWBJHKRW.mjs";
5
+ } from "./chunk-XZKBN3NS.mjs";
6
+ import "./chunk-6NBVNXTM.mjs";
7
7
  import "./chunk-R5MDLUPC.mjs";
8
8
  import "./chunk-TAFSCSUR.mjs";
9
9
  import "./chunk-5P5BH5GE.mjs";
@@ -24,4 +24,4 @@ var react_root_default = () => {
24
24
  export {
25
25
  react_root_default as default
26
26
  };
27
- //# sourceMappingURL=react-root-KNCKPHGS.mjs.map
27
+ //# sourceMappingURL=react-root-NK3A4VG7.mjs.map
@@ -5,13 +5,13 @@ import {
5
5
  ChatContainer,
6
6
  ThreadComplementary,
7
7
  ThreadSettings
8
- } from "./chunk-3EYX6CV7.mjs";
8
+ } from "./chunk-PG5CTFKK.mjs";
9
9
  import {
10
10
  ChannelType,
11
11
  ThreadType
12
- } from "./chunk-WDOQXTI2.mjs";
13
- import "./chunk-5IRYNA5K.mjs";
14
- import "./chunk-FWBJHKRW.mjs";
12
+ } from "./chunk-AEXWNS6Z.mjs";
13
+ import "./chunk-XZKBN3NS.mjs";
14
+ import "./chunk-6NBVNXTM.mjs";
15
15
  import {
16
16
  ThreadCapabilities
17
17
  } from "./chunk-R5MDLUPC.mjs";
@@ -105,4 +105,4 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
105
105
  export {
106
106
  react_surface_default as default
107
107
  };
108
- //# sourceMappingURL=react-surface-ASWIBD7H.mjs.map
108
+ //# sourceMappingURL=react-surface-VXUJKSOG.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ThreadSettingsSchema
3
- } from "./chunk-WDOQXTI2.mjs";
3
+ } from "./chunk-AEXWNS6Z.mjs";
4
4
  import {
5
5
  meta
6
6
  } from "./chunk-IIUTBDVB.mjs";
@@ -19,4 +19,4 @@ var settings_default = () => {
19
19
  export {
20
20
  settings_default as default
21
21
  };
22
- //# sourceMappingURL=settings-ZUY7OX24.mjs.map
22
+ //# sourceMappingURL=settings-RB2RSLXV.mjs.map
@@ -4,7 +4,7 @@ import {
4
4
  ThreadSettingsSchema,
5
5
  ThreadStatus,
6
6
  ThreadType
7
- } from "../chunk-WDOQXTI2.mjs";
7
+ } from "../chunk-AEXWNS6Z.mjs";
8
8
  import "../chunk-IIUTBDVB.mjs";
9
9
  export {
10
10
  ChannelType,
@@ -16,14 +16,14 @@ 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 ChannelContainer_MA5CFESJ_exports = {};
20
- __export(ChannelContainer_MA5CFESJ_exports, {
21
- ChannelContainer: () => import_chunk_U4SZUERU.ChannelContainer,
22
- default: () => import_chunk_U4SZUERU.ChannelContainer_default
19
+ var ChannelContainer_YS5YT2ML_exports = {};
20
+ __export(ChannelContainer_YS5YT2ML_exports, {
21
+ ChannelContainer: () => import_chunk_UM36TPCT.ChannelContainer,
22
+ default: () => import_chunk_UM36TPCT.ChannelContainer_default
23
23
  });
24
- module.exports = __toCommonJS(ChannelContainer_MA5CFESJ_exports);
25
- var import_chunk_U4SZUERU = require("./chunk-U4SZUERU.cjs");
26
- var import_chunk_3YYSLZE4 = require("./chunk-3YYSLZE4.cjs");
24
+ module.exports = __toCommonJS(ChannelContainer_YS5YT2ML_exports);
25
+ var import_chunk_UM36TPCT = require("./chunk-UM36TPCT.cjs");
26
+ var import_chunk_ERG7G6FF = require("./chunk-ERG7G6FF.cjs");
27
27
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
28
28
  var import_chunk_E3WBZTTI = require("./chunk-E3WBZTTI.cjs");
29
29
  var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
@@ -33,4 +33,4 @@ var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
33
33
  0 && (module.exports = {
34
34
  ChannelContainer
35
35
  });
36
- //# sourceMappingURL=ChannelContainer-MA5CFESJ.cjs.map
36
+ //# sourceMappingURL=ChannelContainer-YS5YT2ML.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["ChannelContainer-MA5CFESJ.cjs"],
4
- "sourcesContent": ["import {\n ChannelContainer,\n ChannelContainer_default\n} from \"./chunk-U4SZUERU.cjs\";\nimport \"./chunk-3YYSLZE4.cjs\";\nimport \"./chunk-4YSNVPWU.cjs\";\nimport \"./chunk-E3WBZTTI.cjs\";\nimport \"./chunk-FUXJAVFZ.cjs\";\nimport \"./chunk-LR5NENBE.cjs\";\nimport \"./chunk-HLMCEE5K.cjs\";\nexport {\n ChannelContainer,\n ChannelContainer_default as default\n};\n//# sourceMappingURL=ChannelContainer-MA5CFESJ.cjs.map\n"],
3
+ "sources": ["ChannelContainer-YS5YT2ML.cjs"],
4
+ "sourcesContent": ["import {\n ChannelContainer,\n ChannelContainer_default\n} from \"./chunk-UM36TPCT.cjs\";\nimport \"./chunk-ERG7G6FF.cjs\";\nimport \"./chunk-4YSNVPWU.cjs\";\nimport \"./chunk-E3WBZTTI.cjs\";\nimport \"./chunk-FUXJAVFZ.cjs\";\nimport \"./chunk-LR5NENBE.cjs\";\nimport \"./chunk-HLMCEE5K.cjs\";\nexport {\n ChannelContainer,\n ChannelContainer_default as default\n};\n//# sourceMappingURL=ChannelContainer-YS5YT2ML.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;",
6
6
  "names": []
7
7
  }
@@ -16,12 +16,12 @@ 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 app_graph_builder_K5OAVYI6_exports = {};
20
- __export(app_graph_builder_K5OAVYI6_exports, {
19
+ var app_graph_builder_PBHJNDQY_exports = {};
20
+ __export(app_graph_builder_PBHJNDQY_exports, {
21
21
  default: () => app_graph_builder_default
22
22
  });
23
- module.exports = __toCommonJS(app_graph_builder_K5OAVYI6_exports);
24
- var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
23
+ module.exports = __toCommonJS(app_graph_builder_PBHJNDQY_exports);
24
+ var import_chunk_ZGDN3XBR = require("./chunk-ZGDN3XBR.cjs");
25
25
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
26
26
  var import_chunk_LR5NENBE = require("./chunk-LR5NENBE.cjs");
27
27
  var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
@@ -66,7 +66,7 @@ var app_graph_builder_default = (context) => {
66
66
  id: `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/channel-chat-companion`,
67
67
  connector: (node) => {
68
68
  return import_rx_react.Rx.make((get) => {
69
- return (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => import_echo.Obj.instanceOf(import_chunk_TKHJVC2C.ChannelType, node2.data) ? import_effect.Option.some(node2.data) : import_effect.Option.none()), import_effect.Option.map((channel) => {
69
+ return (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => import_echo.Obj.instanceOf(import_chunk_ZGDN3XBR.ChannelType, node2.data) ? import_effect.Option.some(node2.data) : import_effect.Option.none()), import_effect.Option.map((channel) => {
70
70
  const callManager = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.CallManager);
71
71
  const joined = get((0, import_plugin_graph.rxFromSignal)(() => callManager.joined && callManager.roomId === (0, import_echo2.fullyQualifiedId)(channel)));
72
72
  if (!joined) {
@@ -97,7 +97,7 @@ var app_graph_builder_default = (context) => {
97
97
  (0, import_plugin_graph.createExtension)({
98
98
  id: `${import_chunk_HLMCEE5K.meta.id}/comments-companion`,
99
99
  connector: (node) => import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => {
100
- if (!import_echo.Obj.isObject(node2.data) || import_echo.Obj.instanceOf(import_chunk_TKHJVC2C.ChannelType, node2.data)) {
100
+ if (!import_echo.Obj.isObject(node2.data) || import_echo.Obj.instanceOf(import_chunk_ZGDN3XBR.ChannelType, node2.data)) {
101
101
  return import_effect.Option.none();
102
102
  }
103
103
  const metadata = resolve(import_echo.Obj.getTypename(node2.data));
@@ -127,7 +127,7 @@ var app_graph_builder_default = (context) => {
127
127
  (0, import_plugin_graph.createExtension)({
128
128
  id: `${import_chunk_HLMCEE5K.meta.id}/comment-toolbar`,
129
129
  actions: (node) => import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => {
130
- if (!import_echo.Obj.isObject(node2.data) || import_echo.Obj.instanceOf(import_chunk_TKHJVC2C.ChannelType, node2.data)) {
130
+ if (!import_echo.Obj.isObject(node2.data) || import_echo.Obj.instanceOf(import_chunk_ZGDN3XBR.ChannelType, node2.data)) {
131
131
  return import_effect.Option.none();
132
132
  }
133
133
  const metadata = resolve(import_echo.Obj.getTypename(node2.data));
@@ -152,7 +152,7 @@ var app_graph_builder_default = (context) => {
152
152
  const selection = selectionManager.getSelection((0, import_echo2.fullyQualifiedId)(object));
153
153
  const anchor = metadata.comments === "anchored" ? (0, import_chunk_LR5NENBE.getAnchor)(selection) : Date.now().toString();
154
154
  const name = metadata.getAnchorLabel?.(object, anchor);
155
- void dispatch((0, import_app_framework.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Create, {
155
+ void dispatch((0, import_app_framework.createIntent)(import_chunk_ZGDN3XBR.ThreadAction.Create, {
156
156
  anchor,
157
157
  name,
158
158
  subject: object
@@ -176,4 +176,4 @@ var app_graph_builder_default = (context) => {
176
176
  })
177
177
  ]);
178
178
  };
179
- //# sourceMappingURL=app-graph-builder-K5OAVYI6.cjs.map
179
+ //# sourceMappingURL=app-graph-builder-PBHJNDQY.cjs.map
@@ -26,8 +26,8 @@ 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 chunk_3YYSLZE4_exports = {};
30
- __export(chunk_3YYSLZE4_exports, {
29
+ var chunk_ERG7G6FF_exports = {};
30
+ __export(chunk_ERG7G6FF_exports, {
31
31
  AppGraphBuilder: () => AppGraphBuilder,
32
32
  CallManager: () => CallManager,
33
33
  IntentResolver: () => IntentResolver,
@@ -36,15 +36,15 @@ __export(chunk_3YYSLZE4_exports, {
36
36
  ReactSurface: () => ReactSurface,
37
37
  ThreadState: () => ThreadState
38
38
  });
39
- module.exports = __toCommonJS(chunk_3YYSLZE4_exports);
39
+ module.exports = __toCommonJS(chunk_ERG7G6FF_exports);
40
40
  var import_app_framework = require("@dxos/app-framework");
41
- var AppGraphBuilder = (0, import_app_framework.lazy)(() => import("./app-graph-builder-K5OAVYI6.cjs"));
41
+ var AppGraphBuilder = (0, import_app_framework.lazy)(() => import("./app-graph-builder-PBHJNDQY.cjs"));
42
42
  var CallManager = (0, import_app_framework.lazy)(() => import("./call-manager-HV2XJW5O.cjs"));
43
- var IntentResolver = (0, import_app_framework.lazy)(() => import("./intent-resolver-2TX6HSOL.cjs"));
44
- var Markdown = (0, import_app_framework.lazy)(() => import("./markdown-GNFW2XDO.cjs"));
45
- var ReactRoot = (0, import_app_framework.lazy)(() => import("./react-root-BKOXG5AC.cjs"));
46
- var ReactSurface = (0, import_app_framework.lazy)(() => import("./react-surface-Q5DWX3UO.cjs"));
47
- var ThreadSettings = (0, import_app_framework.lazy)(() => import("./settings-5O5V2NOE.cjs"));
43
+ var IntentResolver = (0, import_app_framework.lazy)(() => import("./intent-resolver-SYSJ5SJG.cjs"));
44
+ var Markdown = (0, import_app_framework.lazy)(() => import("./markdown-GQIPJS2F.cjs"));
45
+ var ReactRoot = (0, import_app_framework.lazy)(() => import("./react-root-6HHDMULJ.cjs"));
46
+ var ReactSurface = (0, import_app_framework.lazy)(() => import("./react-surface-NBH42NN2.cjs"));
47
+ var ThreadSettings = (0, import_app_framework.lazy)(() => import("./settings-4LQSFEDK.cjs"));
48
48
  var ThreadState = (0, import_app_framework.lazy)(() => import("./state-IY5XX3H2.cjs"));
49
49
  // Annotate the CommonJS export names for ESM import in node:
50
50
  0 && (module.exports = {
@@ -56,4 +56,4 @@ var ThreadState = (0, import_app_framework.lazy)(() => import("./state-IY5XX3H2.
56
56
  ReactSurface,
57
57
  ThreadState
58
58
  });
59
- //# sourceMappingURL=chunk-3YYSLZE4.cjs.map
59
+ //# sourceMappingURL=chunk-ERG7G6FF.cjs.map
@@ -26,8 +26,8 @@ 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 chunk_WCQKISL5_exports = {};
30
- __export(chunk_WCQKISL5_exports, {
29
+ var chunk_IP533AMV_exports = {};
30
+ __export(chunk_IP533AMV_exports, {
31
31
  CallDebugPanel: () => CallDebugPanel,
32
32
  CallSidebar: () => CallSidebar,
33
33
  ChannelContainer: () => ChannelContainer2,
@@ -35,9 +35,9 @@ __export(chunk_WCQKISL5_exports, {
35
35
  ThreadComplementary: () => ThreadComplementary,
36
36
  ThreadSettings: () => ThreadSettings
37
37
  });
38
- module.exports = __toCommonJS(chunk_WCQKISL5_exports);
39
- var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
40
- var import_chunk_U4SZUERU = require("./chunk-U4SZUERU.cjs");
38
+ module.exports = __toCommonJS(chunk_IP533AMV_exports);
39
+ var import_chunk_ZGDN3XBR = require("./chunk-ZGDN3XBR.cjs");
40
+ var import_chunk_UM36TPCT = require("./chunk-UM36TPCT.cjs");
41
41
  var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
42
42
  var import_chunk_E3WBZTTI = require("./chunk-E3WBZTTI.cjs");
43
43
  var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
@@ -57,7 +57,6 @@ var import_tracking3 = require("@preact-signals/safe-react/tracking");
57
57
  var import_react3 = __toESM(require("react"));
58
58
  var import_app_framework2 = require("@dxos/app-framework");
59
59
  var import_echo = require("@dxos/echo");
60
- var import_echo_schema = require("@dxos/echo-schema");
61
60
  var import_echo2 = require("@dxos/react-client/echo");
62
61
  var import_halo = require("@dxos/react-client/halo");
63
62
  var import_react_ui2 = require("@dxos/react-ui");
@@ -69,9 +68,9 @@ var import_react4 = require("react");
69
68
  var import_tracking4 = require("@preact-signals/safe-react/tracking");
70
69
  var import_react5 = require("@phosphor-icons/react");
71
70
  var import_react6 = __toESM(require("react"));
72
- var import_echo_schema2 = require("@dxos/echo-schema");
71
+ var import_echo3 = require("@dxos/echo");
73
72
  var import_live_object = require("@dxos/live-object");
74
- var import_echo3 = require("@dxos/react-client/echo");
73
+ var import_echo4 = require("@dxos/react-client/echo");
75
74
  var import_halo2 = require("@dxos/react-client/halo");
76
75
  var import_react_ui3 = require("@dxos/react-ui");
77
76
  var import_react_ui_editor = require("@dxos/react-ui-editor");
@@ -79,14 +78,12 @@ var import_react_ui_theme = require("@dxos/react-ui-theme");
79
78
  var import_react_ui_thread = require("@dxos/react-ui-thread");
80
79
  var import_util = require("@dxos/util");
81
80
  var import_tracking5 = require("@preact-signals/safe-react/tracking");
82
- var import_react7 = require("@phosphor-icons/react");
83
- var import_react8 = __toESM(require("react"));
84
- var import_echo_schema3 = require("@dxos/echo-schema");
85
- var import_echo4 = require("@dxos/react-client/echo");
81
+ var import_react7 = __toESM(require("react"));
82
+ var import_echo5 = require("@dxos/echo");
83
+ var import_echo6 = require("@dxos/react-client/echo");
86
84
  var import_react_ui4 = require("@dxos/react-ui");
87
- var import_react_ui_theme2 = require("@dxos/react-ui-theme");
88
85
  var import_tracking6 = require("@preact-signals/safe-react/tracking");
89
- var import_react9 = __toESM(require("react"));
86
+ var import_react8 = __toESM(require("react"));
90
87
  var import_react_ui_form = require("@dxos/react-ui-form");
91
88
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/components/CallDebugPanel.tsx";
92
89
  var CallDebugPanel = ({ state }) => {
@@ -200,7 +197,7 @@ var CallSidebar = () => {
200
197
  var _effect = (0, import_tracking2.useSignals)();
201
198
  try {
202
199
  const call = (0, import_app_framework.useCapability)(import_chunk_4YSNVPWU.ThreadCapabilities.CallManager);
203
- return /* @__PURE__ */ import_react2.default.createElement(import_chunk_U4SZUERU.ChannelContainer, {
200
+ return /* @__PURE__ */ import_react2.default.createElement(import_chunk_UM36TPCT.ChannelContainer, {
204
201
  roomId: call.roomId
205
202
  });
206
203
  } finally {
@@ -266,15 +263,15 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
266
263
  var _effect = (0, import_tracking4.useSignals)();
267
264
  try {
268
265
  const identity = (0, import_halo2.useIdentity)();
269
- const space = (0, import_echo3.getSpace)(anchor);
270
- const members = (0, import_echo3.useMembers)(space?.key);
266
+ const space = (0, import_echo4.getSpace)(anchor);
267
+ const members = (0, import_echo4.useMembers)(space?.key);
271
268
  const detached = !anchor.anchor;
272
- const thread = anchor[import_echo_schema2.RelationSourceId];
273
- const activity = (0, import_chunk_FUXJAVFZ.useStatus)(space, (0, import_echo3.fullyQualifiedId)(thread));
269
+ const thread = import_echo3.Relation.getSource(anchor);
270
+ const activity = (0, import_chunk_FUXJAVFZ.useStatus)(space, (0, import_echo4.fullyQualifiedId)(thread));
274
271
  const { t } = (0, import_react_ui3.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
275
272
  const threadScrollRef = (0, import_react6.useRef)(null);
276
273
  const { themeMode } = (0, import_react_ui3.useThemeContext)();
277
- const textboxMetadata = (0, import_chunk_LR5NENBE.getMessageMetadata)((0, import_echo3.fullyQualifiedId)(thread), identity);
274
+ const textboxMetadata = (0, import_chunk_LR5NENBE.getMessageMetadata)((0, import_echo4.fullyQualifiedId)(thread), identity);
278
275
  const [_count, _setCount] = (0, import_react6.useState)(0);
279
276
  const rerenderEditor = () => _setCount((count) => count + 1);
280
277
  const messageRef = (0, import_react6.useRef)("");
@@ -329,7 +326,7 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
329
326
  onClickCapture: handleAttend,
330
327
  onFocusCapture: handleAttend,
331
328
  current,
332
- id: (0, import_echo3.fullyQualifiedId)(thread)
329
+ id: (0, import_echo4.fullyQualifiedId)(thread)
333
330
  }, /* @__PURE__ */ import_react6.default.createElement("div", {
334
331
  role: "none",
335
332
  className: (0, import_react_ui_theme.mx)("col-span-2 grid grid-cols-[var(--rail-size)_1fr_min-content]", import_react_ui_theme.hoverableControls, import_react_ui_theme.hoverableFocusedWithinControls)
@@ -373,11 +370,11 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
373
370
  var _effect = (0, import_tracking5.useSignals)();
374
371
  try {
375
372
  const { t } = (0, import_react_ui4.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
376
- const filteredAnchors = showResolvedThreads ? anchors.filter((anchor) => !!anchor[import_echo_schema3.RelationSourceId]) : anchors.filter((anchor) => {
377
- const thread = anchor[import_echo_schema3.RelationSourceId];
373
+ const filteredAnchors = showResolvedThreads ? anchors.filter((anchor) => !!import_echo5.Relation.getSource(anchor)) : anchors.filter((anchor) => {
374
+ const thread = import_echo5.Relation.getSource(anchor);
378
375
  return thread && thread.status !== "resolved";
379
376
  });
380
- (0, import_react8.useEffect)(() => {
377
+ (0, import_react7.useEffect)(() => {
381
378
  if (currentId) {
382
379
  document.getElementById(currentId)?.scrollIntoView({
383
380
  behavior: "smooth",
@@ -387,29 +384,32 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
387
384
  }, [
388
385
  currentId
389
386
  ]);
390
- return /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, filteredAnchors.length > 0 ? filteredAnchors.map((anchor) => {
391
- const thread = anchor[import_echo_schema3.RelationSourceId];
392
- const threadId = (0, import_echo4.fullyQualifiedId)(thread);
393
- return /* @__PURE__ */ import_react8.default.createElement(CommentContainer, {
387
+ if (filteredAnchors.length === 0) {
388
+ return /* @__PURE__ */ import_react7.default.createElement("div", {
389
+ role: "none",
390
+ className: "plb-cardSpacingBlock pli-cardSpacingInline"
391
+ }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui4.Callout.Root, null, /* @__PURE__ */ import_react7.default.createElement(import_react_ui4.Callout.Title, null, /* @__PURE__ */ import_react7.default.createElement(import_react_ui4.Trans, {
392
+ t,
393
+ i18nKey: "no comments message",
394
+ components: {
395
+ commentIcon: /* @__PURE__ */ import_react7.default.createElement(import_react_ui4.Icon, {
396
+ icon: "ph--chat-text--regular",
397
+ size: 4,
398
+ classNames: "inline-block"
399
+ })
400
+ }
401
+ }))));
402
+ }
403
+ return filteredAnchors.map((anchor) => {
404
+ const thread = import_echo5.Relation.getSource(anchor);
405
+ const threadId = (0, import_echo6.fullyQualifiedId)(thread);
406
+ return /* @__PURE__ */ import_react7.default.createElement(CommentContainer, {
394
407
  key: threadId,
395
408
  anchor,
396
409
  current: currentId === threadId,
397
410
  ...props
398
411
  });
399
- }) : /* @__PURE__ */ import_react8.default.createElement("div", {
400
- role: "alert",
401
- className: (0, import_react_ui_theme2.mx)(import_react_ui_theme2.descriptionMessage, "place-self-center rounded-lg text-center m-4")
402
- }, /* @__PURE__ */ import_react8.default.createElement("h2", {
403
- className: "mbe-2 font-medium text-baseText"
404
- }, t("no comments title")), /* @__PURE__ */ import_react8.default.createElement("p", null, /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Trans, {
405
- t,
406
- i18nKey: "no comments message",
407
- components: {
408
- commentIcon: /* @__PURE__ */ import_react8.default.createElement(import_react7.ChatText, {
409
- className: "inline-block"
410
- })
411
- }
412
- }))));
412
+ });
413
413
  } finally {
414
414
  _effect.f();
415
415
  }
@@ -417,12 +417,12 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
417
417
  var ThreadSettings = ({ settings }) => {
418
418
  var _effect = (0, import_tracking6.useSignals)();
419
419
  try {
420
- return /* @__PURE__ */ import_react9.default.createElement(import_react_ui_form.DeprecatedFormContainer, null);
420
+ return /* @__PURE__ */ import_react8.default.createElement(import_react_ui_form.DeprecatedFormContainer, null);
421
421
  } finally {
422
422
  _effect.f();
423
423
  }
424
424
  };
425
- var ChannelContainer2 = (0, import_react4.lazy)(() => import("./ChannelContainer-MA5CFESJ.cjs"));
425
+ var ChannelContainer2 = (0, import_react4.lazy)(() => import("./ChannelContainer-YS5YT2ML.cjs"));
426
426
  var ChatContainer = (0, import_react4.lazy)(() => import("./ChatContainer-GCOM3M56.cjs"));
427
427
  var ThreadComplementary = ({ subject }) => {
428
428
  var _effect = (0, import_tracking3.useSignals)();
@@ -430,15 +430,20 @@ var ThreadComplementary = ({ subject }) => {
430
430
  const { dispatchPromise: dispatch } = (0, import_app_framework2.useIntentDispatcher)();
431
431
  const identity = (0, import_halo.useIdentity)();
432
432
  const { t } = (0, import_react_ui2.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
433
+ const { tx } = (0, import_react_ui2.useThemeContext)();
434
+ const subjectId = (0, import_echo2.fullyQualifiedId)(subject);
433
435
  const { state, getViewState } = (0, import_app_framework2.useCapability)(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
434
- const viewState = getViewState((0, import_echo2.fullyQualifiedId)(subject));
436
+ const drafts = state.drafts[subjectId];
437
+ const viewState = (0, import_react3.useMemo)(() => getViewState(subjectId), [
438
+ getViewState,
439
+ subjectId
440
+ ]);
435
441
  const { showResolvedThreads } = viewState;
436
442
  const onChangeViewState = (0, import_react3.useCallback)((nextValue) => {
437
443
  viewState.showResolvedThreads = nextValue === "all";
438
444
  }, [
439
445
  viewState
440
446
  ]);
441
- const drafts = state.drafts[(0, import_echo2.fullyQualifiedId)(subject)];
442
447
  const anchorSorts = (0, import_app_framework2.useCapabilities)(import_app_framework2.Capabilities.AnchorSort);
443
448
  const sort = (0, import_react3.useMemo)(() => anchorSorts.find(({ key }) => key === import_echo.Obj.getTypename(subject))?.sort, [
444
449
  anchorSorts,
@@ -446,11 +451,10 @@ var ThreadComplementary = ({ subject }) => {
446
451
  ]);
447
452
  const space = (0, import_echo2.getSpace)(subject);
448
453
  const objectsAnchoredTo = (0, import_echo2.useQuery)(space, import_echo.Query.select(import_echo.Filter.ids(subject.id)).targetOf(import_schema.AnchoredTo));
449
- const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => import_echo.Obj.instanceOf(import_chunk_TKHJVC2C.ThreadType, anchor[import_echo_schema.RelationSourceId])).concat(drafts ?? []);
454
+ const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => import_echo.Obj.instanceOf(import_chunk_ZGDN3XBR.ThreadType, import_echo.Relation.getSource(anchor))).concat(drafts ?? []);
450
455
  const attended = (0, import_react_ui_attention.useAttended)();
451
- const qualifiedSubjectId = (0, import_echo2.fullyQualifiedId)(subject);
452
456
  const handleAttend = (0, import_react3.useCallback)((anchor) => {
453
- const thread = anchor[import_echo_schema.RelationSourceId];
457
+ const thread = import_echo.Relation.getSource(anchor);
454
458
  const threadId = (0, import_echo2.fullyQualifiedId)(thread);
455
459
  if (state.current !== threadId) {
456
460
  state.current = threadId;
@@ -469,7 +473,7 @@ var ThreadComplementary = ({ subject }) => {
469
473
  subject
470
474
  ]);
471
475
  const handleComment = (0, import_react3.useCallback)(async (anchor, text) => {
472
- await dispatch((0, import_app_framework2.createIntent)(import_chunk_TKHJVC2C.ThreadAction.AddMessage, {
476
+ await dispatch((0, import_app_framework2.createIntent)(import_chunk_ZGDN3XBR.ThreadAction.AddMessage, {
473
477
  anchor,
474
478
  subject,
475
479
  sender: {
@@ -477,26 +481,26 @@ var ThreadComplementary = ({ subject }) => {
477
481
  },
478
482
  text
479
483
  }));
480
- const thread = anchor[import_echo_schema.RelationSourceId];
484
+ const thread = import_echo.Relation.getSource(anchor);
481
485
  state.current = (0, import_echo2.fullyQualifiedId)(thread);
482
486
  }, [
483
487
  dispatch,
484
488
  identity,
485
489
  subject
486
490
  ]);
487
- const handleResolve = (0, import_react3.useCallback)((anchor) => dispatch((0, import_app_framework2.createIntent)(import_chunk_TKHJVC2C.ThreadAction.ToggleResolved, {
488
- thread: anchor[import_echo_schema.RelationSourceId]
491
+ const handleResolve = (0, import_react3.useCallback)((anchor) => dispatch((0, import_app_framework2.createIntent)(import_chunk_ZGDN3XBR.ThreadAction.ToggleResolved, {
492
+ thread: import_echo.Relation.getSource(anchor)
489
493
  })), [
490
494
  dispatch
491
495
  ]);
492
- const handleThreadDelete = (0, import_react3.useCallback)((anchor) => dispatch((0, import_app_framework2.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Delete, {
496
+ const handleThreadDelete = (0, import_react3.useCallback)((anchor) => dispatch((0, import_app_framework2.createIntent)(import_chunk_ZGDN3XBR.ThreadAction.Delete, {
493
497
  anchor,
494
498
  subject
495
499
  })), [
496
500
  dispatch,
497
501
  subject
498
502
  ]);
499
- const handleMessageDelete = (0, import_react3.useCallback)((anchor, messageId) => dispatch((0, import_app_framework2.createIntent)(import_chunk_TKHJVC2C.ThreadAction.DeleteMessage, {
503
+ const handleMessageDelete = (0, import_react3.useCallback)((anchor, messageId) => dispatch((0, import_app_framework2.createIntent)(import_chunk_ZGDN3XBR.ThreadAction.DeleteMessage, {
500
504
  anchor,
501
505
  subject,
502
506
  messageId
@@ -506,7 +510,7 @@ var ThreadComplementary = ({ subject }) => {
506
510
  ]);
507
511
  const comments = /* @__PURE__ */ import_react3.default.createElement(CommentsContainer, {
508
512
  anchors,
509
- currentId: attended.includes(qualifiedSubjectId) ? state.current : void 0,
513
+ currentId: attended.includes(subjectId) ? state.current : void 0,
510
514
  showResolvedThreads,
511
515
  onAttend: handleAttend,
512
516
  onComment: handleComment,
@@ -518,11 +522,11 @@ var ThreadComplementary = ({ subject }) => {
518
522
  toolbar: true
519
523
  }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.Root, {
520
524
  value: showResolvedThreads ? "all" : "unresolved",
521
- onValueChange: onChangeViewState,
522
525
  orientation: "horizontal",
523
- classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin'
526
+ classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin',
527
+ onValueChange: onChangeViewState
524
528
  }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.Tablist, {
525
- classNames: "p-1 gap-1 overflow-y-hidden border-be border-subduedSeparator"
529
+ classNames: tx("toolbar.root", "toolbar", {})
526
530
  }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.Tab, {
527
531
  value: "unresolved",
528
532
  classNames: "text-sm"
@@ -547,4 +551,4 @@ var ThreadComplementary = ({ subject }) => {
547
551
  ThreadComplementary,
548
552
  ThreadSettings
549
553
  });
550
- //# sourceMappingURL=chunk-WCQKISL5.cjs.map
554
+ //# sourceMappingURL=chunk-IP533AMV.cjs.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 Capabilities,\n LayoutAction,\n createIntent,\n useCapability,\n useCapabilities,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { Filter, Obj, Query, Relation } from '@dxos/echo';\nimport { fullyQualifiedId, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useThemeContext, 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 const { tx } = useThemeContext();\n const subjectId = fullyQualifiedId(subject);\n\n const { state, getViewState } = useCapability(ThreadCapabilities.MutableState);\n const drafts = state.drafts[subjectId];\n const viewState = useMemo(() => getViewState(subjectId), [getViewState, subjectId]);\n const { showResolvedThreads } = viewState;\n const onChangeViewState = useCallback(\n (nextValue: string) => {\n viewState.showResolvedThreads = nextValue === 'all';\n },\n [viewState],\n );\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, Relation.getSource(anchor)))\n .concat(drafts ?? []);\n\n const attended = useAttended();\n\n const handleAttend = useCallback(\n (anchor: AnchoredTo) => {\n const thread = Relation.getSource(anchor) 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 = Relation.getSource(anchor) 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: Relation.getSource(anchor) 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(subjectId) ? 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 orientation='horizontal'\n classNames='contents [&_[role=\"tabpanel\"]]:min-bs-0 [&_[role=\"tabpanel\"]]:overflow-y-auto [&_[role=\"tabpanel\"]]:scrollbar-thin'\n onValueChange={onChangeViewState}\n >\n <Tabs.Tablist classNames={tx('toolbar.root', 'toolbar', {})}>\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 { Relation } from '@dxos/echo';\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 = Relation.getSource(anchor) 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 React, { useEffect } from 'react';\n\nimport { Relation } from '@dxos/echo';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';\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) => !!Relation.getSource(anchor))\n : anchors.filter((anchor) => {\n const thread = Relation.getSource(anchor);\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 if (filteredAnchors.length === 0) {\n return (\n <div role='none' className='plb-cardSpacingBlock pli-cardSpacingInline'>\n <Callout.Root>\n <Callout.Title>\n <Trans\n {...{\n t,\n i18nKey: 'no comments message',\n components: {\n commentIcon: <Icon icon='ph--chat-text--regular' size={4} classNames='inline-block' />,\n },\n }}\n />\n </Callout.Title>\n </Callout.Root>\n </div>\n );\n }\n\n return filteredAnchors.map((anchor) => {\n const thread = Relation.getSource(anchor) as ThreadType;\n const threadId = fullyQualifiedId(thread);\n return <CommentContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;\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": "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",
6
+ "names": ["import_react", "import_app_framework", "import_echo", "import_react_ui", "import_halo", "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", "React", "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", "CallSidebar", "useCapability", "ThreadCapabilities", "CallManager", "ChannelContainer", "roomId", "sizeClass", "getSize", "commentControlClassNames", "ToggleResolvedButton", "isResolved", "onResolve", "label", "Tooltip", "Trigger", "asChild", "content", "Button", "variant", "data-testid", "onClick", "hoverableControlItem", "CheckCircle", "weight", "DeleteThreadButton", "onDelete", "X", "CommentContainer", "anchor", "current", "onAttend", "onComment", "onMessageDelete", "onThreadDelete", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "detached", "thread", "Relation", "getSource", "activity", "useStatus", "fullyQualifiedId", "threadScrollRef", "useRef", "themeMode", "useThemeContext", "textboxMetadata", "getMessageMetadata", "_count", "_setCount", "rerenderEditor", "count", "messageRef", "extensions", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "handleAttend", "useCallback", "handleResolve", "handleMessageDelete", "handleThreadDelete", "handleComment", "Thread", "onClickCapture", "onFocusCapture", "role", "mx", "hoverableControls", "hoverableFocusedWithinControls", "side", "ThreadHeading", "name", "status", "Tag", "palette", "RefArray", "targets", "messages", "filter", "isNonNullable", "message", "MessageContainer", "editable", "MessageTextbox", "onSend", "ThreadFooter", "ref", "CommentsContainer", "anchors", "currentId", "showResolvedThreads", "props", "filteredAnchors", "document", "getElementById", "Callout", "Title", "Trans", "i18nKey", "components", "commentIcon", "Icon", "size", "threadId", "ThreadSettings", "DeprecatedFormContainer", "lazy", "ChatContainer", "ThreadComplementary", "subject", "dispatchPromise", "dispatch", "useIntentDispatcher", "tx", "subjectId", "getViewState", "MutableState", "drafts", "viewState", "onChangeViewState", "nextValue", "anchorSorts", "useCapabilities", "Capabilities", "AnchorSort", "sort", "find", "Obj", "getTypename", "objectsAnchoredTo", "useQuery", "Query", "select", "Filter", "ids", "targetOf", "AnchoredTo", "toSorted", "a", "b", "instanceOf", "ThreadType", "concat", "attended", "useAttended", "createIntent", "LayoutAction", "ScrollIntoView", "part", "options", "cursor", "ThreadAction", "AddMessage", "identityDid", "did", "ToggleResolved", "Delete", "messageId", "DeleteMessage", "comments", "includes", "StackItem", "Content", "toolbar", "Tabs", "value", "orientation", "onValueChange", "Tablist", "Tab", "Tabpanel"]
7
+ }