@dxos/plugin-thread 0.7.4 → 0.7.5-labs.a279d8c
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/ThreadContainer-4VLBSBI7.mjs +19 -0
- package/dist/lib/browser/ThreadContainer-4VLBSBI7.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-Q7A2ZRUA.mjs +121 -0
- package/dist/lib/browser/app-graph-builder-Q7A2ZRUA.mjs.map +7 -0
- package/dist/lib/browser/chunk-2B3EXYZ7.mjs +18 -0
- package/dist/lib/browser/chunk-2B3EXYZ7.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ENERBDYI.mjs → chunk-636QDHE3.mjs} +3 -3
- package/dist/lib/browser/chunk-636QDHE3.mjs.map +7 -0
- package/dist/lib/browser/chunk-BNEWNQBO.mjs +71 -0
- package/dist/lib/browser/chunk-BNEWNQBO.mjs.map +7 -0
- package/dist/lib/browser/{chunk-52HWDLBR.mjs → chunk-GQONSZ3J.mjs} +31 -117
- package/dist/lib/browser/chunk-GQONSZ3J.mjs.map +7 -0
- package/dist/lib/browser/chunk-NAO3LZMZ.mjs +16 -0
- package/dist/lib/browser/chunk-NAO3LZMZ.mjs.map +7 -0
- package/dist/lib/browser/chunk-NO5AZLUZ.mjs +81 -0
- package/dist/lib/browser/chunk-NO5AZLUZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +147 -1094
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/intent-resolver-PIEZ3LKQ.mjs +275 -0
- package/dist/lib/browser/intent-resolver-PIEZ3LKQ.mjs.map +7 -0
- package/dist/lib/browser/markdown-2NBXKXCY.mjs +112 -0
- package/dist/lib/browser/markdown-2NBXKXCY.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-surface-CHCZO4TI.mjs +412 -0
- package/dist/lib/browser/react-surface-CHCZO4TI.mjs.map +7 -0
- package/dist/lib/browser/settings-TKOPRXSU.mjs +22 -0
- package/dist/lib/browser/settings-TKOPRXSU.mjs.map +7 -0
- package/dist/lib/browser/state-GNFUURIC.mjs +33 -0
- package/dist/lib/browser/state-GNFUURIC.mjs.map +7 -0
- package/dist/lib/browser/types.mjs +6 -4
- package/dist/lib/node/{ThreadArticle-I7ADXDW3.cjs → ThreadContainer-VOYLV4UL.cjs} +14 -13
- package/dist/lib/node/ThreadContainer-VOYLV4UL.cjs.map +7 -0
- package/dist/lib/node/app-graph-builder-ZXW5KUDK.cjs +135 -0
- package/dist/lib/node/app-graph-builder-ZXW5KUDK.cjs.map +7 -0
- package/dist/lib/node/{chunk-YCDM2SZM.cjs → chunk-6PUGKCPR.cjs} +76 -165
- package/dist/lib/node/chunk-6PUGKCPR.cjs.map +7 -0
- package/dist/lib/node/chunk-AUVKOX5Q.cjs +101 -0
- package/dist/lib/node/chunk-AUVKOX5Q.cjs.map +7 -0
- package/dist/lib/node/chunk-AWSTZ2KN.cjs +93 -0
- package/dist/lib/node/chunk-AWSTZ2KN.cjs.map +7 -0
- package/dist/lib/node/{chunk-IC2NICNC.cjs → chunk-F735VMTN.cjs} +7 -7
- package/dist/lib/node/chunk-F735VMTN.cjs.map +7 -0
- package/dist/lib/node/{meta.cjs → chunk-FPWNZ6TB.cjs} +13 -10
- package/dist/lib/node/chunk-FPWNZ6TB.cjs.map +7 -0
- package/dist/lib/node/{ThreadMain-MRNJC3TI.cjs → chunk-ZRN7B26W.cjs} +26 -23
- package/dist/lib/node/chunk-ZRN7B26W.cjs.map +7 -0
- package/dist/lib/node/index.cjs +142 -1083
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/intent-resolver-X5O3SVLF.cjs +287 -0
- package/dist/lib/node/intent-resolver-X5O3SVLF.cjs.map +7 -0
- package/dist/lib/node/markdown-FWRKMSKV.cjs +122 -0
- package/dist/lib/node/markdown-FWRKMSKV.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/react-surface-LO7S2HPR.cjs +414 -0
- package/dist/lib/node/react-surface-LO7S2HPR.cjs.map +7 -0
- package/dist/lib/node/settings-TH4YSUVU.cjs +36 -0
- package/dist/lib/node/settings-TH4YSUVU.cjs.map +7 -0
- package/dist/lib/node/state-TQWEZ6B3.cjs +49 -0
- package/dist/lib/node/state-TQWEZ6B3.cjs.map +7 -0
- package/dist/lib/node/types.cjs +6 -4
- package/dist/lib/node/types.cjs.map +2 -2
- package/dist/lib/node-esm/ThreadContainer-7DZY2MWA.mjs +20 -0
- package/dist/lib/node-esm/ThreadContainer-7DZY2MWA.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-ATS6HGE6.mjs +122 -0
- package/dist/lib/node-esm/app-graph-builder-ATS6HGE6.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-B3CF35MY.mjs +82 -0
- package/dist/lib/node-esm/chunk-B3CF35MY.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-JG7MXH6O.mjs → chunk-DYFIKKDT.mjs} +31 -117
- package/dist/lib/node-esm/chunk-DYFIKKDT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-7QRGG25F.mjs → chunk-FXUATCLW.mjs} +3 -3
- package/dist/lib/node-esm/chunk-FXUATCLW.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-GS2OILYF.mjs +20 -0
- package/dist/lib/node-esm/chunk-GS2OILYF.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HLWJTUWZ.mjs +73 -0
- package/dist/lib/node-esm/chunk-HLWJTUWZ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ZJITX3TO.mjs +17 -0
- package/dist/lib/node-esm/chunk-ZJITX3TO.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +147 -1094
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/intent-resolver-XJWT5X6T.mjs +276 -0
- package/dist/lib/node-esm/intent-resolver-XJWT5X6T.mjs.map +7 -0
- package/dist/lib/node-esm/markdown-6AQFDAW3.mjs +113 -0
- package/dist/lib/node-esm/markdown-6AQFDAW3.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-surface-LAF3QIPB.mjs +413 -0
- package/dist/lib/node-esm/react-surface-LAF3QIPB.mjs.map +7 -0
- package/dist/lib/node-esm/settings-KEDRR7RM.mjs +23 -0
- package/dist/lib/node-esm/settings-KEDRR7RM.mjs.map +7 -0
- package/dist/lib/node-esm/state-7MLR27YG.mjs +34 -0
- package/dist/lib/node-esm/state-7MLR27YG.mjs.map +7 -0
- package/dist/lib/node-esm/types.mjs +6 -4
- package/dist/types/src/ThreadPlugin.d.ts +1 -3
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +180 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts +15 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +187 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/markdown.d.ts +4 -0
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +4 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +4 -0
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/state.d.ts +7 -0
- package/dist/types/src/capabilities/state.d.ts.map +1 -0
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentContainer.d.ts +1 -1
- package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentsContainer.d.ts +2 -7
- package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/ThreadComplementary.d.ts +1 -6
- package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
- package/dist/types/src/components/ThreadContainer.d.ts +7 -0
- package/dist/types/src/components/ThreadContainer.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +3 -15
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +50 -66
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/components/types.d.ts +5 -5
- package/dist/types/src/components/types.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts +2 -2
- package/dist/types/src/extensions/threads.d.ts.map +1 -1
- package/dist/types/src/hooks/analytics.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +3 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +86 -22
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +30 -38
- package/src/ThreadPlugin.tsx +109 -620
- package/src/capabilities/app-graph-builder.ts +120 -0
- package/src/capabilities/capabilities.ts +19 -0
- package/src/capabilities/index.ts +14 -0
- package/src/capabilities/intent-resolver.ts +223 -0
- package/src/capabilities/markdown.ts +18 -0
- package/src/capabilities/react-surface.tsx +61 -0
- package/src/capabilities/settings.ts +14 -0
- package/src/capabilities/state.ts +25 -0
- package/src/components/Chat.stories.tsx +26 -22
- package/src/components/ChatContainer.tsx +13 -11
- package/src/components/CommentContainer.tsx +21 -32
- package/src/components/CommentsContainer.tsx +1 -17
- package/src/components/MessageContainer.tsx +7 -5
- package/src/components/ThreadComplementary.tsx +88 -68
- package/src/components/ThreadContainer.tsx +22 -0
- package/src/components/index.ts +1 -2
- package/src/components/testing.ts +26 -22
- package/src/components/types.ts +5 -5
- package/src/extensions/threads.ts +16 -25
- package/src/hooks/analytics.ts +6 -10
- package/src/index.ts +1 -5
- package/src/meta.ts +1 -1
- package/src/translations.ts +1 -0
- package/src/types.ts +70 -38
- package/dist/lib/browser/ThreadArticle-6IXTL7CH.mjs +0 -18
- package/dist/lib/browser/ThreadArticle-6IXTL7CH.mjs.map +0 -7
- package/dist/lib/browser/ThreadMain-4IAS67KE.mjs +0 -26
- package/dist/lib/browser/ThreadMain-4IAS67KE.mjs.map +0 -7
- package/dist/lib/browser/chunk-52HWDLBR.mjs.map +0 -7
- package/dist/lib/browser/chunk-ENERBDYI.mjs.map +0 -7
- package/dist/lib/browser/chunk-XUHNZID5.mjs +0 -20
- package/dist/lib/browser/chunk-XUHNZID5.mjs.map +0 -7
- package/dist/lib/browser/meta.mjs +0 -11
- package/dist/lib/browser/meta.mjs.map +0 -7
- package/dist/lib/node/ThreadArticle-I7ADXDW3.cjs.map +0 -7
- package/dist/lib/node/ThreadMain-MRNJC3TI.cjs.map +0 -7
- package/dist/lib/node/chunk-IC2NICNC.cjs.map +0 -7
- package/dist/lib/node/chunk-XFO6D2LG.cjs +0 -39
- package/dist/lib/node/chunk-XFO6D2LG.cjs.map +0 -7
- package/dist/lib/node/chunk-YCDM2SZM.cjs.map +0 -7
- package/dist/lib/node/meta.cjs.map +0 -7
- package/dist/lib/node-esm/ThreadArticle-CJHYMF2W.mjs +0 -19
- package/dist/lib/node-esm/ThreadArticle-CJHYMF2W.mjs.map +0 -7
- package/dist/lib/node-esm/ThreadMain-VISGW4IF.mjs +0 -27
- package/dist/lib/node-esm/ThreadMain-VISGW4IF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7QRGG25F.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-I5MU54RT.mjs +0 -21
- package/dist/lib/node-esm/chunk-I5MU54RT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JG7MXH6O.mjs.map +0 -7
- package/dist/lib/node-esm/meta.mjs +0 -12
- package/dist/lib/node-esm/meta.mjs.map +0 -7
- package/dist/types/src/components/ThreadArticle.d.ts +0 -5
- package/dist/types/src/components/ThreadArticle.d.ts.map +0 -1
- package/dist/types/src/components/ThreadMain.d.ts +0 -7
- package/dist/types/src/components/ThreadMain.d.ts.map +0 -1
- package/src/components/ThreadArticle.tsx +0 -18
- package/src/components/ThreadMain.tsx +0 -27
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var app_graph_builder_ZXW5KUDK_exports = {};
|
|
20
|
+
__export(app_graph_builder_ZXW5KUDK_exports, {
|
|
21
|
+
default: () => app_graph_builder_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(app_graph_builder_ZXW5KUDK_exports);
|
|
24
|
+
var import_chunk_FPWNZ6TB = require("./chunk-FPWNZ6TB.cjs");
|
|
25
|
+
var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
|
|
26
|
+
var import_app_framework = require("@dxos/app-framework");
|
|
27
|
+
var import_plugin_client = require("@dxos/plugin-client");
|
|
28
|
+
var import_plugin_graph = require("@dxos/plugin-graph");
|
|
29
|
+
var import_types = require("@dxos/plugin-observability/types");
|
|
30
|
+
var import_plugin_space = require("@dxos/plugin-space");
|
|
31
|
+
var import_echo = require("@dxos/react-client/echo");
|
|
32
|
+
var type = "orphan-comments-for-subject";
|
|
33
|
+
var icon = "ph--chat-text--regular";
|
|
34
|
+
var app_graph_builder_default = (context) => {
|
|
35
|
+
const resolver = (typename) => context.requestCapabilities(import_app_framework.Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
|
|
36
|
+
return (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraphBuilder, (0, import_plugin_graph.createExtension)({
|
|
37
|
+
id: `${import_chunk_F735VMTN.THREAD_PLUGIN}/comments-for-subject`,
|
|
38
|
+
resolver: ({ id }) => {
|
|
39
|
+
if (!id.endsWith("~comments")) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
|
|
43
|
+
const [subjectId] = id.split("~");
|
|
44
|
+
const { spaceId, objectId } = (0, import_echo.parseId)(subjectId);
|
|
45
|
+
const spaces = (0, import_plugin_graph.toSignal)((onChange) => client.spaces.subscribe(() => onChange()).unsubscribe, () => client.spaces.get());
|
|
46
|
+
const space = spaces?.find((space2) => space2.id === spaceId && space2.state.get() === import_echo.SpaceState.SPACE_READY);
|
|
47
|
+
if (!objectId) {
|
|
48
|
+
return {
|
|
49
|
+
id,
|
|
50
|
+
type,
|
|
51
|
+
data: null,
|
|
52
|
+
properties: {
|
|
53
|
+
icon,
|
|
54
|
+
label: [
|
|
55
|
+
"unnamed object threads label",
|
|
56
|
+
{
|
|
57
|
+
ns: import_chunk_F735VMTN.THREAD_PLUGIN
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
showResolvedThreads: false,
|
|
61
|
+
object: null,
|
|
62
|
+
space
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const [object] = (0, import_plugin_space.memoizeQuery)(space, {
|
|
67
|
+
id: objectId
|
|
68
|
+
});
|
|
69
|
+
if (!object || !subjectId) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const meta = resolver((0, import_echo.getTypename)(object) ?? "");
|
|
73
|
+
const label = meta.label?.(object) || object.name || meta.placeholder || [
|
|
74
|
+
"unnamed object threads label",
|
|
75
|
+
{
|
|
76
|
+
ns: import_chunk_F735VMTN.THREAD_PLUGIN
|
|
77
|
+
}
|
|
78
|
+
];
|
|
79
|
+
const { getViewState } = context.requestCapability(import_chunk_FPWNZ6TB.ThreadCapabilities.State);
|
|
80
|
+
const viewState = getViewState(subjectId);
|
|
81
|
+
return {
|
|
82
|
+
id,
|
|
83
|
+
type,
|
|
84
|
+
data: null,
|
|
85
|
+
properties: {
|
|
86
|
+
icon,
|
|
87
|
+
label,
|
|
88
|
+
showResolvedThreads: viewState.showResolvedThreads,
|
|
89
|
+
object
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
actions: ({ node }) => {
|
|
94
|
+
const dataId = node.id.split("~").at(0);
|
|
95
|
+
if (!node.id.endsWith("~comments") || !dataId) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const [spaceId, objectId] = dataId.split(":");
|
|
99
|
+
const { getViewState } = context.requestCapability(import_chunk_FPWNZ6TB.ThreadCapabilities.State);
|
|
100
|
+
const viewState = getViewState(dataId);
|
|
101
|
+
const toggle = async () => {
|
|
102
|
+
const newToggleState = !viewState.showResolvedThreads;
|
|
103
|
+
viewState.showResolvedThreads = newToggleState;
|
|
104
|
+
const { dispatchPromise: dispatch } = context.requestCapability(import_app_framework.Capabilities.IntentDispatcher);
|
|
105
|
+
await dispatch((0, import_app_framework.createIntent)(import_types.ObservabilityAction.SendEvent, {
|
|
106
|
+
name: "threads.toggle-show-resolved",
|
|
107
|
+
properties: {
|
|
108
|
+
spaceId,
|
|
109
|
+
threadId: objectId,
|
|
110
|
+
showResolved: newToggleState
|
|
111
|
+
}
|
|
112
|
+
}));
|
|
113
|
+
};
|
|
114
|
+
return [
|
|
115
|
+
{
|
|
116
|
+
id: `${import_chunk_F735VMTN.THREAD_PLUGIN}/toggle-show-resolved/${node.id}`,
|
|
117
|
+
data: toggle,
|
|
118
|
+
properties: {
|
|
119
|
+
label: [
|
|
120
|
+
"toggle show resolved",
|
|
121
|
+
{
|
|
122
|
+
ns: import_chunk_F735VMTN.THREAD_PLUGIN
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
menuItemType: "toggle",
|
|
126
|
+
isChecked: viewState.showResolvedThreads,
|
|
127
|
+
testId: "threadPlugin.toggleShowResolved",
|
|
128
|
+
icon: viewState.showResolvedThreads ? "ph--eye-slash--regular" : "ph--eye--regular"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
];
|
|
132
|
+
}
|
|
133
|
+
}));
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=app-graph-builder-ZXW5KUDK.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, type PluginsContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { createExtension, toSignal } from '@dxos/plugin-graph';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { getTypename, parseId, SpaceState } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { THREAD_PLUGIN } from '../meta';\n\nconst type = 'orphan-comments-for-subject';\nconst icon = 'ph--chat-text--regular';\n\nexport default (context: PluginsContext) => {\n const resolver = (typename: string) =>\n context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(\n Capabilities.AppGraphBuilder,\n createExtension({\n id: `${THREAD_PLUGIN}/comments-for-subject`,\n resolver: ({ id }) => {\n // TODO(Zan): Find util (or make one).\n if (!id.endsWith('~comments')) {\n return;\n }\n\n const client = context.requestCapability(ClientCapabilities.Client);\n const [subjectId] = id.split('~');\n const { spaceId, objectId } = parseId(subjectId);\n const spaces = toSignal(\n (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.get(),\n );\n const space = spaces?.find((space) => space.id === spaceId && space.state.get() === SpaceState.SPACE_READY);\n if (!objectId) {\n // TODO(wittjosiah): Support comments for arbitrary subjects.\n // This is to ensure that the comments panel is not stuck on an old object.\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label: ['unnamed object threads label', { ns: THREAD_PLUGIN }],\n showResolvedThreads: false,\n object: null,\n space,\n },\n };\n }\n\n const [object] = memoizeQuery(space, { id: objectId });\n if (!object || !subjectId) {\n return;\n }\n\n const meta = resolver(getTypename(object) ?? '');\n const label = meta.label?.(object) ||\n object.name ||\n meta.placeholder || ['unnamed object threads label', { ns: THREAD_PLUGIN }];\n\n const { getViewState } = context.requestCapability(ThreadCapabilities.State);\n const viewState = getViewState(subjectId);\n\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n showResolvedThreads: viewState.showResolvedThreads,\n object,\n },\n };\n },\n actions: ({ node }) => {\n const dataId = node.id.split('~').at(0);\n if (!node.id.endsWith('~comments') || !dataId) {\n return;\n }\n\n const [spaceId, objectId] = dataId.split(':');\n\n const { getViewState } = context.requestCapability(ThreadCapabilities.State);\n const viewState = getViewState(dataId);\n const toggle = async () => {\n const newToggleState = !viewState.showResolvedThreads;\n viewState.showResolvedThreads = newToggleState;\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n await dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.toggle-show-resolved',\n properties: { spaceId, threadId: objectId, showResolved: newToggleState },\n }),\n );\n };\n\n return [\n {\n id: `${THREAD_PLUGIN}/toggle-show-resolved/${node.id}`,\n data: toggle,\n properties: {\n label: ['toggle show resolved', { ns: THREAD_PLUGIN }],\n menuItemType: 'toggle',\n isChecked: viewState.showResolvedThreads,\n testId: 'threadPlugin.toggleShowResolved',\n icon: viewState.showResolvedThreads ? 'ph--eye-slash--regular' : 'ph--eye--regular',\n },\n },\n ];\n },\n }),\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["type", "icon", "context", "resolver", "typename", "requestCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "THREAD_PLUGIN", "endsWith", "client", "requestCapability", "ClientCapabilities", "Client", "subjectId", "split", "spaceId", "objectId", "parseId", "spaces", "toSignal", "onChange", "subscribe", "unsubscribe", "get", "space", "state", "SpaceState", "SPACE_READY", "data", "properties", "label", "ns", "showResolvedThreads", "object", "memoizeQuery", "meta", "getTypename", "name", "placeholder", "getViewState", "ThreadCapabilities", "State", "viewState", "actions", "node", "dataId", "at", "toggle", "newToggleState", "dispatchPromise", "dispatch", "IntentDispatcher", "createIntent", "ObservabilityAction", "SendEvent", "threadId", "showResolved", "menuItemType", "isChecked", "testId"]
|
|
7
|
+
}
|
|
@@ -26,111 +26,44 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_6PUGKCPR_exports = {};
|
|
30
|
+
__export(chunk_6PUGKCPR_exports, {
|
|
31
31
|
ChatContainer: () => ChatContainer,
|
|
32
|
-
ChatHeading: () => ChatHeading,
|
|
33
32
|
MessageContainer: () => MessageContainer,
|
|
34
33
|
command: () => command,
|
|
35
|
-
getMessageMetadata: () => getMessageMetadata
|
|
36
|
-
useAnalyticsCallback: () => useAnalyticsCallback,
|
|
37
|
-
useOnEditAnalytics: () => useOnEditAnalytics,
|
|
38
|
-
useStatus: () => useStatus
|
|
34
|
+
getMessageMetadata: () => getMessageMetadata
|
|
39
35
|
});
|
|
40
|
-
module.exports = __toCommonJS(
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
var
|
|
44
|
-
var
|
|
45
|
-
var import_meta = require("@dxos/plugin-observability/meta");
|
|
46
|
-
var import_echo = require("@dxos/react-client/echo");
|
|
47
|
-
var import_react_ui = require("@dxos/react-ui");
|
|
48
|
-
var import_react3 = __toESM(require("react"));
|
|
36
|
+
module.exports = __toCommonJS(chunk_6PUGKCPR_exports);
|
|
37
|
+
var import_chunk_AWSTZ2KN = require("./chunk-AWSTZ2KN.cjs");
|
|
38
|
+
var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
|
|
39
|
+
var import_react = __toESM(require("react"));
|
|
40
|
+
var import_echo_schema = require("@dxos/echo-schema");
|
|
49
41
|
var import_live_object = require("@dxos/live-object");
|
|
50
42
|
var import_types = require("@dxos/plugin-space/types");
|
|
51
|
-
var
|
|
43
|
+
var import_echo = require("@dxos/react-client/echo");
|
|
52
44
|
var import_halo = require("@dxos/react-client/halo");
|
|
53
|
-
var
|
|
45
|
+
var import_react_ui = require("@dxos/react-ui");
|
|
54
46
|
var import_react_ui_editor = require("@dxos/react-ui-editor");
|
|
55
47
|
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
56
48
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
57
49
|
var import_react_ui_thread = require("@dxos/react-ui-thread");
|
|
58
|
-
var import_util = require("@dxos/util");
|
|
59
50
|
var import_view = require("@codemirror/view");
|
|
60
|
-
var
|
|
61
|
-
var
|
|
62
|
-
var
|
|
51
|
+
var import_react2 = require("@phosphor-icons/react");
|
|
52
|
+
var import_react3 = __toESM(require("react"));
|
|
53
|
+
var import_app_framework = require("@dxos/app-framework");
|
|
54
|
+
var import_live_object2 = require("@dxos/live-object");
|
|
63
55
|
var import_react_client = require("@dxos/react-client");
|
|
64
56
|
var import_halo2 = require("@dxos/react-client/halo");
|
|
65
|
-
var
|
|
57
|
+
var import_react_ui2 = require("@dxos/react-ui");
|
|
66
58
|
var import_react_ui_editor2 = require("@dxos/react-ui-editor");
|
|
67
59
|
var import_react_ui_mosaic = require("@dxos/react-ui-mosaic");
|
|
68
60
|
var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
|
69
61
|
var import_react_ui_thread2 = require("@dxos/react-ui-thread");
|
|
70
|
-
var import_util2 = require("@dxos/util");
|
|
71
62
|
var import_language = require("@codemirror/language");
|
|
72
63
|
var import_react_ui_editor3 = require("@dxos/react-ui-editor");
|
|
73
64
|
var import_react_ui_theme3 = require("@dxos/react-ui-theme");
|
|
74
65
|
var import_display_name = require("@dxos/display-name");
|
|
75
|
-
var
|
|
76
|
-
var useStatus = (space, channel) => {
|
|
77
|
-
const [processing, setProcessing] = (0, import_react.useState)(false);
|
|
78
|
-
(0, import_react.useEffect)(() => {
|
|
79
|
-
if (!space || !channel) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
const unsubscribe = space.listen(`status/${channel}`, (status) => {
|
|
83
|
-
const { event } = status.payload ?? {};
|
|
84
|
-
setProcessing(event === "processing");
|
|
85
|
-
});
|
|
86
|
-
const t = setInterval(() => {
|
|
87
|
-
setProcessing((prev) => {
|
|
88
|
-
if (typeof prev?.ts === "number" && Date.now() - prev.ts > 3e4) {
|
|
89
|
-
return void 0;
|
|
90
|
-
} else {
|
|
91
|
-
return prev;
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}, 1e3);
|
|
95
|
-
return () => {
|
|
96
|
-
unsubscribe();
|
|
97
|
-
clearInterval(t);
|
|
98
|
-
};
|
|
99
|
-
}, [
|
|
100
|
-
space,
|
|
101
|
-
channel
|
|
102
|
-
]);
|
|
103
|
-
return processing;
|
|
104
|
-
};
|
|
105
|
-
var useAnalyticsCallback = (spaceId, name, meta) => {
|
|
106
|
-
const dispatch = (0, import_app_framework.useIntentDispatcher)();
|
|
107
|
-
return (0, import_react2.useCallback)((dynamicMeta) => {
|
|
108
|
-
void dispatch({
|
|
109
|
-
action: import_meta.ObservabilityAction.SEND_EVENT,
|
|
110
|
-
data: {
|
|
111
|
-
name,
|
|
112
|
-
properties: {
|
|
113
|
-
...meta,
|
|
114
|
-
...dynamicMeta,
|
|
115
|
-
spaceId
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
}, [
|
|
120
|
-
dispatch,
|
|
121
|
-
name,
|
|
122
|
-
meta,
|
|
123
|
-
spaceId
|
|
124
|
-
]);
|
|
125
|
-
};
|
|
126
|
-
var useOnEditAnalytics = (message, editing) => {
|
|
127
|
-
const space = (0, import_echo.getSpace)(message);
|
|
128
|
-
const onEditAnalytics = useAnalyticsCallback(space?.id, "threads.comment-edited", {
|
|
129
|
-
messageId: message.id,
|
|
130
|
-
messageLength: message.text.length
|
|
131
|
-
});
|
|
132
|
-
(0, import_react_ui.useOnTransition)(editing, true, false, onEditAnalytics);
|
|
133
|
-
};
|
|
66
|
+
var import_util = require("@dxos/util");
|
|
134
67
|
var parser = import_language.StreamLanguage.define({
|
|
135
68
|
startState: () => ({
|
|
136
69
|
count: 0
|
|
@@ -160,7 +93,7 @@ var command = [
|
|
|
160
93
|
(0, import_language.syntaxHighlighting)(styles)
|
|
161
94
|
];
|
|
162
95
|
var getMessageMetadata = (id, identity) => {
|
|
163
|
-
const fallback = (0,
|
|
96
|
+
const fallback = (0, import_util.hexToFallback)(identity?.identityKey.toHex() ?? "0");
|
|
164
97
|
return {
|
|
165
98
|
id,
|
|
166
99
|
authorId: identity?.identityKey.toHex(),
|
|
@@ -179,84 +112,80 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
179
112
|
const senderIdentity = members.find((member) => message.sender.identityKey && import_react_client.PublicKey.equals(member.identity.identityKey, message.sender.identityKey))?.identity;
|
|
180
113
|
const messageMetadata = getMessageMetadata(message.id, senderIdentity);
|
|
181
114
|
const userIsAuthor = (0, import_halo2.useIdentity)()?.identityKey.toHex() === messageMetadata.authorId;
|
|
182
|
-
const [editing, setEditing] = (0,
|
|
183
|
-
const handleDelete = (0,
|
|
115
|
+
const [editing, setEditing] = (0, import_react3.useState)(false);
|
|
116
|
+
const handleDelete = (0, import_react3.useCallback)(() => onDelete?.(message.id), [
|
|
184
117
|
message,
|
|
185
118
|
onDelete
|
|
186
119
|
]);
|
|
187
|
-
const { t } = (0,
|
|
120
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
|
|
188
121
|
const editLabel = t(editing ? "save message label" : "edit message label");
|
|
189
122
|
const deleteLabel = t("delete message label");
|
|
190
|
-
return /* @__PURE__ */
|
|
123
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageRoot, {
|
|
191
124
|
...messageMetadata,
|
|
192
125
|
classNames: [
|
|
193
126
|
import_react_ui_theme2.hoverableControls,
|
|
194
127
|
import_react_ui_theme2.hoverableFocusedWithinControls
|
|
195
128
|
]
|
|
196
|
-
}, /* @__PURE__ */
|
|
129
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageHeading, {
|
|
197
130
|
authorName: messageMetadata.authorName,
|
|
198
131
|
timestamp: messageMetadata.timestamp
|
|
199
|
-
}, /* @__PURE__ */
|
|
132
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ButtonGroup, {
|
|
200
133
|
classNames: "mie-1"
|
|
201
|
-
}, userIsAuthor && /* @__PURE__ */
|
|
134
|
+
}, userIsAuthor && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
|
|
202
135
|
asChild: true
|
|
203
|
-
}, /* @__PURE__ */
|
|
136
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
|
|
204
137
|
variant: "ghost",
|
|
205
138
|
"data-testid": editing ? "thread.message.save" : "thread.message.edit",
|
|
206
139
|
classNames: messageControlClassNames,
|
|
207
140
|
onClick: () => setEditing((editing2) => !editing2)
|
|
208
|
-
}, /* @__PURE__ */
|
|
141
|
+
}, /* @__PURE__ */ import_react3.default.createElement("span", {
|
|
209
142
|
className: "sr-only"
|
|
210
|
-
}, editLabel), editing ? /* @__PURE__ */
|
|
143
|
+
}, editLabel), editing ? /* @__PURE__ */ import_react3.default.createElement(import_react2.Check, {
|
|
211
144
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
212
|
-
}) : /* @__PURE__ */
|
|
145
|
+
}) : /* @__PURE__ */ import_react3.default.createElement(import_react2.PencilSimple, {
|
|
213
146
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
214
|
-
}))), /* @__PURE__ */
|
|
215
|
-
classNames: "z-[21]"
|
|
216
|
-
}, editLabel, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Tooltip.Arrow, null)))), onDelete && /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Tooltip.Root, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Tooltip.Trigger, {
|
|
147
|
+
}))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, null, editLabel, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null)))), onDelete && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
|
|
217
148
|
asChild: true
|
|
218
|
-
}, /* @__PURE__ */
|
|
149
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
|
|
219
150
|
variant: "ghost",
|
|
220
151
|
"data-testid": "thread.message.delete",
|
|
221
152
|
classNames: messageControlClassNames,
|
|
222
153
|
onClick: () => handleDelete()
|
|
223
|
-
}, /* @__PURE__ */
|
|
154
|
+
}, /* @__PURE__ */ import_react3.default.createElement("span", {
|
|
224
155
|
className: "sr-only"
|
|
225
|
-
}, deleteLabel), /* @__PURE__ */
|
|
156
|
+
}, deleteLabel), /* @__PURE__ */ import_react3.default.createElement(import_react2.X, {
|
|
226
157
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
227
|
-
}))), /* @__PURE__ */
|
|
228
|
-
classNames: "z-[21]"
|
|
229
|
-
}, deleteLabel, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Tooltip.Arrow, null)))))), /* @__PURE__ */ import_react5.default.createElement(TextboxBlock, {
|
|
158
|
+
}))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, null, deleteLabel, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null)))))), /* @__PURE__ */ import_react3.default.createElement(TextboxBlock, {
|
|
230
159
|
message,
|
|
231
160
|
isAuthor: userIsAuthor,
|
|
232
161
|
editing
|
|
233
|
-
}), message.parts
|
|
162
|
+
}), import_live_object2.RefArray.allResolvedTargets(message.parts ?? []).map((part, index) => /* @__PURE__ */ import_react3.default.createElement(MessagePart, {
|
|
234
163
|
key: index,
|
|
235
164
|
part
|
|
236
165
|
})));
|
|
237
166
|
};
|
|
238
167
|
var MessagePart = ({ part }) => {
|
|
239
|
-
return /* @__PURE__ */
|
|
168
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_mosaic.Mosaic.Container, {
|
|
240
169
|
id: part.id
|
|
241
|
-
}, /* @__PURE__ */
|
|
242
|
-
type:
|
|
170
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_mosaic.Mosaic.DraggableTile, {
|
|
171
|
+
type: import_chunk_F735VMTN.THREAD_ITEM,
|
|
243
172
|
path: part.id,
|
|
244
173
|
item: part,
|
|
245
174
|
Component: MessageBlockObjectTile
|
|
246
175
|
}));
|
|
247
176
|
};
|
|
248
177
|
var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
249
|
-
const { themeMode } = (0,
|
|
250
|
-
const inMemoryContentRef = (0,
|
|
251
|
-
const handleDocumentChange = (0,
|
|
178
|
+
const { themeMode } = (0, import_react_ui2.useThemeContext)();
|
|
179
|
+
const inMemoryContentRef = (0, import_react3.useRef)(message.text);
|
|
180
|
+
const handleDocumentChange = (0, import_react3.useCallback)((newState) => {
|
|
252
181
|
inMemoryContentRef.current = newState;
|
|
253
182
|
}, []);
|
|
254
|
-
const saveDocumentChange = (0,
|
|
183
|
+
const saveDocumentChange = (0, import_react3.useCallback)(() => {
|
|
255
184
|
message.text = inMemoryContentRef.current;
|
|
256
185
|
}, [
|
|
257
186
|
message
|
|
258
187
|
]);
|
|
259
|
-
(0,
|
|
188
|
+
(0, import_react_ui2.useOnTransition)(editing, true, false, saveDocumentChange);
|
|
260
189
|
const { parentRef, focusAttributes, view } = (0, import_react_ui_editor2.useTextEditor)(() => ({
|
|
261
190
|
initialValue: message.text,
|
|
262
191
|
extensions: [
|
|
@@ -280,69 +209,55 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
280
209
|
themeMode,
|
|
281
210
|
handleDocumentChange
|
|
282
211
|
]);
|
|
283
|
-
(0,
|
|
212
|
+
(0, import_react3.useEffect)(() => {
|
|
284
213
|
editing && view?.focus();
|
|
285
214
|
}, [
|
|
286
215
|
editing,
|
|
287
216
|
view
|
|
288
217
|
]);
|
|
289
|
-
useOnEditAnalytics(message, !!editing);
|
|
290
|
-
return /* @__PURE__ */
|
|
218
|
+
(0, import_chunk_AWSTZ2KN.useOnEditAnalytics)(message, !!editing);
|
|
219
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
291
220
|
role: "none",
|
|
292
221
|
ref: parentRef,
|
|
293
222
|
className: "mie-4",
|
|
294
223
|
...focusAttributes
|
|
295
224
|
});
|
|
296
225
|
};
|
|
297
|
-
var MessageBlockObjectTile = /* @__PURE__ */ (0,
|
|
226
|
+
var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react3.forwardRef)(({ draggableStyle, draggableProps, item, active, ref: _ref, ...props }, forwardedRef) => {
|
|
298
227
|
let title = item.name ?? item.title ?? item.type ?? "Object";
|
|
299
228
|
if (typeof title !== "string") {
|
|
300
229
|
title = title?.content ?? "";
|
|
301
230
|
}
|
|
302
|
-
return /* @__PURE__ */
|
|
231
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
303
232
|
role: "group",
|
|
304
233
|
className: (0, import_react_ui_theme2.mx)("grid col-span-3 py-1 pr-4", import_react_ui_theme2.hoverableControls, import_react_ui_theme2.hoverableFocusedWithinControls),
|
|
305
234
|
style: draggableStyle,
|
|
306
235
|
ref: forwardedRef
|
|
307
|
-
}, /* @__PURE__ */
|
|
236
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_app_framework.Surface, {
|
|
308
237
|
role: "card",
|
|
309
238
|
limit: 1,
|
|
310
239
|
data: {
|
|
311
|
-
|
|
240
|
+
subject: item
|
|
312
241
|
},
|
|
313
242
|
draggableProps,
|
|
314
243
|
fallback: title,
|
|
315
244
|
...props
|
|
316
245
|
}));
|
|
317
246
|
});
|
|
318
|
-
var ChatHeading = ({ attendableId }) => {
|
|
319
|
-
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
320
|
-
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
321
|
-
role: "none",
|
|
322
|
-
className: "flex items-center"
|
|
323
|
-
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_stack.StackItem.SigilButton, {
|
|
324
|
-
attendableId
|
|
325
|
-
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Icon, {
|
|
326
|
-
icon: "ph--chat--regular",
|
|
327
|
-
size: 5
|
|
328
|
-
})), /* @__PURE__ */ import_react3.default.createElement(import_react_ui_stack.StackItem.HeadingLabel, {
|
|
329
|
-
attendableId
|
|
330
|
-
}, t("chat heading")));
|
|
331
|
-
};
|
|
332
247
|
var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
333
248
|
const identity = (0, import_halo.useIdentity)();
|
|
334
|
-
const space = (0,
|
|
335
|
-
const members = (0,
|
|
336
|
-
const activity = useStatus(space, (0,
|
|
337
|
-
const { t } = (0,
|
|
338
|
-
const [_count, _setCount] = (0,
|
|
249
|
+
const space = (0, import_echo.getSpace)(thread);
|
|
250
|
+
const members = (0, import_echo.useMembers)(space?.key);
|
|
251
|
+
const activity = (0, import_chunk_AWSTZ2KN.useStatus)(space, (0, import_echo.fullyQualifiedId)(thread));
|
|
252
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
|
|
253
|
+
const [_count, _setCount] = (0, import_react.useState)(0);
|
|
339
254
|
const rerenderEditor = () => _setCount((count) => count + 1);
|
|
340
|
-
const [autoFocus, setAutoFocus] = (0,
|
|
341
|
-
const threadScrollRef = (0,
|
|
342
|
-
const { themeMode } = (0,
|
|
343
|
-
const textboxMetadata = getMessageMetadata((0,
|
|
344
|
-
const messageRef = (0,
|
|
345
|
-
const extensions = (0,
|
|
255
|
+
const [autoFocus, setAutoFocus] = (0, import_react.useState)(autoFocusTextbox);
|
|
256
|
+
const threadScrollRef = (0, import_react.useRef)(null);
|
|
257
|
+
const { themeMode } = (0, import_react_ui.useThemeContext)();
|
|
258
|
+
const textboxMetadata = getMessageMetadata((0, import_echo.fullyQualifiedId)(thread), identity);
|
|
259
|
+
const messageRef = (0, import_react.useRef)("");
|
|
260
|
+
const extensions = (0, import_react.useMemo)(() => [
|
|
346
261
|
(0, import_react_ui_editor.createBasicExtensions)({
|
|
347
262
|
placeholder: t("message placeholder")
|
|
348
263
|
}),
|
|
@@ -361,21 +276,21 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
361
276
|
behavior,
|
|
362
277
|
block: "end"
|
|
363
278
|
}), 10);
|
|
364
|
-
(0,
|
|
279
|
+
(0, import_react.useLayoutEffect)(() => {
|
|
365
280
|
scrollToEnd("instant");
|
|
366
281
|
}, []);
|
|
367
282
|
const handleCreate = () => {
|
|
368
283
|
if (!messageRef.current?.length) {
|
|
369
284
|
return false;
|
|
370
285
|
}
|
|
371
|
-
thread.messages.push((0, import_live_object.create)(import_types.MessageType, {
|
|
286
|
+
thread.messages.push((0, import_live_object.makeRef)((0, import_live_object.create)(import_types.MessageType, {
|
|
372
287
|
sender: {
|
|
373
288
|
identityKey: identity.identityKey.toHex()
|
|
374
289
|
},
|
|
375
290
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
376
291
|
text: messageRef.current,
|
|
377
|
-
context
|
|
378
|
-
}));
|
|
292
|
+
context: (0, import_live_object.makeRef)(context)
|
|
293
|
+
})));
|
|
379
294
|
messageRef.current = "";
|
|
380
295
|
setAutoFocus(true);
|
|
381
296
|
scrollToEnd("smooth");
|
|
@@ -383,49 +298,45 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
383
298
|
return true;
|
|
384
299
|
};
|
|
385
300
|
const handleDelete = (id) => {
|
|
386
|
-
const messageIndex = thread.messages.
|
|
301
|
+
const messageIndex = thread.messages.findIndex(import_echo_schema.Ref.hasObjectId(id));
|
|
387
302
|
if (messageIndex !== -1) {
|
|
388
303
|
thread.messages.splice(messageIndex, 1);
|
|
389
304
|
}
|
|
390
305
|
};
|
|
391
|
-
return /* @__PURE__ */
|
|
306
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.Thread, {
|
|
392
307
|
current,
|
|
393
|
-
id: (0,
|
|
308
|
+
id: (0, import_echo.fullyQualifiedId)(thread),
|
|
394
309
|
classNames: "bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0"
|
|
395
|
-
}, /* @__PURE__ */
|
|
310
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Root, {
|
|
396
311
|
classNames: "col-span-2"
|
|
397
|
-
}, /* @__PURE__ */
|
|
312
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Viewport, {
|
|
398
313
|
classNames: "overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]"
|
|
399
|
-
}, /* @__PURE__ */
|
|
314
|
+
}, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
400
315
|
role: "none",
|
|
401
316
|
className: (0, import_react_ui_theme.mx)(import_react_ui_thread.threadLayout, "place-self-end")
|
|
402
|
-
},
|
|
317
|
+
}, import_live_object.RefArray.allResolvedTargets(thread.messages ?? []).map((message) => /* @__PURE__ */ import_react.default.createElement(MessageContainer, {
|
|
403
318
|
key: message.id,
|
|
404
319
|
message,
|
|
405
320
|
members,
|
|
406
321
|
onDelete: handleDelete
|
|
407
|
-
}))), /* @__PURE__ */
|
|
322
|
+
}))), /* @__PURE__ */ import_react.default.createElement("div", {
|
|
408
323
|
role: "none",
|
|
409
324
|
className: "bs-px -mbs-px",
|
|
410
325
|
ref: threadScrollRef
|
|
411
|
-
}), /* @__PURE__ */
|
|
326
|
+
}), /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Scrollbar, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Thumb, null)))), /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.MessageTextbox, {
|
|
412
327
|
extensions,
|
|
413
328
|
autoFocus,
|
|
414
329
|
onSend: handleCreate,
|
|
415
330
|
...textboxMetadata
|
|
416
|
-
}), /* @__PURE__ */
|
|
331
|
+
}), /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.ThreadFooter, {
|
|
417
332
|
activity
|
|
418
333
|
}, t("activity message")));
|
|
419
334
|
};
|
|
420
335
|
// Annotate the CommonJS export names for ESM import in node:
|
|
421
336
|
0 && (module.exports = {
|
|
422
337
|
ChatContainer,
|
|
423
|
-
ChatHeading,
|
|
424
338
|
MessageContainer,
|
|
425
339
|
command,
|
|
426
|
-
getMessageMetadata
|
|
427
|
-
useAnalyticsCallback,
|
|
428
|
-
useOnEditAnalytics,
|
|
429
|
-
useStatus
|
|
340
|
+
getMessageMetadata
|
|
430
341
|
});
|
|
431
|
-
//# sourceMappingURL=chunk-
|
|
342
|
+
//# sourceMappingURL=chunk-6PUGKCPR.cjs.map
|