@dxos/plugin-thread 0.6.14-staging.8758a12 → 0.6.14-staging.9b873ce
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/{ThreadArticle-6RFOFTU2.mjs → ThreadArticle-IGDTPV3Y.mjs} +3 -3
- package/dist/lib/browser/{ThreadMain-45OFO3G6.mjs → ThreadMain-ECGVEYNG.mjs} +3 -3
- package/dist/lib/browser/{chunk-YQUONHZJ.mjs → chunk-3VHVY4H7.mjs} +2 -2
- package/dist/lib/browser/{chunk-YLYCGZ62.mjs → chunk-ENERBDYI.mjs} +2 -2
- package/dist/lib/browser/{chunk-YLYCGZ62.mjs.map → chunk-ENERBDYI.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-OTCR7JTS.mjs → chunk-OD3DA5BE.mjs} +6 -6
- package/dist/lib/browser/chunk-OD3DA5BE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +5 -5
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/browser/types.mjs +2 -2
- package/dist/lib/node/{ThreadArticle-IUK2EECC.cjs → ThreadArticle-LV3HHHJT.cjs} +7 -7
- package/dist/lib/node/{ThreadMain-CXIQPH4H.cjs → ThreadMain-ZS2PYBRX.cjs} +7 -7
- package/dist/lib/node/{chunk-LGA276VA.cjs → chunk-ANGUPCW3.cjs} +6 -6
- package/dist/lib/node/{chunk-XOW5SL5M.cjs → chunk-GXREFXBX.cjs} +13 -13
- package/dist/lib/node/chunk-GXREFXBX.cjs.map +7 -0
- package/dist/lib/node/{chunk-YWFYN3OY.cjs → chunk-IC2NICNC.cjs} +5 -5
- package/dist/lib/node/{chunk-YWFYN3OY.cjs.map → chunk-IC2NICNC.cjs.map} +1 -1
- package/dist/lib/node/index.cjs +56 -56
- package/dist/lib/node/meta.cjs +4 -4
- package/dist/lib/node/meta.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types.cjs +3 -3
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/{ThreadArticle-OA3T4XFJ.mjs → ThreadArticle-3GEYBQKP.mjs} +3 -3
- package/dist/lib/node-esm/{ThreadMain-VXFO6JL6.mjs → ThreadMain-7ZEIVEV6.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-SSEJYCYQ.mjs → chunk-7QRGG25F.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-SSEJYCYQ.mjs.map → chunk-7QRGG25F.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-5R5QKQY4.mjs → chunk-7S5K2747.mjs} +6 -6
- package/dist/lib/node-esm/chunk-7S5K2747.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3CZBPOEH.mjs → chunk-CWPZCZ2F.mjs} +2 -2
- package/dist/lib/node-esm/index.mjs +5 -5
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/meta.mjs +1 -1
- package/dist/lib/node-esm/types.mjs +2 -2
- package/package.json +29 -29
- package/src/components/ChatContainer.tsx +4 -4
- package/src/components/MessageContainer.tsx +1 -1
- package/src/meta.ts +1 -1
- package/dist/lib/browser/chunk-OTCR7JTS.mjs.map +0 -7
- package/dist/lib/node/chunk-XOW5SL5M.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-5R5QKQY4.mjs.map +0 -7
- /package/dist/lib/browser/{ThreadArticle-6RFOFTU2.mjs.map → ThreadArticle-IGDTPV3Y.mjs.map} +0 -0
- /package/dist/lib/browser/{ThreadMain-45OFO3G6.mjs.map → ThreadMain-ECGVEYNG.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-YQUONHZJ.mjs.map → chunk-3VHVY4H7.mjs.map} +0 -0
- /package/dist/lib/node/{ThreadArticle-IUK2EECC.cjs.map → ThreadArticle-LV3HHHJT.cjs.map} +0 -0
- /package/dist/lib/node/{ThreadMain-CXIQPH4H.cjs.map → ThreadMain-ZS2PYBRX.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-LGA276VA.cjs.map → chunk-ANGUPCW3.cjs.map} +0 -0
- /package/dist/lib/node-esm/{ThreadArticle-OA3T4XFJ.mjs.map → ThreadArticle-3GEYBQKP.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ThreadMain-VXFO6JL6.mjs.map → ThreadMain-7ZEIVEV6.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-3CZBPOEH.mjs.map → chunk-CWPZCZ2F.mjs.map} +0 -0
|
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_GXREFXBX_exports = {};
|
|
30
|
+
__export(chunk_GXREFXBX_exports, {
|
|
31
31
|
ChatContainer: () => ChatContainer,
|
|
32
32
|
ChatHeading: () => ChatHeading,
|
|
33
33
|
MessageContainer: () => MessageContainer,
|
|
@@ -37,8 +37,8 @@ __export(chunk_XOW5SL5M_exports, {
|
|
|
37
37
|
useOnEditAnalytics: () => useOnEditAnalytics,
|
|
38
38
|
useStatus: () => useStatus
|
|
39
39
|
});
|
|
40
|
-
module.exports = __toCommonJS(
|
|
41
|
-
var
|
|
40
|
+
module.exports = __toCommonJS(chunk_GXREFXBX_exports);
|
|
41
|
+
var import_chunk_IC2NICNC = require("./chunk-IC2NICNC.cjs");
|
|
42
42
|
var import_react = require("react");
|
|
43
43
|
var import_react2 = require("react");
|
|
44
44
|
var import_app_framework = require("@dxos/app-framework");
|
|
@@ -51,8 +51,8 @@ var import_types = require("@dxos/plugin-space/types");
|
|
|
51
51
|
var import_echo2 = require("@dxos/react-client/echo");
|
|
52
52
|
var import_halo = require("@dxos/react-client/halo");
|
|
53
53
|
var import_react_ui2 = require("@dxos/react-ui");
|
|
54
|
-
var import_react_ui_deck = require("@dxos/react-ui-deck");
|
|
55
54
|
var import_react_ui_editor = require("@dxos/react-ui-editor");
|
|
55
|
+
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
56
56
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
57
57
|
var import_react_ui_thread = require("@dxos/react-ui-thread");
|
|
58
58
|
var import_util = require("@dxos/util");
|
|
@@ -184,7 +184,7 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
184
184
|
message,
|
|
185
185
|
onDelete
|
|
186
186
|
]);
|
|
187
|
-
const { t } = (0, import_react_ui3.useTranslation)(
|
|
187
|
+
const { t } = (0, import_react_ui3.useTranslation)(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
188
188
|
const editLabel = t(editing ? "save message label" : "edit message label");
|
|
189
189
|
const deleteLabel = t("delete message label");
|
|
190
190
|
return /* @__PURE__ */ import_react5.default.createElement(import_react_ui_thread2.MessageRoot, {
|
|
@@ -239,7 +239,7 @@ var MessagePart = ({ part }) => {
|
|
|
239
239
|
return /* @__PURE__ */ import_react5.default.createElement(import_react_ui_mosaic.Mosaic.Container, {
|
|
240
240
|
id: part.id
|
|
241
241
|
}, /* @__PURE__ */ import_react5.default.createElement(import_react_ui_mosaic.Mosaic.DraggableTile, {
|
|
242
|
-
type:
|
|
242
|
+
type: import_chunk_IC2NICNC.THREAD_ITEM,
|
|
243
243
|
path: part.id,
|
|
244
244
|
item: part,
|
|
245
245
|
Component: MessageBlockObjectTile
|
|
@@ -295,7 +295,7 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
295
295
|
});
|
|
296
296
|
};
|
|
297
297
|
var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react5.forwardRef)(({ draggableStyle, draggableProps, item, active, ref: _ref, ...props }, forwardedRef) => {
|
|
298
|
-
let title = item.name ?? item.title ?? item.
|
|
298
|
+
let title = item.name ?? item.title ?? item.type ?? "Object";
|
|
299
299
|
if (typeof title !== "string") {
|
|
300
300
|
title = title?.content ?? "";
|
|
301
301
|
}
|
|
@@ -316,16 +316,16 @@ var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react5.forwardRef)(({ dr
|
|
|
316
316
|
}));
|
|
317
317
|
});
|
|
318
318
|
var ChatHeading = ({ attendableId }) => {
|
|
319
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
319
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
320
320
|
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
321
321
|
role: "none",
|
|
322
322
|
className: "flex items-center"
|
|
323
|
-
}, /* @__PURE__ */ import_react3.default.createElement(
|
|
323
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_stack.StackItem.SigilButton, {
|
|
324
324
|
attendableId
|
|
325
325
|
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Icon, {
|
|
326
326
|
icon: "ph--chat--regular",
|
|
327
327
|
size: 5
|
|
328
|
-
})), /* @__PURE__ */ import_react3.default.createElement(
|
|
328
|
+
})), /* @__PURE__ */ import_react3.default.createElement(import_react_ui_stack.StackItem.HeadingLabel, {
|
|
329
329
|
attendableId
|
|
330
330
|
}, t("chat heading")));
|
|
331
331
|
};
|
|
@@ -334,7 +334,7 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
334
334
|
const space = (0, import_echo2.getSpace)(thread);
|
|
335
335
|
const members = (0, import_echo2.useMembers)(space?.key);
|
|
336
336
|
const activity = useStatus(space, (0, import_echo2.fullyQualifiedId)(thread));
|
|
337
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
337
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
338
338
|
const [_count, _setCount] = (0, import_react3.useState)(0);
|
|
339
339
|
const rerenderEditor = () => _setCount((count) => count + 1);
|
|
340
340
|
const [autoFocus, setAutoFocus] = (0, import_react3.useState)(autoFocusTextbox);
|
|
@@ -428,4 +428,4 @@ var ChatContainer = ({ thread, context, current, autoFocusTextbox }) => {
|
|
|
428
428
|
useOnEditAnalytics,
|
|
429
429
|
useStatus
|
|
430
430
|
});
|
|
431
|
-
//# sourceMappingURL=chunk-
|
|
431
|
+
//# sourceMappingURL=chunk-GXREFXBX.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/useStatus.ts", "../../../src/hooks/analytics.ts", "../../../src/components/ChatContainer.tsx", "../../../src/components/MessageContainer.tsx", "../../../src/components/command-extension.ts", "../../../src/util.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { useIntentDispatcher } from '@dxos/app-framework';\nimport { type ReactiveObject } from '@dxos/echo-schema';\nimport { ObservabilityAction } from '@dxos/plugin-observability/meta';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\n\nexport const useAnalyticsCallback = (spaceId: string | undefined, name: string, meta?: any) => {\n const dispatch = useIntentDispatcher();\n\n return useCallback(\n (dynamicMeta?: any) => {\n void dispatch({\n action: ObservabilityAction.SEND_EVENT,\n data: {\n name,\n properties: { ...meta, ...dynamicMeta, spaceId },\n },\n });\n },\n [dispatch, name, meta, spaceId],\n );\n};\n\nexport const useOnEditAnalytics = (message: ReactiveObject<any>, editing: boolean) => {\n const space = getSpace(message);\n\n const onEditAnalytics = useAnalyticsCallback(space?.id, 'threads.comment-edited', {\n messageId: message.id,\n messageLength: message.text.length,\n });\n\n useOnTransition(editing, true, false, onEditAnalytics);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { create } from '@dxos/echo-schema';\nimport { MessageType } from '@dxos/plugin-space/types';\nimport { fullyQualifiedId, getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, threadLayout } from '@dxos/react-ui-thread';\nimport { nonNullable } from '@dxos/util';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { type ThreadContainerProps } from './types';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nexport const ChatHeading = ({ attendableId }: { attendableId?: string }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n return (\n <div role='none' className='flex items-center'>\n <StackItem.SigilButton attendableId={attendableId}>\n <Icon icon='ph--chat--regular' size={5} />\n </StackItem.SigilButton>\n <StackItem.HeadingLabel attendableId={attendableId}>{t('chat heading')}</StackItem.HeadingLabel>\n </div>\n );\n};\n\nexport const ChatContainer = ({ thread, context, current, autoFocusTextbox }: ThreadContainerProps) => {\n const identity = useIdentity()!;\n const space = getSpace(thread);\n const members = useMembers(space?.key);\n const activity = useStatus(space, fullyQualifiedId(thread));\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const [autoFocus, setAutoFocus] = useState(autoFocusTextbox);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(fullyQualifiedId(thread), identity);\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: (text) => (messageRef.current = text) }),\n command,\n ],\n [themeMode, _count],\n );\n\n // TODO(thure): Factor out.\n // TODO(thure): `flex-col-reverse` does not work to start the container scrolled to the end while also using\n // `ScrollArea`. This is the least-bad way I found to scroll to the end on mount. Note that 0ms was insufficient\n // for the desired effect; this is likely hardware-dependent and should be reevaluated.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n useLayoutEffect(() => {\n scrollToEnd('instant');\n }, []);\n\n // TODO(burdon): Change to model.\n const handleCreate: MessageTextboxProps['onSend'] = () => {\n if (!messageRef.current?.length) {\n return false;\n }\n\n thread.messages.push(\n create(MessageType, {\n sender: { identityKey: identity.identityKey.toHex() },\n timestamp: new Date().toISOString(),\n text: messageRef.current,\n context,\n }),\n );\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n const handleDelete = (id: string) => {\n const messageIndex = thread.messages.filter(nonNullable).findIndex((message) => message.id === id);\n if (messageIndex !== -1) {\n thread.messages.splice(messageIndex, 1);\n }\n };\n\n return (\n <Thread\n current={current}\n id={fullyQualifiedId(thread)}\n classNames='bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0'\n >\n <ScrollArea.Root classNames='col-span-2'>\n <ScrollArea.Viewport classNames='overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]'>\n <div role='none' className={mx(threadLayout, 'place-self-end')}>\n {thread.messages.filter(nonNullable).map((message) => (\n <MessageContainer key={message.id} message={message} members={members} onDelete={handleDelete} />\n ))}\n </div>\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n <ScrollArea.Scrollbar>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n </Thread>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport { Check, PencilSimple, X } from '@phosphor-icons/react';\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { type MessageType } from '@dxos/plugin-space/types';\nimport { PublicKey } from '@dxos/react-client';\nimport { type EchoReactiveObject, type Expando, type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport { Mosaic, type MosaicTileComponent } from '@dxos/react-ui-mosaic';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\nimport { nonNullable } from '@dxos/util';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_ITEM, THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\n// TODO(thure): #8149\nconst messageControlClassNames = ['!p-1 !min-bs-0 transition-opacity', hoverableControlItem];\n\nexport const MessageContainer = ({\n message,\n members,\n onDelete,\n}: {\n message: MessageType;\n members: SpaceMember[];\n onDelete?: (id: string) => void;\n}) => {\n const senderIdentity = members.find(\n (member) => message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey),\n )?.identity;\n const messageMetadata = getMessageMetadata(message.id, senderIdentity);\n const userIsAuthor = useIdentity()?.identityKey.toHex() === messageMetadata.authorId;\n const [editing, setEditing] = useState(false);\n const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);\n const { t } = useTranslation(THREAD_PLUGIN);\n const editLabel = t(editing ? 'save message label' : 'edit message label');\n const deleteLabel = t('delete message label');\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}\n classNames={messageControlClassNames}\n onClick={() => setEditing((editing) => !editing)}\n >\n <span className='sr-only'>{editLabel}</span>\n {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-[21]'>\n {editLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n {onDelete && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={() => handleDelete()}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-[21]'>\n {deleteLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </ButtonGroup>\n </MessageHeading>\n <TextboxBlock message={message} isAuthor={userIsAuthor} editing={editing} />\n {message.parts?.filter(nonNullable).map((part, index) => <MessagePart key={index} part={part} />)}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Expando }) => {\n return (\n <Mosaic.Container id={part.id}>\n <Mosaic.DraggableTile type={THREAD_ITEM} path={part.id} item={part} Component={MessageBlockObjectTile} />\n </Mosaic.Container>\n );\n};\n\nconst TextboxBlock = ({\n message,\n isAuthor,\n editing,\n}: {\n message: MessageType;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(message.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n message.text = inMemoryContentRef.current;\n }, [message]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: message.text,\n extensions: [\n createBasicExtensions({ readonly: !isAuthor || !editing }),\n createThemeExtensions({ themeMode }),\n command,\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n handleDocumentChange(update.state.doc.toString());\n }\n }),\n ],\n }),\n [message.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n useOnEditAnalytics(message, !!editing);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile: MosaicTileComponent<EchoReactiveObject<any>> = forwardRef(\n ({ draggableStyle, draggableProps, item, active, ref: _ref, ...props }, forwardedRef) => {\n let title = item.name ?? item.title ?? item.type ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n style={draggableStyle}\n ref={forwardedRef}\n >\n <Surface\n role='card'\n limit={1}\n data={{ content: item }}\n draggableProps={draggableProps}\n fallback={title}\n {...props}\n />\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx, tagRoot } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n {\n tag: tags.tagName,\n class: mx(tagRoot({ palette: 'cyan' }), 'text-baseText font-medium'),\n },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { generateName } from '@dxos/display-name';\nimport { type PublicKey } from '@dxos/react-client';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type MessageMetadata } from '@dxos/react-ui-thread';\nimport { hexToFallback } from '@dxos/util';\n\nexport type MessagePropertiesProvider = (identityKey: PublicKey | undefined) => MessageMetadata;\n\nexport const getMessageMetadata = (id: string, identity?: Identity): MessageMetadata => {\n const fallback = hexToFallback(identity?.identityKey.toHex() ?? '0');\n return {\n id,\n authorId: identity?.identityKey.toHex(),\n authorName:\n identity?.profile?.displayName ??\n (identity?.identityKey ? generateName(identity.identityKey.toHex()) : undefined),\n authorAvatarProps: {\n hue: identity?.profile?.data?.hue ?? fallback.hue,\n emoji: identity?.profile?.data?.emoji ?? fallback.emoji,\n },\n };\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAoC;ACApC,IAAAA,gBAA4B;AAE5B,2BAAoC;AAEpC,kBAAoC;AACpC,kBAAyB;AACzB,sBAAgC;ACNhC,IAAAA,gBAAkE;AAElE,yBAAuB;AACvB,mBAA4B;AAC5B,IAAAC,eAAuD;AACvD,kBAA4B;AAC5B,IAAAC,mBAAkE;AAClE,6BAAuE;AACvE,4BAA0B;AAC1B,4BAAmB;AACnB,6BAA6F;AAC7F,kBAA4B;ACX5B,kBAA2B;AAC3B,IAAAF,gBAAuC;AACvC,IAAAA,gBAA4E;AAE5E,IAAAG,wBAAwB;AAExB,0BAA0B;AAE1B,IAAAC,eAA2C;AAC3C,IAAAF,mBAA+F;AAC/F,IAAAG,0BAA4E;AAC5E,6BAAiD;AACjD,IAAAC,yBAMO;AACP,IAAAC,0BAA4C;AAC5C,IAAAC,eAA4B;ACpB5B,sBAAmE;AAGnE,IAAAH,0BAAqB;AACrB,IAAAC,yBAA4B;ACJ5B,0BAA6B;AAI7B,IAAAE,eAA8B;ALCvB,IAAMC,YAAY,CAACC,OAAeC,YAAAA;AACvC,QAAM,CAACC,YAAYC,aAAAA,QAAiBC,uBAAS,KAAA;AAC7CC,8BAAU,MAAA;AACR,QAAI,CAACL,SAAS,CAACC,SAAS;AACtB;IACF;AAEA,UAAMK,cAAcN,MAAMO,OAAO,UAAUN,OAAAA,IAAW,CAACO,WAAAA;AACrD,YAAM,EAAEC,MAAK,IAAKD,OAAOE,WAAW,CAAC;AACrCP,oBAAcM,UAAU,YAAA;IAC1B,CAAA;AAEA,UAAME,IAAIC,YAAY,MAAA;AACpBT,oBAAc,CAACU,SAAAA;AACb,YAAI,OAAOA,MAAMC,OAAO,YAAYC,KAAKC,IAAG,IAAKH,KAAKC,KAAK,KAAQ;AACjE,iBAAOG;QACT,OAAO;AACL,iBAAOJ;QACT;MACF,CAAA;IACF,GAAG,GAAA;AAEH,WAAO,MAAA;AACLP,kBAAAA;AACAY,oBAAcP,CAAAA;IAChB;EACF,GAAG;IAACX;IAAOC;GAAQ;AAEnB,SAAOC;AACT;AC1BO,IAAMiB,uBAAuB,CAACC,SAA6BC,MAAcC,SAAAA;AAC9E,QAAMC,eAAWC,0CAAAA;AAEjB,aAAOC,2BACL,CAACC,gBAAAA;AACC,SAAKH,SAAS;MACZI,QAAQC,gCAAoBC;MAC5BC,MAAM;QACJT;QACAU,YAAY;UAAE,GAAGT;UAAM,GAAGI;UAAaN;QAAQ;MACjD;IACF,CAAA;EACF,GACA;IAACG;IAAUF;IAAMC;IAAMF;GAAQ;AAEnC;AAEO,IAAMY,qBAAqB,CAACC,SAA8BC,YAAAA;AAC/D,QAAMlC,YAAQmC,sBAASF,OAAAA;AAEvB,QAAMG,kBAAkBjB,qBAAqBnB,OAAOqC,IAAI,0BAA0B;IAChFC,WAAWL,QAAQI;IACnBE,eAAeN,QAAQO,KAAKC;EAC9B,CAAA;AAEAC,uCAAgBR,SAAS,MAAM,OAAOE,eAAAA;AACxC;AGzBA,IAAMO,SAASC,+BAAeC,OAA0B;EACtDC,YAAY,OAAO;IAAEC,OAAO;EAAE;EAC9BC,OAAO,CAACC,QAAQC,UAAAA;AACdA,UAAMH;AACN,QAAIE,OAAOE,SAAQ,GAAI;AACrB,aAAO;IACT;AACA,QAAID,MAAMH,UAAU,KAAKE,OAAOG,MAAM,UAAA,GAAa;AACjD,aAAO;IACT;AACAH,WAAOI,KAAI;AACX,WAAO;EACT;AACF,CAAA;AAEA,IAAMC,SAASC,+BAAeV,OAAO;EACnC;IACEW,KAAKC,6BAAKC;IACVC,WAAOC,+BAAGC,gCAAQ;MAAEC,SAAS;IAAO,CAAA,GAAI,2BAAA;EAC1C;CACD;AAEM,IAAMC,UAAqB;EAACpB;MAAQqB,oCAAmBV,MAAAA;;ACvBvD,IAAMW,qBAAqB,CAAC5B,IAAY6B,aAAAA;AAC7C,QAAMC,eAAWC,4BAAcF,UAAUG,YAAYC,MAAAA,KAAW,GAAA;AAChE,SAAO;IACLjC;IACAkC,UAAUL,UAAUG,YAAYC,MAAAA;IAChCE,YACEN,UAAUO,SAASC,gBAClBR,UAAUG,kBAAcM,kCAAaT,SAASG,YAAYC,MAAK,CAAA,IAAMrD;IACxE2D,mBAAmB;MACjBC,KAAKX,UAAUO,SAAS3C,MAAM+C,OAAOV,SAASU;MAC9CC,OAAOZ,UAAUO,SAAS3C,MAAMgD,SAASX,SAASW;IACpD;EACF;AACF;AFOA,IAAMC,2BAA2B;EAAC;EAAqCC;;AAEhE,IAAMC,mBAAmB,CAAC,EAC/BhD,SACAiD,SACAC,SAAQ,MAKT;AACC,QAAMC,iBAAiBF,QAAQG,KAC7B,CAACC,WAAWrD,QAAQsD,OAAOlB,eAAemB,8BAAUC,OAAOH,OAAOpB,SAASG,aAAapC,QAAQsD,OAAOlB,WAAW,CAAA,GACjHH;AACH,QAAMwB,kBAAkBzB,mBAAmBhC,QAAQI,IAAI+C,cAAAA;AACvD,QAAMO,mBAAeC,0BAAAA,GAAevB,YAAYC,MAAAA,MAAYoB,gBAAgBnB;AAC5E,QAAM,CAACrC,SAAS2D,UAAAA,QAAczF,cAAAA,UAAS,KAAA;AACvC,QAAM0F,mBAAerE,cAAAA,aAAY,MAAM0D,WAAWlD,QAAQI,EAAE,GAAG;IAACJ;IAASkD;GAAS;AAClF,QAAM,EAAExE,EAAC,QAAKoF,iCAAeC,mCAAAA;AAC7B,QAAMC,YAAYtF,EAAEuB,UAAU,uBAAuB,oBAAA;AACrD,QAAMgE,cAAcvF,EAAE,sBAAA;AAEtB,SACE,8BAAAwF,QAAA,cAACC,qCAAAA;IAAa,GAAGV;IAAiBW,YAAY;MAACC;MAAmBC;;KAChE,8BAAAJ,QAAA,cAACK,wCAAAA;IAAehC,YAAYkB,gBAAgBlB;IAAYiC,WAAWf,gBAAgBe;KACjF,8BAAAN,QAAA,cAACO,8BAAAA;IAAYL,YAAW;KACrBV,gBACC,8BAAAQ,QAAA,cAACQ,yBAAQC,MAAI,MACX,8BAAAT,QAAA,cAACQ,yBAAQE,SAAO;IAACC,SAAAA;KACf,8BAAAX,QAAA,cAACY,yBAAAA;IACCC,SAAQ;IACRC,eAAa/E,UAAU,wBAAwB;IAC/CmE,YAAYtB;IACZmC,SAAS,MAAMrB,WAAW,CAAC3D,aAAY,CAACA,QAAAA;KAExC,8BAAAiE,QAAA,cAACgB,QAAAA;IAAKC,WAAU;KAAWnB,SAAAA,GAC1B/D,UAAU,8BAAAiE,QAAA,cAACkB,qBAAAA;IAAMD,eAAWE,gCAAQ,CAAA;OAAS,8BAAAnB,QAAA,cAACoB,4BAAAA;IAAaH,eAAWE,gCAAQ,CAAA;QAGnF,8BAAAnB,QAAA,cAACQ,yBAAQa,QAAM,MACb,8BAAArB,QAAA,cAACQ,yBAAQc,SAAO;IAACpB,YAAW;KACzBJ,WACD,8BAAAE,QAAA,cAACQ,yBAAQe,OAAK,IAAA,CAAA,CAAA,CAAA,GAKrBvC,YACC,8BAAAgB,QAAA,cAACQ,yBAAQC,MAAI,MACX,8BAAAT,QAAA,cAACQ,yBAAQE,SAAO;IAACC,SAAAA;KACf,8BAAAX,QAAA,cAACY,yBAAAA;IACCC,SAAQ;IACRC,eAAY;IACZZ,YAAYtB;IACZmC,SAAS,MAAMpB,aAAAA;KAEf,8BAAAK,QAAA,cAACgB,QAAAA;IAAKC,WAAU;KAAWlB,WAAAA,GAC3B,8BAAAC,QAAA,cAACwB,iBAAAA;IAAEP,eAAWE,gCAAQ,CAAA;QAG1B,8BAAAnB,QAAA,cAACQ,yBAAQa,QAAM,MACb,8BAAArB,QAAA,cAACQ,yBAAQc,SAAO;IAACpB,YAAW;KACzBH,aACD,8BAAAC,QAAA,cAACQ,yBAAQe,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAO1B,8BAAAvB,QAAA,cAACyB,cAAAA;IAAa3F;IAAkB4F,UAAUlC;IAAczD;MACvDD,QAAQ6F,OAAOC,OAAOC,wBAAAA,EAAaC,IAAI,CAACC,MAAMC,UAAU,8BAAAhC,QAAA,cAACiC,aAAAA;IAAYC,KAAKF;IAAOD;;AAGxF;AAEA,IAAME,cAAc,CAAC,EAAEF,KAAI,MAAqB;AAC9C,SACE,8BAAA/B,QAAA,cAACmC,8BAAOC,WAAS;IAAClG,IAAI6F,KAAK7F;KACzB,8BAAA8D,QAAA,cAACmC,8BAAOE,eAAa;IAACC,MAAMC;IAAaC,MAAMT,KAAK7F;IAAIuG,MAAMV;IAAMW,WAAWC;;AAGrF;AAEA,IAAMlB,eAAe,CAAC,EACpB3F,SACA4F,UACA3F,QAAO,MAMR;AACC,QAAM,EAAE6G,UAAS,QAAKC,kCAAAA;AACtB,QAAMC,yBAAqBC,sBAAOjH,QAAQO,IAAI;AAE9C,QAAM2G,2BAAuB1H,cAAAA,aAAY,CAAC2H,aAAAA;AACxCH,uBAAmBI,UAAUD;EAC/B,GAAG,CAAA,CAAE;AAEL,QAAME,yBAAqB7H,cAAAA,aAAY,MAAA;AACrCQ,YAAQO,OAAOyG,mBAAmBI;EACpC,GAAG;IAACpH;GAAQ;AAEZS,uBAAAA,iBAAgBR,SAAS,MAAM,OAAOoH,kBAAAA;AAEtC,QAAM,EAAEC,WAAWC,iBAAiBC,KAAI,QAAKC,uCAC3C,OAAO;IACLC,cAAc1H,QAAQO;IACtBoH,YAAY;UACVC,+CAAsB;QAAEC,UAAU,CAACjC,YAAY,CAAC3F;MAAQ,CAAA;UACxD6H,+CAAsB;QAAEhB;MAAU,CAAA;MAClChF;MACAiG,uBAAWC,eAAeC,GAAG,CAACC,WAAAA;AAC5B,YAAIA,OAAOC,YAAY;AACrBjB,+BAAqBgB,OAAOjH,MAAMmH,IAAIC,SAAQ,CAAA;QAChD;MACF,CAAA;;EAEJ,IACA;IAACrI,QAAQO;IAAMN;IAAS2F;IAAUkB;IAAWI;GAAqB;AAGpE9I,oBAAAA,WAAU,MAAA;AACR6B,eAAWuH,MAAMc,MAAAA;EACnB,GAAG;IAACrI;IAASuH;GAAK;AAElBzH,qBAAmBC,SAAS,CAAC,CAACC,OAAAA;AAE9B,SAAO,8BAAAiE,QAAA,cAACqE,OAAAA;IAAIC,MAAK;IAAOC,KAAKnB;IAAWnC,WAAU;IAAS,GAAGoC;;AAChE;AAEA,IAAMV,yBAAuE6B,8CAC3E,CAAC,EAAEC,gBAAgBC,gBAAgBjC,MAAMkC,QAAQJ,KAAKK,MAAM,GAAGC,MAAAA,GAASC,iBAAAA;AACtE,MAAIC,QAAQtC,KAAKvH,QAAQuH,KAAKsC,SAAStC,KAAKH,QAAQ;AACpD,MAAI,OAAOyC,UAAU,UAAU;AAC7BA,YAAQA,OAAOC,WAAW;EAC5B;AAEA,SACE,8BAAAhF,QAAA,cAACqE,OAAAA;IACCC,MAAK;IACLrD,eAAWxD,uBAAAA,IAAG,6BAA6B0C,0CAAmBC,qDAAAA;IAC9D6E,OAAOR;IACPF,KAAKO;KAEL,8BAAA9E,QAAA,cAACkF,+BAAAA;IACCZ,MAAK;IACLa,OAAO;IACPxJ,MAAM;MAAEqJ,SAASvC;IAAK;IACtBiC;IACA1G,UAAU+G;IACT,GAAGF;;AAIZ,CAAA;ADrKK,IAAMO,cAAc,CAAC,EAAEC,aAAY,MAA6B;AACrE,QAAM,EAAE7K,EAAC,QAAKoF,iBAAAA,gBAAeC,mCAAAA;AAC7B,SACEG,8BAAAA,QAAA,cAACqE,OAAAA;IAAIC,MAAK;IAAOrD,WAAU;KACzBjB,8BAAAA,QAAA,cAACsF,gCAAUC,aAAW;IAACF;KACrBrF,8BAAAA,QAAA,cAACwF,uBAAAA;IAAKC,MAAK;IAAoBC,MAAM;OAEvC1F,8BAAAA,QAAA,cAACsF,gCAAUK,cAAY;IAACN;KAA6B7K,EAAE,cAAA,CAAA,CAAA;AAG7D;AAEO,IAAMoL,gBAAgB,CAAC,EAAEC,QAAQC,SAAS5C,SAAS6C,iBAAgB,MAAwB;AAChG,QAAMhI,eAAW0B,YAAAA,aAAAA;AACjB,QAAM5F,YAAQmC,aAAAA,UAAS6J,MAAAA;AACvB,QAAM9G,cAAUiH,yBAAWnM,OAAOqI,GAAAA;AAClC,QAAM+D,WAAWrM,UAAUC,WAAOqM,+BAAiBL,MAAAA,CAAAA;AACnD,QAAM,EAAErL,EAAC,QAAKoF,iBAAAA,gBAAeC,mCAAAA;AAE7B,QAAM,CAACsG,QAAQC,SAAAA,QAAanM,cAAAA,UAAS,CAAA;AACrC,QAAMoM,iBAAiB,MAAMD,UAAU,CAACxJ,UAAUA,QAAQ,CAAA;AAC1D,QAAM,CAAC0J,WAAWC,YAAAA,QAAgBtM,cAAAA,UAAS8L,gBAAAA;AAC3C,QAAMS,sBAAkBzD,cAAAA,QAA8B,IAAA;AACtD,QAAM,EAAEH,UAAS,QAAKC,iBAAAA,iBAAAA;AAEtB,QAAM4D,kBAAkB3I,uBAAmBoI,+BAAiBL,MAAAA,GAAS9H,QAAAA;AACrE,QAAM2I,iBAAa3D,cAAAA,QAAO,EAAA;AAC1B,QAAMU,iBAAakD,uBACjB,MAAM;QACJjD,uBAAAA,uBAAsB;MAAEkD,aAAapM,EAAE,qBAAA;IAAuB,CAAA;QAC9DoJ,uBAAAA,uBAAsB;MAAEhB;IAAU,CAAA;QAClCiE,iCAAS;MAAEC,UAAU,CAACzK,SAAUqK,WAAWxD,UAAU7G;IAAM,CAAA;IAC3DuB;KAEF;IAACgF;IAAWuD;GAAO;AAOrB,QAAMY,cAAc,CAACC,aACnBC,WAAW,MAAMT,gBAAgBtD,SAASgE,eAAe;IAAEF;IAAUG,OAAO;EAAM,CAAA,GAAI,EAAA;AAExFC,qCAAgB,MAAA;AACdL,gBAAY,SAAA;EACd,GAAG,CAAA,CAAE;AAGL,QAAMM,eAA8C,MAAA;AAClD,QAAI,CAACX,WAAWxD,SAAS5G,QAAQ;AAC/B,aAAO;IACT;AAEAuJ,WAAOyB,SAASC,SACdC,2BAAOC,0BAAa;MAClBrI,QAAQ;QAAElB,aAAaH,SAASG,YAAYC,MAAK;MAAG;MACpDmC,YAAW,oBAAI1F,KAAAA,GAAO8M,YAAW;MACjCrL,MAAMqK,WAAWxD;MACjB4C;IACF,CAAA,CAAA;AAGFY,eAAWxD,UAAU;AACrBqD,iBAAa,IAAA;AACbQ,gBAAY,QAAA;AACZV,mBAAAA;AACA,WAAO;EACT;AAEA,QAAM1G,eAAe,CAACzD,OAAAA;AACpB,UAAMyL,eAAe9B,OAAOyB,SAAS1F,OAAOC,YAAAA,WAAAA,EAAa+F,UAAU,CAAC9L,YAAYA,QAAQI,OAAOA,EAAAA;AAC/F,QAAIyL,iBAAiB,IAAI;AACvB9B,aAAOyB,SAASO,OAAOF,cAAc,CAAA;IACvC;EACF;AAEA,SACE3H,8BAAAA,QAAA,cAAC8H,+BAAAA;IACC5E;IACAhH,QAAIgK,+BAAiBL,MAAAA;IACrB3F,YAAW;KAEXF,8BAAAA,QAAA,cAAC+H,4BAAWtH,MAAI;IAACP,YAAW;KAC1BF,8BAAAA,QAAA,cAAC+H,4BAAWC,UAAQ;IAAC9H,YAAW;KAC9BF,8BAAAA,QAAA,cAACqE,OAAAA;IAAIC,MAAK;IAAOrD,eAAWxD,sBAAAA,IAAGwK,qCAAc,gBAAA;KAC1CpC,OAAOyB,SAAS1F,OAAOC,YAAAA,WAAAA,EAAaC,IAAI,CAAChG,YACxCkE,8BAAAA,QAAA,cAAClB,kBAAAA;IAAiBoD,KAAKpG,QAAQI;IAAIJ;IAAkBiD;IAAkBC,UAAUW;QAIrFK,8BAAAA,QAAA,cAACqE,OAAAA;IAAIC,MAAK;IAAOrD,WAAU;IAAgBsD,KAAKiC;MAChDxG,8BAAAA,QAAA,cAAC+H,4BAAWG,WAAS,MACnBlI,8BAAAA,QAAA,cAAC+H,4BAAWI,OAAK,IAAA,CAAA,CAAA,CAAA,GAIvBnI,8BAAAA,QAAA,cAACoI,uCAAAA;IAAe3E;IAAwB6C;IAAsB+B,QAAQhB;IAAe,GAAGZ;MACxFzG,8BAAAA,QAAA,cAACsI,qCAAAA;IAAarC;KAAqBzL,EAAE,kBAAA,CAAA,CAAA;AAG3C;",
|
|
6
|
+
"names": ["import_react", "import_echo", "import_react_ui", "import_app_framework", "import_halo", "import_react_ui_editor", "import_react_ui_theme", "import_react_ui_thread", "import_util", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useAnalyticsCallback", "spaceId", "name", "meta", "dispatch", "useIntentDispatcher", "useCallback", "dynamicMeta", "action", "ObservabilityAction", "SEND_EVENT", "data", "properties", "useOnEditAnalytics", "message", "editing", "getSpace", "onEditAnalytics", "id", "messageId", "messageLength", "text", "length", "useOnTransition", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "tagRoot", "palette", "command", "syntaxHighlighting", "getMessageMetadata", "identity", "fallback", "hexToFallback", "identityKey", "toHex", "authorId", "authorName", "profile", "displayName", "generateName", "authorAvatarProps", "hue", "emoji", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "members", "onDelete", "senderIdentity", "find", "member", "sender", "PublicKey", "equals", "messageMetadata", "userIsAuthor", "useIdentity", "setEditing", "handleDelete", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "React", "MessageRoot", "classNames", "hoverableControls", "hoverableFocusedWithinControls", "MessageHeading", "timestamp", "ButtonGroup", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "data-testid", "onClick", "span", "className", "Check", "getSize", "PencilSimple", "Portal", "Content", "Arrow", "X", "TextboxBlock", "isAuthor", "parts", "filter", "nonNullable", "map", "part", "index", "MessagePart", "key", "Mosaic", "Container", "DraggableTile", "type", "THREAD_ITEM", "path", "item", "Component", "MessageBlockObjectTile", "themeMode", "useThemeContext", "inMemoryContentRef", "useRef", "handleDocumentChange", "newState", "current", "saveDocumentChange", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "readonly", "createThemeExtensions", "EditorView", "updateListener", "of", "update", "docChanged", "doc", "toString", "focus", "div", "role", "ref", "forwardRef", "draggableStyle", "draggableProps", "active", "_ref", "props", "forwardedRef", "title", "content", "style", "Surface", "limit", "ChatHeading", "attendableId", "StackItem", "SigilButton", "Icon", "icon", "size", "HeadingLabel", "ChatContainer", "thread", "context", "autoFocusTextbox", "useMembers", "activity", "fullyQualifiedId", "_count", "_setCount", "rerenderEditor", "autoFocus", "setAutoFocus", "threadScrollRef", "textboxMetadata", "messageRef", "useMemo", "placeholder", "listener", "onChange", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "useLayoutEffect", "handleCreate", "messages", "push", "create", "MessageType", "toISOString", "messageIndex", "findIndex", "splice", "Thread", "ScrollArea", "Viewport", "threadLayout", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
|
|
7
|
+
}
|
|
@@ -16,19 +16,19 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_IC2NICNC_exports = {};
|
|
20
|
+
__export(chunk_IC2NICNC_exports, {
|
|
21
21
|
THREAD_ITEM: () => THREAD_ITEM,
|
|
22
22
|
THREAD_PLUGIN: () => THREAD_PLUGIN,
|
|
23
23
|
meta_default: () => meta_default
|
|
24
24
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
25
|
+
module.exports = __toCommonJS(chunk_IC2NICNC_exports);
|
|
26
26
|
var THREAD_PLUGIN = "dxos.org/plugin/thread";
|
|
27
27
|
var THREAD_ITEM = `${THREAD_PLUGIN}/item`;
|
|
28
28
|
var meta_default = {
|
|
29
29
|
id: THREAD_PLUGIN,
|
|
30
30
|
name: "Threads",
|
|
31
|
-
description: "
|
|
31
|
+
description: "Add comment threads to objects.",
|
|
32
32
|
icon: "ph--chat--regular",
|
|
33
33
|
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-thread"
|
|
34
34
|
};
|
|
@@ -38,4 +38,4 @@ var meta_default = {
|
|
|
38
38
|
THREAD_PLUGIN,
|
|
39
39
|
meta_default
|
|
40
40
|
});
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-IC2NICNC.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const THREAD_PLUGIN = 'dxos.org/plugin/thread';\nexport const THREAD_ITEM = `${THREAD_PLUGIN}/item`;\n\nexport default {\n id: THREAD_PLUGIN,\n name: 'Threads',\n description: '
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const THREAD_PLUGIN = 'dxos.org/plugin/thread';\nexport const THREAD_ITEM = `${THREAD_PLUGIN}/item`;\n\nexport default {\n id: THREAD_PLUGIN,\n name: 'Threads',\n description: 'Add comment threads to objects.',\n icon: 'ph--chat--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-thread',\n} satisfies PluginMeta;\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,gBAAgB;AACtB,IAAMC,cAAc,GAAGD,aAAAA;AAE9B,IAAA,eAAe;EACbE,IAAIF;EACJG,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;AACV;",
|
|
6
6
|
"names": ["THREAD_PLUGIN", "THREAD_ITEM", "id", "name", "description", "icon", "source"]
|
|
7
7
|
}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -28,17 +28,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var node_exports = {};
|
|
30
30
|
__export(node_exports, {
|
|
31
|
-
ThreadAction: () =>
|
|
31
|
+
ThreadAction: () => import_chunk_ANGUPCW3.ThreadAction,
|
|
32
32
|
ThreadPlugin: () => ThreadPlugin,
|
|
33
33
|
default: () => src_default,
|
|
34
|
-
useAnalyticsCallback: () =>
|
|
35
|
-
useOnEditAnalytics: () =>
|
|
36
|
-
useStatus: () =>
|
|
34
|
+
useAnalyticsCallback: () => import_chunk_GXREFXBX.useAnalyticsCallback,
|
|
35
|
+
useOnEditAnalytics: () => import_chunk_GXREFXBX.useOnEditAnalytics,
|
|
36
|
+
useStatus: () => import_chunk_GXREFXBX.useStatus
|
|
37
37
|
});
|
|
38
38
|
module.exports = __toCommonJS(node_exports);
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
var
|
|
39
|
+
var import_chunk_ANGUPCW3 = require("./chunk-ANGUPCW3.cjs");
|
|
40
|
+
var import_chunk_GXREFXBX = require("./chunk-GXREFXBX.cjs");
|
|
41
|
+
var import_chunk_IC2NICNC = require("./chunk-IC2NICNC.cjs");
|
|
42
42
|
var import_react = __toESM(require("react"));
|
|
43
43
|
var import_app_framework = require("@dxos/app-framework");
|
|
44
44
|
var import_local_storage = require("@dxos/local-storage");
|
|
@@ -86,7 +86,7 @@ var import_util3 = require("@dxos/util");
|
|
|
86
86
|
var sizeClass = (0, import_react_ui_theme.getSize)(4);
|
|
87
87
|
var commentControlClassNames = "!p-1 !min-bs-0 transition-opacity";
|
|
88
88
|
var ToggleResolvedButton = ({ isResolved, onResolve }) => {
|
|
89
|
-
const { t } = (0, import_react_ui.useTranslation)(
|
|
89
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
90
90
|
const label = t(isResolved ? "mark as unresolved label" : "mark as resolved label");
|
|
91
91
|
return /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Root, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Trigger, {
|
|
92
92
|
asChild: true
|
|
@@ -110,7 +110,7 @@ var ToggleResolvedButton = ({ isResolved, onResolve }) => {
|
|
|
110
110
|
}, label, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Arrow, null))));
|
|
111
111
|
};
|
|
112
112
|
var DeleteThreadButton = ({ onDelete }) => {
|
|
113
|
-
const { t } = (0, import_react_ui.useTranslation)(
|
|
113
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
114
114
|
const label = t("delete thread label");
|
|
115
115
|
return /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Root, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Tooltip.Trigger, {
|
|
116
116
|
asChild: true
|
|
@@ -134,11 +134,11 @@ var CommentContainer = ({ thread, detached, context, current, onAttend, onThread
|
|
|
134
134
|
const identity = (0, import_halo.useIdentity)();
|
|
135
135
|
const space = (0, import_echo3.getSpace)(thread);
|
|
136
136
|
const members = (0, import_echo3.useMembers)(space?.key);
|
|
137
|
-
const activity = (0,
|
|
138
|
-
const { t } = (0, import_react_ui.useTranslation)(
|
|
137
|
+
const activity = (0, import_chunk_GXREFXBX.useStatus)(space, (0, import_echo3.fullyQualifiedId)(thread));
|
|
138
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
139
139
|
const threadScrollRef = (0, import_react4.useRef)(null);
|
|
140
140
|
const { themeMode } = (0, import_react_ui.useThemeContext)();
|
|
141
|
-
const textboxMetadata = (0,
|
|
141
|
+
const textboxMetadata = (0, import_chunk_GXREFXBX.getMessageMetadata)((0, import_echo3.fullyQualifiedId)(thread), identity);
|
|
142
142
|
const [_count, _setCount] = (0, import_react4.useState)(0);
|
|
143
143
|
const rerenderEditor = () => _setCount((count) => count + 1);
|
|
144
144
|
const messageRef = (0, import_react4.useRef)("");
|
|
@@ -152,7 +152,7 @@ var CommentContainer = ({ thread, detached, context, current, onAttend, onThread
|
|
|
152
152
|
(0, import_react_ui_editor.listener)({
|
|
153
153
|
onChange: (text) => messageRef.current = text
|
|
154
154
|
}),
|
|
155
|
-
|
|
155
|
+
import_chunk_GXREFXBX.command
|
|
156
156
|
], [
|
|
157
157
|
_count
|
|
158
158
|
]);
|
|
@@ -205,7 +205,7 @@ var CommentContainer = ({ thread, detached, context, current, onAttend, onThread
|
|
|
205
205
|
onResolve
|
|
206
206
|
}), onThreadDelete && /* @__PURE__ */ import_react4.default.createElement(DeleteThreadButton, {
|
|
207
207
|
onDelete: onThreadDelete
|
|
208
|
-
}))), thread.messages.filter(import_util.nonNullable).map((message) => /* @__PURE__ */ import_react4.default.createElement(
|
|
208
|
+
}))), thread.messages.filter(import_util.nonNullable).map((message) => /* @__PURE__ */ import_react4.default.createElement(import_chunk_GXREFXBX.MessageContainer, {
|
|
209
209
|
key: message.id,
|
|
210
210
|
message,
|
|
211
211
|
members,
|
|
@@ -223,7 +223,7 @@ var CommentContainer = ({ thread, detached, context, current, onAttend, onThread
|
|
|
223
223
|
}));
|
|
224
224
|
};
|
|
225
225
|
var CommentsContainer = ({ threads: threads2, detached = [], currentId, showResolvedThreads, onThreadAttend, onThreadDelete, onMessageDelete, onThreadToggleResolved, ...props }) => {
|
|
226
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
226
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
227
227
|
const filteredThreads = showResolvedThreads ? threads2 : threads2.filter((thread) => !(thread?.status === "resolved"));
|
|
228
228
|
(0, import_react6.useEffect)(() => {
|
|
229
229
|
if (currentId) {
|
|
@@ -336,8 +336,8 @@ var ThreadComplementary = ({ role, subject, drafts, current, showResolvedThreads
|
|
|
336
336
|
},
|
|
337
337
|
onThreadDelete: (thread) => {
|
|
338
338
|
return dispatch({
|
|
339
|
-
plugin:
|
|
340
|
-
action:
|
|
339
|
+
plugin: import_chunk_IC2NICNC.THREAD_PLUGIN,
|
|
340
|
+
action: import_chunk_ANGUPCW3.ThreadAction.DELETE,
|
|
341
341
|
data: {
|
|
342
342
|
subject,
|
|
343
343
|
thread
|
|
@@ -345,8 +345,8 @@ var ThreadComplementary = ({ role, subject, drafts, current, showResolvedThreads
|
|
|
345
345
|
});
|
|
346
346
|
},
|
|
347
347
|
onMessageDelete: (thread, messageId) => dispatch({
|
|
348
|
-
plugin:
|
|
349
|
-
action:
|
|
348
|
+
plugin: import_chunk_IC2NICNC.THREAD_PLUGIN,
|
|
349
|
+
action: import_chunk_ANGUPCW3.ThreadAction.DELETE_MESSAGE,
|
|
350
350
|
data: {
|
|
351
351
|
subject,
|
|
352
352
|
thread,
|
|
@@ -354,15 +354,15 @@ var ThreadComplementary = ({ role, subject, drafts, current, showResolvedThreads
|
|
|
354
354
|
}
|
|
355
355
|
}),
|
|
356
356
|
onThreadToggleResolved: (thread) => dispatch({
|
|
357
|
-
plugin:
|
|
358
|
-
action:
|
|
357
|
+
plugin: import_chunk_IC2NICNC.THREAD_PLUGIN,
|
|
358
|
+
action: import_chunk_ANGUPCW3.ThreadAction.TOGGLE_RESOLVED,
|
|
359
359
|
data: {
|
|
360
360
|
thread
|
|
361
361
|
}
|
|
362
362
|
}),
|
|
363
363
|
onComment: (thread) => {
|
|
364
364
|
void dispatch({
|
|
365
|
-
action:
|
|
365
|
+
action: import_chunk_ANGUPCW3.ThreadAction.ON_MESSAGE_ADD,
|
|
366
366
|
data: {
|
|
367
367
|
thread,
|
|
368
368
|
subject
|
|
@@ -375,7 +375,7 @@ var ThreadComplementary = ({ role, subject, drafts, current, showResolvedThreads
|
|
|
375
375
|
}), /* @__PURE__ */ import_react7.default.createElement(import_react_ui3.ScrollArea.Scrollbar, null, /* @__PURE__ */ import_react7.default.createElement(import_react_ui3.ScrollArea.Thumb, null)))));
|
|
376
376
|
};
|
|
377
377
|
var ThreadSettings = ({ settings }) => {
|
|
378
|
-
const { t } = (0, import_react_ui4.useTranslation)(
|
|
378
|
+
const { t } = (0, import_react_ui4.useTranslation)(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
379
379
|
return /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, /* @__PURE__ */ import_react8.default.createElement(import_react_ui_data.DeprecatedFormInput, {
|
|
380
380
|
label: t("settings standalone label")
|
|
381
381
|
}, /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Input.Switch, {
|
|
@@ -383,8 +383,8 @@ var ThreadSettings = ({ settings }) => {
|
|
|
383
383
|
onCheckedChange: (checked) => settings.standalone = !!checked
|
|
384
384
|
})));
|
|
385
385
|
};
|
|
386
|
-
var ThreadMain = (0, import_react2.lazy)(() => import("./ThreadMain-
|
|
387
|
-
var ThreadArticle = (0, import_react2.lazy)(() => import("./ThreadArticle-
|
|
386
|
+
var ThreadMain = (0, import_react2.lazy)(() => import("./ThreadMain-ZS2PYBRX.cjs"));
|
|
387
|
+
var ThreadArticle = (0, import_react2.lazy)(() => import("./ThreadArticle-LV3HHHJT.cjs"));
|
|
388
388
|
var getName = (doc, anchor) => {
|
|
389
389
|
if (doc.content) {
|
|
390
390
|
const [start, end] = anchor.split(":");
|
|
@@ -426,7 +426,7 @@ var threads = (state, doc, dispatch) => {
|
|
|
426
426
|
onCreate: ({ cursor }) => {
|
|
427
427
|
const name = getName(doc, cursor);
|
|
428
428
|
void dispatch({
|
|
429
|
-
action:
|
|
429
|
+
action: import_chunk_ANGUPCW3.ThreadAction.CREATE,
|
|
430
430
|
data: {
|
|
431
431
|
cursor,
|
|
432
432
|
name,
|
|
@@ -456,7 +456,7 @@ var threads = (state, doc, dispatch) => {
|
|
|
456
456
|
},
|
|
457
457
|
onSelect: ({ selection: { current, closest } }) => {
|
|
458
458
|
void dispatch({
|
|
459
|
-
action:
|
|
459
|
+
action: import_chunk_ANGUPCW3.ThreadAction.SELECT,
|
|
460
460
|
data: {
|
|
461
461
|
current: current ?? closest,
|
|
462
462
|
skipOpen: true
|
|
@@ -469,7 +469,7 @@ var threads = (state, doc, dispatch) => {
|
|
|
469
469
|
var translations_default = [
|
|
470
470
|
{
|
|
471
471
|
"en-US": {
|
|
472
|
-
[
|
|
472
|
+
[import_chunk_IC2NICNC.THREAD_PLUGIN]: {
|
|
473
473
|
"plugin name": "Threads",
|
|
474
474
|
"channel name placeholder": "New channel",
|
|
475
475
|
"channel title label": "Title",
|
|
@@ -506,7 +506,7 @@ var initialViewState = {
|
|
|
506
506
|
showResolvedThreads: false
|
|
507
507
|
};
|
|
508
508
|
var ThreadPlugin = () => {
|
|
509
|
-
const settings = new import_local_storage.LocalStorageStore(
|
|
509
|
+
const settings = new import_local_storage.LocalStorageStore(import_chunk_IC2NICNC.THREAD_PLUGIN);
|
|
510
510
|
const state = (0, import_echo.create)({
|
|
511
511
|
drafts: {}
|
|
512
512
|
});
|
|
@@ -523,7 +523,7 @@ var ThreadPlugin = () => {
|
|
|
523
523
|
let intentPlugin;
|
|
524
524
|
const unsubscribeCallbacks = [];
|
|
525
525
|
return {
|
|
526
|
-
meta:
|
|
526
|
+
meta: import_chunk_IC2NICNC.meta_default,
|
|
527
527
|
ready: async (plugins) => {
|
|
528
528
|
settings.prop({
|
|
529
529
|
key: "standalone",
|
|
@@ -545,7 +545,7 @@ var ThreadPlugin = () => {
|
|
|
545
545
|
placeholder: [
|
|
546
546
|
"channel name placeholder",
|
|
547
547
|
{
|
|
548
|
-
ns:
|
|
548
|
+
ns: import_chunk_IC2NICNC.THREAD_PLUGIN
|
|
549
549
|
}
|
|
550
550
|
],
|
|
551
551
|
icon: "ph--chat--regular",
|
|
@@ -560,7 +560,7 @@ var ThreadPlugin = () => {
|
|
|
560
560
|
// TODO(wittjosiah): Move out of metadata.
|
|
561
561
|
loadReferences: (message) => []
|
|
562
562
|
},
|
|
563
|
-
[
|
|
563
|
+
[import_chunk_IC2NICNC.THREAD_ITEM]: {
|
|
564
564
|
parse: (item, type) => {
|
|
565
565
|
switch (type) {
|
|
566
566
|
case "node":
|
|
@@ -599,7 +599,7 @@ var ThreadPlugin = () => {
|
|
|
599
599
|
label: [
|
|
600
600
|
"open comments panel label",
|
|
601
601
|
{
|
|
602
|
-
ns:
|
|
602
|
+
ns: import_chunk_IC2NICNC.THREAD_PLUGIN
|
|
603
603
|
}
|
|
604
604
|
],
|
|
605
605
|
icon: "ph--chat-text--regular"
|
|
@@ -618,7 +618,7 @@ var ThreadPlugin = () => {
|
|
|
618
618
|
const icon = "ph--chat-text--regular";
|
|
619
619
|
return [
|
|
620
620
|
(0, import_plugin_graph.createExtension)({
|
|
621
|
-
id: `${
|
|
621
|
+
id: `${import_chunk_IC2NICNC.THREAD_PLUGIN}/comments-for-subject`,
|
|
622
622
|
resolver: ({ id }) => {
|
|
623
623
|
if (!id.endsWith("~comments")) {
|
|
624
624
|
return;
|
|
@@ -636,7 +636,7 @@ var ThreadPlugin = () => {
|
|
|
636
636
|
label: [
|
|
637
637
|
"unnamed object threads label",
|
|
638
638
|
{
|
|
639
|
-
ns:
|
|
639
|
+
ns: import_chunk_IC2NICNC.THREAD_PLUGIN
|
|
640
640
|
}
|
|
641
641
|
],
|
|
642
642
|
showResolvedThreads: false,
|
|
@@ -659,7 +659,7 @@ var ThreadPlugin = () => {
|
|
|
659
659
|
const label = meta.label?.(object) || object.name || meta.placeholder || [
|
|
660
660
|
"unnamed object threads label",
|
|
661
661
|
{
|
|
662
|
-
ns:
|
|
662
|
+
ns: import_chunk_IC2NICNC.THREAD_PLUGIN
|
|
663
663
|
}
|
|
664
664
|
];
|
|
665
665
|
const viewState = getViewState(subjectId);
|
|
@@ -699,13 +699,13 @@ var ThreadPlugin = () => {
|
|
|
699
699
|
};
|
|
700
700
|
return [
|
|
701
701
|
{
|
|
702
|
-
id: `${
|
|
702
|
+
id: `${import_chunk_IC2NICNC.THREAD_PLUGIN}/toggle-show-resolved/${node.id}`,
|
|
703
703
|
data: toggle,
|
|
704
704
|
properties: {
|
|
705
705
|
label: [
|
|
706
706
|
"toggle show resolved",
|
|
707
707
|
{
|
|
708
|
-
ns:
|
|
708
|
+
ns: import_chunk_IC2NICNC.THREAD_PLUGIN
|
|
709
709
|
}
|
|
710
710
|
],
|
|
711
711
|
menuItemType: "toggle",
|
|
@@ -718,7 +718,7 @@ var ThreadPlugin = () => {
|
|
|
718
718
|
}
|
|
719
719
|
}),
|
|
720
720
|
(0, import_plugin_graph.createExtension)({
|
|
721
|
-
id:
|
|
721
|
+
id: import_chunk_ANGUPCW3.ThreadAction.CREATE,
|
|
722
722
|
filter: (node) => !!settings.values.standalone && (0, import_plugin_graph.isActionGroup)(node) && node.id.startsWith(import_plugin_space.SpaceAction.ADD_OBJECT),
|
|
723
723
|
actions: ({ node }) => {
|
|
724
724
|
const id = node.id.split("/").at(-1);
|
|
@@ -731,12 +731,12 @@ var ThreadPlugin = () => {
|
|
|
731
731
|
}
|
|
732
732
|
return [
|
|
733
733
|
{
|
|
734
|
-
id: `${
|
|
734
|
+
id: `${import_chunk_IC2NICNC.THREAD_PLUGIN}/create/${node.id}`,
|
|
735
735
|
data: async () => {
|
|
736
736
|
await dispatch([
|
|
737
737
|
{
|
|
738
|
-
plugin:
|
|
739
|
-
action:
|
|
738
|
+
plugin: import_chunk_IC2NICNC.THREAD_PLUGIN,
|
|
739
|
+
action: import_chunk_ANGUPCW3.ThreadAction.CREATE
|
|
740
740
|
},
|
|
741
741
|
{
|
|
742
742
|
action: import_plugin_space.SpaceAction.ADD_OBJECT,
|
|
@@ -753,7 +753,7 @@ var ThreadPlugin = () => {
|
|
|
753
753
|
label: [
|
|
754
754
|
"create channel label",
|
|
755
755
|
{
|
|
756
|
-
ns:
|
|
756
|
+
ns: import_chunk_IC2NICNC.THREAD_PLUGIN
|
|
757
757
|
}
|
|
758
758
|
],
|
|
759
759
|
icon: "ph--chat--regular",
|
|
@@ -775,7 +775,7 @@ var ThreadPlugin = () => {
|
|
|
775
775
|
}) : null;
|
|
776
776
|
}
|
|
777
777
|
case "settings": {
|
|
778
|
-
return data.plugin ===
|
|
778
|
+
return data.plugin === import_chunk_IC2NICNC.meta_default.id ? /* @__PURE__ */ import_react.default.createElement(ThreadSettings, {
|
|
779
779
|
settings: settings.values
|
|
780
780
|
}) : null;
|
|
781
781
|
}
|
|
@@ -800,9 +800,9 @@ var ThreadPlugin = () => {
|
|
|
800
800
|
});
|
|
801
801
|
}
|
|
802
802
|
if (data.subject instanceof import_types.ThreadType) {
|
|
803
|
-
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(
|
|
803
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_chunk_GXREFXBX.ChatHeading, {
|
|
804
804
|
attendableId: data.subject.id
|
|
805
|
-
}), /* @__PURE__ */ import_react.default.createElement(
|
|
805
|
+
}), /* @__PURE__ */ import_react.default.createElement(import_chunk_GXREFXBX.ChatContainer, {
|
|
806
806
|
thread: data.subject
|
|
807
807
|
}));
|
|
808
808
|
}
|
|
@@ -828,7 +828,7 @@ var ThreadPlugin = () => {
|
|
|
828
828
|
intent: {
|
|
829
829
|
resolver: async (intent) => {
|
|
830
830
|
switch (intent.action) {
|
|
831
|
-
case
|
|
831
|
+
case import_chunk_ANGUPCW3.ThreadAction.CREATE: {
|
|
832
832
|
if (intent.data && intent.data.cursor !== void 0) {
|
|
833
833
|
const { cursor, name, subject } = intent.data;
|
|
834
834
|
if (subject?.threads === void 0) {
|
|
@@ -864,7 +864,7 @@ var ThreadPlugin = () => {
|
|
|
864
864
|
intents: [
|
|
865
865
|
[
|
|
866
866
|
{
|
|
867
|
-
action:
|
|
867
|
+
action: import_chunk_ANGUPCW3.ThreadAction.SELECT,
|
|
868
868
|
data: {
|
|
869
869
|
current: (0, import_echo2.fullyQualifiedId)(thread)
|
|
870
870
|
}
|
|
@@ -903,7 +903,7 @@ var ThreadPlugin = () => {
|
|
|
903
903
|
};
|
|
904
904
|
}
|
|
905
905
|
}
|
|
906
|
-
case
|
|
906
|
+
case import_chunk_ANGUPCW3.ThreadAction.SELECT: {
|
|
907
907
|
state.current = intent.data?.current;
|
|
908
908
|
return {
|
|
909
909
|
data: true,
|
|
@@ -921,7 +921,7 @@ var ThreadPlugin = () => {
|
|
|
921
921
|
] : []
|
|
922
922
|
};
|
|
923
923
|
}
|
|
924
|
-
case
|
|
924
|
+
case import_chunk_ANGUPCW3.ThreadAction.TOGGLE_RESOLVED: {
|
|
925
925
|
const { thread } = intent.data ?? {};
|
|
926
926
|
if (!(thread instanceof import_types.ThreadType)) {
|
|
927
927
|
return;
|
|
@@ -951,7 +951,7 @@ var ThreadPlugin = () => {
|
|
|
951
951
|
]
|
|
952
952
|
};
|
|
953
953
|
}
|
|
954
|
-
case
|
|
954
|
+
case import_chunk_ANGUPCW3.ThreadAction.DELETE: {
|
|
955
955
|
const { subject, thread } = intent.data ?? {};
|
|
956
956
|
if (!(thread instanceof import_types.ThreadType) || !(subject && typeof subject === "object" && "threads" in subject)) {
|
|
957
957
|
return;
|
|
@@ -980,7 +980,7 @@ var ThreadPlugin = () => {
|
|
|
980
980
|
space.db.remove(thread);
|
|
981
981
|
return {
|
|
982
982
|
undoable: {
|
|
983
|
-
message: translations_default[0]["en-US"][
|
|
983
|
+
message: translations_default[0]["en-US"][import_chunk_IC2NICNC.THREAD_PLUGIN]["thread deleted label"],
|
|
984
984
|
data: {
|
|
985
985
|
cursor
|
|
986
986
|
}
|
|
@@ -1023,7 +1023,7 @@ var ThreadPlugin = () => {
|
|
|
1023
1023
|
}
|
|
1024
1024
|
break;
|
|
1025
1025
|
}
|
|
1026
|
-
case
|
|
1026
|
+
case import_chunk_ANGUPCW3.ThreadAction.ON_MESSAGE_ADD: {
|
|
1027
1027
|
const { thread, subject } = intent.data ?? {};
|
|
1028
1028
|
if (!(thread instanceof import_types.ThreadType) || !(subject && typeof subject === "object" && "threads" in subject && Array.isArray(subject.threads))) {
|
|
1029
1029
|
return;
|
|
@@ -1066,7 +1066,7 @@ var ThreadPlugin = () => {
|
|
|
1066
1066
|
]
|
|
1067
1067
|
};
|
|
1068
1068
|
}
|
|
1069
|
-
case
|
|
1069
|
+
case import_chunk_ANGUPCW3.ThreadAction.DELETE_MESSAGE: {
|
|
1070
1070
|
const { subject, thread, messageId } = intent.data ?? {};
|
|
1071
1071
|
const space = (0, import_echo2.getSpace)(subject);
|
|
1072
1072
|
if (!(thread instanceof import_types.ThreadType) || !(subject && typeof subject === "object" && "threads" in subject)) {
|
|
@@ -1083,7 +1083,7 @@ var ThreadPlugin = () => {
|
|
|
1083
1083
|
intents: [
|
|
1084
1084
|
[
|
|
1085
1085
|
{
|
|
1086
|
-
action:
|
|
1086
|
+
action: import_chunk_ANGUPCW3.ThreadAction.DELETE,
|
|
1087
1087
|
data: {
|
|
1088
1088
|
subject,
|
|
1089
1089
|
thread
|
|
@@ -1097,7 +1097,7 @@ var ThreadPlugin = () => {
|
|
|
1097
1097
|
}
|
|
1098
1098
|
return {
|
|
1099
1099
|
undoable: {
|
|
1100
|
-
message: translations_default[0]["en-US"][
|
|
1100
|
+
message: translations_default[0]["en-US"][import_chunk_IC2NICNC.THREAD_PLUGIN]["message deleted label"],
|
|
1101
1101
|
data: {
|
|
1102
1102
|
message,
|
|
1103
1103
|
messageIndex
|
package/dist/lib/node/meta.cjs
CHANGED
|
@@ -18,12 +18,12 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var meta_exports = {};
|
|
20
20
|
__export(meta_exports, {
|
|
21
|
-
THREAD_ITEM: () =>
|
|
22
|
-
THREAD_PLUGIN: () =>
|
|
23
|
-
default: () =>
|
|
21
|
+
THREAD_ITEM: () => import_chunk_IC2NICNC.THREAD_ITEM,
|
|
22
|
+
THREAD_PLUGIN: () => import_chunk_IC2NICNC.THREAD_PLUGIN,
|
|
23
|
+
default: () => import_chunk_IC2NICNC.meta_default
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(meta_exports);
|
|
26
|
-
var
|
|
26
|
+
var import_chunk_IC2NICNC = require("./chunk-IC2NICNC.cjs");
|
|
27
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
28
28
|
0 && (module.exports = {
|
|
29
29
|
THREAD_ITEM,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["meta.cjs"],
|
|
4
|
-
"sourcesContent": ["import {\n THREAD_ITEM,\n THREAD_PLUGIN,\n meta_default\n} from \"./chunk-
|
|
4
|
+
"sourcesContent": ["import {\n THREAD_ITEM,\n THREAD_PLUGIN,\n meta_default\n} from \"./chunk-IC2NICNC.cjs\";\nexport {\n THREAD_ITEM,\n THREAD_PLUGIN,\n meta_default as default\n};\n//# sourceMappingURL=meta.cjs.map\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAIO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|