@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,75 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ChatContainer
|
|
3
|
+
} from "./chunk-NRMJGYMA.mjs";
|
|
4
|
+
import "./chunk-SMQYULO6.mjs";
|
|
5
|
+
import {
|
|
6
|
+
ThreadCapabilities
|
|
7
|
+
} from "./chunk-NOOMCX5E.mjs";
|
|
8
|
+
import "./chunk-WBJLUUOK.mjs";
|
|
9
|
+
|
|
10
|
+
// packages/plugins/plugin-thread/src/components/ChannelContainer.tsx
|
|
11
|
+
import React, { useCallback } from "react";
|
|
12
|
+
import { Surface, useCapabilities, useCapability } from "@dxos/app-framework";
|
|
13
|
+
import { fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
|
|
14
|
+
import { createEditorActionGroup } from "@dxos/react-ui-editor";
|
|
15
|
+
import { createMenuAction, MenuProvider, ToolbarMenu, useMenuActions } from "@dxos/react-ui-menu";
|
|
16
|
+
import { StackItem } from "@dxos/react-ui-stack";
|
|
17
|
+
var useActivitiesMenu = (activities, activity) => {
|
|
18
|
+
return useMenuActions(() => ({
|
|
19
|
+
nodes: [
|
|
20
|
+
createEditorActionGroup("activities", {
|
|
21
|
+
variant: "toggleGroup",
|
|
22
|
+
selectCardinality: "single",
|
|
23
|
+
value: activity
|
|
24
|
+
}),
|
|
25
|
+
...activities.map(({ id, ...properties }) => createMenuAction(id, {
|
|
26
|
+
...properties,
|
|
27
|
+
checked: true
|
|
28
|
+
}))
|
|
29
|
+
],
|
|
30
|
+
edges: [
|
|
31
|
+
{
|
|
32
|
+
source: "root",
|
|
33
|
+
target: "activities"
|
|
34
|
+
},
|
|
35
|
+
...activities.map((activity2) => ({
|
|
36
|
+
source: "activities",
|
|
37
|
+
target: activity2.id
|
|
38
|
+
}))
|
|
39
|
+
]
|
|
40
|
+
}));
|
|
41
|
+
};
|
|
42
|
+
var ChannelContainer = ({ role, channel, context }) => {
|
|
43
|
+
const { state } = useCapability(ThreadCapabilities.MutableState);
|
|
44
|
+
const currentActivity = state.activities[channel.id];
|
|
45
|
+
const activities = useCapabilities(ThreadCapabilities.Activity);
|
|
46
|
+
const menu = useActivitiesMenu(activities, currentActivity);
|
|
47
|
+
const handleAction = useCallback((action) => state.activities[channel.id] = currentActivity === action.id ? void 0 : action.id, [
|
|
48
|
+
currentActivity
|
|
49
|
+
]);
|
|
50
|
+
const space = getSpace(channel);
|
|
51
|
+
if (!space) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
return /* @__PURE__ */ React.createElement(StackItem.Content, {
|
|
55
|
+
toolbar: true
|
|
56
|
+
}, /* @__PURE__ */ React.createElement(MenuProvider, {
|
|
57
|
+
...menu,
|
|
58
|
+
onAction: handleAction,
|
|
59
|
+
attendableId: fullyQualifiedId(channel)
|
|
60
|
+
}, /* @__PURE__ */ React.createElement(ToolbarMenu, null)), currentActivity ? /* @__PURE__ */ React.createElement(Surface, {
|
|
61
|
+
role: `channel-activity--${currentActivity}`,
|
|
62
|
+
data: {
|
|
63
|
+
subject: channel
|
|
64
|
+
}
|
|
65
|
+
}) : /* @__PURE__ */ React.createElement(ChatContainer, {
|
|
66
|
+
space,
|
|
67
|
+
dxn: channel.queue.dxn,
|
|
68
|
+
context
|
|
69
|
+
}));
|
|
70
|
+
};
|
|
71
|
+
var ChannelContainer_default = ChannelContainer;
|
|
72
|
+
export {
|
|
73
|
+
ChannelContainer_default as default
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=ChannelContainer-ITIG7L7P.mjs.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,OAAOA,SAASC,mBAAwC;AAExD,SAASC,SAASC,iBAAiBC,qBAAqB;AAGxD,SAASC,kBAAkBC,gBAAgB;AAC3C,SAASC,+BAA+B;AACxC,SACEC,kBACAC,cACAC,aAEAC,sBAEK;AACP,SAASC,iBAAiB;AAK1B,IAAMC,oBAAoB,CAACC,YAA2CC,aAAAA;AACpE,SAAOC,eAAe,OAAO;IAC3BC,OAAO;MACLC,wBAAwB,cAAc;QACpCC,SAAS;QACTC,mBAAmB;QACnBC,OAAON;MACT,CAAA;SACGD,WAAWQ,IAAI,CAAC,EAAEC,IAAI,GAAGC,WAAAA,MAC1BC,iBAAiBF,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,IAAKC,cAAcC,mBAAmBC,YAAY;AAC/D,QAAMC,kBAAkBJ,MAAMpB,WAAWkB,QAAQT,EAAE;AACnD,QAAMT,aAAayB,gBAAgBH,mBAAmBI,QAAQ;AAC9D,QAAMC,OAAO5B,kBAAkBC,YAAYwB,eAAAA;AAC3C,QAAMI,eAAeC,YACnB,CAACC,WAAwBV,MAAMpB,WAAWkB,QAAQT,EAAE,IAAIe,oBAAoBM,OAAOrB,KAAKsB,SAAYD,OAAOrB,IAC3G;IAACe;GAAgB;AAGnB,QAAMQ,QAAQC,SAASf,OAAAA;AACvB,MAAI,CAACc,OAAO;AACV,WAAO;EACT;AAEA,SACE,sBAAA,cAACE,UAAUC,SAAO;IAACC,SAAAA;KACjB,sBAAA,cAACC,cAAAA;IAAc,GAAGV;IAAMW,UAAUV;IAAcW,cAAcC,iBAAiBtB,OAAAA;KAC7E,sBAAA,cAACuB,aAAAA,IAAAA,CAAAA,GAEFjB,kBACC,sBAAA,cAACkB,SAAAA;IAAQzB,MAAM,qBAAqBO,eAAAA;IAAmBmB,MAAM;MAAEC,SAAS1B;IAAQ;OAEhF,sBAAA,cAAC2B,eAAAA;IAAcb;IAAcc,KAAK5B,QAAQ6B,MAAMD;IAAK3B;;AAI7D;AAEA,IAAA,2BAAeH;",
|
|
6
|
+
"names": ["React", "useCallback", "Surface", "useCapabilities", "useCapability", "fullyQualifiedId", "getSpace", "createEditorActionGroup", "createMenuAction", "MenuProvider", "ToolbarMenu", "useMenuActions", "StackItem", "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", "StackItem", "Content", "toolbar", "MenuProvider", "onAction", "attendableId", "fullyQualifiedId", "ToolbarMenu", "Surface", "data", "subject", "ChatContainer", "dxn", "queue"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
THREAD_PLUGIN
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WBJLUUOK.mjs";
|
|
4
4
|
|
|
5
5
|
// packages/plugins/plugin-thread/src/capabilities/capabilities.ts
|
|
6
6
|
import { defineCapability } from "@dxos/app-framework";
|
|
@@ -8,9 +8,10 @@ var ThreadCapabilities;
|
|
|
8
8
|
(function(ThreadCapabilities2) {
|
|
9
9
|
ThreadCapabilities2.State = defineCapability(`${THREAD_PLUGIN}/capability/state`);
|
|
10
10
|
ThreadCapabilities2.MutableState = defineCapability(`${THREAD_PLUGIN}/capability/state`);
|
|
11
|
+
ThreadCapabilities2.Activity = defineCapability(`${THREAD_PLUGIN}/capability/activity`);
|
|
11
12
|
})(ThreadCapabilities || (ThreadCapabilities = {}));
|
|
12
13
|
|
|
13
14
|
export {
|
|
14
15
|
ThreadCapabilities
|
|
15
16
|
};
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-NOOMCX5E.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/capabilities.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\nimport { type MenuActionProperties } from '@dxos/react-ui-menu';\nimport { type DeepReadonly } from '@dxos/util';\n\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ViewState, type ThreadState } from '../types';\n\nexport namespace ThreadCapabilities {\n type GetViewState = (subjectId: string) => ViewState;\n export const State = defineCapability<{ state: DeepReadonly<ThreadState>; getViewState: GetViewState }>(\n `${THREAD_PLUGIN}/capability/state`,\n );\n export const MutableState = defineCapability<{ state: ThreadState; getViewState: GetViewState }>(\n `${THREAD_PLUGIN}/capability/state`,\n );\n\n export type Activity = Omit<MenuActionProperties, 'variant' | 'checked'> & {\n id: string;\n };\n export const Activity = defineCapability<Activity>(`${THREAD_PLUGIN}/capability/activity`);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;AAIA,SAASA,wBAAwB;;UAOhBC,qBAAAA;sBAEFC,QAAQC,iBACnB,GAAGC,aAAAA,mBAAgC;sBAExBC,eAAeF,iBAC1B,GAAGC,aAAAA,mBAAgC;sBAMxBE,WAAWH,iBAA2B,GAAGC,aAAAA,sBAAmC;AAC3F,GAbiBH,uBAAAA,qBAAAA,CAAAA,EAAAA;",
|
|
6
|
+
"names": ["defineCapability", "ThreadCapabilities", "State", "defineCapability", "THREAD_PLUGIN", "MutableState", "Activity"]
|
|
7
|
+
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useOnEditAnalytics,
|
|
3
3
|
useStatus
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-SMQYULO6.mjs";
|
|
5
5
|
import {
|
|
6
6
|
THREAD_PLUGIN
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WBJLUUOK.mjs";
|
|
8
8
|
|
|
9
9
|
// packages/plugins/plugin-thread/src/components/ChatContainer.tsx
|
|
10
10
|
import React2, { useLayoutEffect, useMemo, useRef as useRef2, useState as useState2 } from "react";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { fullyQualifiedId, getSpace, useMembers } from "@dxos/react-client/echo";
|
|
11
|
+
import { createStatic } from "@dxos/echo-schema";
|
|
12
|
+
import { makeRef } from "@dxos/live-object";
|
|
13
|
+
import { useMembers, useQueue } from "@dxos/react-client/echo";
|
|
15
14
|
import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
|
|
16
15
|
import { Icon, ScrollArea, useThemeContext as useThemeContext2, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
17
16
|
import { createBasicExtensions as createBasicExtensions2, createThemeExtensions as createThemeExtensions2, listener } from "@dxos/react-ui-editor";
|
|
18
17
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
19
18
|
import { mx as mx3 } from "@dxos/react-ui-theme";
|
|
20
19
|
import { MessageTextbox, Thread, ThreadFooter, threadLayout } from "@dxos/react-ui-thread";
|
|
20
|
+
import { MessageType } from "@dxos/schema";
|
|
21
21
|
|
|
22
22
|
// packages/plugins/plugin-thread/src/components/MessageContainer.tsx
|
|
23
23
|
import { EditorView } from "@codemirror/view";
|
|
@@ -84,7 +84,7 @@ var messageControlClassNames = [
|
|
|
84
84
|
"!p-1 !min-bs-0 transition-opacity",
|
|
85
85
|
hoverableControlItem
|
|
86
86
|
];
|
|
87
|
-
var MessageContainer = ({ message, members, onDelete }) => {
|
|
87
|
+
var MessageContainer = ({ message, members, editable = false, onDelete }) => {
|
|
88
88
|
const senderIdentity = members.find((member) => message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey))?.identity;
|
|
89
89
|
const messageMetadata = getMessageMetadata(message.id, senderIdentity);
|
|
90
90
|
const userIsAuthor = useIdentity()?.identityKey.toHex() === messageMetadata.authorId;
|
|
@@ -96,6 +96,9 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
96
96
|
const { t } = useTranslation(THREAD_PLUGIN);
|
|
97
97
|
const editLabel = t(editing ? "save message label" : "edit message label");
|
|
98
98
|
const deleteLabel = t("delete message label");
|
|
99
|
+
const textBlock = message.blocks.find((block) => block.type === "text");
|
|
100
|
+
const references = message.blocks.filter((block) => block.type === "reference").map((block) => block.reference);
|
|
101
|
+
useOnEditAnalytics(message, textBlock, !!editing);
|
|
99
102
|
return /* @__PURE__ */ React.createElement(MessageRoot, {
|
|
100
103
|
...messageMetadata,
|
|
101
104
|
classNames: [
|
|
@@ -107,7 +110,7 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
107
110
|
timestamp: messageMetadata.timestamp
|
|
108
111
|
}, /* @__PURE__ */ React.createElement(ButtonGroup, {
|
|
109
112
|
classNames: "mie-1"
|
|
110
|
-
}, userIsAuthor && /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
|
|
113
|
+
}, userIsAuthor && editable && /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
|
|
111
114
|
asChild: true
|
|
112
115
|
}, /* @__PURE__ */ React.createElement(Button, {
|
|
113
116
|
variant: "ghost",
|
|
@@ -131,13 +134,13 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
131
134
|
className: "sr-only"
|
|
132
135
|
}, deleteLabel), /* @__PURE__ */ React.createElement(X, {
|
|
133
136
|
className: getSize(4)
|
|
134
|
-
}))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, null, deleteLabel, /* @__PURE__ */ React.createElement(Tooltip.Arrow, null)))))), /* @__PURE__ */ React.createElement(TextboxBlock, {
|
|
135
|
-
|
|
137
|
+
}))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, null, deleteLabel, /* @__PURE__ */ React.createElement(Tooltip.Arrow, null)))))), textBlock && /* @__PURE__ */ React.createElement(TextboxBlock, {
|
|
138
|
+
block: textBlock,
|
|
136
139
|
isAuthor: userIsAuthor,
|
|
137
140
|
editing
|
|
138
|
-
}), RefArray.
|
|
141
|
+
}), RefArray.targets(references).map((reference, index) => /* @__PURE__ */ React.createElement(MessagePart, {
|
|
139
142
|
key: index,
|
|
140
|
-
part
|
|
143
|
+
part: reference
|
|
141
144
|
})));
|
|
142
145
|
};
|
|
143
146
|
var MessagePart = ({ part }) => {
|
|
@@ -145,20 +148,20 @@ var MessagePart = ({ part }) => {
|
|
|
145
148
|
subject: part
|
|
146
149
|
});
|
|
147
150
|
};
|
|
148
|
-
var TextboxBlock = ({
|
|
151
|
+
var TextboxBlock = ({ block, isAuthor, editing }) => {
|
|
149
152
|
const { themeMode } = useThemeContext();
|
|
150
|
-
const inMemoryContentRef = useRef(
|
|
153
|
+
const inMemoryContentRef = useRef(block.text);
|
|
151
154
|
const handleDocumentChange = useCallback((newState) => {
|
|
152
155
|
inMemoryContentRef.current = newState;
|
|
153
156
|
}, []);
|
|
154
157
|
const saveDocumentChange = useCallback(() => {
|
|
155
|
-
|
|
158
|
+
block.text = inMemoryContentRef.current;
|
|
156
159
|
}, [
|
|
157
|
-
|
|
160
|
+
block
|
|
158
161
|
]);
|
|
159
162
|
useOnTransition(editing, true, false, saveDocumentChange);
|
|
160
163
|
const { parentRef, focusAttributes, view } = useTextEditor(() => ({
|
|
161
|
-
initialValue:
|
|
164
|
+
initialValue: block.text,
|
|
162
165
|
extensions: [
|
|
163
166
|
createBasicExtensions({
|
|
164
167
|
readonly: !isAuthor || !editing
|
|
@@ -174,7 +177,7 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
174
177
|
})
|
|
175
178
|
]
|
|
176
179
|
}), [
|
|
177
|
-
|
|
180
|
+
block.text,
|
|
178
181
|
editing,
|
|
179
182
|
isAuthor,
|
|
180
183
|
themeMode,
|
|
@@ -186,7 +189,6 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
186
189
|
editing,
|
|
187
190
|
view
|
|
188
191
|
]);
|
|
189
|
-
useOnEditAnalytics(message, !!editing);
|
|
190
192
|
return /* @__PURE__ */ React.createElement("div", {
|
|
191
193
|
role: "none",
|
|
192
194
|
ref: parentRef,
|
|
@@ -214,18 +216,21 @@ var MessageBlockObjectTile = /* @__PURE__ */ forwardRef(({ subject }, forwardedR
|
|
|
214
216
|
});
|
|
215
217
|
|
|
216
218
|
// packages/plugins/plugin-thread/src/components/ChatContainer.tsx
|
|
217
|
-
var ChatContainer = ({
|
|
219
|
+
var ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }) => {
|
|
220
|
+
const id = dxn.toString();
|
|
218
221
|
const identity = useIdentity2();
|
|
219
|
-
const space = getSpace(thread);
|
|
220
222
|
const members = useMembers(space?.key);
|
|
221
|
-
const
|
|
223
|
+
const queue = useQueue(dxn, {
|
|
224
|
+
pollInterval: 1e3
|
|
225
|
+
});
|
|
226
|
+
const activity = useStatus(space, id);
|
|
222
227
|
const { t } = useTranslation2(THREAD_PLUGIN);
|
|
223
228
|
const [_count, _setCount] = useState2(0);
|
|
224
229
|
const rerenderEditor = () => _setCount((count) => count + 1);
|
|
225
230
|
const [autoFocus, setAutoFocus] = useState2(autoFocusTextbox);
|
|
226
231
|
const threadScrollRef = useRef2(null);
|
|
227
232
|
const { themeMode } = useThemeContext2();
|
|
228
|
-
const textboxMetadata = getMessageMetadata(
|
|
233
|
+
const textboxMetadata = getMessageMetadata(id, identity);
|
|
229
234
|
const messageRef = useRef2("");
|
|
230
235
|
const extensions = useMemo(() => [
|
|
231
236
|
createBasicExtensions2({
|
|
@@ -250,32 +255,35 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
250
255
|
scrollToEnd("instant");
|
|
251
256
|
}, []);
|
|
252
257
|
const handleCreate = () => {
|
|
253
|
-
if (!messageRef.current?.length) {
|
|
258
|
+
if (!messageRef.current?.length || !queue) {
|
|
254
259
|
return false;
|
|
255
260
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
queue.append([
|
|
262
|
+
createStatic(MessageType, {
|
|
263
|
+
sender: {
|
|
264
|
+
identityKey: identity.identityKey.toHex()
|
|
265
|
+
},
|
|
266
|
+
created: (/* @__PURE__ */ new Date()).toISOString(),
|
|
267
|
+
blocks: [
|
|
268
|
+
{
|
|
269
|
+
type: "text",
|
|
270
|
+
text: messageRef.current
|
|
271
|
+
}
|
|
272
|
+
],
|
|
273
|
+
properties: context ? {
|
|
274
|
+
context: makeRef(context)
|
|
275
|
+
} : void 0
|
|
276
|
+
})
|
|
277
|
+
]);
|
|
264
278
|
messageRef.current = "";
|
|
265
279
|
setAutoFocus(true);
|
|
266
280
|
scrollToEnd("smooth");
|
|
267
281
|
rerenderEditor();
|
|
268
282
|
return true;
|
|
269
283
|
};
|
|
270
|
-
const handleDelete = (id) => {
|
|
271
|
-
const messageIndex = thread.messages.findIndex(Ref.hasObjectId(id));
|
|
272
|
-
if (messageIndex !== -1) {
|
|
273
|
-
thread.messages.splice(messageIndex, 1);
|
|
274
|
-
}
|
|
275
|
-
};
|
|
276
284
|
return /* @__PURE__ */ React2.createElement(Thread, {
|
|
277
285
|
current,
|
|
278
|
-
id
|
|
286
|
+
id,
|
|
279
287
|
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"
|
|
280
288
|
}, /* @__PURE__ */ React2.createElement(ScrollArea.Root, {
|
|
281
289
|
classNames: "col-span-2"
|
|
@@ -284,11 +292,10 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
284
292
|
}, /* @__PURE__ */ React2.createElement("div", {
|
|
285
293
|
role: "none",
|
|
286
294
|
className: mx3(threadLayout, "place-self-end")
|
|
287
|
-
},
|
|
295
|
+
}, (queue?.items ?? []).map((message) => /* @__PURE__ */ React2.createElement(MessageContainer, {
|
|
288
296
|
key: message.id,
|
|
289
297
|
message,
|
|
290
|
-
members
|
|
291
|
-
onDelete: handleDelete
|
|
298
|
+
members
|
|
292
299
|
}))), /* @__PURE__ */ React2.createElement("div", {
|
|
293
300
|
role: "none",
|
|
294
301
|
className: "bs-px -mbs-px",
|
|
@@ -309,4 +316,4 @@ export {
|
|
|
309
316
|
MessageContainer,
|
|
310
317
|
ChatContainer
|
|
311
318
|
};
|
|
312
|
-
//# sourceMappingURL=chunk-
|
|
319
|
+
//# sourceMappingURL=chunk-NRMJGYMA.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ChatContainer.tsx", "../../../src/components/MessageContainer.tsx", "../../../src/components/command-extension.ts", "../../../src/util.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { createStatic } from '@dxos/echo-schema';\nimport { type DXN } from '@dxos/keys';\nimport { makeRef } from '@dxos/live-object';\nimport { type Space, useMembers, useQueue } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, threadLayout } from '@dxos/react-ui-thread';\nimport { MessageType } from '@dxos/schema';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { type ThreadContainerProps } from './types';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nexport const ChatHeading = ({ attendableId }: { attendableId?: string }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n return (\n <div role='none' className='flex items-center'>\n <StackItem.SigilButton attendableId={attendableId}>\n <Icon icon='ph--chat--regular' size={5} />\n </StackItem.SigilButton>\n <StackItem.HeadingLabel attendableId={attendableId}>{t('chat heading')}</StackItem.HeadingLabel>\n </div>\n );\n};\n\nexport type ChatContainerProps = Omit<ThreadContainerProps, 'thread'> & {\n space: Space;\n dxn: DXN;\n};\n\nexport const ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }: ChatContainerProps) => {\n const id = dxn.toString();\n const identity = useIdentity()!;\n const members = useMembers(space?.key);\n const queue = useQueue<MessageType>(dxn, { pollInterval: 1_000 });\n const activity = useStatus(space, id);\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const [autoFocus, setAutoFocus] = useState(autoFocusTextbox);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(id, identity);\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: (text) => (messageRef.current = text) }),\n command,\n ],\n [themeMode, _count],\n );\n\n // TODO(thure): Factor out.\n // TODO(thure): `flex-col-reverse` does not work to start the container scrolled to the end while also using\n // `ScrollArea`. This is the least-bad way I found to scroll to the end on mount. Note that 0ms was insufficient\n // for the desired effect; this is likely hardware-dependent and should be reevaluated.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n useLayoutEffect(() => {\n scrollToEnd('instant');\n }, []);\n\n // TODO(burdon): Change to model.\n const handleCreate: MessageTextboxProps['onSend'] = () => {\n if (!messageRef.current?.length || !queue) {\n return false;\n }\n\n queue.append([\n createStatic(MessageType, {\n sender: { identityKey: identity.identityKey.toHex() },\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text: messageRef.current }],\n properties: context ? { context: makeRef(context) } : undefined,\n }),\n ]);\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n return (\n <Thread\n current={current}\n id={id}\n classNames='bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0'\n >\n <ScrollArea.Root classNames='col-span-2'>\n <ScrollArea.Viewport classNames='overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]'>\n <div role='none' className={mx(threadLayout, 'place-self-end')}>\n {(queue?.items ?? []).map((message) => (\n <MessageContainer key={message.id} message={message} members={members} />\n ))}\n </div>\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n <ScrollArea.Scrollbar>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n </Thread>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport { Check, PencilSimple, X } from '@phosphor-icons/react';\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { RefArray } from '@dxos/live-object';\nimport { PublicKey } from '@dxos/react-client';\nimport { type ReactiveEchoObject, type Expando, type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\nimport { type TextContentBlock, type MessageType } from '@dxos/schema';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\n// TODO(thure): #8149\nconst messageControlClassNames = ['!p-1 !min-bs-0 transition-opacity', hoverableControlItem];\n\nexport const MessageContainer = ({\n message,\n members,\n editable = false,\n onDelete,\n}: {\n message: MessageType;\n members: SpaceMember[];\n editable?: boolean;\n onDelete?: (id: string) => void;\n}) => {\n const senderIdentity = members.find(\n (member) => message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey),\n )?.identity;\n const messageMetadata = getMessageMetadata(message.id, senderIdentity);\n const userIsAuthor = useIdentity()?.identityKey.toHex() === messageMetadata.authorId;\n const [editing, setEditing] = useState(false);\n const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);\n const { t } = useTranslation(THREAD_PLUGIN);\n const editLabel = t(editing ? 'save message label' : 'edit message label');\n const deleteLabel = t('delete message label');\n const textBlock = message.blocks.find((block) => block.type === 'text');\n const references = message.blocks.filter((block) => block.type === 'reference').map((block) => block.reference);\n\n useOnEditAnalytics(message, textBlock, !!editing);\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && editable && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}\n classNames={messageControlClassNames}\n onClick={() => setEditing((editing) => !editing)}\n >\n <span className='sr-only'>{editLabel}</span>\n {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n {editLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n {onDelete && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={() => handleDelete()}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n {deleteLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </ButtonGroup>\n </MessageHeading>\n {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}\n {RefArray.targets(references).map((reference, index) => (\n <MessagePart key={index} part={reference} />\n ))}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Expando }) => {\n return <MessageBlockObjectTile subject={part} />;\n};\n\nconst TextboxBlock = ({\n block,\n isAuthor,\n editing,\n}: {\n block: TextContentBlock;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(block.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n block.text = inMemoryContentRef.current;\n }, [block]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: block.text,\n extensions: [\n createBasicExtensions({ readonly: !isAuthor || !editing }),\n createThemeExtensions({ themeMode }),\n command,\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n handleDocumentChange(update.state.doc.toString());\n }\n }),\n ],\n }),\n [block.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: ReactiveEchoObject<any> }>(\n ({ subject }, forwardedRef) => {\n let title = subject.name ?? subject.title ?? subject.type ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n ref={forwardedRef}\n >\n <Surface role='card' limit={1} data={{ subject }} fallback={title} />\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n { tag: tags.tagName, class: mx('dx-tag dx-tag--indigo text-baseText font-medium') },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { generateName } from '@dxos/display-name';\nimport { type PublicKey } from '@dxos/react-client';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type MessageMetadata } from '@dxos/react-ui-thread';\nimport { hexToFallback } from '@dxos/util';\n\nexport type MessagePropertiesProvider = (identityKey: PublicKey | undefined) => MessageMetadata;\n\nexport const getMessageMetadata = (id: string, identity?: Identity): MessageMetadata => {\n const fallback = hexToFallback(identity?.identityKey.toHex() ?? '0');\n return {\n id,\n authorId: identity?.identityKey.toHex(),\n authorName:\n identity?.profile?.displayName ??\n (identity?.identityKey ? generateName(identity.identityKey.toHex()) : undefined),\n authorAvatarProps: {\n hue: identity?.profile?.data?.hue ?? fallback.hue,\n emoji: identity?.profile?.data?.emoji ?? fallback.emoji,\n },\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useLayoutEffect", "useMemo", "useRef", "useState", "createStatic", "makeRef", "useMembers", "useQueue", "useIdentity", "Icon", "ScrollArea", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "listener", "StackItem", "mx", "MessageTextbox", "Thread", "ThreadFooter", "threadLayout", "MessageType", "EditorView", "Check", "PencilSimple", "X", "React", "forwardRef", "useCallback", "useEffect", "useRef", "useState", "Surface", "RefArray", "PublicKey", "useIdentity", "Button", "ButtonGroup", "Tooltip", "useOnTransition", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "useTextEditor", "getSize", "hoverableControlItem", "hoverableControls", "hoverableFocusedWithinControls", "mx", "MessageHeading", "MessageRoot", "StreamLanguage", "HighlightStyle", "syntaxHighlighting", "tags", "mx", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "command", "syntaxHighlighting", "generateName", "hexToFallback", "getMessageMetadata", "id", "identity", "fallback", "hexToFallback", "identityKey", "toHex", "authorId", "authorName", "profile", "displayName", "generateName", "undefined", "authorAvatarProps", "hue", "data", "emoji", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "message", "members", "editable", "onDelete", "senderIdentity", "find", "member", "sender", "identityKey", "PublicKey", "equals", "identity", "messageMetadata", "getMessageMetadata", "id", "userIsAuthor", "useIdentity", "toHex", "authorId", "editing", "setEditing", "useState", "handleDelete", "useCallback", "t", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "textBlock", "blocks", "block", "type", "references", "filter", "map", "reference", "useOnEditAnalytics", "MessageRoot", "classNames", "hoverableControls", "hoverableFocusedWithinControls", "MessageHeading", "authorName", "timestamp", "ButtonGroup", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "data-testid", "onClick", "span", "className", "Check", "getSize", "PencilSimple", "Portal", "Content", "Arrow", "X", "TextboxBlock", "isAuthor", "RefArray", "targets", "index", "MessagePart", "key", "part", "MessageBlockObjectTile", "subject", "themeMode", "useThemeContext", "inMemoryContentRef", "useRef", "text", "handleDocumentChange", "newState", "current", "saveDocumentChange", "useOnTransition", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "readonly", "createThemeExtensions", "command", "EditorView", "updateListener", "of", "update", "docChanged", "state", "doc", "toString", "useEffect", "focus", "div", "role", "ref", "forwardRef", "forwardedRef", "title", "name", "content", "mx", "Surface", "limit", "data", "fallback", "ChatContainer", "space", "dxn", "context", "current", "autoFocusTextbox", "id", "toString", "identity", "useIdentity", "members", "useMembers", "key", "queue", "useQueue", "pollInterval", "activity", "useStatus", "t", "useTranslation", "THREAD_PLUGIN", "_count", "_setCount", "useState", "rerenderEditor", "count", "autoFocus", "setAutoFocus", "threadScrollRef", "useRef", "themeMode", "useThemeContext", "textboxMetadata", "getMessageMetadata", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "useLayoutEffect", "handleCreate", "length", "append", "createStatic", "MessageType", "sender", "identityKey", "toHex", "created", "Date", "toISOString", "blocks", "type", "properties", "makeRef", "undefined", "React", "Thread", "classNames", "ScrollArea", "Root", "Viewport", "div", "role", "className", "mx", "threadLayout", "items", "map", "message", "MessageContainer", "ref", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
|
|
7
|
+
}
|
|
@@ -1,22 +1,35 @@
|
|
|
1
1
|
import {
|
|
2
2
|
THREAD_PLUGIN
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WBJLUUOK.mjs";
|
|
4
4
|
|
|
5
5
|
// packages/plugins/plugin-thread/src/types.ts
|
|
6
6
|
import { S } from "@dxos/echo-schema";
|
|
7
|
-
import { ChannelType,
|
|
7
|
+
import { ChannelType, ThreadType } from "@dxos/plugin-space/types";
|
|
8
8
|
import { EchoObjectSchema } from "@dxos/react-client/echo";
|
|
9
|
+
import { MessageType } from "@dxos/schema";
|
|
9
10
|
var ThreadAction;
|
|
10
11
|
(function(ThreadAction2) {
|
|
11
12
|
const THREAD_ACTION = `${THREAD_PLUGIN}/action`;
|
|
13
|
+
class CreateChannel extends S.TaggedClass()(`${THREAD_ACTION}/create-channel`, {
|
|
14
|
+
input: S.Struct({
|
|
15
|
+
// TODO(wittjosiah): Should be SpaceId.
|
|
16
|
+
spaceId: S.String,
|
|
17
|
+
name: S.optional(S.String)
|
|
18
|
+
}),
|
|
19
|
+
output: S.Struct({
|
|
20
|
+
object: ChannelType
|
|
21
|
+
})
|
|
22
|
+
}) {
|
|
23
|
+
}
|
|
24
|
+
ThreadAction2.CreateChannel = CreateChannel;
|
|
12
25
|
class Create extends S.TaggedClass()(`${THREAD_ACTION}/create`, {
|
|
13
26
|
input: S.Struct({
|
|
14
27
|
name: S.optional(S.String),
|
|
15
|
-
cursor: S.
|
|
16
|
-
subject:
|
|
28
|
+
cursor: S.String,
|
|
29
|
+
subject: EchoObjectSchema
|
|
17
30
|
}),
|
|
18
31
|
output: S.Struct({
|
|
19
|
-
object:
|
|
32
|
+
object: ThreadType
|
|
20
33
|
})
|
|
21
34
|
}) {
|
|
22
35
|
}
|
|
@@ -76,4 +89,4 @@ export {
|
|
|
76
89
|
ThreadAction,
|
|
77
90
|
ThreadSettingsSchema
|
|
78
91
|
};
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-SJPT347G.mjs.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,SAASA,SAAS;AAClB,SAASC,aAAaC,kBAAkB;AACxC,SAASC,wBAAwB;AACjC,SAASC,mBAAmB;;UAIXC,eAAAA;AACf,QAAMC,gBAAgB,GAAGC,aAAAA;EAElB,MAAMC,sBAAsBC,EAAEC,YAAW,EAAkB,GAAGJ,aAAAA,mBAAgC;IACnGK,OAAOF,EAAEG,OAAO;;MAEdC,SAASJ,EAAEK;MACXC,MAAMN,EAAEO,SAASP,EAAEK,MAAM;IAC3B,CAAA;IACAG,QAAQR,EAAEG,OAAO;MACfM,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBATSX,gBAAAA;EAWN,MAAMY,eAAeX,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdG,MAAMN,EAAEO,SAASP,EAAEK,MAAM;MACzBO,QAAQZ,EAAEK;MACVQ,SAASC;IACX,CAAA;IACAN,QAAQR,EAAEG,OAAO;MACfM,QAAQM;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBATSJ,SAAAA;EAWN,MAAMK,eAAehB,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdc,SAASjB,EAAEK;MACXa,UAAUlB,EAAEO,SAASP,EAAEmB,OAAO;IAChC,CAAA;IACAX,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBANSJ,SAAAA;EAQN,MAAMK,uBAAuBrB,EAAEC,YAAW,EAAmB,GAAGJ,aAAAA,oBAAiC;IACtGK,OAAOF,EAAEG,OAAO;MACdmB,QAAQP;IACV,CAAA;IACAP,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBALSC,iBAAAA;EAON,MAAME,eAAevB,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdmB,QAAQP;MACRF,SAASC;MACTF,QAAQZ,EAAEO,SAASP,EAAEK,MAAM;IAC7B,CAAA;IACAG,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBAPSG,SAAAA;EAUN,MAAMC,qBAAqBxB,EAAEC,YAAW,EAAiB,GAAGJ,aAAAA,mBAAgC;IACjGK,OAAOF,EAAEG,OAAO;MACdmB,QAAQP;MACRF,SAASC;IACX,CAAA;IACAN,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBANSI,eAAAA;EAQN,MAAMC,sBAAsBzB,EAAEC,YAAW,EAAkB,GAAGJ,aAAAA,mBAAgC;IACnGK,OAAOF,EAAEG,OAAO;MACdmB,QAAQP;MACRF,SAASC;MACTY,WAAW1B,EAAEK;MACbsB,SAAS3B,EAAEO,SAASqB,WAAAA;MACpBC,cAAc7B,EAAEO,SAASP,EAAE8B,MAAM;IACnC,CAAA;IACAtB,QAAQR,EAAEoB;EACZ,CAAA,EAAA;EAAI;gBATSK,gBAAAA;AAUf,GApEiB7B,iBAAAA,eAAAA,CAAAA,EAAAA;AAsEV,IAAMmC,uBAAuB/B,EAAEgC,QAAQhC,EAAEG,OAAO,CAAC,CAAA,CAAA;",
|
|
6
|
+
"names": ["S", "ChannelType", "ThreadType", "EchoObjectSchema", "MessageType", "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
|
+
}
|
|
@@ -54,18 +54,30 @@ var useAnalyticsCallback = (spaceId, name, meta) => {
|
|
|
54
54
|
spaceId
|
|
55
55
|
]);
|
|
56
56
|
};
|
|
57
|
-
var useOnEditAnalytics = (message, editing) => {
|
|
57
|
+
var useOnEditAnalytics = (message, textBlock, editing) => {
|
|
58
58
|
const space = getSpace(message);
|
|
59
59
|
const onEditAnalytics = useAnalyticsCallback(space?.id, "threads.comment-edited", {
|
|
60
60
|
messageId: message.id,
|
|
61
|
-
messageLength:
|
|
61
|
+
messageLength: textBlock?.text.length
|
|
62
62
|
});
|
|
63
63
|
useOnTransition(editing, true, false, onEditAnalytics);
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
+
// packages/plugins/plugin-thread/src/capabilities/index.ts
|
|
67
|
+
import { lazy } from "@dxos/app-framework";
|
|
68
|
+
var IntentResolver = lazy(() => import("./intent-resolver-FSG3ZOIM.mjs"));
|
|
69
|
+
var Markdown = lazy(() => import("./markdown-MYZQDQFY.mjs"));
|
|
70
|
+
var ReactSurface = lazy(() => import("./react-surface-KOYRIK3E.mjs"));
|
|
71
|
+
var ThreadSettings = lazy(() => import("./settings-5CREE7BH.mjs"));
|
|
72
|
+
var ThreadState = lazy(() => import("./state-HPUFZBB7.mjs"));
|
|
73
|
+
|
|
66
74
|
export {
|
|
67
75
|
useStatus,
|
|
68
76
|
useAnalyticsCallback,
|
|
69
|
-
useOnEditAnalytics
|
|
77
|
+
useOnEditAnalytics,
|
|
78
|
+
IntentResolver,
|
|
79
|
+
Markdown,
|
|
80
|
+
ReactSurface,
|
|
81
|
+
ThreadState
|
|
70
82
|
};
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-SMQYULO6.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/hooks/useStatus.ts", "../../../src/hooks/analytics.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\n\nexport const useAnalyticsCallback = (spaceId: string | undefined, name: string, meta?: any) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n return useCallback(\n (dynamicMeta?: any) => {\n void dispatch(\n createIntent(ObservabilityAction.SendEvent, { name, properties: { ...meta, ...dynamicMeta, spaceId } }),\n );\n },\n [dispatch, name, meta, spaceId],\n );\n};\n\nexport const useOnEditAnalytics = (message: ReactiveObject<any
|
|
5
|
-
"mappings": ";AAIA,SAASA,WAAWC,gBAAgB;AAK7B,IAAMC,YAAY,CAACC,OAAeC,YAAAA;AACvC,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAAS,KAAA;AAC7CC,YAAU,MAAA;AACR,QAAI,CAACL,SAAS,CAACC,SAAS;AACtB;IACF;AAEA,UAAMK,cAAcN,MAAMO,OAAO,UAAUN,OAAAA,IAAW,CAACO,WAAAA;AACrD,YAAM,EAAEC,MAAK,IAAKD,OAAOE,WAAW,CAAC;AACrCP,oBAAcM,UAAU,YAAA;IAC1B,CAAA;AAEA,UAAME,IAAIC,YAAY,MAAA;AACpBT,oBAAc,CAACU,SAAAA;AACb,YAAI,OAAOA,MAAMC,OAAO,YAAYC,KAAKC,IAAG,IAAKH,KAAKC,KAAK,KAAQ;AACjE,iBAAOG;QACT,OAAO;AACL,iBAAOJ;QACT;MACF,CAAA;IACF,GAAG,GAAA;AAEH,WAAO,MAAA;AACLP,kBAAAA;AACAY,oBAAcP,CAAAA;IAChB;EACF,GAAG;IAACX;IAAOC;GAAQ;AAEnB,SAAOC;AACT;;;AClCA,SAASiB,mBAAmB;AAE5B,SAASC,cAAcC,2BAA2B;AAElD,SAASC,2BAA2B;AACpC,SAASC,gBAAgB;AACzB,SAASC,uBAAuB;
|
|
6
|
-
"names": ["useEffect", "useState", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useCallback", "createIntent", "useIntentDispatcher", "ObservabilityAction", "getSpace", "useOnTransition", "useAnalyticsCallback", "spaceId", "name", "meta", "dispatchPromise", "dispatch", "useIntentDispatcher", "useCallback", "dynamicMeta", "createIntent", "ObservabilityAction", "SendEvent", "properties", "useOnEditAnalytics", "message", "editing", "space", "getSpace", "onEditAnalytics", "id", "messageId", "messageLength", "text", "length", "useOnTransition"]
|
|
3
|
+
"sources": ["../../../src/hooks/useStatus.ts", "../../../src/hooks/analytics.ts", "../../../src/capabilities/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { type TextContentBlock } from '@dxos/schema';\n\nexport const useAnalyticsCallback = (spaceId: string | undefined, name: string, meta?: any) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n return useCallback(\n (dynamicMeta?: any) => {\n void dispatch(\n createIntent(ObservabilityAction.SendEvent, { name, properties: { ...meta, ...dynamicMeta, spaceId } }),\n );\n },\n [dispatch, name, meta, spaceId],\n );\n};\n\nexport const useOnEditAnalytics = (\n message: ReactiveObject<any>,\n textBlock: TextContentBlock | undefined,\n editing: boolean,\n) => {\n const space = getSpace(message);\n\n const onEditAnalytics = useAnalyticsCallback(space?.id, 'threads.comment-edited', {\n messageId: message.id,\n messageLength: textBlock?.text.length,\n });\n\n useOnTransition(editing, true, false, onEditAnalytics);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\n\nexport * from './capabilities';\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,WAAWC,gBAAgB;AAK7B,IAAMC,YAAY,CAACC,OAAeC,YAAAA;AACvC,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAAS,KAAA;AAC7CC,YAAU,MAAA;AACR,QAAI,CAACL,SAAS,CAACC,SAAS;AACtB;IACF;AAEA,UAAMK,cAAcN,MAAMO,OAAO,UAAUN,OAAAA,IAAW,CAACO,WAAAA;AACrD,YAAM,EAAEC,MAAK,IAAKD,OAAOE,WAAW,CAAC;AACrCP,oBAAcM,UAAU,YAAA;IAC1B,CAAA;AAEA,UAAME,IAAIC,YAAY,MAAA;AACpBT,oBAAc,CAACU,SAAAA;AACb,YAAI,OAAOA,MAAMC,OAAO,YAAYC,KAAKC,IAAG,IAAKH,KAAKC,KAAK,KAAQ;AACjE,iBAAOG;QACT,OAAO;AACL,iBAAOJ;QACT;MACF,CAAA;IACF,GAAG,GAAA;AAEH,WAAO,MAAA;AACLP,kBAAAA;AACAY,oBAAcP,CAAAA;IAChB;EACF,GAAG;IAACX;IAAOC;GAAQ;AAEnB,SAAOC;AACT;;;AClCA,SAASiB,mBAAmB;AAE5B,SAASC,cAAcC,2BAA2B;AAElD,SAASC,2BAA2B;AACpC,SAASC,gBAAgB;AACzB,SAASC,uBAAuB;AAGzB,IAAMC,uBAAuB,CAACC,SAA6BC,MAAcC,SAAAA;AAC9E,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AAEtC,SAAOC,YACL,CAACC,gBAAAA;AACC,SAAKH,SACHI,aAAaC,oBAAoBC,WAAW;MAAET;MAAMU,YAAY;QAAE,GAAGT;QAAM,GAAGK;QAAaP;MAAQ;IAAE,CAAA,CAAA;EAEzG,GACA;IAACI;IAAUH;IAAMC;IAAMF;GAAQ;AAEnC;AAEO,IAAMY,qBAAqB,CAChCC,SACAC,WACAC,YAAAA;AAEA,QAAMC,QAAQC,SAASJ,OAAAA;AAEvB,QAAMK,kBAAkBnB,qBAAqBiB,OAAOG,IAAI,0BAA0B;IAChFC,WAAWP,QAAQM;IACnBE,eAAeP,WAAWQ,KAAKC;EACjC,CAAA;AAEAC,kBAAgBT,SAAS,MAAM,OAAOG,eAAAA;AACxC;;;ACnCA,SAASO,YAAY;AAEd,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMC,WAAWD,KAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAME,eAAeF,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMG,iBAAiBH,KAAK,MAAM,OAAO,yBAAA,CAAA;AACzC,IAAMI,cAAcJ,KAAK,MAAM,OAAO,sBAAA,CAAA;",
|
|
6
|
+
"names": ["useEffect", "useState", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useCallback", "createIntent", "useIntentDispatcher", "ObservabilityAction", "getSpace", "useOnTransition", "useAnalyticsCallback", "spaceId", "name", "meta", "dispatchPromise", "dispatch", "useIntentDispatcher", "useCallback", "dynamicMeta", "createIntent", "ObservabilityAction", "SendEvent", "properties", "useOnEditAnalytics", "message", "textBlock", "editing", "space", "getSpace", "onEditAnalytics", "id", "messageId", "messageLength", "text", "length", "useOnTransition", "lazy", "IntentResolver", "lazy", "Markdown", "ReactSurface", "ThreadSettings", "ThreadState"]
|
|
7
7
|
}
|
|
@@ -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
|
}
|