@dxos/plugin-thread 0.7.5-staging.e6154f3 → 0.8.1-main.013e445
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-YWGW5LTF.mjs +74 -0
- package/dist/lib/browser/ChannelContainer-YWGW5LTF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YK3ICB7G.mjs → chunk-FZ34L7RM.mjs} +4 -3
- package/dist/lib/browser/chunk-FZ34L7RM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BNEWNQBO.mjs → chunk-MC42ZV23.mjs} +16 -4
- package/dist/lib/browser/{chunk-BNEWNQBO.mjs.map → chunk-MC42ZV23.mjs.map} +4 -4
- 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-VDQ3TPIW.mjs} +28 -19
- package/dist/lib/browser/chunk-VDQ3TPIW.mjs.map +7 -0
- 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 +38 -27
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/{intent-resolver-FAFQ54NP.mjs → intent-resolver-FCC6BZSE.mjs} +5 -5
- package/dist/lib/browser/{intent-resolver-FAFQ54NP.mjs.map → intent-resolver-FCC6BZSE.mjs.map} +2 -2
- package/dist/lib/browser/{markdown-RPYOUBVR.mjs → markdown-I7DN4THW.mjs} +6 -6
- package/dist/lib/browser/markdown-I7DN4THW.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-Y4MUSICN.mjs → react-surface-34FQO5BB.mjs} +23 -31
- package/dist/lib/browser/react-surface-34FQO5BB.mjs.map +7 -0
- package/dist/lib/browser/{settings-WQTE5AEZ.mjs → settings-G5ZTDTIU.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-XQIU3OFX.cjs +98 -0
- package/dist/lib/node/ChannelContainer-XQIU3OFX.cjs.map +7 -0
- package/dist/lib/node/{chunk-AWSTZ2KN.cjs → chunk-FMKMIGXZ.cjs} +30 -6
- package/dist/lib/node/chunk-FMKMIGXZ.cjs.map +7 -0
- package/dist/lib/node/{chunk-RQR5Z23G.cjs → chunk-G63K6IDM.cjs} +35 -26
- package/dist/lib/node/chunk-G63K6IDM.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/{chunk-CMEMMYDL.cjs → chunk-X5TUGJ5K.cjs} +8 -7
- package/dist/lib/node/chunk-X5TUGJ5K.cjs.map +7 -0
- package/dist/lib/node/index.cjs +74 -64
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/{intent-resolver-DVBEXJ33.cjs → intent-resolver-KTZSUHCU.cjs} +22 -22
- package/dist/lib/node/{intent-resolver-DVBEXJ33.cjs.map → intent-resolver-KTZSUHCU.cjs.map} +2 -2
- package/dist/lib/node/{markdown-ELRGISXE.cjs → markdown-EUC6FFCM.cjs} +12 -12
- package/dist/lib/node/markdown-EUC6FFCM.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-7HLTN5XS.cjs → react-surface-SF7YHWER.cjs} +44 -52
- package/dist/lib/node/react-surface-SF7YHWER.cjs.map +7 -0
- package/dist/lib/node/{settings-7VQYARM5.cjs → settings-WQXGBGOV.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-G63QTQHU.mjs +75 -0
- package/dist/lib/node-esm/ChannelContainer-G63QTQHU.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-HLWJTUWZ.mjs → chunk-C46EUYQO.mjs} +16 -4
- package/dist/lib/node-esm/{chunk-HLWJTUWZ.mjs.map → chunk-C46EUYQO.mjs.map} +4 -4
- package/dist/lib/node-esm/{chunk-CISLDOH7.mjs → chunk-FIPZFSRG.mjs} +28 -19
- package/dist/lib/node-esm/chunk-FIPZFSRG.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-33NDMQQQ.mjs → chunk-XUAPEJSP.mjs} +4 -3
- package/dist/lib/node-esm/chunk-XUAPEJSP.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +38 -27
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/{intent-resolver-DHVLBNCC.mjs → intent-resolver-F4GQ2DBX.mjs} +5 -5
- package/dist/lib/node-esm/{intent-resolver-DHVLBNCC.mjs.map → intent-resolver-F4GQ2DBX.mjs.map} +2 -2
- package/dist/lib/node-esm/{markdown-23OB7EZG.mjs → markdown-LNEGE76H.mjs} +6 -6
- package/dist/lib/node-esm/markdown-LNEGE76H.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-AZHTTR6J.mjs → react-surface-W6TBSW7R.mjs} +23 -31
- package/dist/lib/node-esm/react-surface-W6TBSW7R.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SGMM7UDT.mjs → settings-3NFSK2ZO.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/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 +3 -2
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentContainer.d.ts +2 -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/CommentsContainer.d.ts +2 -1
- package/dist/types/src/components/CommentsContainer.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 +2 -1
- package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
- package/dist/types/src/components/ThreadSettings.d.ts +2 -1
- package/dist/types/src/components/ThreadSettings.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 +104 -44
- 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 +4 -1
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +32 -30
- package/src/ThreadPlugin.tsx +10 -4
- package/src/capabilities/capabilities.ts +6 -0
- package/src/capabilities/intent-resolver.ts +1 -1
- package/src/capabilities/react-surface.tsx +5 -16
- package/src/capabilities/state.ts +1 -1
- package/src/components/ChannelContainer.tsx +80 -0
- package/src/components/Chat.stories.tsx +4 -2
- package/src/components/ChatContainer.tsx +5 -5
- package/src/components/CommentContainer.tsx +1 -1
- package/src/components/Comments.stories.tsx +2 -1
- package/src/components/MessageContainer.tsx +15 -13
- package/src/components/ThreadComplementary.tsx +5 -4
- package/src/components/index.ts +1 -1
- package/src/components/testing.ts +15 -12
- 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 +4 -1
- 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/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/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/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-G5ZTDTIU.mjs.map} +0 -0
- /package/dist/lib/node/{settings-7VQYARM5.cjs.map → settings-WQXGBGOV.cjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-SGMM7UDT.mjs.map → settings-3NFSK2ZO.mjs.map} +0 -0
|
@@ -26,20 +26,19 @@ 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_G63K6IDM_exports = {};
|
|
30
|
+
__export(chunk_G63K6IDM_exports, {
|
|
31
31
|
ChatContainer: () => ChatContainer,
|
|
32
32
|
MessageContainer: () => MessageContainer,
|
|
33
33
|
command: () => command,
|
|
34
34
|
getMessageMetadata: () => getMessageMetadata
|
|
35
35
|
});
|
|
36
|
-
module.exports = __toCommonJS(
|
|
37
|
-
var
|
|
38
|
-
var
|
|
36
|
+
module.exports = __toCommonJS(chunk_G63K6IDM_exports);
|
|
37
|
+
var import_chunk_FMKMIGXZ = require("./chunk-FMKMIGXZ.cjs");
|
|
38
|
+
var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
|
|
39
39
|
var import_react = __toESM(require("react"));
|
|
40
40
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
41
41
|
var import_live_object = require("@dxos/live-object");
|
|
42
|
-
var import_types = require("@dxos/plugin-space/types");
|
|
43
42
|
var import_echo = require("@dxos/react-client/echo");
|
|
44
43
|
var import_halo = require("@dxos/react-client/halo");
|
|
45
44
|
var import_react_ui = require("@dxos/react-ui");
|
|
@@ -47,6 +46,7 @@ var import_react_ui_editor = require("@dxos/react-ui-editor");
|
|
|
47
46
|
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
48
47
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
49
48
|
var import_react_ui_thread = require("@dxos/react-ui-thread");
|
|
49
|
+
var import_schema = require("@dxos/schema");
|
|
50
50
|
var import_view = require("@codemirror/view");
|
|
51
51
|
var import_react2 = require("@phosphor-icons/react");
|
|
52
52
|
var import_react3 = __toESM(require("react"));
|
|
@@ -114,9 +114,12 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
114
114
|
message,
|
|
115
115
|
onDelete
|
|
116
116
|
]);
|
|
117
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
117
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_ONLWOUYZ.THREAD_PLUGIN);
|
|
118
118
|
const editLabel = t(editing ? "save message label" : "edit message label");
|
|
119
119
|
const deleteLabel = t("delete message label");
|
|
120
|
+
const textBlock = message.blocks.find((block) => block.type === "text");
|
|
121
|
+
const references = message.blocks.filter((block) => block.type === "reference").map((block) => block.reference);
|
|
122
|
+
(0, import_chunk_FMKMIGXZ.useOnEditAnalytics)(message, textBlock, !!editing);
|
|
120
123
|
return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageRoot, {
|
|
121
124
|
...messageMetadata,
|
|
122
125
|
classNames: [
|
|
@@ -152,13 +155,13 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
152
155
|
className: "sr-only"
|
|
153
156
|
}, deleteLabel), /* @__PURE__ */ import_react3.default.createElement(import_react2.X, {
|
|
154
157
|
className: (0, import_react_ui_theme2.getSize)(4)
|
|
155
|
-
}))), /* @__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, {
|
|
156
|
-
|
|
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)))))), textBlock && /* @__PURE__ */ import_react3.default.createElement(TextboxBlock, {
|
|
159
|
+
block: textBlock,
|
|
157
160
|
isAuthor: userIsAuthor,
|
|
158
161
|
editing
|
|
159
|
-
}), import_live_object2.RefArray.
|
|
162
|
+
}), import_live_object2.RefArray.targets(references).map((reference, index) => /* @__PURE__ */ import_react3.default.createElement(MessagePart, {
|
|
160
163
|
key: index,
|
|
161
|
-
part
|
|
164
|
+
part: reference
|
|
162
165
|
})));
|
|
163
166
|
};
|
|
164
167
|
var MessagePart = ({ part }) => {
|
|
@@ -166,20 +169,20 @@ var MessagePart = ({ part }) => {
|
|
|
166
169
|
subject: part
|
|
167
170
|
});
|
|
168
171
|
};
|
|
169
|
-
var TextboxBlock = ({
|
|
172
|
+
var TextboxBlock = ({ block, isAuthor, editing }) => {
|
|
170
173
|
const { themeMode } = (0, import_react_ui2.useThemeContext)();
|
|
171
|
-
const inMemoryContentRef = (0, import_react3.useRef)(
|
|
174
|
+
const inMemoryContentRef = (0, import_react3.useRef)(block.text);
|
|
172
175
|
const handleDocumentChange = (0, import_react3.useCallback)((newState) => {
|
|
173
176
|
inMemoryContentRef.current = newState;
|
|
174
177
|
}, []);
|
|
175
178
|
const saveDocumentChange = (0, import_react3.useCallback)(() => {
|
|
176
|
-
|
|
179
|
+
block.text = inMemoryContentRef.current;
|
|
177
180
|
}, [
|
|
178
|
-
|
|
181
|
+
block
|
|
179
182
|
]);
|
|
180
183
|
(0, import_react_ui2.useOnTransition)(editing, true, false, saveDocumentChange);
|
|
181
184
|
const { parentRef, focusAttributes, view } = (0, import_react_ui_editor2.useTextEditor)(() => ({
|
|
182
|
-
initialValue:
|
|
185
|
+
initialValue: block.text,
|
|
183
186
|
extensions: [
|
|
184
187
|
(0, import_react_ui_editor2.createBasicExtensions)({
|
|
185
188
|
readonly: !isAuthor || !editing
|
|
@@ -195,7 +198,7 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
195
198
|
})
|
|
196
199
|
]
|
|
197
200
|
}), [
|
|
198
|
-
|
|
201
|
+
block.text,
|
|
199
202
|
editing,
|
|
200
203
|
isAuthor,
|
|
201
204
|
themeMode,
|
|
@@ -207,7 +210,6 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
207
210
|
editing,
|
|
208
211
|
view
|
|
209
212
|
]);
|
|
210
|
-
(0, import_chunk_AWSTZ2KN.useOnEditAnalytics)(message, !!editing);
|
|
211
213
|
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
212
214
|
role: "none",
|
|
213
215
|
ref: parentRef,
|
|
@@ -237,8 +239,8 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
237
239
|
const identity = (0, import_halo.useIdentity)();
|
|
238
240
|
const space = (0, import_echo.getSpace)(thread);
|
|
239
241
|
const members = (0, import_echo.useMembers)(space?.key);
|
|
240
|
-
const activity = (0,
|
|
241
|
-
const { t } = (0, import_react_ui.useTranslation)(
|
|
242
|
+
const activity = (0, import_chunk_FMKMIGXZ.useStatus)(space, (0, import_echo.fullyQualifiedId)(thread));
|
|
243
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_ONLWOUYZ.THREAD_PLUGIN);
|
|
242
244
|
const [_count, _setCount] = (0, import_react.useState)(0);
|
|
243
245
|
const rerenderEditor = () => _setCount((count) => count + 1);
|
|
244
246
|
const [autoFocus, setAutoFocus] = (0, import_react.useState)(autoFocusTextbox);
|
|
@@ -272,13 +274,20 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
272
274
|
if (!messageRef.current?.length) {
|
|
273
275
|
return false;
|
|
274
276
|
}
|
|
275
|
-
thread.messages.push((0, import_live_object.makeRef)((0, import_live_object.create)(
|
|
277
|
+
thread.messages.push((0, import_live_object.makeRef)((0, import_live_object.create)(import_schema.MessageType, {
|
|
276
278
|
sender: {
|
|
277
279
|
identityKey: identity.identityKey.toHex()
|
|
278
280
|
},
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
281
|
+
created: (/* @__PURE__ */ new Date()).toISOString(),
|
|
282
|
+
blocks: [
|
|
283
|
+
{
|
|
284
|
+
type: "text",
|
|
285
|
+
text: messageRef.current
|
|
286
|
+
}
|
|
287
|
+
],
|
|
288
|
+
properties: context ? {
|
|
289
|
+
context: (0, import_live_object.makeRef)(context)
|
|
290
|
+
} : void 0
|
|
282
291
|
})));
|
|
283
292
|
messageRef.current = "";
|
|
284
293
|
setAutoFocus(true);
|
|
@@ -303,7 +312,7 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
303
312
|
}, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
304
313
|
role: "none",
|
|
305
314
|
className: (0, import_react_ui_theme.mx)(import_react_ui_thread.threadLayout, "place-self-end")
|
|
306
|
-
}, import_live_object.RefArray.
|
|
315
|
+
}, import_live_object.RefArray.targets(thread.messages ?? []).map((message) => /* @__PURE__ */ import_react.default.createElement(MessageContainer, {
|
|
307
316
|
key: message.id,
|
|
308
317
|
message,
|
|
309
318
|
members,
|
|
@@ -328,4 +337,4 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
328
337
|
command,
|
|
329
338
|
getMessageMetadata
|
|
330
339
|
});
|
|
331
|
-
//# sourceMappingURL=chunk-
|
|
340
|
+
//# sourceMappingURL=chunk-G63K6IDM.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 { fullyQualifiedId, getSpace, useMembers } 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 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 created: new Date().toISOString(),\n blocks: [{ type: 'text', text: messageRef.current }],\n properties: context ? { context: makeRef(context) } : undefined,\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.targets(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 { 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 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 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 && (\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": ["import_react", "import_live_object", "import_halo", "import_react_ui", "import_react_ui_editor", "import_react_ui_theme", "import_react_ui_thread", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "command", "syntaxHighlighting", "getMessageMetadata", "id", "identity", "fallback", "hexToFallback", "identityKey", "toHex", "authorId", "authorName", "profile", "displayName", "generateName", "undefined", "authorAvatarProps", "hue", "data", "emoji", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "message", "members", "onDelete", "senderIdentity", "find", "member", "sender", "PublicKey", "equals", "messageMetadata", "userIsAuthor", "useIdentity", "editing", "setEditing", "useState", "handleDelete", "useCallback", "t", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "textBlock", "blocks", "block", "type", "references", "filter", "map", "reference", "useOnEditAnalytics", "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", "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", "EditorView", "updateListener", "of", "update", "docChanged", "doc", "toString", "useEffect", "focus", "div", "role", "ref", "forwardRef", "forwardedRef", "title", "name", "content", "Surface", "limit", "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", "useLayoutEffect", "handleCreate", "length", "messages", "push", "makeRef", "create", "MessageType", "created", "Date", "toISOString", "properties", "messageIndex", "findIndex", "Ref", "hasObjectId", "splice", "Thread", "ScrollArea", "Viewport", "threadLayout", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
|
|
7
|
+
}
|
|
@@ -16,13 +16,13 @@ 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(
|
|
19
|
+
var chunk_ONLWOUYZ_exports = {};
|
|
20
|
+
__export(chunk_ONLWOUYZ_exports, {
|
|
21
21
|
THREAD_ITEM: () => THREAD_ITEM,
|
|
22
22
|
THREAD_PLUGIN: () => THREAD_PLUGIN,
|
|
23
23
|
meta: () => meta
|
|
24
24
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
25
|
+
module.exports = __toCommonJS(chunk_ONLWOUYZ_exports);
|
|
26
26
|
var THREAD_PLUGIN = "dxos.org/plugin/thread";
|
|
27
27
|
var THREAD_ITEM = `${THREAD_PLUGIN}/item`;
|
|
28
28
|
var meta = {
|
|
@@ -38,4 +38,4 @@ var meta = {
|
|
|
38
38
|
THREAD_PLUGIN,
|
|
39
39
|
meta
|
|
40
40
|
});
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-ONLWOUYZ.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const THREAD_PLUGIN = 'dxos.org/plugin/thread';\nexport const THREAD_ITEM = `${THREAD_PLUGIN}/item`;\n\nexport const meta = {\n id: THREAD_PLUGIN,\n name: 'Threads',\n description: 'Add comment threads to objects.',\n icon: 'ph--chat--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-thread',\n}
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,gBAAgB;AACtB,IAAMC,cAAc,GAAGD,aAAAA;AAEvB,IAAME,
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const THREAD_PLUGIN = 'dxos.org/plugin/thread';\nexport const THREAD_ITEM = `${THREAD_PLUGIN}/item`;\n\nexport const meta: PluginMeta = {\n id: THREAD_PLUGIN,\n name: 'Threads',\n description: 'Add comment threads to objects.',\n icon: 'ph--chat--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-thread',\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,gBAAgB;AACtB,IAAMC,cAAc,GAAGD,aAAAA;AAEvB,IAAME,OAAmB;EAC9BC,IAAIH;EACJI,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;AACV;",
|
|
6
6
|
"names": ["THREAD_PLUGIN", "THREAD_ITEM", "meta", "id", "name", "description", "icon", "source"]
|
|
7
7
|
}
|
|
@@ -16,20 +16,21 @@ 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(
|
|
19
|
+
var chunk_VEVJBOWK_exports = {};
|
|
20
|
+
__export(chunk_VEVJBOWK_exports, {
|
|
21
21
|
ThreadCapabilities: () => ThreadCapabilities
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
var
|
|
23
|
+
module.exports = __toCommonJS(chunk_VEVJBOWK_exports);
|
|
24
|
+
var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
|
|
25
25
|
var import_app_framework = require("@dxos/app-framework");
|
|
26
26
|
var ThreadCapabilities;
|
|
27
27
|
(function(ThreadCapabilities2) {
|
|
28
|
-
ThreadCapabilities2.State = (0, import_app_framework.defineCapability)(`${
|
|
29
|
-
ThreadCapabilities2.MutableState = (0, import_app_framework.defineCapability)(`${
|
|
28
|
+
ThreadCapabilities2.State = (0, import_app_framework.defineCapability)(`${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/capability/state`);
|
|
29
|
+
ThreadCapabilities2.MutableState = (0, import_app_framework.defineCapability)(`${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/capability/state`);
|
|
30
|
+
ThreadCapabilities2.Activity = (0, import_app_framework.defineCapability)(`${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/capability/activity`);
|
|
30
31
|
})(ThreadCapabilities || (ThreadCapabilities = {}));
|
|
31
32
|
// Annotate the CommonJS export names for ESM import in node:
|
|
32
33
|
0 && (module.exports = {
|
|
33
34
|
ThreadCapabilities
|
|
34
35
|
});
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-VEVJBOWK.cjs.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,2BAAiC;;UAOhBA,qBAAAA;sBAEFC,YAAQC,uCACnB,GAAGC,mCAAAA,mBAAgC;sBAExBC,mBAAeF,uCAC1B,GAAGC,mCAAAA,mBAAgC;sBAMxBE,eAAWH,uCAA2B,GAAGC,mCAAAA,sBAAmC;AAC3F,GAbiBH,uBAAAA,qBAAAA,CAAAA,EAAAA;",
|
|
6
|
+
"names": ["ThreadCapabilities", "State", "defineCapability", "THREAD_PLUGIN", "MutableState", "Activity"]
|
|
7
|
+
}
|
|
@@ -16,19 +16,20 @@ 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(
|
|
19
|
+
var chunk_X5TUGJ5K_exports = {};
|
|
20
|
+
__export(chunk_X5TUGJ5K_exports, {
|
|
21
21
|
ThreadAction: () => ThreadAction,
|
|
22
22
|
ThreadSettingsSchema: () => ThreadSettingsSchema
|
|
23
23
|
});
|
|
24
|
-
module.exports = __toCommonJS(
|
|
25
|
-
var
|
|
24
|
+
module.exports = __toCommonJS(chunk_X5TUGJ5K_exports);
|
|
25
|
+
var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
|
|
26
26
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
27
27
|
var import_types = require("@dxos/plugin-space/types");
|
|
28
28
|
var import_echo = require("@dxos/react-client/echo");
|
|
29
|
+
var import_schema = require("@dxos/schema");
|
|
29
30
|
var ThreadAction;
|
|
30
31
|
(function(ThreadAction2) {
|
|
31
|
-
const THREAD_ACTION = `${
|
|
32
|
+
const THREAD_ACTION = `${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/action`;
|
|
32
33
|
class Create extends import_echo_schema.S.TaggedClass()(`${THREAD_ACTION}/create`, {
|
|
33
34
|
input: import_echo_schema.S.Struct({
|
|
34
35
|
name: import_echo_schema.S.optional(import_echo_schema.S.String),
|
|
@@ -82,7 +83,7 @@ var ThreadAction;
|
|
|
82
83
|
thread: import_types.ThreadType,
|
|
83
84
|
subject: import_echo.EchoObjectSchema,
|
|
84
85
|
messageId: import_echo_schema.S.String,
|
|
85
|
-
message: import_echo_schema.S.optional(
|
|
86
|
+
message: import_echo_schema.S.optional(import_schema.MessageType),
|
|
86
87
|
messageIndex: import_echo_schema.S.optional(import_echo_schema.S.Number)
|
|
87
88
|
}),
|
|
88
89
|
output: import_echo_schema.S.Void
|
|
@@ -96,4 +97,4 @@ var ThreadSettingsSchema = import_echo_schema.S.mutable(import_echo_schema.S.Str
|
|
|
96
97
|
ThreadAction,
|
|
97
98
|
ThreadSettingsSchema
|
|
98
99
|
});
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
100
|
+
//# sourceMappingURL=chunk-X5TUGJ5K.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { S } from '@dxos/echo-schema';\nimport { ChannelType, ThreadType } from '@dxos/plugin-space/types';\nimport { EchoObjectSchema } from '@dxos/react-client/echo';\nimport { MessageType } from '@dxos/schema';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport namespace ThreadAction {\n const THREAD_ACTION = `${THREAD_PLUGIN}/action`;\n\n export class Create extends S.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {\n input: S.Struct({\n name: S.optional(S.String),\n cursor: S.optional(S.String),\n subject: S.optional(EchoObjectSchema),\n }),\n output: S.Struct({\n object: S.Union(ChannelType, ThreadType),\n }),\n }) {}\n\n export class Select extends S.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {\n input: S.Struct({\n current: S.String,\n skipOpen: S.optional(S.Boolean),\n }),\n output: S.Void,\n }) {}\n\n export class ToggleResolved extends S.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {\n input: S.Struct({\n thread: ThreadType,\n }),\n output: S.Void,\n }) {}\n\n export class Delete extends S.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n cursor: S.optional(S.String),\n }),\n output: S.Void,\n }) {}\n\n // TODO(wittjosiah): Rename?\n export class OnMessageAdd extends S.TaggedClass<OnMessageAdd>()(`${THREAD_ACTION}/on-message-add`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n }),\n output: S.Void,\n }) {}\n\n export class DeleteMessage extends S.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n messageId: S.String,\n message: S.optional(MessageType),\n messageIndex: S.optional(S.Number),\n }),\n output: S.Void,\n }) {}\n}\n\nexport const ThreadSettingsSchema = S.mutable(S.Struct({}));\n\nexport type ThreadSettingsProps = S.Schema.Type<typeof ThreadSettingsSchema>;\n\nexport interface ThreadModel {\n root: ThreadType;\n}\n\ntype SubjectId = string;\nexport type ViewState = { showResolvedThreads: boolean };\nexport type ViewStore = Record<SubjectId, ViewState>;\n\nexport type ThreadState = {\n /** Current channel activity. */\n activities: Record<string, string | undefined>;\n /** In-memory draft threads. */\n drafts: Record<string, ThreadType[]>;\n current?: string | undefined;\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAkB;AAClB,mBAAwC;AACxC,kBAAiC;AACjC,oBAA4B;;UAIXA,eAAAA;AACf,QAAMC,gBAAgB,GAAGC,mCAAAA;EAElB,MAAMC,eAAeC,qBAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,qBAAEG,OAAO;MACdC,MAAMJ,qBAAEK,SAASL,qBAAEM,MAAM;MACzBC,QAAQP,qBAAEK,SAASL,qBAAEM,MAAM;MAC3BE,SAASR,qBAAEK,SAASI,4BAAAA;IACtB,CAAA;IACAC,QAAQV,qBAAEG,OAAO;MACfQ,QAAQX,qBAAEY,MAAMC,0BAAaC,uBAAAA;IAC/B,CAAA;EACF,CAAA,EAAA;EAAI;gBATSf,SAAAA;EAWN,MAAMgB,eAAef,qBAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,qBAAEG,OAAO;MACda,SAAShB,qBAAEM;MACXW,UAAUjB,qBAAEK,SAASL,qBAAEkB,OAAO;IAChC,CAAA;IACAR,QAAQV,qBAAEmB;EACZ,CAAA,EAAA;EAAI;gBANSJ,SAAAA;EAQN,MAAMK,uBAAuBpB,qBAAEC,YAAW,EAAmB,GAAGJ,aAAAA,oBAAiC;IACtGK,OAAOF,qBAAEG,OAAO;MACdkB,QAAQP;IACV,CAAA;IACAJ,QAAQV,qBAAEmB;EACZ,CAAA,EAAA;EAAI;gBALSC,iBAAAA;EAON,MAAME,eAAetB,qBAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,qBAAEG,OAAO;MACdkB,QAAQP;MACRN,SAASC;MACTF,QAAQP,qBAAEK,SAASL,qBAAEM,MAAM;IAC7B,CAAA;IACAI,QAAQV,qBAAEmB;EACZ,CAAA,EAAA;EAAI;gBAPSG,SAAAA;EAUN,MAAMC,qBAAqBvB,qBAAEC,YAAW,EAAiB,GAAGJ,aAAAA,mBAAgC;IACjGK,OAAOF,qBAAEG,OAAO;MACdkB,QAAQP;MACRN,SAASC;IACX,CAAA;IACAC,QAAQV,qBAAEmB;EACZ,CAAA,EAAA;EAAI;gBANSI,eAAAA;EAQN,MAAMC,sBAAsBxB,qBAAEC,YAAW,EAAkB,GAAGJ,aAAAA,mBAAgC;IACnGK,OAAOF,qBAAEG,OAAO;MACdkB,QAAQP;MACRN,SAASC;MACTgB,WAAWzB,qBAAEM;MACboB,SAAS1B,qBAAEK,SAASsB,yBAAAA;MACpBC,cAAc5B,qBAAEK,SAASL,qBAAE6B,MAAM;IACnC,CAAA;IACAnB,QAAQV,qBAAEmB;EACZ,CAAA,EAAA;EAAI;gBATSK,gBAAAA;AAUf,GAzDiB5B,iBAAAA,eAAAA,CAAAA,EAAAA;AA2DV,IAAMkC,uBAAuB9B,qBAAE+B,QAAQ/B,qBAAEG,OAAO,CAAC,CAAA,CAAA;",
|
|
6
|
+
"names": ["ThreadAction", "THREAD_ACTION", "THREAD_PLUGIN", "Create", "S", "TaggedClass", "input", "Struct", "name", "optional", "String", "cursor", "subject", "EchoObjectSchema", "output", "object", "Union", "ChannelType", "ThreadType", "Select", "current", "skipOpen", "Boolean", "Void", "ToggleResolved", "thread", "Delete", "OnMessageAdd", "DeleteMessage", "messageId", "message", "MessageType", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"]
|
|
7
|
+
}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -18,21 +18,23 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var node_exports = {};
|
|
20
20
|
__export(node_exports, {
|
|
21
|
-
THREAD_ITEM: () =>
|
|
22
|
-
THREAD_PLUGIN: () =>
|
|
21
|
+
THREAD_ITEM: () => import_chunk_ONLWOUYZ.THREAD_ITEM,
|
|
22
|
+
THREAD_PLUGIN: () => import_chunk_ONLWOUYZ.THREAD_PLUGIN,
|
|
23
|
+
ThreadCapabilities: () => import_chunk_VEVJBOWK.ThreadCapabilities,
|
|
24
|
+
ThreadEvents: () => ThreadEvents,
|
|
23
25
|
ThreadPlugin: () => ThreadPlugin,
|
|
24
|
-
meta: () =>
|
|
25
|
-
useAnalyticsCallback: () =>
|
|
26
|
-
useOnEditAnalytics: () =>
|
|
27
|
-
useStatus: () =>
|
|
26
|
+
meta: () => import_chunk_ONLWOUYZ.meta,
|
|
27
|
+
useAnalyticsCallback: () => import_chunk_FMKMIGXZ.useAnalyticsCallback,
|
|
28
|
+
useOnEditAnalytics: () => import_chunk_FMKMIGXZ.useOnEditAnalytics,
|
|
29
|
+
useStatus: () => import_chunk_FMKMIGXZ.useStatus
|
|
28
30
|
});
|
|
29
31
|
module.exports = __toCommonJS(node_exports);
|
|
30
|
-
var
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
var
|
|
34
|
-
var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
|
|
32
|
+
var import_chunk_FMKMIGXZ = require("./chunk-FMKMIGXZ.cjs");
|
|
33
|
+
var import_chunk_X5TUGJ5K = require("./chunk-X5TUGJ5K.cjs");
|
|
34
|
+
var import_chunk_VEVJBOWK = require("./chunk-VEVJBOWK.cjs");
|
|
35
|
+
var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
|
|
35
36
|
var import_app_framework = require("@dxos/app-framework");
|
|
37
|
+
var import_app_framework2 = require("@dxos/app-framework");
|
|
36
38
|
var import_plugin_client = require("@dxos/plugin-client");
|
|
37
39
|
var import_plugin_deck = require("@dxos/plugin-deck");
|
|
38
40
|
var import_plugin_markdown = require("@dxos/plugin-markdown");
|
|
@@ -40,19 +42,22 @@ var import_plugin_space = require("@dxos/plugin-space");
|
|
|
40
42
|
var import_types = require("@dxos/plugin-space/types");
|
|
41
43
|
var import_echo = require("@dxos/react-client/echo");
|
|
42
44
|
var import_react_ui_thread = require("@dxos/react-ui-thread");
|
|
45
|
+
var import_schema = require("@dxos/schema");
|
|
43
46
|
var import_types2 = require("@dxos/plugin-space/types");
|
|
47
|
+
var ThreadEvents;
|
|
48
|
+
(function(ThreadEvents3) {
|
|
49
|
+
ThreadEvents3.SetupActivity = import_app_framework.Events.createStateEvent(`${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/setup-activity`);
|
|
50
|
+
})(ThreadEvents || (ThreadEvents = {}));
|
|
44
51
|
var translations_default = [
|
|
45
52
|
{
|
|
46
53
|
"en-US": {
|
|
47
54
|
[import_types2.ChannelType.typename]: {
|
|
48
|
-
"typename label": "Channel"
|
|
55
|
+
"typename label": "Channel",
|
|
56
|
+
"object name placeholder": "New channel"
|
|
49
57
|
},
|
|
50
|
-
[
|
|
58
|
+
[import_chunk_ONLWOUYZ.THREAD_PLUGIN]: {
|
|
51
59
|
"plugin name": "Threads",
|
|
52
|
-
"channel name placeholder": "New channel",
|
|
53
60
|
"channel title label": "Title",
|
|
54
|
-
"delete channel label": "Delete channel",
|
|
55
|
-
"create channel label": "Create channel",
|
|
56
61
|
"message placeholder": "Reply\u2026",
|
|
57
62
|
"activity message": "Processing\u2026",
|
|
58
63
|
"anonymous label": "Anonymous",
|
|
@@ -81,63 +86,57 @@ var translations_default = [
|
|
|
81
86
|
}
|
|
82
87
|
}
|
|
83
88
|
];
|
|
84
|
-
var ThreadPlugin = () => (0,
|
|
89
|
+
var ThreadPlugin = () => (0, import_app_framework2.definePlugin)(import_chunk_ONLWOUYZ.meta, [
|
|
85
90
|
// TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.
|
|
86
91
|
// defineModule({
|
|
87
92
|
// id: `${meta.id}/module/settings`,
|
|
88
93
|
// activatesOn: Events.SetupSettings,
|
|
89
94
|
// activate: ThreadSettings,
|
|
90
95
|
// }),
|
|
91
|
-
(0,
|
|
92
|
-
id: `${
|
|
96
|
+
(0, import_app_framework2.defineModule)({
|
|
97
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/state`,
|
|
93
98
|
// TODO(wittjosiah): Does not integrate with settings store.
|
|
94
99
|
// Should this be a different event?
|
|
95
100
|
// Should settings store be renamed to be more generic?
|
|
96
|
-
activatesOn:
|
|
97
|
-
activate:
|
|
101
|
+
activatesOn: import_app_framework2.Events.SetupSettings,
|
|
102
|
+
activate: import_chunk_FMKMIGXZ.ThreadState
|
|
98
103
|
}),
|
|
99
|
-
(0,
|
|
100
|
-
id: `${
|
|
101
|
-
activatesOn:
|
|
102
|
-
activate: () => (0,
|
|
104
|
+
(0, import_app_framework2.defineModule)({
|
|
105
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/translations`,
|
|
106
|
+
activatesOn: import_app_framework2.Events.SetupTranslations,
|
|
107
|
+
activate: () => (0, import_app_framework2.contributes)(import_app_framework2.Capabilities.Translations, [
|
|
103
108
|
...translations_default,
|
|
104
109
|
...import_react_ui_thread.translations
|
|
105
110
|
])
|
|
106
111
|
}),
|
|
107
|
-
(0,
|
|
108
|
-
id: `${
|
|
109
|
-
activatesOn:
|
|
112
|
+
(0, import_app_framework2.defineModule)({
|
|
113
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/metadata`,
|
|
114
|
+
activatesOn: import_app_framework2.Events.SetupMetadata,
|
|
110
115
|
activate: () => [
|
|
111
|
-
(0,
|
|
116
|
+
(0, import_app_framework2.contributes)(import_app_framework2.Capabilities.Metadata, {
|
|
112
117
|
id: import_types.ChannelType.typename,
|
|
113
118
|
metadata: {
|
|
114
|
-
placeholder: [
|
|
115
|
-
"channel name placeholder",
|
|
116
|
-
{
|
|
117
|
-
ns: import_chunk_F735VMTN.THREAD_PLUGIN
|
|
118
|
-
}
|
|
119
|
-
],
|
|
120
119
|
icon: "ph--chat--regular",
|
|
121
120
|
// TODO(wittjosiah): Move out of metadata.
|
|
122
121
|
loadReferences: async (channel) => await import_echo.RefArray.loadAll(channel.threads ?? [])
|
|
123
122
|
}
|
|
124
123
|
}),
|
|
125
|
-
(0,
|
|
124
|
+
(0, import_app_framework2.contributes)(import_app_framework2.Capabilities.Metadata, {
|
|
126
125
|
id: import_types.ThreadType.typename,
|
|
127
126
|
metadata: {
|
|
128
127
|
// TODO(wittjosiah): Move out of metadata.
|
|
129
128
|
loadReferences: async (thread) => await import_echo.RefArray.loadAll(thread.messages ?? [])
|
|
130
129
|
}
|
|
131
130
|
}),
|
|
132
|
-
(0,
|
|
133
|
-
id:
|
|
131
|
+
(0, import_app_framework2.contributes)(import_app_framework2.Capabilities.Metadata, {
|
|
132
|
+
id: import_schema.MessageType.typename,
|
|
134
133
|
metadata: {
|
|
135
134
|
// TODO(wittjosiah): Move out of metadata.
|
|
136
135
|
loadReferences: (message) => []
|
|
137
136
|
}
|
|
138
137
|
}),
|
|
139
|
-
(0,
|
|
140
|
-
id:
|
|
138
|
+
(0, import_app_framework2.contributes)(import_app_framework2.Capabilities.Metadata, {
|
|
139
|
+
id: import_chunk_ONLWOUYZ.THREAD_ITEM,
|
|
141
140
|
metadata: {
|
|
142
141
|
parse: (item, type) => {
|
|
143
142
|
switch (type) {
|
|
@@ -160,31 +159,39 @@ var ThreadPlugin = () => (0, import_app_framework.definePlugin)(import_chunk_F73
|
|
|
160
159
|
})
|
|
161
160
|
]
|
|
162
161
|
}),
|
|
163
|
-
(0,
|
|
164
|
-
id: `${
|
|
162
|
+
(0, import_app_framework2.defineModule)({
|
|
163
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/object-form`,
|
|
165
164
|
activatesOn: import_plugin_client.ClientEvents.SetupSchema,
|
|
166
|
-
activate: () => (0,
|
|
165
|
+
activate: () => (0, import_app_framework2.contributes)(import_plugin_space.SpaceCapabilities.ObjectForm, (0, import_types.defineObjectForm)({
|
|
167
166
|
objectSchema: import_types.ChannelType,
|
|
168
|
-
getIntent: () => (0,
|
|
167
|
+
getIntent: () => (0, import_app_framework2.createIntent)(import_chunk_X5TUGJ5K.ThreadAction.Create)
|
|
169
168
|
}))
|
|
170
169
|
}),
|
|
171
|
-
(0,
|
|
172
|
-
id: `${
|
|
170
|
+
(0, import_app_framework2.defineModule)({
|
|
171
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/schema`,
|
|
173
172
|
activatesOn: import_plugin_client.ClientEvents.SetupSchema,
|
|
174
|
-
activate: () => (0,
|
|
173
|
+
activate: () => (0, import_app_framework2.contributes)(import_plugin_client.ClientCapabilities.Schema, [
|
|
175
174
|
import_types.ThreadType,
|
|
176
|
-
|
|
175
|
+
import_schema.MessageType,
|
|
176
|
+
import_schema.MessageTypeV1
|
|
177
|
+
])
|
|
178
|
+
}),
|
|
179
|
+
(0, import_app_framework2.defineModule)({
|
|
180
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/migration`,
|
|
181
|
+
activatesOn: import_plugin_client.ClientEvents.SetupMigration,
|
|
182
|
+
activate: () => (0, import_app_framework2.contributes)(import_plugin_client.ClientCapabilities.Migration, [
|
|
183
|
+
import_schema.MessageTypeV1ToV2
|
|
177
184
|
])
|
|
178
185
|
}),
|
|
179
|
-
(0,
|
|
180
|
-
id: `${
|
|
186
|
+
(0, import_app_framework2.defineModule)({
|
|
187
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/complementary-panel`,
|
|
181
188
|
activatesOn: import_plugin_deck.DeckEvents.SetupComplementaryPanels,
|
|
182
|
-
activate: () => (0,
|
|
189
|
+
activate: () => (0, import_app_framework2.contributes)(import_plugin_deck.DeckCapabilities.ComplementaryPanel, {
|
|
183
190
|
id: "comments",
|
|
184
191
|
label: [
|
|
185
192
|
"comments panel label",
|
|
186
193
|
{
|
|
187
|
-
ns:
|
|
194
|
+
ns: import_chunk_ONLWOUYZ.THREAD_PLUGIN
|
|
188
195
|
}
|
|
189
196
|
],
|
|
190
197
|
icon: "ph--chat-text--regular",
|
|
@@ -194,30 +201,33 @@ var ThreadPlugin = () => (0, import_app_framework.definePlugin)(import_chunk_F73
|
|
|
194
201
|
filter: (node) => !!node.data && typeof node.data === "object" && "threads" in node.data && Array.isArray(node.data.threads) && !(node.data instanceof import_types.ChannelType)
|
|
195
202
|
})
|
|
196
203
|
}),
|
|
197
|
-
(0,
|
|
198
|
-
id: `${
|
|
204
|
+
(0, import_app_framework2.defineModule)({
|
|
205
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/markdown`,
|
|
199
206
|
activatesOn: import_plugin_markdown.MarkdownEvents.SetupExtensions,
|
|
200
|
-
activate:
|
|
207
|
+
activate: import_chunk_FMKMIGXZ.Markdown
|
|
201
208
|
}),
|
|
202
|
-
(0,
|
|
203
|
-
id: `${
|
|
204
|
-
activatesOn:
|
|
209
|
+
(0, import_app_framework2.defineModule)({
|
|
210
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/react-surface`,
|
|
211
|
+
activatesOn: import_app_framework2.Events.SetupReactSurface,
|
|
205
212
|
// TODO(wittjosiah): Should occur before the comments thread is loaded when surfaces activation is more granular.
|
|
206
213
|
activatesBefore: [
|
|
207
|
-
import_plugin_space.ThreadEvents.SetupThread
|
|
214
|
+
import_plugin_space.ThreadEvents.SetupThread,
|
|
215
|
+
ThreadEvents.SetupActivity
|
|
208
216
|
],
|
|
209
|
-
activate:
|
|
217
|
+
activate: import_chunk_FMKMIGXZ.ReactSurface
|
|
210
218
|
}),
|
|
211
|
-
(0,
|
|
212
|
-
id: `${
|
|
213
|
-
activatesOn:
|
|
214
|
-
activate:
|
|
219
|
+
(0, import_app_framework2.defineModule)({
|
|
220
|
+
id: `${import_chunk_ONLWOUYZ.meta.id}/module/intent-resolver`,
|
|
221
|
+
activatesOn: import_app_framework2.Events.SetupIntentResolver,
|
|
222
|
+
activate: import_chunk_FMKMIGXZ.IntentResolver
|
|
215
223
|
})
|
|
216
224
|
]);
|
|
217
225
|
// Annotate the CommonJS export names for ESM import in node:
|
|
218
226
|
0 && (module.exports = {
|
|
219
227
|
THREAD_ITEM,
|
|
220
228
|
THREAD_PLUGIN,
|
|
229
|
+
ThreadCapabilities,
|
|
230
|
+
ThreadEvents,
|
|
221
231
|
ThreadPlugin,
|
|
222
232
|
meta,
|
|
223
233
|
useAnalyticsCallback,
|