@dxos/plugin-thread 0.8.1-staging.391c573 → 0.8.1-staging.5be625a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/ChannelContainer-ITIG7L7P.mjs +75 -0
- package/dist/lib/browser/ChannelContainer-ITIG7L7P.mjs.map +7 -0
- package/dist/lib/browser/{chunk-NAO3LZMZ.mjs → chunk-NOOMCX5E.mjs} +3 -2
- package/dist/lib/browser/chunk-NOOMCX5E.mjs.map +7 -0
- package/dist/lib/browser/{chunk-UPKU23DA.mjs → chunk-NRMJGYMA.mjs} +50 -43
- package/dist/lib/browser/chunk-NRMJGYMA.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YK3ICB7G.mjs → chunk-SJPT347G.mjs} +19 -6
- package/dist/lib/browser/chunk-SJPT347G.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BNEWNQBO.mjs → chunk-SMQYULO6.mjs} +16 -4
- package/dist/lib/browser/{chunk-BNEWNQBO.mjs.map → chunk-SMQYULO6.mjs.map} +4 -4
- package/dist/lib/browser/{chunk-636QDHE3.mjs → chunk-WBJLUUOK.mjs} +1 -1
- package/dist/lib/browser/{chunk-636QDHE3.mjs.map → chunk-WBJLUUOK.mjs.map} +2 -2
- package/dist/lib/browser/index.mjs +42 -31
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/{intent-resolver-FAFQ54NP.mjs → intent-resolver-FSG3ZOIM.mjs} +65 -62
- package/dist/lib/browser/intent-resolver-FSG3ZOIM.mjs.map +7 -0
- package/dist/lib/browser/{markdown-RPYOUBVR.mjs → markdown-MYZQDQFY.mjs} +6 -6
- package/dist/lib/browser/markdown-MYZQDQFY.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-Y4MUSICN.mjs → react-surface-KOYRIK3E.mjs} +25 -32
- package/dist/lib/browser/react-surface-KOYRIK3E.mjs.map +7 -0
- package/dist/lib/browser/{settings-WQTE5AEZ.mjs → settings-5CREE7BH.mjs} +3 -3
- package/dist/lib/browser/{state-GNFUURIC.mjs → state-HPUFZBB7.mjs} +4 -3
- package/dist/lib/browser/state-HPUFZBB7.mjs.map +7 -0
- package/dist/lib/browser/types.mjs +2 -2
- package/dist/lib/node/ChannelContainer-F7345XW2.cjs +99 -0
- package/dist/lib/node/ChannelContainer-F7345XW2.cjs.map +7 -0
- package/dist/lib/node/{chunk-CMEMMYDL.cjs → chunk-AXTPNGRI.cjs} +23 -10
- package/dist/lib/node/chunk-AXTPNGRI.cjs.map +7 -0
- package/dist/lib/node/{chunk-RQR5Z23G.cjs → chunk-DGV5ABT6.cjs} +52 -45
- package/dist/lib/node/chunk-DGV5ABT6.cjs.map +7 -0
- package/dist/lib/node/{chunk-AWSTZ2KN.cjs → chunk-JBOC6MIE.cjs} +30 -6
- package/dist/lib/node/chunk-JBOC6MIE.cjs.map +7 -0
- package/dist/lib/node/{chunk-F735VMTN.cjs → chunk-ONLWOUYZ.cjs} +4 -4
- package/dist/lib/node/{chunk-F735VMTN.cjs.map → chunk-ONLWOUYZ.cjs.map} +2 -2
- package/dist/lib/node/{chunk-FPWNZ6TB.cjs → chunk-VEVJBOWK.cjs} +8 -7
- package/dist/lib/node/chunk-VEVJBOWK.cjs.map +7 -0
- package/dist/lib/node/index.cjs +77 -67
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/{intent-resolver-DVBEXJ33.cjs → intent-resolver-NBME5QSW.cjs} +79 -76
- package/dist/lib/node/intent-resolver-NBME5QSW.cjs.map +7 -0
- package/dist/lib/node/{markdown-ELRGISXE.cjs → markdown-QBQTARMD.cjs} +12 -12
- package/dist/lib/node/markdown-QBQTARMD.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-7HLTN5XS.cjs → react-surface-ICWYXRJU.cjs} +46 -53
- package/dist/lib/node/react-surface-ICWYXRJU.cjs.map +7 -0
- package/dist/lib/node/{settings-7VQYARM5.cjs → settings-XOLYNUHH.cjs} +8 -8
- package/dist/lib/node/{state-TQWEZ6B3.cjs → state-JMI5ZXZI.cjs} +8 -7
- package/dist/lib/node/state-JMI5ZXZI.cjs.map +7 -0
- package/dist/lib/node/types.cjs +4 -4
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/ChannelContainer-GP6Y6JSN.mjs +76 -0
- package/dist/lib/node-esm/ChannelContainer-GP6Y6JSN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FXUATCLW.mjs → chunk-42F2DTMM.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-FXUATCLW.mjs.map → chunk-42F2DTMM.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-33NDMQQQ.mjs → chunk-FZXTP57V.mjs} +19 -6
- package/dist/lib/node-esm/chunk-FZXTP57V.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CISLDOH7.mjs → chunk-TW2NME6Z.mjs} +50 -43
- package/dist/lib/node-esm/chunk-TW2NME6Z.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ZJITX3TO.mjs → chunk-TXW5SIBN.mjs} +3 -2
- package/dist/lib/node-esm/chunk-TXW5SIBN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HLWJTUWZ.mjs → chunk-XQO5DGHF.mjs} +16 -4
- package/dist/lib/node-esm/{chunk-HLWJTUWZ.mjs.map → chunk-XQO5DGHF.mjs.map} +4 -4
- package/dist/lib/node-esm/index.mjs +42 -31
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/{intent-resolver-DHVLBNCC.mjs → intent-resolver-QQCCKVEW.mjs} +65 -62
- package/dist/lib/node-esm/intent-resolver-QQCCKVEW.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-23OB7EZG.mjs → markdown-QO5HK24O.mjs} +6 -6
- package/dist/lib/node-esm/markdown-QO5HK24O.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-AZHTTR6J.mjs → react-surface-Z4CLCKTN.mjs} +25 -32
- package/dist/lib/node-esm/react-surface-Z4CLCKTN.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SGMM7UDT.mjs → settings-32PBKVBB.mjs} +3 -3
- package/dist/lib/node-esm/{state-7MLR27YG.mjs → state-PSZO57LP.mjs} +4 -3
- package/dist/lib/node-esm/state-PSZO57LP.mjs.map +7 -0
- package/dist/lib/node-esm/types.mjs +2 -2
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +5 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.d.ts +9 -0
- package/dist/types/src/components/ChannelContainer.d.ts.map +1 -0
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +7 -1
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +3 -2
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +3 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +44 -40
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +4 -0
- package/dist/types/src/events.d.ts.map +1 -0
- package/dist/types/src/hooks/analytics.d.ts +2 -1
- package/dist/types/src/hooks/analytics.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -7
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -9
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +20 -4
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +33 -30
- package/src/ThreadPlugin.tsx +11 -7
- package/src/capabilities/capabilities.ts +6 -0
- package/src/capabilities/intent-resolver.ts +39 -33
- package/src/capabilities/react-surface.tsx +6 -18
- package/src/capabilities/state.ts +1 -1
- package/src/components/ChannelContainer.tsx +80 -0
- package/src/components/Chat.stories.tsx +19 -9
- package/src/components/ChatContainer.tsx +27 -29
- package/src/components/CommentContainer.tsx +8 -2
- package/src/components/Comments.stories.tsx +2 -1
- package/src/components/MessageContainer.tsx +18 -14
- package/src/components/ThreadComplementary.tsx +5 -4
- package/src/components/index.ts +1 -1
- package/src/components/testing.ts +4 -27
- package/src/events.ts +11 -0
- package/src/extensions/threads.ts +2 -2
- package/src/hooks/analytics.ts +7 -2
- package/src/index.ts +2 -0
- package/src/meta.ts +2 -2
- package/src/translations.ts +1 -3
- package/src/types.ts +18 -4
- package/dist/lib/browser/ThreadContainer-6OP5AG2W.mjs +0 -19
- package/dist/lib/browser/ThreadContainer-6OP5AG2W.mjs.map +0 -7
- package/dist/lib/browser/chunk-NAO3LZMZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-UPKU23DA.mjs.map +0 -7
- package/dist/lib/browser/chunk-VOMIDDNO.mjs +0 -15
- package/dist/lib/browser/chunk-VOMIDDNO.mjs.map +0 -7
- package/dist/lib/browser/chunk-YK3ICB7G.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-FAFQ54NP.mjs.map +0 -7
- package/dist/lib/browser/markdown-RPYOUBVR.mjs.map +0 -7
- package/dist/lib/browser/react-surface-Y4MUSICN.mjs.map +0 -7
- package/dist/lib/browser/state-GNFUURIC.mjs.map +0 -7
- package/dist/lib/node/ThreadContainer-LTKKLPXX.cjs +0 -45
- package/dist/lib/node/ThreadContainer-LTKKLPXX.cjs.map +0 -7
- package/dist/lib/node/chunk-AWSTZ2KN.cjs.map +0 -7
- package/dist/lib/node/chunk-BHFHFTHO.cjs +0 -50
- package/dist/lib/node/chunk-BHFHFTHO.cjs.map +0 -7
- package/dist/lib/node/chunk-CMEMMYDL.cjs.map +0 -7
- package/dist/lib/node/chunk-FPWNZ6TB.cjs.map +0 -7
- package/dist/lib/node/chunk-RQR5Z23G.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-DVBEXJ33.cjs.map +0 -7
- package/dist/lib/node/markdown-ELRGISXE.cjs.map +0 -7
- package/dist/lib/node/react-surface-7HLTN5XS.cjs.map +0 -7
- package/dist/lib/node/state-TQWEZ6B3.cjs.map +0 -7
- package/dist/lib/node-esm/ThreadContainer-SV74JFRH.mjs +0 -20
- package/dist/lib/node-esm/ThreadContainer-SV74JFRH.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-33NDMQQQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CISLDOH7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PJPVEO7E.mjs +0 -17
- package/dist/lib/node-esm/chunk-PJPVEO7E.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZJITX3TO.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-DHVLBNCC.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-23OB7EZG.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-AZHTTR6J.mjs.map +0 -7
- package/dist/lib/node-esm/state-7MLR27YG.mjs.map +0 -7
- package/dist/types/src/components/ThreadContainer.d.ts +0 -7
- package/dist/types/src/components/ThreadContainer.d.ts.map +0 -1
- package/src/components/ThreadContainer.tsx +0 -22
- /package/dist/lib/browser/{settings-WQTE5AEZ.mjs.map → settings-5CREE7BH.mjs.map} +0 -0
- /package/dist/lib/node/{settings-7VQYARM5.cjs.map → settings-XOLYNUHH.cjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-SGMM7UDT.mjs.map → settings-32PBKVBB.mjs.map} +0 -0
|
@@ -2,23 +2,23 @@ import { createRequire } from 'node:module';const require = createRequire(import
|
|
|
2
2
|
import {
|
|
3
3
|
useOnEditAnalytics,
|
|
4
4
|
useStatus
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XQO5DGHF.mjs";
|
|
6
6
|
import {
|
|
7
7
|
THREAD_PLUGIN
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-42F2DTMM.mjs";
|
|
9
9
|
|
|
10
10
|
// packages/plugins/plugin-thread/src/components/ChatContainer.tsx
|
|
11
11
|
import React2, { useLayoutEffect, useMemo, useRef as useRef2, useState as useState2 } from "react";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { fullyQualifiedId, getSpace, useMembers } from "@dxos/react-client/echo";
|
|
12
|
+
import { createStatic } from "@dxos/echo-schema";
|
|
13
|
+
import { makeRef } from "@dxos/live-object";
|
|
14
|
+
import { useMembers, useQueue } from "@dxos/react-client/echo";
|
|
16
15
|
import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
|
|
17
16
|
import { Icon, ScrollArea, useThemeContext as useThemeContext2, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
18
17
|
import { createBasicExtensions as createBasicExtensions2, createThemeExtensions as createThemeExtensions2, listener } from "@dxos/react-ui-editor";
|
|
19
18
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
20
19
|
import { mx as mx3 } from "@dxos/react-ui-theme";
|
|
21
20
|
import { MessageTextbox, Thread, ThreadFooter, threadLayout } from "@dxos/react-ui-thread";
|
|
21
|
+
import { MessageType } from "@dxos/schema";
|
|
22
22
|
|
|
23
23
|
// packages/plugins/plugin-thread/src/components/MessageContainer.tsx
|
|
24
24
|
import { EditorView } from "@codemirror/view";
|
|
@@ -85,7 +85,7 @@ var messageControlClassNames = [
|
|
|
85
85
|
"!p-1 !min-bs-0 transition-opacity",
|
|
86
86
|
hoverableControlItem
|
|
87
87
|
];
|
|
88
|
-
var MessageContainer = ({ message, members, onDelete }) => {
|
|
88
|
+
var MessageContainer = ({ message, members, editable = false, onDelete }) => {
|
|
89
89
|
const senderIdentity = members.find((member) => message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey))?.identity;
|
|
90
90
|
const messageMetadata = getMessageMetadata(message.id, senderIdentity);
|
|
91
91
|
const userIsAuthor = useIdentity()?.identityKey.toHex() === messageMetadata.authorId;
|
|
@@ -97,6 +97,9 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
97
97
|
const { t } = useTranslation(THREAD_PLUGIN);
|
|
98
98
|
const editLabel = t(editing ? "save message label" : "edit message label");
|
|
99
99
|
const deleteLabel = t("delete message label");
|
|
100
|
+
const textBlock = message.blocks.find((block) => block.type === "text");
|
|
101
|
+
const references = message.blocks.filter((block) => block.type === "reference").map((block) => block.reference);
|
|
102
|
+
useOnEditAnalytics(message, textBlock, !!editing);
|
|
100
103
|
return /* @__PURE__ */ React.createElement(MessageRoot, {
|
|
101
104
|
...messageMetadata,
|
|
102
105
|
classNames: [
|
|
@@ -108,7 +111,7 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
108
111
|
timestamp: messageMetadata.timestamp
|
|
109
112
|
}, /* @__PURE__ */ React.createElement(ButtonGroup, {
|
|
110
113
|
classNames: "mie-1"
|
|
111
|
-
}, userIsAuthor && /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
|
|
114
|
+
}, userIsAuthor && editable && /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
|
|
112
115
|
asChild: true
|
|
113
116
|
}, /* @__PURE__ */ React.createElement(Button, {
|
|
114
117
|
variant: "ghost",
|
|
@@ -132,13 +135,13 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
132
135
|
className: "sr-only"
|
|
133
136
|
}, deleteLabel), /* @__PURE__ */ React.createElement(X, {
|
|
134
137
|
className: getSize(4)
|
|
135
|
-
}))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, null, deleteLabel, /* @__PURE__ */ React.createElement(Tooltip.Arrow, null)))))), /* @__PURE__ */ React.createElement(TextboxBlock, {
|
|
136
|
-
|
|
138
|
+
}))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, null, deleteLabel, /* @__PURE__ */ React.createElement(Tooltip.Arrow, null)))))), textBlock && /* @__PURE__ */ React.createElement(TextboxBlock, {
|
|
139
|
+
block: textBlock,
|
|
137
140
|
isAuthor: userIsAuthor,
|
|
138
141
|
editing
|
|
139
|
-
}), RefArray.
|
|
142
|
+
}), RefArray.targets(references).map((reference, index) => /* @__PURE__ */ React.createElement(MessagePart, {
|
|
140
143
|
key: index,
|
|
141
|
-
part
|
|
144
|
+
part: reference
|
|
142
145
|
})));
|
|
143
146
|
};
|
|
144
147
|
var MessagePart = ({ part }) => {
|
|
@@ -146,20 +149,20 @@ var MessagePart = ({ part }) => {
|
|
|
146
149
|
subject: part
|
|
147
150
|
});
|
|
148
151
|
};
|
|
149
|
-
var TextboxBlock = ({
|
|
152
|
+
var TextboxBlock = ({ block, isAuthor, editing }) => {
|
|
150
153
|
const { themeMode } = useThemeContext();
|
|
151
|
-
const inMemoryContentRef = useRef(
|
|
154
|
+
const inMemoryContentRef = useRef(block.text);
|
|
152
155
|
const handleDocumentChange = useCallback((newState) => {
|
|
153
156
|
inMemoryContentRef.current = newState;
|
|
154
157
|
}, []);
|
|
155
158
|
const saveDocumentChange = useCallback(() => {
|
|
156
|
-
|
|
159
|
+
block.text = inMemoryContentRef.current;
|
|
157
160
|
}, [
|
|
158
|
-
|
|
161
|
+
block
|
|
159
162
|
]);
|
|
160
163
|
useOnTransition(editing, true, false, saveDocumentChange);
|
|
161
164
|
const { parentRef, focusAttributes, view } = useTextEditor(() => ({
|
|
162
|
-
initialValue:
|
|
165
|
+
initialValue: block.text,
|
|
163
166
|
extensions: [
|
|
164
167
|
createBasicExtensions({
|
|
165
168
|
readonly: !isAuthor || !editing
|
|
@@ -175,7 +178,7 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
175
178
|
})
|
|
176
179
|
]
|
|
177
180
|
}), [
|
|
178
|
-
|
|
181
|
+
block.text,
|
|
179
182
|
editing,
|
|
180
183
|
isAuthor,
|
|
181
184
|
themeMode,
|
|
@@ -187,7 +190,6 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
187
190
|
editing,
|
|
188
191
|
view
|
|
189
192
|
]);
|
|
190
|
-
useOnEditAnalytics(message, !!editing);
|
|
191
193
|
return /* @__PURE__ */ React.createElement("div", {
|
|
192
194
|
role: "none",
|
|
193
195
|
ref: parentRef,
|
|
@@ -215,18 +217,21 @@ var MessageBlockObjectTile = /* @__PURE__ */ forwardRef(({ subject }, forwardedR
|
|
|
215
217
|
});
|
|
216
218
|
|
|
217
219
|
// packages/plugins/plugin-thread/src/components/ChatContainer.tsx
|
|
218
|
-
var ChatContainer = ({
|
|
220
|
+
var ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }) => {
|
|
221
|
+
const id = dxn.toString();
|
|
219
222
|
const identity = useIdentity2();
|
|
220
|
-
const space = getSpace(thread);
|
|
221
223
|
const members = useMembers(space?.key);
|
|
222
|
-
const
|
|
224
|
+
const queue = useQueue(dxn, {
|
|
225
|
+
pollInterval: 1e3
|
|
226
|
+
});
|
|
227
|
+
const activity = useStatus(space, id);
|
|
223
228
|
const { t } = useTranslation2(THREAD_PLUGIN);
|
|
224
229
|
const [_count, _setCount] = useState2(0);
|
|
225
230
|
const rerenderEditor = () => _setCount((count) => count + 1);
|
|
226
231
|
const [autoFocus, setAutoFocus] = useState2(autoFocusTextbox);
|
|
227
232
|
const threadScrollRef = useRef2(null);
|
|
228
233
|
const { themeMode } = useThemeContext2();
|
|
229
|
-
const textboxMetadata = getMessageMetadata(
|
|
234
|
+
const textboxMetadata = getMessageMetadata(id, identity);
|
|
230
235
|
const messageRef = useRef2("");
|
|
231
236
|
const extensions = useMemo(() => [
|
|
232
237
|
createBasicExtensions2({
|
|
@@ -251,32 +256,35 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
251
256
|
scrollToEnd("instant");
|
|
252
257
|
}, []);
|
|
253
258
|
const handleCreate = () => {
|
|
254
|
-
if (!messageRef.current?.length) {
|
|
259
|
+
if (!messageRef.current?.length || !queue) {
|
|
255
260
|
return false;
|
|
256
261
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
262
|
+
queue.append([
|
|
263
|
+
createStatic(MessageType, {
|
|
264
|
+
sender: {
|
|
265
|
+
identityKey: identity.identityKey.toHex()
|
|
266
|
+
},
|
|
267
|
+
created: (/* @__PURE__ */ new Date()).toISOString(),
|
|
268
|
+
blocks: [
|
|
269
|
+
{
|
|
270
|
+
type: "text",
|
|
271
|
+
text: messageRef.current
|
|
272
|
+
}
|
|
273
|
+
],
|
|
274
|
+
properties: context ? {
|
|
275
|
+
context: makeRef(context)
|
|
276
|
+
} : void 0
|
|
277
|
+
})
|
|
278
|
+
]);
|
|
265
279
|
messageRef.current = "";
|
|
266
280
|
setAutoFocus(true);
|
|
267
281
|
scrollToEnd("smooth");
|
|
268
282
|
rerenderEditor();
|
|
269
283
|
return true;
|
|
270
284
|
};
|
|
271
|
-
const handleDelete = (id) => {
|
|
272
|
-
const messageIndex = thread.messages.findIndex(Ref.hasObjectId(id));
|
|
273
|
-
if (messageIndex !== -1) {
|
|
274
|
-
thread.messages.splice(messageIndex, 1);
|
|
275
|
-
}
|
|
276
|
-
};
|
|
277
285
|
return /* @__PURE__ */ React2.createElement(Thread, {
|
|
278
286
|
current,
|
|
279
|
-
id
|
|
287
|
+
id,
|
|
280
288
|
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"
|
|
281
289
|
}, /* @__PURE__ */ React2.createElement(ScrollArea.Root, {
|
|
282
290
|
classNames: "col-span-2"
|
|
@@ -285,11 +293,10 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
285
293
|
}, /* @__PURE__ */ React2.createElement("div", {
|
|
286
294
|
role: "none",
|
|
287
295
|
className: mx3(threadLayout, "place-self-end")
|
|
288
|
-
},
|
|
296
|
+
}, (queue?.items ?? []).map((message) => /* @__PURE__ */ React2.createElement(MessageContainer, {
|
|
289
297
|
key: message.id,
|
|
290
298
|
message,
|
|
291
|
-
members
|
|
292
|
-
onDelete: handleDelete
|
|
299
|
+
members
|
|
293
300
|
}))), /* @__PURE__ */ React2.createElement("div", {
|
|
294
301
|
role: "none",
|
|
295
302
|
className: "bs-px -mbs-px",
|
|
@@ -310,4 +317,4 @@ export {
|
|
|
310
317
|
MessageContainer,
|
|
311
318
|
ChatContainer
|
|
312
319
|
};
|
|
313
|
-
//# sourceMappingURL=chunk-
|
|
320
|
+
//# sourceMappingURL=chunk-TW2NME6Z.mjs.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 { createStatic } from '@dxos/echo-schema';\nimport { type DXN } from '@dxos/keys';\nimport { makeRef } from '@dxos/live-object';\nimport { type Space, useMembers, useQueue } 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';\nimport { MessageType } from '@dxos/schema';\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 type ChatContainerProps = Omit<ThreadContainerProps, 'thread'> & {\n space: Space;\n dxn: DXN;\n};\n\nexport const ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }: ChatContainerProps) => {\n const id = dxn.toString();\n const identity = useIdentity()!;\n const members = useMembers(space?.key);\n const queue = useQueue<MessageType>(dxn, { pollInterval: 1_000 });\n const activity = useStatus(space, id);\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(id, 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 || !queue) {\n return false;\n }\n\n queue.append([\n createStatic(MessageType, {\n sender: { identityKey: identity.identityKey.toHex() },\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text: messageRef.current }],\n properties: context ? { context: makeRef(context) } : undefined,\n }),\n ]);\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n return (\n <Thread\n current={current}\n id={id}\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 {(queue?.items ?? []).map((message) => (\n <MessageContainer key={message.id} message={message} members={members} />\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 { 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 {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\nimport { type TextContentBlock, type MessageType } from '@dxos/schema';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { 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 editable = false,\n onDelete,\n}: {\n message: MessageType;\n members: SpaceMember[];\n editable?: boolean;\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 const textBlock = message.blocks.find((block) => block.type === 'text');\n const references = message.blocks.filter((block) => block.type === 'reference').map((block) => block.reference);\n\n useOnEditAnalytics(message, textBlock, !!editing);\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && editable && (\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 {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}\n {RefArray.targets(references).map((reference, index) => (\n <MessagePart key={index} part={reference} />\n ))}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Expando }) => {\n return <MessageBlockObjectTile subject={part} />;\n};\n\nconst TextboxBlock = ({\n block,\n isAuthor,\n editing,\n}: {\n block: TextContentBlock;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(block.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n block.text = inMemoryContentRef.current;\n }, [block]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: block.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 [block.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: ReactiveEchoObject<any> }>(\n ({ subject }, forwardedRef) => {\n let title = subject.name ?? subject.title ?? subject.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 ref={forwardedRef}\n >\n <Surface role='card' limit={1} data={{ subject }} fallback={title} />\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": ["React", "useLayoutEffect", "useMemo", "useRef", "useState", "createStatic", "makeRef", "useMembers", "useQueue", "useIdentity", "Icon", "ScrollArea", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "listener", "StackItem", "mx", "MessageTextbox", "Thread", "ThreadFooter", "threadLayout", "MessageType", "EditorView", "Check", "PencilSimple", "X", "React", "forwardRef", "useCallback", "useEffect", "useRef", "useState", "Surface", "RefArray", "PublicKey", "useIdentity", "Button", "ButtonGroup", "Tooltip", "useOnTransition", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "useTextEditor", "getSize", "hoverableControlItem", "hoverableControls", "hoverableFocusedWithinControls", "mx", "MessageHeading", "MessageRoot", "StreamLanguage", "HighlightStyle", "syntaxHighlighting", "tags", "mx", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "command", "syntaxHighlighting", "generateName", "hexToFallback", "getMessageMetadata", "id", "identity", "fallback", "hexToFallback", "identityKey", "toHex", "authorId", "authorName", "profile", "displayName", "generateName", "undefined", "authorAvatarProps", "hue", "data", "emoji", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "message", "members", "editable", "onDelete", "senderIdentity", "find", "member", "sender", "identityKey", "PublicKey", "equals", "identity", "messageMetadata", "getMessageMetadata", "id", "userIsAuthor", "useIdentity", "toHex", "authorId", "editing", "setEditing", "useState", "handleDelete", "useCallback", "t", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "textBlock", "blocks", "block", "type", "references", "filter", "map", "reference", "useOnEditAnalytics", "MessageRoot", "classNames", "hoverableControls", "hoverableFocusedWithinControls", "MessageHeading", "authorName", "timestamp", "ButtonGroup", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "data-testid", "onClick", "span", "className", "Check", "getSize", "PencilSimple", "Portal", "Content", "Arrow", "X", "TextboxBlock", "isAuthor", "RefArray", "targets", "index", "MessagePart", "key", "part", "MessageBlockObjectTile", "subject", "themeMode", "useThemeContext", "inMemoryContentRef", "useRef", "text", "handleDocumentChange", "newState", "current", "saveDocumentChange", "useOnTransition", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "readonly", "createThemeExtensions", "command", "EditorView", "updateListener", "of", "update", "docChanged", "state", "doc", "toString", "useEffect", "focus", "div", "role", "ref", "forwardRef", "forwardedRef", "title", "name", "content", "mx", "Surface", "limit", "data", "fallback", "ChatContainer", "space", "dxn", "context", "current", "autoFocusTextbox", "id", "toString", "identity", "useIdentity", "members", "useMembers", "key", "queue", "useQueue", "pollInterval", "activity", "useStatus", "t", "useTranslation", "THREAD_PLUGIN", "_count", "_setCount", "useState", "rerenderEditor", "count", "autoFocus", "setAutoFocus", "threadScrollRef", "useRef", "themeMode", "useThemeContext", "textboxMetadata", "getMessageMetadata", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "useLayoutEffect", "handleCreate", "length", "append", "createStatic", "MessageType", "sender", "identityKey", "toHex", "created", "Date", "toISOString", "blocks", "type", "properties", "makeRef", "undefined", "React", "Thread", "classNames", "ScrollArea", "Root", "Viewport", "div", "role", "className", "mx", "threadLayout", "items", "map", "message", "MessageContainer", "ref", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
THREAD_PLUGIN
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-42F2DTMM.mjs";
|
|
5
5
|
|
|
6
6
|
// packages/plugins/plugin-thread/src/capabilities/capabilities.ts
|
|
7
7
|
import { defineCapability } from "@dxos/app-framework";
|
|
@@ -9,9 +9,10 @@ var ThreadCapabilities;
|
|
|
9
9
|
(function(ThreadCapabilities2) {
|
|
10
10
|
ThreadCapabilities2.State = defineCapability(`${THREAD_PLUGIN}/capability/state`);
|
|
11
11
|
ThreadCapabilities2.MutableState = defineCapability(`${THREAD_PLUGIN}/capability/state`);
|
|
12
|
+
ThreadCapabilities2.Activity = defineCapability(`${THREAD_PLUGIN}/capability/activity`);
|
|
12
13
|
})(ThreadCapabilities || (ThreadCapabilities = {}));
|
|
13
14
|
|
|
14
15
|
export {
|
|
15
16
|
ThreadCapabilities
|
|
16
17
|
};
|
|
17
|
-
//# sourceMappingURL=chunk-
|
|
18
|
+
//# sourceMappingURL=chunk-TXW5SIBN.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/capabilities.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\nimport { type MenuActionProperties } from '@dxos/react-ui-menu';\nimport { type DeepReadonly } from '@dxos/util';\n\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ViewState, type ThreadState } from '../types';\n\nexport namespace ThreadCapabilities {\n type GetViewState = (subjectId: string) => ViewState;\n export const State = defineCapability<{ state: DeepReadonly<ThreadState>; getViewState: GetViewState }>(\n `${THREAD_PLUGIN}/capability/state`,\n );\n export const MutableState = defineCapability<{ state: ThreadState; getViewState: GetViewState }>(\n `${THREAD_PLUGIN}/capability/state`,\n );\n\n export type Activity = Omit<MenuActionProperties, 'variant' | 'checked'> & {\n id: string;\n };\n export const Activity = defineCapability<Activity>(`${THREAD_PLUGIN}/capability/activity`);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,SAASA,wBAAwB;;UAOhBC,qBAAAA;sBAEFC,QAAQC,iBACnB,GAAGC,aAAAA,mBAAgC;sBAExBC,eAAeF,iBAC1B,GAAGC,aAAAA,mBAAgC;sBAMxBE,WAAWH,iBAA2B,GAAGC,aAAAA,sBAAmC;AAC3F,GAbiBH,uBAAAA,qBAAAA,CAAAA,EAAAA;",
|
|
6
|
+
"names": ["defineCapability", "ThreadCapabilities", "State", "defineCapability", "THREAD_PLUGIN", "MutableState", "Activity"]
|
|
7
|
+
}
|
|
@@ -56,18 +56,30 @@ var useAnalyticsCallback = (spaceId, name, meta) => {
|
|
|
56
56
|
spaceId
|
|
57
57
|
]);
|
|
58
58
|
};
|
|
59
|
-
var useOnEditAnalytics = (message, editing) => {
|
|
59
|
+
var useOnEditAnalytics = (message, textBlock, editing) => {
|
|
60
60
|
const space = getSpace(message);
|
|
61
61
|
const onEditAnalytics = useAnalyticsCallback(space?.id, "threads.comment-edited", {
|
|
62
62
|
messageId: message.id,
|
|
63
|
-
messageLength:
|
|
63
|
+
messageLength: textBlock?.text.length
|
|
64
64
|
});
|
|
65
65
|
useOnTransition(editing, true, false, onEditAnalytics);
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
+
// packages/plugins/plugin-thread/src/capabilities/index.ts
|
|
69
|
+
import { lazy } from "@dxos/app-framework";
|
|
70
|
+
var IntentResolver = lazy(() => import("./intent-resolver-QQCCKVEW.mjs"));
|
|
71
|
+
var Markdown = lazy(() => import("./markdown-QO5HK24O.mjs"));
|
|
72
|
+
var ReactSurface = lazy(() => import("./react-surface-Z4CLCKTN.mjs"));
|
|
73
|
+
var ThreadSettings = lazy(() => import("./settings-32PBKVBB.mjs"));
|
|
74
|
+
var ThreadState = lazy(() => import("./state-PSZO57LP.mjs"));
|
|
75
|
+
|
|
68
76
|
export {
|
|
69
77
|
useStatus,
|
|
70
78
|
useAnalyticsCallback,
|
|
71
|
-
useOnEditAnalytics
|
|
79
|
+
useOnEditAnalytics,
|
|
80
|
+
IntentResolver,
|
|
81
|
+
Markdown,
|
|
82
|
+
ReactSurface,
|
|
83
|
+
ThreadState
|
|
72
84
|
};
|
|
73
|
-
//# sourceMappingURL=chunk-
|
|
85
|
+
//# sourceMappingURL=chunk-XQO5DGHF.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/hooks/useStatus.ts", "../../../src/hooks/analytics.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\n\nexport const useAnalyticsCallback = (spaceId: string | undefined, name: string, meta?: any) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n return useCallback(\n (dynamicMeta?: any) => {\n void dispatch(\n createIntent(ObservabilityAction.SendEvent, { name, properties: { ...meta, ...dynamicMeta, spaceId } }),\n );\n },\n [dispatch, name, meta, spaceId],\n );\n};\n\nexport const useOnEditAnalytics = (message: ReactiveObject<any
|
|
5
|
-
"mappings": ";;;AAIA,SAASA,WAAWC,gBAAgB;AAK7B,IAAMC,YAAY,CAACC,OAAeC,YAAAA;AACvC,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAAS,KAAA;AAC7CC,YAAU,MAAA;AACR,QAAI,CAACL,SAAS,CAACC,SAAS;AACtB;IACF;AAEA,UAAMK,cAAcN,MAAMO,OAAO,UAAUN,OAAAA,IAAW,CAACO,WAAAA;AACrD,YAAM,EAAEC,MAAK,IAAKD,OAAOE,WAAW,CAAC;AACrCP,oBAAcM,UAAU,YAAA;IAC1B,CAAA;AAEA,UAAME,IAAIC,YAAY,MAAA;AACpBT,oBAAc,CAACU,SAAAA;AACb,YAAI,OAAOA,MAAMC,OAAO,YAAYC,KAAKC,IAAG,IAAKH,KAAKC,KAAK,KAAQ;AACjE,iBAAOG;QACT,OAAO;AACL,iBAAOJ;QACT;MACF,CAAA;IACF,GAAG,GAAA;AAEH,WAAO,MAAA;AACLP,kBAAAA;AACAY,oBAAcP,CAAAA;IAChB;EACF,GAAG;IAACX;IAAOC;GAAQ;AAEnB,SAAOC;AACT;;;AClCA,SAASiB,mBAAmB;AAE5B,SAASC,cAAcC,2BAA2B;AAElD,SAASC,2BAA2B;AACpC,SAASC,gBAAgB;AACzB,SAASC,uBAAuB;
|
|
6
|
-
"names": ["useEffect", "useState", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useCallback", "createIntent", "useIntentDispatcher", "ObservabilityAction", "getSpace", "useOnTransition", "useAnalyticsCallback", "spaceId", "name", "meta", "dispatchPromise", "dispatch", "useIntentDispatcher", "useCallback", "dynamicMeta", "createIntent", "ObservabilityAction", "SendEvent", "properties", "useOnEditAnalytics", "message", "editing", "space", "getSpace", "onEditAnalytics", "id", "messageId", "messageLength", "text", "length", "useOnTransition"]
|
|
3
|
+
"sources": ["../../../src/hooks/useStatus.ts", "../../../src/hooks/analytics.ts", "../../../src/capabilities/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { type TextContentBlock } from '@dxos/schema';\n\nexport const useAnalyticsCallback = (spaceId: string | undefined, name: string, meta?: any) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n return useCallback(\n (dynamicMeta?: any) => {\n void dispatch(\n createIntent(ObservabilityAction.SendEvent, { name, properties: { ...meta, ...dynamicMeta, spaceId } }),\n );\n },\n [dispatch, name, meta, spaceId],\n );\n};\n\nexport const useOnEditAnalytics = (\n message: ReactiveObject<any>,\n textBlock: TextContentBlock | undefined,\n editing: boolean,\n) => {\n const space = getSpace(message);\n\n const onEditAnalytics = useAnalyticsCallback(space?.id, 'threads.comment-edited', {\n messageId: message.id,\n messageLength: textBlock?.text.length,\n });\n\n useOnTransition(editing, true, false, onEditAnalytics);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\n\nexport * from './capabilities';\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,WAAWC,gBAAgB;AAK7B,IAAMC,YAAY,CAACC,OAAeC,YAAAA;AACvC,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAAS,KAAA;AAC7CC,YAAU,MAAA;AACR,QAAI,CAACL,SAAS,CAACC,SAAS;AACtB;IACF;AAEA,UAAMK,cAAcN,MAAMO,OAAO,UAAUN,OAAAA,IAAW,CAACO,WAAAA;AACrD,YAAM,EAAEC,MAAK,IAAKD,OAAOE,WAAW,CAAC;AACrCP,oBAAcM,UAAU,YAAA;IAC1B,CAAA;AAEA,UAAME,IAAIC,YAAY,MAAA;AACpBT,oBAAc,CAACU,SAAAA;AACb,YAAI,OAAOA,MAAMC,OAAO,YAAYC,KAAKC,IAAG,IAAKH,KAAKC,KAAK,KAAQ;AACjE,iBAAOG;QACT,OAAO;AACL,iBAAOJ;QACT;MACF,CAAA;IACF,GAAG,GAAA;AAEH,WAAO,MAAA;AACLP,kBAAAA;AACAY,oBAAcP,CAAAA;IAChB;EACF,GAAG;IAACX;IAAOC;GAAQ;AAEnB,SAAOC;AACT;;;AClCA,SAASiB,mBAAmB;AAE5B,SAASC,cAAcC,2BAA2B;AAElD,SAASC,2BAA2B;AACpC,SAASC,gBAAgB;AACzB,SAASC,uBAAuB;AAGzB,IAAMC,uBAAuB,CAACC,SAA6BC,MAAcC,SAAAA;AAC9E,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AAEtC,SAAOC,YACL,CAACC,gBAAAA;AACC,SAAKH,SACHI,aAAaC,oBAAoBC,WAAW;MAAET;MAAMU,YAAY;QAAE,GAAGT;QAAM,GAAGK;QAAaP;MAAQ;IAAE,CAAA,CAAA;EAEzG,GACA;IAACI;IAAUH;IAAMC;IAAMF;GAAQ;AAEnC;AAEO,IAAMY,qBAAqB,CAChCC,SACAC,WACAC,YAAAA;AAEA,QAAMC,QAAQC,SAASJ,OAAAA;AAEvB,QAAMK,kBAAkBnB,qBAAqBiB,OAAOG,IAAI,0BAA0B;IAChFC,WAAWP,QAAQM;IACnBE,eAAeP,WAAWQ,KAAKC;EACjC,CAAA;AAEAC,kBAAgBT,SAAS,MAAM,OAAOG,eAAAA;AACxC;;;ACnCA,SAASO,YAAY;AAEd,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMC,WAAWD,KAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAME,eAAeF,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMG,iBAAiBH,KAAK,MAAM,OAAO,yBAAA,CAAA;AACzC,IAAMI,cAAcJ,KAAK,MAAM,OAAO,sBAAA,CAAA;",
|
|
6
|
+
"names": ["useEffect", "useState", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useCallback", "createIntent", "useIntentDispatcher", "ObservabilityAction", "getSpace", "useOnTransition", "useAnalyticsCallback", "spaceId", "name", "meta", "dispatchPromise", "dispatch", "useIntentDispatcher", "useCallback", "dynamicMeta", "createIntent", "ObservabilityAction", "SendEvent", "properties", "useOnEditAnalytics", "message", "textBlock", "editing", "space", "getSpace", "onEditAnalytics", "id", "messageId", "messageLength", "text", "length", "useOnTransition", "lazy", "IntentResolver", "lazy", "Markdown", "ReactSurface", "ThreadSettings", "ThreadState"]
|
|
7
7
|
}
|
|
@@ -3,32 +3,40 @@ import {
|
|
|
3
3
|
IntentResolver,
|
|
4
4
|
Markdown,
|
|
5
5
|
ReactSurface,
|
|
6
|
-
ThreadState
|
|
7
|
-
} from "./chunk-PJPVEO7E.mjs";
|
|
8
|
-
import {
|
|
6
|
+
ThreadState,
|
|
9
7
|
useAnalyticsCallback,
|
|
10
8
|
useOnEditAnalytics,
|
|
11
9
|
useStatus
|
|
12
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-XQO5DGHF.mjs";
|
|
13
11
|
import {
|
|
14
12
|
ThreadAction
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import
|
|
13
|
+
} from "./chunk-FZXTP57V.mjs";
|
|
14
|
+
import {
|
|
15
|
+
ThreadCapabilities
|
|
16
|
+
} from "./chunk-TXW5SIBN.mjs";
|
|
17
17
|
import {
|
|
18
18
|
THREAD_ITEM,
|
|
19
19
|
THREAD_PLUGIN,
|
|
20
20
|
meta
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-42F2DTMM.mjs";
|
|
22
|
+
|
|
23
|
+
// packages/plugins/plugin-thread/src/events.ts
|
|
24
|
+
import { Events } from "@dxos/app-framework";
|
|
25
|
+
var ThreadEvents;
|
|
26
|
+
(function(ThreadEvents3) {
|
|
27
|
+
ThreadEvents3.SetupActivity = Events.createStateEvent(`${THREAD_PLUGIN}/setup-activity`);
|
|
28
|
+
})(ThreadEvents || (ThreadEvents = {}));
|
|
22
29
|
|
|
23
30
|
// packages/plugins/plugin-thread/src/ThreadPlugin.tsx
|
|
24
|
-
import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from "@dxos/app-framework";
|
|
31
|
+
import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events as Events2 } from "@dxos/app-framework";
|
|
25
32
|
import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
|
|
26
33
|
import { DeckCapabilities, DeckEvents } from "@dxos/plugin-deck";
|
|
27
34
|
import { MarkdownEvents } from "@dxos/plugin-markdown";
|
|
28
|
-
import { SpaceCapabilities, ThreadEvents } from "@dxos/plugin-space";
|
|
29
|
-
import { ChannelType as ChannelType2, defineObjectForm,
|
|
35
|
+
import { SpaceCapabilities, ThreadEvents as ThreadEvents2 } from "@dxos/plugin-space";
|
|
36
|
+
import { ChannelType as ChannelType2, defineObjectForm, ThreadType } from "@dxos/plugin-space/types";
|
|
30
37
|
import { RefArray } from "@dxos/react-client/echo";
|
|
31
38
|
import { translations as threadTranslations } from "@dxos/react-ui-thread";
|
|
39
|
+
import { MessageType, MessageTypeV1, MessageTypeV1ToV2 } from "@dxos/schema";
|
|
32
40
|
|
|
33
41
|
// packages/plugins/plugin-thread/src/translations.ts
|
|
34
42
|
import { ChannelType } from "@dxos/plugin-space/types";
|
|
@@ -36,14 +44,12 @@ var translations_default = [
|
|
|
36
44
|
{
|
|
37
45
|
"en-US": {
|
|
38
46
|
[ChannelType.typename]: {
|
|
39
|
-
"typename label": "Channel"
|
|
47
|
+
"typename label": "Channel",
|
|
48
|
+
"object name placeholder": "New channel"
|
|
40
49
|
},
|
|
41
50
|
[THREAD_PLUGIN]: {
|
|
42
51
|
"plugin name": "Threads",
|
|
43
|
-
"channel name placeholder": "New channel",
|
|
44
52
|
"channel title label": "Title",
|
|
45
|
-
"delete channel label": "Delete channel",
|
|
46
|
-
"create channel label": "Create channel",
|
|
47
53
|
"message placeholder": "Reply\u2026",
|
|
48
54
|
"activity message": "Processing\u2026",
|
|
49
55
|
"anonymous label": "Anonymous",
|
|
@@ -86,12 +92,12 @@ var ThreadPlugin = () => definePlugin(meta, [
|
|
|
86
92
|
// TODO(wittjosiah): Does not integrate with settings store.
|
|
87
93
|
// Should this be a different event?
|
|
88
94
|
// Should settings store be renamed to be more generic?
|
|
89
|
-
activatesOn:
|
|
95
|
+
activatesOn: Events2.SetupSettings,
|
|
90
96
|
activate: ThreadState
|
|
91
97
|
}),
|
|
92
98
|
defineModule({
|
|
93
99
|
id: `${meta.id}/module/translations`,
|
|
94
|
-
activatesOn:
|
|
100
|
+
activatesOn: Events2.SetupTranslations,
|
|
95
101
|
activate: () => contributes(Capabilities.Translations, [
|
|
96
102
|
...translations_default,
|
|
97
103
|
...threadTranslations
|
|
@@ -99,20 +105,12 @@ var ThreadPlugin = () => definePlugin(meta, [
|
|
|
99
105
|
}),
|
|
100
106
|
defineModule({
|
|
101
107
|
id: `${meta.id}/module/metadata`,
|
|
102
|
-
activatesOn:
|
|
108
|
+
activatesOn: Events2.SetupMetadata,
|
|
103
109
|
activate: () => [
|
|
104
110
|
contributes(Capabilities.Metadata, {
|
|
105
111
|
id: ChannelType2.typename,
|
|
106
112
|
metadata: {
|
|
107
|
-
|
|
108
|
-
"channel name placeholder",
|
|
109
|
-
{
|
|
110
|
-
ns: THREAD_PLUGIN
|
|
111
|
-
}
|
|
112
|
-
],
|
|
113
|
-
icon: "ph--chat--regular",
|
|
114
|
-
// TODO(wittjosiah): Move out of metadata.
|
|
115
|
-
loadReferences: async (channel) => await RefArray.loadAll(channel.threads ?? [])
|
|
113
|
+
icon: "ph--chat--regular"
|
|
116
114
|
}
|
|
117
115
|
}),
|
|
118
116
|
contributes(Capabilities.Metadata, {
|
|
@@ -158,7 +156,9 @@ var ThreadPlugin = () => definePlugin(meta, [
|
|
|
158
156
|
activatesOn: ClientEvents.SetupSchema,
|
|
159
157
|
activate: () => contributes(SpaceCapabilities.ObjectForm, defineObjectForm({
|
|
160
158
|
objectSchema: ChannelType2,
|
|
161
|
-
getIntent: () => createIntent(ThreadAction.
|
|
159
|
+
getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, {
|
|
160
|
+
spaceId: options.space.id
|
|
161
|
+
})
|
|
162
162
|
}))
|
|
163
163
|
}),
|
|
164
164
|
defineModule({
|
|
@@ -166,7 +166,15 @@ var ThreadPlugin = () => definePlugin(meta, [
|
|
|
166
166
|
activatesOn: ClientEvents.SetupSchema,
|
|
167
167
|
activate: () => contributes(ClientCapabilities.Schema, [
|
|
168
168
|
ThreadType,
|
|
169
|
-
MessageType
|
|
169
|
+
MessageType,
|
|
170
|
+
MessageTypeV1
|
|
171
|
+
])
|
|
172
|
+
}),
|
|
173
|
+
defineModule({
|
|
174
|
+
id: `${meta.id}/module/migration`,
|
|
175
|
+
activatesOn: ClientEvents.SetupMigration,
|
|
176
|
+
activate: () => contributes(ClientCapabilities.Migration, [
|
|
177
|
+
MessageTypeV1ToV2
|
|
170
178
|
])
|
|
171
179
|
}),
|
|
172
180
|
defineModule({
|
|
@@ -194,22 +202,25 @@ var ThreadPlugin = () => definePlugin(meta, [
|
|
|
194
202
|
}),
|
|
195
203
|
defineModule({
|
|
196
204
|
id: `${meta.id}/module/react-surface`,
|
|
197
|
-
activatesOn:
|
|
205
|
+
activatesOn: Events2.SetupReactSurface,
|
|
198
206
|
// TODO(wittjosiah): Should occur before the comments thread is loaded when surfaces activation is more granular.
|
|
199
207
|
activatesBefore: [
|
|
200
|
-
|
|
208
|
+
ThreadEvents2.SetupThread,
|
|
209
|
+
ThreadEvents.SetupActivity
|
|
201
210
|
],
|
|
202
211
|
activate: ReactSurface
|
|
203
212
|
}),
|
|
204
213
|
defineModule({
|
|
205
214
|
id: `${meta.id}/module/intent-resolver`,
|
|
206
|
-
activatesOn:
|
|
215
|
+
activatesOn: Events2.SetupIntentResolver,
|
|
207
216
|
activate: IntentResolver
|
|
208
217
|
})
|
|
209
218
|
]);
|
|
210
219
|
export {
|
|
211
220
|
THREAD_ITEM,
|
|
212
221
|
THREAD_PLUGIN,
|
|
222
|
+
ThreadCapabilities,
|
|
223
|
+
ThreadEvents,
|
|
213
224
|
ThreadPlugin,
|
|
214
225
|
meta,
|
|
215
226
|
useAnalyticsCallback,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/ThreadPlugin.tsx", "../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { DeckCapabilities, DeckEvents } from '@dxos/plugin-deck';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';\nimport { ChannelType, defineObjectForm,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,cAAcC,cAAcC,cAAcC,
|
|
6
|
-
"names": ["Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "ClientCapabilities", "ClientEvents", "DeckCapabilities", "DeckEvents", "MarkdownEvents", "SpaceCapabilities", "ThreadEvents", "ChannelType", "defineObjectForm", "
|
|
3
|
+
"sources": ["../../../src/events.ts", "../../../src/ThreadPlugin.tsx", "../../../src/translations.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport namespace ThreadEvents {\n export const SetupActivity = Events.createStateEvent(`${THREAD_PLUGIN}/setup-activity`);\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { DeckCapabilities, DeckEvents } from '@dxos/plugin-deck';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';\nimport { ChannelType, defineObjectForm, ThreadType } from '@dxos/plugin-space/types';\nimport { type ReactiveEchoObject, RefArray } from '@dxos/react-client/echo';\nimport { translations as threadTranslations } from '@dxos/react-ui-thread';\nimport { MessageType, MessageTypeV1, MessageTypeV1ToV2 } from '@dxos/schema';\n\nimport { IntentResolver, Markdown, ReactSurface, ThreadState } from './capabilities';\nimport { ThreadEvents as LocalThreadEvents } from './events';\nimport { meta, THREAD_ITEM, THREAD_PLUGIN } from './meta';\nimport translations from './translations';\nimport { ThreadAction } from './types';\n\n// TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.\n// NOTE(burdon): Review/discuss CursorConverter semantics.\nexport const ThreadPlugin = () =>\n definePlugin(meta, [\n // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.\n // defineModule({\n // id: `${meta.id}/module/settings`,\n // activatesOn: Events.SetupSettings,\n // activate: ThreadSettings,\n // }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: ThreadState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: ChannelType.typename,\n metadata: {\n icon: 'ph--chat--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: ThreadType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (thread: ThreadType) => await RefArray.loadAll(thread.messages ?? []),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: MessageType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (message: MessageType) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: THREAD_ITEM,\n metadata: {\n parse: (item: ReactiveEchoObject<any>, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.title, data: item };\n case 'object':\n return item;\n case 'view-object':\n return { id: `${item.id}-view`, object: item };\n }\n },\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ChannelType,\n getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, { spaceId: options.space.id }),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [ThreadType, MessageType, MessageTypeV1]),\n }),\n defineModule({\n id: `${meta.id}/module/migration`,\n activatesOn: ClientEvents.SetupMigration,\n activate: () => contributes(ClientCapabilities.Migration, [MessageTypeV1ToV2]),\n }),\n defineModule({\n id: `${meta.id}/module/complementary-panel`,\n activatesOn: DeckEvents.SetupComplementaryPanels,\n activate: () =>\n contributes(DeckCapabilities.ComplementaryPanel, {\n id: 'comments',\n label: ['comments panel label', { ns: THREAD_PLUGIN }],\n icon: 'ph--chat-text--regular',\n position: 'hoist',\n // TODO(wittjosiah): Support comments on any object.\n // filter: (node) => isEchoObject(node.data) && !!getSpace(node.data),\n filter: (node) =>\n !!node.data &&\n typeof node.data === 'object' &&\n 'threads' in node.data &&\n Array.isArray(node.data.threads) &&\n !(node.data instanceof ChannelType),\n }),\n }),\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the comments thread is loaded when surfaces activation is more granular.\n activatesBefore: [ThreadEvents.SetupThread, LocalThreadEvents.SetupActivity],\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ChannelType } from '@dxos/plugin-space/types';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [ChannelType.typename]: {\n 'typename label': 'Channel',\n 'object name placeholder': 'New channel',\n },\n [THREAD_PLUGIN]: {\n 'plugin name': 'Threads',\n 'channel title label': 'Title',\n 'message placeholder': 'Reply…',\n 'activity message': 'Processing…',\n 'anonymous label': 'Anonymous',\n 'delete message block label': 'Delete message block',\n 'detached thread label': 'Referenced content was removed',\n 'delete thread label': 'Delete thread',\n 'thread deleted label': 'You deleted a thread.',\n 'message deleted label': 'You deleted a message.',\n 'comments heading': 'Comments',\n 'chat heading': 'Chat',\n 'draft button': 'DRAFT',\n 'no comments title': 'No comments (yet)',\n 'no comments message':\n 'To start a comment thread, select a range of text in a document and click the <commentIcon></commentIcon> Create comment button in the toolbar.',\n 'toggle show resolved': 'Show resolved',\n 'unnamed object threads label': 'Threads',\n 'mark as resolved label': 'Mark as resolved',\n 'mark as unresolved label': 'Mark as unresolved',\n 'save message label': 'Save',\n 'edit message label': 'Edit',\n 'delete message label': 'Delete message',\n 'open comments panel label': 'Show Comments',\n 'comments panel label': 'Comments',\n 'show all label': 'All comments',\n 'show unresolved label': 'Unresolved only',\n },\n },\n },\n];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Events", "ThreadEvents", "SetupActivity", "Events", "createStateEvent", "THREAD_PLUGIN", "Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "ClientCapabilities", "ClientEvents", "DeckCapabilities", "DeckEvents", "MarkdownEvents", "SpaceCapabilities", "ThreadEvents", "ChannelType", "defineObjectForm", "ThreadType", "RefArray", "translations", "threadTranslations", "MessageType", "MessageTypeV1", "MessageTypeV1ToV2", "ChannelType", "ChannelType", "typename", "THREAD_PLUGIN", "ThreadPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupSettings", "activate", "ThreadState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "threadTranslations", "SetupMetadata", "Metadata", "ChannelType", "typename", "metadata", "icon", "ThreadType", "loadReferences", "thread", "RefArray", "loadAll", "messages", "MessageType", "message", "THREAD_ITEM", "parse", "item", "type", "label", "title", "data", "object", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "options", "createIntent", "ThreadAction", "CreateChannel", "spaceId", "space", "ClientCapabilities", "Schema", "MessageTypeV1", "SetupMigration", "Migration", "MessageTypeV1ToV2", "DeckEvents", "SetupComplementaryPanels", "DeckCapabilities", "ComplementaryPanel", "ns", "THREAD_PLUGIN", "position", "filter", "node", "Array", "isArray", "threads", "MarkdownEvents", "SetupExtensions", "Markdown", "SetupReactSurface", "activatesBefore", "ThreadEvents", "SetupThread", "LocalThreadEvents", "SetupActivity", "ReactSurface", "SetupIntentResolver", "IntentResolver"]
|
|
7
7
|
}
|