@dxos/plugin-thread 0.7.5-labs.e27f9b9 → 0.7.5-labs.f400bbc
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/{ThreadContainer-T4WIBHY6.mjs → ThreadContainer-6OP5AG2W.mjs} +2 -2
- package/dist/lib/browser/{chunk-5EQVG4L3.mjs → chunk-UPKU23DA.mjs} +8 -18
- package/dist/lib/browser/chunk-UPKU23DA.mjs.map +7 -0
- package/dist/lib/browser/chunk-VOMIDDNO.mjs +15 -0
- package/dist/lib/browser/chunk-VOMIDDNO.mjs.map +7 -0
- package/dist/lib/browser/{chunk-NO5AZLUZ.mjs → chunk-YK3ICB7G.mjs} +2 -4
- package/dist/lib/browser/{chunk-NO5AZLUZ.mjs.map → chunk-YK3ICB7G.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +43 -45
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-QFP6L3AF.mjs → intent-resolver-FAFQ54NP.mjs} +4 -4
- package/dist/lib/browser/{intent-resolver-QFP6L3AF.mjs.map → intent-resolver-FAFQ54NP.mjs.map} +1 -1
- package/dist/lib/browser/{markdown-2NBXKXCY.mjs → markdown-RPYOUBVR.mjs} +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-LDPZN456.mjs → react-surface-Y4MUSICN.mjs} +42 -33
- package/dist/lib/browser/react-surface-Y4MUSICN.mjs.map +7 -0
- package/dist/lib/browser/{settings-TKOPRXSU.mjs → settings-WQTE5AEZ.mjs} +2 -2
- package/dist/lib/browser/types.mjs +1 -1
- package/dist/lib/node/{ThreadContainer-4XACAVGV.cjs → ThreadContainer-LTKKLPXX.cjs} +6 -6
- package/dist/lib/node/{chunk-346YIZVL.cjs → chunk-BHFHFTHO.cjs} +8 -13
- package/dist/lib/node/chunk-BHFHFTHO.cjs.map +7 -0
- package/dist/lib/node/{chunk-AUVKOX5Q.cjs → chunk-CMEMMYDL.cjs} +5 -7
- package/dist/lib/node/{chunk-AUVKOX5Q.cjs.map → chunk-CMEMMYDL.cjs.map} +3 -3
- package/dist/lib/node/{chunk-VAZ3BCTU.cjs → chunk-RQR5Z23G.cjs} +11 -20
- package/dist/lib/node/chunk-RQR5Z23G.cjs.map +7 -0
- package/dist/lib/node/index.cjs +44 -44
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-ZSOQILPJ.cjs → intent-resolver-DVBEXJ33.cjs} +13 -13
- package/dist/lib/node/{intent-resolver-ZSOQILPJ.cjs.map → intent-resolver-DVBEXJ33.cjs.map} +1 -1
- package/dist/lib/node/{markdown-FWRKMSKV.cjs → markdown-ELRGISXE.cjs} +7 -7
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-MCQUT7BC.cjs → react-surface-7HLTN5XS.cjs} +46 -37
- package/dist/lib/node/react-surface-7HLTN5XS.cjs.map +7 -0
- package/dist/lib/node/{settings-TH4YSUVU.cjs → settings-7VQYARM5.cjs} +6 -6
- package/dist/lib/node/types.cjs +3 -3
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/{ThreadContainer-FGFB25TQ.mjs → ThreadContainer-SV74JFRH.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-B3CF35MY.mjs → chunk-33NDMQQQ.mjs} +2 -4
- package/dist/lib/node-esm/{chunk-B3CF35MY.mjs.map → chunk-33NDMQQQ.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-DKCH2H5C.mjs → chunk-CISLDOH7.mjs} +8 -18
- package/dist/lib/node-esm/chunk-CISLDOH7.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-PJPVEO7E.mjs +17 -0
- package/dist/lib/node-esm/chunk-PJPVEO7E.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +43 -45
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-MHP4C2NZ.mjs → intent-resolver-DHVLBNCC.mjs} +4 -4
- package/dist/lib/node-esm/{intent-resolver-MHP4C2NZ.mjs.map → intent-resolver-DHVLBNCC.mjs.map} +1 -1
- package/dist/lib/node-esm/{markdown-6AQFDAW3.mjs → markdown-23OB7EZG.mjs} +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-6JMVZUDM.mjs → react-surface-AZHTTR6J.mjs} +42 -33
- package/dist/lib/node-esm/react-surface-AZHTTR6J.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-KEDRR7RM.mjs → settings-SGMM7UDT.mjs} +2 -2
- package/dist/lib/node-esm/types.mjs +1 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +2 -179
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -1
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +2 -3
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentContainer.d.ts +1 -2
- package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/components/CommentsContainer.d.ts +1 -2
- package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +1 -2
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/ThreadComplementary.d.ts +1 -2
- package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
- package/dist/types/src/components/ThreadContainer.d.ts +2 -2
- package/dist/types/src/components/ThreadContainer.d.ts.map +1 -1
- package/dist/types/src/components/ThreadSettings.d.ts +1 -2
- package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +12 -12
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +6 -3
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +5 -7
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +31 -30
- package/src/ThreadPlugin.tsx +44 -47
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/intent-resolver.ts +1 -1
- package/src/capabilities/react-surface.tsx +1 -2
- package/src/components/Chat.stories.tsx +1 -5
- package/src/components/CommentContainer.tsx +2 -2
- package/src/components/Comments.stories.tsx +8 -2
- package/src/components/MessageContainer.tsx +6 -19
- package/src/components/ThreadComplementary.tsx +34 -4
- package/src/components/ThreadSettings.tsx +5 -11
- package/src/translations.ts +2 -1
- package/src/types.ts +1 -5
- package/dist/lib/browser/app-graph-builder-IANFWFYN.mjs +0 -121
- package/dist/lib/browser/app-graph-builder-IANFWFYN.mjs.map +0 -7
- package/dist/lib/browser/chunk-5EQVG4L3.mjs.map +0 -7
- package/dist/lib/browser/chunk-L4QHQNDC.mjs +0 -18
- package/dist/lib/browser/chunk-L4QHQNDC.mjs.map +0 -7
- package/dist/lib/browser/react-surface-LDPZN456.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-LFEDPJLK.cjs +0 -135
- package/dist/lib/node/app-graph-builder-LFEDPJLK.cjs.map +0 -7
- package/dist/lib/node/chunk-346YIZVL.cjs.map +0 -7
- package/dist/lib/node/chunk-VAZ3BCTU.cjs.map +0 -7
- package/dist/lib/node/react-surface-MCQUT7BC.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-IXHFRMCY.mjs +0 -122
- package/dist/lib/node-esm/app-graph-builder-IXHFRMCY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3INUK3A6.mjs +0 -20
- package/dist/lib/node-esm/chunk-3INUK3A6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-DKCH2H5C.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-6JMVZUDM.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -180
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder.ts +0 -119
- /package/dist/lib/browser/{ThreadContainer-T4WIBHY6.mjs.map → ThreadContainer-6OP5AG2W.mjs.map} +0 -0
- /package/dist/lib/browser/{markdown-2NBXKXCY.mjs.map → markdown-RPYOUBVR.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-TKOPRXSU.mjs.map → settings-WQTE5AEZ.mjs.map} +0 -0
- /package/dist/lib/node/{ThreadContainer-4XACAVGV.cjs.map → ThreadContainer-LTKKLPXX.cjs.map} +0 -0
- /package/dist/lib/node/{markdown-FWRKMSKV.cjs.map → markdown-ELRGISXE.cjs.map} +0 -0
- /package/dist/lib/node/{settings-TH4YSUVU.cjs.map → settings-7VQYARM5.cjs.map} +0 -0
- /package/dist/lib/node-esm/{ThreadContainer-FGFB25TQ.mjs.map → ThreadContainer-SV74JFRH.mjs.map} +0 -0
- /package/dist/lib/node-esm/{markdown-6AQFDAW3.mjs.map → markdown-23OB7EZG.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-KEDRR7RM.mjs.map → settings-SGMM7UDT.mjs.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/index.ts", "../../../src/components/CommentContainer.tsx", "../../../src/components/CommentsContainer.tsx", "../../../src/components/ThreadComplementary.tsx", "../../../src/components/ThreadSettings.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useLayout } from '@dxos/app-framework';\nimport { type Ref } from '@dxos/echo-schema';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { ChannelType, type ThreadType } from '@dxos/plugin-space/types';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { ThreadContainer, ThreadComplementary, ThreadSettings } from '../components';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadSettingsProps } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${THREAD_PLUGIN}/channel`,\n role: 'article',\n filter: (data): data is { subject: ChannelType } =>\n data.subject instanceof ChannelType && !!data.subject.threads[0],\n component: ({ data, role }) => {\n const layout = useLayout();\n const channel = data.subject;\n void channel.threads[0].load();\n const thread = channel.threads[0].target;\n if (!thread) {\n return null;\n }\n\n const currentPosition = layout.active.findIndex((id) => id === channel.id);\n if (currentPosition > 0) {\n const objectToTheLeft = layout.active[currentPosition - 1];\n const context = getSpace(channel)?.db.getObjectById(objectToTheLeft);\n return <ThreadContainer role={role} thread={thread} context={context} />;\n }\n\n return <ThreadContainer role={role} thread={thread} />;\n },\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/thread`,\n role: 'complementary--comments',\n filter: (data): data is { subject: { threads: Ref<ThreadType>[] } } =>\n !!data.subject &&\n typeof data.subject === 'object' &&\n 'threads' in data.subject &&\n Array.isArray(data.subject.threads) &&\n !(data.subject instanceof ChannelType),\n component: ({ data }) => <ThreadComplementary subject={data.subject} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<ThreadSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === THREAD_PLUGIN,\n component: ({ data: { subject } }) => <ThreadSettings settings={subject.value} />,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const ThreadContainer = lazy(() => import('./ThreadContainer'));\n\n// TODO(wittjosiah): Suspense boundary for sidebar?\nexport * from './CommentContainer';\nexport * from './CommentsContainer';\nexport * from './ChatContainer';\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 { 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 { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, ThreadHeading } from '@dxos/react-ui-thread';\nimport { isNonNullable } 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\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.Root>\n <Tooltip.Trigger asChild>\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 <Tooltip.Portal>\n <Tooltip.Content>\n {label}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\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.Root>\n <Tooltip.Trigger asChild>\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 <Tooltip.Portal>\n <Tooltip.Content classNames='z-30'>\n {label}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nexport const CommentContainer = ({\n thread,\n detached,\n current,\n onAttend,\n onComment,\n onResolve,\n onMessageDelete,\n onThreadDelete,\n}: 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 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?.(thread), [onAttend, thread]);\n const handleResolve = useCallback(() => onResolve?.(thread), [onResolve, thread]);\n const handleMessageDelete = useCallback((id: string) => onMessageDelete?.(thread, id), [onMessageDelete, thread]);\n const handleThreadDelete = useCallback(() => onThreadDelete?.(thread), [onThreadDelete, thread]);\n\n const handleComment: MessageTextboxProps['onSend'] = useCallback(() => {\n if (!messageRef.current) {\n return false;\n }\n\n onComment?.(thread, messageRef.current);\n messageRef.current = '';\n scrollToEnd('instant');\n rerenderEditor();\n\n return true;\n }, [thread, 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.Root>\n <Tooltip.Trigger asChild>\n <ThreadHeading detached>{thread.name}</ThreadHeading>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-30' side='top'>\n {t('detached thread label')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\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.allResolvedTargets(thread.messages?.filter(isNonNullable) ?? []).map((message) => (\n <MessageContainer key={message.id} message={message} members={members} onDelete={handleMessageDelete} />\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 { ChatText } from '@phosphor-icons/react';\nimport React, { useEffect } from 'react';\n\nimport { type ThreadType } from '@dxos/plugin-space/types';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { useTranslation, Trans } from '@dxos/react-ui';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\n\nimport { CommentContainer } from './CommentContainer';\nimport { type ThreadContainerProps } from './types';\nimport { THREAD_PLUGIN } from '../meta';\n\nexport type ThreadsContainerProps = Omit<ThreadContainerProps, 'thread' | 'detached' | 'current' | 'autoFocus'> & {\n threads: ThreadType[];\n /**\n * Threads that are no longer anchored to a position in the object.\n */\n detached?: string[];\n currentId?: string;\n showResolvedThreads?: boolean;\n};\n\n/**\n * Comment threads.\n */\nexport const CommentsContainer = ({\n threads,\n detached = [],\n currentId,\n showResolvedThreads,\n ...props\n}: ThreadsContainerProps) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const filteredThreads = showResolvedThreads ? threads : threads.filter((thread) => !(thread?.status === 'resolved'));\n\n useEffect(() => {\n if (currentId) {\n document.getElementById(currentId)?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n }, [currentId]);\n\n return (\n <>\n {filteredThreads.length > 0 ? (\n filteredThreads.map((thread) => {\n const threadId = fullyQualifiedId(thread);\n return (\n <CommentContainer\n key={threadId}\n thread={thread}\n current={currentId === threadId}\n detached={detached.includes(threadId)}\n {...props}\n />\n );\n })\n ) : (\n <div\n role='alert'\n className={mx(\n descriptionText,\n 'place-self-center border border-dashed border-unAccent rounded-lg text-center p-4 m-4',\n )}\n >\n <h2 className='mbe-2 font-medium text-baseText'>{t('no comments title')}</h2>\n <p>\n <Trans\n {...{\n t,\n i18nKey: 'no comments message',\n components: {\n commentIcon: <ChatText className='inline-block' />,\n },\n }}\n />\n </p>\n </div>\n )}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo } from 'react';\n\nimport { createIntent, LayoutAction, useCapability, useCapabilities, useIntentDispatcher } from '@dxos/app-framework';\nimport { ThreadCapabilities } from '@dxos/plugin-space';\nimport { MessageType, type ThreadType } from '@dxos/plugin-space/types';\nimport { create, fullyQualifiedId, makeRef, RefArray } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { isNonNullable } from '@dxos/util';\n\nimport { ThreadCapabilities as LocalThreadCapabilities } from '../capabilities';\nimport { CommentsContainer } from '../components';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ThreadAction } 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\n const { state, getViewState } = useCapability(LocalThreadCapabilities.MutableState);\n const viewState = getViewState(fullyQualifiedId(subject));\n const { showResolvedThreads } = viewState;\n const onChangeViewState = useCallback(\n (nextValue: string) => {\n viewState.showResolvedThreads = nextValue === 'all';\n },\n [viewState],\n );\n const drafts = state.drafts[fullyQualifiedId(subject)];\n\n const threadsIntegrators = useCapabilities(ThreadCapabilities.Thread);\n const createSort = useMemo(\n () => threadsIntegrators.find((p) => p.predicate(subject))?.createSort,\n [threadsIntegrators, subject],\n );\n const sort = useMemo(() => createSort?.(subject), [createSort, subject]);\n\n const threadObjects = RefArray.allResolvedTargets(subject.threads ?? []);\n\n const threads = useMemo(() => {\n return threadObjects.concat(drafts ?? []).filter(isNonNullable) as ThreadType[];\n }, [JSON.stringify(threadObjects), JSON.stringify(drafts)]);\n\n const detachedIds = useMemo(() => {\n return threads.filter(({ anchor }) => !anchor).map((thread) => fullyQualifiedId(thread));\n }, [threads]);\n\n useEffect(() => {\n if (!sort) {\n return;\n }\n threads.sort((a, b) => sort(a?.anchor, b?.anchor));\n }, [sort, threads]);\n\n const attended = useAttended();\n const qualifiedSubjectId = fullyQualifiedId(subject);\n\n const handleAttend = useCallback(\n (thread: ThreadType) => {\n const threadId = fullyQualifiedId(thread);\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: thread.anchor,\n ref: threadId,\n },\n }),\n );\n }\n },\n [state.current, dispatch, subject],\n );\n\n const handleComment = useCallback(\n async (thread: ThreadType, message: string) => {\n thread.messages.push(\n makeRef(\n create(MessageType, {\n sender: { identityKey: identity?.identityKey.toHex() },\n timestamp: new Date().toISOString(),\n text: message,\n // TODO(wittjosiah): Context based on attention.\n // context: context ? makeRef(context) : undefined,\n }),\n ),\n );\n\n await dispatch(createIntent(ThreadAction.OnMessageAdd, { thread, subject }));\n\n state.current = fullyQualifiedId(thread);\n },\n [dispatch, identity, subject],\n );\n\n const handleResolve = useCallback(\n (thread: ThreadType) => dispatch(createIntent(ThreadAction.ToggleResolved, { thread })),\n [dispatch],\n );\n\n const handleThreadDelete = useCallback(\n (thread: ThreadType) => dispatch(createIntent(ThreadAction.Delete, { thread, subject })),\n [dispatch, subject],\n );\n\n const handleMessageDelete = useCallback(\n (thread: ThreadType, messageId: string) =>\n dispatch(createIntent(ThreadAction.DeleteMessage, { thread, subject, messageId })),\n [dispatch, subject],\n );\n\n const comments = (\n <CommentsContainer\n threads={threads}\n detached={detachedIds}\n currentId={attended.includes(qualifiedSubjectId) ? 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 <Tabs.Root\n value={showResolvedThreads ? 'all' : 'unresolved'}\n onValueChange={onChangeViewState}\n orientation='horizontal'\n >\n <Tabs.Tablist classNames='p-1 gap-1 bs-[--rail-action] border-be border-separator'>\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 );\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": ["import_react", "import_echo", "import_react_ui", "import_react_ui_theme", "import_app_framework", "import_types", "import_halo", "import_util", "sizeClass", "getSize", "commentControlClassNames", "ToggleResolvedButton", "isResolved", "onResolve", "t", "useTranslation", "THREAD_PLUGIN", "label", "React", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "data-testid", "onClick", "classNames", "hoverableControlItem", "span", "className", "CheckCircle", "weight", "Portal", "Content", "Arrow", "DeleteThreadButton", "onDelete", "X", "CommentContainer", "thread", "detached", "current", "onAttend", "onComment", "onMessageDelete", "onThreadDelete", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "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", "ThreadHeading", "name", "side", "status", "Tag", "palette", "RefArray", "allResolvedTargets", "messages", "filter", "isNonNullable", "map", "message", "MessageContainer", "MessageTextbox", "onSend", "ThreadFooter", "ref", "CommentsContainer", "threads", "currentId", "showResolvedThreads", "props", "filteredThreads", "useEffect", "document", "getElementById", "length", "threadId", "includes", "descriptionText", "h2", "p", "Trans", "i18nKey", "components", "commentIcon", "ChatText", "ThreadComplementary", "subject", "dispatchPromise", "dispatch", "useIntentDispatcher", "state", "getViewState", "useCapability", "LocalThreadCapabilities", "MutableState", "viewState", "onChangeViewState", "nextValue", "drafts", "threadsIntegrators", "useCapabilities", "ThreadCapabilities", "createSort", "find", "predicate", "sort", "threadObjects", "concat", "JSON", "stringify", "detachedIds", "anchor", "a", "b", "attended", "useAttended", "qualifiedSubjectId", "createIntent", "LayoutAction", "ScrollIntoView", "part", "options", "cursor", "push", "makeRef", "create", "MessageType", "sender", "identityKey", "toHex", "timestamp", "Date", "toISOString", "ThreadAction", "OnMessageAdd", "ToggleResolved", "Delete", "messageId", "DeleteMessage", "comments", "undefined", "Tabs", "value", "onValueChange", "orientation", "Tablist", "Tab", "Tabpanel", "ThreadSettings", "settings", "DeprecatedFormContainer", "ThreadContainer", "lazy", "contributes", "Capabilities", "ReactSurface", "createSurface", "data", "ChannelType", "component", "layout", "useLayout", "channel", "load", "target", "currentPosition", "active", "findIndex", "objectToTheLeft", "context", "db", "getObjectById", "Array", "isArray", "SettingsStore", "prefix"]
|
|
7
|
+
}
|
|
@@ -16,21 +16,21 @@ 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 settings_7VQYARM5_exports = {};
|
|
20
|
+
__export(settings_7VQYARM5_exports, {
|
|
21
21
|
default: () => settings_default
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
var
|
|
23
|
+
module.exports = __toCommonJS(settings_7VQYARM5_exports);
|
|
24
|
+
var import_chunk_CMEMMYDL = require("./chunk-CMEMMYDL.cjs");
|
|
25
25
|
var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
|
|
26
26
|
var import_app_framework = require("@dxos/app-framework");
|
|
27
27
|
var import_live_object = require("@dxos/live-object");
|
|
28
28
|
var settings_default = () => {
|
|
29
29
|
const settings = (0, import_live_object.create)({});
|
|
30
30
|
return (0, import_app_framework.contributes)(import_app_framework.Capabilities.Settings, {
|
|
31
|
-
schema:
|
|
31
|
+
schema: import_chunk_CMEMMYDL.ThreadSettingsSchema,
|
|
32
32
|
prefix: import_chunk_F735VMTN.THREAD_PLUGIN,
|
|
33
33
|
value: settings
|
|
34
34
|
});
|
|
35
35
|
};
|
|
36
|
-
//# sourceMappingURL=settings-
|
|
36
|
+
//# sourceMappingURL=settings-7VQYARM5.cjs.map
|
package/dist/lib/node/types.cjs
CHANGED
|
@@ -18,11 +18,11 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var types_exports = {};
|
|
20
20
|
__export(types_exports, {
|
|
21
|
-
ThreadAction: () =>
|
|
22
|
-
ThreadSettingsSchema: () =>
|
|
21
|
+
ThreadAction: () => import_chunk_CMEMMYDL.ThreadAction,
|
|
22
|
+
ThreadSettingsSchema: () => import_chunk_CMEMMYDL.ThreadSettingsSchema
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(types_exports);
|
|
25
|
-
var
|
|
25
|
+
var import_chunk_CMEMMYDL = require("./chunk-CMEMMYDL.cjs");
|
|
26
26
|
var import_chunk_F735VMTN = require("./chunk-F735VMTN.cjs");
|
|
27
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
28
28
|
0 && (module.exports = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["types.cjs"],
|
|
4
|
-
"sourcesContent": ["import {\n ThreadAction,\n ThreadSettingsSchema\n} from \"./chunk-
|
|
4
|
+
"sourcesContent": ["import {\n ThreadAction,\n ThreadSettingsSchema\n} from \"./chunk-CMEMMYDL.cjs\";\nimport \"./chunk-F735VMTN.cjs\";\nexport {\n ThreadAction,\n ThreadSettingsSchema\n};\n//# sourceMappingURL=types.cjs.map\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;AACP,4BAAO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
ChatContainer
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CISLDOH7.mjs";
|
|
5
5
|
import "./chunk-HLWJTUWZ.mjs";
|
|
6
6
|
import "./chunk-FXUATCLW.mjs";
|
|
7
7
|
|
|
@@ -17,4 +17,4 @@ var ThreadContainer_default = ThreadContainer;
|
|
|
17
17
|
export {
|
|
18
18
|
ThreadContainer_default as default
|
|
19
19
|
};
|
|
20
|
-
//# sourceMappingURL=ThreadContainer-
|
|
20
|
+
//# sourceMappingURL=ThreadContainer-SV74JFRH.mjs.map
|
|
@@ -71,12 +71,10 @@ var ThreadAction;
|
|
|
71
71
|
}
|
|
72
72
|
ThreadAction2.DeleteMessage = DeleteMessage;
|
|
73
73
|
})(ThreadAction || (ThreadAction = {}));
|
|
74
|
-
var ThreadSettingsSchema = S.mutable(S.Struct({
|
|
75
|
-
standalone: S.optional(S.Boolean)
|
|
76
|
-
}));
|
|
74
|
+
var ThreadSettingsSchema = S.mutable(S.Struct({}));
|
|
77
75
|
|
|
78
76
|
export {
|
|
79
77
|
ThreadAction,
|
|
80
78
|
ThreadSettingsSchema
|
|
81
79
|
};
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-33NDMQQQ.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { S } from '@dxos/echo-schema';\nimport { ChannelType, MessageType, ThreadType } from '@dxos/plugin-space/types';\nimport { EchoObjectSchema } from '@dxos/react-client/echo';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport namespace ThreadAction {\n const THREAD_ACTION = `${THREAD_PLUGIN}/action`;\n\n export class Create extends S.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {\n input: S.Struct({\n name: S.optional(S.String),\n cursor: S.optional(S.String),\n subject: S.optional(EchoObjectSchema),\n }),\n output: S.Struct({\n object: S.Union(ChannelType, ThreadType),\n }),\n }) {}\n\n export class Select extends S.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {\n input: S.Struct({\n current: S.String,\n skipOpen: S.optional(S.Boolean),\n }),\n output: S.Void,\n }) {}\n\n export class ToggleResolved extends S.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {\n input: S.Struct({\n thread: ThreadType,\n }),\n output: S.Void,\n }) {}\n\n export class Delete extends S.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n cursor: S.optional(S.String),\n }),\n output: S.Void,\n }) {}\n\n // TODO(wittjosiah): Rename?\n export class OnMessageAdd extends S.TaggedClass<OnMessageAdd>()(`${THREAD_ACTION}/on-message-add`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n }),\n output: S.Void,\n }) {}\n\n export class DeleteMessage extends S.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n messageId: S.String,\n message: S.optional(MessageType),\n messageIndex: S.optional(S.Number),\n }),\n output: S.Void,\n }) {}\n}\n\nexport const ThreadSettingsSchema = S.mutable(
|
|
5
|
-
"mappings": ";;;;;;AAIA,SAASA,SAAS;AAClB,SAASC,aAAaC,aAAaC,kBAAkB;AACrD,SAASC,wBAAwB;;UAIhBC,eAAAA;AACf,QAAMC,gBAAgB,GAAGC,aAAAA;EAElB,MAAMC,eAAeC,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdC,MAAMJ,EAAEK,SAASL,EAAEM,MAAM;MACzBC,QAAQP,EAAEK,SAASL,EAAEM,MAAM;MAC3BE,SAASR,EAAEK,SAASI,gBAAAA;IACtB,CAAA;IACAC,QAAQV,EAAEG,OAAO;MACfQ,QAAQX,EAAEY,MAAMC,aAAaC,UAAAA;IAC/B,CAAA;EACF,CAAA,EAAA;EAAI;gBATSf,SAAAA;EAWN,MAAMgB,eAAef,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACda,SAAShB,EAAEM;MACXW,UAAUjB,EAAEK,SAASL,EAAEkB,OAAO;IAChC,CAAA;IACAR,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBANSJ,SAAAA;EAQN,MAAMK,uBAAuBpB,EAAEC,YAAW,EAAmB,GAAGJ,aAAAA,oBAAiC;IACtGK,OAAOF,EAAEG,OAAO;MACdkB,QAAQP;IACV,CAAA;IACAJ,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBALSC,iBAAAA;EAON,MAAME,eAAetB,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdkB,QAAQP;MACRN,SAASC;MACTF,QAAQP,EAAEK,SAASL,EAAEM,MAAM;IAC7B,CAAA;IACAI,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBAPSG,SAAAA;EAUN,MAAMC,qBAAqBvB,EAAEC,YAAW,EAAiB,GAAGJ,aAAAA,mBAAgC;IACjGK,OAAOF,EAAEG,OAAO;MACdkB,QAAQP;MACRN,SAASC;IACX,CAAA;IACAC,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBANSI,eAAAA;EAQN,MAAMC,sBAAsBxB,EAAEC,YAAW,EAAkB,GAAGJ,aAAAA,mBAAgC;IACnGK,OAAOF,EAAEG,OAAO;MACdkB,QAAQP;MACRN,SAASC;MACTgB,WAAWzB,EAAEM;MACboB,SAAS1B,EAAEK,SAASsB,WAAAA;MACpBC,cAAc5B,EAAEK,SAASL,EAAE6B,MAAM;IACnC,CAAA;IACAnB,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBATSK,gBAAAA;AAUf,GAzDiB5B,iBAAAA,eAAAA,CAAAA,EAAAA;AA2DV,IAAMkC,uBAAuB9B,EAAE+B,
|
|
6
|
-
"names": ["S", "ChannelType", "MessageType", "ThreadType", "EchoObjectSchema", "ThreadAction", "THREAD_ACTION", "THREAD_PLUGIN", "Create", "S", "TaggedClass", "input", "Struct", "name", "optional", "String", "cursor", "subject", "EchoObjectSchema", "output", "object", "Union", "ChannelType", "ThreadType", "Select", "current", "skipOpen", "Boolean", "Void", "ToggleResolved", "thread", "Delete", "OnMessageAdd", "DeleteMessage", "messageId", "message", "MessageType", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { S } from '@dxos/echo-schema';\nimport { ChannelType, MessageType, ThreadType } from '@dxos/plugin-space/types';\nimport { EchoObjectSchema } from '@dxos/react-client/echo';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport namespace ThreadAction {\n const THREAD_ACTION = `${THREAD_PLUGIN}/action`;\n\n export class Create extends S.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {\n input: S.Struct({\n name: S.optional(S.String),\n cursor: S.optional(S.String),\n subject: S.optional(EchoObjectSchema),\n }),\n output: S.Struct({\n object: S.Union(ChannelType, ThreadType),\n }),\n }) {}\n\n export class Select extends S.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {\n input: S.Struct({\n current: S.String,\n skipOpen: S.optional(S.Boolean),\n }),\n output: S.Void,\n }) {}\n\n export class ToggleResolved extends S.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {\n input: S.Struct({\n thread: ThreadType,\n }),\n output: S.Void,\n }) {}\n\n export class Delete extends S.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n cursor: S.optional(S.String),\n }),\n output: S.Void,\n }) {}\n\n // TODO(wittjosiah): Rename?\n export class OnMessageAdd extends S.TaggedClass<OnMessageAdd>()(`${THREAD_ACTION}/on-message-add`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n }),\n output: S.Void,\n }) {}\n\n export class DeleteMessage extends S.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {\n input: S.Struct({\n thread: ThreadType,\n subject: EchoObjectSchema,\n messageId: S.String,\n message: S.optional(MessageType),\n messageIndex: S.optional(S.Number),\n }),\n output: S.Void,\n }) {}\n}\n\nexport const ThreadSettingsSchema = S.mutable(S.Struct({}));\n\nexport type ThreadSettingsProps = S.Schema.Type<typeof ThreadSettingsSchema>;\n\nexport interface ThreadModel {\n root: ThreadType;\n}\n\ntype SubjectId = string;\nexport type ViewState = { showResolvedThreads: boolean };\nexport type ViewStore = Record<SubjectId, ViewState>;\n\nexport type ThreadState = {\n /** In-memory draft threads. */\n drafts: Record<string, ThreadType[]>;\n current?: string | undefined;\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,SAASA,SAAS;AAClB,SAASC,aAAaC,aAAaC,kBAAkB;AACrD,SAASC,wBAAwB;;UAIhBC,eAAAA;AACf,QAAMC,gBAAgB,GAAGC,aAAAA;EAElB,MAAMC,eAAeC,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdC,MAAMJ,EAAEK,SAASL,EAAEM,MAAM;MACzBC,QAAQP,EAAEK,SAASL,EAAEM,MAAM;MAC3BE,SAASR,EAAEK,SAASI,gBAAAA;IACtB,CAAA;IACAC,QAAQV,EAAEG,OAAO;MACfQ,QAAQX,EAAEY,MAAMC,aAAaC,UAAAA;IAC/B,CAAA;EACF,CAAA,EAAA;EAAI;gBATSf,SAAAA;EAWN,MAAMgB,eAAef,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACda,SAAShB,EAAEM;MACXW,UAAUjB,EAAEK,SAASL,EAAEkB,OAAO;IAChC,CAAA;IACAR,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBANSJ,SAAAA;EAQN,MAAMK,uBAAuBpB,EAAEC,YAAW,EAAmB,GAAGJ,aAAAA,oBAAiC;IACtGK,OAAOF,EAAEG,OAAO;MACdkB,QAAQP;IACV,CAAA;IACAJ,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBALSC,iBAAAA;EAON,MAAME,eAAetB,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdkB,QAAQP;MACRN,SAASC;MACTF,QAAQP,EAAEK,SAASL,EAAEM,MAAM;IAC7B,CAAA;IACAI,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBAPSG,SAAAA;EAUN,MAAMC,qBAAqBvB,EAAEC,YAAW,EAAiB,GAAGJ,aAAAA,mBAAgC;IACjGK,OAAOF,EAAEG,OAAO;MACdkB,QAAQP;MACRN,SAASC;IACX,CAAA;IACAC,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBANSI,eAAAA;EAQN,MAAMC,sBAAsBxB,EAAEC,YAAW,EAAkB,GAAGJ,aAAAA,mBAAgC;IACnGK,OAAOF,EAAEG,OAAO;MACdkB,QAAQP;MACRN,SAASC;MACTgB,WAAWzB,EAAEM;MACboB,SAAS1B,EAAEK,SAASsB,WAAAA;MACpBC,cAAc5B,EAAEK,SAASL,EAAE6B,MAAM;IACnC,CAAA;IACAnB,QAAQV,EAAEmB;EACZ,CAAA,EAAA;EAAI;gBATSK,gBAAAA;AAUf,GAzDiB5B,iBAAAA,eAAAA,CAAAA,EAAAA;AA2DV,IAAMkC,uBAAuB9B,EAAE+B,QAAQ/B,EAAEG,OAAO,CAAC,CAAA,CAAA;",
|
|
6
|
+
"names": ["S", "ChannelType", "MessageType", "ThreadType", "EchoObjectSchema", "ThreadAction", "THREAD_ACTION", "THREAD_PLUGIN", "Create", "S", "TaggedClass", "input", "Struct", "name", "optional", "String", "cursor", "subject", "EchoObjectSchema", "output", "object", "Union", "ChannelType", "ThreadType", "Select", "current", "skipOpen", "Boolean", "Void", "ToggleResolved", "thread", "Delete", "OnMessageAdd", "DeleteMessage", "messageId", "message", "MessageType", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"]
|
|
7
7
|
}
|
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
useStatus
|
|
5
5
|
} from "./chunk-HLWJTUWZ.mjs";
|
|
6
6
|
import {
|
|
7
|
-
THREAD_ITEM,
|
|
8
7
|
THREAD_PLUGIN
|
|
9
8
|
} from "./chunk-FXUATCLW.mjs";
|
|
10
9
|
|
|
@@ -31,7 +30,6 @@ import { PublicKey } from "@dxos/react-client";
|
|
|
31
30
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
32
31
|
import { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from "@dxos/react-ui";
|
|
33
32
|
import { createBasicExtensions, createThemeExtensions, useTextEditor } from "@dxos/react-ui-editor";
|
|
34
|
-
import { Mosaic } from "@dxos/react-ui-mosaic";
|
|
35
33
|
import { getSize, hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx as mx2 } from "@dxos/react-ui-theme";
|
|
36
34
|
import { MessageHeading, MessageRoot } from "@dxos/react-ui-thread";
|
|
37
35
|
|
|
@@ -144,14 +142,9 @@ var MessageContainer = ({ message, members, onDelete }) => {
|
|
|
144
142
|
})));
|
|
145
143
|
};
|
|
146
144
|
var MessagePart = ({ part }) => {
|
|
147
|
-
return /* @__PURE__ */ React.createElement(
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
type: THREAD_ITEM,
|
|
151
|
-
path: part.id,
|
|
152
|
-
item: part,
|
|
153
|
-
Component: MessageBlockObjectTile
|
|
154
|
-
}));
|
|
145
|
+
return /* @__PURE__ */ React.createElement(MessageBlockObjectTile, {
|
|
146
|
+
subject: part
|
|
147
|
+
});
|
|
155
148
|
};
|
|
156
149
|
var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
157
150
|
const { themeMode } = useThemeContext();
|
|
@@ -202,25 +195,22 @@ var TextboxBlock = ({ message, isAuthor, editing }) => {
|
|
|
202
195
|
...focusAttributes
|
|
203
196
|
});
|
|
204
197
|
};
|
|
205
|
-
var MessageBlockObjectTile = /* @__PURE__ */ forwardRef(({
|
|
206
|
-
let title =
|
|
198
|
+
var MessageBlockObjectTile = /* @__PURE__ */ forwardRef(({ subject }, forwardedRef) => {
|
|
199
|
+
let title = subject.name ?? subject.title ?? subject.type ?? "Object";
|
|
207
200
|
if (typeof title !== "string") {
|
|
208
201
|
title = title?.content ?? "";
|
|
209
202
|
}
|
|
210
203
|
return /* @__PURE__ */ React.createElement("div", {
|
|
211
204
|
role: "group",
|
|
212
205
|
className: mx2("grid col-span-3 py-1 pr-4", hoverableControls, hoverableFocusedWithinControls),
|
|
213
|
-
style: draggableStyle,
|
|
214
206
|
ref: forwardedRef
|
|
215
207
|
}, /* @__PURE__ */ React.createElement(Surface, {
|
|
216
208
|
role: "card",
|
|
217
209
|
limit: 1,
|
|
218
210
|
data: {
|
|
219
|
-
subject
|
|
211
|
+
subject
|
|
220
212
|
},
|
|
221
|
-
|
|
222
|
-
fallback: title,
|
|
223
|
-
...props
|
|
213
|
+
fallback: title
|
|
224
214
|
}));
|
|
225
215
|
});
|
|
226
216
|
|
|
@@ -320,4 +310,4 @@ export {
|
|
|
320
310
|
MessageContainer,
|
|
321
311
|
ChatContainer
|
|
322
312
|
};
|
|
323
|
-
//# sourceMappingURL=chunk-
|
|
313
|
+
//# sourceMappingURL=chunk-CISLDOH7.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ChatContainer.tsx", "../../../src/components/MessageContainer.tsx", "../../../src/components/command-extension.ts", "../../../src/util.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { Ref } from '@dxos/echo-schema';\nimport { create, makeRef, RefArray } from '@dxos/live-object';\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';\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 makeRef(\n create(MessageType, {\n sender: { identityKey: identity.identityKey.toHex() },\n timestamp: new Date().toISOString(),\n text: messageRef.current,\n context: context ? makeRef(context) : undefined,\n }),\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.findIndex(Ref.hasObjectId(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 {RefArray.allResolvedTargets(thread.messages ?? []).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 { RefArray } from '@dxos/live-object';\nimport { type MessageType } from '@dxos/plugin-space/types';\nimport { PublicKey } from '@dxos/react-client';\nimport { type ReactiveEchoObject, type Expando, type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\n// TODO(thure): #8149\nconst messageControlClassNames = ['!p-1 !min-bs-0 transition-opacity', hoverableControlItem];\n\nexport const MessageContainer = ({\n message,\n members,\n 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>\n {editLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n {onDelete && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={() => handleDelete()}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n {deleteLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </ButtonGroup>\n </MessageHeading>\n <TextboxBlock message={message} isAuthor={userIsAuthor} editing={editing} />\n {RefArray.allResolvedTargets(message.parts ?? []).map((part, index) => (\n <MessagePart key={index} part={part} />\n ))}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Expando }) => {\n return <MessageBlockObjectTile subject={part} />;\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 = forwardRef<HTMLDivElement, { subject: ReactiveEchoObject<any> }>(\n ({ subject }, forwardedRef) => {\n let title = subject.name ?? subject.title ?? subject.type ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n ref={forwardedRef}\n >\n <Surface role='card' limit={1} data={{ subject }} fallback={title} />\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n { tag: tags.tagName, class: mx('dx-tag dx-tag--indigo text-baseText font-medium') },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { generateName } from '@dxos/display-name';\nimport { type PublicKey } from '@dxos/react-client';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type MessageMetadata } from '@dxos/react-ui-thread';\nimport { hexToFallback } from '@dxos/util';\n\nexport type MessagePropertiesProvider = (identityKey: PublicKey | undefined) => MessageMetadata;\n\nexport const getMessageMetadata = (id: string, identity?: Identity): MessageMetadata => {\n const fallback = hexToFallback(identity?.identityKey.toHex() ?? '0');\n return {\n id,\n authorId: identity?.identityKey.toHex(),\n authorName:\n identity?.profile?.displayName ??\n (identity?.identityKey ? generateName(identity.identityKey.toHex()) : undefined),\n authorAvatarProps: {\n hue: identity?.profile?.data?.hue ?? fallback.hue,\n emoji: identity?.profile?.data?.emoji ?? fallback.emoji,\n },\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useLayoutEffect", "useMemo", "useRef", "useState", "Ref", "create", "makeRef", "RefArray", "MessageType", "fullyQualifiedId", "getSpace", "useMembers", "useIdentity", "Icon", "ScrollArea", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "listener", "StackItem", "mx", "MessageTextbox", "Thread", "ThreadFooter", "threadLayout", "EditorView", "Check", "PencilSimple", "X", "React", "forwardRef", "useCallback", "useEffect", "useRef", "useState", "Surface", "RefArray", "PublicKey", "useIdentity", "Button", "ButtonGroup", "Tooltip", "useOnTransition", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "useTextEditor", "getSize", "hoverableControlItem", "hoverableControls", "hoverableFocusedWithinControls", "mx", "MessageHeading", "MessageRoot", "StreamLanguage", "HighlightStyle", "syntaxHighlighting", "tags", "mx", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "command", "syntaxHighlighting", "generateName", "hexToFallback", "getMessageMetadata", "id", "identity", "fallback", "hexToFallback", "identityKey", "toHex", "authorId", "authorName", "profile", "displayName", "generateName", "undefined", "authorAvatarProps", "hue", "data", "emoji", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "message", "members", "onDelete", "senderIdentity", "find", "member", "sender", "identityKey", "PublicKey", "equals", "identity", "messageMetadata", "getMessageMetadata", "id", "userIsAuthor", "useIdentity", "toHex", "authorId", "editing", "setEditing", "useState", "handleDelete", "useCallback", "t", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "MessageRoot", "classNames", "hoverableControls", "hoverableFocusedWithinControls", "MessageHeading", "authorName", "timestamp", "ButtonGroup", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "data-testid", "onClick", "span", "className", "Check", "getSize", "PencilSimple", "Portal", "Content", "Arrow", "X", "TextboxBlock", "isAuthor", "RefArray", "allResolvedTargets", "parts", "map", "part", "index", "MessagePart", "key", "MessageBlockObjectTile", "subject", "themeMode", "useThemeContext", "inMemoryContentRef", "useRef", "text", "handleDocumentChange", "newState", "current", "saveDocumentChange", "useOnTransition", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "readonly", "createThemeExtensions", "command", "EditorView", "updateListener", "of", "update", "docChanged", "state", "doc", "toString", "useEffect", "focus", "useOnEditAnalytics", "div", "role", "ref", "forwardRef", "forwardedRef", "title", "name", "type", "content", "mx", "Surface", "limit", "data", "fallback", "ChatContainer", "thread", "context", "current", "autoFocusTextbox", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "activity", "useStatus", "fullyQualifiedId", "t", "useTranslation", "THREAD_PLUGIN", "_count", "_setCount", "useState", "rerenderEditor", "count", "autoFocus", "setAutoFocus", "threadScrollRef", "useRef", "themeMode", "useThemeContext", "textboxMetadata", "getMessageMetadata", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "useLayoutEffect", "handleCreate", "length", "messages", "push", "makeRef", "create", "MessageType", "sender", "identityKey", "toHex", "timestamp", "Date", "toISOString", "undefined", "handleDelete", "id", "messageIndex", "findIndex", "Ref", "hasObjectId", "splice", "React", "Thread", "classNames", "ScrollArea", "Root", "Viewport", "div", "role", "className", "mx", "threadLayout", "RefArray", "allResolvedTargets", "map", "message", "MessageContainer", "onDelete", "ref", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// packages/plugins/plugin-thread/src/capabilities/index.ts
|
|
4
|
+
import { lazy } from "@dxos/app-framework";
|
|
5
|
+
var IntentResolver = lazy(() => import("./intent-resolver-DHVLBNCC.mjs"));
|
|
6
|
+
var Markdown = lazy(() => import("./markdown-23OB7EZG.mjs"));
|
|
7
|
+
var ReactSurface = lazy(() => import("./react-surface-AZHTTR6J.mjs"));
|
|
8
|
+
var ThreadSettings = lazy(() => import("./settings-SGMM7UDT.mjs"));
|
|
9
|
+
var ThreadState = lazy(() => import("./state-7MLR27YG.mjs"));
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
IntentResolver,
|
|
13
|
+
Markdown,
|
|
14
|
+
ReactSurface,
|
|
15
|
+
ThreadState
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=chunk-PJPVEO7E.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\n\nexport * from './capabilities';\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,YAAY;AAEd,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMC,WAAWD,KAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAME,eAAeF,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMG,iBAAiBH,KAAK,MAAM,OAAO,yBAAA,CAAA;AACzC,IAAMI,cAAcJ,KAAK,MAAM,OAAO,sBAAA,CAAA;",
|
|
6
|
+
"names": ["lazy", "IntentResolver", "lazy", "Markdown", "ReactSurface", "ThreadSettings", "ThreadState"]
|
|
7
|
+
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
AppGraphBuilder,
|
|
4
3
|
IntentResolver,
|
|
5
4
|
Markdown,
|
|
6
5
|
ReactSurface,
|
|
7
|
-
ThreadSettings,
|
|
8
6
|
ThreadState
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-ZJITX3TO.mjs";
|
|
7
|
+
} from "./chunk-PJPVEO7E.mjs";
|
|
11
8
|
import {
|
|
12
9
|
useAnalyticsCallback,
|
|
13
10
|
useOnEditAnalytics,
|
|
@@ -15,7 +12,8 @@ import {
|
|
|
15
12
|
} from "./chunk-HLWJTUWZ.mjs";
|
|
16
13
|
import {
|
|
17
14
|
ThreadAction
|
|
18
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-33NDMQQQ.mjs";
|
|
16
|
+
import "./chunk-ZJITX3TO.mjs";
|
|
19
17
|
import {
|
|
20
18
|
THREAD_ITEM,
|
|
21
19
|
THREAD_PLUGIN,
|
|
@@ -23,10 +21,12 @@ import {
|
|
|
23
21
|
} from "./chunk-FXUATCLW.mjs";
|
|
24
22
|
|
|
25
23
|
// packages/plugins/plugin-thread/src/ThreadPlugin.tsx
|
|
26
|
-
import {
|
|
24
|
+
import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from "@dxos/app-framework";
|
|
27
25
|
import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
|
|
28
|
-
import { DeckCapabilities } from "@dxos/plugin-deck";
|
|
29
|
-
import {
|
|
26
|
+
import { DeckCapabilities, DeckEvents } from "@dxos/plugin-deck";
|
|
27
|
+
import { MarkdownEvents } from "@dxos/plugin-markdown";
|
|
28
|
+
import { SpaceCapabilities, ThreadEvents } from "@dxos/plugin-space";
|
|
29
|
+
import { ChannelType as ChannelType2, defineObjectForm, MessageType, ThreadType } from "@dxos/plugin-space/types";
|
|
30
30
|
import { RefArray } from "@dxos/react-client/echo";
|
|
31
31
|
import { translations as threadTranslations } from "@dxos/react-ui-thread";
|
|
32
32
|
|
|
@@ -45,7 +45,6 @@ var translations_default = [
|
|
|
45
45
|
"delete channel label": "Delete channel",
|
|
46
46
|
"create channel label": "Create channel",
|
|
47
47
|
"message placeholder": "Reply\u2026",
|
|
48
|
-
"settings standalone label": "Enable channel creation (experimental)",
|
|
49
48
|
"activity message": "Processing\u2026",
|
|
50
49
|
"anonymous label": "Anonymous",
|
|
51
50
|
"delete message block label": "Delete message block",
|
|
@@ -66,7 +65,9 @@ var translations_default = [
|
|
|
66
65
|
"edit message label": "Edit",
|
|
67
66
|
"delete message label": "Delete message",
|
|
68
67
|
"open comments panel label": "Show Comments",
|
|
69
|
-
"comments panel label": "Comments"
|
|
68
|
+
"comments panel label": "Comments",
|
|
69
|
+
"show all label": "All comments",
|
|
70
|
+
"show unresolved label": "Unresolved only"
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
}
|
|
@@ -74,14 +75,18 @@ var translations_default = [
|
|
|
74
75
|
|
|
75
76
|
// packages/plugins/plugin-thread/src/ThreadPlugin.tsx
|
|
76
77
|
var ThreadPlugin = () => definePlugin(meta, [
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
// TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.
|
|
79
|
+
// defineModule({
|
|
80
|
+
// id: `${meta.id}/module/settings`,
|
|
81
|
+
// activatesOn: Events.SetupSettings,
|
|
82
|
+
// activate: ThreadSettings,
|
|
83
|
+
// }),
|
|
82
84
|
defineModule({
|
|
83
85
|
id: `${meta.id}/module/state`,
|
|
84
|
-
|
|
86
|
+
// TODO(wittjosiah): Does not integrate with settings store.
|
|
87
|
+
// Should this be a different event?
|
|
88
|
+
// Should settings store be renamed to be more generic?
|
|
89
|
+
activatesOn: Events.SetupSettings,
|
|
85
90
|
activate: ThreadState
|
|
86
91
|
}),
|
|
87
92
|
defineModule({
|
|
@@ -99,7 +104,6 @@ var ThreadPlugin = () => definePlugin(meta, [
|
|
|
99
104
|
contributes(Capabilities.Metadata, {
|
|
100
105
|
id: ChannelType2.typename,
|
|
101
106
|
metadata: {
|
|
102
|
-
createObject: (props) => createIntent(ThreadAction.Create, props),
|
|
103
107
|
placeholder: [
|
|
104
108
|
"channel name placeholder",
|
|
105
109
|
{
|
|
@@ -149,34 +153,25 @@ var ThreadPlugin = () => definePlugin(meta, [
|
|
|
149
153
|
})
|
|
150
154
|
]
|
|
151
155
|
}),
|
|
156
|
+
defineModule({
|
|
157
|
+
id: `${meta.id}/module/object-form`,
|
|
158
|
+
activatesOn: ClientEvents.SetupSchema,
|
|
159
|
+
activate: () => contributes(SpaceCapabilities.ObjectForm, defineObjectForm({
|
|
160
|
+
objectSchema: ChannelType2,
|
|
161
|
+
getIntent: () => createIntent(ThreadAction.Create)
|
|
162
|
+
}))
|
|
163
|
+
}),
|
|
152
164
|
defineModule({
|
|
153
165
|
id: `${meta.id}/module/schema`,
|
|
154
166
|
activatesOn: ClientEvents.SetupSchema,
|
|
155
|
-
activate: () => contributes(ClientCapabilities.
|
|
167
|
+
activate: () => contributes(ClientCapabilities.Schema, [
|
|
156
168
|
ThreadType,
|
|
157
169
|
MessageType
|
|
158
170
|
])
|
|
159
171
|
}),
|
|
160
|
-
defineModule({
|
|
161
|
-
id: `${meta.id}/module/channel-schema`,
|
|
162
|
-
activatesOn: allOf(Events.SettingsReady, ClientEvents.ClientReady),
|
|
163
|
-
activate: (context) => {
|
|
164
|
-
const client = context.requestCapability(ClientCapabilities.Client);
|
|
165
|
-
const settings = context.requestCapability(Capabilities.SettingsStore).getStore(THREAD_PLUGIN).value;
|
|
166
|
-
if (settings.standalone) {
|
|
167
|
-
client.addTypes([
|
|
168
|
-
ChannelType2
|
|
169
|
-
]);
|
|
170
|
-
return contributes(ClientCapabilities.Schema, [
|
|
171
|
-
ChannelType2
|
|
172
|
-
]);
|
|
173
|
-
}
|
|
174
|
-
return [];
|
|
175
|
-
}
|
|
176
|
-
}),
|
|
177
172
|
defineModule({
|
|
178
173
|
id: `${meta.id}/module/complementary-panel`,
|
|
179
|
-
activatesOn:
|
|
174
|
+
activatesOn: DeckEvents.SetupComplementaryPanels,
|
|
180
175
|
activate: () => contributes(DeckCapabilities.ComplementaryPanel, {
|
|
181
176
|
id: "comments",
|
|
182
177
|
label: [
|
|
@@ -185,28 +180,31 @@ var ThreadPlugin = () => definePlugin(meta, [
|
|
|
185
180
|
ns: THREAD_PLUGIN
|
|
186
181
|
}
|
|
187
182
|
],
|
|
188
|
-
icon: "ph--chat-text--regular"
|
|
183
|
+
icon: "ph--chat-text--regular",
|
|
184
|
+
position: "hoist",
|
|
185
|
+
// TODO(wittjosiah): Support comments on any object.
|
|
186
|
+
// filter: (node) => isEchoObject(node.data) && !!getSpace(node.data),
|
|
187
|
+
filter: (node) => !!node.data && typeof node.data === "object" && "threads" in node.data && Array.isArray(node.data.threads) && !(node.data instanceof ChannelType2)
|
|
189
188
|
})
|
|
190
189
|
}),
|
|
191
190
|
defineModule({
|
|
192
191
|
id: `${meta.id}/module/markdown`,
|
|
193
|
-
activatesOn:
|
|
192
|
+
activatesOn: MarkdownEvents.SetupExtensions,
|
|
194
193
|
activate: Markdown
|
|
195
194
|
}),
|
|
196
195
|
defineModule({
|
|
197
196
|
id: `${meta.id}/module/react-surface`,
|
|
198
|
-
activatesOn: Events.
|
|
197
|
+
activatesOn: Events.SetupReactSurface,
|
|
198
|
+
// TODO(wittjosiah): Should occur before the comments thread is loaded when surfaces activation is more granular.
|
|
199
|
+
activatesBefore: [
|
|
200
|
+
ThreadEvents.SetupThread
|
|
201
|
+
],
|
|
199
202
|
activate: ReactSurface
|
|
200
203
|
}),
|
|
201
204
|
defineModule({
|
|
202
205
|
id: `${meta.id}/module/intent-resolver`,
|
|
203
|
-
activatesOn: Events.
|
|
206
|
+
activatesOn: Events.SetupIntentResolver,
|
|
204
207
|
activate: IntentResolver
|
|
205
|
-
}),
|
|
206
|
-
defineModule({
|
|
207
|
-
id: `${meta.id}/module/app-graph-builder`,
|
|
208
|
-
activatesOn: Events.SetupAppGraph,
|
|
209
|
-
activate: AppGraphBuilder
|
|
210
208
|
})
|
|
211
209
|
]);
|
|
212
210
|
export {
|