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