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

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,8 +1,8 @@
1
1
  import {
2
2
  ChannelContainer,
3
3
  ChannelContainer_default
4
- } from "./chunk-5IRYNA5K.mjs";
5
- import "./chunk-FWBJHKRW.mjs";
4
+ } from "./chunk-XZKBN3NS.mjs";
5
+ import "./chunk-6NBVNXTM.mjs";
6
6
  import "./chunk-R5MDLUPC.mjs";
7
7
  import "./chunk-TAFSCSUR.mjs";
8
8
  import "./chunk-5P5BH5GE.mjs";
@@ -12,4 +12,4 @@ export {
12
12
  ChannelContainer,
13
13
  ChannelContainer_default as default
14
14
  };
15
- //# sourceMappingURL=ChannelContainer-KWXUKR5Q.mjs.map
15
+ //# sourceMappingURL=ChannelContainer-PKFBVENP.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ChannelType,
3
3
  ThreadAction
4
- } from "./chunk-WDOQXTI2.mjs";
4
+ } from "./chunk-AEXWNS6Z.mjs";
5
5
  import {
6
6
  ThreadCapabilities
7
7
  } from "./chunk-R5MDLUPC.mjs";
@@ -168,4 +168,4 @@ var app_graph_builder_default = (context) => {
168
168
  export {
169
169
  app_graph_builder_default as default
170
170
  };
171
- //# sourceMappingURL=app-graph-builder-CBWNZCXB.mjs.map
171
+ //# sourceMappingURL=app-graph-builder-OY7R7EJP.mjs.map
@@ -0,0 +1,21 @@
1
+ // packages/plugins/plugin-thread/src/capabilities/index.ts
2
+ import { lazy } from "@dxos/app-framework";
3
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-OY7R7EJP.mjs"));
4
+ var CallManager = lazy(() => import("./call-manager-APQAZWHT.mjs"));
5
+ var IntentResolver = lazy(() => import("./intent-resolver-FK2MDVDT.mjs"));
6
+ var Markdown = lazy(() => import("./markdown-TE5SWWNJ.mjs"));
7
+ var ReactRoot = lazy(() => import("./react-root-NK3A4VG7.mjs"));
8
+ var ReactSurface = lazy(() => import("./react-surface-VXUJKSOG.mjs"));
9
+ var ThreadSettings = lazy(() => import("./settings-RB2RSLXV.mjs"));
10
+ var ThreadState = lazy(() => import("./state-RKL5MSDP.mjs"));
11
+
12
+ export {
13
+ AppGraphBuilder,
14
+ CallManager,
15
+ IntentResolver,
16
+ Markdown,
17
+ ReactRoot,
18
+ ReactSurface,
19
+ ThreadState
20
+ };
21
+ //# sourceMappingURL=chunk-6NBVNXTM.mjs.map
@@ -7,7 +7,7 @@ import { Schema } from "effect";
7
7
  import { Type } from "@dxos/echo";
8
8
  import { DataType } from "@dxos/schema";
9
9
  var ThreadStatus = Schema.Union(Schema.Literal("staged"), Schema.Literal("active"), Schema.Literal("resolved"));
10
- var ThreadType = Schema.Struct({
10
+ var _ThreadType = Schema.Struct({
11
11
  name: Schema.optional(Schema.String),
12
12
  status: Schema.optional(ThreadStatus),
13
13
  messages: Schema.mutable(Schema.Array(Type.Ref(DataType.Message)))
@@ -15,7 +15,8 @@ var ThreadType = Schema.Struct({
15
15
  typename: "dxos.org/type/Thread",
16
16
  version: "0.1.0"
17
17
  }));
18
- var ChannelType = Schema.Struct({
18
+ var ThreadType = _ThreadType;
19
+ var _ChannelType = Schema.Struct({
19
20
  name: Schema.optional(Schema.String),
20
21
  defaultThread: Type.Ref(ThreadType),
21
22
  // TODO(wittjosiah): Should be an "ordered collection".
@@ -24,6 +25,7 @@ var ChannelType = Schema.Struct({
24
25
  typename: "dxos.org/type/Channel",
25
26
  version: "0.1.0"
26
27
  }));
28
+ var ChannelType = _ChannelType;
27
29
 
28
30
  // packages/plugins/plugin-thread/src/types/types.ts
29
31
  import { Schema as Schema2 } from "effect";
@@ -123,4 +125,4 @@ export {
123
125
  ThreadSettingsSchema,
124
126
  ThreadAction
125
127
  };
126
- //# sourceMappingURL=chunk-WDOQXTI2.mjs.map
128
+ //# sourceMappingURL=chunk-AEXWNS6Z.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\nimport { DataType } from '@dxos/schema';\n\nexport const ThreadStatus = Schema.Union(\n Schema.Literal('staged'),\n Schema.Literal('active'),\n Schema.Literal('resolved'),\n);\n\nconst _ThreadType = Schema.Struct({\n name: Schema.optional(Schema.String),\n status: Schema.optional(ThreadStatus),\n messages: Schema.mutable(Schema.Array(Type.Ref(DataType.Message))),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Thread', version: '0.1.0' }));\nexport interface ThreadType extends Schema.Schema.Type<typeof _ThreadType> {}\nexport const ThreadType: Type.obj<Schema.Schema<ThreadType, Schema.Schema.Encoded<typeof _ThreadType>, never>> =\n _ThreadType;\n\nconst _ChannelType = Schema.Struct({\n name: Schema.optional(Schema.String),\n defaultThread: Type.Ref(ThreadType),\n // TODO(wittjosiah): Should be an \"ordered collection\".\n threads: Schema.mutable(Schema.Array(Type.Ref(ThreadType))),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Channel', version: '0.1.0' }));\nexport interface ChannelType extends Schema.Schema.Type<typeof _ChannelType> {}\nexport const ChannelType: Type.obj<Schema.Schema<ChannelType, Schema.Schema.Encoded<typeof _ChannelType>, never>> =\n _ChannelType;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\nimport { EchoObjectSchema } from '@dxos/react-client/echo';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport { ChannelType, ThreadType } from './schema';\nimport { THREAD_PLUGIN } from '../meta';\n\nexport namespace ThreadAction {\n const THREAD_ACTION = `${THREAD_PLUGIN}/action`;\n\n export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${THREAD_ACTION}/create-channel`, {\n input: Schema.Struct({\n spaceId: Type.SpaceId,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: ChannelType,\n }),\n }) {}\n\n export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(\n `${THREAD_ACTION}/create-channel-thread`,\n {\n input: Schema.Struct({\n channel: ChannelType,\n }),\n output: Schema.Struct({\n object: ThreadType,\n }),\n },\n ) {}\n\n export class Create extends Schema.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n anchor: Schema.optional(Schema.String),\n subject: EchoObjectSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Delete extends Schema.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {\n input: Schema.Struct({\n anchor: AnchoredTo,\n subject: EchoObjectSchema,\n thread: Schema.optional(ThreadType),\n }),\n output: Schema.Void,\n }) {}\n\n export class Select extends Schema.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {\n input: Schema.Struct({\n current: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {\n input: Schema.Struct({\n thread: ThreadType,\n }),\n output: Schema.Void,\n }) {}\n\n export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${THREAD_ACTION}/add-message`, {\n input: Schema.Struct({\n subject: EchoObjectSchema,\n anchor: AnchoredTo,\n sender: DataType.Actor,\n text: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {\n input: Schema.Struct({\n anchor: AnchoredTo,\n subject: EchoObjectSchema,\n messageId: Schema.String,\n message: Schema.optional(DataType.Message),\n messageIndex: Schema.optional(Schema.Number),\n }),\n output: Schema.Void,\n }) {}\n}\n\nexport const ThreadSettingsSchema = Schema.mutable(Schema.Struct({}));\nexport type ThreadSettingsProps = Schema.Schema.Type<typeof ThreadSettingsSchema>;\n\nexport interface ThreadModel {\n root: ThreadType;\n}\n\ntype SubjectId = string;\nexport type ViewState = { showResolvedThreads: boolean };\nexport type ViewStore = Record<SubjectId, ViewState>;\n\nexport type ThreadState = {\n /** Object toolbar state. */\n toolbar: Record<string, boolean>;\n /** In-memory draft threads. */\n drafts: Record<string, AnchoredTo[]>;\n current?: string | undefined;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "Type", "DataType", "ThreadStatus", "Schema", "Union", "Literal", "_ThreadType", "Struct", "name", "optional", "String", "status", "messages", "mutable", "Array", "Type", "Ref", "DataType", "Message", "pipe", "Obj", "typename", "version", "ThreadType", "_ChannelType", "defaultThread", "threads", "ChannelType", "Schema", "Type", "EchoObjectSchema", "AnchoredTo", "DataType", "ThreadAction", "THREAD_ACTION", "THREAD_PLUGIN", "CreateChannel", "Schema", "TaggedClass", "input", "Struct", "spaceId", "Type", "SpaceId", "name", "optional", "String", "output", "object", "ChannelType", "CreateChannelThread", "channel", "ThreadType", "Create", "anchor", "subject", "EchoObjectSchema", "Void", "Delete", "AnchoredTo", "thread", "Select", "current", "ToggleResolved", "AddMessage", "sender", "DataType", "Actor", "text", "DeleteMessage", "messageId", "message", "Message", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"]
7
+ }
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  ThreadAction,
3
3
  ThreadType
4
- } from "./chunk-WDOQXTI2.mjs";
4
+ } from "./chunk-AEXWNS6Z.mjs";
5
5
  import {
6
6
  ChannelContainer
7
- } from "./chunk-5IRYNA5K.mjs";
7
+ } from "./chunk-XZKBN3NS.mjs";
8
8
  import {
9
9
  ThreadCapabilities
10
10
  } from "./chunk-R5MDLUPC.mjs";
@@ -158,12 +158,11 @@ var CallSidebar = () => {
158
158
  // packages/plugins/plugin-thread/src/components/ThreadComplementary.tsx
159
159
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
160
160
  import React6, { useCallback as useCallback2, useMemo as useMemo3 } from "react";
161
- import { createIntent, LayoutAction, useCapability as useCapability2, useCapabilities, useIntentDispatcher, Capabilities } from "@dxos/app-framework";
162
- import { Filter, Obj, Query } from "@dxos/echo";
163
- import { RelationSourceId as RelationSourceId3 } from "@dxos/echo-schema";
161
+ import { Capabilities, LayoutAction, createIntent, useCapability as useCapability2, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
162
+ import { Filter, Obj, Query, Relation as Relation3 } from "@dxos/echo";
164
163
  import { fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
165
164
  import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
166
- import { useTranslation as useTranslation4 } from "@dxos/react-ui";
165
+ import { useThemeContext as useThemeContext2, useTranslation as useTranslation4 } from "@dxos/react-ui";
167
166
  import { useAttended } from "@dxos/react-ui-attention";
168
167
  import { StackItem } from "@dxos/react-ui-stack";
169
168
  import { Tabs } from "@dxos/react-ui-tabs";
@@ -176,7 +175,7 @@ import { lazy } from "react";
176
175
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
177
176
  import { CheckCircle, X } from "@phosphor-icons/react";
178
177
  import React3, { useCallback, useMemo as useMemo2, useRef, useState as useState2 } from "react";
179
- import { RelationSourceId } from "@dxos/echo-schema";
178
+ import { Relation } from "@dxos/echo";
180
179
  import { RefArray } from "@dxos/live-object";
181
180
  import { fullyQualifiedId, getSpace, useMembers } from "@dxos/react-client/echo";
182
181
  import { useIdentity } from "@dxos/react-client/halo";
@@ -247,7 +246,7 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
247
246
  const space = getSpace(anchor);
248
247
  const members = useMembers(space?.key);
249
248
  const detached = !anchor.anchor;
250
- const thread = anchor[RelationSourceId];
249
+ const thread = Relation.getSource(anchor);
251
250
  const activity = useStatus(space, fullyQualifiedId(thread));
252
251
  const { t } = useTranslation2(THREAD_PLUGIN);
253
252
  const threadScrollRef = useRef(null);
@@ -350,18 +349,16 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
350
349
 
351
350
  // packages/plugins/plugin-thread/src/components/CommentsContainer.tsx
352
351
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
353
- import { ChatText } from "@phosphor-icons/react";
354
352
  import React4, { useEffect as useEffect2 } from "react";
355
- import { RelationSourceId as RelationSourceId2 } from "@dxos/echo-schema";
353
+ import { Relation as Relation2 } from "@dxos/echo";
356
354
  import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
357
- import { useTranslation as useTranslation3, Trans } from "@dxos/react-ui";
358
- import { descriptionMessage, mx as mx2 } from "@dxos/react-ui-theme";
355
+ import { Callout, Icon, Trans, useTranslation as useTranslation3 } from "@dxos/react-ui";
359
356
  var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }) => {
360
357
  var _effect = _useSignals4();
361
358
  try {
362
359
  const { t } = useTranslation3(THREAD_PLUGIN);
363
- const filteredAnchors = showResolvedThreads ? anchors.filter((anchor) => !!anchor[RelationSourceId2]) : anchors.filter((anchor) => {
364
- const thread = anchor[RelationSourceId2];
360
+ const filteredAnchors = showResolvedThreads ? anchors.filter((anchor) => !!Relation2.getSource(anchor)) : anchors.filter((anchor) => {
361
+ const thread = Relation2.getSource(anchor);
365
362
  return thread && thread.status !== "resolved";
366
363
  });
367
364
  useEffect2(() => {
@@ -374,8 +371,24 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
374
371
  }, [
375
372
  currentId
376
373
  ]);
377
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, filteredAnchors.length > 0 ? filteredAnchors.map((anchor) => {
378
- const thread = anchor[RelationSourceId2];
374
+ if (filteredAnchors.length === 0) {
375
+ return /* @__PURE__ */ React4.createElement("div", {
376
+ role: "none",
377
+ className: "plb-cardSpacingBlock pli-cardSpacingInline"
378
+ }, /* @__PURE__ */ React4.createElement(Callout.Root, null, /* @__PURE__ */ React4.createElement(Callout.Title, null, /* @__PURE__ */ React4.createElement(Trans, {
379
+ t,
380
+ i18nKey: "no comments message",
381
+ components: {
382
+ commentIcon: /* @__PURE__ */ React4.createElement(Icon, {
383
+ icon: "ph--chat-text--regular",
384
+ size: 4,
385
+ classNames: "inline-block"
386
+ })
387
+ }
388
+ }))));
389
+ }
390
+ return filteredAnchors.map((anchor) => {
391
+ const thread = Relation2.getSource(anchor);
379
392
  const threadId = fullyQualifiedId2(thread);
380
393
  return /* @__PURE__ */ React4.createElement(CommentContainer, {
381
394
  key: threadId,
@@ -383,20 +396,7 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
383
396
  current: currentId === threadId,
384
397
  ...props
385
398
  });
386
- }) : /* @__PURE__ */ React4.createElement("div", {
387
- role: "alert",
388
- className: mx2(descriptionMessage, "place-self-center rounded-lg text-center m-4")
389
- }, /* @__PURE__ */ React4.createElement("h2", {
390
- className: "mbe-2 font-medium text-baseText"
391
- }, t("no comments title")), /* @__PURE__ */ React4.createElement("p", null, /* @__PURE__ */ React4.createElement(Trans, {
392
- t,
393
- i18nKey: "no comments message",
394
- components: {
395
- commentIcon: /* @__PURE__ */ React4.createElement(ChatText, {
396
- className: "inline-block"
397
- })
398
- }
399
- }))));
399
+ });
400
400
  } finally {
401
401
  _effect.f();
402
402
  }
@@ -416,7 +416,7 @@ var ThreadSettings = ({ settings }) => {
416
416
  };
417
417
 
418
418
  // packages/plugins/plugin-thread/src/components/index.ts
419
- var ChannelContainer2 = lazy(() => import("./ChannelContainer-KWXUKR5Q.mjs"));
419
+ var ChannelContainer2 = lazy(() => import("./ChannelContainer-PKFBVENP.mjs"));
420
420
  var ChatContainer = lazy(() => import("./ChatContainer-RSOKYAMK.mjs"));
421
421
 
422
422
  // packages/plugins/plugin-thread/src/components/ThreadComplementary.tsx
@@ -426,15 +426,20 @@ var ThreadComplementary = ({ subject }) => {
426
426
  const { dispatchPromise: dispatch } = useIntentDispatcher();
427
427
  const identity = useIdentity2();
428
428
  const { t } = useTranslation4(THREAD_PLUGIN);
429
+ const { tx } = useThemeContext2();
430
+ const subjectId = fullyQualifiedId3(subject);
429
431
  const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
430
- const viewState = getViewState(fullyQualifiedId3(subject));
432
+ const drafts = state.drafts[subjectId];
433
+ const viewState = useMemo3(() => getViewState(subjectId), [
434
+ getViewState,
435
+ subjectId
436
+ ]);
431
437
  const { showResolvedThreads } = viewState;
432
438
  const onChangeViewState = useCallback2((nextValue) => {
433
439
  viewState.showResolvedThreads = nextValue === "all";
434
440
  }, [
435
441
  viewState
436
442
  ]);
437
- const drafts = state.drafts[fullyQualifiedId3(subject)];
438
443
  const anchorSorts = useCapabilities(Capabilities.AnchorSort);
439
444
  const sort = useMemo3(() => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort, [
440
445
  anchorSorts,
@@ -442,11 +447,10 @@ var ThreadComplementary = ({ subject }) => {
442
447
  ]);
443
448
  const space = getSpace2(subject);
444
449
  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) => Obj.instanceOf(ThreadType, anchor[RelationSourceId3])).concat(drafts ?? []);
450
+ const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj.instanceOf(ThreadType, Relation3.getSource(anchor))).concat(drafts ?? []);
446
451
  const attended = useAttended();
447
- const qualifiedSubjectId = fullyQualifiedId3(subject);
448
452
  const handleAttend = useCallback2((anchor) => {
449
- const thread = anchor[RelationSourceId3];
453
+ const thread = Relation3.getSource(anchor);
450
454
  const threadId = fullyQualifiedId3(thread);
451
455
  if (state.current !== threadId) {
452
456
  state.current = threadId;
@@ -473,7 +477,7 @@ var ThreadComplementary = ({ subject }) => {
473
477
  },
474
478
  text
475
479
  }));
476
- const thread = anchor[RelationSourceId3];
480
+ const thread = Relation3.getSource(anchor);
477
481
  state.current = fullyQualifiedId3(thread);
478
482
  }, [
479
483
  dispatch,
@@ -481,7 +485,7 @@ var ThreadComplementary = ({ subject }) => {
481
485
  subject
482
486
  ]);
483
487
  const handleResolve = useCallback2((anchor) => dispatch(createIntent(ThreadAction.ToggleResolved, {
484
- thread: anchor[RelationSourceId3]
488
+ thread: Relation3.getSource(anchor)
485
489
  })), [
486
490
  dispatch
487
491
  ]);
@@ -502,7 +506,7 @@ var ThreadComplementary = ({ subject }) => {
502
506
  ]);
503
507
  const comments = /* @__PURE__ */ React6.createElement(CommentsContainer, {
504
508
  anchors,
505
- currentId: attended.includes(qualifiedSubjectId) ? state.current : void 0,
509
+ currentId: attended.includes(subjectId) ? state.current : void 0,
506
510
  showResolvedThreads,
507
511
  onAttend: handleAttend,
508
512
  onComment: handleComment,
@@ -514,11 +518,11 @@ var ThreadComplementary = ({ subject }) => {
514
518
  toolbar: true
515
519
  }, /* @__PURE__ */ React6.createElement(Tabs.Root, {
516
520
  value: showResolvedThreads ? "all" : "unresolved",
517
- onValueChange: onChangeViewState,
518
521
  orientation: "horizontal",
519
- classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin'
522
+ classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin',
523
+ onValueChange: onChangeViewState
520
524
  }, /* @__PURE__ */ React6.createElement(Tabs.Tablist, {
521
- classNames: "p-1 gap-1 overflow-y-hidden border-be border-subduedSeparator"
525
+ classNames: tx("toolbar.root", "toolbar", {})
522
526
  }, /* @__PURE__ */ React6.createElement(Tabs.Tab, {
523
527
  value: "unresolved",
524
528
  classNames: "text-sm"
@@ -543,4 +547,4 @@ export {
543
547
  ChannelContainer2 as ChannelContainer,
544
548
  ChatContainer
545
549
  };
546
- //# sourceMappingURL=chunk-3EYX6CV7.mjs.map
550
+ //# sourceMappingURL=chunk-PG5CTFKK.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 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": ["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", "Capabilities", "LayoutAction", "createIntent", "useCapability", "useCapabilities", "useIntentDispatcher", "Filter", "Obj", "Query", "Relation", "fullyQualifiedId", "getSpace", "useQuery", "useIdentity", "useThemeContext", "useTranslation", "useAttended", "StackItem", "Tabs", "AnchoredTo", "lazy", "CheckCircle", "X", "React", "useCallback", "useMemo", "useRef", "useState", "Relation", "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", "Relation", "getSource", "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", "React", "useEffect", "Relation", "fullyQualifiedId", "Callout", "Icon", "Trans", "useTranslation", "CommentsContainer", "anchors", "currentId", "showResolvedThreads", "props", "t", "useTranslation", "THREAD_PLUGIN", "filteredAnchors", "filter", "anchor", "Relation", "getSource", "thread", "status", "useEffect", "document", "getElementById", "scrollIntoView", "behavior", "block", "length", "React", "div", "role", "className", "Callout", "Root", "Title", "Trans", "i18nKey", "components", "commentIcon", "Icon", "icon", "size", "classNames", "map", "threadId", "fullyQualifiedId", "CommentContainer", "key", "current", "React", "DeprecatedFormContainer", "ThreadSettings", "settings", "React", "DeprecatedFormContainer", "ChannelContainer", "lazy", "ChatContainer", "ThreadComplementary", "subject", "dispatchPromise", "dispatch", "useIntentDispatcher", "identity", "useIdentity", "t", "useTranslation", "THREAD_PLUGIN", "tx", "useThemeContext", "subjectId", "fullyQualifiedId", "state", "getViewState", "useCapability", "ThreadCapabilities", "MutableState", "drafts", "viewState", "useMemo", "showResolvedThreads", "onChangeViewState", "useCallback", "nextValue", "anchorSorts", "useCapabilities", "Capabilities", "AnchorSort", "sort", "find", "key", "Obj", "getTypename", "space", "getSpace", "objectsAnchoredTo", "useQuery", "Query", "select", "Filter", "ids", "id", "targetOf", "AnchoredTo", "anchors", "toSorted", "a", "b", "filter", "anchor", "instanceOf", "ThreadType", "Relation", "getSource", "concat", "attended", "useAttended", "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", "orientation", "classNames", "onValueChange", "Tablist", "Tab", "Tabpanel"]
7
+ }
@@ -54,7 +54,7 @@ var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJ
54
54
  className: mx("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition)
55
55
  }, /* @__PURE__ */ React.createElement(NativeToolbar.Root, {
56
56
  classNames: [
57
- "p-2 bg-modalSurface rounded-lg shadow-lg",
57
+ "p-2 bg-modalSurface rounded-md shadow-md",
58
58
  classNames
59
59
  ]
60
60
  }, /* @__PURE__ */ React.createElement(ToggleButton, {
@@ -927,40 +927,38 @@ var DisplayNameMissing = () => {
927
927
  };
928
928
  var useChannelToolbarActions = (onJoinCall) => {
929
929
  const creator = useMemo4(() => Rx.make(() => {
930
- const nodes = [];
931
- const edges = [];
932
- const rootGroup = createMenuItemGroup("root", {
933
- label: [
934
- "channel toolbar title",
930
+ return {
931
+ nodes: [
932
+ createMenuItemGroup("root", {
933
+ label: [
934
+ "channel toolbar title",
935
+ {
936
+ ns: THREAD_PLUGIN
937
+ }
938
+ ]
939
+ }),
940
+ createMenuAction("video-call", () => onJoinCall?.(), {
941
+ label: [
942
+ "start video call label",
943
+ {
944
+ ns: THREAD_PLUGIN
945
+ }
946
+ ],
947
+ icon: "ph--video-camera--regular",
948
+ type: "video-call"
949
+ })
950
+ ],
951
+ edges: [
935
952
  {
936
- ns: THREAD_PLUGIN
953
+ source: "root",
954
+ target: "video-call"
937
955
  }
938
956
  ]
939
- });
940
- nodes.push(rootGroup);
941
- const sortAction = createMenuAction("video-call", () => onJoinCall?.(), {
942
- label: [
943
- "start video call label",
944
- {
945
- ns: THREAD_PLUGIN
946
- }
947
- ],
948
- icon: "ph--video-camera--regular",
949
- type: "video-call"
950
- });
951
- nodes.push(sortAction);
952
- edges.push({
953
- source: "root",
954
- target: sortAction.id
955
- });
956
- return {
957
- nodes,
958
- edges
959
957
  };
960
958
  }), []);
961
959
  return useMenuActions(creator);
962
960
  };
963
- var ChannelToolbar = ({ attendableId, role, onJoinCall }) => {
961
+ var ChannelToolbar = ({ attendableId, role, onJoinCall, classNames }) => {
964
962
  var _effect = _useSignals10();
965
963
  try {
966
964
  const menuProps = useChannelToolbarActions(onJoinCall);
@@ -969,7 +967,9 @@ var ChannelToolbar = ({ attendableId, role, onJoinCall }) => {
969
967
  }, /* @__PURE__ */ React10.createElement(MenuProvider, {
970
968
  ...menuProps,
971
969
  attendableId
972
- }, /* @__PURE__ */ React10.createElement(ToolbarMenu, null)));
970
+ }, /* @__PURE__ */ React10.createElement(ToolbarMenu, {
971
+ classNames
972
+ })));
973
973
  } finally {
974
974
  _effect.f();
975
975
  }
@@ -980,4 +980,4 @@ export {
980
980
  ChannelContainer,
981
981
  ChannelContainer_default
982
982
  };
983
- //# sourceMappingURL=chunk-5IRYNA5K.mjs.map
983
+ //# sourceMappingURL=chunk-XZKBN3NS.mjs.map