@dxos/plugin-thread 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d
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-O2SFQJU7.mjs +16 -0
- package/dist/lib/browser/{ChatContainer-2UYQ23KO.mjs → ChatContainer-PVT3DUZJ.mjs} +4 -4
- package/dist/lib/browser/{app-graph-builder-Q5V3KXE3.mjs → app-graph-builder-AF3M7UWN.mjs} +5 -5
- package/dist/lib/browser/app-graph-builder-AF3M7UWN.mjs.map +7 -0
- package/dist/lib/browser/{call-manager-NIPDYUVD.mjs → call-manager-XRRCAVLI.mjs} +4 -4
- package/dist/lib/browser/call-manager-XRRCAVLI.mjs.map +7 -0
- package/dist/lib/browser/chunk-2CWJBXBH.mjs +21 -0
- package/dist/lib/browser/{chunk-LGSDKXPF.mjs → chunk-4APCDRSH.mjs} +1 -1
- package/dist/lib/browser/{chunk-LGSDKXPF.mjs.map → chunk-4APCDRSH.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-JVIKVYTI.mjs → chunk-DW7JD64V.mjs} +11 -2
- package/dist/lib/browser/chunk-DW7JD64V.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YD57K2SL.mjs → chunk-FY4ZRD5X.mjs} +8 -8
- package/dist/lib/{node-esm/chunk-RGTWAVEE.mjs.map → browser/chunk-FY4ZRD5X.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-NCSFNWBZ.mjs → chunk-J3JO5NWO.mjs} +30 -32
- package/dist/lib/browser/chunk-J3JO5NWO.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6NSMBO3B.mjs → chunk-JGKMMI65.mjs} +2 -2
- package/dist/lib/browser/{chunk-6NSMBO3B.mjs.map → chunk-JGKMMI65.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-ZE7KWN36.mjs → chunk-TUFWPOVS.mjs} +92 -63
- package/dist/lib/browser/chunk-TUFWPOVS.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ERWASUQK.mjs → chunk-X5PIP5YR.mjs} +3 -3
- package/dist/lib/browser/{chunk-ERWASUQK.mjs.map → chunk-X5PIP5YR.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-LCJD3NOB.mjs → chunk-ZJ7QBXK6.mjs} +225 -225
- package/dist/lib/browser/chunk-ZJ7QBXK6.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +16 -28
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-MWE6XLPY.mjs → intent-resolver-DCY4P4OX.mjs} +28 -12
- package/dist/lib/browser/intent-resolver-DCY4P4OX.mjs.map +7 -0
- package/dist/lib/browser/{markdown-ZO34G7RM.mjs → markdown-WZSXCEZJ.mjs} +4 -4
- package/dist/lib/browser/markdown-WZSXCEZJ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-YNDNPODD.mjs → react-root-QXPALOUQ.mjs} +9 -9
- package/dist/lib/browser/{react-surface-2AXRNTCA.mjs → react-surface-PYAMIADB.mjs} +9 -9
- package/dist/lib/browser/react-surface-PYAMIADB.mjs.map +7 -0
- package/dist/lib/browser/{settings-XZGPZNAU.mjs → settings-AC6YSASL.mjs} +2 -2
- package/dist/lib/browser/{state-H6CYONWE.mjs → state-2T4KDWBX.mjs} +2 -2
- package/dist/lib/browser/{state-H6CYONWE.mjs.map → state-2T4KDWBX.mjs.map} +2 -2
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{ChannelContainer-O2LZKMRM.mjs → ChannelContainer-B2ZGAE4P.mjs} +7 -7
- package/dist/lib/node-esm/{ChatContainer-6N35MP5J.mjs → ChatContainer-2CT4PJ7I.mjs} +4 -4
- package/dist/lib/node-esm/{app-graph-builder-GAKBZNU3.mjs → app-graph-builder-OLSJVCWY.mjs} +5 -5
- package/dist/lib/node-esm/app-graph-builder-OLSJVCWY.mjs.map +7 -0
- package/dist/lib/node-esm/{call-manager-D6O5ZJJ4.mjs → call-manager-EI7FXRAU.mjs} +4 -4
- package/dist/lib/node-esm/call-manager-EI7FXRAU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-IHDNQLLR.mjs → chunk-4TME3BR4.mjs} +92 -63
- package/dist/lib/node-esm/chunk-4TME3BR4.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-6CRHHOST.mjs +23 -0
- package/dist/lib/node-esm/{chunk-RGTWAVEE.mjs → chunk-BF4UKS55.mjs} +8 -8
- package/dist/lib/node-esm/chunk-BF4UKS55.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-75RJ5DJI.mjs → chunk-PYTVBN5J.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-75RJ5DJI.mjs.map → chunk-PYTVBN5J.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-OU5BYIDO.mjs → chunk-QBHKLWGR.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-OU5BYIDO.mjs.map → chunk-QBHKLWGR.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-25ABSYP2.mjs → chunk-SED3O2XO.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-25ABSYP2.mjs.map → chunk-SED3O2XO.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-A6QLTZCY.mjs → chunk-VNG6M2IY.mjs} +30 -32
- package/dist/lib/node-esm/chunk-VNG6M2IY.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3X3YKRM2.mjs → chunk-XVKWHTH4.mjs} +11 -2
- package/dist/lib/node-esm/chunk-XVKWHTH4.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-5UQ4KKDE.mjs → chunk-YIDU3DXK.mjs} +225 -225
- package/dist/lib/node-esm/chunk-YIDU3DXK.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +16 -28
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-B6PNTMPY.mjs → intent-resolver-QGTPU6QB.mjs} +28 -12
- package/dist/lib/node-esm/intent-resolver-QGTPU6QB.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-ZJUFV2TA.mjs → markdown-3MZXUGUA.mjs} +4 -4
- package/dist/lib/node-esm/markdown-3MZXUGUA.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-ZUVVTKWG.mjs → react-root-7ZFJYVUZ.mjs} +9 -9
- package/dist/lib/node-esm/{react-surface-OMEZTOU6.mjs → react-surface-UJFCSFNO.mjs} +9 -9
- package/dist/lib/node-esm/react-surface-UJFCSFNO.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-XECBSD6Q.mjs → settings-N52O7MLS.mjs} +2 -2
- package/dist/lib/node-esm/{state-D7WNDT3N.mjs → state-62TQKQVB.mjs} +2 -2
- package/dist/lib/node-esm/{state-D7WNDT3N.mjs.map → state-62TQKQVB.mjs.map} +2 -2
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/calls/call-manager.d.ts.map +1 -1
- package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
- package/dist/types/src/calls/media-manager.d.ts.map +1 -1
- package/dist/types/src/calls/types.d.ts +1 -1
- package/dist/types/src/calls/types.d.ts.map +1 -1
- package/dist/types/src/calls/util/calls-service.d.ts +1 -1
- package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
- package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
- package/dist/types/src/calls-service.stories.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +2 -2
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts +1 -1
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/Call/Call.d.ts.map +1 -1
- package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
- package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
- package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
- package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
- package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
- package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts +2 -2
- package/dist/types/src/extensions/threads.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +53 -22
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +72 -24
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +17 -2
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +47 -45
- package/src/ThreadPlugin.tsx +8 -23
- package/src/calls/call-manager.ts +1 -1
- package/src/calls/call-swarm-synchronizer.ts +1 -1
- package/src/calls/media-manager.ts +2 -2
- package/src/calls/types.ts +1 -1
- package/src/calls/util/calls-service.ts +4 -3
- package/src/calls/util/stub-media-streams.ts +2 -2
- package/src/calls-service.stories.tsx +3 -3
- package/src/capabilities/app-graph-builder.ts +6 -5
- package/src/capabilities/call-manager.ts +3 -2
- package/src/capabilities/capabilities.ts +2 -2
- package/src/capabilities/intent-resolver.ts +26 -7
- package/src/capabilities/markdown.ts +4 -3
- package/src/capabilities/react-surface.tsx +5 -4
- package/src/capabilities/state.ts +2 -1
- package/src/components/Call/Call.tsx +3 -2
- package/src/components/Call/Toolbar.tsx +3 -3
- package/src/components/CallDebugPanel.tsx +1 -1
- package/src/components/CallSidebar.tsx +2 -1
- package/src/components/ChannelContainer.stories.tsx +3 -2
- package/src/components/ChannelContainer.tsx +7 -6
- package/src/components/Chat.stories.tsx +3 -2
- package/src/components/ChatContainer.tsx +6 -5
- package/src/components/Comments.stories.tsx +4 -3
- package/src/components/CommentsContainer.tsx +2 -1
- package/src/components/CommentsThreadContainer.tsx +3 -2
- package/src/components/Lobby/Lobby.tsx +1 -1
- package/src/components/Media/VideoObject.stories.tsx +4 -3
- package/src/components/MessageContainer.tsx +6 -5
- package/src/components/Participant/ParticipantGrid.tsx +2 -1
- package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +4 -3
- package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +5 -4
- package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
- package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
- package/src/components/ThreadComplementary.tsx +1 -1
- package/src/components/command-extension.ts +1 -1
- package/src/components/testing.ts +2 -2
- package/src/extensions/threads.ts +6 -6
- package/src/hooks/useDebugMode.ts +1 -1
- package/src/testing/stories.ts +2 -2
- package/src/translations.ts +2 -0
- package/src/types/types.ts +11 -2
- package/src/typings.d.ts +8 -0
- package/dist/lib/browser/ChannelContainer-5YH4FTBL.mjs +0 -16
- package/dist/lib/browser/app-graph-builder-Q5V3KXE3.mjs.map +0 -7
- package/dist/lib/browser/call-manager-NIPDYUVD.mjs.map +0 -7
- package/dist/lib/browser/chunk-5ZVJ4GAS.mjs +0 -21
- package/dist/lib/browser/chunk-JVIKVYTI.mjs.map +0 -7
- package/dist/lib/browser/chunk-LCJD3NOB.mjs.map +0 -7
- package/dist/lib/browser/chunk-NCSFNWBZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-YD57K2SL.mjs.map +0 -7
- package/dist/lib/browser/chunk-ZE7KWN36.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-MWE6XLPY.mjs.map +0 -7
- package/dist/lib/browser/markdown-ZO34G7RM.mjs.map +0 -7
- package/dist/lib/browser/react-surface-2AXRNTCA.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-GAKBZNU3.mjs.map +0 -7
- package/dist/lib/node-esm/call-manager-D6O5ZJJ4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3X3YKRM2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5UQ4KKDE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-A6QLTZCY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IHDNQLLR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-X62X3VOK.mjs +0 -23
- package/dist/lib/node-esm/intent-resolver-B6PNTMPY.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-ZJUFV2TA.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-OMEZTOU6.mjs.map +0 -7
- /package/dist/lib/browser/{ChannelContainer-5YH4FTBL.mjs.map → ChannelContainer-O2SFQJU7.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-2UYQ23KO.mjs.map → ChatContainer-PVT3DUZJ.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-5ZVJ4GAS.mjs.map → chunk-2CWJBXBH.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-YNDNPODD.mjs.map → react-root-QXPALOUQ.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-XZGPZNAU.mjs.map → settings-AC6YSASL.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChannelContainer-O2LZKMRM.mjs.map → ChannelContainer-B2ZGAE4P.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-6N35MP5J.mjs.map → ChatContainer-2CT4PJ7I.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-X62X3VOK.mjs.map → chunk-6CRHHOST.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-ZUVVTKWG.mjs.map → react-root-7ZFJYVUZ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-XECBSD6Q.mjs.map → settings-N52O7MLS.mjs.map} +0 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
6
6
|
|
|
7
7
|
import { Obj, Ref } from '@dxos/echo';
|
|
8
|
-
import {
|
|
8
|
+
import { type Space, fullyQualifiedId, useMembers } from '@dxos/react-client/echo';
|
|
9
9
|
import { useIdentity } from '@dxos/react-client/halo';
|
|
10
10
|
import { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';
|
|
11
11
|
import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';
|
|
@@ -21,13 +21,14 @@ import {
|
|
|
21
21
|
import { DataType } from '@dxos/schema';
|
|
22
22
|
import { isNonNullable } from '@dxos/util';
|
|
23
23
|
|
|
24
|
-
import { MessageContainer } from './MessageContainer';
|
|
25
|
-
import { command } from './command-extension';
|
|
26
24
|
import { useStatus } from '../hooks';
|
|
27
25
|
import { meta } from '../meta';
|
|
28
26
|
import { type ThreadType } from '../types';
|
|
29
27
|
import { getMessageMetadata } from '../util';
|
|
30
28
|
|
|
29
|
+
import { command } from './command-extension';
|
|
30
|
+
import { MessageContainer } from './MessageContainer';
|
|
31
|
+
|
|
31
32
|
export const ChatHeading = ({ attendableId }: { attendableId?: string }) => {
|
|
32
33
|
const { t } = useTranslation(meta.id);
|
|
33
34
|
return (
|
|
@@ -92,9 +93,9 @@ export const ChatContainer = ({ space, thread, context, current, autoFocusTextbo
|
|
|
92
93
|
thread.messages.push(
|
|
93
94
|
Ref.make(
|
|
94
95
|
Obj.make(DataType.Message, {
|
|
95
|
-
sender: { identityDid: identity.did },
|
|
96
96
|
created: new Date().toISOString(),
|
|
97
|
-
|
|
97
|
+
sender: { identityDid: identity.did },
|
|
98
|
+
blocks: [{ _tag: 'text', text: messageRef.current }],
|
|
98
99
|
properties: context ? { context: Ref.make(context) } : undefined,
|
|
99
100
|
}),
|
|
100
101
|
),
|
|
@@ -17,11 +17,12 @@ import { useIdentity } from '@dxos/react-client/halo';
|
|
|
17
17
|
import { AnchoredTo, DataType } from '@dxos/schema';
|
|
18
18
|
import { layoutCentered, render, withLayout, withTheme } from '@dxos/storybook-utils';
|
|
19
19
|
|
|
20
|
-
import { CommentsContainer } from './CommentsContainer';
|
|
21
|
-
import { createCommentThread } from './testing';
|
|
22
20
|
import { translations } from '../translations';
|
|
23
21
|
import { ThreadType } from '../types';
|
|
24
22
|
|
|
23
|
+
import { CommentsContainer } from './CommentsContainer';
|
|
24
|
+
import { createCommentThread } from './testing';
|
|
25
|
+
|
|
25
26
|
faker.seed(1);
|
|
26
27
|
|
|
27
28
|
const DefaultStory = () => {
|
|
@@ -75,7 +76,7 @@ const meta: Meta = {
|
|
|
75
76
|
IntentPlugin(),
|
|
76
77
|
ClientPlugin({
|
|
77
78
|
types: [DataType.Message, ThreadType, AnchoredTo],
|
|
78
|
-
onClientInitialized: async (
|
|
79
|
+
onClientInitialized: async ({ client }) => {
|
|
79
80
|
await client.halo.createIdentity();
|
|
80
81
|
},
|
|
81
82
|
}),
|
|
@@ -9,10 +9,11 @@ import { fullyQualifiedId } from '@dxos/react-client/echo';
|
|
|
9
9
|
import { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';
|
|
10
10
|
import { type AnchoredTo } from '@dxos/schema';
|
|
11
11
|
|
|
12
|
-
import { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';
|
|
13
12
|
import { meta } from '../meta';
|
|
14
13
|
import { type ThreadType } from '../types';
|
|
15
14
|
|
|
15
|
+
import { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';
|
|
16
|
+
|
|
16
17
|
export type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {
|
|
17
18
|
anchors: AnchoredTo[];
|
|
18
19
|
currentId?: string;
|
|
@@ -14,13 +14,14 @@ import { MessageTextbox, type MessageTextboxProps, Thread, type ThreadRootProps
|
|
|
14
14
|
import { type AnchoredTo } from '@dxos/schema';
|
|
15
15
|
import { isNonNullable } from '@dxos/util';
|
|
16
16
|
|
|
17
|
-
import { MessageContainer } from './MessageContainer';
|
|
18
|
-
import { command } from './command-extension';
|
|
19
17
|
import { useStatus } from '../hooks';
|
|
20
18
|
import { meta } from '../meta';
|
|
21
19
|
import { type ThreadType } from '../types';
|
|
22
20
|
import { getMessageMetadata } from '../util';
|
|
23
21
|
|
|
22
|
+
import { command } from './command-extension';
|
|
23
|
+
import { MessageContainer } from './MessageContainer';
|
|
24
|
+
|
|
24
25
|
// TODO(burdon): Remove need for p-1.
|
|
25
26
|
export const commentControlClassNames = '!p-1 transition-opacity';
|
|
26
27
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React, { type FC, type PropsWithChildren, useEffect, useState } from 'react';
|
|
6
6
|
|
|
7
7
|
import { useCapability } from '@dxos/app-framework';
|
|
8
|
-
import {
|
|
8
|
+
import { type ThemedClassName, useTranslation } from '@dxos/react-ui';
|
|
9
9
|
import { mx } from '@dxos/react-ui-theme';
|
|
10
10
|
|
|
11
11
|
import { ThreadCapabilities } from '../../capabilities';
|
|
@@ -4,18 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
import '@dxos-theme';
|
|
6
6
|
|
|
7
|
-
import { type
|
|
7
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
8
8
|
import React, { useEffect, useState } from 'react';
|
|
9
9
|
|
|
10
10
|
import { scheduleTask } from '@dxos/async';
|
|
11
11
|
import { Context } from '@dxos/context';
|
|
12
12
|
import { log } from '@dxos/log';
|
|
13
|
-
import {
|
|
13
|
+
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
14
14
|
|
|
15
|
-
import { VideoObject } from './VideoObject';
|
|
16
15
|
import { getUserMediaTrack } from '../../calls';
|
|
17
16
|
import { ResponsiveContainer } from '../ResponsiveGrid';
|
|
18
17
|
|
|
18
|
+
import { VideoObject } from './VideoObject';
|
|
19
|
+
|
|
19
20
|
const meta: Meta<typeof VideoObject> = {
|
|
20
21
|
title: 'plugins/plugin-thread/VideoObject',
|
|
21
22
|
component: VideoObject,
|
|
@@ -9,19 +9,20 @@ import { Surface } from '@dxos/app-framework';
|
|
|
9
9
|
import { type Obj, Ref, type Type } from '@dxos/echo';
|
|
10
10
|
import { PublicKey } from '@dxos/react-client';
|
|
11
11
|
import { type SpaceMember } from '@dxos/react-client/echo';
|
|
12
|
-
import {
|
|
12
|
+
import { type Identity, useIdentity } from '@dxos/react-client/halo';
|
|
13
13
|
import { IconButton, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';
|
|
14
14
|
import { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';
|
|
15
15
|
import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';
|
|
16
16
|
import { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';
|
|
17
17
|
import { type DataType } from '@dxos/schema';
|
|
18
18
|
|
|
19
|
-
import { commentControlClassNames } from './CommentsThreadContainer';
|
|
20
|
-
import { command } from './command-extension';
|
|
21
19
|
import { useOnEditAnalytics } from '../hooks';
|
|
22
20
|
import { meta } from '../meta';
|
|
23
21
|
import { getMessageMetadata } from '../util';
|
|
24
22
|
|
|
23
|
+
import { command } from './command-extension';
|
|
24
|
+
import { commentControlClassNames } from './CommentsThreadContainer';
|
|
25
|
+
|
|
25
26
|
export type MessageContainerProps = {
|
|
26
27
|
message: DataType.Message;
|
|
27
28
|
members: SpaceMember[];
|
|
@@ -40,8 +41,8 @@ export const MessageContainer = ({ message, members, editable = false, onDelete
|
|
|
40
41
|
const userIsAuthor = useIdentity()?.did === messageMetadata.authorId;
|
|
41
42
|
const [editing, setEditing] = useState(false);
|
|
42
43
|
const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);
|
|
43
|
-
const textBlock = message.blocks.find((block) => block.
|
|
44
|
-
const references = message.blocks.filter((block) => block.
|
|
44
|
+
const textBlock = message.blocks.find((block) => block._tag === 'text');
|
|
45
|
+
const references = message.blocks.filter((block) => block._tag === 'reference').map((block) => block.reference);
|
|
45
46
|
|
|
46
47
|
useOnEditAnalytics(message, textBlock, !!editing);
|
|
47
48
|
|
|
@@ -6,10 +6,11 @@ import React, { useEffect, useMemo, useState } from 'react';
|
|
|
6
6
|
|
|
7
7
|
import { type ThemedClassName } from '@dxos/react-ui';
|
|
8
8
|
|
|
9
|
-
import { Participant, SCREENSHARE_SUFFIX } from './Participant';
|
|
10
9
|
import { type UserState } from '../../calls';
|
|
11
10
|
import { ResponsiveGrid } from '../ResponsiveGrid';
|
|
12
11
|
|
|
12
|
+
import { Participant, SCREENSHARE_SUFFIX } from './Participant';
|
|
13
|
+
|
|
13
14
|
const getId = (user: UserState): string => user.id!;
|
|
14
15
|
|
|
15
16
|
export type ParticipantGridProps = ThemedClassName<{
|
|
@@ -4,15 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
import '@dxos-theme';
|
|
6
6
|
|
|
7
|
-
import { type
|
|
7
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
8
8
|
import React from 'react';
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
11
11
|
|
|
12
|
-
import { ResponsiveContainer } from './ResponsiveContainer';
|
|
13
12
|
import { translations } from '../../translations';
|
|
14
13
|
import { VideoObject as VideoObjectComponent } from '../Media';
|
|
15
14
|
|
|
15
|
+
import { ResponsiveContainer } from './ResponsiveContainer';
|
|
16
|
+
|
|
16
17
|
const meta: Meta<typeof ResponsiveContainer> = {
|
|
17
18
|
title: 'plugins/plugin-thread/ResponsiveContainer',
|
|
18
19
|
component: ResponsiveContainer,
|
|
@@ -4,15 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
import '@dxos-theme';
|
|
6
6
|
|
|
7
|
-
import { type
|
|
7
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
8
8
|
import React, { useEffect, useState } from 'react';
|
|
9
9
|
|
|
10
10
|
import { faker } from '@dxos/random';
|
|
11
|
-
import {
|
|
11
|
+
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
12
|
+
|
|
13
|
+
import { translations } from '../../translations';
|
|
12
14
|
|
|
13
15
|
import { ResponsiveGrid, type ResponsiveGridProps } from './ResponsiveGrid';
|
|
14
16
|
import { ResponsiveGridItem, type ResponsiveGridItemProps } from './ResponsiveGridItem';
|
|
15
|
-
import { translations } from '../../translations';
|
|
16
17
|
|
|
17
18
|
type TestItem = {
|
|
18
19
|
id: string;
|
|
@@ -61,7 +62,7 @@ const meta: Meta<StoryProps> = {
|
|
|
61
62
|
component: ResponsiveGrid,
|
|
62
63
|
render: (args) => {
|
|
63
64
|
const [pinned, setPinned] = useState<string | undefined>(
|
|
64
|
-
args.pinned ?? args.items.length > 1 ? args.items[0]?.id : undefined,
|
|
65
|
+
(args.pinned ?? args.items.length > 1) ? args.items[0]?.id : undefined,
|
|
65
66
|
);
|
|
66
67
|
const [items, setItems] = useState<TestItem[]>(args.items);
|
|
67
68
|
useEffect(() => {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import React, { type ComponentType, type FC,
|
|
5
|
+
import React, { type ComponentType, type FC, useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';
|
|
6
6
|
import { useResizeDetector } from 'react-resize-detector';
|
|
7
7
|
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import React, {
|
|
5
|
+
import React, { type CSSProperties, type PropsWithChildren, useEffect, useState } from 'react';
|
|
6
6
|
|
|
7
|
-
import { Icon, IconButton,
|
|
7
|
+
import { Icon, IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';
|
|
8
8
|
import { Waveform } from '@dxos/react-ui-sfx';
|
|
9
9
|
import { groupHoverControlItemWithTransition, mx } from '@dxos/react-ui-theme';
|
|
10
10
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { HighlightStyle, StreamLanguage, syntaxHighlighting } from '@codemirror/language';
|
|
6
6
|
import { type Extension } from '@codemirror/state';
|
|
7
7
|
|
|
8
8
|
import { tags } from '@dxos/react-ui-editor';
|
|
@@ -16,11 +16,11 @@ export const createCommentThread = (identity: Identity): ThreadType => {
|
|
|
16
16
|
() =>
|
|
17
17
|
Ref.make(
|
|
18
18
|
Obj.make(DataType.Message, {
|
|
19
|
+
created: new Date().toISOString(),
|
|
19
20
|
sender: {
|
|
20
21
|
identityDid: faker.datatype.boolean() ? identity.did : IdentityDid.random(),
|
|
21
22
|
},
|
|
22
|
-
|
|
23
|
-
blocks: [{ type: 'text', text: faker.lorem.sentences(3) }],
|
|
23
|
+
blocks: [{ _tag: 'text', text: faker.lorem.sentences(3) }],
|
|
24
24
|
}),
|
|
25
25
|
),
|
|
26
26
|
{ count: { min: 2, max: 3 } },
|
|
@@ -6,17 +6,17 @@ import { type Extension } from '@codemirror/state';
|
|
|
6
6
|
import { EditorView } from '@codemirror/view';
|
|
7
7
|
import { computed, effect } from '@preact/signals-core';
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { type PromiseIntentDispatcher, createIntent } from '@dxos/app-framework';
|
|
10
10
|
import { Filter, Obj, Query, Relation } from '@dxos/echo';
|
|
11
|
-
import { type
|
|
12
|
-
import {
|
|
11
|
+
import { type Markdown } from '@dxos/plugin-markdown/types';
|
|
12
|
+
import { createDocAccessor, fullyQualifiedId, getSource, getSpace, getTextInRange } from '@dxos/react-client/echo';
|
|
13
13
|
import { comments, createExternalCommentSync } from '@dxos/react-ui-editor';
|
|
14
14
|
import { AnchoredTo } from '@dxos/schema';
|
|
15
15
|
|
|
16
|
-
import { ThreadAction,
|
|
16
|
+
import { ThreadAction, type ThreadState, ThreadType } from '../types';
|
|
17
17
|
|
|
18
18
|
// TODO(burdon): Factor out.
|
|
19
|
-
const getName = (doc:
|
|
19
|
+
const getName = (doc: Markdown.Document, anchor: string): string | undefined => {
|
|
20
20
|
if (doc.content) {
|
|
21
21
|
const [start, end] = anchor.split(':');
|
|
22
22
|
return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);
|
|
@@ -26,7 +26,7 @@ const getName = (doc: DocumentType, anchor: string): string | undefined => {
|
|
|
26
26
|
/**
|
|
27
27
|
* Construct plugins.
|
|
28
28
|
*/
|
|
29
|
-
export const threads = (state: ThreadState, doc?:
|
|
29
|
+
export const threads = (state: ThreadState, doc?: Markdown.Document, dispatch?: PromiseIntentDispatcher): Extension => {
|
|
30
30
|
const space = doc && getSpace(doc);
|
|
31
31
|
if (!doc || !space || !dispatch) {
|
|
32
32
|
// Include no-op comments extension here to ensure that the facets are always present when they are expected.
|
package/src/testing/stories.ts
CHANGED
|
@@ -18,10 +18,10 @@ import { ChannelType, ThreadType } from '../types';
|
|
|
18
18
|
export const createThreadPlugins = async () => [
|
|
19
19
|
ThemePlugin({ tx: defaultTx }),
|
|
20
20
|
ClientPlugin({
|
|
21
|
-
onClientInitialized: async (
|
|
21
|
+
onClientInitialized: async ({ client }) => {
|
|
22
22
|
await client.halo.createIdentity({ displayName: 'Test User' });
|
|
23
23
|
},
|
|
24
|
-
onSpacesReady: async (
|
|
24
|
+
onSpacesReady: async ({ client }) => {
|
|
25
25
|
await client.spaces.default.waitUntilReady();
|
|
26
26
|
const thread = Obj.make(ThreadType, { messages: [] });
|
|
27
27
|
client.spaces.default.db.add(Obj.make(ChannelType, { defaultThread: Ref.make(thread), threads: [] }));
|
package/src/translations.ts
CHANGED
|
@@ -16,6 +16,8 @@ export const translations = [
|
|
|
16
16
|
'typename label_one': 'Channel',
|
|
17
17
|
'typename label_other': 'Channels',
|
|
18
18
|
'object name placeholder': 'New channel',
|
|
19
|
+
'rename object label': 'Rename channel',
|
|
20
|
+
'delete object label': 'Delete channel',
|
|
19
21
|
},
|
|
20
22
|
[meta.id]: {
|
|
21
23
|
'plugin name': 'Chat',
|
package/src/types/types.ts
CHANGED
|
@@ -5,15 +5,24 @@
|
|
|
5
5
|
import { Schema } from 'effect';
|
|
6
6
|
|
|
7
7
|
import { Type } from '@dxos/echo';
|
|
8
|
-
import { EchoObjectSchema } from '@dxos/react-client/echo';
|
|
8
|
+
import { EchoObjectSchema, SpaceSchema } from '@dxos/react-client/echo';
|
|
9
9
|
import { AnchoredTo, DataType } from '@dxos/schema';
|
|
10
10
|
|
|
11
|
-
import { ChannelType, ThreadType } from './schema';
|
|
12
11
|
import { THREAD_PLUGIN } from '../meta';
|
|
13
12
|
|
|
13
|
+
import { ChannelType, ThreadType } from './schema';
|
|
14
|
+
|
|
14
15
|
export namespace ThreadAction {
|
|
15
16
|
const THREAD_ACTION = `${THREAD_PLUGIN}/action`;
|
|
16
17
|
|
|
18
|
+
export class OnSpaceCreated extends Schema.TaggedClass<OnSpaceCreated>()(`${THREAD_ACTION}/on-space-created`, {
|
|
19
|
+
input: Schema.Struct({
|
|
20
|
+
space: SpaceSchema,
|
|
21
|
+
rootCollection: DataType.Collection,
|
|
22
|
+
}),
|
|
23
|
+
output: Schema.Void,
|
|
24
|
+
}) {}
|
|
25
|
+
|
|
17
26
|
export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${THREAD_ACTION}/create-channel`, {
|
|
18
27
|
input: Schema.Struct({
|
|
19
28
|
spaceId: Type.SpaceId,
|
package/src/typings.d.ts
ADDED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ChannelContainer,
|
|
3
|
-
ChannelContainer_default
|
|
4
|
-
} from "./chunk-LCJD3NOB.mjs";
|
|
5
|
-
import "./chunk-5ZVJ4GAS.mjs";
|
|
6
|
-
import "./chunk-LGSDKXPF.mjs";
|
|
7
|
-
import "./chunk-NCSFNWBZ.mjs";
|
|
8
|
-
import "./chunk-ERWASUQK.mjs";
|
|
9
|
-
import "./chunk-GERVMFQW.mjs";
|
|
10
|
-
import "./chunk-6NSMBO3B.mjs";
|
|
11
|
-
import "./chunk-EV4JWI7L.mjs";
|
|
12
|
-
export {
|
|
13
|
-
ChannelContainer,
|
|
14
|
-
ChannelContainer_default as default
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=ChannelContainer-5YH4FTBL.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { meta, THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadAction } from '../types';\nimport { getAnchor } from '../util';\n\nexport default (context: PluginContext) => {\n const resolve = (typename: string) =>\n context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${THREAD_PLUGIN}/active-call`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map((node) => {\n const [call] = get(context.capabilities(ThreadCapabilities.CallManager));\n return get(\n rxFromSignal(() =>\n call?.joined\n ? [\n {\n id: `${node.id}${ATTENDABLE_PATH_SEPARATOR}active-call`,\n type: DECK_COMPANION_TYPE,\n data: null,\n properties: {\n label: ['call panel label', { ns: THREAD_PLUGIN }],\n icon: 'ph--video-conference--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ]\n : [],\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n // TODO(wittjosiah): The channel shouldn't become the companion during a call.\n // Alternative: the call/meeting/thread should be a child node of the channel and that should be opened.\n createExtension({\n id: `${THREAD_PLUGIN}/channel-chat-companion`,\n connector: (node) => {\n return Rx.make((get) => {\n return pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ChannelType, node.data) ? Option.some(node.data) : Option.none())),\n Option.map((channel) => {\n const callManager = context.getCapability(ThreadCapabilities.CallManager);\n const joined = get(\n rxFromSignal(() => callManager.joined && callManager.roomId === fullyQualifiedId(channel)),\n );\n if (!joined) {\n return [];\n }\n\n return [\n {\n id: `${fullyQualifiedId(channel)}${ATTENDABLE_PATH_SEPARATOR}chat`,\n type: PLANK_COMPANION_TYPE,\n data: 'chat',\n properties: {\n label: ['channel companion label', { ns: THREAD_PLUGIN }],\n icon: 'ph--hash--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n );\n });\n },\n }),\n createExtension({\n id: `${meta.id}/comments-companion`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node) : Option.none();\n }),\n Option.map((node) => [\n {\n id: [node.id, 'comments'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'comments',\n properties: {\n label: ['comments label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'hidden',\n position: 'hoist',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/comment-toolbar`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node.data) : Option.none();\n }),\n Option.map((object) => {\n const selectionManager = context.getCapability(AttentionCapabilities.Selection);\n const toolbar = get(context.capabilities(ThreadCapabilities.State))[0]?.state.toolbar ?? {};\n const disabled = get(\n rxFromSignal(() => {\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object), metadata.selectionMode);\n const anchor = getAnchor(selection);\n const invalidSelection = !anchor;\n const overlappingComment = toolbar[fullyQualifiedId(object)];\n return (metadata.comments === 'anchored' && invalidSelection) || overlappingComment;\n }),\n );\n\n return [\n {\n id: `${fullyQualifiedId(object)}/comment`,\n data: () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object));\n // TODO(wittjosiah): Use presence of selection to determine if the comment should be anchored.\n // Requires all components which support selection (e.g. table/kanban) to support anchored comments.\n const anchor = metadata.comments === 'anchored' ? getAnchor(selection) : Date.now().toString();\n const name = metadata.getAnchorLabel?.(object, anchor);\n void dispatch(createIntent(ThreadAction.Create, { anchor, name, subject: object }));\n },\n properties: {\n label: ['add comment label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'toolbar',\n disabled,\n testId: 'thread.comment.add',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "createIntent", "Obj", "AttentionCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "createExtension", "ROOT_ID", "rxFromSignal", "fullyQualifiedId", "context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "THREAD_PLUGIN", "connector", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "call", "capabilities", "ThreadCapabilities", "CallManager", "rxFromSignal", "joined", "ATTENDABLE_PATH_SEPARATOR", "type", "DECK_COMPANION_TYPE", "data", "properties", "label", "ns", "icon", "position", "disposition", "getOrElse", "Obj", "instanceOf", "ChannelType", "channel", "callManager", "getCapability", "roomId", "fullyQualifiedId", "PLANK_COMPANION_TYPE", "meta", "isObject", "getTypename", "comments", "join", "actions", "object", "selectionManager", "AttentionCapabilities", "Selection", "toolbar", "State", "state", "disabled", "selection", "getSelection", "selectionMode", "anchor", "getAnchor", "invalidSelection", "overlappingComment", "dispatchPromise", "dispatch", "IntentDispatcher", "Date", "now", "toString", "name", "getAnchorLabel", "createIntent", "ThreadAction", "Create", "subject", "testId"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/call-manager.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes, type PluginContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { CallManager } from '../calls';\n\nexport default async (context: PluginContext) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const callManager = new CallManager(client);\n await callManager.open();\n\n return contributes(ThreadCapabilities.CallManager, callManager, () => {\n void callManager.close();\n });\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;AAIA,SAASA,mBAAuC;AAChD,SAASC,0BAA0B;AAKnC,IAAA,uBAAe,OAAOC,YAAAA;AACpB,QAAMC,SAASD,QAAQE,cAAcC,mBAAmBC,MAAM;AAC9D,QAAMC,cAAc,IAAIC,YAAYL,MAAAA;AACpC,QAAMI,YAAYE,KAAI;AAEtB,SAAOC,YAAYC,mBAAmBH,aAAaD,aAAa,MAAA;AAC9D,SAAKA,YAAYK,MAAK;EACxB,CAAA;AACF;",
|
|
6
|
-
"names": ["contributes", "ClientCapabilities", "context", "client", "getCapability", "ClientCapabilities", "Client", "callManager", "CallManager", "open", "contributes", "ThreadCapabilities", "close"]
|
|
7
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// src/capabilities/index.ts
|
|
2
|
-
import { lazy } from "@dxos/app-framework";
|
|
3
|
-
var AppGraphBuilder = lazy(() => import("./app-graph-builder-Q5V3KXE3.mjs"));
|
|
4
|
-
var CallManager = lazy(() => import("./call-manager-NIPDYUVD.mjs"));
|
|
5
|
-
var IntentResolver = lazy(() => import("./intent-resolver-MWE6XLPY.mjs"));
|
|
6
|
-
var Markdown = lazy(() => import("./markdown-ZO34G7RM.mjs"));
|
|
7
|
-
var ReactRoot = lazy(() => import("./react-root-YNDNPODD.mjs"));
|
|
8
|
-
var ReactSurface = lazy(() => import("./react-surface-2AXRNTCA.mjs"));
|
|
9
|
-
var ThreadSettings = lazy(() => import("./settings-XZGPZNAU.mjs"));
|
|
10
|
-
var ThreadState = lazy(() => import("./state-H6CYONWE.mjs"));
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
AppGraphBuilder,
|
|
14
|
-
CallManager,
|
|
15
|
-
IntentResolver,
|
|
16
|
-
Markdown,
|
|
17
|
-
ReactRoot,
|
|
18
|
-
ReactSurface,
|
|
19
|
-
ThreadState
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=chunk-5ZVJ4GAS.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\nimport { DataType } from '@dxos/schema';\n\nexport const ThreadStatus = Schema.Union(\n Schema.Literal('staged'),\n Schema.Literal('active'),\n Schema.Literal('resolved'),\n);\n\nconst _ThreadType = Schema.Struct({\n name: Schema.optional(Schema.String),\n status: Schema.optional(ThreadStatus),\n messages: Schema.mutable(Schema.Array(Type.Ref(DataType.Message))),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Thread', version: '0.1.0' }));\nexport interface ThreadType extends Schema.Schema.Type<typeof _ThreadType> {}\nexport const ThreadType: Type.obj<Schema.Schema<ThreadType, Schema.Schema.Encoded<typeof _ThreadType>, never>> =\n _ThreadType;\n\nconst _ChannelType = Schema.Struct({\n name: Schema.optional(Schema.String),\n defaultThread: Type.Ref(ThreadType),\n // TODO(wittjosiah): Should be an \"ordered collection\".\n threads: Schema.mutable(Schema.Array(Type.Ref(ThreadType))),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Channel', version: '0.1.0' }));\nexport interface ChannelType extends Schema.Schema.Type<typeof _ChannelType> {}\nexport const ChannelType: Type.obj<Schema.Schema<ChannelType, Schema.Schema.Encoded<typeof _ChannelType>, never>> =\n _ChannelType;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\nimport { EchoObjectSchema } from '@dxos/react-client/echo';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport { ChannelType, ThreadType } from './schema';\nimport { THREAD_PLUGIN } from '../meta';\n\nexport namespace ThreadAction {\n const THREAD_ACTION = `${THREAD_PLUGIN}/action`;\n\n export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${THREAD_ACTION}/create-channel`, {\n input: Schema.Struct({\n spaceId: Type.SpaceId,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: ChannelType,\n }),\n }) {}\n\n export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(\n `${THREAD_ACTION}/create-channel-thread`,\n {\n input: Schema.Struct({\n channel: ChannelType,\n }),\n output: Schema.Struct({\n object: ThreadType,\n }),\n },\n ) {}\n\n export class Create extends Schema.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n anchor: Schema.optional(Schema.String),\n subject: EchoObjectSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Delete extends Schema.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {\n input: Schema.Struct({\n anchor: AnchoredTo,\n subject: EchoObjectSchema,\n thread: Schema.optional(ThreadType),\n }),\n output: Schema.Void,\n }) {}\n\n export class Select extends Schema.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {\n input: Schema.Struct({\n current: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {\n input: Schema.Struct({\n thread: ThreadType,\n }),\n output: Schema.Void,\n }) {}\n\n export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${THREAD_ACTION}/add-message`, {\n input: Schema.Struct({\n subject: EchoObjectSchema,\n anchor: AnchoredTo,\n sender: DataType.Actor,\n text: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {\n input: Schema.Struct({\n anchor: AnchoredTo,\n subject: EchoObjectSchema,\n messageId: Schema.String,\n message: Schema.optional(DataType.Message),\n messageIndex: Schema.optional(Schema.Number),\n }),\n output: Schema.Void,\n }) {}\n}\n\nexport const ThreadSettingsSchema = Schema.mutable(Schema.Struct({}));\nexport type ThreadSettingsProps = Schema.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 /** Object toolbar state. */\n toolbar: Record<string, boolean>;\n /** In-memory draft threads. */\n drafts: Record<string, AnchoredTo[]>;\n current?: string | undefined;\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Schema", "Type", "DataType", "ThreadStatus", "Schema", "Union", "Literal", "_ThreadType", "Struct", "name", "optional", "String", "status", "messages", "mutable", "Array", "Type", "Ref", "DataType", "Message", "pipe", "Obj", "typename", "version", "ThreadType", "_ChannelType", "defaultThread", "threads", "ChannelType", "Schema", "Type", "EchoObjectSchema", "AnchoredTo", "DataType", "ThreadAction", "THREAD_ACTION", "THREAD_PLUGIN", "CreateChannel", "Schema", "TaggedClass", "input", "Struct", "spaceId", "Type", "SpaceId", "name", "optional", "String", "output", "object", "ChannelType", "CreateChannelThread", "channel", "ThreadType", "Create", "anchor", "subject", "EchoObjectSchema", "Void", "Delete", "AnchoredTo", "thread", "Select", "current", "ToggleResolved", "AddMessage", "sender", "DataType", "Actor", "text", "DeleteMessage", "messageId", "message", "Message", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"]
|
|
7
|
-
}
|