@dxos/plugin-thread 0.8.4-main.2c6827d → 0.8.4-main.3c1ae3b
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.
- package/dist/lib/browser/{ChannelContainer-JI3ZRZ5S.mjs → ChannelContainer-3BKLNZ4D.mjs} +4 -4
- package/dist/lib/browser/{ChatContainer-6FVFME3R.mjs → ChatContainer-KPY4BAUE.mjs} +2 -2
- package/dist/lib/browser/{app-graph-builder-URVQHGMR.mjs → app-graph-builder-TWJ2UCOZ.mjs} +2 -2
- package/dist/lib/browser/{blueprint-definition-TQ4JFMZZ.mjs → blueprint-definition-UO43FHAE.mjs} +6 -5
- package/dist/lib/browser/blueprint-definition-UO43FHAE.mjs.map +7 -0
- package/dist/lib/browser/chunk-6E6VNV6V.mjs +25 -0
- package/dist/lib/browser/{chunk-CBUNHCOE.mjs.map → chunk-6E6VNV6V.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-F36NHPJG.mjs → chunk-ALZKJOZK.mjs} +2 -2
- package/dist/lib/browser/{chunk-R5UOPOO7.mjs → chunk-JDJPMI7V.mjs} +10 -9
- package/dist/lib/browser/chunk-JDJPMI7V.mjs.map +7 -0
- package/dist/lib/browser/{chunk-VIRD2QSK.mjs → chunk-SS3O5SOQ.mjs} +7 -7
- package/dist/lib/browser/{chunk-VIRD2QSK.mjs.map → chunk-SS3O5SOQ.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-6LWKNZUV.mjs → chunk-TLOOZTRD.mjs} +1 -1
- package/dist/lib/browser/chunk-TLOOZTRD.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +19 -21
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-YR6W4CRP.mjs → intent-resolver-G33FT3NO.mjs} +15 -11
- package/dist/lib/browser/intent-resolver-G33FT3NO.mjs.map +7 -0
- package/dist/lib/browser/{markdown-GSOBOXA7.mjs → markdown-GSTZY2JL.mjs} +9 -8
- package/dist/lib/browser/markdown-GSTZY2JL.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-RAWRPF7Z.mjs → react-root-GRZVEGGE.mjs} +6 -6
- package/dist/lib/browser/{react-surface-GOEFSXQ6.mjs → react-surface-C2OIZGFN.mjs} +6 -6
- package/dist/lib/browser/repair-JFJLEM2O.mjs +35 -0
- package/dist/lib/browser/repair-JFJLEM2O.mjs.map +7 -0
- package/dist/lib/browser/{settings-JN2HHORY.mjs → settings-E6IOLK46.mjs} +2 -2
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{ChannelContainer-RQY4PR4F.mjs → ChannelContainer-I4U4TEEY.mjs} +4 -4
- package/dist/lib/node-esm/{ChatContainer-KWNON7EN.mjs → ChatContainer-TLQG23K7.mjs} +2 -2
- package/dist/lib/node-esm/{app-graph-builder-2IH5RPR7.mjs → app-graph-builder-VD6I2V5H.mjs} +2 -2
- package/dist/lib/node-esm/{blueprint-definition-TSX5HHW7.mjs → blueprint-definition-WANHWSF5.mjs} +6 -5
- package/dist/lib/node-esm/blueprint-definition-WANHWSF5.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-Y3F2SGNH.mjs → chunk-AB42KYF3.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-Z4GUSLWL.mjs → chunk-E5HNHFYH.mjs} +1 -1
- package/dist/lib/{browser/chunk-6LWKNZUV.mjs.map → node-esm/chunk-E5HNHFYH.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-MEIWWPR2.mjs → chunk-P2M364TO.mjs} +10 -9
- package/dist/lib/node-esm/chunk-P2M364TO.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-QFCIKJOD.mjs → chunk-RDD44HYY.mjs} +7 -7
- package/dist/lib/node-esm/{chunk-QFCIKJOD.mjs.map → chunk-RDD44HYY.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-UPA2Q5YI.mjs +27 -0
- package/dist/lib/node-esm/{chunk-I3O6NXMN.mjs.map → chunk-UPA2Q5YI.mjs.map} +3 -3
- package/dist/lib/node-esm/index.mjs +19 -21
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-SJFABEE7.mjs → intent-resolver-4PX3WXQG.mjs} +15 -11
- package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-GG5566TL.mjs → markdown-MC5OP2UR.mjs} +9 -8
- package/dist/lib/node-esm/markdown-MC5OP2UR.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-K5OGECUS.mjs → react-root-5IYK7CTL.mjs} +6 -6
- package/dist/lib/node-esm/{react-surface-5QDQD7MN.mjs → react-surface-GWBXMENS.mjs} +6 -6
- package/dist/lib/node-esm/repair-RMLR24YR.mjs +36 -0
- package/dist/lib/node-esm/repair-RMLR24YR.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-VSPM3BIM.mjs → settings-RGZHWDSO.mjs} +2 -2
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/repair.d.ts +4 -0
- package/dist/types/src/capabilities/repair.d.ts.map +1 -0
- package/dist/types/src/components/ChannelContainer.stories.d.ts +4 -0
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat.stories.d.ts +4 -0
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts +4 -0
- package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +3 -1
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +4 -0
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +4 -0
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts.map +1 -1
- package/dist/types/src/functions/create-proposals.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +4 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Channel.d.ts +3 -3
- package/dist/types/src/types/Channel.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +114 -141
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +47 -47
- package/src/ThreadPlugin.tsx +14 -20
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/intent-resolver.ts +9 -6
- package/src/capabilities/repair.ts +40 -0
- package/src/components/MessageContainer.tsx +6 -4
- package/src/components/ThreadCompanion.tsx +1 -1
- package/src/extensions/threads.ts +7 -6
- package/src/functions/create-proposals.ts +5 -4
- package/src/translations.ts +2 -0
- package/src/types/Channel.ts +3 -3
- package/src/types/types.ts +4 -3
- package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-CBUNHCOE.mjs +0 -23
- package/dist/lib/browser/chunk-R5UOPOO7.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-YR6W4CRP.mjs.map +0 -7
- package/dist/lib/browser/markdown-GSOBOXA7.mjs.map +0 -7
- package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-I3O6NXMN.mjs +0 -25
- package/dist/lib/node-esm/chunk-MEIWWPR2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Z4GUSLWL.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-SJFABEE7.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-GG5566TL.mjs.map +0 -7
- /package/dist/lib/browser/{ChannelContainer-JI3ZRZ5S.mjs.map → ChannelContainer-3BKLNZ4D.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-6FVFME3R.mjs.map → ChatContainer-KPY4BAUE.mjs.map} +0 -0
- /package/dist/lib/browser/{app-graph-builder-URVQHGMR.mjs.map → app-graph-builder-TWJ2UCOZ.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-F36NHPJG.mjs.map → chunk-ALZKJOZK.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-RAWRPF7Z.mjs.map → react-root-GRZVEGGE.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-GOEFSXQ6.mjs.map → react-surface-C2OIZGFN.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-JN2HHORY.mjs.map → settings-E6IOLK46.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChannelContainer-RQY4PR4F.mjs.map → ChannelContainer-I4U4TEEY.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-KWNON7EN.mjs.map → ChatContainer-TLQG23K7.mjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-builder-2IH5RPR7.mjs.map → app-graph-builder-VD6I2V5H.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-Y3F2SGNH.mjs.map → chunk-AB42KYF3.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-K5OGECUS.mjs.map → react-root-5IYK7CTL.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-surface-5QDQD7MN.mjs.map → react-surface-GWBXMENS.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-VSPM3BIM.mjs.map → settings-RGZHWDSO.mjs.map} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ChannelContainer,
|
|
3
3
|
ChannelContainer_default
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-ALZKJOZK.mjs";
|
|
5
|
+
import "./chunk-6E6VNV6V.mjs";
|
|
6
6
|
import "./chunk-CFC7LEPD.mjs";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-TLOOZTRD.mjs";
|
|
8
8
|
import "./chunk-KOBXMDCI.mjs";
|
|
9
9
|
import "./chunk-CP7E2HRE.mjs";
|
|
10
10
|
import "./chunk-ISCHODBV.mjs";
|
|
@@ -14,4 +14,4 @@ export {
|
|
|
14
14
|
ChannelContainer,
|
|
15
15
|
ChannelContainer_default as default
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=ChannelContainer-
|
|
17
|
+
//# sourceMappingURL=ChannelContainer-3BKLNZ4D.mjs.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
ChatContainer,
|
|
3
3
|
ChatContainer_default,
|
|
4
4
|
ChatHeading
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-TLOOZTRD.mjs";
|
|
6
6
|
import "./chunk-KOBXMDCI.mjs";
|
|
7
7
|
import "./chunk-CP7E2HRE.mjs";
|
|
8
8
|
import "./chunk-ISCHODBV.mjs";
|
|
@@ -13,4 +13,4 @@ export {
|
|
|
13
13
|
ChatHeading,
|
|
14
14
|
ChatContainer_default as default
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=ChatContainer-
|
|
16
|
+
//# sourceMappingURL=ChatContainer-KPY4BAUE.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Channel_exports,
|
|
3
3
|
ThreadAction
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JDJPMI7V.mjs";
|
|
5
5
|
import {
|
|
6
6
|
ThreadCapabilities
|
|
7
7
|
} from "./chunk-CFC7LEPD.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-
|
|
171
|
+
//# sourceMappingURL=app-graph-builder-TWJ2UCOZ.mjs.map
|
package/dist/lib/browser/{blueprint-definition-TQ4JFMZZ.mjs → blueprint-definition-UO43FHAE.mjs}
RENAMED
|
@@ -12,8 +12,9 @@ import * as Function from "effect/Function";
|
|
|
12
12
|
import * as Schema from "effect/Schema";
|
|
13
13
|
import { ArtifactId, computeDiffsWithCursors } from "@dxos/assistant";
|
|
14
14
|
import { Obj, Ref, Relation } from "@dxos/echo";
|
|
15
|
+
import { Database } from "@dxos/echo";
|
|
15
16
|
import { createDocAccessor } from "@dxos/echo-db";
|
|
16
|
-
import {
|
|
17
|
+
import { defineFunction } from "@dxos/functions";
|
|
17
18
|
import { DXN } from "@dxos/keys";
|
|
18
19
|
import { Markdown } from "@dxos/plugin-markdown/types";
|
|
19
20
|
import { AnchoredTo, Message, Thread } from "@dxos/types";
|
|
@@ -29,7 +30,7 @@ var create_proposals_default = defineFunction({
|
|
|
29
30
|
}),
|
|
30
31
|
outputSchema: Schema.Void,
|
|
31
32
|
handler: Effect.fn(function* ({ data: { id, diffs: _diffs } }) {
|
|
32
|
-
const object = yield*
|
|
33
|
+
const object = yield* Database.Service.resolve(DXN.parse(id), Markdown.Document);
|
|
33
34
|
const content = yield* Effect.promise(() => object.content.load());
|
|
34
35
|
const accessor = createDocAccessor(content, [
|
|
35
36
|
"content"
|
|
@@ -59,8 +60,8 @@ var create_proposals_default = defineFunction({
|
|
|
59
60
|
[Relation.Target]: object,
|
|
60
61
|
anchor: cursor
|
|
61
62
|
});
|
|
62
|
-
yield*
|
|
63
|
-
yield*
|
|
63
|
+
yield* Database.Service.add(thread);
|
|
64
|
+
yield* Database.Service.add(relation);
|
|
64
65
|
})), Effect.allWith({
|
|
65
66
|
concurrency: "unbounded"
|
|
66
67
|
}));
|
|
@@ -98,4 +99,4 @@ export {
|
|
|
98
99
|
ASSISTANT_BLUEPRINT_KEY,
|
|
99
100
|
blueprint_definition_default as default
|
|
100
101
|
};
|
|
101
|
-
//# sourceMappingURL=blueprint-definition-
|
|
102
|
+
//# sourceMappingURL=blueprint-definition-UO43FHAE.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/create-proposals.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type Capability, contributes } from '@dxos/app-framework';\nimport { Blueprint, Template } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\nimport { createProposals } from '../functions';\n\nconst functions: FunctionDefinition[] = [createProposals];\n\nexport const ASSISTANT_BLUEPRINT_KEY = 'dxos.org/blueprint/thread';\n\nexport default (): Capability<any>[] => [\n contributes(Capabilities.Functions, functions),\n contributes(\n Capabilities.BlueprintDefinition,\n Blueprint.make({\n key: ASSISTANT_BLUEPRINT_KEY,\n name: 'Thread',\n tools: Blueprint.toolDefinitions({ functions }),\n instructions: Template.make({\n // TODO(wittjosiah): Move example to function input schema annotation.\n source: trim`\n You can update markdown documents via proposals.\n For each diff, respond with the smallest possible matching span.\n For example:\n - \"There is a tyop in this sentence.\"\n + \"There is a typo in this sentence.\"\n - \"This id goof.\"\n + \"This is good.\"\n `,\n }),\n }),\n ),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId, computeDiffsWithCursors } from '@dxos/assistant';\nimport { Obj, Ref, Relation } from '@dxos/echo';\nimport { Database } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { defineFunction } from '@dxos/functions';\nimport { DXN } from '@dxos/keys';\nimport { Markdown } from '@dxos/plugin-markdown/types';\nimport { AnchoredTo, Message, Thread } from '@dxos/types';\n\nexport default defineFunction({\n key: 'dxos.org/function/thread/create-proposals',\n name: 'Create Proposals',\n description: 'Proposes a set of changes to a document.',\n inputSchema: Schema.Struct({\n id: ArtifactId,\n diffs: Schema.Array(Schema.String).annotations({\n description: 'The diffs to propose for the document.',\n }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ data: { id, diffs: _diffs } }) {\n const object = yield* Database.Service.resolve(DXN.parse(id), Markdown.Document);\n const content = yield* Effect.promise(() => object.content.load());\n const accessor = createDocAccessor(content, ['content']);\n\n yield* Function.pipe(\n computeDiffsWithCursors(accessor, _diffs),\n Array.map(\n Effect.fnUntraced(function* ({ cursor, text }) {\n const proposal = Obj.make(Message.Message, {\n created: new Date().toISOString(),\n sender: { role: 'assistant' },\n blocks: [{ _tag: 'proposal', text }],\n });\n const thread = Thread.make({ name: 'Proposal', messages: [Ref.make(proposal)], status: 'active' });\n const relation = Relation.make(AnchoredTo.AnchoredTo, {\n [Relation.Source]: thread,\n [Relation.Target]: object,\n anchor: cursor,\n });\n yield* Database.Service.add(thread);\n yield* Database.Service.add(relation);\n }),\n ),\n Effect.allWith({ concurrency: 'unbounded' }),\n );\n }),\n});\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,cAA+BC,mBAAmB;AAC3D,SAASC,WAAWC,gBAAgB;AAEpC,SAASC,YAAY;;;ACHrB,YAAYC,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AAExB,SAASC,YAAYC,+BAA+B;AACpD,SAASC,KAAKC,KAAKC,gBAAgB;AACnC,SAASC,gBAAgB;AACzB,SAASC,yBAAyB;AAClC,SAASC,sBAAsB;AAC/B,SAASC,WAAW;AACpB,SAASC,gBAAgB;AACzB,SAASC,YAAYC,SAASC,cAAc;AAE5C,IAAA,2BAAeC,eAAe;EAC5BC,KAAK;EACLC,MAAM;EACNC,aAAa;EACbC,aAAoBC,cAAO;IACzBC,IAAIC;IACJC,OAAcC,aAAaC,aAAM,EAAEC,YAAY;MAC7CR,aAAa;IACf,CAAA;EACF,CAAA;EACAS,cAAqBC;EACrBC,SAAgBC,UAAG,WAAW,EAAEC,MAAM,EAAEV,IAAIE,OAAOS,OAAM,EAAE,GAAE;AAC3D,UAAMC,SAAS,OAAOC,SAASC,QAAQC,QAAQC,IAAIC,MAAMjB,EAAAA,GAAKkB,SAASC,QAAQ;AAC/E,UAAMC,UAAU,OAAcC,eAAQ,MAAMT,OAAOQ,QAAQE,KAAI,CAAA;AAC/D,UAAMC,WAAWC,kBAAkBJ,SAAS;MAAC;KAAU;AAEvD,WAAgBK,cACdC,wBAAwBH,UAAUZ,MAAAA,GAC5BgB,UACGC,kBAAW,WAAW,EAAEC,QAAQC,KAAI,GAAE;AAC3C,YAAMC,WAAWC,IAAIC,KAAKC,QAAQA,SAAS;QACzCC,UAAS,oBAAIC,KAAAA,GAAOC,YAAW;QAC/BC,QAAQ;UAAEC,MAAM;QAAY;QAC5BC,QAAQ;UAAC;YAAEC,MAAM;YAAYX;UAAK;;MACpC,CAAA;AACA,YAAMY,SAASC,OAAOV,KAAK;QAAErC,MAAM;QAAYgD,UAAU;UAACC,IAAIZ,KAAKF,QAAAA;;QAAYe,QAAQ;MAAS,CAAA;AAChG,YAAMC,WAAWC,SAASf,KAAKgB,WAAWA,YAAY;QACpD,CAACD,SAASE,MAAM,GAAGR;QACnB,CAACM,SAASG,MAAM,GAAGvC;QACnBwC,QAAQvB;MACV,CAAA;AACA,aAAOhB,SAASC,QAAQuC,IAAIX,MAAAA;AAC5B,aAAO7B,SAASC,QAAQuC,IAAIN,QAAAA;IAC9B,CAAA,CAAA,GAEKO,eAAQ;MAAEC,aAAa;IAAY,CAAA,CAAA;EAE9C,CAAA;AACF,CAAA;;;AD7CA,IAAMC,YAAkC;EAACC;;AAElC,IAAMC,0BAA0B;AAEvC,IAAA,gCAAe,MAAyB;EACtCC,YAAYC,aAAaC,WAAWL,SAAAA;EACpCG,YACEC,aAAaE,qBACbC,UAAUC,KAAK;IACbC,KAAKP;IACLQ,MAAM;IACNC,OAAOJ,UAAUK,gBAAgB;MAAEZ;IAAU,CAAA;IAC7Ca,cAAcC,SAASN,KAAK;;MAE1BO,QAAQC;;;;;;;;;IASV,CAAA;EACF,CAAA,CAAA;;",
|
|
6
|
+
"names": ["Capabilities", "contributes", "Blueprint", "Template", "trim", "Array", "Effect", "Function", "Schema", "ArtifactId", "computeDiffsWithCursors", "Obj", "Ref", "Relation", "Database", "createDocAccessor", "defineFunction", "DXN", "Markdown", "AnchoredTo", "Message", "Thread", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "id", "ArtifactId", "diffs", "Array", "String", "annotations", "outputSchema", "Void", "handler", "fn", "data", "_diffs", "object", "Database", "Service", "resolve", "DXN", "parse", "Markdown", "Document", "content", "promise", "load", "accessor", "createDocAccessor", "pipe", "computeDiffsWithCursors", "map", "fnUntraced", "cursor", "text", "proposal", "Obj", "make", "Message", "created", "Date", "toISOString", "sender", "role", "blocks", "_tag", "thread", "Thread", "messages", "Ref", "status", "relation", "Relation", "AnchoredTo", "Source", "Target", "anchor", "add", "allWith", "concurrency", "functions", "createProposals", "ASSISTANT_BLUEPRINT_KEY", "contributes", "Capabilities", "Functions", "BlueprintDefinition", "Blueprint", "make", "key", "name", "tools", "toolDefinitions", "instructions", "Template", "source", "trim"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// src/capabilities/index.ts
|
|
2
|
+
import { lazy } from "@dxos/app-framework";
|
|
3
|
+
var AppGraphBuilder = lazy(() => import("./app-graph-builder-TWJ2UCOZ.mjs"));
|
|
4
|
+
var BlueprintDefinition = lazy(() => import("./blueprint-definition-UO43FHAE.mjs"));
|
|
5
|
+
var CallManager = lazy(() => import("./call-manager-4YFT4XA6.mjs"));
|
|
6
|
+
var IntentResolver = lazy(() => import("./intent-resolver-G33FT3NO.mjs"));
|
|
7
|
+
var Markdown = lazy(() => import("./markdown-GSTZY2JL.mjs"));
|
|
8
|
+
var ReactRoot = lazy(() => import("./react-root-GRZVEGGE.mjs"));
|
|
9
|
+
var ReactSurface = lazy(() => import("./react-surface-C2OIZGFN.mjs"));
|
|
10
|
+
var Repair = lazy(() => import("./repair-JFJLEM2O.mjs"));
|
|
11
|
+
var ThreadSettings = lazy(() => import("./settings-E6IOLK46.mjs"));
|
|
12
|
+
var ThreadState = lazy(() => import("./state-UYPLBGZJ.mjs"));
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
AppGraphBuilder,
|
|
16
|
+
BlueprintDefinition,
|
|
17
|
+
CallManager,
|
|
18
|
+
IntentResolver,
|
|
19
|
+
Markdown,
|
|
20
|
+
ReactRoot,
|
|
21
|
+
ReactSurface,
|
|
22
|
+
Repair,
|
|
23
|
+
ThreadState
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=chunk-6E6VNV6V.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/capabilities/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const BlueprintDefinition = lazy(() => import('./blueprint-definition'));\nexport const CallManager = lazy(() => import('./call-manager'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactRoot = lazy(() => import('./react-root'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\n\nexport * from './capabilities';\n"],
|
|
5
|
-
"mappings": ";AAIA,SAASA,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,sBAAsBD,KAAK,MAAM,OAAO,qCAAA,CAAA;AAC9C,IAAME,cAAcF,KAAK,MAAM,OAAO,6BAAA,CAAA;AACtC,IAAMG,iBAAiBH,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMI,WAAWJ,KAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAMK,YAAYL,KAAK,MAAM,OAAO,2BAAA,CAAA;AACpC,IAAMM,eAAeN,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMO,
|
|
6
|
-
"names": ["lazy", "AppGraphBuilder", "lazy", "BlueprintDefinition", "CallManager", "IntentResolver", "Markdown", "ReactRoot", "ReactSurface", "ThreadSettings", "ThreadState"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const BlueprintDefinition = lazy(() => import('./blueprint-definition'));\nexport const CallManager = lazy(() => import('./call-manager'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactRoot = lazy(() => import('./react-root'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const Repair = lazy(() => import('./repair'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\n\nexport * from './capabilities';\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,sBAAsBD,KAAK,MAAM,OAAO,qCAAA,CAAA;AAC9C,IAAME,cAAcF,KAAK,MAAM,OAAO,6BAAA,CAAA;AACtC,IAAMG,iBAAiBH,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMI,WAAWJ,KAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAMK,YAAYL,KAAK,MAAM,OAAO,2BAAA,CAAA;AACpC,IAAMM,eAAeN,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMO,SAASP,KAAK,MAAM,OAAO,uBAAA,CAAA;AACjC,IAAMQ,iBAAiBR,KAAK,MAAM,OAAO,yBAAA,CAAA;AACzC,IAAMS,cAAcT,KAAK,MAAM,OAAO,sBAAA,CAAA;",
|
|
6
|
+
"names": ["lazy", "AppGraphBuilder", "lazy", "BlueprintDefinition", "CallManager", "IntentResolver", "Markdown", "ReactRoot", "ReactSurface", "Repair", "ThreadSettings", "ThreadState"]
|
|
7
7
|
}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-CFC7LEPD.mjs";
|
|
4
4
|
import {
|
|
5
5
|
ChatContainer_default
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TLOOZTRD.mjs";
|
|
7
7
|
import {
|
|
8
8
|
useDebugMode
|
|
9
9
|
} from "./chunk-KOBXMDCI.mjs";
|
|
@@ -986,4 +986,4 @@ export {
|
|
|
986
986
|
ChannelContainer,
|
|
987
987
|
ChannelContainer_default
|
|
988
988
|
};
|
|
989
|
-
//# sourceMappingURL=chunk-
|
|
989
|
+
//# sourceMappingURL=chunk-ALZKJOZK.mjs.map
|
|
@@ -13,13 +13,13 @@ __export(Channel_exports, {
|
|
|
13
13
|
});
|
|
14
14
|
import * as Schema from "effect/Schema";
|
|
15
15
|
import { Obj, Ref, Type } from "@dxos/echo";
|
|
16
|
-
import {
|
|
16
|
+
import { FormInputAnnotation } from "@dxos/echo/internal";
|
|
17
17
|
import { Thread } from "@dxos/types";
|
|
18
18
|
var _Channel = Schema.Struct({
|
|
19
19
|
name: Schema.optional(Schema.String),
|
|
20
|
-
defaultThread: Type.Ref(Thread.Thread).pipe(
|
|
20
|
+
defaultThread: Type.Ref(Thread.Thread).pipe(FormInputAnnotation.set(false)),
|
|
21
21
|
// TODO(wittjosiah): Should be an "ordered collection".
|
|
22
|
-
threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable,
|
|
22
|
+
threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable, FormInputAnnotation.set(false))
|
|
23
23
|
}).pipe(Type.Obj({
|
|
24
24
|
typename: "dxos.org/type/Channel",
|
|
25
25
|
version: "0.1.0"
|
|
@@ -36,23 +36,24 @@ var make = (props = {}) => Obj.make(Channel, {
|
|
|
36
36
|
|
|
37
37
|
// src/types/types.ts
|
|
38
38
|
import * as Schema2 from "effect/Schema";
|
|
39
|
-
import {
|
|
39
|
+
import { Key } from "@dxos/echo";
|
|
40
40
|
import { EchoObjectSchema, SpaceSchema } from "@dxos/react-client/echo";
|
|
41
41
|
import { Collection } from "@dxos/schema";
|
|
42
42
|
import { Actor, AnchoredTo, Message, Thread as Thread2 } from "@dxos/types";
|
|
43
43
|
(function(ThreadAction2) {
|
|
44
|
-
class
|
|
44
|
+
class OnCreateSpace extends Schema2.TaggedClass()(`${meta.id}/action/on-space-created`, {
|
|
45
45
|
input: Schema2.Struct({
|
|
46
46
|
space: SpaceSchema,
|
|
47
|
-
rootCollection: Collection.Collection
|
|
47
|
+
rootCollection: Collection.Collection,
|
|
48
|
+
isDefault: Schema2.Boolean.pipe(Schema2.optional)
|
|
48
49
|
}),
|
|
49
50
|
output: Schema2.Void
|
|
50
51
|
}) {
|
|
51
52
|
}
|
|
52
|
-
ThreadAction2.
|
|
53
|
+
ThreadAction2.OnCreateSpace = OnCreateSpace;
|
|
53
54
|
class CreateChannel extends Schema2.TaggedClass()(`${meta.id}/action/create-channel`, {
|
|
54
55
|
input: Schema2.Struct({
|
|
55
|
-
spaceId:
|
|
56
|
+
spaceId: Key.SpaceId,
|
|
56
57
|
name: Schema2.optional(Schema2.String)
|
|
57
58
|
}),
|
|
58
59
|
output: Schema2.Struct({
|
|
@@ -139,4 +140,4 @@ export {
|
|
|
139
140
|
ThreadSettingsSchema,
|
|
140
141
|
ThreadAction
|
|
141
142
|
};
|
|
142
|
-
//# sourceMappingURL=chunk-
|
|
143
|
+
//# sourceMappingURL=chunk-JDJPMI7V.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/Channel.ts", "../../../src/types/types.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Obj, Ref, Type } from '@dxos/echo';\nimport { FormInputAnnotation } from '@dxos/echo/internal';\nimport { Thread } from '@dxos/types';\n\nconst _Channel = Schema.Struct({\n name: Schema.optional(Schema.String),\n defaultThread: Type.Ref(Thread.Thread).pipe(FormInputAnnotation.set(false)),\n // TODO(wittjosiah): Should be an \"ordered collection\".\n threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable, FormInputAnnotation.set(false)),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Channel', version: '0.1.0' }));\nexport interface Channel extends Schema.Schema.Type<typeof _Channel> {}\nexport interface ChannelEncoded extends Schema.Schema.Encoded<typeof _Channel> {}\nexport const Channel: Schema.Schema<Channel, ChannelEncoded> = _Channel;\n\nexport const make = (props: Pick<Obj.MakeProps<typeof Channel>, 'name'> = {}) =>\n Obj.make(Channel, {\n ...props,\n defaultThread: Ref.make(Obj.make(Thread.Thread, { messages: [], status: 'active' })),\n threads: [],\n });\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Key } from '@dxos/echo';\nimport { EchoObjectSchema, SpaceSchema } from '@dxos/react-client/echo';\nimport { Collection } from '@dxos/schema';\nimport { Actor, AnchoredTo, Message, Thread } from '@dxos/types';\n\nimport { meta } from '../meta';\n\nimport * as Channel from './Channel';\n\nexport namespace ThreadAction {\n export class OnCreateSpace extends Schema.TaggedClass<OnCreateSpace>()(`${meta.id}/action/on-space-created`, {\n input: Schema.Struct({\n space: SpaceSchema,\n rootCollection: Collection.Collection,\n isDefault: Schema.Boolean.pipe(Schema.optional),\n }),\n output: Schema.Void,\n }) {}\n\n export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${meta.id}/action/create-channel`, {\n input: Schema.Struct({\n spaceId: Key.SpaceId,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Channel.Channel,\n }),\n }) {}\n\n export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(\n `${meta.id}/action/create-channel-thread`,\n {\n input: Schema.Struct({\n channel: Channel.Channel,\n }),\n output: Schema.Struct({\n object: Thread.Thread,\n }),\n },\n ) {}\n\n export class Create extends Schema.TaggedClass<Create>()(`${meta.id}/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>()(`${meta.id}/action/delete`, {\n input: Schema.Struct({\n anchor: AnchoredTo.AnchoredTo,\n subject: EchoObjectSchema,\n thread: Schema.optional(Thread.Thread),\n }),\n output: Schema.Void,\n }) {}\n\n export class Select extends Schema.TaggedClass<Select>()(`${meta.id}/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>()(`${meta.id}/action/toggle-resolved`, {\n input: Schema.Struct({\n thread: Thread.Thread,\n }),\n output: Schema.Void,\n }) {}\n\n export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${meta.id}/action/add-message`, {\n input: Schema.Struct({\n subject: EchoObjectSchema,\n anchor: AnchoredTo.AnchoredTo,\n sender: Actor.Actor,\n text: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${meta.id}/action/delete-message`, {\n input: Schema.Struct({\n anchor: AnchoredTo.AnchoredTo,\n subject: EchoObjectSchema,\n messageId: Schema.String,\n message: Schema.optional(Message.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: Thread.Thread;\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.AnchoredTo[]>;\n current?: string | undefined;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Schema", "Obj", "Ref", "Type", "FormInputAnnotation", "Thread", "_Channel", "Struct", "name", "optional", "String", "defaultThread", "Type", "Ref", "Thread", "pipe", "FormInputAnnotation", "set", "threads", "Array", "mutable", "Obj", "typename", "version", "Channel", "make", "props", "messages", "status", "Schema", "Key", "EchoObjectSchema", "SpaceSchema", "Collection", "Actor", "AnchoredTo", "Message", "Thread", "ThreadAction", "OnCreateSpace", "TaggedClass", "meta", "id", "input", "Struct", "space", "SpaceSchema", "rootCollection", "Collection", "isDefault", "Boolean", "pipe", "optional", "output", "Void", "CreateChannel", "spaceId", "Key", "SpaceId", "name", "String", "object", "Channel", "CreateChannelThread", "channel", "Thread", "Create", "anchor", "subject", "EchoObjectSchema", "Delete", "AnchoredTo", "thread", "Select", "current", "ToggleResolved", "AddMessage", "sender", "Actor", "text", "DeleteMessage", "messageId", "message", "Message", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"]
|
|
7
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ChannelContainer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ALZKJOZK.mjs";
|
|
4
4
|
import {
|
|
5
5
|
ThreadAction
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JDJPMI7V.mjs";
|
|
7
7
|
import {
|
|
8
8
|
ThreadCapabilities
|
|
9
9
|
} from "./chunk-CFC7LEPD.mjs";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
buttonClassNames,
|
|
13
13
|
buttonGroupClassNames,
|
|
14
14
|
command
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-TLOOZTRD.mjs";
|
|
16
16
|
import {
|
|
17
17
|
useStatus
|
|
18
18
|
} from "./chunk-KOBXMDCI.mjs";
|
|
@@ -453,8 +453,8 @@ var ThreadSettings = ({ settings: _settings }) => {
|
|
|
453
453
|
};
|
|
454
454
|
|
|
455
455
|
// src/components/index.ts
|
|
456
|
-
var ChannelContainer2 = lazy(() => import("./ChannelContainer-
|
|
457
|
-
var ChatContainer = lazy(() => import("./ChatContainer-
|
|
456
|
+
var ChannelContainer2 = lazy(() => import("./ChannelContainer-3BKLNZ4D.mjs"));
|
|
457
|
+
var ChatContainer = lazy(() => import("./ChatContainer-KPY4BAUE.mjs"));
|
|
458
458
|
|
|
459
459
|
// src/components/ThreadCompanion.tsx
|
|
460
460
|
var ThreadCompanion = ({ subject }) => {
|
|
@@ -482,7 +482,7 @@ var ThreadCompanion = ({ subject }) => {
|
|
|
482
482
|
subject
|
|
483
483
|
]);
|
|
484
484
|
const space = getSpace2(subject);
|
|
485
|
-
const objectsAnchoredTo = useQuery(space, Query.select(Filter.
|
|
485
|
+
const objectsAnchoredTo = useQuery(space, Query.select(Filter.id(subject.id)).targetOf(AnchoredTo.AnchoredTo));
|
|
486
486
|
const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj3.instanceOf(Thread.Thread, Relation3.getSource(anchor))).concat(drafts ?? []);
|
|
487
487
|
const attended = useAttended();
|
|
488
488
|
const handleAttend = useCallback2((anchor) => {
|
|
@@ -608,4 +608,4 @@ export {
|
|
|
608
608
|
ChannelContainer2 as ChannelContainer,
|
|
609
609
|
ChatContainer
|
|
610
610
|
};
|
|
611
|
-
//# sourceMappingURL=chunk-
|
|
611
|
+
//# sourceMappingURL=chunk-SS3O5SOQ.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/CallDebugPanel.tsx", "../../../src/components/CallSidebar.tsx", "../../../src/components/ThreadCompanion.tsx", "../../../src/components/index.ts", "../../../src/components/CommentsContainer.tsx", "../../../src/components/CommentsThreadContainer.tsx", "../../../src/components/ThreadSettings.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { WebRTCStats, type WebRTCStatsEvent } from '@peermetrics/webrtc-stats';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { truncateKey } from '@dxos/debug';\nimport { JsonView, Panel } from '@dxos/devtools';\nimport { log } from '@dxos/log';\nimport { IconButton, Input, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { type EncodedTrackName, type GlobalState } from '../calls';\nimport { meta } from '../meta';\n\nexport type CallDebugPanelProps = ThemedClassName<{ state?: GlobalState }>;\n\nexport const CallDebugPanel = ({ state }: CallDebugPanelProps) => {\n const { t } = useTranslation(meta.id);\n\n const [open, setOpen] = useState(false);\n const handleToggle = () => setOpen(!open);\n const [showServiceHistory, setShowServiceHistory] = useState(false);\n const handleToggleServiceHistory = () => setShowServiceHistory(!showServiceHistory);\n\n const handleCopyRaw = async () => {\n await navigator.clipboard.writeText(JSON.stringify({ users: state?.call?.users, stats }, null, 2));\n };\n\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 const [stats, setStats] = useState<WebRTCStatsEvent['data']>();\n\n useEffect(() => {\n const pc = state?.media.peer?.session?.peerConnection;\n const handleStats = (stats: WebRTCStatsEvent) => {\n setStats(stats.data);\n };\n let added = false;\n if (pc && showDetailedWebRTCStats) {\n webrtcStats.addConnection({ pc, peerId: 1, connectionId: '1' });\n webrtcStats.on('stats', handleStats as never);\n added = true;\n }\n return () => {\n try {\n if (pc && added) {\n webrtcStats.removeConnection({ pc });\n webrtcStats.removeListener('stats', handleStats as never);\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 const rows = useMemo(() => getCallStatusTable(state), [state?.call.users, state?.media.pulledAudioTracks]);\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 info={<div className='flex items-center gap-2'> {state?.call.joined ? 'Active' : 'Inactive'}</div>}\n maxHeight={0}\n >\n <div className='flex flex-col is-full text-xs'>\n <div className='flex items-center gap-2 items-center'>\n <Input.Root>\n <Input.Switch checked={showDetailedWebRTCStats} onCheckedChange={handleShowDetailedWebRTCStats} />\n <Input.Label>{t('show webrtc stats title')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex items-center gap-2 items-center'>\n <Input.Root>\n <Input.Switch checked={showServiceHistory} onCheckedChange={handleToggleServiceHistory} />\n <Input.Label>{t('show calls history title')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex items-center gap-2 items-center'>\n <IconButton icon='ph--copy--regular' label={'copy raw'} onClick={handleCopyRaw} />\n </div>\n <Table rows={rows} />\n {showDetailedWebRTCStats && <JsonView data={{ stats }} />}\n {showServiceHistory && <JsonView data={{ history: state?.media.peer?.history.get() }} />}\n </div>\n </Panel>\n );\n};\n\nconst getCallStatusTable = (state?: GlobalState): TableProps['rows'] => {\n if (!state || !state.call?.users) {\n return [];\n }\n\n const self = state.call.self;\n const users = state.call.users\n .filter((user) => user.id !== self!.id)\n .map((user) => {\n const isOk = {\n audio:\n user.tracks?.audio &&\n state.media.pulledAudioTracks[user.tracks?.audio as EncodedTrackName]?.ctx.disposed === false,\n video:\n user.tracks?.video &&\n state.media.pulledVideoStreams[user.tracks?.video as EncodedTrackName]?.ctx.disposed === false,\n screenshare:\n user.tracks?.screenshare &&\n state.media.pulledVideoStreams[user.tracks?.screenshare as EncodedTrackName]?.ctx.disposed === false,\n };\n\n return {\n ...user,\n isOk,\n };\n });\n\n return [\n ['users', state.call.users.length ?? 0],\n [\n '*self* ' + (self?.name ?? truncateKey(self!.id, 8)),\n self?.tracks?.audio && state.media.pushedAudioTrack ? 'AUD ✅' : 'AUD ❌',\n self?.tracks?.video && state.media.pushedVideoTrack ? 'VID ✅' : 'VID ❌',\n self?.tracks?.screenshareEnabled\n ? self.tracks.screenshareEnabled && state.media.pushedScreenshareTrack\n ? 'SCR ✅'\n : 'SCR ❌'\n : undefined,\n ],\n\n ...users.map((user) => [\n user.name ?? truncateKey(user.id, 8),\n user.isOk.audio ? 'AUD ✅' : 'AUD ❌',\n user.isOk.video ? 'VID ✅' : 'VID ❌',\n user.tracks?.screenshareEnabled ? (user.isOk.screenshare ? 'SCR ✅' : 'SCR ❌') : undefined,\n ]),\n ['ICE', state.media.peer?.session?.peerConnection.iceConnectionState ?? 'no connection'],\n ];\n};\n\nexport namespace Unit {\n export const KB = (n?: number) => ((n ?? 0) / 1_000).toFixed(2);\n}\n\nexport type TableProps = {\n rows: (string | number | undefined)[][];\n};\n\nexport const Table = ({ rows }: TableProps) => {\n return (\n <div className='is-full text-xs font-mono'>\n {rows.map(([prefix, label, value, unit], i) => (\n <div key={i} className='grid grid-cols-[3fr_1fr_1fr_1fr]'>\n <div className='p-1'>{prefix}</div>\n <div className='p-1'>{label}</div>\n <div className='p-1'>{value}</div>\n <div className='p-1'>{unit}</div>\n </div>\n ))}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\n\nimport { ThreadCapabilities } from '../capabilities';\n\nimport { ChannelContainer } from './ChannelContainer';\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 { Capabilities, CollaborationActions, LayoutAction, createIntent } from '@dxos/app-framework';\nimport { useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework/react';\nimport { Filter, Obj, Query, Relation } from '@dxos/echo';\nimport { Ref, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/react-ui-theme';\nimport { AnchoredTo, Thread } from '@dxos/types';\n\nimport { ThreadCapabilities } from '../capabilities';\nimport { CommentsContainer, type CommentsContainerProps } from '../components';\nimport { meta } from '../meta';\nimport { ThreadAction } from '../types';\n\nexport const ThreadCompanion = ({ subject }: { subject: any }) => {\n const { t } = useTranslation(meta.id);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const identity = useIdentity();\n const subjectId = Obj.getDXN(subject).toString();\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.AnchoredTo));\n const anchors = objectsAnchoredTo\n .toSorted((a, b) => sort?.(a, b) ?? 0)\n .filter((anchor) => Obj.instanceOf(Thread.Thread, Relation.getSource(anchor)))\n .concat(drafts ?? []);\n\n const attended = useAttended();\n\n const handleAttend = useCallback(\n (anchor: AnchoredTo.AnchoredTo) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const threadId = Obj.getDXN(thread).toString();\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: Obj.getDXN(subject).toString(),\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.AnchoredTo, text: string) => {\n await dispatch(\n createIntent(ThreadAction.AddMessage, {\n anchor,\n subject,\n sender: { identityDid: identity?.did },\n text,\n }),\n );\n\n const thread = Relation.getSource(anchor) as Thread.Thread;\n state.current = Obj.getDXN(thread).toString();\n },\n [dispatch, identity, subject],\n );\n\n const handleResolve = useCallback(\n (anchor: AnchoredTo.AnchoredTo) =>\n dispatch(\n createIntent(ThreadAction.ToggleResolved, {\n thread: Relation.getSource(anchor) as Thread.Thread,\n }),\n ),\n [dispatch],\n );\n\n const handleThreadDelete = useCallback(\n (anchor: AnchoredTo.AnchoredTo) => dispatch(createIntent(ThreadAction.Delete, { anchor, subject })),\n [dispatch, subject],\n );\n\n const handleMessageDelete = useCallback(\n (anchor: AnchoredTo.AnchoredTo, messageId: string) =>\n dispatch(\n createIntent(ThreadAction.DeleteMessage, {\n anchor,\n subject,\n messageId,\n }),\n ),\n [dispatch, subject],\n );\n\n const handleAcceptProposal = useCallback<NonNullable<CommentsContainerProps['onAcceptProposal']>>(\n async (anchor, messageId) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const messageIndex = thread.messages.findIndex(Ref.hasObjectId(messageId));\n const message = thread.messages[messageIndex]?.target;\n const proposal = message?.blocks.find((block) => block._tag === 'proposal');\n if (!proposal || !anchor.anchor) {\n return;\n }\n\n await dispatch(\n createIntent(CollaborationActions.AcceptProposal, {\n subject,\n anchor: anchor.anchor,\n proposal,\n }),\n );\n await dispatch(createIntent(ThreadAction.ToggleResolved, { thread }));\n },\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 onAcceptProposal={handleAcceptProposal}\n />\n );\n\n return (\n <StackItem.Content toolbar>\n <Tabs.Root\n value={showResolvedThreads ? 'all' : 'unresolved'}\n orientation='horizontal'\n classNames={[\n 'contents [&_[role=\"tabpanel\"]]:min-bs-0 [&_[role=\"tabpanel\"]]:overflow-y-auto [&_[role=\"tabpanel\"]]:scrollbar-thin',\n ]}\n onValueChange={onChangeViewState}\n >\n {/* TODO(burdon): Standardize (like Tollbar). */}\n <Tabs.Tablist classNames={mx('bg-toolbarSurface border-be border-subduedSeparator')}>\n <Tabs.Tab value='unresolved' classNames='text-sm'>\n {t('show unresolved label')}\n </Tabs.Tab>\n <Tabs.Tab value='all' classNames='text-sm'>\n {t('show all label')}\n </Tabs.Tab>\n </Tabs.Tablist>\n <div className='overflow-y-auto'>\n <Tabs.Tabpanel value='all'>{showResolvedThreads && comments}</Tabs.Tabpanel>\n <Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>\n </div>\n </Tabs.Root>\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\n// TODO(wittjosiah): Suspense boundary for sidebar?\nexport * from './Call';\nexport * from './CallDebugPanel';\nexport * from './CallSidebar';\nexport * from './CommentsContainer';\nexport * from './CommentsThreadContainer';\nexport * from './MessageContainer';\nexport * from './ThreadCompanion';\nexport * from './ThreadSettings';\n\nexport const ChannelContainer = lazy(() => import('./ChannelContainer'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect } from 'react';\n\nimport { Obj, Relation } from '@dxos/echo';\nimport { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';\nimport { type AnchoredTo, type Thread } from '@dxos/types';\n\nimport { meta } from '../meta';\n\nimport { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';\n\nexport type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {\n anchors: AnchoredTo.AnchoredTo[];\n currentId?: string;\n showResolvedThreads?: boolean;\n};\n\n/**\n * Root container for collection of comment threads.\n */\nexport const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: CommentsContainerProps) => {\n const { t } = useTranslation(meta.id);\n\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 (\n <div>\n {filteredAnchors.map((anchor) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const threadId = Obj.getDXN(thread).toString();\n return <CommentsThreadContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;\n })}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Obj, Ref, Relation } from '@dxos/echo';\nimport { getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { IconButton, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';\nimport {\n MessageTextbox,\n type MessageTextboxProps,\n Thread as ThreadComponent,\n type ThreadRootProps,\n} from '@dxos/react-ui-thread';\nimport { type AnchoredTo, type Thread } from '@dxos/types';\nimport { isNonNullable } from '@dxos/util';\n\nimport { useStatus } from '../hooks';\nimport { meta } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nimport { command } from './command-extension';\nimport { MessageContainer, buttonClassNames, buttonGroupClassNames } from './MessageContainer';\n\nexport type CommentsThreadContainerProps = {\n anchor: AnchoredTo.AnchoredTo;\n onAttend?: (anchor: AnchoredTo.AnchoredTo) => void;\n onComment?: (anchor: AnchoredTo.AnchoredTo, message: string) => void;\n onResolve?: (anchor: AnchoredTo.AnchoredTo) => void;\n onMessageDelete?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;\n onThreadDelete?: (anchor: AnchoredTo.AnchoredTo) => void;\n onAcceptProposal?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;\n} & Pick<ThreadRootProps, 'current'>;\n\nexport const CommentsThreadContainer = ({\n anchor,\n current,\n onAttend,\n onComment,\n onResolve,\n onMessageDelete,\n onThreadDelete,\n onAcceptProposal,\n}: CommentsThreadContainerProps) => {\n const { themeMode } = useThemeContext();\n const { t } = useTranslation(meta.id);\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 Thread.Thread;\n const activity = useStatus(space, Obj.getDXN(thread).toString());\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n\n const textboxMetadata = getMessageMetadata(Obj.getDXN(thread).toString(), identity);\n\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [state, setState] = useState({});\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 [state],\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 const handleAcceptProposal = useCallback((id: string) => onAcceptProposal?.(anchor, id), [onAcceptProposal, 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 setState({});\n\n return true;\n }, [anchor, identity]);\n\n return (\n <ThreadComponent.Root\n id={Obj.getDXN(thread).toString()}\n classNames='pbs-2 border-be border-subduedSeparator last:border-none'\n current={current}\n onClickCapture={handleAttend}\n onFocusCapture={handleAttend}\n >\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 <ThreadComponent.Header detached>{thread.name}</ThreadComponent.Header>\n </Tooltip.Trigger>\n ) : (\n <ThreadComponent.Header>{thread.name}</ThreadComponent.Header>\n )}\n <div role='none' className={buttonGroupClassNames}>\n {thread.status === 'staged' && <Tag palette='neutral'>{t('draft button')}</Tag>}\n {onResolve && !(thread?.status === 'staged') && (\n <IconButton\n data-testid='thread.resolve'\n variant='ghost'\n icon={thread?.status === 'resolved' ? 'ph--check--fill' : 'ph--check--regular'}\n iconOnly\n label={t('resolve thread label')}\n classNames={[buttonClassNames, thread?.status !== 'resolved' && hoverableControlItem]}\n onClick={handleResolve}\n />\n )}\n {onThreadDelete && (\n <IconButton\n data-testid='thread.delete'\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('delete thread label')}\n classNames={[buttonClassNames, hoverableControlItem]}\n onClick={handleThreadDelete}\n />\n )}\n </div>\n </div>\n\n {/** TODO(dmaretskyi): How's `thread.messages` undefined? */}\n {Ref.Array.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 onAcceptProposal={handleAcceptProposal}\n />\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\n <ThreadComponent.Status activity={activity}>{t('activity message')}</ThreadComponent.Status>\n\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 </ThreadComponent.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\nimport type { ThreadSettingsProps } from '../types';\n\nexport const ThreadSettings = ({ settings: _settings }: { settings: ThreadSettingsProps }) => {\n const { t: _t } = useTranslation(meta.id);\n return <ControlPage></ControlPage>;\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["WebRTCStats", "React", "useEffect", "useMemo", "useState", "truncateKey", "JsonView", "Panel", "log", "IconButton", "Input", "useTranslation", "CallDebugPanel", "state", "t", "useTranslation", "meta", "id", "open", "setOpen", "useState", "handleToggle", "showServiceHistory", "setShowServiceHistory", "handleToggleServiceHistory", "handleCopyRaw", "navigator", "clipboard", "writeText", "JSON", "stringify", "users", "call", "stats", "showDetailedWebRTCStats", "setShowDetailedWebRTCStats", "handleShowDetailedWebRTCStats", "webrtcStats", "useMemo", "WebRTCStats", "getStatsInterval", "setStats", "useEffect", "pc", "media", "peer", "session", "peerConnection", "handleStats", "data", "added", "addConnection", "peerId", "connectionId", "on", "removeConnection", "removeListener", "error", "log", "rows", "getCallStatusTable", "pulledAudioTracks", "Panel", "icon", "onToggle", "title", "info", "div", "className", "joined", "maxHeight", "Input", "Root", "Switch", "checked", "onCheckedChange", "Label", "IconButton", "label", "onClick", "Table", "JsonView", "history", "get", "self", "filter", "user", "map", "isOk", "audio", "tracks", "ctx", "disposed", "video", "pulledVideoStreams", "screenshare", "length", "name", "truncateKey", "pushedAudioTrack", "pushedVideoTrack", "screenshareEnabled", "pushedScreenshareTrack", "undefined", "iceConnectionState", "Unit", "KB", "n", "toFixed", "prefix", "value", "unit", "i", "key", "React", "useCapability", "CallSidebar", "call", "useCapability", "ThreadCapabilities", "CallManager", "React", "ChannelContainer", "roomId", "React", "useCallback", "useMemo", "Capabilities", "CollaborationActions", "LayoutAction", "createIntent", "useCapabilities", "useCapability", "useIntentDispatcher", "Filter", "Obj", "Query", "Relation", "Ref", "getSpace", "useQuery", "useIdentity", "useTranslation", "useAttended", "StackItem", "Tabs", "mx", "AnchoredTo", "Thread", "lazy", "React", "useEffect", "Obj", "Relation", "Callout", "Icon", "Trans", "useTranslation", "React", "useCallback", "useMemo", "useRef", "useState", "Obj", "Ref", "Relation", "getSpace", "useMembers", "useIdentity", "IconButton", "Tag", "Tooltip", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "listener", "hoverableControlItem", "hoverableControls", "hoverableFocusedWithinControls", "mx", "MessageTextbox", "Thread", "ThreadComponent", "isNonNullable", "CommentsThreadContainer", "anchor", "current", "onAttend", "onComment", "onResolve", "onMessageDelete", "onThreadDelete", "onAcceptProposal", "themeMode", "useThemeContext", "t", "useTranslation", "meta", "id", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "detached", "thread", "Relation", "getSource", "activity", "useStatus", "Obj", "getDXN", "toString", "threadScrollRef", "useRef", "textboxMetadata", "getMessageMetadata", "state", "setState", "useState", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "handleAttend", "useCallback", "handleResolve", "handleMessageDelete", "handleThreadDelete", "handleAcceptProposal", "handleComment", "React", "ThreadComponent", "Root", "classNames", "onClickCapture", "onFocusCapture", "div", "role", "className", "mx", "hoverableControls", "hoverableFocusedWithinControls", "Tooltip", "Trigger", "asChild", "content", "side", "Header", "name", "buttonGroupClassNames", "status", "Tag", "palette", "IconButton", "data-testid", "variant", "icon", "iconOnly", "label", "buttonClassNames", "hoverableControlItem", "onClick", "Ref", "Array", "targets", "messages", "filter", "isNonNullable", "map", "message", "MessageContainer", "editable", "onDelete", "MessageTextbox", "onSend", "Status", "ref", "CommentsContainer", "anchors", "currentId", "showResolvedThreads", "props", "t", "useTranslation", "meta", "id", "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", "Obj", "getDXN", "toString", "CommentsThreadContainer", "key", "current", "React", "useTranslation", "ControlPage", "ThreadSettings", "settings", "_settings", "t", "_t", "useTranslation", "meta", "id", "React", "ControlPage", "ChannelContainer", "lazy", "ChatContainer", "ThreadCompanion", "subject", "t", "useTranslation", "meta", "id", "dispatchPromise", "dispatch", "useIntentDispatcher", "identity", "useIdentity", "subjectId", "Obj", "getDXN", "toString", "state", "getViewState", "useCapability", "ThreadCapabilities", "MutableState", "drafts", "viewState", "useMemo", "showResolvedThreads", "onChangeViewState", "useCallback", "nextValue", "anchorSorts", "useCapabilities", "Capabilities", "AnchorSort", "sort", "find", "key", "getTypename", "space", "getSpace", "objectsAnchoredTo", "useQuery", "Query", "select", "Filter", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { WebRTCStats, type WebRTCStatsEvent } from '@peermetrics/webrtc-stats';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { truncateKey } from '@dxos/debug';\nimport { JsonView, Panel } from '@dxos/devtools';\nimport { log } from '@dxos/log';\nimport { IconButton, Input, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { type EncodedTrackName, type GlobalState } from '../calls';\nimport { meta } from '../meta';\n\nexport type CallDebugPanelProps = ThemedClassName<{ state?: GlobalState }>;\n\nexport const CallDebugPanel = ({ state }: CallDebugPanelProps) => {\n const { t } = useTranslation(meta.id);\n\n const [open, setOpen] = useState(false);\n const handleToggle = () => setOpen(!open);\n const [showServiceHistory, setShowServiceHistory] = useState(false);\n const handleToggleServiceHistory = () => setShowServiceHistory(!showServiceHistory);\n\n const handleCopyRaw = async () => {\n await navigator.clipboard.writeText(JSON.stringify({ users: state?.call?.users, stats }, null, 2));\n };\n\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 const [stats, setStats] = useState<WebRTCStatsEvent['data']>();\n\n useEffect(() => {\n const pc = state?.media.peer?.session?.peerConnection;\n const handleStats = (stats: WebRTCStatsEvent) => {\n setStats(stats.data);\n };\n let added = false;\n if (pc && showDetailedWebRTCStats) {\n webrtcStats.addConnection({ pc, peerId: 1, connectionId: '1' });\n webrtcStats.on('stats', handleStats as never);\n added = true;\n }\n return () => {\n try {\n if (pc && added) {\n webrtcStats.removeConnection({ pc });\n webrtcStats.removeListener('stats', handleStats as never);\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 const rows = useMemo(() => getCallStatusTable(state), [state?.call.users, state?.media.pulledAudioTracks]);\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 info={<div className='flex items-center gap-2'> {state?.call.joined ? 'Active' : 'Inactive'}</div>}\n maxHeight={0}\n >\n <div className='flex flex-col is-full text-xs'>\n <div className='flex items-center gap-2 items-center'>\n <Input.Root>\n <Input.Switch checked={showDetailedWebRTCStats} onCheckedChange={handleShowDetailedWebRTCStats} />\n <Input.Label>{t('show webrtc stats title')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex items-center gap-2 items-center'>\n <Input.Root>\n <Input.Switch checked={showServiceHistory} onCheckedChange={handleToggleServiceHistory} />\n <Input.Label>{t('show calls history title')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex items-center gap-2 items-center'>\n <IconButton icon='ph--copy--regular' label={'copy raw'} onClick={handleCopyRaw} />\n </div>\n <Table rows={rows} />\n {showDetailedWebRTCStats && <JsonView data={{ stats }} />}\n {showServiceHistory && <JsonView data={{ history: state?.media.peer?.history.get() }} />}\n </div>\n </Panel>\n );\n};\n\nconst getCallStatusTable = (state?: GlobalState): TableProps['rows'] => {\n if (!state || !state.call?.users) {\n return [];\n }\n\n const self = state.call.self;\n const users = state.call.users\n .filter((user) => user.id !== self!.id)\n .map((user) => {\n const isOk = {\n audio:\n user.tracks?.audio &&\n state.media.pulledAudioTracks[user.tracks?.audio as EncodedTrackName]?.ctx.disposed === false,\n video:\n user.tracks?.video &&\n state.media.pulledVideoStreams[user.tracks?.video as EncodedTrackName]?.ctx.disposed === false,\n screenshare:\n user.tracks?.screenshare &&\n state.media.pulledVideoStreams[user.tracks?.screenshare as EncodedTrackName]?.ctx.disposed === false,\n };\n\n return {\n ...user,\n isOk,\n };\n });\n\n return [\n ['users', state.call.users.length ?? 0],\n [\n '*self* ' + (self?.name ?? truncateKey(self!.id, 8)),\n self?.tracks?.audio && state.media.pushedAudioTrack ? 'AUD ✅' : 'AUD ❌',\n self?.tracks?.video && state.media.pushedVideoTrack ? 'VID ✅' : 'VID ❌',\n self?.tracks?.screenshareEnabled\n ? self.tracks.screenshareEnabled && state.media.pushedScreenshareTrack\n ? 'SCR ✅'\n : 'SCR ❌'\n : undefined,\n ],\n\n ...users.map((user) => [\n user.name ?? truncateKey(user.id, 8),\n user.isOk.audio ? 'AUD ✅' : 'AUD ❌',\n user.isOk.video ? 'VID ✅' : 'VID ❌',\n user.tracks?.screenshareEnabled ? (user.isOk.screenshare ? 'SCR ✅' : 'SCR ❌') : undefined,\n ]),\n ['ICE', state.media.peer?.session?.peerConnection.iceConnectionState ?? 'no connection'],\n ];\n};\n\nexport namespace Unit {\n export const KB = (n?: number) => ((n ?? 0) / 1_000).toFixed(2);\n}\n\nexport type TableProps = {\n rows: (string | number | undefined)[][];\n};\n\nexport const Table = ({ rows }: TableProps) => {\n return (\n <div className='is-full text-xs font-mono'>\n {rows.map(([prefix, label, value, unit], i) => (\n <div key={i} className='grid grid-cols-[3fr_1fr_1fr_1fr]'>\n <div className='p-1'>{prefix}</div>\n <div className='p-1'>{label}</div>\n <div className='p-1'>{value}</div>\n <div className='p-1'>{unit}</div>\n </div>\n ))}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\n\nimport { ThreadCapabilities } from '../capabilities';\n\nimport { ChannelContainer } from './ChannelContainer';\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 { Capabilities, CollaborationActions, LayoutAction, createIntent } from '@dxos/app-framework';\nimport { useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework/react';\nimport { Filter, Obj, Query, Relation } from '@dxos/echo';\nimport { Ref, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/react-ui-theme';\nimport { AnchoredTo, Thread } from '@dxos/types';\n\nimport { ThreadCapabilities } from '../capabilities';\nimport { CommentsContainer, type CommentsContainerProps } from '../components';\nimport { meta } from '../meta';\nimport { ThreadAction } from '../types';\n\nexport const ThreadCompanion = ({ subject }: { subject: any }) => {\n const { t } = useTranslation(meta.id);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const identity = useIdentity();\n const subjectId = Obj.getDXN(subject).toString();\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.id(subject.id)).targetOf(AnchoredTo.AnchoredTo));\n const anchors = objectsAnchoredTo\n .toSorted((a, b) => sort?.(a, b) ?? 0)\n .filter((anchor) => Obj.instanceOf(Thread.Thread, Relation.getSource(anchor)))\n .concat(drafts ?? []);\n\n const attended = useAttended();\n\n const handleAttend = useCallback(\n (anchor: AnchoredTo.AnchoredTo) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const threadId = Obj.getDXN(thread).toString();\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: Obj.getDXN(subject).toString(),\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.AnchoredTo, text: string) => {\n await dispatch(\n createIntent(ThreadAction.AddMessage, {\n anchor,\n subject,\n sender: { identityDid: identity?.did },\n text,\n }),\n );\n\n const thread = Relation.getSource(anchor) as Thread.Thread;\n state.current = Obj.getDXN(thread).toString();\n },\n [dispatch, identity, subject],\n );\n\n const handleResolve = useCallback(\n (anchor: AnchoredTo.AnchoredTo) =>\n dispatch(\n createIntent(ThreadAction.ToggleResolved, {\n thread: Relation.getSource(anchor) as Thread.Thread,\n }),\n ),\n [dispatch],\n );\n\n const handleThreadDelete = useCallback(\n (anchor: AnchoredTo.AnchoredTo) => dispatch(createIntent(ThreadAction.Delete, { anchor, subject })),\n [dispatch, subject],\n );\n\n const handleMessageDelete = useCallback(\n (anchor: AnchoredTo.AnchoredTo, messageId: string) =>\n dispatch(\n createIntent(ThreadAction.DeleteMessage, {\n anchor,\n subject,\n messageId,\n }),\n ),\n [dispatch, subject],\n );\n\n const handleAcceptProposal = useCallback<NonNullable<CommentsContainerProps['onAcceptProposal']>>(\n async (anchor, messageId) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const messageIndex = thread.messages.findIndex(Ref.hasObjectId(messageId));\n const message = thread.messages[messageIndex]?.target;\n const proposal = message?.blocks.find((block) => block._tag === 'proposal');\n if (!proposal || !anchor.anchor) {\n return;\n }\n\n await dispatch(\n createIntent(CollaborationActions.AcceptProposal, {\n subject,\n anchor: anchor.anchor,\n proposal,\n }),\n );\n await dispatch(createIntent(ThreadAction.ToggleResolved, { thread }));\n },\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 onAcceptProposal={handleAcceptProposal}\n />\n );\n\n return (\n <StackItem.Content toolbar>\n <Tabs.Root\n value={showResolvedThreads ? 'all' : 'unresolved'}\n orientation='horizontal'\n classNames={[\n 'contents [&_[role=\"tabpanel\"]]:min-bs-0 [&_[role=\"tabpanel\"]]:overflow-y-auto [&_[role=\"tabpanel\"]]:scrollbar-thin',\n ]}\n onValueChange={onChangeViewState}\n >\n {/* TODO(burdon): Standardize (like Tollbar). */}\n <Tabs.Tablist classNames={mx('bg-toolbarSurface border-be border-subduedSeparator')}>\n <Tabs.Tab value='unresolved' classNames='text-sm'>\n {t('show unresolved label')}\n </Tabs.Tab>\n <Tabs.Tab value='all' classNames='text-sm'>\n {t('show all label')}\n </Tabs.Tab>\n </Tabs.Tablist>\n <div className='overflow-y-auto'>\n <Tabs.Tabpanel value='all'>{showResolvedThreads && comments}</Tabs.Tabpanel>\n <Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>\n </div>\n </Tabs.Root>\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\n// TODO(wittjosiah): Suspense boundary for sidebar?\nexport * from './Call';\nexport * from './CallDebugPanel';\nexport * from './CallSidebar';\nexport * from './CommentsContainer';\nexport * from './CommentsThreadContainer';\nexport * from './MessageContainer';\nexport * from './ThreadCompanion';\nexport * from './ThreadSettings';\n\nexport const ChannelContainer = lazy(() => import('./ChannelContainer'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect } from 'react';\n\nimport { Obj, Relation } from '@dxos/echo';\nimport { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';\nimport { type AnchoredTo, type Thread } from '@dxos/types';\n\nimport { meta } from '../meta';\n\nimport { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';\n\nexport type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {\n anchors: AnchoredTo.AnchoredTo[];\n currentId?: string;\n showResolvedThreads?: boolean;\n};\n\n/**\n * Root container for collection of comment threads.\n */\nexport const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: CommentsContainerProps) => {\n const { t } = useTranslation(meta.id);\n\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 (\n <div>\n {filteredAnchors.map((anchor) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const threadId = Obj.getDXN(thread).toString();\n return <CommentsThreadContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;\n })}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Obj, Ref, Relation } from '@dxos/echo';\nimport { getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { IconButton, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';\nimport {\n MessageTextbox,\n type MessageTextboxProps,\n Thread as ThreadComponent,\n type ThreadRootProps,\n} from '@dxos/react-ui-thread';\nimport { type AnchoredTo, type Thread } from '@dxos/types';\nimport { isNonNullable } from '@dxos/util';\n\nimport { useStatus } from '../hooks';\nimport { meta } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nimport { command } from './command-extension';\nimport { MessageContainer, buttonClassNames, buttonGroupClassNames } from './MessageContainer';\n\nexport type CommentsThreadContainerProps = {\n anchor: AnchoredTo.AnchoredTo;\n onAttend?: (anchor: AnchoredTo.AnchoredTo) => void;\n onComment?: (anchor: AnchoredTo.AnchoredTo, message: string) => void;\n onResolve?: (anchor: AnchoredTo.AnchoredTo) => void;\n onMessageDelete?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;\n onThreadDelete?: (anchor: AnchoredTo.AnchoredTo) => void;\n onAcceptProposal?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;\n} & Pick<ThreadRootProps, 'current'>;\n\nexport const CommentsThreadContainer = ({\n anchor,\n current,\n onAttend,\n onComment,\n onResolve,\n onMessageDelete,\n onThreadDelete,\n onAcceptProposal,\n}: CommentsThreadContainerProps) => {\n const { themeMode } = useThemeContext();\n const { t } = useTranslation(meta.id);\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 Thread.Thread;\n const activity = useStatus(space, Obj.getDXN(thread).toString());\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n\n const textboxMetadata = getMessageMetadata(Obj.getDXN(thread).toString(), identity);\n\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [state, setState] = useState({});\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 [state],\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 const handleAcceptProposal = useCallback((id: string) => onAcceptProposal?.(anchor, id), [onAcceptProposal, 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 setState({});\n\n return true;\n }, [anchor, identity]);\n\n return (\n <ThreadComponent.Root\n id={Obj.getDXN(thread).toString()}\n classNames='pbs-2 border-be border-subduedSeparator last:border-none'\n current={current}\n onClickCapture={handleAttend}\n onFocusCapture={handleAttend}\n >\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 <ThreadComponent.Header detached>{thread.name}</ThreadComponent.Header>\n </Tooltip.Trigger>\n ) : (\n <ThreadComponent.Header>{thread.name}</ThreadComponent.Header>\n )}\n <div role='none' className={buttonGroupClassNames}>\n {thread.status === 'staged' && <Tag palette='neutral'>{t('draft button')}</Tag>}\n {onResolve && !(thread?.status === 'staged') && (\n <IconButton\n data-testid='thread.resolve'\n variant='ghost'\n icon={thread?.status === 'resolved' ? 'ph--check--fill' : 'ph--check--regular'}\n iconOnly\n label={t('resolve thread label')}\n classNames={[buttonClassNames, thread?.status !== 'resolved' && hoverableControlItem]}\n onClick={handleResolve}\n />\n )}\n {onThreadDelete && (\n <IconButton\n data-testid='thread.delete'\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('delete thread label')}\n classNames={[buttonClassNames, hoverableControlItem]}\n onClick={handleThreadDelete}\n />\n )}\n </div>\n </div>\n\n {/** TODO(dmaretskyi): How's `thread.messages` undefined? */}\n {Ref.Array.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 onAcceptProposal={handleAcceptProposal}\n />\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\n <ThreadComponent.Status activity={activity}>{t('activity message')}</ThreadComponent.Status>\n\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 </ThreadComponent.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\nimport type { ThreadSettingsProps } from '../types';\n\nexport const ThreadSettings = ({ settings: _settings }: { settings: ThreadSettingsProps }) => {\n const { t: _t } = useTranslation(meta.id);\n return <ControlPage></ControlPage>;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["WebRTCStats", "React", "useEffect", "useMemo", "useState", "truncateKey", "JsonView", "Panel", "log", "IconButton", "Input", "useTranslation", "CallDebugPanel", "state", "t", "useTranslation", "meta", "id", "open", "setOpen", "useState", "handleToggle", "showServiceHistory", "setShowServiceHistory", "handleToggleServiceHistory", "handleCopyRaw", "navigator", "clipboard", "writeText", "JSON", "stringify", "users", "call", "stats", "showDetailedWebRTCStats", "setShowDetailedWebRTCStats", "handleShowDetailedWebRTCStats", "webrtcStats", "useMemo", "WebRTCStats", "getStatsInterval", "setStats", "useEffect", "pc", "media", "peer", "session", "peerConnection", "handleStats", "data", "added", "addConnection", "peerId", "connectionId", "on", "removeConnection", "removeListener", "error", "log", "rows", "getCallStatusTable", "pulledAudioTracks", "Panel", "icon", "onToggle", "title", "info", "div", "className", "joined", "maxHeight", "Input", "Root", "Switch", "checked", "onCheckedChange", "Label", "IconButton", "label", "onClick", "Table", "JsonView", "history", "get", "self", "filter", "user", "map", "isOk", "audio", "tracks", "ctx", "disposed", "video", "pulledVideoStreams", "screenshare", "length", "name", "truncateKey", "pushedAudioTrack", "pushedVideoTrack", "screenshareEnabled", "pushedScreenshareTrack", "undefined", "iceConnectionState", "Unit", "KB", "n", "toFixed", "prefix", "value", "unit", "i", "key", "React", "useCapability", "CallSidebar", "call", "useCapability", "ThreadCapabilities", "CallManager", "React", "ChannelContainer", "roomId", "React", "useCallback", "useMemo", "Capabilities", "CollaborationActions", "LayoutAction", "createIntent", "useCapabilities", "useCapability", "useIntentDispatcher", "Filter", "Obj", "Query", "Relation", "Ref", "getSpace", "useQuery", "useIdentity", "useTranslation", "useAttended", "StackItem", "Tabs", "mx", "AnchoredTo", "Thread", "lazy", "React", "useEffect", "Obj", "Relation", "Callout", "Icon", "Trans", "useTranslation", "React", "useCallback", "useMemo", "useRef", "useState", "Obj", "Ref", "Relation", "getSpace", "useMembers", "useIdentity", "IconButton", "Tag", "Tooltip", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "listener", "hoverableControlItem", "hoverableControls", "hoverableFocusedWithinControls", "mx", "MessageTextbox", "Thread", "ThreadComponent", "isNonNullable", "CommentsThreadContainer", "anchor", "current", "onAttend", "onComment", "onResolve", "onMessageDelete", "onThreadDelete", "onAcceptProposal", "themeMode", "useThemeContext", "t", "useTranslation", "meta", "id", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "detached", "thread", "Relation", "getSource", "activity", "useStatus", "Obj", "getDXN", "toString", "threadScrollRef", "useRef", "textboxMetadata", "getMessageMetadata", "state", "setState", "useState", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "handleAttend", "useCallback", "handleResolve", "handleMessageDelete", "handleThreadDelete", "handleAcceptProposal", "handleComment", "React", "ThreadComponent", "Root", "classNames", "onClickCapture", "onFocusCapture", "div", "role", "className", "mx", "hoverableControls", "hoverableFocusedWithinControls", "Tooltip", "Trigger", "asChild", "content", "side", "Header", "name", "buttonGroupClassNames", "status", "Tag", "palette", "IconButton", "data-testid", "variant", "icon", "iconOnly", "label", "buttonClassNames", "hoverableControlItem", "onClick", "Ref", "Array", "targets", "messages", "filter", "isNonNullable", "map", "message", "MessageContainer", "editable", "onDelete", "MessageTextbox", "onSend", "Status", "ref", "CommentsContainer", "anchors", "currentId", "showResolvedThreads", "props", "t", "useTranslation", "meta", "id", "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", "Obj", "getDXN", "toString", "CommentsThreadContainer", "key", "current", "React", "useTranslation", "ControlPage", "ThreadSettings", "settings", "_settings", "t", "_t", "useTranslation", "meta", "id", "React", "ControlPage", "ChannelContainer", "lazy", "ChatContainer", "ThreadCompanion", "subject", "t", "useTranslation", "meta", "id", "dispatchPromise", "dispatch", "useIntentDispatcher", "identity", "useIdentity", "subjectId", "Obj", "getDXN", "toString", "state", "getViewState", "useCapability", "ThreadCapabilities", "MutableState", "drafts", "viewState", "useMemo", "showResolvedThreads", "onChangeViewState", "useCallback", "nextValue", "anchorSorts", "useCapabilities", "Capabilities", "AnchorSort", "sort", "find", "key", "getTypename", "space", "getSpace", "objectsAnchoredTo", "useQuery", "Query", "select", "Filter", "targetOf", "AnchoredTo", "anchors", "toSorted", "a", "b", "filter", "anchor", "instanceOf", "Thread", "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", "handleAcceptProposal", "messageIndex", "messages", "findIndex", "Ref", "hasObjectId", "message", "target", "proposal", "blocks", "block", "_tag", "CollaborationActions", "AcceptProposal", "comments", "React", "CommentsContainer", "currentId", "includes", "undefined", "onAttend", "onComment", "onResolve", "onMessageDelete", "onThreadDelete", "onAcceptProposal", "StackItem", "Content", "toolbar", "Tabs", "Root", "value", "orientation", "classNames", "onValueChange", "Tablist", "mx", "Tab", "div", "className", "Tabpanel"]
|
|
7
7
|
}
|