@dxos/plugin-thread 0.8.3-main.7f5a14c → 0.8.3
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-KWXUKR5Q.mjs → ChannelContainer-PKFBVENP.mjs} +3 -3
- package/dist/lib/browser/{app-graph-builder-CBWNZCXB.mjs → app-graph-builder-OY7R7EJP.mjs} +2 -2
- package/dist/lib/browser/chunk-6NBVNXTM.mjs +21 -0
- package/dist/lib/browser/{chunk-WDOQXTI2.mjs → chunk-AEXWNS6Z.mjs} +5 -3
- package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +7 -0
- package/dist/lib/browser/{chunk-3EYX6CV7.mjs → chunk-PG5CTFKK.mjs} +47 -43
- package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5IRYNA5K.mjs → chunk-XZKBN3NS.mjs} +30 -30
- package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +33 -7
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-I37YU7K3.mjs → intent-resolver-FK2MDVDT.mjs} +19 -22
- package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +7 -0
- package/dist/lib/browser/{markdown-LS3XO2KB.mjs → markdown-TE5SWWNJ.mjs} +7 -8
- package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-KNCKPHGS.mjs → react-root-NK3A4VG7.mjs} +5 -5
- package/dist/lib/browser/{react-surface-ASWIBD7H.mjs → react-surface-VXUJKSOG.mjs} +5 -5
- package/dist/lib/browser/{settings-ZUY7OX24.mjs → settings-RB2RSLXV.mjs} +2 -2
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node/{ChannelContainer-MA5CFESJ.cjs → ChannelContainer-YS5YT2ML.cjs} +8 -8
- package/dist/lib/node/{ChannelContainer-MA5CFESJ.cjs.map → ChannelContainer-YS5YT2ML.cjs.map} +2 -2
- package/dist/lib/node/{app-graph-builder-K5OAVYI6.cjs → app-graph-builder-PBHJNDQY.cjs} +9 -9
- package/dist/lib/node/{chunk-3YYSLZE4.cjs → chunk-ERG7G6FF.cjs} +10 -10
- package/dist/lib/node/{chunk-WCQKISL5.cjs → chunk-IP533AMV.cjs} +64 -60
- package/dist/lib/node/chunk-IP533AMV.cjs.map +7 -0
- package/dist/lib/node/{chunk-U4SZUERU.cjs → chunk-UM36TPCT.cjs} +33 -33
- package/dist/lib/node/chunk-UM36TPCT.cjs.map +7 -0
- package/dist/lib/node/{chunk-TKHJVC2C.cjs → chunk-ZGDN3XBR.cjs} +8 -6
- package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +7 -0
- package/dist/lib/node/index.cjs +42 -16
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-2TX6HSOL.cjs → intent-resolver-SYSJ5SJG.cjs} +36 -39
- package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +7 -0
- package/dist/lib/node/{markdown-GNFW2XDO.cjs → markdown-GQIPJS2F.cjs} +13 -14
- package/dist/lib/node/markdown-GQIPJS2F.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-root-BKOXG5AC.cjs → react-root-6HHDMULJ.cjs} +9 -9
- package/dist/lib/node/{react-surface-Q5DWX3UO.cjs → react-surface-NBH42NN2.cjs} +18 -18
- package/dist/lib/node/{settings-5O5V2NOE.cjs → settings-4LQSFEDK.cjs} +6 -6
- package/dist/lib/node/types/index.cjs +6 -6
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{ChannelContainer-VGVEAUAQ.mjs → ChannelContainer-O4QJII2P.mjs} +3 -3
- package/dist/lib/node-esm/{app-graph-builder-UWJQE534.mjs → app-graph-builder-BAHBHYWI.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-KP2JBSWF.mjs → chunk-2RNIPFDA.mjs} +30 -30
- package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-EHDXOE5R.mjs → chunk-O63QJPQX.mjs} +7 -7
- package/dist/lib/node-esm/{chunk-J323VQ4P.mjs → chunk-UJMPYKT3.mjs} +5 -3
- package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-6EGLDARC.mjs → chunk-UZWVVFT3.mjs} +47 -43
- package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +33 -7
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-FHRK77IS.mjs → intent-resolver-BU73VYW3.mjs} +19 -22
- package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-HBGB3UPJ.mjs → markdown-HJUWNBLS.mjs} +7 -8
- package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-UPDDCRBV.mjs → react-root-RUXOAQNW.mjs} +5 -5
- package/dist/lib/node-esm/{react-surface-LU3CZDC4.mjs → react-surface-ELXFYKP6.mjs} +5 -5
- package/dist/lib/node-esm/{settings-KFEFSAYG.mjs → settings-EA7DFSM6.mjs} +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/capabilities/intent-resolver.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 +1 -1
- package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
- package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +128 -2
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +117 -301
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +153 -828
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/package.json +42 -42
- package/src/ThreadPlugin.tsx +26 -3
- package/src/capabilities/intent-resolver.ts +17 -18
- package/src/components/Call/Toolbar.tsx +1 -1
- package/src/components/ChannelContainer.tsx +18 -22
- package/src/components/CommentContainer.tsx +2 -2
- package/src/components/Comments.stories.tsx +12 -3
- package/src/components/CommentsContainer.tsx +21 -24
- package/src/components/ThreadComplementary.tsx +15 -16
- package/src/extensions/threads.ts +5 -6
- package/src/translations.ts +7 -2
- package/src/types/schema.ts +8 -4
- package/dist/lib/browser/chunk-3EYX6CV7.mjs.map +0 -7
- package/dist/lib/browser/chunk-5IRYNA5K.mjs.map +0 -7
- package/dist/lib/browser/chunk-FWBJHKRW.mjs +0 -21
- package/dist/lib/browser/chunk-WDOQXTI2.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-I37YU7K3.mjs.map +0 -7
- package/dist/lib/browser/markdown-LS3XO2KB.mjs.map +0 -7
- package/dist/lib/node/chunk-TKHJVC2C.cjs.map +0 -7
- package/dist/lib/node/chunk-U4SZUERU.cjs.map +0 -7
- package/dist/lib/node/chunk-WCQKISL5.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-2TX6HSOL.cjs.map +0 -7
- package/dist/lib/node/markdown-GNFW2XDO.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-6EGLDARC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-J323VQ4P.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KP2JBSWF.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-FHRK77IS.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-HBGB3UPJ.mjs.map +0 -7
- /package/dist/lib/browser/{ChannelContainer-KWXUKR5Q.mjs.map → ChannelContainer-PKFBVENP.mjs.map} +0 -0
- /package/dist/lib/browser/{app-graph-builder-CBWNZCXB.mjs.map → app-graph-builder-OY7R7EJP.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-FWBJHKRW.mjs.map → chunk-6NBVNXTM.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-KNCKPHGS.mjs.map → react-root-NK3A4VG7.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-ASWIBD7H.mjs.map → react-surface-VXUJKSOG.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-ZUY7OX24.mjs.map → settings-RB2RSLXV.mjs.map} +0 -0
- /package/dist/lib/node/{app-graph-builder-K5OAVYI6.cjs.map → app-graph-builder-PBHJNDQY.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-3YYSLZE4.cjs.map → chunk-ERG7G6FF.cjs.map} +0 -0
- /package/dist/lib/node/{react-root-BKOXG5AC.cjs.map → react-root-6HHDMULJ.cjs.map} +0 -0
- /package/dist/lib/node/{react-surface-Q5DWX3UO.cjs.map → react-surface-NBH42NN2.cjs.map} +0 -0
- /package/dist/lib/node/{settings-5O5V2NOE.cjs.map → settings-4LQSFEDK.cjs.map} +0 -0
- /package/dist/lib/node-esm/{ChannelContainer-VGVEAUAQ.mjs.map → ChannelContainer-O4QJII2P.mjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-builder-UWJQE534.mjs.map → app-graph-builder-BAHBHYWI.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-EHDXOE5R.mjs.map → chunk-O63QJPQX.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-UPDDCRBV.mjs.map → react-root-RUXOAQNW.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-surface-LU3CZDC4.mjs.map → react-surface-ELXFYKP6.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-KFEFSAYG.mjs.map → settings-EA7DFSM6.mjs.map} +0 -0
|
@@ -2,10 +2,10 @@ import { createRequire } from 'node:module';const require = createRequire(import
|
|
|
2
2
|
import {
|
|
3
3
|
ThreadAction,
|
|
4
4
|
ThreadType
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-UJMPYKT3.mjs";
|
|
6
6
|
import {
|
|
7
7
|
ChannelContainer
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-2RNIPFDA.mjs";
|
|
9
9
|
import {
|
|
10
10
|
ThreadCapabilities
|
|
11
11
|
} from "./chunk-K4KAUOKT.mjs";
|
|
@@ -159,12 +159,11 @@ var CallSidebar = () => {
|
|
|
159
159
|
// packages/plugins/plugin-thread/src/components/ThreadComplementary.tsx
|
|
160
160
|
import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
|
|
161
161
|
import React6, { useCallback as useCallback2, useMemo as useMemo3 } from "react";
|
|
162
|
-
import {
|
|
163
|
-
import { Filter, Obj, Query } from "@dxos/echo";
|
|
164
|
-
import { RelationSourceId as RelationSourceId3 } from "@dxos/echo-schema";
|
|
162
|
+
import { Capabilities, LayoutAction, createIntent, useCapability as useCapability2, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
|
|
163
|
+
import { Filter, Obj, Query, Relation as Relation3 } from "@dxos/echo";
|
|
165
164
|
import { fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
|
|
166
165
|
import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
|
|
167
|
-
import { useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
166
|
+
import { useThemeContext as useThemeContext2, useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
168
167
|
import { useAttended } from "@dxos/react-ui-attention";
|
|
169
168
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
170
169
|
import { Tabs } from "@dxos/react-ui-tabs";
|
|
@@ -177,7 +176,7 @@ import { lazy } from "react";
|
|
|
177
176
|
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
178
177
|
import { CheckCircle, X } from "@phosphor-icons/react";
|
|
179
178
|
import React3, { useCallback, useMemo as useMemo2, useRef, useState as useState2 } from "react";
|
|
180
|
-
import {
|
|
179
|
+
import { Relation } from "@dxos/echo";
|
|
181
180
|
import { RefArray } from "@dxos/live-object";
|
|
182
181
|
import { fullyQualifiedId, getSpace, useMembers } from "@dxos/react-client/echo";
|
|
183
182
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
@@ -248,7 +247,7 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
|
|
|
248
247
|
const space = getSpace(anchor);
|
|
249
248
|
const members = useMembers(space?.key);
|
|
250
249
|
const detached = !anchor.anchor;
|
|
251
|
-
const thread = anchor
|
|
250
|
+
const thread = Relation.getSource(anchor);
|
|
252
251
|
const activity = useStatus(space, fullyQualifiedId(thread));
|
|
253
252
|
const { t } = useTranslation2(THREAD_PLUGIN);
|
|
254
253
|
const threadScrollRef = useRef(null);
|
|
@@ -351,18 +350,16 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
|
|
|
351
350
|
|
|
352
351
|
// packages/plugins/plugin-thread/src/components/CommentsContainer.tsx
|
|
353
352
|
import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
|
|
354
|
-
import { ChatText } from "@phosphor-icons/react";
|
|
355
353
|
import React4, { useEffect as useEffect2 } from "react";
|
|
356
|
-
import {
|
|
354
|
+
import { Relation as Relation2 } from "@dxos/echo";
|
|
357
355
|
import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
|
|
358
|
-
import { useTranslation as useTranslation3
|
|
359
|
-
import { descriptionMessage, mx as mx2 } from "@dxos/react-ui-theme";
|
|
356
|
+
import { Callout, Icon, Trans, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
360
357
|
var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }) => {
|
|
361
358
|
var _effect = _useSignals4();
|
|
362
359
|
try {
|
|
363
360
|
const { t } = useTranslation3(THREAD_PLUGIN);
|
|
364
|
-
const filteredAnchors = showResolvedThreads ? anchors.filter((anchor) => !!anchor
|
|
365
|
-
const thread = anchor
|
|
361
|
+
const filteredAnchors = showResolvedThreads ? anchors.filter((anchor) => !!Relation2.getSource(anchor)) : anchors.filter((anchor) => {
|
|
362
|
+
const thread = Relation2.getSource(anchor);
|
|
366
363
|
return thread && thread.status !== "resolved";
|
|
367
364
|
});
|
|
368
365
|
useEffect2(() => {
|
|
@@ -375,8 +372,24 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
|
|
|
375
372
|
}, [
|
|
376
373
|
currentId
|
|
377
374
|
]);
|
|
378
|
-
|
|
379
|
-
|
|
375
|
+
if (filteredAnchors.length === 0) {
|
|
376
|
+
return /* @__PURE__ */ React4.createElement("div", {
|
|
377
|
+
role: "none",
|
|
378
|
+
className: "plb-cardSpacingBlock pli-cardSpacingInline"
|
|
379
|
+
}, /* @__PURE__ */ React4.createElement(Callout.Root, null, /* @__PURE__ */ React4.createElement(Callout.Title, null, /* @__PURE__ */ React4.createElement(Trans, {
|
|
380
|
+
t,
|
|
381
|
+
i18nKey: "no comments message",
|
|
382
|
+
components: {
|
|
383
|
+
commentIcon: /* @__PURE__ */ React4.createElement(Icon, {
|
|
384
|
+
icon: "ph--chat-text--regular",
|
|
385
|
+
size: 4,
|
|
386
|
+
classNames: "inline-block"
|
|
387
|
+
})
|
|
388
|
+
}
|
|
389
|
+
}))));
|
|
390
|
+
}
|
|
391
|
+
return filteredAnchors.map((anchor) => {
|
|
392
|
+
const thread = Relation2.getSource(anchor);
|
|
380
393
|
const threadId = fullyQualifiedId2(thread);
|
|
381
394
|
return /* @__PURE__ */ React4.createElement(CommentContainer, {
|
|
382
395
|
key: threadId,
|
|
@@ -384,20 +397,7 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
|
|
|
384
397
|
current: currentId === threadId,
|
|
385
398
|
...props
|
|
386
399
|
});
|
|
387
|
-
})
|
|
388
|
-
role: "alert",
|
|
389
|
-
className: mx2(descriptionMessage, "place-self-center rounded-lg text-center m-4")
|
|
390
|
-
}, /* @__PURE__ */ React4.createElement("h2", {
|
|
391
|
-
className: "mbe-2 font-medium text-baseText"
|
|
392
|
-
}, t("no comments title")), /* @__PURE__ */ React4.createElement("p", null, /* @__PURE__ */ React4.createElement(Trans, {
|
|
393
|
-
t,
|
|
394
|
-
i18nKey: "no comments message",
|
|
395
|
-
components: {
|
|
396
|
-
commentIcon: /* @__PURE__ */ React4.createElement(ChatText, {
|
|
397
|
-
className: "inline-block"
|
|
398
|
-
})
|
|
399
|
-
}
|
|
400
|
-
}))));
|
|
400
|
+
});
|
|
401
401
|
} finally {
|
|
402
402
|
_effect.f();
|
|
403
403
|
}
|
|
@@ -417,7 +417,7 @@ var ThreadSettings = ({ settings }) => {
|
|
|
417
417
|
};
|
|
418
418
|
|
|
419
419
|
// packages/plugins/plugin-thread/src/components/index.ts
|
|
420
|
-
var ChannelContainer2 = lazy(() => import("./ChannelContainer-
|
|
420
|
+
var ChannelContainer2 = lazy(() => import("./ChannelContainer-O4QJII2P.mjs"));
|
|
421
421
|
var ChatContainer = lazy(() => import("./ChatContainer-F6CSADV7.mjs"));
|
|
422
422
|
|
|
423
423
|
// packages/plugins/plugin-thread/src/components/ThreadComplementary.tsx
|
|
@@ -427,15 +427,20 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
427
427
|
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
428
428
|
const identity = useIdentity2();
|
|
429
429
|
const { t } = useTranslation4(THREAD_PLUGIN);
|
|
430
|
+
const { tx } = useThemeContext2();
|
|
431
|
+
const subjectId = fullyQualifiedId3(subject);
|
|
430
432
|
const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
|
|
431
|
-
const
|
|
433
|
+
const drafts = state.drafts[subjectId];
|
|
434
|
+
const viewState = useMemo3(() => getViewState(subjectId), [
|
|
435
|
+
getViewState,
|
|
436
|
+
subjectId
|
|
437
|
+
]);
|
|
432
438
|
const { showResolvedThreads } = viewState;
|
|
433
439
|
const onChangeViewState = useCallback2((nextValue) => {
|
|
434
440
|
viewState.showResolvedThreads = nextValue === "all";
|
|
435
441
|
}, [
|
|
436
442
|
viewState
|
|
437
443
|
]);
|
|
438
|
-
const drafts = state.drafts[fullyQualifiedId3(subject)];
|
|
439
444
|
const anchorSorts = useCapabilities(Capabilities.AnchorSort);
|
|
440
445
|
const sort = useMemo3(() => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort, [
|
|
441
446
|
anchorSorts,
|
|
@@ -443,11 +448,10 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
443
448
|
]);
|
|
444
449
|
const space = getSpace2(subject);
|
|
445
450
|
const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));
|
|
446
|
-
const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj.instanceOf(ThreadType, anchor
|
|
451
|
+
const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj.instanceOf(ThreadType, Relation3.getSource(anchor))).concat(drafts ?? []);
|
|
447
452
|
const attended = useAttended();
|
|
448
|
-
const qualifiedSubjectId = fullyQualifiedId3(subject);
|
|
449
453
|
const handleAttend = useCallback2((anchor) => {
|
|
450
|
-
const thread = anchor
|
|
454
|
+
const thread = Relation3.getSource(anchor);
|
|
451
455
|
const threadId = fullyQualifiedId3(thread);
|
|
452
456
|
if (state.current !== threadId) {
|
|
453
457
|
state.current = threadId;
|
|
@@ -474,7 +478,7 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
474
478
|
},
|
|
475
479
|
text
|
|
476
480
|
}));
|
|
477
|
-
const thread = anchor
|
|
481
|
+
const thread = Relation3.getSource(anchor);
|
|
478
482
|
state.current = fullyQualifiedId3(thread);
|
|
479
483
|
}, [
|
|
480
484
|
dispatch,
|
|
@@ -482,7 +486,7 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
482
486
|
subject
|
|
483
487
|
]);
|
|
484
488
|
const handleResolve = useCallback2((anchor) => dispatch(createIntent(ThreadAction.ToggleResolved, {
|
|
485
|
-
thread: anchor
|
|
489
|
+
thread: Relation3.getSource(anchor)
|
|
486
490
|
})), [
|
|
487
491
|
dispatch
|
|
488
492
|
]);
|
|
@@ -503,7 +507,7 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
503
507
|
]);
|
|
504
508
|
const comments = /* @__PURE__ */ React6.createElement(CommentsContainer, {
|
|
505
509
|
anchors,
|
|
506
|
-
currentId: attended.includes(
|
|
510
|
+
currentId: attended.includes(subjectId) ? state.current : void 0,
|
|
507
511
|
showResolvedThreads,
|
|
508
512
|
onAttend: handleAttend,
|
|
509
513
|
onComment: handleComment,
|
|
@@ -515,11 +519,11 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
515
519
|
toolbar: true
|
|
516
520
|
}, /* @__PURE__ */ React6.createElement(Tabs.Root, {
|
|
517
521
|
value: showResolvedThreads ? "all" : "unresolved",
|
|
518
|
-
onValueChange: onChangeViewState,
|
|
519
522
|
orientation: "horizontal",
|
|
520
|
-
classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin'
|
|
523
|
+
classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin',
|
|
524
|
+
onValueChange: onChangeViewState
|
|
521
525
|
}, /* @__PURE__ */ React6.createElement(Tabs.Tablist, {
|
|
522
|
-
classNames: "
|
|
526
|
+
classNames: tx("toolbar.root", "toolbar", {})
|
|
523
527
|
}, /* @__PURE__ */ React6.createElement(Tabs.Tab, {
|
|
524
528
|
value: "unresolved",
|
|
525
529
|
classNames: "text-sm"
|
|
@@ -544,4 +548,4 @@ export {
|
|
|
544
548
|
ChannelContainer2 as ChannelContainer,
|
|
545
549
|
ChatContainer
|
|
546
550
|
};
|
|
547
|
-
//# sourceMappingURL=chunk-
|
|
551
|
+
//# sourceMappingURL=chunk-UZWVVFT3.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/CallDebugPanel.tsx", "../../../src/components/CallSidebar.tsx", "../../../src/components/ThreadComplementary.tsx", "../../../src/components/index.ts", "../../../src/components/CommentContainer.tsx", "../../../src/components/CommentsContainer.tsx", "../../../src/components/ThreadSettings.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { WebRTCStats } from '@peermetrics/webrtc-stats';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { Panel } from '@dxos/devtools';\nimport { log } from '@dxos/log';\nimport { Input, useTranslation, type ThemedClassName } from '@dxos/react-ui';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\n\nimport { type GlobalState } from '../calls';\nimport { THREAD_PLUGIN } from '../meta';\n\nexport type CallDebugPanelProps = ThemedClassName<{\n state?: GlobalState;\n}>;\n\nexport const CallDebugPanel = ({ state }: CallDebugPanelProps) => {\n const users = state?.call?.users;\n const self = state?.call?.self;\n const { t } = useTranslation(THREAD_PLUGIN);\n\n const [open, setOpen] = useState(false);\n const handleToggle = () => setOpen(!open);\n const [showDetailedWebRTCStats, setShowDetailedWebRTCStats] = useState(false);\n const handleShowDetailedWebRTCStats = () => setShowDetailedWebRTCStats(!showDetailedWebRTCStats);\n\n const webrtcStats = useMemo(\n () =>\n new WebRTCStats({\n getStatsInterval: 1000,\n }),\n [],\n );\n\n const [stats, setStats] = useState<Record<string, any>>({});\n useEffect(() => {\n const pc = state?.media.peer?.session?.peerConnection;\n const handleStats = (stats: Record<string, any>) => setStats(stats.data);\n let added = false;\n if (pc && showDetailedWebRTCStats) {\n webrtcStats.addConnection({ pc, peerId: 1, connectionId: '1' });\n webrtcStats.on('stats', handleStats);\n added = true;\n }\n return () => {\n try {\n if (pc && added) {\n webrtcStats.removeConnection({ pc });\n webrtcStats.removeListener('stats', handleStats);\n }\n } catch (error) {\n log.error('error removing webrtc stats', { error, pc, peerId: 1, connectionId: '1' });\n }\n };\n }, [state?.media.peer?.session?.peerConnection, showDetailedWebRTCStats]);\n\n return (\n <Panel\n id='meeting-status'\n icon='ph--video-conference--regular'\n open={open}\n onToggle={handleToggle}\n title={t('meeting status title')}\n maxHeight={false}\n info={\n <div className='flex items-center gap-2'>\n <span title='Joined'>{self?.joined ? 'Active' : 'Inactive'}</span>\n {users?.length !== undefined && <span title='Users'>{users?.length ?? 0} User(s)</span>}\n </div>\n }\n >\n <div className='flex flex-col gap-2 overflow-y-auto'>\n <div className='flex items-row gap-2'>\n <Input.Root>\n <Input.Label classNames={'text-sm'}>{t('show webrtc stats title')}</Input.Label>\n <Input.Checkbox checked={showDetailedWebRTCStats} onCheckedChange={handleShowDetailedWebRTCStats} />\n </Input.Root>\n </div>\n <Json\n classNames='text-sm'\n data={{\n users,\n activities: state?.call?.activities,\n ...(showDetailedWebRTCStats\n ? {\n webrtc: {\n connectionState: state?.media.peer?.session?.peerConnection.connectionState,\n iceConnectionState: state?.media.peer?.session?.peerConnection.iceConnectionState,\n stats,\n },\n }\n : {}),\n tracks: state?.media.peer?.session?.peerConnection.getTransceivers().map((transceiver) => {\n const track =\n transceiver.direction === 'recvonly' ? transceiver.receiver.track : transceiver.sender.track;\n return {\n id: track?.id,\n kind: track?.kind,\n direction: transceiver.direction,\n enabled: track?.enabled,\n muted: track?.muted,\n readyState: track?.readyState,\n settings: track?.getSettings(),\n };\n }),\n callsServiceHistory: state?.media.peer?.history.get(),\n }}\n />\n </div>\n </Panel>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useCapability } from '@dxos/app-framework';\n\nimport { ChannelContainer } from './ChannelContainer';\nimport { ThreadCapabilities } from '../capabilities';\n\nexport const CallSidebar = () => {\n const call = useCapability(ThreadCapabilities.CallManager);\n return <ChannelContainer roomId={call.roomId} />;\n};\n\nexport default CallSidebar;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport {\n Capabilities,\n LayoutAction,\n createIntent,\n useCapability,\n useCapabilities,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { Filter, Obj, Query, Relation } from '@dxos/echo';\nimport { fullyQualifiedId, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { AnchoredTo } from '@dxos/schema';\n\nimport { ThreadCapabilities } from '../capabilities';\nimport { CommentsContainer } from '../components';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ThreadAction, ThreadType } from '../types';\n\nexport const ThreadComplementary = ({ subject }: { subject: any }) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const identity = useIdentity();\n const { t } = useTranslation(THREAD_PLUGIN);\n const { tx } = useThemeContext();\n const subjectId = fullyQualifiedId(subject);\n\n const { state, getViewState } = useCapability(ThreadCapabilities.MutableState);\n const drafts = state.drafts[subjectId];\n const viewState = useMemo(() => getViewState(subjectId), [getViewState, subjectId]);\n const { showResolvedThreads } = viewState;\n const onChangeViewState = useCallback(\n (nextValue: string) => {\n viewState.showResolvedThreads = nextValue === 'all';\n },\n [viewState],\n );\n\n const anchorSorts = useCapabilities(Capabilities.AnchorSort);\n const sort = useMemo(\n () => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort,\n [anchorSorts, subject],\n );\n\n const space = getSpace(subject);\n const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));\n const anchors = objectsAnchoredTo\n .toSorted((a, b) => sort?.(a, b) ?? 0)\n .filter((anchor) => Obj.instanceOf(ThreadType, Relation.getSource(anchor)))\n .concat(drafts ?? []);\n\n const attended = useAttended();\n\n const handleAttend = useCallback(\n (anchor: AnchoredTo) => {\n const thread = Relation.getSource(anchor) as ThreadType;\n const threadId = fullyQualifiedId(thread);\n\n if (state.current !== threadId) {\n state.current = threadId;\n\n // TODO(wittjosiah): Should this be a thread-specific intent?\n // The layout doesn't know about threads and this working depends on other plugins conditionally handling it.\n // This may be overloading this intent or highjacking its intended purpose.\n void dispatch(\n createIntent(LayoutAction.ScrollIntoView, {\n part: 'current',\n subject: fullyQualifiedId(subject),\n options: {\n cursor: anchor.anchor,\n ref: threadId,\n },\n }),\n );\n }\n },\n [state.current, dispatch, subject],\n );\n\n const handleComment = useCallback(\n async (anchor: AnchoredTo, text: string) => {\n await dispatch(\n createIntent(ThreadAction.AddMessage, { anchor, subject, sender: { identityDid: identity?.did }, text }),\n );\n\n const thread = Relation.getSource(anchor) as ThreadType;\n state.current = fullyQualifiedId(thread);\n },\n [dispatch, identity, subject],\n );\n\n const handleResolve = useCallback(\n (anchor: AnchoredTo) =>\n dispatch(createIntent(ThreadAction.ToggleResolved, { thread: Relation.getSource(anchor) as ThreadType })),\n [dispatch],\n );\n\n const handleThreadDelete = useCallback(\n (anchor: AnchoredTo) => dispatch(createIntent(ThreadAction.Delete, { anchor, subject })),\n [dispatch, subject],\n );\n\n const handleMessageDelete = useCallback(\n (anchor: AnchoredTo, messageId: string) =>\n dispatch(createIntent(ThreadAction.DeleteMessage, { anchor, subject, messageId })),\n [dispatch, subject],\n );\n\n const comments = (\n <CommentsContainer\n anchors={anchors}\n currentId={attended.includes(subjectId) ? state.current : undefined}\n showResolvedThreads={showResolvedThreads}\n onAttend={handleAttend}\n onComment={handleComment}\n onResolve={handleResolve}\n onMessageDelete={handleMessageDelete}\n onThreadDelete={handleThreadDelete}\n />\n );\n\n return (\n <StackItem.Content toolbar>\n <Tabs.Root\n value={showResolvedThreads ? 'all' : 'unresolved'}\n orientation='horizontal'\n classNames='contents [&_[role=\"tabpanel\"]]:min-bs-0 [&_[role=\"tabpanel\"]]:overflow-y-auto [&_[role=\"tabpanel\"]]:scrollbar-thin'\n onValueChange={onChangeViewState}\n >\n <Tabs.Tablist classNames={tx('toolbar.root', 'toolbar', {})}>\n <Tabs.Tab value='unresolved' classNames='text-sm'>\n {t('show unresolved label')}\n </Tabs.Tab>\n <Tabs.Tab value='all' classNames='text-sm'>\n {t('show all label')}\n </Tabs.Tab>\n </Tabs.Tablist>\n <Tabs.Tabpanel value='all'>{showResolvedThreads && comments}</Tabs.Tabpanel>\n <Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>\n </Tabs.Root>\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const ChannelContainer = lazy(() => import('./ChannelContainer'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n\n// TODO(wittjosiah): Suspense boundary for sidebar?\nexport * from './Call';\nexport * from './CallDebugPanel';\nexport * from './CallSidebar';\nexport * from './CommentContainer';\nexport * from './CommentsContainer';\nexport * from './MessageContainer';\nexport * from './ThreadComplementary';\nexport * from './ThreadSettings';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CheckCircle, X } from '@phosphor-icons/react';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Relation } from '@dxos/echo';\nimport { RefArray } from '@dxos/live-object';\nimport { fullyQualifiedId, getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Button, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport {\n MessageTextbox,\n type MessageTextboxProps,\n Thread,\n ThreadFooter,\n ThreadHeading,\n type ThreadProps,\n} from '@dxos/react-ui-thread';\nimport { type AnchoredTo } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadType } from '../types';\nimport { getMessageMetadata } from '../util';\n\nconst sizeClass = getSize(4);\n\n// TODO(thure): #8149\nconst commentControlClassNames = '!p-1 !min-bs-0 transition-opacity';\n\nconst ToggleResolvedButton = ({\n isResolved,\n onResolve,\n}: {\n isResolved: boolean | undefined;\n onResolve: () => void;\n}) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const label = t(isResolved ? 'mark as unresolved label' : 'mark as resolved label');\n return (\n <Tooltip.Trigger asChild content={label}>\n <Button\n variant='ghost'\n data-testid='thread.toggle-resolved'\n onClick={onResolve}\n classNames={[commentControlClassNames, !isResolved && hoverableControlItem]}\n >\n <span className='sr-only'>{label}</span>\n {isResolved ? <CheckCircle className={sizeClass} weight='fill' /> : <CheckCircle className={sizeClass} />}\n </Button>\n </Tooltip.Trigger>\n );\n};\n\nconst DeleteThreadButton = ({ onDelete }: { onDelete: () => void }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const label = t('delete thread label');\n return (\n <Tooltip.Trigger asChild content={label}>\n <Button\n variant='ghost'\n data-testid='thread.delete'\n onClick={onDelete}\n classNames={[commentControlClassNames, hoverableControlItem]}\n >\n <span className='sr-only'>{label}</span>\n <X className={sizeClass} />\n </Button>\n </Tooltip.Trigger>\n );\n};\n\nexport type CommentContainerProps = {\n anchor: AnchoredTo;\n onAttend?: (anchor: AnchoredTo) => void;\n onComment?: (anchor: AnchoredTo, message: string) => void;\n onResolve?: (anchor: AnchoredTo) => void;\n onMessageDelete?: (anchor: AnchoredTo, messageId: string) => void;\n onThreadDelete?: (anchor: AnchoredTo) => void;\n} & Pick<ThreadProps, 'current'>;\n\nexport const CommentContainer = ({\n anchor,\n current,\n onAttend,\n onComment,\n onResolve,\n onMessageDelete,\n onThreadDelete,\n}: CommentContainerProps) => {\n const identity = useIdentity()!;\n const space = getSpace(anchor);\n const members = useMembers(space?.key);\n const detached = !anchor.anchor;\n const thread = Relation.getSource(anchor) as ThreadType;\n const activity = useStatus(space, fullyQualifiedId(thread));\n const { t } = useTranslation(THREAD_PLUGIN);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(fullyQualifiedId(thread), identity);\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 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 [_count],\n );\n\n // TODO(thure): Factor out.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n const handleAttend = useCallback(() => onAttend?.(anchor), [onAttend, anchor]);\n const handleResolve = useCallback(() => onResolve?.(anchor), [onResolve, anchor]);\n const handleMessageDelete = useCallback((id: string) => onMessageDelete?.(anchor, id), [onMessageDelete, anchor]);\n const handleThreadDelete = useCallback(() => onThreadDelete?.(anchor), [onThreadDelete, anchor]);\n\n const handleComment: MessageTextboxProps['onSend'] = useCallback(() => {\n if (!messageRef.current) {\n return false;\n }\n\n onComment?.(anchor, messageRef.current);\n messageRef.current = '';\n scrollToEnd('instant');\n rerenderEditor();\n\n return true;\n }, [anchor, identity]);\n\n return (\n <Thread onClickCapture={handleAttend} onFocusCapture={handleAttend} current={current} id={fullyQualifiedId(thread)}>\n <div\n role='none'\n className={mx(\n 'col-span-2 grid grid-cols-[var(--rail-size)_1fr_min-content]',\n hoverableControls,\n hoverableFocusedWithinControls,\n )}\n >\n {detached ? (\n <Tooltip.Trigger asChild content={t('detached thread label')} side='top'>\n <ThreadHeading detached>{thread.name}</ThreadHeading>\n </Tooltip.Trigger>\n ) : (\n <ThreadHeading>{thread.name}</ThreadHeading>\n )}\n <div className='flex flex-row items-center pli-1'>\n {thread.status === 'staged' && <Tag palette='neutral'>{t('draft button')}</Tag>}\n {onResolve && !(thread?.status === 'staged') && (\n <ToggleResolvedButton isResolved={thread?.status === 'resolved'} onResolve={handleResolve} />\n )}\n {onThreadDelete && <DeleteThreadButton onDelete={handleThreadDelete} />}\n </div>\n </div>\n {/** TODO(dmaretskyi): How's `thread.messages` undefined? */}\n {RefArray.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => (\n <MessageContainer\n key={message.id}\n editable\n message={message}\n members={members}\n onDelete={handleMessageDelete}\n />\n ))}\n {/*\n TODO(wittjosiah): Can't autofocus this generally.\n There can be multiple threads with inputs and they can't all be focused.\n Also, it steals focus from documents when first rendered.\n Need to find a way to autofocus in one scenario only: when a new thread is created.\n */}\n <MessageTextbox extensions={extensions} onSend={handleComment} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\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 </Thread>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect } from 'react';\n\nimport { Relation } from '@dxos/echo';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';\nimport { type AnchoredTo } from '@dxos/schema';\n\nimport { CommentContainer, type CommentContainerProps } from './CommentContainer';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadType } from '../types';\n\nexport type ThreadsContainerProps = Omit<CommentContainerProps, 'anchor' | 'current'> & {\n anchors: AnchoredTo[];\n currentId?: string;\n showResolvedThreads?: boolean;\n};\n\n/**\n * Comment threads.\n */\nexport const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: ThreadsContainerProps) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): There seems to be a race between thread and anchor being deleted.\n const filteredAnchors = showResolvedThreads\n ? anchors.filter((anchor) => !!Relation.getSource(anchor))\n : anchors.filter((anchor) => {\n const thread = Relation.getSource(anchor);\n return thread && thread.status !== 'resolved';\n });\n\n useEffect(() => {\n if (currentId) {\n document.getElementById(currentId)?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n }, [currentId]);\n\n if (filteredAnchors.length === 0) {\n return (\n <div role='none' className='plb-cardSpacingBlock pli-cardSpacingInline'>\n <Callout.Root>\n <Callout.Title>\n <Trans\n {...{\n t,\n i18nKey: 'no comments message',\n components: {\n commentIcon: <Icon icon='ph--chat-text--regular' size={4} classNames='inline-block' />,\n },\n }}\n />\n </Callout.Title>\n </Callout.Root>\n </div>\n );\n }\n\n return filteredAnchors.map((anchor) => {\n const thread = Relation.getSource(anchor) as ThreadType;\n const threadId = fullyQualifiedId(thread);\n return <CommentContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;\n });\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\n// import { useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer } from '@dxos/react-ui-form';\n\n// import { THREAD_PLUGIN } from '../meta';\nimport type { ThreadSettingsProps } from '../types';\n\nexport const ThreadSettings = ({ settings }: { settings: ThreadSettingsProps }) => {\n // const { t } = useTranslation(THREAD_PLUGIN);\n\n return <DeprecatedFormContainer></DeprecatedFormContainer>;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["WebRTCStats", "React", "useEffect", "useMemo", "useState", "Panel", "log", "Input", "useTranslation", "Json", "CallDebugPanel", "state", "users", "call", "self", "t", "useTranslation", "THREAD_PLUGIN", "open", "setOpen", "useState", "handleToggle", "showDetailedWebRTCStats", "setShowDetailedWebRTCStats", "handleShowDetailedWebRTCStats", "webrtcStats", "useMemo", "WebRTCStats", "getStatsInterval", "stats", "setStats", "useEffect", "pc", "media", "peer", "session", "peerConnection", "handleStats", "data", "added", "addConnection", "peerId", "connectionId", "on", "removeConnection", "removeListener", "error", "log", "Panel", "id", "icon", "onToggle", "title", "maxHeight", "info", "div", "className", "span", "joined", "length", "undefined", "Input", "Root", "Label", "classNames", "Checkbox", "checked", "onCheckedChange", "Json", "activities", "webrtc", "connectionState", "iceConnectionState", "tracks", "getTransceivers", "map", "transceiver", "track", "direction", "receiver", "sender", "kind", "enabled", "muted", "readyState", "settings", "getSettings", "callsServiceHistory", "history", "get", "React", "useCapability", "CallSidebar", "call", "useCapability", "ThreadCapabilities", "CallManager", "React", "ChannelContainer", "roomId", "React", "useCallback", "useMemo", "Capabilities", "LayoutAction", "createIntent", "useCapability", "useCapabilities", "useIntentDispatcher", "Filter", "Obj", "Query", "Relation", "fullyQualifiedId", "getSpace", "useQuery", "useIdentity", "useThemeContext", "useTranslation", "useAttended", "StackItem", "Tabs", "AnchoredTo", "lazy", "CheckCircle", "X", "React", "useCallback", "useMemo", "useRef", "useState", "Relation", "RefArray", "fullyQualifiedId", "getSpace", "useMembers", "useIdentity", "Button", "Tag", "Tooltip", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "listener", "getSize", "hoverableControlItem", "hoverableControls", "hoverableFocusedWithinControls", "mx", "MessageTextbox", "Thread", "ThreadFooter", "ThreadHeading", "isNonNullable", "sizeClass", "getSize", "commentControlClassNames", "ToggleResolvedButton", "isResolved", "onResolve", "t", "useTranslation", "THREAD_PLUGIN", "label", "React", "Tooltip", "Trigger", "asChild", "content", "Button", "variant", "data-testid", "onClick", "classNames", "hoverableControlItem", "span", "className", "CheckCircle", "weight", "DeleteThreadButton", "onDelete", "X", "CommentContainer", "anchor", "current", "onAttend", "onComment", "onMessageDelete", "onThreadDelete", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "detached", "thread", "Relation", "getSource", "activity", "useStatus", "fullyQualifiedId", "threadScrollRef", "useRef", "themeMode", "useThemeContext", "textboxMetadata", "getMessageMetadata", "_count", "_setCount", "useState", "rerenderEditor", "count", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "handleAttend", "useCallback", "handleResolve", "handleMessageDelete", "id", "handleThreadDelete", "handleComment", "Thread", "onClickCapture", "onFocusCapture", "div", "role", "mx", "hoverableControls", "hoverableFocusedWithinControls", "side", "ThreadHeading", "name", "status", "Tag", "palette", "RefArray", "targets", "messages", "filter", "isNonNullable", "map", "message", "MessageContainer", "editable", "MessageTextbox", "onSend", "ThreadFooter", "ref", "React", "useEffect", "Relation", "fullyQualifiedId", "Callout", "Icon", "Trans", "useTranslation", "CommentsContainer", "anchors", "currentId", "showResolvedThreads", "props", "t", "useTranslation", "THREAD_PLUGIN", "filteredAnchors", "filter", "anchor", "Relation", "getSource", "thread", "status", "useEffect", "document", "getElementById", "scrollIntoView", "behavior", "block", "length", "React", "div", "role", "className", "Callout", "Root", "Title", "Trans", "i18nKey", "components", "commentIcon", "Icon", "icon", "size", "classNames", "map", "threadId", "fullyQualifiedId", "CommentContainer", "key", "current", "React", "DeprecatedFormContainer", "ThreadSettings", "settings", "React", "DeprecatedFormContainer", "ChannelContainer", "lazy", "ChatContainer", "ThreadComplementary", "subject", "dispatchPromise", "dispatch", "useIntentDispatcher", "identity", "useIdentity", "t", "useTranslation", "THREAD_PLUGIN", "tx", "useThemeContext", "subjectId", "fullyQualifiedId", "state", "getViewState", "useCapability", "ThreadCapabilities", "MutableState", "drafts", "viewState", "useMemo", "showResolvedThreads", "onChangeViewState", "useCallback", "nextValue", "anchorSorts", "useCapabilities", "Capabilities", "AnchorSort", "sort", "find", "key", "Obj", "getTypename", "space", "getSpace", "objectsAnchoredTo", "useQuery", "Query", "select", "Filter", "ids", "id", "targetOf", "AnchoredTo", "anchors", "toSorted", "a", "b", "filter", "anchor", "instanceOf", "ThreadType", "Relation", "getSource", "concat", "attended", "useAttended", "handleAttend", "thread", "threadId", "current", "createIntent", "LayoutAction", "ScrollIntoView", "part", "options", "cursor", "ref", "handleComment", "text", "ThreadAction", "AddMessage", "sender", "identityDid", "did", "handleResolve", "ToggleResolved", "handleThreadDelete", "Delete", "handleMessageDelete", "messageId", "DeleteMessage", "comments", "React", "CommentsContainer", "currentId", "includes", "undefined", "onAttend", "onComment", "onResolve", "onMessageDelete", "onThreadDelete", "StackItem", "Content", "toolbar", "Tabs", "Root", "value", "orientation", "classNames", "onValueChange", "Tablist", "Tab", "Tabpanel"]
|
|
7
|
+
}
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
ChannelType,
|
|
20
20
|
ThreadAction,
|
|
21
21
|
ThreadType
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-UJMPYKT3.mjs";
|
|
23
23
|
import {
|
|
24
24
|
AppGraphBuilder,
|
|
25
25
|
CallManager as CallManager2,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
ReactRoot,
|
|
29
29
|
ReactSurface,
|
|
30
30
|
ThreadState
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-O63QJPQX.mjs";
|
|
32
32
|
import {
|
|
33
33
|
ThreadCapabilities
|
|
34
34
|
} from "./chunk-K4KAUOKT.mjs";
|
|
@@ -44,21 +44,26 @@ import {
|
|
|
44
44
|
} from "./chunk-ESQC6SYE.mjs";
|
|
45
45
|
|
|
46
46
|
// packages/plugins/plugin-thread/src/ThreadPlugin.tsx
|
|
47
|
+
import { Effect } from "effect";
|
|
47
48
|
import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from "@dxos/app-framework";
|
|
48
|
-
import { Ref } from "@dxos/echo";
|
|
49
|
+
import { Ref, Type as Type2 } from "@dxos/echo";
|
|
49
50
|
import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
|
|
50
51
|
import { MarkdownEvents } from "@dxos/plugin-markdown";
|
|
51
|
-
import { SpaceCapabilities } from "@dxos/plugin-space";
|
|
52
|
-
import { defineObjectForm } from "@dxos/plugin-space/types";
|
|
52
|
+
import { SpaceCapabilities, SpaceEvents } from "@dxos/plugin-space";
|
|
53
|
+
import { CollectionAction, defineObjectForm } from "@dxos/plugin-space/types";
|
|
53
54
|
import { translations as threadTranslations } from "@dxos/react-ui-thread";
|
|
54
55
|
import { AnchoredTo, DataType } from "@dxos/schema";
|
|
55
56
|
|
|
56
57
|
// packages/plugins/plugin-thread/src/translations.ts
|
|
58
|
+
import { Type } from "@dxos/echo";
|
|
57
59
|
var translations_default = [
|
|
58
60
|
{
|
|
59
61
|
"en-US": {
|
|
60
|
-
[ChannelType
|
|
62
|
+
[Type.getTypename(ChannelType)]: {
|
|
61
63
|
"typename label": "Channel",
|
|
64
|
+
"typename label_zero": "Channels",
|
|
65
|
+
"typename label_one": "Channel",
|
|
66
|
+
"typename label_other": "Channels",
|
|
62
67
|
"object name placeholder": "New channel"
|
|
63
68
|
},
|
|
64
69
|
[THREAD_PLUGIN]: {
|
|
@@ -87,7 +92,7 @@ var translations_default = [
|
|
|
87
92
|
"open comments panel label": "Show Comments",
|
|
88
93
|
"comments label": "Comments",
|
|
89
94
|
"show all label": "All comments",
|
|
90
|
-
"show unresolved label": "Unresolved
|
|
95
|
+
"show unresolved label": "Unresolved comments",
|
|
91
96
|
"channel companion label": "Channel",
|
|
92
97
|
"call panel label": "Active Call",
|
|
93
98
|
"display name label": "Display name",
|
|
@@ -230,6 +235,27 @@ var ThreadPlugin = () => definePlugin(meta, [
|
|
|
230
235
|
DataType.MessageV1ToV2
|
|
231
236
|
])
|
|
232
237
|
}),
|
|
238
|
+
defineModule({
|
|
239
|
+
id: `${meta.id}/module/on-space-created`,
|
|
240
|
+
activatesOn: SpaceEvents.SpaceCreated,
|
|
241
|
+
activate: (context) => {
|
|
242
|
+
const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);
|
|
243
|
+
return contributes(SpaceCapabilities.OnSpaceCreated, async ({ space, rootCollection }) => {
|
|
244
|
+
const program = Effect.gen(function* () {
|
|
245
|
+
const { object: collection } = yield* dispatch(createIntent(CollectionAction.CreateQueryCollection, {
|
|
246
|
+
typename: Type2.getTypename(ChannelType)
|
|
247
|
+
}));
|
|
248
|
+
rootCollection.objects.push(Ref.make(collection));
|
|
249
|
+
const { object: channel } = yield* dispatch(createIntent(ThreadAction.CreateChannel, {
|
|
250
|
+
name: "General",
|
|
251
|
+
spaceId: space.id
|
|
252
|
+
}));
|
|
253
|
+
space.db.add(channel);
|
|
254
|
+
});
|
|
255
|
+
await Effect.runPromise(program);
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}),
|
|
233
259
|
defineModule({
|
|
234
260
|
id: `${meta.id}/module/markdown`,
|
|
235
261
|
activatesOn: MarkdownEvents.SetupExtensions,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ThreadPlugin.tsx", "../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { Ref } from '@dxos/echo';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\nimport { translations as threadTranslations } from '@dxos/react-ui-thread';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport {\n AppGraphBuilder,\n CallManager,\n IntentResolver,\n Markdown,\n ReactRoot,\n ReactSurface,\n ThreadState,\n} from './capabilities';\nimport { meta, THREAD_ITEM } from './meta';\nimport translations from './translations';\nimport { ChannelType, ThreadAction, ThreadType } from './types';\n\n// TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.\n// NOTE(burdon): Review/discuss CursorConverter semantics.\n\n// TODO(wittjosiah): Rename to ChatPlugin.\n// TODO(wittjosiah): Enabling comments should likely be factored out of this plugin but depend on it's capabilities.\nexport const ThreadPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/call-manager`,\n activatesOn: ClientEvents.ClientReady,\n activate: CallManager,\n }),\n // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.\n // defineModule({\n // id: `${meta.id}/module/settings`,\n // activatesOn: Events.SetupSettings,\n // activate: ThreadSettings,\n // }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: ThreadState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: ChannelType.typename,\n metadata: {\n icon: 'ph--hash--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: ThreadType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (thread: ThreadType) => await Ref.Array.loadAll(thread.messages ?? []),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: DataType.Message.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (message: DataType.Message) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: THREAD_ITEM,\n metadata: {\n parse: (item: ThreadType, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.name, data: item };\n case 'object':\n return item;\n case 'view-object':\n return { id: `${item.id}-view`, object: item };\n }\n },\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ChannelType,\n getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, { spaceId: options.space.id }),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(ClientCapabilities.Schema, [AnchoredTo, ThreadType, DataType.Message, DataType.MessageV1]),\n }),\n defineModule({\n id: `${meta.id}/module/migration`,\n activatesOn: ClientEvents.SetupMigration,\n activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),\n }),\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { THREAD_PLUGIN } from './meta';\nimport { ChannelType } from './types';\n\nexport default [\n {\n 'en-US': {\n [ChannelType
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,cAAcC,cAAcC,cAAcC,cAAc;AAC5F,SAASC,
|
|
6
|
-
"names": ["Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "Ref", "ClientCapabilities", "ClientEvents", "MarkdownEvents", "SpaceCapabilities", "defineObjectForm", "translations", "threadTranslations", "AnchoredTo", "DataType", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Effect } from 'effect';\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { Ref, Type } from '@dxos/echo';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities, SpaceEvents } from '@dxos/plugin-space';\nimport { CollectionAction, defineObjectForm } from '@dxos/plugin-space/types';\nimport { translations as threadTranslations } from '@dxos/react-ui-thread';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport {\n AppGraphBuilder,\n CallManager,\n IntentResolver,\n Markdown,\n ReactRoot,\n ReactSurface,\n ThreadState,\n} from './capabilities';\nimport { meta, THREAD_ITEM } from './meta';\nimport translations from './translations';\nimport { ChannelType, ThreadAction, ThreadType } from './types';\n\n// TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.\n// NOTE(burdon): Review/discuss CursorConverter semantics.\n\n// TODO(wittjosiah): Rename to ChatPlugin.\n// TODO(wittjosiah): Enabling comments should likely be factored out of this plugin but depend on it's capabilities.\nexport const ThreadPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/call-manager`,\n activatesOn: ClientEvents.ClientReady,\n activate: CallManager,\n }),\n // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.\n // defineModule({\n // id: `${meta.id}/module/settings`,\n // activatesOn: Events.SetupSettings,\n // activate: ThreadSettings,\n // }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: ThreadState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: ChannelType.typename,\n metadata: {\n icon: 'ph--hash--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: ThreadType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (thread: ThreadType) => await Ref.Array.loadAll(thread.messages ?? []),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: DataType.Message.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (message: DataType.Message) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: THREAD_ITEM,\n metadata: {\n parse: (item: ThreadType, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.name, data: item };\n case 'object':\n return item;\n case 'view-object':\n return { id: `${item.id}-view`, object: item };\n }\n },\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ChannelType,\n getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, { spaceId: options.space.id }),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(ClientCapabilities.Schema, [AnchoredTo, ThreadType, DataType.Message, DataType.MessageV1]),\n }),\n defineModule({\n id: `${meta.id}/module/migration`,\n activatesOn: ClientEvents.SetupMigration,\n activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),\n }),\n defineModule({\n id: `${meta.id}/module/on-space-created`,\n activatesOn: SpaceEvents.SpaceCreated,\n activate: (context) => {\n const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n return contributes(SpaceCapabilities.OnSpaceCreated, async ({ space, rootCollection }) => {\n const program = Effect.gen(function* () {\n const { object: collection } = yield* dispatch(\n createIntent(CollectionAction.CreateQueryCollection, { typename: Type.getTypename(ChannelType) }),\n );\n rootCollection.objects.push(Ref.make(collection));\n\n const { object: channel } = yield* dispatch(\n createIntent(ThreadAction.CreateChannel, { name: 'General', spaceId: space.id }),\n );\n space.db.add(channel);\n });\n await Effect.runPromise(program);\n });\n },\n }),\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Type } from '@dxos/echo';\n\nimport { THREAD_PLUGIN } from './meta';\nimport { ChannelType } from './types';\n\nexport default [\n {\n 'en-US': {\n [Type.getTypename(ChannelType)]: {\n 'typename label': 'Channel',\n 'typename label_zero': 'Channels',\n 'typename label_one': 'Channel',\n 'typename label_other': 'Channels',\n 'object name placeholder': 'New channel',\n },\n [THREAD_PLUGIN]: {\n 'plugin name': 'Chat',\n 'channel title label': 'Title',\n 'message placeholder': 'Reply…',\n 'activity message': 'Processing…',\n 'anonymous label': 'Anonymous',\n 'delete message block label': 'Delete message block',\n 'detached thread label': 'Referenced content was removed',\n 'delete thread label': 'Delete thread',\n 'thread deleted label': 'You deleted a thread.',\n 'message deleted label': 'You deleted a message.',\n 'comments heading': 'Comments',\n 'chat heading': 'Chat',\n 'draft button': 'DRAFT',\n 'no comments title': 'Comments',\n 'no comments message':\n 'Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.',\n 'toggle show resolved': 'Show resolved',\n 'unnamed object threads label': 'Threads',\n 'mark as resolved label': 'Mark as resolved',\n 'mark as unresolved label': 'Mark as unresolved',\n 'save message label': 'Save',\n 'edit message label': 'Edit',\n 'delete message label': 'Delete message',\n 'open comments panel label': 'Show Comments',\n 'comments label': 'Comments',\n 'show all label': 'All comments',\n 'show unresolved label': 'Unresolved comments',\n\n 'channel companion label': 'Channel',\n 'call panel label': 'Active Call',\n\n 'display name label': 'Display name',\n 'display name description': 'Set your display name before joining a meeting.',\n 'display name input placeholder': 'Enter your name',\n 'set display name label': 'Continue',\n\n 'call tab label': 'Call',\n 'meeting status title': 'Meeting',\n 'share meeting link label': 'Share meeting',\n 'show webrtc stats title': 'Detailed WebRTC Stats',\n\n 'meeting summary label': 'Summary',\n 'summarize label': 'Summarize',\n 'summarizing label': 'Creating summary...',\n 'create summary message': 'A summary doesn’t exist for this meeting yet. Create one now?',\n\n 'join call': 'Join',\n 'leave call': 'Leave',\n\n 'lobby participants_zero': 'No participants',\n 'lobby participants_one': '1 participant',\n 'lobby participants_other': '{{count}} participants',\n\n 'icon pin': 'Pin video',\n 'icon unpin': 'Unpin video',\n 'icon wave': 'Waving',\n 'icon muted': 'Muted',\n 'icon speaking': 'Speaking',\n\n 'mic on': 'Unmute',\n 'mic off': 'Mute',\n 'camera on': 'Turn camera on',\n 'camera off': 'Turn camera off',\n 'camera off label': 'Camera off',\n\n 'raise hand': 'Raise hand',\n 'lower hand': 'Lower hand',\n 'screenshare on': 'Share screen',\n 'screenshare off': 'Stop streaming',\n },\n },\n },\n];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Effect", "Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "Ref", "Type", "ClientCapabilities", "ClientEvents", "MarkdownEvents", "SpaceCapabilities", "SpaceEvents", "CollectionAction", "defineObjectForm", "translations", "threadTranslations", "AnchoredTo", "DataType", "Type", "Type", "getTypename", "ChannelType", "THREAD_PLUGIN", "ThreadPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "ClientEvents", "ClientReady", "activate", "CallManager", "Events", "SetupSettings", "ThreadState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "threadTranslations", "SetupMetadata", "Metadata", "ChannelType", "typename", "metadata", "icon", "ThreadType", "loadReferences", "thread", "Ref", "Array", "loadAll", "messages", "DataType", "Message", "message", "THREAD_ITEM", "parse", "item", "type", "label", "name", "data", "object", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "options", "createIntent", "ThreadAction", "CreateChannel", "spaceId", "space", "ClientCapabilities", "Schema", "AnchoredTo", "MessageV1", "SetupMigration", "Migration", "MessageV1ToV2", "SpaceEvents", "SpaceCreated", "context", "dispatch", "getCapability", "IntentDispatcher", "OnSpaceCreated", "rootCollection", "program", "Effect", "gen", "collection", "CollectionAction", "CreateQueryCollection", "Type", "getTypename", "objects", "push", "make", "channel", "db", "add", "runPromise", "MarkdownEvents", "SetupExtensions", "Markdown", "Startup", "ReactRoot", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "AppGraphBuilder"]
|
|
7
7
|
}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
ChannelType,
|
|
4
4
|
ThreadAction,
|
|
5
5
|
ThreadType
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UJMPYKT3.mjs";
|
|
7
7
|
import {
|
|
8
8
|
ThreadCapabilities
|
|
9
9
|
} from "./chunk-K4KAUOKT.mjs";
|
|
@@ -12,10 +12,9 @@ import {
|
|
|
12
12
|
} from "./chunk-ESQC6SYE.mjs";
|
|
13
13
|
|
|
14
14
|
// packages/plugins/plugin-thread/src/capabilities/intent-resolver.ts
|
|
15
|
-
import { batch } from "@preact/signals-core";
|
|
16
15
|
import { Capabilities, contributes, createIntent, createResolver } from "@dxos/app-framework";
|
|
16
|
+
import { sleep } from "@dxos/async";
|
|
17
17
|
import { Obj, Relation } from "@dxos/echo";
|
|
18
|
-
import { RelationSourceId, RelationTargetId } from "@dxos/echo-schema";
|
|
19
18
|
import { invariant } from "@dxos/invariant";
|
|
20
19
|
import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from "@dxos/plugin-deck/types";
|
|
21
20
|
import { ObservabilityAction } from "@dxos/plugin-observability/types";
|
|
@@ -61,7 +60,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
61
60
|
const space = getSpace(subject);
|
|
62
61
|
invariant(space, "Space not found", {
|
|
63
62
|
F: __dxlog_file,
|
|
64
|
-
L:
|
|
63
|
+
L: 50,
|
|
65
64
|
S: void 0,
|
|
66
65
|
A: [
|
|
67
66
|
"space",
|
|
@@ -76,8 +75,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
76
75
|
status: "staged"
|
|
77
76
|
});
|
|
78
77
|
const anchor = Relation.make(AnchoredTo, {
|
|
79
|
-
[
|
|
80
|
-
[
|
|
78
|
+
[Relation.Source]: thread,
|
|
79
|
+
[Relation.Target]: subject,
|
|
81
80
|
anchor: _anchor
|
|
82
81
|
});
|
|
83
82
|
const draft = state.drafts[subjectId];
|
|
@@ -119,7 +118,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
119
118
|
const space = getSpace(thread);
|
|
120
119
|
invariant(space, "Space not found", {
|
|
121
120
|
F: __dxlog_file,
|
|
122
|
-
L:
|
|
121
|
+
L: 96,
|
|
123
122
|
S: void 0,
|
|
124
123
|
A: [
|
|
125
124
|
"space",
|
|
@@ -142,8 +141,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
142
141
|
}),
|
|
143
142
|
createResolver({
|
|
144
143
|
intent: ThreadAction.Delete,
|
|
145
|
-
resolve: ({ subject, anchor, thread: _thread }, undo) => {
|
|
146
|
-
const thread = _thread ?? anchor
|
|
144
|
+
resolve: async ({ subject, anchor, thread: _thread }, undo) => {
|
|
145
|
+
const thread = _thread ?? Relation.getSource(anchor);
|
|
147
146
|
const { state } = context.getCapability(ThreadCapabilities.MutableState);
|
|
148
147
|
const subjectId = fullyQualifiedId(subject);
|
|
149
148
|
const draft = state.drafts[subjectId];
|
|
@@ -159,10 +158,9 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
159
158
|
return;
|
|
160
159
|
}
|
|
161
160
|
if (!undo) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
});
|
|
161
|
+
space.db.remove(anchor);
|
|
162
|
+
await sleep(100);
|
|
163
|
+
space.db.remove(thread);
|
|
166
164
|
return {
|
|
167
165
|
undoable: {
|
|
168
166
|
message: [
|
|
@@ -187,10 +185,9 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
187
185
|
]
|
|
188
186
|
};
|
|
189
187
|
} else {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
});
|
|
188
|
+
space.db.add(thread);
|
|
189
|
+
await sleep(100);
|
|
190
|
+
space.db.add(anchor);
|
|
194
191
|
return {
|
|
195
192
|
intents: [
|
|
196
193
|
createIntent(ObservabilityAction.SendEvent, {
|
|
@@ -208,13 +205,13 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
208
205
|
createResolver({
|
|
209
206
|
intent: ThreadAction.AddMessage,
|
|
210
207
|
resolve: ({ anchor, subject, sender, text }) => {
|
|
211
|
-
const thread = anchor
|
|
208
|
+
const thread = Relation.getSource(anchor);
|
|
212
209
|
const { state } = context.getCapability(ThreadCapabilities.MutableState);
|
|
213
210
|
const subjectId = fullyQualifiedId(subject);
|
|
214
211
|
const space = getSpace(subject);
|
|
215
212
|
invariant(space, "Space not found", {
|
|
216
213
|
F: __dxlog_file,
|
|
217
|
-
L:
|
|
214
|
+
L: 181,
|
|
218
215
|
S: void 0,
|
|
219
216
|
A: [
|
|
220
217
|
"space",
|
|
@@ -277,11 +274,11 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
277
274
|
createResolver({
|
|
278
275
|
intent: ThreadAction.DeleteMessage,
|
|
279
276
|
resolve: ({ subject, anchor, messageId, message, messageIndex }, undo) => {
|
|
280
|
-
const thread = anchor
|
|
277
|
+
const thread = Relation.getSource(anchor);
|
|
281
278
|
const space = getSpace(subject);
|
|
282
279
|
invariant(space, "Space not found", {
|
|
283
280
|
F: __dxlog_file,
|
|
284
|
-
L:
|
|
281
|
+
L: 241,
|
|
285
282
|
S: void 0,
|
|
286
283
|
A: [
|
|
287
284
|
"space",
|
|
@@ -354,4 +351,4 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
354
351
|
export {
|
|
355
352
|
intent_resolver_default as default
|
|
356
353
|
};
|
|
357
|
-
//# sourceMappingURL=intent-resolver-
|
|
354
|
+
//# sourceMappingURL=intent-resolver-BU73VYW3.mjs.map
|