@dxos/plugin-thread 0.8.1-staging.391c573 → 0.8.1-staging.5be625a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/ChannelContainer-ITIG7L7P.mjs +75 -0
- package/dist/lib/browser/ChannelContainer-ITIG7L7P.mjs.map +7 -0
- package/dist/lib/browser/{chunk-NAO3LZMZ.mjs → chunk-NOOMCX5E.mjs} +3 -2
- package/dist/lib/browser/chunk-NOOMCX5E.mjs.map +7 -0
- package/dist/lib/browser/{chunk-UPKU23DA.mjs → chunk-NRMJGYMA.mjs} +50 -43
- package/dist/lib/browser/chunk-NRMJGYMA.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YK3ICB7G.mjs → chunk-SJPT347G.mjs} +19 -6
- package/dist/lib/browser/chunk-SJPT347G.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BNEWNQBO.mjs → chunk-SMQYULO6.mjs} +16 -4
- package/dist/lib/browser/{chunk-BNEWNQBO.mjs.map → chunk-SMQYULO6.mjs.map} +4 -4
- package/dist/lib/browser/{chunk-636QDHE3.mjs → chunk-WBJLUUOK.mjs} +1 -1
- package/dist/lib/browser/{chunk-636QDHE3.mjs.map → chunk-WBJLUUOK.mjs.map} +2 -2
- package/dist/lib/browser/index.mjs +42 -31
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/{intent-resolver-FAFQ54NP.mjs → intent-resolver-FSG3ZOIM.mjs} +65 -62
- package/dist/lib/browser/intent-resolver-FSG3ZOIM.mjs.map +7 -0
- package/dist/lib/browser/{markdown-RPYOUBVR.mjs → markdown-MYZQDQFY.mjs} +6 -6
- package/dist/lib/browser/markdown-MYZQDQFY.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-Y4MUSICN.mjs → react-surface-KOYRIK3E.mjs} +25 -32
- package/dist/lib/browser/react-surface-KOYRIK3E.mjs.map +7 -0
- package/dist/lib/browser/{settings-WQTE5AEZ.mjs → settings-5CREE7BH.mjs} +3 -3
- package/dist/lib/browser/{state-GNFUURIC.mjs → state-HPUFZBB7.mjs} +4 -3
- package/dist/lib/browser/state-HPUFZBB7.mjs.map +7 -0
- package/dist/lib/browser/types.mjs +2 -2
- package/dist/lib/node/ChannelContainer-F7345XW2.cjs +99 -0
- package/dist/lib/node/ChannelContainer-F7345XW2.cjs.map +7 -0
- package/dist/lib/node/{chunk-CMEMMYDL.cjs → chunk-AXTPNGRI.cjs} +23 -10
- package/dist/lib/node/chunk-AXTPNGRI.cjs.map +7 -0
- package/dist/lib/node/{chunk-RQR5Z23G.cjs → chunk-DGV5ABT6.cjs} +52 -45
- package/dist/lib/node/chunk-DGV5ABT6.cjs.map +7 -0
- package/dist/lib/node/{chunk-AWSTZ2KN.cjs → chunk-JBOC6MIE.cjs} +30 -6
- package/dist/lib/node/chunk-JBOC6MIE.cjs.map +7 -0
- package/dist/lib/node/{chunk-F735VMTN.cjs → chunk-ONLWOUYZ.cjs} +4 -4
- package/dist/lib/node/{chunk-F735VMTN.cjs.map → chunk-ONLWOUYZ.cjs.map} +2 -2
- package/dist/lib/node/{chunk-FPWNZ6TB.cjs → chunk-VEVJBOWK.cjs} +8 -7
- package/dist/lib/node/chunk-VEVJBOWK.cjs.map +7 -0
- package/dist/lib/node/index.cjs +77 -67
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/{intent-resolver-DVBEXJ33.cjs → intent-resolver-NBME5QSW.cjs} +79 -76
- package/dist/lib/node/intent-resolver-NBME5QSW.cjs.map +7 -0
- package/dist/lib/node/{markdown-ELRGISXE.cjs → markdown-QBQTARMD.cjs} +12 -12
- package/dist/lib/node/markdown-QBQTARMD.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-7HLTN5XS.cjs → react-surface-ICWYXRJU.cjs} +46 -53
- package/dist/lib/node/react-surface-ICWYXRJU.cjs.map +7 -0
- package/dist/lib/node/{settings-7VQYARM5.cjs → settings-XOLYNUHH.cjs} +8 -8
- package/dist/lib/node/{state-TQWEZ6B3.cjs → state-JMI5ZXZI.cjs} +8 -7
- package/dist/lib/node/state-JMI5ZXZI.cjs.map +7 -0
- package/dist/lib/node/types.cjs +4 -4
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/ChannelContainer-GP6Y6JSN.mjs +76 -0
- package/dist/lib/node-esm/ChannelContainer-GP6Y6JSN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FXUATCLW.mjs → chunk-42F2DTMM.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-FXUATCLW.mjs.map → chunk-42F2DTMM.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-33NDMQQQ.mjs → chunk-FZXTP57V.mjs} +19 -6
- package/dist/lib/node-esm/chunk-FZXTP57V.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CISLDOH7.mjs → chunk-TW2NME6Z.mjs} +50 -43
- package/dist/lib/node-esm/chunk-TW2NME6Z.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ZJITX3TO.mjs → chunk-TXW5SIBN.mjs} +3 -2
- package/dist/lib/node-esm/chunk-TXW5SIBN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HLWJTUWZ.mjs → chunk-XQO5DGHF.mjs} +16 -4
- package/dist/lib/node-esm/{chunk-HLWJTUWZ.mjs.map → chunk-XQO5DGHF.mjs.map} +4 -4
- package/dist/lib/node-esm/index.mjs +42 -31
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/{intent-resolver-DHVLBNCC.mjs → intent-resolver-QQCCKVEW.mjs} +65 -62
- package/dist/lib/node-esm/intent-resolver-QQCCKVEW.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-23OB7EZG.mjs → markdown-QO5HK24O.mjs} +6 -6
- package/dist/lib/node-esm/markdown-QO5HK24O.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-AZHTTR6J.mjs → react-surface-Z4CLCKTN.mjs} +25 -32
- package/dist/lib/node-esm/react-surface-Z4CLCKTN.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SGMM7UDT.mjs → settings-32PBKVBB.mjs} +3 -3
- package/dist/lib/node-esm/{state-7MLR27YG.mjs → state-PSZO57LP.mjs} +4 -3
- package/dist/lib/node-esm/state-PSZO57LP.mjs.map +7 -0
- package/dist/lib/node-esm/types.mjs +2 -2
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +5 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.d.ts +9 -0
- package/dist/types/src/components/ChannelContainer.d.ts.map +1 -0
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +7 -1
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +3 -2
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +3 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +44 -40
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +4 -0
- package/dist/types/src/events.d.ts.map +1 -0
- package/dist/types/src/hooks/analytics.d.ts +2 -1
- package/dist/types/src/hooks/analytics.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -7
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -9
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +20 -4
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +33 -30
- package/src/ThreadPlugin.tsx +11 -7
- package/src/capabilities/capabilities.ts +6 -0
- package/src/capabilities/intent-resolver.ts +39 -33
- package/src/capabilities/react-surface.tsx +6 -18
- package/src/capabilities/state.ts +1 -1
- package/src/components/ChannelContainer.tsx +80 -0
- package/src/components/Chat.stories.tsx +19 -9
- package/src/components/ChatContainer.tsx +27 -29
- package/src/components/CommentContainer.tsx +8 -2
- package/src/components/Comments.stories.tsx +2 -1
- package/src/components/MessageContainer.tsx +18 -14
- package/src/components/ThreadComplementary.tsx +5 -4
- package/src/components/index.ts +1 -1
- package/src/components/testing.ts +4 -27
- package/src/events.ts +11 -0
- package/src/extensions/threads.ts +2 -2
- package/src/hooks/analytics.ts +7 -2
- package/src/index.ts +2 -0
- package/src/meta.ts +2 -2
- package/src/translations.ts +1 -3
- package/src/types.ts +18 -4
- package/dist/lib/browser/ThreadContainer-6OP5AG2W.mjs +0 -19
- package/dist/lib/browser/ThreadContainer-6OP5AG2W.mjs.map +0 -7
- package/dist/lib/browser/chunk-NAO3LZMZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-UPKU23DA.mjs.map +0 -7
- package/dist/lib/browser/chunk-VOMIDDNO.mjs +0 -15
- package/dist/lib/browser/chunk-VOMIDDNO.mjs.map +0 -7
- package/dist/lib/browser/chunk-YK3ICB7G.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-FAFQ54NP.mjs.map +0 -7
- package/dist/lib/browser/markdown-RPYOUBVR.mjs.map +0 -7
- package/dist/lib/browser/react-surface-Y4MUSICN.mjs.map +0 -7
- package/dist/lib/browser/state-GNFUURIC.mjs.map +0 -7
- package/dist/lib/node/ThreadContainer-LTKKLPXX.cjs +0 -45
- package/dist/lib/node/ThreadContainer-LTKKLPXX.cjs.map +0 -7
- package/dist/lib/node/chunk-AWSTZ2KN.cjs.map +0 -7
- package/dist/lib/node/chunk-BHFHFTHO.cjs +0 -50
- package/dist/lib/node/chunk-BHFHFTHO.cjs.map +0 -7
- package/dist/lib/node/chunk-CMEMMYDL.cjs.map +0 -7
- package/dist/lib/node/chunk-FPWNZ6TB.cjs.map +0 -7
- package/dist/lib/node/chunk-RQR5Z23G.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-DVBEXJ33.cjs.map +0 -7
- package/dist/lib/node/markdown-ELRGISXE.cjs.map +0 -7
- package/dist/lib/node/react-surface-7HLTN5XS.cjs.map +0 -7
- package/dist/lib/node/state-TQWEZ6B3.cjs.map +0 -7
- package/dist/lib/node-esm/ThreadContainer-SV74JFRH.mjs +0 -20
- package/dist/lib/node-esm/ThreadContainer-SV74JFRH.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-33NDMQQQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CISLDOH7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PJPVEO7E.mjs +0 -17
- package/dist/lib/node-esm/chunk-PJPVEO7E.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZJITX3TO.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-DHVLBNCC.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-23OB7EZG.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-AZHTTR6J.mjs.map +0 -7
- package/dist/lib/node-esm/state-7MLR27YG.mjs.map +0 -7
- package/dist/types/src/components/ThreadContainer.d.ts +0 -7
- package/dist/types/src/components/ThreadContainer.d.ts.map +0 -1
- package/src/components/ThreadContainer.tsx +0 -22
- /package/dist/lib/browser/{settings-WQTE5AEZ.mjs.map → settings-5CREE7BH.mjs.map} +0 -0
- /package/dist/lib/node/{settings-7VQYARM5.cjs.map → settings-XOLYNUHH.cjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-SGMM7UDT.mjs.map → settings-32PBKVBB.mjs.map} +0 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var ChannelContainer_F7345XW2_exports = {};
|
|
30
|
+
__export(ChannelContainer_F7345XW2_exports, {
|
|
31
|
+
default: () => ChannelContainer_default
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(ChannelContainer_F7345XW2_exports);
|
|
34
|
+
var import_chunk_DGV5ABT6 = require("./chunk-DGV5ABT6.cjs");
|
|
35
|
+
var import_chunk_JBOC6MIE = require("./chunk-JBOC6MIE.cjs");
|
|
36
|
+
var import_chunk_VEVJBOWK = require("./chunk-VEVJBOWK.cjs");
|
|
37
|
+
var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
|
|
38
|
+
var import_react = __toESM(require("react"));
|
|
39
|
+
var import_app_framework = require("@dxos/app-framework");
|
|
40
|
+
var import_echo = require("@dxos/react-client/echo");
|
|
41
|
+
var import_react_ui_editor = require("@dxos/react-ui-editor");
|
|
42
|
+
var import_react_ui_menu = require("@dxos/react-ui-menu");
|
|
43
|
+
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
44
|
+
var useActivitiesMenu = (activities, activity) => {
|
|
45
|
+
return (0, import_react_ui_menu.useMenuActions)(() => ({
|
|
46
|
+
nodes: [
|
|
47
|
+
(0, import_react_ui_editor.createEditorActionGroup)("activities", {
|
|
48
|
+
variant: "toggleGroup",
|
|
49
|
+
selectCardinality: "single",
|
|
50
|
+
value: activity
|
|
51
|
+
}),
|
|
52
|
+
...activities.map(({ id, ...properties }) => (0, import_react_ui_menu.createMenuAction)(id, {
|
|
53
|
+
...properties,
|
|
54
|
+
checked: true
|
|
55
|
+
}))
|
|
56
|
+
],
|
|
57
|
+
edges: [
|
|
58
|
+
{
|
|
59
|
+
source: "root",
|
|
60
|
+
target: "activities"
|
|
61
|
+
},
|
|
62
|
+
...activities.map((activity2) => ({
|
|
63
|
+
source: "activities",
|
|
64
|
+
target: activity2.id
|
|
65
|
+
}))
|
|
66
|
+
]
|
|
67
|
+
}));
|
|
68
|
+
};
|
|
69
|
+
var ChannelContainer = ({ role, channel, context }) => {
|
|
70
|
+
const { state } = (0, import_app_framework.useCapability)(import_chunk_VEVJBOWK.ThreadCapabilities.MutableState);
|
|
71
|
+
const currentActivity = state.activities[channel.id];
|
|
72
|
+
const activities = (0, import_app_framework.useCapabilities)(import_chunk_VEVJBOWK.ThreadCapabilities.Activity);
|
|
73
|
+
const menu = useActivitiesMenu(activities, currentActivity);
|
|
74
|
+
const handleAction = (0, import_react.useCallback)((action) => state.activities[channel.id] = currentActivity === action.id ? void 0 : action.id, [
|
|
75
|
+
currentActivity
|
|
76
|
+
]);
|
|
77
|
+
const space = (0, import_echo.getSpace)(channel);
|
|
78
|
+
if (!space) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
|
|
82
|
+
toolbar: true
|
|
83
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_menu.MenuProvider, {
|
|
84
|
+
...menu,
|
|
85
|
+
onAction: handleAction,
|
|
86
|
+
attendableId: (0, import_echo.fullyQualifiedId)(channel)
|
|
87
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_menu.ToolbarMenu, null)), currentActivity ? /* @__PURE__ */ import_react.default.createElement(import_app_framework.Surface, {
|
|
88
|
+
role: `channel-activity--${currentActivity}`,
|
|
89
|
+
data: {
|
|
90
|
+
subject: channel
|
|
91
|
+
}
|
|
92
|
+
}) : /* @__PURE__ */ import_react.default.createElement(import_chunk_DGV5ABT6.ChatContainer, {
|
|
93
|
+
space,
|
|
94
|
+
dxn: channel.queue.dxn,
|
|
95
|
+
context
|
|
96
|
+
}));
|
|
97
|
+
};
|
|
98
|
+
var ChannelContainer_default = ChannelContainer;
|
|
99
|
+
//# sourceMappingURL=ChannelContainer-F7345XW2.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ChannelContainer.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, type ComponentProps } from 'react';\n\nimport { Surface, useCapabilities, useCapability } from '@dxos/app-framework';\nimport { type NodeArg } from '@dxos/plugin-graph';\nimport { type ChannelType } from '@dxos/plugin-space/types';\nimport { fullyQualifiedId, getSpace } from '@dxos/react-client/echo';\nimport { createEditorActionGroup } from '@dxos/react-ui-editor';\nimport {\n createMenuAction,\n MenuProvider,\n ToolbarMenu,\n type ToolbarMenuActionGroupProperties,\n useMenuActions,\n type MenuAction,\n} from '@dxos/react-ui-menu';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { ChatContainer } from './ChatContainer';\nimport { ThreadCapabilities } from '../capabilities';\n\nconst useActivitiesMenu = (activities: ThreadCapabilities.Activity[], activity: string | undefined) => {\n return useMenuActions(() => ({\n nodes: [\n createEditorActionGroup('activities', {\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value: activity,\n } as ToolbarMenuActionGroupProperties) as NodeArg<any>,\n ...activities.map(({ id, ...properties }) =>\n createMenuAction(id, {\n ...properties,\n checked: true,\n }),\n ),\n ],\n edges: [\n { source: 'root', target: 'activities' },\n ...activities.map((activity) => ({ source: 'activities', target: activity.id })),\n ],\n }));\n};\n\nconst ChannelContainer = ({\n role,\n channel,\n context,\n}: Pick<ComponentProps<typeof ChatContainer>, 'context'> & { channel: ChannelType; role: string }) => {\n const { state } = useCapability(ThreadCapabilities.MutableState);\n const currentActivity = state.activities[channel.id];\n const activities = useCapabilities(ThreadCapabilities.Activity);\n const menu = useActivitiesMenu(activities, currentActivity);\n const handleAction = useCallback(\n (action: MenuAction) => (state.activities[channel.id] = currentActivity === action.id ? undefined : action.id),\n [currentActivity],\n );\n\n const space = getSpace(channel);\n if (!space) {\n return null;\n }\n\n return (\n <StackItem.Content toolbar>\n <MenuProvider {...menu} onAction={handleAction} attendableId={fullyQualifiedId(channel)}>\n <ToolbarMenu />\n </MenuProvider>\n {currentActivity ? (\n <Surface role={`channel-activity--${currentActivity}`} data={{ subject: channel }} />\n ) : (\n <ChatContainer space={space} dxn={channel.queue.dxn} context={context} />\n )}\n </StackItem.Content>\n );\n};\n\nexport default ChannelContainer;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAwD;AAExD,2BAAwD;AAGxD,kBAA2C;AAC3C,6BAAwC;AACxC,2BAOO;AACP,4BAA0B;AAK1B,IAAMA,oBAAoB,CAACC,YAA2CC,aAAAA;AACpE,aAAOC,qCAAe,OAAO;IAC3BC,OAAO;UACLC,gDAAwB,cAAc;QACpCC,SAAS;QACTC,mBAAmB;QACnBC,OAAON;MACT,CAAA;SACGD,WAAWQ,IAAI,CAAC,EAAEC,IAAI,GAAGC,WAAAA,UAC1BC,uCAAiBF,IAAI;QACnB,GAAGC;QACHE,SAAS;MACX,CAAA,CAAA;;IAGJC,OAAO;MACL;QAAEC,QAAQ;QAAQC,QAAQ;MAAa;SACpCf,WAAWQ,IAAI,CAACP,eAAc;QAAEa,QAAQ;QAAcC,QAAQd,UAASQ;MAAG,EAAA;;EAEjF,EAAA;AACF;AAEA,IAAMO,mBAAmB,CAAC,EACxBC,MACAC,SACAC,QAAO,MACwF;AAC/F,QAAM,EAAEC,MAAK,QAAKC,oCAAcC,yCAAmBC,YAAY;AAC/D,QAAMC,kBAAkBJ,MAAMpB,WAAWkB,QAAQT,EAAE;AACnD,QAAMT,iBAAayB,sCAAgBH,yCAAmBI,QAAQ;AAC9D,QAAMC,OAAO5B,kBAAkBC,YAAYwB,eAAAA;AAC3C,QAAMI,mBAAeC,0BACnB,CAACC,WAAwBV,MAAMpB,WAAWkB,QAAQT,EAAE,IAAIe,oBAAoBM,OAAOrB,KAAKsB,SAAYD,OAAOrB,IAC3G;IAACe;GAAgB;AAGnB,QAAMQ,YAAQC,sBAASf,OAAAA;AACvB,MAAI,CAACc,OAAO;AACV,WAAO;EACT;AAEA,SACE,6BAAAE,QAAA,cAACC,gCAAUC,SAAO;IAACC,SAAAA;KACjB,6BAAAH,QAAA,cAACI,mCAAAA;IAAc,GAAGX;IAAMY,UAAUX;IAAcY,kBAAcC,8BAAiBvB,OAAAA;KAC7E,6BAAAgB,QAAA,cAACQ,kCAAAA,IAAAA,CAAAA,GAEFlB,kBACC,6BAAAU,QAAA,cAACS,8BAAAA;IAAQ1B,MAAM,qBAAqBO,eAAAA;IAAmBoB,MAAM;MAAEC,SAAS3B;IAAQ;OAEhF,6BAAAgB,QAAA,cAACY,qCAAAA;IAAcd;IAAce,KAAK7B,QAAQ8B,MAAMD;IAAK5B;;AAI7D;AAEA,IAAA,2BAAeH;",
|
|
6
|
+
"names": ["useActivitiesMenu", "activities", "activity", "useMenuActions", "nodes", "createEditorActionGroup", "variant", "selectCardinality", "value", "map", "id", "properties", "createMenuAction", "checked", "edges", "source", "target", "ChannelContainer", "role", "channel", "context", "state", "useCapability", "ThreadCapabilities", "MutableState", "currentActivity", "useCapabilities", "Activity", "menu", "handleAction", "useCallback", "action", "undefined", "space", "getSpace", "React", "StackItem", "Content", "toolbar", "MenuProvider", "onAction", "attendableId", "fullyQualifiedId", "ToolbarMenu", "Surface", "data", "subject", "ChatContainer", "dxn", "queue"]
|
|
7
|
+
}
|
|
@@ -16,27 +16,40 @@ 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_AXTPNGRI_exports = {};
|
|
20
|
+
__export(chunk_AXTPNGRI_exports, {
|
|
21
21
|
ThreadAction: () => ThreadAction,
|
|
22
22
|
ThreadSettingsSchema: () => ThreadSettingsSchema
|
|
23
23
|
});
|
|
24
|
-
module.exports = __toCommonJS(
|
|
25
|
-
var
|
|
24
|
+
module.exports = __toCommonJS(chunk_AXTPNGRI_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`;
|
|
33
|
+
class CreateChannel extends import_echo_schema.S.TaggedClass()(`${THREAD_ACTION}/create-channel`, {
|
|
34
|
+
input: import_echo_schema.S.Struct({
|
|
35
|
+
// TODO(wittjosiah): Should be SpaceId.
|
|
36
|
+
spaceId: import_echo_schema.S.String,
|
|
37
|
+
name: import_echo_schema.S.optional(import_echo_schema.S.String)
|
|
38
|
+
}),
|
|
39
|
+
output: import_echo_schema.S.Struct({
|
|
40
|
+
object: import_types.ChannelType
|
|
41
|
+
})
|
|
42
|
+
}) {
|
|
43
|
+
}
|
|
44
|
+
ThreadAction2.CreateChannel = CreateChannel;
|
|
32
45
|
class Create extends import_echo_schema.S.TaggedClass()(`${THREAD_ACTION}/create`, {
|
|
33
46
|
input: import_echo_schema.S.Struct({
|
|
34
47
|
name: import_echo_schema.S.optional(import_echo_schema.S.String),
|
|
35
|
-
cursor: import_echo_schema.S.
|
|
36
|
-
subject:
|
|
48
|
+
cursor: import_echo_schema.S.String,
|
|
49
|
+
subject: import_echo.EchoObjectSchema
|
|
37
50
|
}),
|
|
38
51
|
output: import_echo_schema.S.Struct({
|
|
39
|
-
object:
|
|
52
|
+
object: import_types.ThreadType
|
|
40
53
|
})
|
|
41
54
|
}) {
|
|
42
55
|
}
|
|
@@ -82,7 +95,7 @@ var ThreadAction;
|
|
|
82
95
|
thread: import_types.ThreadType,
|
|
83
96
|
subject: import_echo.EchoObjectSchema,
|
|
84
97
|
messageId: import_echo_schema.S.String,
|
|
85
|
-
message: import_echo_schema.S.optional(
|
|
98
|
+
message: import_echo_schema.S.optional(import_schema.MessageType),
|
|
86
99
|
messageIndex: import_echo_schema.S.optional(import_echo_schema.S.Number)
|
|
87
100
|
}),
|
|
88
101
|
output: import_echo_schema.S.Void
|
|
@@ -96,4 +109,4 @@ var ThreadSettingsSchema = import_echo_schema.S.mutable(import_echo_schema.S.Str
|
|
|
96
109
|
ThreadAction,
|
|
97
110
|
ThreadSettingsSchema
|
|
98
111
|
});
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
112
|
+
//# sourceMappingURL=chunk-AXTPNGRI.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 CreateChannel extends S.TaggedClass<CreateChannel>()(`${THREAD_ACTION}/create-channel`, {\n input: S.Struct({\n // TODO(wittjosiah): Should be SpaceId.\n spaceId: S.String,\n name: S.optional(S.String),\n }),\n output: S.Struct({\n object: ChannelType,\n }),\n }) {}\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.String,\n subject: EchoObjectSchema,\n }),\n output: S.Struct({\n object: 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,sBAAsBC,qBAAEC,YAAW,EAAkB,GAAGJ,aAAAA,mBAAgC;IACnGK,OAAOF,qBAAEG,OAAO;;MAEdC,SAASJ,qBAAEK;MACXC,MAAMN,qBAAEO,SAASP,qBAAEK,MAAM;IAC3B,CAAA;IACAG,QAAQR,qBAAEG,OAAO;MACfM,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBATSX,gBAAAA;EAWN,MAAMY,eAAeX,qBAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,qBAAEG,OAAO;MACdG,MAAMN,qBAAEO,SAASP,qBAAEK,MAAM;MACzBO,QAAQZ,qBAAEK;MACVQ,SAASC;IACX,CAAA;IACAN,QAAQR,qBAAEG,OAAO;MACfM,QAAQM;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBATSJ,SAAAA;EAWN,MAAMK,eAAehB,qBAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,qBAAEG,OAAO;MACdc,SAASjB,qBAAEK;MACXa,UAAUlB,qBAAEO,SAASP,qBAAEmB,OAAO;IAChC,CAAA;IACAX,QAAQR,qBAAEoB;EACZ,CAAA,EAAA;EAAI;gBANSJ,SAAAA;EAQN,MAAMK,uBAAuBrB,qBAAEC,YAAW,EAAmB,GAAGJ,aAAAA,oBAAiC;IACtGK,OAAOF,qBAAEG,OAAO;MACdmB,QAAQP;IACV,CAAA;IACAP,QAAQR,qBAAEoB;EACZ,CAAA,EAAA;EAAI;gBALSC,iBAAAA;EAON,MAAME,eAAevB,qBAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,qBAAEG,OAAO;MACdmB,QAAQP;MACRF,SAASC;MACTF,QAAQZ,qBAAEO,SAASP,qBAAEK,MAAM;IAC7B,CAAA;IACAG,QAAQR,qBAAEoB;EACZ,CAAA,EAAA;EAAI;gBAPSG,SAAAA;EAUN,MAAMC,qBAAqBxB,qBAAEC,YAAW,EAAiB,GAAGJ,aAAAA,mBAAgC;IACjGK,OAAOF,qBAAEG,OAAO;MACdmB,QAAQP;MACRF,SAASC;IACX,CAAA;IACAN,QAAQR,qBAAEoB;EACZ,CAAA,EAAA;EAAI;gBANSI,eAAAA;EAQN,MAAMC,sBAAsBzB,qBAAEC,YAAW,EAAkB,GAAGJ,aAAAA,mBAAgC;IACnGK,OAAOF,qBAAEG,OAAO;MACdmB,QAAQP;MACRF,SAASC;MACTY,WAAW1B,qBAAEK;MACbsB,SAAS3B,qBAAEO,SAASqB,yBAAAA;MACpBC,cAAc7B,qBAAEO,SAASP,qBAAE8B,MAAM;IACnC,CAAA;IACAtB,QAAQR,qBAAEoB;EACZ,CAAA,EAAA;EAAI;gBATSK,gBAAAA;AAUf,GApEiB7B,iBAAAA,eAAAA,CAAAA,EAAAA;AAsEV,IAAMmC,uBAAuB/B,qBAAEgC,QAAQhC,qBAAEG,OAAO,CAAC,CAAA,CAAA;",
|
|
6
|
+
"names": ["ThreadAction", "THREAD_ACTION", "THREAD_PLUGIN", "CreateChannel", "S", "TaggedClass", "input", "Struct", "spaceId", "String", "name", "optional", "output", "object", "ChannelType", "Create", "cursor", "subject", "EchoObjectSchema", "ThreadType", "Select", "current", "skipOpen", "Boolean", "Void", "ToggleResolved", "thread", "Delete", "OnMessageAdd", "DeleteMessage", "messageId", "message", "MessageType", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"]
|
|
7
|
+
}
|
|
@@ -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_DGV5ABT6_exports = {};
|
|
30
|
+
__export(chunk_DGV5ABT6_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_DGV5ABT6_exports);
|
|
37
|
+
var import_chunk_JBOC6MIE = require("./chunk-JBOC6MIE.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"));
|
|
@@ -105,7 +105,7 @@ var messageControlClassNames = [
|
|
|
105
105
|
"!p-1 !min-bs-0 transition-opacity",
|
|
106
106
|
import_react_ui_theme2.hoverableControlItem
|
|
107
107
|
];
|
|
108
|
-
var MessageContainer = ({ message, members, onDelete }) => {
|
|
108
|
+
var MessageContainer = ({ message, members, editable = false, onDelete }) => {
|
|
109
109
|
const senderIdentity = members.find((member) => message.sender.identityKey && import_react_client.PublicKey.equals(member.identity.identityKey, message.sender.identityKey))?.identity;
|
|
110
110
|
const messageMetadata = getMessageMetadata(message.id, senderIdentity);
|
|
111
111
|
const userIsAuthor = (0, import_halo2.useIdentity)()?.identityKey.toHex() === messageMetadata.authorId;
|
|
@@ -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_JBOC6MIE.useOnEditAnalytics)(message, textBlock, !!editing);
|
|
120
123
|
return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageRoot, {
|
|
121
124
|
...messageMetadata,
|
|
122
125
|
classNames: [
|
|
@@ -128,7 +131,7 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
128
131
|
timestamp: messageMetadata.timestamp
|
|
129
132
|
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ButtonGroup, {
|
|
130
133
|
classNames: "mie-1"
|
|
131
|
-
}, userIsAuthor && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
|
|
134
|
+
}, userIsAuthor && editable && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
|
|
132
135
|
asChild: true
|
|
133
136
|
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
|
|
134
137
|
variant: "ghost",
|
|
@@ -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,
|
|
@@ -233,18 +235,21 @@ var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react3.forwardRef)(({ su
|
|
|
233
235
|
fallback: title
|
|
234
236
|
}));
|
|
235
237
|
});
|
|
236
|
-
var ChatContainer = ({
|
|
238
|
+
var ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }) => {
|
|
239
|
+
const id = dxn.toString();
|
|
237
240
|
const identity = (0, import_halo.useIdentity)();
|
|
238
|
-
const space = (0, import_echo.getSpace)(thread);
|
|
239
241
|
const members = (0, import_echo.useMembers)(space?.key);
|
|
240
|
-
const
|
|
241
|
-
|
|
242
|
+
const queue = (0, import_echo.useQueue)(dxn, {
|
|
243
|
+
pollInterval: 1e3
|
|
244
|
+
});
|
|
245
|
+
const activity = (0, import_chunk_JBOC6MIE.useStatus)(space, id);
|
|
246
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_ONLWOUYZ.THREAD_PLUGIN);
|
|
242
247
|
const [_count, _setCount] = (0, import_react.useState)(0);
|
|
243
248
|
const rerenderEditor = () => _setCount((count) => count + 1);
|
|
244
249
|
const [autoFocus, setAutoFocus] = (0, import_react.useState)(autoFocusTextbox);
|
|
245
250
|
const threadScrollRef = (0, import_react.useRef)(null);
|
|
246
251
|
const { themeMode } = (0, import_react_ui.useThemeContext)();
|
|
247
|
-
const textboxMetadata = getMessageMetadata(
|
|
252
|
+
const textboxMetadata = getMessageMetadata(id, identity);
|
|
248
253
|
const messageRef = (0, import_react.useRef)("");
|
|
249
254
|
const extensions = (0, import_react.useMemo)(() => [
|
|
250
255
|
(0, import_react_ui_editor.createBasicExtensions)({
|
|
@@ -269,32 +274,35 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
269
274
|
scrollToEnd("instant");
|
|
270
275
|
}, []);
|
|
271
276
|
const handleCreate = () => {
|
|
272
|
-
if (!messageRef.current?.length) {
|
|
277
|
+
if (!messageRef.current?.length || !queue) {
|
|
273
278
|
return false;
|
|
274
279
|
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
280
|
+
queue.append([
|
|
281
|
+
(0, import_echo_schema.createStatic)(import_schema.MessageType, {
|
|
282
|
+
sender: {
|
|
283
|
+
identityKey: identity.identityKey.toHex()
|
|
284
|
+
},
|
|
285
|
+
created: (/* @__PURE__ */ new Date()).toISOString(),
|
|
286
|
+
blocks: [
|
|
287
|
+
{
|
|
288
|
+
type: "text",
|
|
289
|
+
text: messageRef.current
|
|
290
|
+
}
|
|
291
|
+
],
|
|
292
|
+
properties: context ? {
|
|
293
|
+
context: (0, import_live_object.makeRef)(context)
|
|
294
|
+
} : void 0
|
|
295
|
+
})
|
|
296
|
+
]);
|
|
283
297
|
messageRef.current = "";
|
|
284
298
|
setAutoFocus(true);
|
|
285
299
|
scrollToEnd("smooth");
|
|
286
300
|
rerenderEditor();
|
|
287
301
|
return true;
|
|
288
302
|
};
|
|
289
|
-
const handleDelete = (id) => {
|
|
290
|
-
const messageIndex = thread.messages.findIndex(import_echo_schema.Ref.hasObjectId(id));
|
|
291
|
-
if (messageIndex !== -1) {
|
|
292
|
-
thread.messages.splice(messageIndex, 1);
|
|
293
|
-
}
|
|
294
|
-
};
|
|
295
303
|
return /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.Thread, {
|
|
296
304
|
current,
|
|
297
|
-
id
|
|
305
|
+
id,
|
|
298
306
|
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"
|
|
299
307
|
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Root, {
|
|
300
308
|
classNames: "col-span-2"
|
|
@@ -303,11 +311,10 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
303
311
|
}, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
304
312
|
role: "none",
|
|
305
313
|
className: (0, import_react_ui_theme.mx)(import_react_ui_thread.threadLayout, "place-self-end")
|
|
306
|
-
},
|
|
314
|
+
}, (queue?.items ?? []).map((message) => /* @__PURE__ */ import_react.default.createElement(MessageContainer, {
|
|
307
315
|
key: message.id,
|
|
308
316
|
message,
|
|
309
|
-
members
|
|
310
|
-
onDelete: handleDelete
|
|
317
|
+
members
|
|
311
318
|
}))), /* @__PURE__ */ import_react.default.createElement("div", {
|
|
312
319
|
role: "none",
|
|
313
320
|
className: "bs-px -mbs-px",
|
|
@@ -328,4 +335,4 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
328
335
|
command,
|
|
329
336
|
getMessageMetadata
|
|
330
337
|
});
|
|
331
|
-
//# sourceMappingURL=chunk-
|
|
338
|
+
//# sourceMappingURL=chunk-DGV5ABT6.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 { createStatic } from '@dxos/echo-schema';\nimport { type DXN } from '@dxos/keys';\nimport { makeRef } from '@dxos/live-object';\nimport { type Space, useMembers, useQueue } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, threadLayout } from '@dxos/react-ui-thread';\nimport { MessageType } from '@dxos/schema';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { type ThreadContainerProps } from './types';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nexport const ChatHeading = ({ attendableId }: { attendableId?: string }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n return (\n <div role='none' className='flex items-center'>\n <StackItem.SigilButton attendableId={attendableId}>\n <Icon icon='ph--chat--regular' size={5} />\n </StackItem.SigilButton>\n <StackItem.HeadingLabel attendableId={attendableId}>{t('chat heading')}</StackItem.HeadingLabel>\n </div>\n );\n};\n\nexport type ChatContainerProps = Omit<ThreadContainerProps, 'thread'> & {\n space: Space;\n dxn: DXN;\n};\n\nexport const ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }: ChatContainerProps) => {\n const id = dxn.toString();\n const identity = useIdentity()!;\n const members = useMembers(space?.key);\n const queue = useQueue<MessageType>(dxn, { pollInterval: 1_000 });\n const activity = useStatus(space, id);\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const [autoFocus, setAutoFocus] = useState(autoFocusTextbox);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(id, identity);\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: (text) => (messageRef.current = text) }),\n command,\n ],\n [themeMode, _count],\n );\n\n // TODO(thure): Factor out.\n // TODO(thure): `flex-col-reverse` does not work to start the container scrolled to the end while also using\n // `ScrollArea`. This is the least-bad way I found to scroll to the end on mount. Note that 0ms was insufficient\n // for the desired effect; this is likely hardware-dependent and should be reevaluated.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n useLayoutEffect(() => {\n scrollToEnd('instant');\n }, []);\n\n // TODO(burdon): Change to model.\n const handleCreate: MessageTextboxProps['onSend'] = () => {\n if (!messageRef.current?.length || !queue) {\n return false;\n }\n\n queue.append([\n createStatic(MessageType, {\n sender: { identityKey: identity.identityKey.toHex() },\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text: messageRef.current }],\n properties: context ? { context: makeRef(context) } : undefined,\n }),\n ]);\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n return (\n <Thread\n current={current}\n id={id}\n classNames='bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0'\n >\n <ScrollArea.Root classNames='col-span-2'>\n <ScrollArea.Viewport classNames='overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]'>\n <div role='none' className={mx(threadLayout, 'place-self-end')}>\n {(queue?.items ?? []).map((message) => (\n <MessageContainer key={message.id} message={message} members={members} />\n ))}\n </div>\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n <ScrollArea.Scrollbar>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n </Thread>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport { Check, PencilSimple, X } from '@phosphor-icons/react';\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { RefArray } from '@dxos/live-object';\nimport { PublicKey } from '@dxos/react-client';\nimport { type ReactiveEchoObject, type Expando, type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\nimport { type TextContentBlock, type MessageType } from '@dxos/schema';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\n// TODO(thure): #8149\nconst messageControlClassNames = ['!p-1 !min-bs-0 transition-opacity', hoverableControlItem];\n\nexport const MessageContainer = ({\n message,\n members,\n editable = false,\n onDelete,\n}: {\n message: MessageType;\n members: SpaceMember[];\n editable?: boolean;\n onDelete?: (id: string) => void;\n}) => {\n const senderIdentity = members.find(\n (member) => message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey),\n )?.identity;\n const messageMetadata = getMessageMetadata(message.id, senderIdentity);\n const userIsAuthor = useIdentity()?.identityKey.toHex() === messageMetadata.authorId;\n const [editing, setEditing] = useState(false);\n const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);\n const { t } = useTranslation(THREAD_PLUGIN);\n const editLabel = t(editing ? 'save message label' : 'edit message label');\n const deleteLabel = t('delete message label');\n const textBlock = message.blocks.find((block) => block.type === 'text');\n const references = message.blocks.filter((block) => block.type === 'reference').map((block) => block.reference);\n\n useOnEditAnalytics(message, textBlock, !!editing);\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && editable && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}\n classNames={messageControlClassNames}\n onClick={() => setEditing((editing) => !editing)}\n >\n <span className='sr-only'>{editLabel}</span>\n {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n {editLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n {onDelete && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={() => handleDelete()}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n {deleteLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </ButtonGroup>\n </MessageHeading>\n {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}\n {RefArray.targets(references).map((reference, index) => (\n <MessagePart key={index} part={reference} />\n ))}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Expando }) => {\n return <MessageBlockObjectTile subject={part} />;\n};\n\nconst TextboxBlock = ({\n block,\n isAuthor,\n editing,\n}: {\n block: TextContentBlock;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(block.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n block.text = inMemoryContentRef.current;\n }, [block]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: block.text,\n extensions: [\n createBasicExtensions({ readonly: !isAuthor || !editing }),\n createThemeExtensions({ themeMode }),\n command,\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n handleDocumentChange(update.state.doc.toString());\n }\n }),\n ],\n }),\n [block.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: ReactiveEchoObject<any> }>(\n ({ subject }, forwardedRef) => {\n let title = subject.name ?? subject.title ?? subject.type ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n ref={forwardedRef}\n >\n <Surface role='card' limit={1} data={{ subject }} fallback={title} />\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n { tag: tags.tagName, class: mx('dx-tag dx-tag--indigo text-baseText font-medium') },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { generateName } from '@dxos/display-name';\nimport { type PublicKey } from '@dxos/react-client';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type MessageMetadata } from '@dxos/react-ui-thread';\nimport { hexToFallback } from '@dxos/util';\n\nexport type MessagePropertiesProvider = (identityKey: PublicKey | undefined) => MessageMetadata;\n\nexport const getMessageMetadata = (id: string, identity?: Identity): MessageMetadata => {\n const fallback = hexToFallback(identity?.identityKey.toHex() ?? '0');\n return {\n id,\n authorId: identity?.identityKey.toHex(),\n authorName:\n identity?.profile?.displayName ??\n (identity?.identityKey ? generateName(identity.identityKey.toHex()) : undefined),\n authorAvatarProps: {\n hue: identity?.profile?.data?.hue ?? fallback.hue,\n emoji: identity?.profile?.data?.emoji ?? fallback.emoji,\n },\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["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", "editable", "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", "space", "dxn", "context", "autoFocusTextbox", "useMembers", "queue", "useQueue", "pollInterval", "activity", "useStatus", "_count", "_setCount", "rerenderEditor", "autoFocus", "setAutoFocus", "threadScrollRef", "textboxMetadata", "messageRef", "useMemo", "placeholder", "listener", "onChange", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "useLayoutEffect", "handleCreate", "length", "append", "createStatic", "MessageType", "created", "Date", "toISOString", "properties", "makeRef", "Thread", "ScrollArea", "Viewport", "threadLayout", "items", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,20 +17,33 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
29
|
+
var chunk_JBOC6MIE_exports = {};
|
|
30
|
+
__export(chunk_JBOC6MIE_exports, {
|
|
31
|
+
IntentResolver: () => IntentResolver,
|
|
32
|
+
Markdown: () => Markdown,
|
|
33
|
+
ReactSurface: () => ReactSurface,
|
|
34
|
+
ThreadState: () => ThreadState,
|
|
21
35
|
useAnalyticsCallback: () => useAnalyticsCallback,
|
|
22
36
|
useOnEditAnalytics: () => useOnEditAnalytics,
|
|
23
37
|
useStatus: () => useStatus
|
|
24
38
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
39
|
+
module.exports = __toCommonJS(chunk_JBOC6MIE_exports);
|
|
26
40
|
var import_react = require("react");
|
|
27
41
|
var import_react2 = require("react");
|
|
28
42
|
var import_app_framework = require("@dxos/app-framework");
|
|
29
43
|
var import_types = require("@dxos/plugin-observability/types");
|
|
30
44
|
var import_echo = require("@dxos/react-client/echo");
|
|
31
45
|
var import_react_ui = require("@dxos/react-ui");
|
|
46
|
+
var import_app_framework2 = require("@dxos/app-framework");
|
|
32
47
|
var useStatus = (space, channel) => {
|
|
33
48
|
const [processing, setProcessing] = (0, import_react.useState)(false);
|
|
34
49
|
(0, import_react.useEffect)(() => {
|
|
@@ -76,18 +91,27 @@ var useAnalyticsCallback = (spaceId, name, meta) => {
|
|
|
76
91
|
spaceId
|
|
77
92
|
]);
|
|
78
93
|
};
|
|
79
|
-
var useOnEditAnalytics = (message, editing) => {
|
|
94
|
+
var useOnEditAnalytics = (message, textBlock, editing) => {
|
|
80
95
|
const space = (0, import_echo.getSpace)(message);
|
|
81
96
|
const onEditAnalytics = useAnalyticsCallback(space?.id, "threads.comment-edited", {
|
|
82
97
|
messageId: message.id,
|
|
83
|
-
messageLength:
|
|
98
|
+
messageLength: textBlock?.text.length
|
|
84
99
|
});
|
|
85
100
|
(0, import_react_ui.useOnTransition)(editing, true, false, onEditAnalytics);
|
|
86
101
|
};
|
|
102
|
+
var IntentResolver = (0, import_app_framework2.lazy)(() => import("./intent-resolver-NBME5QSW.cjs"));
|
|
103
|
+
var Markdown = (0, import_app_framework2.lazy)(() => import("./markdown-QBQTARMD.cjs"));
|
|
104
|
+
var ReactSurface = (0, import_app_framework2.lazy)(() => import("./react-surface-ICWYXRJU.cjs"));
|
|
105
|
+
var ThreadSettings = (0, import_app_framework2.lazy)(() => import("./settings-XOLYNUHH.cjs"));
|
|
106
|
+
var ThreadState = (0, import_app_framework2.lazy)(() => import("./state-JMI5ZXZI.cjs"));
|
|
87
107
|
// Annotate the CommonJS export names for ESM import in node:
|
|
88
108
|
0 && (module.exports = {
|
|
109
|
+
IntentResolver,
|
|
110
|
+
Markdown,
|
|
111
|
+
ReactSurface,
|
|
112
|
+
ThreadState,
|
|
89
113
|
useAnalyticsCallback,
|
|
90
114
|
useOnEditAnalytics,
|
|
91
115
|
useStatus
|
|
92
116
|
});
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
117
|
+
//# sourceMappingURL=chunk-JBOC6MIE.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/useStatus.ts", "../../../src/hooks/analytics.ts", "../../../src/capabilities/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { type TextContentBlock } from '@dxos/schema';\n\nexport const useAnalyticsCallback = (spaceId: string | undefined, name: string, meta?: any) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n return useCallback(\n (dynamicMeta?: any) => {\n void dispatch(\n createIntent(ObservabilityAction.SendEvent, { name, properties: { ...meta, ...dynamicMeta, spaceId } }),\n );\n },\n [dispatch, name, meta, spaceId],\n );\n};\n\nexport const useOnEditAnalytics = (\n message: ReactiveObject<any>,\n textBlock: TextContentBlock | undefined,\n editing: boolean,\n) => {\n const space = getSpace(message);\n\n const onEditAnalytics = useAnalyticsCallback(space?.id, 'threads.comment-edited', {\n messageId: message.id,\n messageLength: textBlock?.text.length,\n });\n\n useOnTransition(editing, true, false, onEditAnalytics);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\n\nexport * from './capabilities';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAoC;ACApC,IAAAA,gBAA4B;AAE5B,2BAAkD;AAElD,mBAAoC;AACpC,kBAAyB;AACzB,sBAAgC;ACNhC,IAAAC,wBAAqB;AFKd,IAAMC,YAAY,CAACC,OAAeC,YAAAA;AACvC,QAAM,CAACC,YAAYC,aAAAA,QAAiBC,uBAAS,KAAA;AAC7CC,8BAAU,MAAA;AACR,QAAI,CAACL,SAAS,CAACC,SAAS;AACtB;IACF;AAEA,UAAMK,cAAcN,MAAMO,OAAO,UAAUN,OAAAA,IAAW,CAACO,WAAAA;AACrD,YAAM,EAAEC,MAAK,IAAKD,OAAOE,WAAW,CAAC;AACrCP,oBAAcM,UAAU,YAAA;IAC1B,CAAA;AAEA,UAAME,IAAIC,YAAY,MAAA;AACpBT,oBAAc,CAACU,SAAAA;AACb,YAAI,OAAOA,MAAMC,OAAO,YAAYC,KAAKC,IAAG,IAAKH,KAAKC,KAAK,KAAQ;AACjE,iBAAOG;QACT,OAAO;AACL,iBAAOJ;QACT;MACF,CAAA;IACF,GAAG,GAAA;AAEH,WAAO,MAAA;AACLP,kBAAAA;AACAY,oBAAcP,CAAAA;IAChB;EACF,GAAG;IAACX;IAAOC;GAAQ;AAEnB,SAAOC;AACT;ACzBO,IAAMiB,uBAAuB,CAACC,SAA6BC,MAAcC,SAAAA;AAC9E,QAAM,EAAEC,iBAAiBC,SAAQ,QAAKC,0CAAAA;AAEtC,aAAOC,2BACL,CAACC,gBAAAA;AACC,SAAKH,aACHI,mCAAaC,iCAAoBC,WAAW;MAAET;MAAMU,YAAY;QAAE,GAAGT;QAAM,GAAGK;QAAaP;MAAQ;IAAE,CAAA,CAAA;EAEzG,GACA;IAACI;IAAUH;IAAMC;IAAMF;GAAQ;AAEnC;AAEO,IAAMY,qBAAqB,CAChCC,SACAC,WACAC,YAAAA;AAEA,QAAMnC,YAAQoC,sBAASH,OAAAA;AAEvB,QAAMI,kBAAkBlB,qBAAqBnB,OAAOsC,IAAI,0BAA0B;IAChFC,WAAWN,QAAQK;IACnBE,eAAeN,WAAWO,KAAKC;EACjC,CAAA;AAEAC,uCAAgBR,SAAS,MAAM,OAAOE,eAAAA;AACxC;ACjCO,IAAMO,qBAAiBC,4BAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMC,eAAWD,4BAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAME,mBAAeF,4BAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMG,qBAAiBH,4BAAK,MAAM,OAAO,yBAAA,CAAA;AACzC,IAAMI,kBAAcJ,4BAAK,MAAM,OAAO,sBAAA,CAAA;",
|
|
6
|
+
"names": ["import_react", "import_app_framework", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useAnalyticsCallback", "spaceId", "name", "meta", "dispatchPromise", "dispatch", "useIntentDispatcher", "useCallback", "dynamicMeta", "createIntent", "ObservabilityAction", "SendEvent", "properties", "useOnEditAnalytics", "message", "textBlock", "editing", "getSpace", "onEditAnalytics", "id", "messageId", "messageLength", "text", "length", "useOnTransition", "IntentResolver", "lazy", "Markdown", "ReactSurface", "ThreadSettings", "ThreadState"]
|
|
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
|
}
|