@dxos/plugin-thread 0.7.5-main.9d26e3a → 0.7.5-main.9d2a38b
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-OD2IZKRP.mjs → chunk-GQONSZ3J.mjs} +19 -83
- 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-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-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-ZCNMFBAO.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-2CB5AVBL.cjs → chunk-6PUGKCPR.cjs} +69 -135
- package/dist/lib/node/chunk-6PUGKCPR.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-ZRN7B26W.cjs} +26 -23
- package/dist/lib/node/chunk-ZRN7B26W.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-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-RMYATBXM.mjs → chunk-B3CF35MY.mjs} +7 -3
- package/dist/lib/node-esm/chunk-B3CF35MY.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-AQ74G3GY.mjs → chunk-DYFIKKDT.mjs} +19 -83
- 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 +149 -939
- 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/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/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 +105 -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 +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 +25 -23
- package/src/components/CommentContainer.tsx +16 -30
- package/src/components/CommentsContainer.tsx +1 -17
- package/src/components/ThreadComplementary.tsx +82 -48
- package/src/components/ThreadContainer.tsx +22 -0
- 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_6PUGKCPR_exports = {};
|
|
30
|
+
__export(chunk_6PUGKCPR_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_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"));
|
|
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
|
|
@@ -175,80 +112,80 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
175
112
|
const senderIdentity = members.find((member) => message.sender.identityKey && import_react_client.PublicKey.equals(member.identity.identityKey, message.sender.identityKey))?.identity;
|
|
176
113
|
const messageMetadata = getMessageMetadata(message.id, senderIdentity);
|
|
177
114
|
const userIsAuthor = (0, import_halo2.useIdentity)()?.identityKey.toHex() === messageMetadata.authorId;
|
|
178
|
-
const [editing, setEditing] = (0,
|
|
179
|
-
const handleDelete = (0,
|
|
115
|
+
const [editing, setEditing] = (0, import_react3.useState)(false);
|
|
116
|
+
const handleDelete = (0, import_react3.useCallback)(() => onDelete?.(message.id), [
|
|
180
117
|
message,
|
|
181
118
|
onDelete
|
|
182
119
|
]);
|
|
183
|
-
const { t } = (0,
|
|
120
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_F735VMTN.THREAD_PLUGIN);
|
|
184
121
|
const editLabel = t(editing ? "save message label" : "edit message label");
|
|
185
122
|
const deleteLabel = t("delete message label");
|
|
186
|
-
return /* @__PURE__ */
|
|
123
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageRoot, {
|
|
187
124
|
...messageMetadata,
|
|
188
125
|
classNames: [
|
|
189
126
|
import_react_ui_theme2.hoverableControls,
|
|
190
127
|
import_react_ui_theme2.hoverableFocusedWithinControls
|
|
191
128
|
]
|
|
192
|
-
}, /* @__PURE__ */
|
|
129
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageHeading, {
|
|
193
130
|
authorName: messageMetadata.authorName,
|
|
194
131
|
timestamp: messageMetadata.timestamp
|
|
195
|
-
}, /* @__PURE__ */
|
|
132
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ButtonGroup, {
|
|
196
133
|
classNames: "mie-1"
|
|
197
|
-
}, 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, {
|
|
198
135
|
asChild: true
|
|
199
|
-
}, /* @__PURE__ */
|
|
136
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
|
|
200
137
|
variant: "ghost",
|
|
201
138
|
"data-testid": editing ? "thread.message.save" : "thread.message.edit",
|
|
202
139
|
classNames: messageControlClassNames,
|
|
203
140
|
onClick: () => setEditing((editing2) => !editing2)
|
|
204
|
-
}, /* @__PURE__ */
|
|
141
|
+
}, /* @__PURE__ */ import_react3.default.createElement("span", {
|
|
205
142
|
className: "sr-only"
|
|
206
|
-
}, editLabel), editing ? /* @__PURE__ */
|
|
143
|
+
}, editLabel), editing ? /* @__PURE__ */ import_react3.default.createElement(import_react2.Check, {
|
|
207
144
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
208
|
-
}) : /* @__PURE__ */
|
|
145
|
+
}) : /* @__PURE__ */ import_react3.default.createElement(import_react2.PencilSimple, {
|
|
209
146
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
210
|
-
}))), /* @__PURE__ */
|
|
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, {
|
|
211
148
|
asChild: true
|
|
212
|
-
}, /* @__PURE__ */
|
|
149
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
|
|
213
150
|
variant: "ghost",
|
|
214
151
|
"data-testid": "thread.message.delete",
|
|
215
152
|
classNames: messageControlClassNames,
|
|
216
153
|
onClick: () => handleDelete()
|
|
217
|
-
}, /* @__PURE__ */
|
|
154
|
+
}, /* @__PURE__ */ import_react3.default.createElement("span", {
|
|
218
155
|
className: "sr-only"
|
|
219
|
-
}, deleteLabel), /* @__PURE__ */
|
|
156
|
+
}, deleteLabel), /* @__PURE__ */ import_react3.default.createElement(import_react2.X, {
|
|
220
157
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
221
|
-
}))), /* @__PURE__ */
|
|
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, {
|
|
222
159
|
message,
|
|
223
160
|
isAuthor: userIsAuthor,
|
|
224
161
|
editing
|
|
225
|
-
}), import_live_object2.RefArray.allResolvedTargets(message.parts ?? []).map((part, index) => /* @__PURE__ */
|
|
162
|
+
}), import_live_object2.RefArray.allResolvedTargets(message.parts ?? []).map((part, index) => /* @__PURE__ */ import_react3.default.createElement(MessagePart, {
|
|
226
163
|
key: index,
|
|
227
164
|
part
|
|
228
165
|
})));
|
|
229
166
|
};
|
|
230
167
|
var MessagePart = ({ part }) => {
|
|
231
|
-
return /* @__PURE__ */
|
|
168
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_mosaic.Mosaic.Container, {
|
|
232
169
|
id: part.id
|
|
233
|
-
}, /* @__PURE__ */
|
|
234
|
-
type:
|
|
170
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_mosaic.Mosaic.DraggableTile, {
|
|
171
|
+
type: import_chunk_F735VMTN.THREAD_ITEM,
|
|
235
172
|
path: part.id,
|
|
236
173
|
item: part,
|
|
237
174
|
Component: MessageBlockObjectTile
|
|
238
175
|
}));
|
|
239
176
|
};
|
|
240
177
|
var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
241
|
-
const { themeMode } = (0,
|
|
242
|
-
const inMemoryContentRef = (0,
|
|
243
|
-
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) => {
|
|
244
181
|
inMemoryContentRef.current = newState;
|
|
245
182
|
}, []);
|
|
246
|
-
const saveDocumentChange = (0,
|
|
183
|
+
const saveDocumentChange = (0, import_react3.useCallback)(() => {
|
|
247
184
|
message.text = inMemoryContentRef.current;
|
|
248
185
|
}, [
|
|
249
186
|
message
|
|
250
187
|
]);
|
|
251
|
-
(0,
|
|
188
|
+
(0, import_react_ui2.useOnTransition)(editing, true, false, saveDocumentChange);
|
|
252
189
|
const { parentRef, focusAttributes, view } = (0, import_react_ui_editor2.useTextEditor)(() => ({
|
|
253
190
|
initialValue: message.text,
|
|
254
191
|
extensions: [
|
|
@@ -272,31 +209,31 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
272
209
|
themeMode,
|
|
273
210
|
handleDocumentChange
|
|
274
211
|
]);
|
|
275
|
-
(0,
|
|
212
|
+
(0, import_react3.useEffect)(() => {
|
|
276
213
|
editing && view?.focus();
|
|
277
214
|
}, [
|
|
278
215
|
editing,
|
|
279
216
|
view
|
|
280
217
|
]);
|
|
281
|
-
useOnEditAnalytics(message, !!editing);
|
|
282
|
-
return /* @__PURE__ */
|
|
218
|
+
(0, import_chunk_AWSTZ2KN.useOnEditAnalytics)(message, !!editing);
|
|
219
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
283
220
|
role: "none",
|
|
284
221
|
ref: parentRef,
|
|
285
222
|
className: "mie-4",
|
|
286
223
|
...focusAttributes
|
|
287
224
|
});
|
|
288
225
|
};
|
|
289
|
-
var MessageBlockObjectTile = /* @__PURE__ */ (0,
|
|
226
|
+
var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react3.forwardRef)(({ draggableStyle, draggableProps, item, active, ref: _ref, ...props }, forwardedRef) => {
|
|
290
227
|
let title = item.name ?? item.title ?? item.type ?? "Object";
|
|
291
228
|
if (typeof title !== "string") {
|
|
292
229
|
title = title?.content ?? "";
|
|
293
230
|
}
|
|
294
|
-
return /* @__PURE__ */
|
|
231
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
295
232
|
role: "group",
|
|
296
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),
|
|
297
234
|
style: draggableStyle,
|
|
298
235
|
ref: forwardedRef
|
|
299
|
-
}, /* @__PURE__ */
|
|
236
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_app_framework.Surface, {
|
|
300
237
|
role: "card",
|
|
301
238
|
limit: 1,
|
|
302
239
|
data: {
|
|
@@ -309,18 +246,18 @@ var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react5.forwardRef)(({ dr
|
|
|
309
246
|
});
|
|
310
247
|
var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
311
248
|
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,
|
|
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);
|
|
317
254
|
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,
|
|
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)(() => [
|
|
324
261
|
(0, import_react_ui_editor.createBasicExtensions)({
|
|
325
262
|
placeholder: t("message placeholder")
|
|
326
263
|
}),
|
|
@@ -339,14 +276,14 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
339
276
|
behavior,
|
|
340
277
|
block: "end"
|
|
341
278
|
}), 10);
|
|
342
|
-
(0,
|
|
279
|
+
(0, import_react.useLayoutEffect)(() => {
|
|
343
280
|
scrollToEnd("instant");
|
|
344
281
|
}, []);
|
|
345
282
|
const handleCreate = () => {
|
|
346
283
|
if (!messageRef.current?.length) {
|
|
347
284
|
return false;
|
|
348
285
|
}
|
|
349
|
-
thread.messages.push((0, import_live_object.makeRef)((0, import_live_object.create)(
|
|
286
|
+
thread.messages.push((0, import_live_object.makeRef)((0, import_live_object.create)(import_types.MessageType, {
|
|
350
287
|
sender: {
|
|
351
288
|
identityKey: identity.identityKey.toHex()
|
|
352
289
|
},
|
|
@@ -366,32 +303,32 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
366
303
|
thread.messages.splice(messageIndex, 1);
|
|
367
304
|
}
|
|
368
305
|
};
|
|
369
|
-
return /* @__PURE__ */
|
|
306
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.Thread, {
|
|
370
307
|
current,
|
|
371
|
-
id: (0,
|
|
308
|
+
id: (0, import_echo.fullyQualifiedId)(thread),
|
|
372
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"
|
|
373
|
-
}, /* @__PURE__ */
|
|
310
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Root, {
|
|
374
311
|
classNames: "col-span-2"
|
|
375
|
-
}, /* @__PURE__ */
|
|
312
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Viewport, {
|
|
376
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]"
|
|
377
|
-
}, /* @__PURE__ */
|
|
314
|
+
}, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
378
315
|
role: "none",
|
|
379
316
|
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__ */
|
|
317
|
+
}, import_live_object.RefArray.allResolvedTargets(thread.messages ?? []).map((message) => /* @__PURE__ */ import_react.default.createElement(MessageContainer, {
|
|
381
318
|
key: message.id,
|
|
382
319
|
message,
|
|
383
320
|
members,
|
|
384
321
|
onDelete: handleDelete
|
|
385
|
-
}))), /* @__PURE__ */
|
|
322
|
+
}))), /* @__PURE__ */ import_react.default.createElement("div", {
|
|
386
323
|
role: "none",
|
|
387
324
|
className: "bs-px -mbs-px",
|
|
388
325
|
ref: threadScrollRef
|
|
389
|
-
}), /* @__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, {
|
|
390
327
|
extensions,
|
|
391
328
|
autoFocus,
|
|
392
329
|
onSend: handleCreate,
|
|
393
330
|
...textboxMetadata
|
|
394
|
-
}), /* @__PURE__ */
|
|
331
|
+
}), /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.ThreadFooter, {
|
|
395
332
|
activity
|
|
396
333
|
}, t("activity message")));
|
|
397
334
|
};
|
|
@@ -400,9 +337,6 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
400
337
|
ChatContainer,
|
|
401
338
|
MessageContainer,
|
|
402
339
|
command,
|
|
403
|
-
getMessageMetadata
|
|
404
|
-
useAnalyticsCallback,
|
|
405
|
-
useOnEditAnalytics,
|
|
406
|
-
useStatus
|
|
340
|
+
getMessageMetadata
|
|
407
341
|
});
|
|
408
|
-
//# sourceMappingURL=chunk-
|
|
342
|
+
//# sourceMappingURL=chunk-6PUGKCPR.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, tagRoot } 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 {\n tag: tags.tagName,\n class: mx(tagRoot({ palette: 'cyan' }), 'text-baseText font-medium'),\n },\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", "tagRoot", "palette", "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
|
+
}
|
|
@@ -16,18 +16,19 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
ThreadAction: () => ThreadAction
|
|
19
|
+
var chunk_AUVKOX5Q_exports = {};
|
|
20
|
+
__export(chunk_AUVKOX5Q_exports, {
|
|
21
|
+
ThreadAction: () => ThreadAction,
|
|
22
|
+
ThreadSettingsSchema: () => ThreadSettingsSchema
|
|
22
23
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
var
|
|
24
|
+
module.exports = __toCommonJS(chunk_AUVKOX5Q_exports);
|
|
25
|
+
var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
|
|
25
26
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
26
27
|
var import_types = require("@dxos/plugin-space/types");
|
|
27
28
|
var import_echo = require("@dxos/react-client/echo");
|
|
28
29
|
var ThreadAction;
|
|
29
30
|
(function(ThreadAction2) {
|
|
30
|
-
const THREAD_ACTION = `${
|
|
31
|
+
const THREAD_ACTION = `${import_chunk_F735VMTN.THREAD_PLUGIN}/action`;
|
|
31
32
|
class Create extends import_echo_schema.S.TaggedClass()(`${THREAD_ACTION}/create`, {
|
|
32
33
|
input: import_echo_schema.S.Struct({
|
|
33
34
|
name: import_echo_schema.S.optional(import_echo_schema.S.String),
|
|
@@ -89,8 +90,12 @@ var ThreadAction;
|
|
|
89
90
|
}
|
|
90
91
|
ThreadAction2.DeleteMessage = DeleteMessage;
|
|
91
92
|
})(ThreadAction || (ThreadAction = {}));
|
|
93
|
+
var ThreadSettingsSchema = import_echo_schema.S.mutable(import_echo_schema.S.Struct({
|
|
94
|
+
standalone: import_echo_schema.S.optional(import_echo_schema.S.Boolean)
|
|
95
|
+
}));
|
|
92
96
|
// Annotate the CommonJS export names for ESM import in node:
|
|
93
97
|
0 && (module.exports = {
|
|
94
|
-
ThreadAction
|
|
98
|
+
ThreadAction,
|
|
99
|
+
ThreadSettingsSchema
|
|
95
100
|
});
|
|
96
|
-
//# sourceMappingURL=chunk-
|
|
101
|
+
//# sourceMappingURL=chunk-AUVKOX5Q.cjs.map
|