@dxos/plugin-thread 0.7.5-main.9d26e3a → 0.7.5-main.e9bb01b
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-OI5M262D.mjs +19 -0
- package/dist/lib/browser/ThreadContainer-OI5M262D.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-ENERBDYI.mjs → chunk-636QDHE3.mjs} +3 -3
- package/dist/lib/browser/chunk-636QDHE3.mjs.map +7 -0
- package/dist/lib/browser/chunk-BD3J6HEY.mjs +18 -0
- package/dist/lib/browser/chunk-BD3J6HEY.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-OD2IZKRP.mjs → chunk-GQVZK3BQ.mjs} +21 -87
- package/dist/lib/browser/chunk-GQVZK3BQ.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-6KTMQPL4.mjs → chunk-NO5AZLUZ.mjs} +7 -3
- package/dist/lib/browser/chunk-NO5AZLUZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +149 -939
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/intent-resolver-QFP6L3AF.mjs +287 -0
- package/dist/lib/browser/intent-resolver-QFP6L3AF.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-PXYCYPWA.mjs +410 -0
- package/dist/lib/browser/react-surface-PXYCYPWA.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-ZCNMFBAO.cjs → ThreadContainer-L6TPQJWA.cjs} +14 -13
- package/dist/lib/node/ThreadContainer-L6TPQJWA.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-2CB5AVBL.cjs → chunk-2TK6J6BN.cjs} +70 -138
- package/dist/lib/node/chunk-2TK6J6BN.cjs.map +7 -0
- package/dist/lib/node/{chunk-VW2P26MZ.cjs → chunk-AUVKOX5Q.cjs} +13 -8
- 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-5AYGCXXP.cjs → chunk-S5LH7AIT.cjs} +26 -23
- package/dist/lib/node/chunk-S5LH7AIT.cjs.map +7 -0
- package/dist/lib/node/index.cjs +147 -933
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/intent-resolver-ZSOQILPJ.cjs +299 -0
- package/dist/lib/node/intent-resolver-ZSOQILPJ.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-CPDCOLUZ.cjs +412 -0
- package/dist/lib/node/react-surface-CPDCOLUZ.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-HE46AQJH.mjs +20 -0
- package/dist/lib/node-esm/ThreadContainer-HE46AQJH.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-7YYL6QVU.mjs +20 -0
- package/dist/lib/node-esm/chunk-7YYL6QVU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-AQ74G3GY.mjs → chunk-AZCU7SHI.mjs} +21 -87
- package/dist/lib/node-esm/chunk-AZCU7SHI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-RMYATBXM.mjs → chunk-B3CF35MY.mjs} +7 -3
- package/dist/lib/node-esm/chunk-B3CF35MY.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-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 +149 -939
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/intent-resolver-MHP4C2NZ.mjs +288 -0
- package/dist/lib/node-esm/intent-resolver-MHP4C2NZ.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-RD4F2LRT.mjs +411 -0
- package/dist/lib/node-esm/react-surface-RD4F2LRT.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/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/ThreadComplementary.d.ts +1 -5
- 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/command-extension.d.ts.map +1 -1
- 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/types.d.ts +5 -5
- package/dist/types/src/components/types.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 +10 -14
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -38
- package/src/ThreadPlugin.tsx +104 -470
- 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 +239 -0
- package/src/capabilities/markdown.ts +18 -0
- package/src/capabilities/react-surface.tsx +56 -0
- package/src/capabilities/settings.ts +14 -0
- package/src/capabilities/state.ts +25 -0
- package/src/components/Chat.stories.tsx +25 -23
- package/src/components/CommentContainer.tsx +16 -30
- package/src/components/CommentsContainer.tsx +1 -17
- package/src/components/ThreadComplementary.tsx +85 -48
- package/src/components/ThreadContainer.tsx +22 -0
- package/src/components/ThreadSettings.tsx +3 -3
- package/src/components/command-extension.ts +2 -5
- package/src/components/index.ts +1 -2
- package/src/components/types.ts +5 -5
- package/src/index.ts +1 -5
- package/src/meta.ts +1 -1
- package/src/translations.ts +1 -0
- package/src/types.ts +10 -29
- package/dist/lib/browser/ThreadArticle-EWLTNU6Z.mjs +0 -18
- package/dist/lib/browser/ThreadArticle-EWLTNU6Z.mjs.map +0 -7
- package/dist/lib/browser/ThreadMain-ABEDFWHC.mjs +0 -26
- package/dist/lib/browser/ThreadMain-ABEDFWHC.mjs.map +0 -7
- package/dist/lib/browser/chunk-6KTMQPL4.mjs.map +0 -7
- package/dist/lib/browser/chunk-ENERBDYI.mjs.map +0 -7
- package/dist/lib/browser/chunk-OD2IZKRP.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-ZCNMFBAO.cjs.map +0 -7
- package/dist/lib/node/ThreadMain-5AYGCXXP.cjs.map +0 -7
- package/dist/lib/node/chunk-2CB5AVBL.cjs.map +0 -7
- package/dist/lib/node/chunk-IC2NICNC.cjs.map +0 -7
- package/dist/lib/node/chunk-VW2P26MZ.cjs.map +0 -7
- package/dist/lib/node/meta.cjs.map +0 -7
- package/dist/lib/node-esm/ThreadArticle-F37HYTOU.mjs +0 -19
- package/dist/lib/node-esm/ThreadArticle-F37HYTOU.mjs.map +0 -7
- package/dist/lib/node-esm/ThreadMain-OL6ZHNZY.mjs +0 -27
- package/dist/lib/node-esm/ThreadMain-OL6ZHNZY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7QRGG25F.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AQ74G3GY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RMYATBXM.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,43 +26,35 @@ 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_2TK6J6BN_exports = {};
|
|
30
|
+
__export(chunk_2TK6J6BN_exports, {
|
|
31
31
|
ChatContainer: () => ChatContainer,
|
|
32
32
|
MessageContainer: () => MessageContainer,
|
|
33
33
|
command: () => command,
|
|
34
|
-
getMessageMetadata: () => getMessageMetadata
|
|
35
|
-
useAnalyticsCallback: () => useAnalyticsCallback,
|
|
36
|
-
useOnEditAnalytics: () => useOnEditAnalytics,
|
|
37
|
-
useStatus: () => useStatus
|
|
34
|
+
getMessageMetadata: () => getMessageMetadata
|
|
38
35
|
});
|
|
39
|
-
module.exports = __toCommonJS(
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
var import_app_framework = require("@dxos/app-framework");
|
|
44
|
-
var import_types = require("@dxos/plugin-observability/types");
|
|
45
|
-
var import_echo = require("@dxos/react-client/echo");
|
|
46
|
-
var import_react_ui = require("@dxos/react-ui");
|
|
47
|
-
var import_react3 = __toESM(require("react"));
|
|
36
|
+
module.exports = __toCommonJS(chunk_2TK6J6BN_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"));
|
|
48
40
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
49
41
|
var import_live_object = require("@dxos/live-object");
|
|
50
|
-
var
|
|
51
|
-
var
|
|
42
|
+
var import_types = require("@dxos/plugin-space/types");
|
|
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
50
|
var import_view = require("@codemirror/view");
|
|
59
|
-
var
|
|
60
|
-
var
|
|
61
|
-
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");
|
|
62
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");
|
|
@@ -72,61 +64,6 @@ var import_react_ui_editor3 = require("@dxos/react-ui-editor");
|
|
|
72
64
|
var import_react_ui_theme3 = require("@dxos/react-ui-theme");
|
|
73
65
|
var import_display_name = require("@dxos/display-name");
|
|
74
66
|
var import_util = require("@dxos/util");
|
|
75
|
-
var useStatus = (space, channel) => {
|
|
76
|
-
const [processing, setProcessing] = (0, import_react.useState)(false);
|
|
77
|
-
(0, import_react.useEffect)(() => {
|
|
78
|
-
if (!space || !channel) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
const unsubscribe = space.listen(`status/${channel}`, (status) => {
|
|
82
|
-
const { event } = status.payload ?? {};
|
|
83
|
-
setProcessing(event === "processing");
|
|
84
|
-
});
|
|
85
|
-
const t = setInterval(() => {
|
|
86
|
-
setProcessing((prev) => {
|
|
87
|
-
if (typeof prev?.ts === "number" && Date.now() - prev.ts > 3e4) {
|
|
88
|
-
return void 0;
|
|
89
|
-
} else {
|
|
90
|
-
return prev;
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
}, 1e3);
|
|
94
|
-
return () => {
|
|
95
|
-
unsubscribe();
|
|
96
|
-
clearInterval(t);
|
|
97
|
-
};
|
|
98
|
-
}, [
|
|
99
|
-
space,
|
|
100
|
-
channel
|
|
101
|
-
]);
|
|
102
|
-
return processing;
|
|
103
|
-
};
|
|
104
|
-
var useAnalyticsCallback = (spaceId, name, meta) => {
|
|
105
|
-
const { dispatchPromise: dispatch } = (0, import_app_framework.useIntentDispatcher)();
|
|
106
|
-
return (0, import_react2.useCallback)((dynamicMeta) => {
|
|
107
|
-
void dispatch((0, import_app_framework.createIntent)(import_types.ObservabilityAction.SendEvent, {
|
|
108
|
-
name,
|
|
109
|
-
properties: {
|
|
110
|
-
...meta,
|
|
111
|
-
...dynamicMeta,
|
|
112
|
-
spaceId
|
|
113
|
-
}
|
|
114
|
-
}));
|
|
115
|
-
}, [
|
|
116
|
-
dispatch,
|
|
117
|
-
name,
|
|
118
|
-
meta,
|
|
119
|
-
spaceId
|
|
120
|
-
]);
|
|
121
|
-
};
|
|
122
|
-
var useOnEditAnalytics = (message, editing) => {
|
|
123
|
-
const space = (0, import_echo.getSpace)(message);
|
|
124
|
-
const onEditAnalytics = useAnalyticsCallback(space?.id, "threads.comment-edited", {
|
|
125
|
-
messageId: message.id,
|
|
126
|
-
messageLength: message.text.length
|
|
127
|
-
});
|
|
128
|
-
(0, import_react_ui.useOnTransition)(editing, true, false, onEditAnalytics);
|
|
129
|
-
};
|
|
130
67
|
var parser = import_language.StreamLanguage.define({
|
|
131
68
|
startState: () => ({
|
|
132
69
|
count: 0
|
|
@@ -146,9 +83,7 @@ var parser = import_language.StreamLanguage.define({
|
|
|
146
83
|
var styles = import_language.HighlightStyle.define([
|
|
147
84
|
{
|
|
148
85
|
tag: import_react_ui_editor3.tags.tagName,
|
|
149
|
-
class: (0, import_react_ui_theme3.mx)(
|
|
150
|
-
palette: "cyan"
|
|
151
|
-
}), "text-baseText font-medium")
|
|
86
|
+
class: (0, import_react_ui_theme3.mx)("dx-tag dx-tag--indigo text-baseText font-medium")
|
|
152
87
|
}
|
|
153
88
|
]);
|
|
154
89
|
var command = [
|
|
@@ -175,80 +110,80 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
175
110
|
const senderIdentity = members.find((member) => message.sender.identityKey && import_react_client.PublicKey.equals(member.identity.identityKey, message.sender.identityKey))?.identity;
|
|
176
111
|
const messageMetadata = getMessageMetadata(message.id, senderIdentity);
|
|
177
112
|
const userIsAuthor = (0, import_halo2.useIdentity)()?.identityKey.toHex() === messageMetadata.authorId;
|
|
178
|
-
const [editing, setEditing] = (0,
|
|
179
|
-
const handleDelete = (0,
|
|
113
|
+
const [editing, setEditing] = (0, import_react3.useState)(false);
|
|
114
|
+
const handleDelete = (0, import_react3.useCallback)(() => onDelete?.(message.id), [
|
|
180
115
|
message,
|
|
181
116
|
onDelete
|
|
182
117
|
]);
|
|
183
|
-
const { t } = (0,
|
|
118
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
|
|
184
119
|
const editLabel = t(editing ? "save message label" : "edit message label");
|
|
185
120
|
const deleteLabel = t("delete message label");
|
|
186
|
-
return /* @__PURE__ */
|
|
121
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageRoot, {
|
|
187
122
|
...messageMetadata,
|
|
188
123
|
classNames: [
|
|
189
124
|
import_react_ui_theme2.hoverableControls,
|
|
190
125
|
import_react_ui_theme2.hoverableFocusedWithinControls
|
|
191
126
|
]
|
|
192
|
-
}, /* @__PURE__ */
|
|
127
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageHeading, {
|
|
193
128
|
authorName: messageMetadata.authorName,
|
|
194
129
|
timestamp: messageMetadata.timestamp
|
|
195
|
-
}, /* @__PURE__ */
|
|
130
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ButtonGroup, {
|
|
196
131
|
classNames: "mie-1"
|
|
197
|
-
}, userIsAuthor && /* @__PURE__ */
|
|
132
|
+
}, userIsAuthor && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
|
|
198
133
|
asChild: true
|
|
199
|
-
}, /* @__PURE__ */
|
|
134
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
|
|
200
135
|
variant: "ghost",
|
|
201
136
|
"data-testid": editing ? "thread.message.save" : "thread.message.edit",
|
|
202
137
|
classNames: messageControlClassNames,
|
|
203
138
|
onClick: () => setEditing((editing2) => !editing2)
|
|
204
|
-
}, /* @__PURE__ */
|
|
139
|
+
}, /* @__PURE__ */ import_react3.default.createElement("span", {
|
|
205
140
|
className: "sr-only"
|
|
206
|
-
}, editLabel), editing ? /* @__PURE__ */
|
|
141
|
+
}, editLabel), editing ? /* @__PURE__ */ import_react3.default.createElement(import_react2.Check, {
|
|
207
142
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
208
|
-
}) : /* @__PURE__ */
|
|
143
|
+
}) : /* @__PURE__ */ import_react3.default.createElement(import_react2.PencilSimple, {
|
|
209
144
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
210
|
-
}))), /* @__PURE__ */
|
|
145
|
+
}))), /* @__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, {
|
|
211
146
|
asChild: true
|
|
212
|
-
}, /* @__PURE__ */
|
|
147
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
|
|
213
148
|
variant: "ghost",
|
|
214
149
|
"data-testid": "thread.message.delete",
|
|
215
150
|
classNames: messageControlClassNames,
|
|
216
151
|
onClick: () => handleDelete()
|
|
217
|
-
}, /* @__PURE__ */
|
|
152
|
+
}, /* @__PURE__ */ import_react3.default.createElement("span", {
|
|
218
153
|
className: "sr-only"
|
|
219
|
-
}, deleteLabel), /* @__PURE__ */
|
|
154
|
+
}, deleteLabel), /* @__PURE__ */ import_react3.default.createElement(import_react2.X, {
|
|
220
155
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
221
|
-
}))), /* @__PURE__ */
|
|
156
|
+
}))), /* @__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, {
|
|
222
157
|
message,
|
|
223
158
|
isAuthor: userIsAuthor,
|
|
224
159
|
editing
|
|
225
|
-
}), import_live_object2.RefArray.allResolvedTargets(message.parts ?? []).map((part, index) => /* @__PURE__ */
|
|
160
|
+
}), import_live_object2.RefArray.allResolvedTargets(message.parts ?? []).map((part, index) => /* @__PURE__ */ import_react3.default.createElement(MessagePart, {
|
|
226
161
|
key: index,
|
|
227
162
|
part
|
|
228
163
|
})));
|
|
229
164
|
};
|
|
230
165
|
var MessagePart = ({ part }) => {
|
|
231
|
-
return /* @__PURE__ */
|
|
166
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_mosaic.Mosaic.Container, {
|
|
232
167
|
id: part.id
|
|
233
|
-
}, /* @__PURE__ */
|
|
234
|
-
type:
|
|
168
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_mosaic.Mosaic.DraggableTile, {
|
|
169
|
+
type: import_chunk_F735VMTN.THREAD_ITEM,
|
|
235
170
|
path: part.id,
|
|
236
171
|
item: part,
|
|
237
172
|
Component: MessageBlockObjectTile
|
|
238
173
|
}));
|
|
239
174
|
};
|
|
240
175
|
var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
241
|
-
const { themeMode } = (0,
|
|
242
|
-
const inMemoryContentRef = (0,
|
|
243
|
-
const handleDocumentChange = (0,
|
|
176
|
+
const { themeMode } = (0, import_react_ui2.useThemeContext)();
|
|
177
|
+
const inMemoryContentRef = (0, import_react3.useRef)(message.text);
|
|
178
|
+
const handleDocumentChange = (0, import_react3.useCallback)((newState) => {
|
|
244
179
|
inMemoryContentRef.current = newState;
|
|
245
180
|
}, []);
|
|
246
|
-
const saveDocumentChange = (0,
|
|
181
|
+
const saveDocumentChange = (0, import_react3.useCallback)(() => {
|
|
247
182
|
message.text = inMemoryContentRef.current;
|
|
248
183
|
}, [
|
|
249
184
|
message
|
|
250
185
|
]);
|
|
251
|
-
(0,
|
|
186
|
+
(0, import_react_ui2.useOnTransition)(editing, true, false, saveDocumentChange);
|
|
252
187
|
const { parentRef, focusAttributes, view } = (0, import_react_ui_editor2.useTextEditor)(() => ({
|
|
253
188
|
initialValue: message.text,
|
|
254
189
|
extensions: [
|
|
@@ -272,31 +207,31 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
272
207
|
themeMode,
|
|
273
208
|
handleDocumentChange
|
|
274
209
|
]);
|
|
275
|
-
(0,
|
|
210
|
+
(0, import_react3.useEffect)(() => {
|
|
276
211
|
editing && view?.focus();
|
|
277
212
|
}, [
|
|
278
213
|
editing,
|
|
279
214
|
view
|
|
280
215
|
]);
|
|
281
|
-
useOnEditAnalytics(message, !!editing);
|
|
282
|
-
return /* @__PURE__ */
|
|
216
|
+
(0, import_chunk_AWSTZ2KN.useOnEditAnalytics)(message, !!editing);
|
|
217
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
283
218
|
role: "none",
|
|
284
219
|
ref: parentRef,
|
|
285
220
|
className: "mie-4",
|
|
286
221
|
...focusAttributes
|
|
287
222
|
});
|
|
288
223
|
};
|
|
289
|
-
var MessageBlockObjectTile = /* @__PURE__ */ (0,
|
|
224
|
+
var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react3.forwardRef)(({ draggableStyle, draggableProps, item, active, ref: _ref, ...props }, forwardedRef) => {
|
|
290
225
|
let title = item.name ?? item.title ?? item.type ?? "Object";
|
|
291
226
|
if (typeof title !== "string") {
|
|
292
227
|
title = title?.content ?? "";
|
|
293
228
|
}
|
|
294
|
-
return /* @__PURE__ */
|
|
229
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
295
230
|
role: "group",
|
|
296
231
|
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),
|
|
297
232
|
style: draggableStyle,
|
|
298
233
|
ref: forwardedRef
|
|
299
|
-
}, /* @__PURE__ */
|
|
234
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_app_framework.Surface, {
|
|
300
235
|
role: "card",
|
|
301
236
|
limit: 1,
|
|
302
237
|
data: {
|
|
@@ -309,18 +244,18 @@ var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react5.forwardRef)(({ dr
|
|
|
309
244
|
});
|
|
310
245
|
var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
311
246
|
const identity = (0, import_halo.useIdentity)();
|
|
312
|
-
const space = (0,
|
|
313
|
-
const members = (0,
|
|
314
|
-
const activity = useStatus(space, (0,
|
|
315
|
-
const { t } = (0,
|
|
316
|
-
const [_count, _setCount] = (0,
|
|
247
|
+
const space = (0, import_echo.getSpace)(thread);
|
|
248
|
+
const members = (0, import_echo.useMembers)(space?.key);
|
|
249
|
+
const activity = (0, import_chunk_AWSTZ2KN.useStatus)(space, (0, import_echo.fullyQualifiedId)(thread));
|
|
250
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
|
|
251
|
+
const [_count, _setCount] = (0, import_react.useState)(0);
|
|
317
252
|
const rerenderEditor = () => _setCount((count) => count + 1);
|
|
318
|
-
const [autoFocus, setAutoFocus] = (0,
|
|
319
|
-
const threadScrollRef = (0,
|
|
320
|
-
const { themeMode } = (0,
|
|
321
|
-
const textboxMetadata = getMessageMetadata((0,
|
|
322
|
-
const messageRef = (0,
|
|
323
|
-
const extensions = (0,
|
|
253
|
+
const [autoFocus, setAutoFocus] = (0, import_react.useState)(autoFocusTextbox);
|
|
254
|
+
const threadScrollRef = (0, import_react.useRef)(null);
|
|
255
|
+
const { themeMode } = (0, import_react_ui.useThemeContext)();
|
|
256
|
+
const textboxMetadata = getMessageMetadata((0, import_echo.fullyQualifiedId)(thread), identity);
|
|
257
|
+
const messageRef = (0, import_react.useRef)("");
|
|
258
|
+
const extensions = (0, import_react.useMemo)(() => [
|
|
324
259
|
(0, import_react_ui_editor.createBasicExtensions)({
|
|
325
260
|
placeholder: t("message placeholder")
|
|
326
261
|
}),
|
|
@@ -339,14 +274,14 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
339
274
|
behavior,
|
|
340
275
|
block: "end"
|
|
341
276
|
}), 10);
|
|
342
|
-
(0,
|
|
277
|
+
(0, import_react.useLayoutEffect)(() => {
|
|
343
278
|
scrollToEnd("instant");
|
|
344
279
|
}, []);
|
|
345
280
|
const handleCreate = () => {
|
|
346
281
|
if (!messageRef.current?.length) {
|
|
347
282
|
return false;
|
|
348
283
|
}
|
|
349
|
-
thread.messages.push((0, import_live_object.makeRef)((0, import_live_object.create)(
|
|
284
|
+
thread.messages.push((0, import_live_object.makeRef)((0, import_live_object.create)(import_types.MessageType, {
|
|
350
285
|
sender: {
|
|
351
286
|
identityKey: identity.identityKey.toHex()
|
|
352
287
|
},
|
|
@@ -366,32 +301,32 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
366
301
|
thread.messages.splice(messageIndex, 1);
|
|
367
302
|
}
|
|
368
303
|
};
|
|
369
|
-
return /* @__PURE__ */
|
|
304
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.Thread, {
|
|
370
305
|
current,
|
|
371
|
-
id: (0,
|
|
306
|
+
id: (0, import_echo.fullyQualifiedId)(thread),
|
|
372
307
|
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"
|
|
373
|
-
}, /* @__PURE__ */
|
|
308
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Root, {
|
|
374
309
|
classNames: "col-span-2"
|
|
375
|
-
}, /* @__PURE__ */
|
|
310
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Viewport, {
|
|
376
311
|
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]"
|
|
377
|
-
}, /* @__PURE__ */
|
|
312
|
+
}, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
378
313
|
role: "none",
|
|
379
314
|
className: (0, import_react_ui_theme.mx)(import_react_ui_thread.threadLayout, "place-self-end")
|
|
380
|
-
}, import_live_object.RefArray.allResolvedTargets(thread.messages ?? []).map((message) => /* @__PURE__ */
|
|
315
|
+
}, import_live_object.RefArray.allResolvedTargets(thread.messages ?? []).map((message) => /* @__PURE__ */ import_react.default.createElement(MessageContainer, {
|
|
381
316
|
key: message.id,
|
|
382
317
|
message,
|
|
383
318
|
members,
|
|
384
319
|
onDelete: handleDelete
|
|
385
|
-
}))), /* @__PURE__ */
|
|
320
|
+
}))), /* @__PURE__ */ import_react.default.createElement("div", {
|
|
386
321
|
role: "none",
|
|
387
322
|
className: "bs-px -mbs-px",
|
|
388
323
|
ref: threadScrollRef
|
|
389
|
-
}), /* @__PURE__ */
|
|
324
|
+
}), /* @__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, {
|
|
390
325
|
extensions,
|
|
391
326
|
autoFocus,
|
|
392
327
|
onSend: handleCreate,
|
|
393
328
|
...textboxMetadata
|
|
394
|
-
}), /* @__PURE__ */
|
|
329
|
+
}), /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.ThreadFooter, {
|
|
395
330
|
activity
|
|
396
331
|
}, t("activity message")));
|
|
397
332
|
};
|
|
@@ -400,9 +335,6 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
400
335
|
ChatContainer,
|
|
401
336
|
MessageContainer,
|
|
402
337
|
command,
|
|
403
|
-
getMessageMetadata
|
|
404
|
-
useAnalyticsCallback,
|
|
405
|
-
useOnEditAnalytics,
|
|
406
|
-
useStatus
|
|
338
|
+
getMessageMetadata
|
|
407
339
|
});
|
|
408
|
-
//# sourceMappingURL=chunk-
|
|
340
|
+
//# sourceMappingURL=chunk-2TK6J6BN.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ChatContainer.tsx", "../../../src/components/MessageContainer.tsx", "../../../src/components/command-extension.ts", "../../../src/util.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { Ref } from '@dxos/echo-schema';\nimport { create, makeRef, RefArray } from '@dxos/live-object';\nimport { MessageType } from '@dxos/plugin-space/types';\nimport { fullyQualifiedId, getSpace, useMembers, type Expando } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, threadLayout } from '@dxos/react-ui-thread';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { type ThreadContainerProps } from './types';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nexport const ChatHeading = ({ attendableId }: { attendableId?: string }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n return (\n <div role='none' className='flex items-center'>\n <StackItem.SigilButton attendableId={attendableId}>\n <Icon icon='ph--chat--regular' size={5} />\n </StackItem.SigilButton>\n <StackItem.HeadingLabel attendableId={attendableId}>{t('chat heading')}</StackItem.HeadingLabel>\n </div>\n );\n};\n\nexport const ChatContainer = ({ thread, context, current, autoFocusTextbox }: ThreadContainerProps) => {\n const identity = useIdentity()!;\n const space = getSpace(thread);\n const members = useMembers(space?.key);\n const activity = useStatus(space, fullyQualifiedId(thread));\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const [autoFocus, setAutoFocus] = useState(autoFocusTextbox);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(fullyQualifiedId(thread), identity);\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 [themeMode, _count],\n );\n\n // TODO(thure): Factor out.\n // TODO(thure): `flex-col-reverse` does not work to start the container scrolled to the end while also using\n // `ScrollArea`. This is the least-bad way I found to scroll to the end on mount. Note that 0ms was insufficient\n // for the desired effect; this is likely hardware-dependent and should be reevaluated.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n useLayoutEffect(() => {\n scrollToEnd('instant');\n }, []);\n\n // TODO(burdon): Change to model.\n const handleCreate: MessageTextboxProps['onSend'] = () => {\n if (!messageRef.current?.length) {\n return false;\n }\n\n thread.messages.push(\n makeRef(\n create(MessageType, {\n sender: { identityKey: identity.identityKey.toHex() },\n timestamp: new Date().toISOString(),\n text: messageRef.current,\n context: makeRef(context as Expando),\n }),\n ),\n );\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n const handleDelete = (id: string) => {\n const messageIndex = thread.messages.findIndex(Ref.hasObjectId(id));\n if (messageIndex !== -1) {\n thread.messages.splice(messageIndex, 1);\n }\n };\n\n return (\n <Thread\n current={current}\n id={fullyQualifiedId(thread)}\n 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'\n >\n <ScrollArea.Root classNames='col-span-2'>\n <ScrollArea.Viewport 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]'>\n <div role='none' className={mx(threadLayout, 'place-self-end')}>\n {RefArray.allResolvedTargets(thread.messages ?? []).map((message) => (\n <MessageContainer key={message.id} message={message} members={members} onDelete={handleDelete} />\n ))}\n </div>\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 <ScrollArea.Scrollbar>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n </Thread>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport { Check, PencilSimple, X } from '@phosphor-icons/react';\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { RefArray } from '@dxos/live-object';\nimport { type MessageType } from '@dxos/plugin-space/types';\nimport { PublicKey } from '@dxos/react-client';\nimport { type ReactiveEchoObject, type Expando, type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport { Mosaic, type MosaicTileComponent } from '@dxos/react-ui-mosaic';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_ITEM, THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\n// TODO(thure): #8149\nconst messageControlClassNames = ['!p-1 !min-bs-0 transition-opacity', hoverableControlItem];\n\nexport const MessageContainer = ({\n message,\n members,\n onDelete,\n}: {\n message: MessageType;\n members: SpaceMember[];\n onDelete?: (id: string) => void;\n}) => {\n const senderIdentity = members.find(\n (member) => message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey),\n )?.identity;\n const messageMetadata = getMessageMetadata(message.id, senderIdentity);\n const userIsAuthor = useIdentity()?.identityKey.toHex() === messageMetadata.authorId;\n const [editing, setEditing] = useState(false);\n const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);\n const { t } = useTranslation(THREAD_PLUGIN);\n const editLabel = t(editing ? 'save message label' : 'edit message label');\n const deleteLabel = t('delete message label');\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}\n classNames={messageControlClassNames}\n onClick={() => setEditing((editing) => !editing)}\n >\n <span className='sr-only'>{editLabel}</span>\n {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n {editLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n {onDelete && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={() => handleDelete()}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n {deleteLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </ButtonGroup>\n </MessageHeading>\n <TextboxBlock message={message} isAuthor={userIsAuthor} editing={editing} />\n {RefArray.allResolvedTargets(message.parts ?? []).map((part, index) => (\n <MessagePart key={index} part={part} />\n ))}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Expando }) => {\n return (\n <Mosaic.Container id={part.id}>\n <Mosaic.DraggableTile type={THREAD_ITEM} path={part.id} item={part} Component={MessageBlockObjectTile} />\n </Mosaic.Container>\n );\n};\n\nconst TextboxBlock = ({\n message,\n isAuthor,\n editing,\n}: {\n message: MessageType;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(message.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n message.text = inMemoryContentRef.current;\n }, [message]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: message.text,\n extensions: [\n createBasicExtensions({ readonly: !isAuthor || !editing }),\n createThemeExtensions({ themeMode }),\n command,\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n handleDocumentChange(update.state.doc.toString());\n }\n }),\n ],\n }),\n [message.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n useOnEditAnalytics(message, !!editing);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile: MosaicTileComponent<ReactiveEchoObject<any>> = forwardRef(\n ({ draggableStyle, draggableProps, item, active, ref: _ref, ...props }, forwardedRef) => {\n let title = item.name ?? item.title ?? item.type ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n style={draggableStyle}\n ref={forwardedRef}\n >\n <Surface\n role='card'\n limit={1}\n data={{ subject: item }}\n draggableProps={draggableProps}\n fallback={title}\n {...props}\n />\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n { tag: tags.tagName, class: mx('dx-tag dx-tag--indigo text-baseText font-medium') },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { generateName } from '@dxos/display-name';\nimport { type PublicKey } from '@dxos/react-client';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type MessageMetadata } from '@dxos/react-ui-thread';\nimport { hexToFallback } from '@dxos/util';\n\nexport type MessagePropertiesProvider = (identityKey: PublicKey | undefined) => MessageMetadata;\n\nexport const getMessageMetadata = (id: string, identity?: Identity): MessageMetadata => {\n const fallback = hexToFallback(identity?.identityKey.toHex() ?? '0');\n return {\n id,\n authorId: identity?.identityKey.toHex(),\n authorName:\n identity?.profile?.displayName ??\n (identity?.identityKey ? generateName(identity.identityKey.toHex()) : undefined),\n authorAvatarProps: {\n hue: identity?.profile?.data?.hue ?? fallback.hue,\n emoji: identity?.profile?.data?.emoji ?? fallback.emoji,\n },\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_react", "import_live_object", "import_halo", "import_react_ui", "import_react_ui_editor", "import_react_ui_theme", "import_react_ui_thread", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "command", "syntaxHighlighting", "getMessageMetadata", "id", "identity", "fallback", "hexToFallback", "identityKey", "toHex", "authorId", "authorName", "profile", "displayName", "generateName", "undefined", "authorAvatarProps", "hue", "data", "emoji", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "message", "members", "onDelete", "senderIdentity", "find", "member", "sender", "PublicKey", "equals", "messageMetadata", "userIsAuthor", "useIdentity", "editing", "setEditing", "useState", "handleDelete", "useCallback", "t", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "React", "MessageRoot", "classNames", "hoverableControls", "hoverableFocusedWithinControls", "MessageHeading", "timestamp", "ButtonGroup", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "data-testid", "onClick", "span", "className", "Check", "getSize", "PencilSimple", "Portal", "Content", "Arrow", "X", "TextboxBlock", "isAuthor", "RefArray", "allResolvedTargets", "parts", "map", "part", "index", "MessagePart", "key", "Mosaic", "Container", "DraggableTile", "type", "THREAD_ITEM", "path", "item", "Component", "MessageBlockObjectTile", "themeMode", "useThemeContext", "inMemoryContentRef", "useRef", "text", "handleDocumentChange", "newState", "current", "saveDocumentChange", "useOnTransition", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "readonly", "createThemeExtensions", "EditorView", "updateListener", "of", "update", "docChanged", "doc", "toString", "useEffect", "focus", "useOnEditAnalytics", "div", "role", "ref", "forwardRef", "draggableStyle", "draggableProps", "active", "_ref", "props", "forwardedRef", "title", "name", "content", "style", "Surface", "limit", "subject", "ChatContainer", "thread", "context", "autoFocusTextbox", "space", "getSpace", "useMembers", "activity", "useStatus", "fullyQualifiedId", "_count", "_setCount", "rerenderEditor", "autoFocus", "setAutoFocus", "threadScrollRef", "textboxMetadata", "messageRef", "useMemo", "placeholder", "listener", "onChange", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "useLayoutEffect", "handleCreate", "length", "messages", "push", "makeRef", "create", "MessageType", "Date", "toISOString", "messageIndex", "findIndex", "Ref", "hasObjectId", "splice", "Thread", "ScrollArea", "Viewport", "threadLayout", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
|
|
7
|
+
}
|