@chat-lab/ui 0.1.0-beta.3 → 0.1.0-beta.4
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/_virtual/index.cjs +2 -2
- package/dist/_virtual/index.js +2 -2
- package/dist/_virtual/index2.cjs +2 -2
- package/dist/_virtual/index2.js +2 -2
- package/dist/components/Chatkit/index.cjs +2 -1
- package/dist/components/Chatkit/index.cjs.map +1 -1
- package/dist/components/Chatkit/index.d.ts.map +1 -1
- package/dist/components/Chatkit/index.js +2 -1
- package/dist/components/Chatkit/index.js.map +1 -1
- package/dist/components/Chatkit/ref.cjs +0 -1
- package/dist/components/Chatkit/ref.cjs.map +1 -1
- package/dist/components/Chatkit/ref.d.ts.map +1 -1
- package/dist/components/Chatkit/ref.js +0 -1
- package/dist/components/Chatkit/ref.js.map +1 -1
- package/dist/components/Chatkit/types.d.ts +2 -1
- package/dist/components/Chatkit/types.d.ts.map +1 -1
- package/dist/components/assistant-ui/thread.cjs +2 -1
- package/dist/components/assistant-ui/thread.cjs.map +1 -1
- package/dist/components/assistant-ui/thread.d.ts.map +1 -1
- package/dist/components/assistant-ui/thread.js +2 -1
- package/dist/components/assistant-ui/thread.js.map +1 -1
- package/dist/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.cjs +1 -1
- package/dist/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js +1 -1
- package/dist/node_modules/.pnpm/use-sync-external-store@1.6.0_react@17.0.2/node_modules/use-sync-external-store/shim/index.cjs +1 -1
- package/dist/node_modules/.pnpm/use-sync-external-store@1.6.0_react@17.0.2/node_modules/use-sync-external-store/shim/index.js +1 -1
- package/package.json +1 -1
package/dist/_virtual/index.cjs
CHANGED
package/dist/_virtual/index.js
CHANGED
package/dist/_virtual/index2.cjs
CHANGED
package/dist/_virtual/index2.js
CHANGED
|
@@ -21,7 +21,7 @@ var v4 = require('../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4
|
|
|
21
21
|
var AssistantRuntimeProvider = require('../../node_modules/.pnpm/@assistant-ui_react@0.11.37_patch_hash_ynfhbcwv6lgckkdmenopdkbtmq_@types_react-dom@17.0.2_@ty_7dz2xsf2ib2guiutzhjhoerypu/node_modules/@assistant-ui/react/dist/legacy-runtime/AssistantRuntimeProvider.cjs');
|
|
22
22
|
|
|
23
23
|
const ChatkitImpl = React.forwardRef((props, ref$1) => {
|
|
24
|
-
const { initialConfig, welcome, onError, plugins, threadList, placeholder } = props;
|
|
24
|
+
const { initialConfig, welcome, onError, plugins, threadList, showHeader = true, placeholder, } = props;
|
|
25
25
|
const { threadMap } = index$1.useThreadManagerStore();
|
|
26
26
|
ref(ref$1, initialConfig, onError);
|
|
27
27
|
return (jsxRuntime.jsx(ChatkitContext.ChatkitProvider, { value: {
|
|
@@ -29,6 +29,7 @@ const ChatkitImpl = React.forwardRef((props, ref$1) => {
|
|
|
29
29
|
plugins: plugins || [],
|
|
30
30
|
showThreadList: threadList !== false,
|
|
31
31
|
placeholder: placeholder || "请输入内容",
|
|
32
|
+
showHeader,
|
|
32
33
|
}, children: jsxRuntime.jsxs("div", { className: "flex h-full w-full", children: [threadList !== false &&
|
|
33
34
|
(typeof threadList === "function"
|
|
34
35
|
? threadList({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["import \"./style.less\";\nimport {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { v4 as uuid } from \"uuid\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { cloneDeep, compact, findLastIndex, isString, values } from \"lodash-es\";\nimport { ChatkitProvider, useChatkitRef } from \"@/contexts/ChatkitContext\";\nimport useImperativeHandleChatkitRef from \"./ref\";\nimport useThread from \"@/hooks/useThread\";\nimport { Thread } from \"../assistant-ui/thread\";\nimport {\n AssistantRuntimeProvider,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { useThreadManagerStore, sendMessage, Message } from \"@chatkit/core\";\nimport convertToAssistantMessage from \"@/utils/convertToAssistantMessage\";\nimport ThreadList from \"../thread-list\";\nimport { Thread as ThreadType } from \"@chatkit/core/src/types/Thread\";\nimport { Toaster } from \"../ui/toaster\";\nimport { toast } from \"@/hooks/use-toast\";\nimport DemoToolUI from \"../assistant-ui-tools/web-search\";\nimport ExecutionCard from \"../assistant-ui-tools/execution-card\";\nimport { convertToBase64 } from \"@/utils/convertToBase64\";\nimport checkMedia from \"@/utils/checkMedia\";\nimport { TextMessage } from \"@chatkit/core/src/types/Message\";\n\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps[\"initialConfig\"];\n welcome?: React.ReactNode;\n plugins?: React.ReactNode[];\n onError?: (error: Error) => void;\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | false\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n },\n ref: ForwardedRef<ChatkitRef>\n ) => {\n const { initialConfig, welcome, onError, plugins, threadList, placeholder } = props;\n const { threadMap } = useThreadManagerStore();\n useImperativeHandleChatkitRef(ref, initialConfig, onError);\n return (\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || \"请输入内容\",\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === \"function\"\n ? threadList({\n threadList: cloneDeep(values(threadMap)) as ThreadType[],\n })\n : threadList)}\n <div className=\"flex-1 h-full\">\n <Thread welcome={welcome} />\n </div>\n </div>\n </ChatkitProvider>\n );\n }\n);\n\nconst Chatkit = (\n props: ChatkitProps,\n refFromProps: ForwardedRef<ChatkitRef>\n) => {\n const {\n initialConfig,\n welcome,\n onError,\n toolDisplay,\n plugins,\n threadList,\n placeholder,\n } = props;\n\n const { currentThread } = useThread();\n\n const { threadMap } = useThreadManagerStore();\n const messages =\n cloneDeep(threadMap[currentThread?.id || \"\"]?.messages || []) || [];\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<Message>[], {\n toolDisplay: toolDisplay || \"group\",\n }),\n [messages]\n );\n\n const innerRef = useRef<ChatkitRef>(null);\n\n let ref: MutableRefObject<ChatkitRef | null>;\n if (typeof refFromProps === \"function\") {\n refFromProps(innerRef.current);\n ref = innerRef;\n } else if (refFromProps === null) {\n ref = innerRef;\n } else {\n ref = refFromProps;\n }\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n convertMessage: (message) => message,\n onNew: async (message) => {\n const attachments = await Promise.all(\n message.attachments?.map(async (item) => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || []\n );\n\n ref.current?.sendMessage({\n attaches: attachments.map((item) => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: \"success\",\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"text\",\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n ref.current?.reloadMessage(currentThread?.id, parentId);\n else {\n onError?.(new Error(\"未找到对应的对话\"));\n toast({\n title: \"重载失败\",\n description: \"未找到对应的对话\",\n });\n }\n },\n onCancel: async () => {\n ref.current?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: \"image\",\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: \"image\",\n image: file.name,\n },\n ],\n status: {\n type: \"complete\",\n },\n file,\n };\n },\n accept: \"image/*, video/*\",\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: \"image\",\n name: file.name,\n contentType: file.type,\n status: {\n type: \"running\",\n reason: \"uploading\",\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n return (\n <AssistantRuntimeProvider runtime={runtime}>\n <ChatkitImpl\n ref={ref}\n initialConfig={initialConfig}\n placeholder={placeholder}\n welcome={welcome}\n onError={onError}\n plugins={plugins}\n threadList={threadList}\n />\n <Toaster />\n <ExecutionCard />\n </AssistantRuntimeProvider>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["forwardRef","ref","useThreadManagerStore","useImperativeHandleChatkitRef","_jsx","ChatkitProvider","_jsxs","Thread","useMemo","useRef","useExternalStoreRuntime","convertToBase64","toast","uuid","AssistantRuntimeProvider","Toaster","ExecutionCard"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["import \"./style.less\";\nimport {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { v4 as uuid } from \"uuid\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { cloneDeep, compact, findLastIndex, isString, values } from \"lodash-es\";\nimport { ChatkitProvider, useChatkitRef } from \"@/contexts/ChatkitContext\";\nimport useImperativeHandleChatkitRef from \"./ref\";\nimport useThread from \"@/hooks/useThread\";\nimport { Thread } from \"../assistant-ui/thread\";\nimport {\n AssistantRuntimeProvider,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { useThreadManagerStore, sendMessage, Message } from \"@chatkit/core\";\nimport convertToAssistantMessage from \"@/utils/convertToAssistantMessage\";\nimport ThreadList from \"../thread-list\";\nimport { Thread as ThreadType } from \"@chatkit/core/src/types/Thread\";\nimport { Toaster } from \"../ui/toaster\";\nimport { toast } from \"@/hooks/use-toast\";\nimport DemoToolUI from \"../assistant-ui-tools/web-search\";\nimport ExecutionCard from \"../assistant-ui-tools/execution-card\";\nimport { convertToBase64 } from \"@/utils/convertToBase64\";\nimport checkMedia from \"@/utils/checkMedia\";\nimport { TextMessage } from \"@chatkit/core/src/types/Message\";\n\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps[\"initialConfig\"];\n welcome?: React.ReactNode;\n plugins?: React.ReactNode[];\n onError?: (error: Error) => void;\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n showHeader?: boolean;\n },\n ref: ForwardedRef<ChatkitRef>\n ) => {\n const {\n initialConfig,\n welcome,\n onError,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n } = props;\n const { threadMap } = useThreadManagerStore();\n useImperativeHandleChatkitRef(ref, initialConfig, onError);\n return (\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || \"请输入内容\",\n showHeader,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === \"function\"\n ? threadList({\n threadList: cloneDeep(values(threadMap)) as ThreadType[],\n })\n : threadList)}\n <div className=\"flex-1 h-full\">\n <Thread welcome={welcome} />\n </div>\n </div>\n </ChatkitProvider>\n );\n }\n);\n\nconst Chatkit = (\n props: ChatkitProps,\n refFromProps: ForwardedRef<ChatkitRef>\n) => {\n const {\n initialConfig,\n welcome,\n onError,\n toolDisplay,\n plugins,\n threadList,\n placeholder,\n } = props;\n\n const { currentThread } = useThread();\n\n const { threadMap } = useThreadManagerStore();\n const messages =\n cloneDeep(threadMap[currentThread?.id || \"\"]?.messages || []) || [];\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<Message>[], {\n toolDisplay: toolDisplay || \"group\",\n }),\n [messages]\n );\n\n const innerRef = useRef<ChatkitRef>(null);\n\n let ref: MutableRefObject<ChatkitRef | null>;\n if (typeof refFromProps === \"function\") {\n refFromProps(innerRef.current);\n ref = innerRef;\n } else if (refFromProps === null) {\n ref = innerRef;\n } else {\n ref = refFromProps;\n }\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n convertMessage: (message) => message,\n onNew: async (message) => {\n const attachments = await Promise.all(\n message.attachments?.map(async (item) => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || []\n );\n\n ref.current?.sendMessage({\n attaches: attachments.map((item) => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: \"success\",\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"text\",\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n ref.current?.reloadMessage(currentThread?.id, parentId);\n else {\n onError?.(new Error(\"未找到对应的对话\"));\n toast({\n title: \"重载失败\",\n description: \"未找到对应的对话\",\n });\n }\n },\n onCancel: async () => {\n ref.current?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: \"image\",\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: \"image\",\n image: file.name,\n },\n ],\n status: {\n type: \"complete\",\n },\n file,\n };\n },\n accept: \"image/*, video/*\",\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: \"image\",\n name: file.name,\n contentType: file.type,\n status: {\n type: \"running\",\n reason: \"uploading\",\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n return (\n <AssistantRuntimeProvider runtime={runtime}>\n <ChatkitImpl\n ref={ref}\n initialConfig={initialConfig}\n placeholder={placeholder}\n welcome={welcome}\n onError={onError}\n plugins={plugins}\n threadList={threadList}\n />\n <Toaster />\n <ExecutionCard />\n </AssistantRuntimeProvider>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["forwardRef","ref","useThreadManagerStore","useImperativeHandleChatkitRef","_jsx","ChatkitProvider","_jsxs","Thread","useMemo","useRef","useExternalStoreRuntime","convertToBase64","toast","uuid","AssistantRuntimeProvider","Toaster","ExecutionCard"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/index.tsx"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAWtB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/index.tsx"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAWtB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;;AA+NnD,wBAAmC"}
|
|
@@ -19,7 +19,7 @@ import v4 from '../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.j
|
|
|
19
19
|
import { AssistantRuntimeProvider } from '../../node_modules/.pnpm/@assistant-ui_react@0.11.37_patch_hash_ynfhbcwv6lgckkdmenopdkbtmq_@types_react-dom@17.0.2_@ty_7dz2xsf2ib2guiutzhjhoerypu/node_modules/@assistant-ui/react/dist/legacy-runtime/AssistantRuntimeProvider.js';
|
|
20
20
|
|
|
21
21
|
const ChatkitImpl = forwardRef((props, ref) => {
|
|
22
|
-
const { initialConfig, welcome, onError, plugins, threadList, placeholder } = props;
|
|
22
|
+
const { initialConfig, welcome, onError, plugins, threadList, showHeader = true, placeholder, } = props;
|
|
23
23
|
const { threadMap } = useThreadManagerStore();
|
|
24
24
|
useImperativeHandleChatkitRef(ref, initialConfig, onError);
|
|
25
25
|
return (jsx(ChatkitProvider, { value: {
|
|
@@ -27,6 +27,7 @@ const ChatkitImpl = forwardRef((props, ref) => {
|
|
|
27
27
|
plugins: plugins || [],
|
|
28
28
|
showThreadList: threadList !== false,
|
|
29
29
|
placeholder: placeholder || "请输入内容",
|
|
30
|
+
showHeader,
|
|
30
31
|
}, children: jsxs("div", { className: "flex h-full w-full", children: [threadList !== false &&
|
|
31
32
|
(typeof threadList === "function"
|
|
32
33
|
? threadList({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["import \"./style.less\";\nimport {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { v4 as uuid } from \"uuid\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { cloneDeep, compact, findLastIndex, isString, values } from \"lodash-es\";\nimport { ChatkitProvider, useChatkitRef } from \"@/contexts/ChatkitContext\";\nimport useImperativeHandleChatkitRef from \"./ref\";\nimport useThread from \"@/hooks/useThread\";\nimport { Thread } from \"../assistant-ui/thread\";\nimport {\n AssistantRuntimeProvider,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { useThreadManagerStore, sendMessage, Message } from \"@chatkit/core\";\nimport convertToAssistantMessage from \"@/utils/convertToAssistantMessage\";\nimport ThreadList from \"../thread-list\";\nimport { Thread as ThreadType } from \"@chatkit/core/src/types/Thread\";\nimport { Toaster } from \"../ui/toaster\";\nimport { toast } from \"@/hooks/use-toast\";\nimport DemoToolUI from \"../assistant-ui-tools/web-search\";\nimport ExecutionCard from \"../assistant-ui-tools/execution-card\";\nimport { convertToBase64 } from \"@/utils/convertToBase64\";\nimport checkMedia from \"@/utils/checkMedia\";\nimport { TextMessage } from \"@chatkit/core/src/types/Message\";\n\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps[\"initialConfig\"];\n welcome?: React.ReactNode;\n plugins?: React.ReactNode[];\n onError?: (error: Error) => void;\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | false\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n },\n ref: ForwardedRef<ChatkitRef>\n ) => {\n const { initialConfig, welcome, onError, plugins, threadList, placeholder } = props;\n const { threadMap } = useThreadManagerStore();\n useImperativeHandleChatkitRef(ref, initialConfig, onError);\n return (\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || \"请输入内容\",\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === \"function\"\n ? threadList({\n threadList: cloneDeep(values(threadMap)) as ThreadType[],\n })\n : threadList)}\n <div className=\"flex-1 h-full\">\n <Thread welcome={welcome} />\n </div>\n </div>\n </ChatkitProvider>\n );\n }\n);\n\nconst Chatkit = (\n props: ChatkitProps,\n refFromProps: ForwardedRef<ChatkitRef>\n) => {\n const {\n initialConfig,\n welcome,\n onError,\n toolDisplay,\n plugins,\n threadList,\n placeholder,\n } = props;\n\n const { currentThread } = useThread();\n\n const { threadMap } = useThreadManagerStore();\n const messages =\n cloneDeep(threadMap[currentThread?.id || \"\"]?.messages || []) || [];\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<Message>[], {\n toolDisplay: toolDisplay || \"group\",\n }),\n [messages]\n );\n\n const innerRef = useRef<ChatkitRef>(null);\n\n let ref: MutableRefObject<ChatkitRef | null>;\n if (typeof refFromProps === \"function\") {\n refFromProps(innerRef.current);\n ref = innerRef;\n } else if (refFromProps === null) {\n ref = innerRef;\n } else {\n ref = refFromProps;\n }\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n convertMessage: (message) => message,\n onNew: async (message) => {\n const attachments = await Promise.all(\n message.attachments?.map(async (item) => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || []\n );\n\n ref.current?.sendMessage({\n attaches: attachments.map((item) => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: \"success\",\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"text\",\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n ref.current?.reloadMessage(currentThread?.id, parentId);\n else {\n onError?.(new Error(\"未找到对应的对话\"));\n toast({\n title: \"重载失败\",\n description: \"未找到对应的对话\",\n });\n }\n },\n onCancel: async () => {\n ref.current?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: \"image\",\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: \"image\",\n image: file.name,\n },\n ],\n status: {\n type: \"complete\",\n },\n file,\n };\n },\n accept: \"image/*, video/*\",\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: \"image\",\n name: file.name,\n contentType: file.type,\n status: {\n type: \"running\",\n reason: \"uploading\",\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n return (\n <AssistantRuntimeProvider runtime={runtime}>\n <ChatkitImpl\n ref={ref}\n initialConfig={initialConfig}\n placeholder={placeholder}\n welcome={welcome}\n onError={onError}\n plugins={plugins}\n threadList={threadList}\n />\n <Toaster />\n <ExecutionCard />\n </AssistantRuntimeProvider>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["_jsx","_jsxs","uuid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Chatkit/index.tsx"],"sourcesContent":["import \"./style.less\";\nimport {\n ForwardedRef,\n forwardRef,\n MutableRefObject,\n Ref,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { v4 as uuid } from \"uuid\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { cloneDeep, compact, findLastIndex, isString, values } from \"lodash-es\";\nimport { ChatkitProvider, useChatkitRef } from \"@/contexts/ChatkitContext\";\nimport useImperativeHandleChatkitRef from \"./ref\";\nimport useThread from \"@/hooks/useThread\";\nimport { Thread } from \"../assistant-ui/thread\";\nimport {\n AssistantRuntimeProvider,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { useThreadManagerStore, sendMessage, Message } from \"@chatkit/core\";\nimport convertToAssistantMessage from \"@/utils/convertToAssistantMessage\";\nimport ThreadList from \"../thread-list\";\nimport { Thread as ThreadType } from \"@chatkit/core/src/types/Thread\";\nimport { Toaster } from \"../ui/toaster\";\nimport { toast } from \"@/hooks/use-toast\";\nimport DemoToolUI from \"../assistant-ui-tools/web-search\";\nimport ExecutionCard from \"../assistant-ui-tools/execution-card\";\nimport { convertToBase64 } from \"@/utils/convertToBase64\";\nimport checkMedia from \"@/utils/checkMedia\";\nimport { TextMessage } from \"@chatkit/core/src/types/Message\";\n\nconst ChatkitImpl = forwardRef(\n (\n props: {\n initialConfig: ChatkitProps[\"initialConfig\"];\n welcome?: React.ReactNode;\n plugins?: React.ReactNode[];\n onError?: (error: Error) => void;\n placeholder?: string;\n threadList?:\n | React.ReactNode\n | boolean\n | ((props: { threadList: Readonly<ThreadType>[] }) => React.ReactNode);\n showHeader?: boolean;\n },\n ref: ForwardedRef<ChatkitRef>\n ) => {\n const {\n initialConfig,\n welcome,\n onError,\n plugins,\n threadList,\n showHeader = true,\n placeholder,\n } = props;\n const { threadMap } = useThreadManagerStore();\n useImperativeHandleChatkitRef(ref, initialConfig, onError);\n return (\n <ChatkitProvider\n value={{\n ref: ref as MutableRefObject<ChatkitRef | null>,\n plugins: plugins || [],\n showThreadList: threadList !== false,\n placeholder: placeholder || \"请输入内容\",\n showHeader,\n }}\n >\n <div className=\"flex h-full w-full\">\n {threadList !== false &&\n (typeof threadList === \"function\"\n ? threadList({\n threadList: cloneDeep(values(threadMap)) as ThreadType[],\n })\n : threadList)}\n <div className=\"flex-1 h-full\">\n <Thread welcome={welcome} />\n </div>\n </div>\n </ChatkitProvider>\n );\n }\n);\n\nconst Chatkit = (\n props: ChatkitProps,\n refFromProps: ForwardedRef<ChatkitRef>\n) => {\n const {\n initialConfig,\n welcome,\n onError,\n toolDisplay,\n plugins,\n threadList,\n placeholder,\n } = props;\n\n const { currentThread } = useThread();\n\n const { threadMap } = useThreadManagerStore();\n const messages =\n cloneDeep(threadMap[currentThread?.id || \"\"]?.messages || []) || [];\n const uiMessages = useMemo(\n () =>\n convertToAssistantMessage(messages as Readonly<Message>[], {\n toolDisplay: toolDisplay || \"group\",\n }),\n [messages]\n );\n\n const innerRef = useRef<ChatkitRef>(null);\n\n let ref: MutableRefObject<ChatkitRef | null>;\n if (typeof refFromProps === \"function\") {\n refFromProps(innerRef.current);\n ref = innerRef;\n } else if (refFromProps === null) {\n ref = innerRef;\n } else {\n ref = refFromProps;\n }\n\n const runtime = useExternalStoreRuntime({\n messages: uiMessages,\n isLoading: currentThread?.sending,\n convertMessage: (message) => message,\n onNew: async (message) => {\n const attachments = await Promise.all(\n message.attachments?.map(async (item) => {\n return {\n ...item,\n base64: await convertToBase64(item.file as File),\n };\n }) || []\n );\n\n ref.current?.sendMessage({\n attaches: attachments.map((item) => ({\n id: item.id,\n attachId: item.id,\n url: item.base64,\n status: \"success\",\n type: checkMedia(item.contentType),\n mimeType: item.contentType,\n })),\n content: compact([\n ...message.content.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"text\",\n text: item.text,\n } as TextMessage;\n }\n }),\n ]),\n });\n },\n onReload: async (parentId, config) => {\n if (currentThread?.id && parentId)\n ref.current?.reloadMessage(currentThread?.id, parentId);\n else {\n onError?.(new Error(\"未找到对应的对话\"));\n toast({\n title: \"重载失败\",\n description: \"未找到对应的对话\",\n });\n }\n },\n onCancel: async () => {\n ref.current?.abortMessage();\n },\n adapters: {\n attachments: {\n remove: async ({ id }) => {\n console.log(id);\n },\n send: async ({ id, file }) => {\n return {\n id,\n type: \"image\",\n name: file.name,\n contentType: file.type,\n content: [\n {\n type: \"image\",\n image: file.name,\n },\n ],\n status: {\n type: \"complete\",\n },\n file,\n };\n },\n accept: \"image/*, video/*\",\n add: async ({ file }) => {\n return {\n file,\n id: uuid(),\n type: \"image\",\n name: file.name,\n contentType: file.type,\n status: {\n type: \"running\",\n reason: \"uploading\",\n progress: 0,\n },\n };\n },\n },\n },\n });\n\n return (\n <AssistantRuntimeProvider runtime={runtime}>\n <ChatkitImpl\n ref={ref}\n initialConfig={initialConfig}\n placeholder={placeholder}\n welcome={welcome}\n onError={onError}\n plugins={plugins}\n threadList={threadList}\n />\n <Toaster />\n <ExecutionCard />\n </AssistantRuntimeProvider>\n );\n};\n\nexport default forwardRef(Chatkit);\n"],"names":["_jsx","_jsxs","uuid"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.cjs","sources":["../../../src/components/Chatkit/ref.ts"],"sourcesContent":["import { Ref, useImperativeHandle, useRef, useState } from \"react\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n Message,\n messageActions,\n ProtocolOptions,\n RequestOptions,\n sendMessage,\n Thread,\n threadActions,\n} from \"@chatkit/core\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { getProtocolAdaptor } from \"@chatkit/core\";\nimport { MessageStatusEnum } from \"@chatkit/core\";\nimport { useAssistantApi } from \"@assistant-ui/react\";\nimport dayjs from \"dayjs\";\nimport { toast } from \"@/hooks/use-toast\";\nconst useImperativeHandleChatkitRef = (\n ref: Ref<ChatkitRef | null>,\n initialConfig: ChatkitProps[\"initialConfig\"],\n onError?: (error: Error) => void\n) => {\n const {\n requestOptions: requestOptionsFromProps,\n protocolOptions: protocolOptionsFromProps,\n } = initialConfig;\n const [requestOptionsState, setRequestOptionsState] = useState(\n requestOptionsFromProps\n );\n const [protocolOptionsState, setProtocolOptionsState] = useState(\n protocolOptionsFromProps\n );\n\n const { composer } = useAssistantApi();\n\n const abortController = useRef<AbortController | null>(null);\n useImperativeHandle(\n ref,\n () => ({\n sendMessage: async (msg): Promise<AbortController | undefined> => {\n const currentThread = threadActions.getCurrentThread();\n if (!currentThread) {\n return;\n }\n debugger\n const userMessage: Message = {\n id: uuid(),\n role: \"user\",\n threadId: currentThread.id,\n metadata: {},\n attaches: msg.attaches,\n status: MessageStatusEnum.SENDING,\n content: msg.content,\n createdAt: dayjs().unix(),\n updatedAt: dayjs().unix(),\n };\n abortController.current = new AbortController();\n await sendMessage({\n userMessage,\n onError,\n allMessages: currentThread?.messages || [],\n protocolAdaptor: getProtocolAdaptor(protocolOptionsState),\n abortController: abortController.current,\n requestOptions: requestOptionsState,\n threadId: currentThread.id,\n });\n },\n abortMessage: () => {\n const currentThread = threadActions.getCurrentThread();\n if (!currentThread) {\n return;\n }\n abortController.current?.abort();\n abortController.current = null;\n threadActions.setSending(currentThread.id, false);\n threadActions.setLoading(currentThread.id, false);\n },\n setInput: (input: string) => {\n composer().setText(input);\n },\n addInput: (input: string) => {\n const pendingInput = composer().getState().text + input;\n composer().setText(pendingInput);\n },\n setRequestOptions: (requestOptions: RequestOptions) => {\n setRequestOptionsState(requestOptions);\n },\n getRequestOptions: () => requestOptionsState,\n setProtocolOptions: (protocolOptions: ProtocolOptions) => {\n setProtocolOptionsState(protocolOptions);\n },\n getProtocolOptions: () => protocolOptionsState,\n addAttachment: (file: File) => {\n return composer().addAttachment(file);\n },\n clearAttachments: () => {\n composer().clearAttachments();\n },\n getAttachments: () => composer().getState().attachments,\n reset: () => {\n composer().reset();\n },\n deleteAttachment: (id: string) => {\n composer().attachment({ id }).remove();\n },\n getCurrentThread: () => threadActions.getCurrentThread(),\n setCurrentThread: (threadId: string) => {\n threadActions.setCurrentThread(threadId);\n },\n addThread: (thread: Thread) => {\n threadActions.addThread(thread);\n },\n getThread: (threadId: string) => threadActions.getThread(threadId),\n updateThread: (threadId: string, thread: Partial<Omit<Thread, \"id\">>) => {\n threadActions.updateThread(threadId, thread);\n },\n setThreadName: (threadId: string, name: string) => {\n threadActions.updateThread(threadId, { name });\n },\n deleteThread: (threadId: string) => {\n threadActions.deleteThread(threadId);\n },\n\n clearCurrentThread: () => {\n // 清空会话\n const currentThread = threadActions.getCurrentThread();\n if (currentThread?.id) {\n if (currentThread.sending) {\n return toast({\n title: \"清空失败\",\n description: \"正在发送消息,请先停止发送再清空会话\",\n variant: \"destructive\",\n });\n }\n threadActions.deleteThread(currentThread.id);\n const id = uuid();\n threadActions.addThread({\n id,\n name: currentThread.name,\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n threadActions.setCurrentThread(id);\n }\n },\n setSending: (threadId: string, sending: boolean) => {\n threadActions.setSending(threadId, sending);\n },\n addMessage(threadId: string, message: Message) {\n messageActions.addMessage(threadId, message);\n },\n updateMessage(\n threadId: string,\n messageId: string,\n updateOptions:\n | { updatedMessage: Partial<Omit<Message, \"id\">>; partial: true }\n | { updatedMessage: Omit<Message, \"id\">; partial: false }\n ) {\n messageActions.updateMessage(threadId, messageId, updateOptions);\n },\n updateMessages(threadId: string, messages: Message[]) {\n messageActions.updateMessages(threadId, messages);\n },\n reloadMessage(threadId: string, messageId: string) {\n const thread = threadActions.getThread(threadId);\n if (!thread) {\n return;\n }\n const message = thread.messages.find((item) =>\n messageId.includes(item.id)\n );\n if (!message) {\n return;\n }\n const userMessage: Message = {\n ...message,\n id: uuid(),\n status: MessageStatusEnum.SENDING,\n };\n abortController.current = new AbortController();\n sendMessage({\n abortController: abortController.current,\n onError,\n userMessage,\n allMessages: thread?.messages || [],\n protocolAdaptor: getProtocolAdaptor(protocolOptionsState),\n requestOptions: requestOptionsState,\n threadId: thread.id,\n });\n },\n removeMessage(threadId: string, messageId: string) {\n messageActions.removeMessage(threadId, messageId);\n },\n }),\n [requestOptionsState, protocolOptionsState]\n );\n};\n\nexport default useImperativeHandleChatkitRef;\n"],"names":["useState","useAssistantApi","useRef","useImperativeHandle","threadActions","uuid","MessageStatusEnum","dayjs","sendMessage","getProtocolAdaptor","toast","messageActions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ref.cjs","sources":["../../../src/components/Chatkit/ref.ts"],"sourcesContent":["import { Ref, useImperativeHandle, useRef, useState } from \"react\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n Message,\n messageActions,\n ProtocolOptions,\n RequestOptions,\n sendMessage,\n Thread,\n threadActions,\n} from \"@chatkit/core\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { getProtocolAdaptor } from \"@chatkit/core\";\nimport { MessageStatusEnum } from \"@chatkit/core\";\nimport { useAssistantApi } from \"@assistant-ui/react\";\nimport dayjs from \"dayjs\";\nimport { toast } from \"@/hooks/use-toast\";\nconst useImperativeHandleChatkitRef = (\n ref: Ref<ChatkitRef | null>,\n initialConfig: ChatkitProps[\"initialConfig\"],\n onError?: (error: Error) => void\n) => {\n const {\n requestOptions: requestOptionsFromProps,\n protocolOptions: protocolOptionsFromProps,\n } = initialConfig;\n const [requestOptionsState, setRequestOptionsState] = useState(\n requestOptionsFromProps\n );\n const [protocolOptionsState, setProtocolOptionsState] = useState(\n protocolOptionsFromProps\n );\n\n const { composer } = useAssistantApi();\n\n const abortController = useRef<AbortController | null>(null);\n useImperativeHandle(\n ref,\n () => ({\n sendMessage: async (msg): Promise<AbortController | undefined> => {\n const currentThread = threadActions.getCurrentThread();\n if (!currentThread) {\n return;\n }\n const userMessage: Message = {\n id: uuid(),\n role: \"user\",\n threadId: currentThread.id,\n metadata: {},\n attaches: msg.attaches,\n status: MessageStatusEnum.SENDING,\n content: msg.content,\n createdAt: dayjs().unix(),\n updatedAt: dayjs().unix(),\n };\n abortController.current = new AbortController();\n await sendMessage({\n userMessage,\n onError,\n allMessages: currentThread?.messages || [],\n protocolAdaptor: getProtocolAdaptor(protocolOptionsState),\n abortController: abortController.current,\n requestOptions: requestOptionsState,\n threadId: currentThread.id,\n });\n },\n abortMessage: () => {\n const currentThread = threadActions.getCurrentThread();\n if (!currentThread) {\n return;\n }\n abortController.current?.abort();\n abortController.current = null;\n threadActions.setSending(currentThread.id, false);\n threadActions.setLoading(currentThread.id, false);\n },\n setInput: (input: string) => {\n composer().setText(input);\n },\n addInput: (input: string) => {\n const pendingInput = composer().getState().text + input;\n composer().setText(pendingInput);\n },\n setRequestOptions: (requestOptions: RequestOptions) => {\n setRequestOptionsState(requestOptions);\n },\n getRequestOptions: () => requestOptionsState,\n setProtocolOptions: (protocolOptions: ProtocolOptions) => {\n setProtocolOptionsState(protocolOptions);\n },\n getProtocolOptions: () => protocolOptionsState,\n addAttachment: (file: File) => {\n return composer().addAttachment(file);\n },\n clearAttachments: () => {\n composer().clearAttachments();\n },\n getAttachments: () => composer().getState().attachments,\n reset: () => {\n composer().reset();\n },\n deleteAttachment: (id: string) => {\n composer().attachment({ id }).remove();\n },\n getCurrentThread: () => threadActions.getCurrentThread(),\n setCurrentThread: (threadId: string) => {\n threadActions.setCurrentThread(threadId);\n },\n addThread: (thread: Thread) => {\n threadActions.addThread(thread);\n },\n getThread: (threadId: string) => threadActions.getThread(threadId),\n updateThread: (threadId: string, thread: Partial<Omit<Thread, \"id\">>) => {\n threadActions.updateThread(threadId, thread);\n },\n setThreadName: (threadId: string, name: string) => {\n threadActions.updateThread(threadId, { name });\n },\n deleteThread: (threadId: string) => {\n threadActions.deleteThread(threadId);\n },\n\n clearCurrentThread: () => {\n // 清空会话\n const currentThread = threadActions.getCurrentThread();\n if (currentThread?.id) {\n if (currentThread.sending) {\n return toast({\n title: \"清空失败\",\n description: \"正在发送消息,请先停止发送再清空会话\",\n variant: \"destructive\",\n });\n }\n threadActions.deleteThread(currentThread.id);\n const id = uuid();\n threadActions.addThread({\n id,\n name: currentThread.name,\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n threadActions.setCurrentThread(id);\n }\n },\n setSending: (threadId: string, sending: boolean) => {\n threadActions.setSending(threadId, sending);\n },\n addMessage(threadId: string, message: Message) {\n messageActions.addMessage(threadId, message);\n },\n updateMessage(\n threadId: string,\n messageId: string,\n updateOptions:\n | { updatedMessage: Partial<Omit<Message, \"id\">>; partial: true }\n | { updatedMessage: Omit<Message, \"id\">; partial: false }\n ) {\n messageActions.updateMessage(threadId, messageId, updateOptions);\n },\n updateMessages(threadId: string, messages: Message[]) {\n messageActions.updateMessages(threadId, messages);\n },\n reloadMessage(threadId: string, messageId: string) {\n const thread = threadActions.getThread(threadId);\n if (!thread) {\n return;\n }\n const message = thread.messages.find((item) =>\n messageId.includes(item.id)\n );\n if (!message) {\n return;\n }\n const userMessage: Message = {\n ...message,\n id: uuid(),\n status: MessageStatusEnum.SENDING,\n };\n abortController.current = new AbortController();\n sendMessage({\n abortController: abortController.current,\n onError,\n userMessage,\n allMessages: thread?.messages || [],\n protocolAdaptor: getProtocolAdaptor(protocolOptionsState),\n requestOptions: requestOptionsState,\n threadId: thread.id,\n });\n },\n removeMessage(threadId: string, messageId: string) {\n messageActions.removeMessage(threadId, messageId);\n },\n }),\n [requestOptionsState, protocolOptionsState]\n );\n};\n\nexport default useImperativeHandleChatkitRef;\n"],"names":["useState","useAssistantApi","useRef","useImperativeHandle","threadActions","uuid","MessageStatusEnum","dayjs","sendMessage","getProtocolAdaptor","toast","messageActions"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAyC,MAAM,OAAO,CAAC;AAYnE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMnD,QAAA,MAAM,6BAA6B,GACjC,KAAK,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,EAC3B,eAAe,YAAY,CAAC,eAAe,CAAC,EAC5C,UAAU,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAyC,MAAM,OAAO,CAAC;AAYnE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMnD,QAAA,MAAM,6BAA6B,GACjC,KAAK,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,EAC3B,eAAe,YAAY,CAAC,eAAe,CAAC,EAC5C,UAAU,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,SAiLjC,CAAC;AAEF,eAAe,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.js","sources":["../../../src/components/Chatkit/ref.ts"],"sourcesContent":["import { Ref, useImperativeHandle, useRef, useState } from \"react\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n Message,\n messageActions,\n ProtocolOptions,\n RequestOptions,\n sendMessage,\n Thread,\n threadActions,\n} from \"@chatkit/core\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { getProtocolAdaptor } from \"@chatkit/core\";\nimport { MessageStatusEnum } from \"@chatkit/core\";\nimport { useAssistantApi } from \"@assistant-ui/react\";\nimport dayjs from \"dayjs\";\nimport { toast } from \"@/hooks/use-toast\";\nconst useImperativeHandleChatkitRef = (\n ref: Ref<ChatkitRef | null>,\n initialConfig: ChatkitProps[\"initialConfig\"],\n onError?: (error: Error) => void\n) => {\n const {\n requestOptions: requestOptionsFromProps,\n protocolOptions: protocolOptionsFromProps,\n } = initialConfig;\n const [requestOptionsState, setRequestOptionsState] = useState(\n requestOptionsFromProps\n );\n const [protocolOptionsState, setProtocolOptionsState] = useState(\n protocolOptionsFromProps\n );\n\n const { composer } = useAssistantApi();\n\n const abortController = useRef<AbortController | null>(null);\n useImperativeHandle(\n ref,\n () => ({\n sendMessage: async (msg): Promise<AbortController | undefined> => {\n const currentThread = threadActions.getCurrentThread();\n if (!currentThread) {\n return;\n }\n debugger\n const userMessage: Message = {\n id: uuid(),\n role: \"user\",\n threadId: currentThread.id,\n metadata: {},\n attaches: msg.attaches,\n status: MessageStatusEnum.SENDING,\n content: msg.content,\n createdAt: dayjs().unix(),\n updatedAt: dayjs().unix(),\n };\n abortController.current = new AbortController();\n await sendMessage({\n userMessage,\n onError,\n allMessages: currentThread?.messages || [],\n protocolAdaptor: getProtocolAdaptor(protocolOptionsState),\n abortController: abortController.current,\n requestOptions: requestOptionsState,\n threadId: currentThread.id,\n });\n },\n abortMessage: () => {\n const currentThread = threadActions.getCurrentThread();\n if (!currentThread) {\n return;\n }\n abortController.current?.abort();\n abortController.current = null;\n threadActions.setSending(currentThread.id, false);\n threadActions.setLoading(currentThread.id, false);\n },\n setInput: (input: string) => {\n composer().setText(input);\n },\n addInput: (input: string) => {\n const pendingInput = composer().getState().text + input;\n composer().setText(pendingInput);\n },\n setRequestOptions: (requestOptions: RequestOptions) => {\n setRequestOptionsState(requestOptions);\n },\n getRequestOptions: () => requestOptionsState,\n setProtocolOptions: (protocolOptions: ProtocolOptions) => {\n setProtocolOptionsState(protocolOptions);\n },\n getProtocolOptions: () => protocolOptionsState,\n addAttachment: (file: File) => {\n return composer().addAttachment(file);\n },\n clearAttachments: () => {\n composer().clearAttachments();\n },\n getAttachments: () => composer().getState().attachments,\n reset: () => {\n composer().reset();\n },\n deleteAttachment: (id: string) => {\n composer().attachment({ id }).remove();\n },\n getCurrentThread: () => threadActions.getCurrentThread(),\n setCurrentThread: (threadId: string) => {\n threadActions.setCurrentThread(threadId);\n },\n addThread: (thread: Thread) => {\n threadActions.addThread(thread);\n },\n getThread: (threadId: string) => threadActions.getThread(threadId),\n updateThread: (threadId: string, thread: Partial<Omit<Thread, \"id\">>) => {\n threadActions.updateThread(threadId, thread);\n },\n setThreadName: (threadId: string, name: string) => {\n threadActions.updateThread(threadId, { name });\n },\n deleteThread: (threadId: string) => {\n threadActions.deleteThread(threadId);\n },\n\n clearCurrentThread: () => {\n // 清空会话\n const currentThread = threadActions.getCurrentThread();\n if (currentThread?.id) {\n if (currentThread.sending) {\n return toast({\n title: \"清空失败\",\n description: \"正在发送消息,请先停止发送再清空会话\",\n variant: \"destructive\",\n });\n }\n threadActions.deleteThread(currentThread.id);\n const id = uuid();\n threadActions.addThread({\n id,\n name: currentThread.name,\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n threadActions.setCurrentThread(id);\n }\n },\n setSending: (threadId: string, sending: boolean) => {\n threadActions.setSending(threadId, sending);\n },\n addMessage(threadId: string, message: Message) {\n messageActions.addMessage(threadId, message);\n },\n updateMessage(\n threadId: string,\n messageId: string,\n updateOptions:\n | { updatedMessage: Partial<Omit<Message, \"id\">>; partial: true }\n | { updatedMessage: Omit<Message, \"id\">; partial: false }\n ) {\n messageActions.updateMessage(threadId, messageId, updateOptions);\n },\n updateMessages(threadId: string, messages: Message[]) {\n messageActions.updateMessages(threadId, messages);\n },\n reloadMessage(threadId: string, messageId: string) {\n const thread = threadActions.getThread(threadId);\n if (!thread) {\n return;\n }\n const message = thread.messages.find((item) =>\n messageId.includes(item.id)\n );\n if (!message) {\n return;\n }\n const userMessage: Message = {\n ...message,\n id: uuid(),\n status: MessageStatusEnum.SENDING,\n };\n abortController.current = new AbortController();\n sendMessage({\n abortController: abortController.current,\n onError,\n userMessage,\n allMessages: thread?.messages || [],\n protocolAdaptor: getProtocolAdaptor(protocolOptionsState),\n requestOptions: requestOptionsState,\n threadId: thread.id,\n });\n },\n removeMessage(threadId: string, messageId: string) {\n messageActions.removeMessage(threadId, messageId);\n },\n }),\n [requestOptionsState, protocolOptionsState]\n );\n};\n\nexport default useImperativeHandleChatkitRef;\n"],"names":["uuid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ref.js","sources":["../../../src/components/Chatkit/ref.ts"],"sourcesContent":["import { Ref, useImperativeHandle, useRef, useState } from \"react\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n Message,\n messageActions,\n ProtocolOptions,\n RequestOptions,\n sendMessage,\n Thread,\n threadActions,\n} from \"@chatkit/core\";\nimport { ChatkitProps, ChatkitRef } from \"./types\";\nimport { getProtocolAdaptor } from \"@chatkit/core\";\nimport { MessageStatusEnum } from \"@chatkit/core\";\nimport { useAssistantApi } from \"@assistant-ui/react\";\nimport dayjs from \"dayjs\";\nimport { toast } from \"@/hooks/use-toast\";\nconst useImperativeHandleChatkitRef = (\n ref: Ref<ChatkitRef | null>,\n initialConfig: ChatkitProps[\"initialConfig\"],\n onError?: (error: Error) => void\n) => {\n const {\n requestOptions: requestOptionsFromProps,\n protocolOptions: protocolOptionsFromProps,\n } = initialConfig;\n const [requestOptionsState, setRequestOptionsState] = useState(\n requestOptionsFromProps\n );\n const [protocolOptionsState, setProtocolOptionsState] = useState(\n protocolOptionsFromProps\n );\n\n const { composer } = useAssistantApi();\n\n const abortController = useRef<AbortController | null>(null);\n useImperativeHandle(\n ref,\n () => ({\n sendMessage: async (msg): Promise<AbortController | undefined> => {\n const currentThread = threadActions.getCurrentThread();\n if (!currentThread) {\n return;\n }\n const userMessage: Message = {\n id: uuid(),\n role: \"user\",\n threadId: currentThread.id,\n metadata: {},\n attaches: msg.attaches,\n status: MessageStatusEnum.SENDING,\n content: msg.content,\n createdAt: dayjs().unix(),\n updatedAt: dayjs().unix(),\n };\n abortController.current = new AbortController();\n await sendMessage({\n userMessage,\n onError,\n allMessages: currentThread?.messages || [],\n protocolAdaptor: getProtocolAdaptor(protocolOptionsState),\n abortController: abortController.current,\n requestOptions: requestOptionsState,\n threadId: currentThread.id,\n });\n },\n abortMessage: () => {\n const currentThread = threadActions.getCurrentThread();\n if (!currentThread) {\n return;\n }\n abortController.current?.abort();\n abortController.current = null;\n threadActions.setSending(currentThread.id, false);\n threadActions.setLoading(currentThread.id, false);\n },\n setInput: (input: string) => {\n composer().setText(input);\n },\n addInput: (input: string) => {\n const pendingInput = composer().getState().text + input;\n composer().setText(pendingInput);\n },\n setRequestOptions: (requestOptions: RequestOptions) => {\n setRequestOptionsState(requestOptions);\n },\n getRequestOptions: () => requestOptionsState,\n setProtocolOptions: (protocolOptions: ProtocolOptions) => {\n setProtocolOptionsState(protocolOptions);\n },\n getProtocolOptions: () => protocolOptionsState,\n addAttachment: (file: File) => {\n return composer().addAttachment(file);\n },\n clearAttachments: () => {\n composer().clearAttachments();\n },\n getAttachments: () => composer().getState().attachments,\n reset: () => {\n composer().reset();\n },\n deleteAttachment: (id: string) => {\n composer().attachment({ id }).remove();\n },\n getCurrentThread: () => threadActions.getCurrentThread(),\n setCurrentThread: (threadId: string) => {\n threadActions.setCurrentThread(threadId);\n },\n addThread: (thread: Thread) => {\n threadActions.addThread(thread);\n },\n getThread: (threadId: string) => threadActions.getThread(threadId),\n updateThread: (threadId: string, thread: Partial<Omit<Thread, \"id\">>) => {\n threadActions.updateThread(threadId, thread);\n },\n setThreadName: (threadId: string, name: string) => {\n threadActions.updateThread(threadId, { name });\n },\n deleteThread: (threadId: string) => {\n threadActions.deleteThread(threadId);\n },\n\n clearCurrentThread: () => {\n // 清空会话\n const currentThread = threadActions.getCurrentThread();\n if (currentThread?.id) {\n if (currentThread.sending) {\n return toast({\n title: \"清空失败\",\n description: \"正在发送消息,请先停止发送再清空会话\",\n variant: \"destructive\",\n });\n }\n threadActions.deleteThread(currentThread.id);\n const id = uuid();\n threadActions.addThread({\n id,\n name: currentThread.name,\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n threadActions.setCurrentThread(id);\n }\n },\n setSending: (threadId: string, sending: boolean) => {\n threadActions.setSending(threadId, sending);\n },\n addMessage(threadId: string, message: Message) {\n messageActions.addMessage(threadId, message);\n },\n updateMessage(\n threadId: string,\n messageId: string,\n updateOptions:\n | { updatedMessage: Partial<Omit<Message, \"id\">>; partial: true }\n | { updatedMessage: Omit<Message, \"id\">; partial: false }\n ) {\n messageActions.updateMessage(threadId, messageId, updateOptions);\n },\n updateMessages(threadId: string, messages: Message[]) {\n messageActions.updateMessages(threadId, messages);\n },\n reloadMessage(threadId: string, messageId: string) {\n const thread = threadActions.getThread(threadId);\n if (!thread) {\n return;\n }\n const message = thread.messages.find((item) =>\n messageId.includes(item.id)\n );\n if (!message) {\n return;\n }\n const userMessage: Message = {\n ...message,\n id: uuid(),\n status: MessageStatusEnum.SENDING,\n };\n abortController.current = new AbortController();\n sendMessage({\n abortController: abortController.current,\n onError,\n userMessage,\n allMessages: thread?.messages || [],\n protocolAdaptor: getProtocolAdaptor(protocolOptionsState),\n requestOptions: requestOptionsState,\n threadId: thread.id,\n });\n },\n removeMessage(threadId: string, messageId: string) {\n messageActions.removeMessage(threadId, messageId);\n },\n }),\n [requestOptionsState, protocolOptionsState]\n );\n};\n\nexport default useImperativeHandleChatkitRef;\n"],"names":["uuid"],"mappings":"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"}
|
|
@@ -2,12 +2,13 @@ import { Message, ProtocolBaseOption, RequestOptions, Thread } from "@chatkit/co
|
|
|
2
2
|
export interface ChatkitProps {
|
|
3
3
|
threadList?: React.ReactNode | ((props: {
|
|
4
4
|
threadList: Thread[];
|
|
5
|
-
}) => React.ReactNode) |
|
|
5
|
+
}) => React.ReactNode) | boolean;
|
|
6
6
|
initialConfig: {
|
|
7
7
|
protocolOptions: ProtocolBaseOption;
|
|
8
8
|
requestOptions: RequestOptions;
|
|
9
9
|
};
|
|
10
10
|
toolDisplay?: "group" | "none" | "step";
|
|
11
|
+
showHeader?: boolean;
|
|
11
12
|
placeholder?: string;
|
|
12
13
|
plugins?: React.ReactNode[];
|
|
13
14
|
onError?: (error: any) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,MAAM,EACP,MAAM,eAAe,CAAC;AAKvB,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EACP,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,GACtD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Chatkit/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,7 +55,8 @@ var ErrorMessage = require('../../node_modules/.pnpm/@assistant-ui_react@0.11.37
|
|
|
55
55
|
|
|
56
56
|
const Thread = ({ welcome }) => {
|
|
57
57
|
const { currentThread } = useThread();
|
|
58
|
-
|
|
58
|
+
const { showHeader } = ChatkitContext.useChatkitContext();
|
|
59
|
+
return (jsxRuntime.jsxs("div", { className: "min-w-full h-full flex flex-col", children: [showHeader && jsxRuntime.jsx(threadHeader, { title: currentThread?.name || "Thread Title" }), jsxRuntime.jsx(index.LazyMotion, { features: featuresAnimation.domAnimation, children: jsxRuntime.jsx(index$1.MotionConfig, { reducedMotion: "user", children: jsxRuntime.jsxs(ThreadRoot.ThreadPrimitiveRoot, { className: "aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background", style: {
|
|
59
60
|
["--thread-max-width"]: "44rem",
|
|
60
61
|
}, children: [jsxRuntime.jsx(ThreadIf.ThreadPrimitiveIf, { empty: false, children: jsxRuntime.jsxs(ThreadViewport.ThreadPrimitiveViewport, { className: "aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4", children: [jsxRuntime.jsx(ThreadMessages.ThreadPrimitiveMessages, { components: {
|
|
61
62
|
UserMessage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread.cjs","sources":["../../../src/components/assistant-ui/thread.tsx"],"sourcesContent":["import {\n ArrowDownIcon,\n ArrowUpIcon,\n CheckIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n PencilIcon,\n Square,\n Share2Icon, // 添加分享图标\n MoreHorizontalIcon,\n LoaderCircle,\n} from \"lucide-react\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n ErrorPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n} from \"@assistant-ui/react\";\n\nimport { useState, type FC, type PropsWithChildren } from \"react\";\nimport { LazyMotion, MotionConfig, domAnimation } from \"motion/react\";\nimport * as m from \"motion/react-m\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { MarkdownText } from \"@/components/assistant-ui/markdown-text\";\nimport { ToolFallback } from \"@/components/assistant-ui/tool-fallback\";\nimport { TooltipIconButton } from \"@/components/assistant-ui/tooltip-icon-button\";\nimport {\n ComposerAddAttachment,\n ComposerAttachments,\n UserMessageAttachments,\n} from \"@/components/assistant-ui/attachment\";\nimport { File } from \"@/components/assistant-ui/file\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Reasoning, ReasoningGroup } from \"./reasoning\";\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from \"@/contexts/ChatkitContext\";\nimport ThumbUpIcon from \"@/assets/ThumbUpIcon\";\nimport ThumbDownIcon from \"@/assets/ThumbDownIcon\";\nimport CopyIcon from \"@/assets/Copy\";\nimport RefreshIcon from \"@/assets/RefreshIcon\";\nimport ThreadHeader from \"./thread-header\";\nimport NewSession from \"@/assets/NewSessioin\";\nimport dayjs from \"dayjs\";\nimport useThread from \"@/hooks/useThread\";\nimport { toast } from \"@/hooks/use-toast\";\n\nexport const Thread: FC<{ welcome?: React.ReactNode }> = ({ welcome }) => {\n const { currentThread } = useThread();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n <ThreadHeader title={currentThread?.name || \"Thread Title\"} />\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <ThreadPrimitive.Root\n className=\"aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background\"\n style={{\n [\"--thread-max-width\" as string]: \"44rem\",\n }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4\">\n <ThreadPrimitive.Messages\n components={{\n UserMessage,\n EditComposer,\n AssistantMessage,\n }}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If empty>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4 justify-center gap-[80px] \">\n {welcome ?? <ThreadWelcome />}\n <div className=\"flex items-center\">\n <Composer />\n </div>\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n );\n};\n\nconst NewThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n // 新建会话的逻辑\n const id = `thread-${Date.now()}`;\n ref.current?.addThread({\n id,\n name: \"新对话\",\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n ref.current?.setCurrentThread(id);\n };\n\n return (\n <div className=\"absolute -top-12 h-[20px]\">\n <button\n onClick={handleCreateNewThread}\n className=\"flex items-center px-[8px] py-[3px] gap-[4px] rounded-lg bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n aria-label=\"新建会话\"\n >\n <span className=\"flex h-5 w-5 items-center justify-center rounded-[8px] size-[16px]\">\n <NewSession />\n </span>\n <span className=\"text-sm font-medium leading-[22px] z-10 \">新会话</span>\n </button>\n </div>\n );\n};\n\nconst ClearThread = () => {\n const ref = useChatkitRef();\n const { currentThread } = useThread();\n const handleCreateNewThread = () => {\n ref.current?.clearCurrentThread();\n };\n\n return (\n <div className=\"absolute -top-12 h-[20px]\">\n <button\n onClick={handleCreateNewThread}\n className=\"flex items-center px-[8px] py-[3px] gap-[4px] rounded-lg bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n aria-label=\"新建会话\"\n >\n <span className=\"flex h-5 w-5 items-center justify-center rounded-[8px] size-[16px]\">\n <NewSession />\n </span>\n <span className=\"text-sm font-medium leading-[22px] z-10 \">\n 清空会话\n </span>\n </button>\n </div>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <div className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\">\n <div className=\"aui-thread-welcome-center flex w-full flex-col items-center justify-center\">\n <div className=\"aui-thread-welcome-message flex size-full flex-col justify-center px-8 text-[24px] text-center font-medium leading-[100%] text-[#0C0D0E]\">\n 你好\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n 你好\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const { showThreadList, placeholder } = useChatkitContext();\n return (\n <div className=\"aui-composer-wrapper sticky bottom-0 mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 overflow-visible rounded-t-3xl bg-background pb-4 md:pb-6\">\n <ThreadScrollToBottom />\n {showThreadList ? <NewThread /> : <ClearThread />}\n <ComposerPrimitive.Root className=\"aui-composer-root group/input-group relative flex w-full flex-col rounded-[8px] border border-input bg-background px-1 pt-2 shadow-xs transition-[color,box-shadow] outline-none has-[textarea:focus-visible]:border-ring has-[textarea:focus-visible]:ring-[3px] has-[textarea:focus-visible]:ring-ring/50 dark:bg-background\">\n <ComposerAttachments />\n <ComposerPrimitive.Input\n placeholder={placeholder}\n className=\"aui-composer-input mb-1 max-h-32 min-h-16 w-full resize-none bg-transparent px-3.5 pt-1.5 pb-3 text-base outline-none placeholder:text-muted-foreground focus-visible:ring-0\"\n rows={1}\n autoFocus\n aria-label=\"Message input\"\n />\n <ComposerAction />\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst ComposerAction: FC = () => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n return (\n <div className=\"aui-composer-action-wrapper relative mx-1 mt-2 mb-2 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div\n key={idx}\n className=\"rounded-[8px] border size-8 border-[#0000001A] flex items-center justify-center hover:bg-muted-foreground/15\"\n >\n {plugin}\n </div>\n ))}\n </div>\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip=\"Send message\"\n side=\"bottom\"\n type=\"submit\"\n variant=\"default\"\n size=\"icon\"\n className={cn(\n \"aui-composer-send size-[34px] rounded-full p-1 bg-[#1664FF] text-white\",\n \"hover:bg-primary/75 dark:border-muted-foreground/90\"\n )}\n aria-label=\"Send message\"\n >\n {currentThread?.loading ? (\n <LoaderCircle className=\"aui-composer-send-icon size-5 animate-spin\" />\n ) : (\n <ArrowUpIcon className=\"aui-composer-send-icon size-5\" />\n )}\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n\n <ThreadPrimitive.If running>\n <ComposerPrimitive.Cancel asChild>\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"icon\"\n className=\"aui-composer-cancel size-[34px] rounded-full border border-muted-foreground/60 hover:bg-primary/75 dark:border-muted-foreground/90\"\n aria-label=\"Stop generating\"\n >\n <Square className=\"aui-composer-cancel-icon size-3.5 fill-white dark:fill-black\" />\n </Button>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\n return (\n <MessagePrimitive.Error>\n <ErrorPrimitive.Root className=\"aui-message-error-root mt-2 rounded-md border border-destructive bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/5 dark:text-red-200\">\n <div className=\"font-medium text-destructive text-red-500\">\n 请求出现错误!\n </div>\n <ErrorPrimitive.Message className=\"aui-message-error-message line-clamp-2\" />\n </ErrorPrimitive.Root>\n </MessagePrimitive.Error>\n );\n};\n\nconst ToolGroup: FC<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n> = ({ startIndex, endIndex, children }) => {\n const toolCount = endIndex - startIndex + 1;\n return (\n <details className=\"my-2\">\n <summary className=\"cursor-pointer font-medium\">\n {toolCount} tool {toolCount === 1 ? \"call\" : \"calls\"}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\n className=\"aui-assistant-message-root relative mx-auto w-full max-w-[var(--thread-max-width)] py-4 duration-150 slide-in-from-bottom-1 last:mb-24\"\n data-role=\"assistant\"\n >\n <div className=\"group\">\n <div className=\"aui-assistant-message-content mx-2 leading-7 break-words text-foreground flex flex-col gap-[12px]\">\n <MessagePrimitive.Parts\n components={{\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n // ToolGroup,\n ReasoningGroup,\n }}\n />\n <MessageError />\n </div>\n\n <div className=\"aui-assistant-message-footer mt-2 ml-2 flex hover:visible opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <BranchPicker />\n <AssistantActionBar />\n </div>\n </div>\n </div>\n </MessagePrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n const [submittedFeedback, setSubmittedFeedback] = useState<\n \"positive\" | \"negative\" | undefined\n >(undefined);\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className=\"aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex items-center gap-[8px] text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm\"\n >\n <div\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"positive\" ? undefined : \"positive\"\n )\n }\n >\n <TooltipIconButton tooltip=\"Like\">\n <ThumbUpIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === \"positive\" ? \"#000\" : undefined}\n />\n </TooltipIconButton>\n </div>\n <div\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"negative\" ? undefined : \"negative\"\n )\n }\n >\n <TooltipIconButton tooltip=\"Dislike\">\n <ThumbDownIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === \"negative\" ? \"#000\" : undefined}\n />\n </TooltipIconButton>\n </div>\n\n <div className=\"w-[1px] h-[12px] bg-[#DDE2E9]\" />\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip=\"Copy\">\n <MessagePrimitive.If copied>\n <CheckIcon className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\" />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon className=\"aui-assistant-action-bar-copy-icon size-[16px]\" />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip=\"Refresh\">\n <RefreshIcon className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload>\n </ActionBarPrimitive.Root>\n );\n};\n\n// const UserActionBar: FC = () => {\n// return (\n// <ActionBarPrimitive.Root\n// hideWhenRunning\n// autohide=\"not-last\"\n// className=\"aui-user-action-bar-root flex flex-col items-end\"\n// >\n// <ActionBarPrimitive.Edit asChild>\n// <TooltipIconButton tooltip=\"Edit\" className=\"aui-user-action-edit p-4\">\n// <PencilIcon />\n// </TooltipIconButton>\n// </ActionBarPrimitive.Edit>\n// </ActionBarPrimitive.Root>\n// );\n// };\n\nconst EditComposer: FC = () => {\n return (\n <div className=\"aui-edit-composer-wrapper mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 px-2 first:mt-4\">\n <ComposerPrimitive.Root className=\"aui-edit-composer-root ml-auto flex w-full max-w-7/8 flex-col rounded-xl bg-muted\">\n <ComposerPrimitive.Input\n className=\"aui-edit-composer-input flex min-h-[60px] w-full resize-none bg-transparent p-4 text-foreground outline-none\"\n autoFocus\n />\n\n <div className=\"aui-edit-composer-footer mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button variant=\"ghost\" size=\"sm\" aria-label=\"Cancel edit\">\n Cancel\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n Update\n </Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({\n className,\n ...rest\n}) => {\n return (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn(\n \"aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground\",\n className\n )}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"aui-branch-picker-state font-medium\">\n <BranchPickerPrimitive.Number /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\n className=\"aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group\"\n data-role=\"user\"\n >\n <UserMessageAttachments />\n\n <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]\">\n <MessagePrimitive.Parts />\n </div>\n {/* <div className=\"aui-user-action-bar-wrapper invisible group-hover:visible transition-all duration-200\">\n <UserActionBar />\n </div> */}\n </div>\n\n {/* 移除了下方工具栏代码 */}\n\n <BranchPicker className=\"aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end\" />\n </div>\n </MessagePrimitive.Root>\n );\n};\n\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n className=\"aui-user-action-bar-root flex items-end gap-2 justify-end bg-background p-1 rounded-md\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["_jsxs","_jsx","ThreadHeader","LazyMotion","domAnimation","MotionConfig","ThreadPrimitive.Root","ThreadPrimitive.If","ThreadPrimitive.Viewport","ThreadPrimitive.Messages","ThreadPrimitive.ScrollToBottom","TooltipIconButton","ArrowDownIcon","useChatkitRef","dayjs","NewSession","useChatkitContext","ComposerPrimitive.Root","ComposerAttachments","ComposerPrimitive.Input","useChatkitPlugins","ComposerPrimitive.Send","cn","LoaderCircle","ArrowUpIcon","ComposerPrimitive.Cancel","Button","Square","MessagePrimitive.Error","ErrorPrimitive.Root","ErrorPrimitive.Message","MessagePrimitive.Root","MessagePrimitive.Parts","MarkdownText","ToolFallback","File","Reasoning","ReasoningGroup","useState","ActionBarPrimitive.Root","ActionBarPrimitive.Copy","MessagePrimitive.If","CheckIcon","CopyIcon","ActionBarPrimitive.Reload","BranchPickerPrimitive.Root","BranchPickerPrimitive.Previous","ChevronLeftIcon","BranchPickerPrimitive.Number","BranchPickerPrimitive.Count","BranchPickerPrimitive.Next","ChevronRightIcon","UserMessageAttachments"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thread.cjs","sources":["../../../src/components/assistant-ui/thread.tsx"],"sourcesContent":["import {\n ArrowDownIcon,\n ArrowUpIcon,\n CheckIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n PencilIcon,\n Square,\n Share2Icon, // 添加分享图标\n MoreHorizontalIcon,\n LoaderCircle,\n} from \"lucide-react\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n ErrorPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n} from \"@assistant-ui/react\";\n\nimport { useState, type FC, type PropsWithChildren } from \"react\";\nimport { LazyMotion, MotionConfig, domAnimation } from \"motion/react\";\nimport * as m from \"motion/react-m\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { MarkdownText } from \"@/components/assistant-ui/markdown-text\";\nimport { ToolFallback } from \"@/components/assistant-ui/tool-fallback\";\nimport { TooltipIconButton } from \"@/components/assistant-ui/tooltip-icon-button\";\nimport {\n ComposerAddAttachment,\n ComposerAttachments,\n UserMessageAttachments,\n} from \"@/components/assistant-ui/attachment\";\nimport { File } from \"@/components/assistant-ui/file\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Reasoning, ReasoningGroup } from \"./reasoning\";\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from \"@/contexts/ChatkitContext\";\nimport ThumbUpIcon from \"@/assets/ThumbUpIcon\";\nimport ThumbDownIcon from \"@/assets/ThumbDownIcon\";\nimport CopyIcon from \"@/assets/Copy\";\nimport RefreshIcon from \"@/assets/RefreshIcon\";\nimport ThreadHeader from \"./thread-header\";\nimport NewSession from \"@/assets/NewSessioin\";\nimport dayjs from \"dayjs\";\nimport useThread from \"@/hooks/useThread\";\n\nexport const Thread: FC<{ welcome?: React.ReactNode }> = ({ welcome }) => {\n const { currentThread } = useThread();\n const { showHeader } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader && <ThreadHeader title={currentThread?.name || \"Thread Title\"} />}\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <ThreadPrimitive.Root\n className=\"aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background\"\n style={{\n [\"--thread-max-width\" as string]: \"44rem\",\n }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4\">\n <ThreadPrimitive.Messages\n components={{\n UserMessage,\n EditComposer,\n AssistantMessage,\n }}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If empty>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4 justify-center gap-[80px] \">\n {welcome ?? <ThreadWelcome />}\n <div className=\"flex items-center\">\n <Composer />\n </div>\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n );\n};\n\nconst NewThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n // 新建会话的逻辑\n const id = `thread-${Date.now()}`;\n ref.current?.addThread({\n id,\n name: \"新对话\",\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n ref.current?.setCurrentThread(id);\n };\n\n return (\n <div className=\"absolute -top-12 h-[20px]\">\n <button\n onClick={handleCreateNewThread}\n className=\"flex items-center px-[8px] py-[3px] gap-[4px] rounded-lg bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n aria-label=\"新建会话\"\n >\n <span className=\"flex h-5 w-5 items-center justify-center rounded-[8px] size-[16px]\">\n <NewSession />\n </span>\n <span className=\"text-sm font-medium leading-[22px] z-10 \">新会话</span>\n </button>\n </div>\n );\n};\n\nconst ClearThread = () => {\n const ref = useChatkitRef();\n const { currentThread } = useThread();\n const handleCreateNewThread = () => {\n ref.current?.clearCurrentThread();\n };\n\n return (\n <div className=\"absolute -top-12 h-[20px]\">\n <button\n onClick={handleCreateNewThread}\n className=\"flex items-center px-[8px] py-[3px] gap-[4px] rounded-lg bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n aria-label=\"新建会话\"\n >\n <span className=\"flex h-5 w-5 items-center justify-center rounded-[8px] size-[16px]\">\n <NewSession />\n </span>\n <span className=\"text-sm font-medium leading-[22px] z-10 \">\n 清空会话\n </span>\n </button>\n </div>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <div className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\">\n <div className=\"aui-thread-welcome-center flex w-full flex-col items-center justify-center\">\n <div className=\"aui-thread-welcome-message flex size-full flex-col justify-center px-8 text-[24px] text-center font-medium leading-[100%] text-[#0C0D0E]\">\n 你好\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n 你好\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const { showThreadList, placeholder } = useChatkitContext();\n return (\n <div className=\"aui-composer-wrapper sticky bottom-0 mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 overflow-visible rounded-t-3xl bg-background pb-4 md:pb-6\">\n <ThreadScrollToBottom />\n {showThreadList ? <NewThread /> : <ClearThread />}\n <ComposerPrimitive.Root className=\"aui-composer-root group/input-group relative flex w-full flex-col rounded-[8px] border border-input bg-background px-1 pt-2 shadow-xs transition-[color,box-shadow] outline-none has-[textarea:focus-visible]:border-ring has-[textarea:focus-visible]:ring-[3px] has-[textarea:focus-visible]:ring-ring/50 dark:bg-background\">\n <ComposerAttachments />\n <ComposerPrimitive.Input\n placeholder={placeholder}\n className=\"aui-composer-input mb-1 max-h-32 min-h-16 w-full resize-none bg-transparent px-3.5 pt-1.5 pb-3 text-base outline-none placeholder:text-muted-foreground focus-visible:ring-0\"\n rows={1}\n autoFocus\n aria-label=\"Message input\"\n />\n <ComposerAction />\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst ComposerAction: FC = () => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n return (\n <div className=\"aui-composer-action-wrapper relative mx-1 mt-2 mb-2 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div\n key={idx}\n className=\"rounded-[8px] border size-8 border-[#0000001A] flex items-center justify-center hover:bg-muted-foreground/15\"\n >\n {plugin}\n </div>\n ))}\n </div>\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip=\"Send message\"\n side=\"bottom\"\n type=\"submit\"\n variant=\"default\"\n size=\"icon\"\n className={cn(\n \"aui-composer-send size-[34px] rounded-full p-1 bg-[#1664FF] text-white\",\n \"hover:bg-primary/75 dark:border-muted-foreground/90\"\n )}\n aria-label=\"Send message\"\n >\n {currentThread?.loading ? (\n <LoaderCircle className=\"aui-composer-send-icon size-5 animate-spin\" />\n ) : (\n <ArrowUpIcon className=\"aui-composer-send-icon size-5\" />\n )}\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n\n <ThreadPrimitive.If running>\n <ComposerPrimitive.Cancel asChild>\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"icon\"\n className=\"aui-composer-cancel size-[34px] rounded-full border border-muted-foreground/60 hover:bg-primary/75 dark:border-muted-foreground/90\"\n aria-label=\"Stop generating\"\n >\n <Square className=\"aui-composer-cancel-icon size-3.5 fill-white dark:fill-black\" />\n </Button>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\n return (\n <MessagePrimitive.Error>\n <ErrorPrimitive.Root className=\"aui-message-error-root mt-2 rounded-md border border-destructive bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/5 dark:text-red-200\">\n <div className=\"font-medium text-destructive text-red-500\">\n 请求出现错误!\n </div>\n <ErrorPrimitive.Message className=\"aui-message-error-message line-clamp-2\" />\n </ErrorPrimitive.Root>\n </MessagePrimitive.Error>\n );\n};\n\nconst ToolGroup: FC<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n> = ({ startIndex, endIndex, children }) => {\n const toolCount = endIndex - startIndex + 1;\n return (\n <details className=\"my-2\">\n <summary className=\"cursor-pointer font-medium\">\n {toolCount} tool {toolCount === 1 ? \"call\" : \"calls\"}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\n className=\"aui-assistant-message-root relative mx-auto w-full max-w-[var(--thread-max-width)] py-4 duration-150 slide-in-from-bottom-1 last:mb-24\"\n data-role=\"assistant\"\n >\n <div className=\"group\">\n <div className=\"aui-assistant-message-content mx-2 leading-7 break-words text-foreground flex flex-col gap-[12px]\">\n <MessagePrimitive.Parts\n components={{\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n // ToolGroup,\n ReasoningGroup,\n }}\n />\n <MessageError />\n </div>\n\n <div className=\"aui-assistant-message-footer mt-2 ml-2 flex hover:visible opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <BranchPicker />\n <AssistantActionBar />\n </div>\n </div>\n </div>\n </MessagePrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n const [submittedFeedback, setSubmittedFeedback] = useState<\n \"positive\" | \"negative\" | undefined\n >(undefined);\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className=\"aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex items-center gap-[8px] text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm\"\n >\n <div\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"positive\" ? undefined : \"positive\"\n )\n }\n >\n <TooltipIconButton tooltip=\"Like\">\n <ThumbUpIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === \"positive\" ? \"#000\" : undefined}\n />\n </TooltipIconButton>\n </div>\n <div\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"negative\" ? undefined : \"negative\"\n )\n }\n >\n <TooltipIconButton tooltip=\"Dislike\">\n <ThumbDownIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === \"negative\" ? \"#000\" : undefined}\n />\n </TooltipIconButton>\n </div>\n\n <div className=\"w-[1px] h-[12px] bg-[#DDE2E9]\" />\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip=\"Copy\">\n <MessagePrimitive.If copied>\n <CheckIcon className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\" />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon className=\"aui-assistant-action-bar-copy-icon size-[16px]\" />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip=\"Refresh\">\n <RefreshIcon className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload>\n </ActionBarPrimitive.Root>\n );\n};\n\n// const UserActionBar: FC = () => {\n// return (\n// <ActionBarPrimitive.Root\n// hideWhenRunning\n// autohide=\"not-last\"\n// className=\"aui-user-action-bar-root flex flex-col items-end\"\n// >\n// <ActionBarPrimitive.Edit asChild>\n// <TooltipIconButton tooltip=\"Edit\" className=\"aui-user-action-edit p-4\">\n// <PencilIcon />\n// </TooltipIconButton>\n// </ActionBarPrimitive.Edit>\n// </ActionBarPrimitive.Root>\n// );\n// };\n\nconst EditComposer: FC = () => {\n return (\n <div className=\"aui-edit-composer-wrapper mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 px-2 first:mt-4\">\n <ComposerPrimitive.Root className=\"aui-edit-composer-root ml-auto flex w-full max-w-7/8 flex-col rounded-xl bg-muted\">\n <ComposerPrimitive.Input\n className=\"aui-edit-composer-input flex min-h-[60px] w-full resize-none bg-transparent p-4 text-foreground outline-none\"\n autoFocus\n />\n\n <div className=\"aui-edit-composer-footer mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button variant=\"ghost\" size=\"sm\" aria-label=\"Cancel edit\">\n Cancel\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n Update\n </Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({\n className,\n ...rest\n}) => {\n return (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn(\n \"aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground\",\n className\n )}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"aui-branch-picker-state font-medium\">\n <BranchPickerPrimitive.Number /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\n className=\"aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group\"\n data-role=\"user\"\n >\n <UserMessageAttachments />\n\n <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]\">\n <MessagePrimitive.Parts />\n </div>\n {/* <div className=\"aui-user-action-bar-wrapper invisible group-hover:visible transition-all duration-200\">\n <UserActionBar />\n </div> */}\n </div>\n\n {/* 移除了下方工具栏代码 */}\n\n <BranchPicker className=\"aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end\" />\n </div>\n </MessagePrimitive.Root>\n );\n};\n\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n className=\"aui-user-action-bar-root flex items-end gap-2 justify-end bg-background p-1 rounded-md\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["useChatkitContext","_jsxs","_jsx","ThreadHeader","LazyMotion","domAnimation","MotionConfig","ThreadPrimitive.Root","ThreadPrimitive.If","ThreadPrimitive.Viewport","ThreadPrimitive.Messages","ThreadPrimitive.ScrollToBottom","TooltipIconButton","ArrowDownIcon","useChatkitRef","dayjs","NewSession","ComposerPrimitive.Root","ComposerAttachments","ComposerPrimitive.Input","useChatkitPlugins","ComposerPrimitive.Send","cn","LoaderCircle","ArrowUpIcon","ComposerPrimitive.Cancel","Button","Square","MessagePrimitive.Error","ErrorPrimitive.Root","ErrorPrimitive.Message","MessagePrimitive.Root","MessagePrimitive.Parts","MarkdownText","ToolFallback","File","Reasoning","ReasoningGroup","useState","ActionBarPrimitive.Root","ActionBarPrimitive.Copy","MessagePrimitive.If","CheckIcon","CopyIcon","ActionBarPrimitive.Reload","BranchPickerPrimitive.Root","BranchPickerPrimitive.Previous","ChevronLeftIcon","BranchPickerPrimitive.Number","BranchPickerPrimitive.Count","BranchPickerPrimitive.Next","ChevronRightIcon","UserMessageAttachments"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../../src/components/assistant-ui/thread.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAY,KAAK,EAAE,EAA0B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../../src/components/assistant-ui/thread.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAY,KAAK,EAAE,EAA0B,MAAM,OAAO,CAAC;AA+BlE,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC;IAAE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAwCpD,CAAC"}
|
|
@@ -53,7 +53,8 @@ import { ErrorPrimitiveMessage } from '../../node_modules/.pnpm/@assistant-ui_re
|
|
|
53
53
|
|
|
54
54
|
const Thread = ({ welcome }) => {
|
|
55
55
|
const { currentThread } = useThread();
|
|
56
|
-
|
|
56
|
+
const { showHeader } = useChatkitContext();
|
|
57
|
+
return (jsxs("div", { className: "min-w-full h-full flex flex-col", children: [showHeader && jsx(ThreadHeader, { title: currentThread?.name || "Thread Title" }), jsx(LazyMotion, { features: domAnimation, children: jsx(MotionConfig, { reducedMotion: "user", children: jsxs(ThreadPrimitiveRoot, { className: "aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background", style: {
|
|
57
58
|
["--thread-max-width"]: "44rem",
|
|
58
59
|
}, children: [jsx(ThreadPrimitiveIf, { empty: false, children: jsxs(ThreadPrimitiveViewport, { className: "aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4", children: [jsx(ThreadPrimitiveMessages, { components: {
|
|
59
60
|
UserMessage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread.js","sources":["../../../src/components/assistant-ui/thread.tsx"],"sourcesContent":["import {\n ArrowDownIcon,\n ArrowUpIcon,\n CheckIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n PencilIcon,\n Square,\n Share2Icon, // 添加分享图标\n MoreHorizontalIcon,\n LoaderCircle,\n} from \"lucide-react\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n ErrorPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n} from \"@assistant-ui/react\";\n\nimport { useState, type FC, type PropsWithChildren } from \"react\";\nimport { LazyMotion, MotionConfig, domAnimation } from \"motion/react\";\nimport * as m from \"motion/react-m\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { MarkdownText } from \"@/components/assistant-ui/markdown-text\";\nimport { ToolFallback } from \"@/components/assistant-ui/tool-fallback\";\nimport { TooltipIconButton } from \"@/components/assistant-ui/tooltip-icon-button\";\nimport {\n ComposerAddAttachment,\n ComposerAttachments,\n UserMessageAttachments,\n} from \"@/components/assistant-ui/attachment\";\nimport { File } from \"@/components/assistant-ui/file\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Reasoning, ReasoningGroup } from \"./reasoning\";\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from \"@/contexts/ChatkitContext\";\nimport ThumbUpIcon from \"@/assets/ThumbUpIcon\";\nimport ThumbDownIcon from \"@/assets/ThumbDownIcon\";\nimport CopyIcon from \"@/assets/Copy\";\nimport RefreshIcon from \"@/assets/RefreshIcon\";\nimport ThreadHeader from \"./thread-header\";\nimport NewSession from \"@/assets/NewSessioin\";\nimport dayjs from \"dayjs\";\nimport useThread from \"@/hooks/useThread\";\nimport { toast } from \"@/hooks/use-toast\";\n\nexport const Thread: FC<{ welcome?: React.ReactNode }> = ({ welcome }) => {\n const { currentThread } = useThread();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n <ThreadHeader title={currentThread?.name || \"Thread Title\"} />\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <ThreadPrimitive.Root\n className=\"aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background\"\n style={{\n [\"--thread-max-width\" as string]: \"44rem\",\n }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4\">\n <ThreadPrimitive.Messages\n components={{\n UserMessage,\n EditComposer,\n AssistantMessage,\n }}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If empty>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4 justify-center gap-[80px] \">\n {welcome ?? <ThreadWelcome />}\n <div className=\"flex items-center\">\n <Composer />\n </div>\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n );\n};\n\nconst NewThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n // 新建会话的逻辑\n const id = `thread-${Date.now()}`;\n ref.current?.addThread({\n id,\n name: \"新对话\",\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n ref.current?.setCurrentThread(id);\n };\n\n return (\n <div className=\"absolute -top-12 h-[20px]\">\n <button\n onClick={handleCreateNewThread}\n className=\"flex items-center px-[8px] py-[3px] gap-[4px] rounded-lg bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n aria-label=\"新建会话\"\n >\n <span className=\"flex h-5 w-5 items-center justify-center rounded-[8px] size-[16px]\">\n <NewSession />\n </span>\n <span className=\"text-sm font-medium leading-[22px] z-10 \">新会话</span>\n </button>\n </div>\n );\n};\n\nconst ClearThread = () => {\n const ref = useChatkitRef();\n const { currentThread } = useThread();\n const handleCreateNewThread = () => {\n ref.current?.clearCurrentThread();\n };\n\n return (\n <div className=\"absolute -top-12 h-[20px]\">\n <button\n onClick={handleCreateNewThread}\n className=\"flex items-center px-[8px] py-[3px] gap-[4px] rounded-lg bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n aria-label=\"新建会话\"\n >\n <span className=\"flex h-5 w-5 items-center justify-center rounded-[8px] size-[16px]\">\n <NewSession />\n </span>\n <span className=\"text-sm font-medium leading-[22px] z-10 \">\n 清空会话\n </span>\n </button>\n </div>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <div className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\">\n <div className=\"aui-thread-welcome-center flex w-full flex-col items-center justify-center\">\n <div className=\"aui-thread-welcome-message flex size-full flex-col justify-center px-8 text-[24px] text-center font-medium leading-[100%] text-[#0C0D0E]\">\n 你好\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n 你好\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const { showThreadList, placeholder } = useChatkitContext();\n return (\n <div className=\"aui-composer-wrapper sticky bottom-0 mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 overflow-visible rounded-t-3xl bg-background pb-4 md:pb-6\">\n <ThreadScrollToBottom />\n {showThreadList ? <NewThread /> : <ClearThread />}\n <ComposerPrimitive.Root className=\"aui-composer-root group/input-group relative flex w-full flex-col rounded-[8px] border border-input bg-background px-1 pt-2 shadow-xs transition-[color,box-shadow] outline-none has-[textarea:focus-visible]:border-ring has-[textarea:focus-visible]:ring-[3px] has-[textarea:focus-visible]:ring-ring/50 dark:bg-background\">\n <ComposerAttachments />\n <ComposerPrimitive.Input\n placeholder={placeholder}\n className=\"aui-composer-input mb-1 max-h-32 min-h-16 w-full resize-none bg-transparent px-3.5 pt-1.5 pb-3 text-base outline-none placeholder:text-muted-foreground focus-visible:ring-0\"\n rows={1}\n autoFocus\n aria-label=\"Message input\"\n />\n <ComposerAction />\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst ComposerAction: FC = () => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n return (\n <div className=\"aui-composer-action-wrapper relative mx-1 mt-2 mb-2 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div\n key={idx}\n className=\"rounded-[8px] border size-8 border-[#0000001A] flex items-center justify-center hover:bg-muted-foreground/15\"\n >\n {plugin}\n </div>\n ))}\n </div>\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip=\"Send message\"\n side=\"bottom\"\n type=\"submit\"\n variant=\"default\"\n size=\"icon\"\n className={cn(\n \"aui-composer-send size-[34px] rounded-full p-1 bg-[#1664FF] text-white\",\n \"hover:bg-primary/75 dark:border-muted-foreground/90\"\n )}\n aria-label=\"Send message\"\n >\n {currentThread?.loading ? (\n <LoaderCircle className=\"aui-composer-send-icon size-5 animate-spin\" />\n ) : (\n <ArrowUpIcon className=\"aui-composer-send-icon size-5\" />\n )}\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n\n <ThreadPrimitive.If running>\n <ComposerPrimitive.Cancel asChild>\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"icon\"\n className=\"aui-composer-cancel size-[34px] rounded-full border border-muted-foreground/60 hover:bg-primary/75 dark:border-muted-foreground/90\"\n aria-label=\"Stop generating\"\n >\n <Square className=\"aui-composer-cancel-icon size-3.5 fill-white dark:fill-black\" />\n </Button>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\n return (\n <MessagePrimitive.Error>\n <ErrorPrimitive.Root className=\"aui-message-error-root mt-2 rounded-md border border-destructive bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/5 dark:text-red-200\">\n <div className=\"font-medium text-destructive text-red-500\">\n 请求出现错误!\n </div>\n <ErrorPrimitive.Message className=\"aui-message-error-message line-clamp-2\" />\n </ErrorPrimitive.Root>\n </MessagePrimitive.Error>\n );\n};\n\nconst ToolGroup: FC<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n> = ({ startIndex, endIndex, children }) => {\n const toolCount = endIndex - startIndex + 1;\n return (\n <details className=\"my-2\">\n <summary className=\"cursor-pointer font-medium\">\n {toolCount} tool {toolCount === 1 ? \"call\" : \"calls\"}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\n className=\"aui-assistant-message-root relative mx-auto w-full max-w-[var(--thread-max-width)] py-4 duration-150 slide-in-from-bottom-1 last:mb-24\"\n data-role=\"assistant\"\n >\n <div className=\"group\">\n <div className=\"aui-assistant-message-content mx-2 leading-7 break-words text-foreground flex flex-col gap-[12px]\">\n <MessagePrimitive.Parts\n components={{\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n // ToolGroup,\n ReasoningGroup,\n }}\n />\n <MessageError />\n </div>\n\n <div className=\"aui-assistant-message-footer mt-2 ml-2 flex hover:visible opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <BranchPicker />\n <AssistantActionBar />\n </div>\n </div>\n </div>\n </MessagePrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n const [submittedFeedback, setSubmittedFeedback] = useState<\n \"positive\" | \"negative\" | undefined\n >(undefined);\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className=\"aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex items-center gap-[8px] text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm\"\n >\n <div\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"positive\" ? undefined : \"positive\"\n )\n }\n >\n <TooltipIconButton tooltip=\"Like\">\n <ThumbUpIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === \"positive\" ? \"#000\" : undefined}\n />\n </TooltipIconButton>\n </div>\n <div\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"negative\" ? undefined : \"negative\"\n )\n }\n >\n <TooltipIconButton tooltip=\"Dislike\">\n <ThumbDownIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === \"negative\" ? \"#000\" : undefined}\n />\n </TooltipIconButton>\n </div>\n\n <div className=\"w-[1px] h-[12px] bg-[#DDE2E9]\" />\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip=\"Copy\">\n <MessagePrimitive.If copied>\n <CheckIcon className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\" />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon className=\"aui-assistant-action-bar-copy-icon size-[16px]\" />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip=\"Refresh\">\n <RefreshIcon className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload>\n </ActionBarPrimitive.Root>\n );\n};\n\n// const UserActionBar: FC = () => {\n// return (\n// <ActionBarPrimitive.Root\n// hideWhenRunning\n// autohide=\"not-last\"\n// className=\"aui-user-action-bar-root flex flex-col items-end\"\n// >\n// <ActionBarPrimitive.Edit asChild>\n// <TooltipIconButton tooltip=\"Edit\" className=\"aui-user-action-edit p-4\">\n// <PencilIcon />\n// </TooltipIconButton>\n// </ActionBarPrimitive.Edit>\n// </ActionBarPrimitive.Root>\n// );\n// };\n\nconst EditComposer: FC = () => {\n return (\n <div className=\"aui-edit-composer-wrapper mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 px-2 first:mt-4\">\n <ComposerPrimitive.Root className=\"aui-edit-composer-root ml-auto flex w-full max-w-7/8 flex-col rounded-xl bg-muted\">\n <ComposerPrimitive.Input\n className=\"aui-edit-composer-input flex min-h-[60px] w-full resize-none bg-transparent p-4 text-foreground outline-none\"\n autoFocus\n />\n\n <div className=\"aui-edit-composer-footer mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button variant=\"ghost\" size=\"sm\" aria-label=\"Cancel edit\">\n Cancel\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n Update\n </Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({\n className,\n ...rest\n}) => {\n return (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn(\n \"aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground\",\n className\n )}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"aui-branch-picker-state font-medium\">\n <BranchPickerPrimitive.Number /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\n className=\"aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group\"\n data-role=\"user\"\n >\n <UserMessageAttachments />\n\n <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]\">\n <MessagePrimitive.Parts />\n </div>\n {/* <div className=\"aui-user-action-bar-wrapper invisible group-hover:visible transition-all duration-200\">\n <UserActionBar />\n </div> */}\n </div>\n\n {/* 移除了下方工具栏代码 */}\n\n <BranchPicker className=\"aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end\" />\n </div>\n </MessagePrimitive.Root>\n );\n};\n\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n className=\"aui-user-action-bar-root flex items-end gap-2 justify-end bg-background p-1 rounded-md\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["_jsxs","_jsx","ThreadPrimitive.Root","ThreadPrimitive.If","ThreadPrimitive.Viewport","ThreadPrimitive.Messages","ThreadPrimitive.ScrollToBottom","ArrowDownIcon","ComposerPrimitive.Root","ComposerPrimitive.Input","ComposerPrimitive.Send","ArrowUpIcon","ComposerPrimitive.Cancel","MessagePrimitive.Error","ErrorPrimitive.Root","ErrorPrimitive.Message","MessagePrimitive.Root","MessagePrimitive.Parts","ActionBarPrimitive.Root","ActionBarPrimitive.Copy","MessagePrimitive.If","CheckIcon","ActionBarPrimitive.Reload","BranchPickerPrimitive.Root","BranchPickerPrimitive.Previous","ChevronLeftIcon","BranchPickerPrimitive.Number","BranchPickerPrimitive.Count","BranchPickerPrimitive.Next","ChevronRightIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thread.js","sources":["../../../src/components/assistant-ui/thread.tsx"],"sourcesContent":["import {\n ArrowDownIcon,\n ArrowUpIcon,\n CheckIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n PencilIcon,\n Square,\n Share2Icon, // 添加分享图标\n MoreHorizontalIcon,\n LoaderCircle,\n} from \"lucide-react\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n ErrorPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n} from \"@assistant-ui/react\";\n\nimport { useState, type FC, type PropsWithChildren } from \"react\";\nimport { LazyMotion, MotionConfig, domAnimation } from \"motion/react\";\nimport * as m from \"motion/react-m\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { MarkdownText } from \"@/components/assistant-ui/markdown-text\";\nimport { ToolFallback } from \"@/components/assistant-ui/tool-fallback\";\nimport { TooltipIconButton } from \"@/components/assistant-ui/tooltip-icon-button\";\nimport {\n ComposerAddAttachment,\n ComposerAttachments,\n UserMessageAttachments,\n} from \"@/components/assistant-ui/attachment\";\nimport { File } from \"@/components/assistant-ui/file\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Reasoning, ReasoningGroup } from \"./reasoning\";\nimport {\n useChatkitContext,\n useChatkitPlugins,\n useChatkitRef,\n} from \"@/contexts/ChatkitContext\";\nimport ThumbUpIcon from \"@/assets/ThumbUpIcon\";\nimport ThumbDownIcon from \"@/assets/ThumbDownIcon\";\nimport CopyIcon from \"@/assets/Copy\";\nimport RefreshIcon from \"@/assets/RefreshIcon\";\nimport ThreadHeader from \"./thread-header\";\nimport NewSession from \"@/assets/NewSessioin\";\nimport dayjs from \"dayjs\";\nimport useThread from \"@/hooks/useThread\";\n\nexport const Thread: FC<{ welcome?: React.ReactNode }> = ({ welcome }) => {\n const { currentThread } = useThread();\n const { showHeader } = useChatkitContext();\n return (\n <div className=\"min-w-full h-full flex flex-col\">\n {showHeader && <ThreadHeader title={currentThread?.name || \"Thread Title\"} />}\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <ThreadPrimitive.Root\n className=\"aui-root aui-thread-root @container flex-1 flex h-[calc(100%-65px)] flex-col bg-background\"\n style={{\n [\"--thread-max-width\" as string]: \"44rem\",\n }}\n >\n <ThreadPrimitive.If empty={false}>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4\">\n <ThreadPrimitive.Messages\n components={{\n UserMessage,\n EditComposer,\n AssistantMessage,\n }}\n />\n <div className=\"aui-thread-viewport-spacer min-h-12 grow z-9 bg-white\" />\n <Composer />\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If empty>\n <ThreadPrimitive.Viewport className=\"aui-thread-viewport relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll px-4 justify-center gap-[80px] \">\n {welcome ?? <ThreadWelcome />}\n <div className=\"flex items-center\">\n <Composer />\n </div>\n </ThreadPrimitive.Viewport>\n </ThreadPrimitive.If>\n </ThreadPrimitive.Root>\n </MotionConfig>\n </LazyMotion>\n </div>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n );\n};\n\nconst NewThread = () => {\n const ref = useChatkitRef();\n const handleCreateNewThread = () => {\n // 新建会话的逻辑\n const id = `thread-${Date.now()}`;\n ref.current?.addThread({\n id,\n name: \"新对话\",\n sending: false,\n metadata: {},\n messages: [],\n createdAt: dayjs().unix(),\n });\n ref.current?.setCurrentThread(id);\n };\n\n return (\n <div className=\"absolute -top-12 h-[20px]\">\n <button\n onClick={handleCreateNewThread}\n className=\"flex items-center px-[8px] py-[3px] gap-[4px] rounded-lg bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n aria-label=\"新建会话\"\n >\n <span className=\"flex h-5 w-5 items-center justify-center rounded-[8px] size-[16px]\">\n <NewSession />\n </span>\n <span className=\"text-sm font-medium leading-[22px] z-10 \">新会话</span>\n </button>\n </div>\n );\n};\n\nconst ClearThread = () => {\n const ref = useChatkitRef();\n const { currentThread } = useThread();\n const handleCreateNewThread = () => {\n ref.current?.clearCurrentThread();\n };\n\n return (\n <div className=\"absolute -top-12 h-[20px]\">\n <button\n onClick={handleCreateNewThread}\n className=\"flex items-center px-[8px] py-[3px] gap-[4px] rounded-lg bg-white border border-[#EAEDF1] text-[#0C0D0E] transition-colors hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n aria-label=\"新建会话\"\n >\n <span className=\"flex h-5 w-5 items-center justify-center rounded-[8px] size-[16px]\">\n <NewSession />\n </span>\n <span className=\"text-sm font-medium leading-[22px] z-10 \">\n 清空会话\n </span>\n </button>\n </div>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <div className=\"aui-thread-welcome-root mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col\">\n <div className=\"aui-thread-welcome-center flex w-full flex-col items-center justify-center\">\n <div className=\"aui-thread-welcome-message flex size-full flex-col justify-center px-8 text-[24px] text-center font-medium leading-[100%] text-[#0C0D0E]\">\n 你好\n </div>\n </div>\n </div>\n );\n};\n\nconst ThreadSuggestions: FC = () => {\n return (\n <div className=\"aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2\">\n 你好\n </div>\n );\n};\n\nconst Composer: FC = () => {\n const { showThreadList, placeholder } = useChatkitContext();\n return (\n <div className=\"aui-composer-wrapper sticky bottom-0 mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 overflow-visible rounded-t-3xl bg-background pb-4 md:pb-6\">\n <ThreadScrollToBottom />\n {showThreadList ? <NewThread /> : <ClearThread />}\n <ComposerPrimitive.Root className=\"aui-composer-root group/input-group relative flex w-full flex-col rounded-[8px] border border-input bg-background px-1 pt-2 shadow-xs transition-[color,box-shadow] outline-none has-[textarea:focus-visible]:border-ring has-[textarea:focus-visible]:ring-[3px] has-[textarea:focus-visible]:ring-ring/50 dark:bg-background\">\n <ComposerAttachments />\n <ComposerPrimitive.Input\n placeholder={placeholder}\n className=\"aui-composer-input mb-1 max-h-32 min-h-16 w-full resize-none bg-transparent px-3.5 pt-1.5 pb-3 text-base outline-none placeholder:text-muted-foreground focus-visible:ring-0\"\n rows={1}\n autoFocus\n aria-label=\"Message input\"\n />\n <ComposerAction />\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst ComposerAction: FC = () => {\n const { currentThread } = useThread();\n const plugins = useChatkitPlugins();\n return (\n <div className=\"aui-composer-action-wrapper relative mx-1 mt-2 mb-2 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {plugins.map((plugin, idx) => (\n <div\n key={idx}\n className=\"rounded-[8px] border size-8 border-[#0000001A] flex items-center justify-center hover:bg-muted-foreground/15\"\n >\n {plugin}\n </div>\n ))}\n </div>\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip=\"Send message\"\n side=\"bottom\"\n type=\"submit\"\n variant=\"default\"\n size=\"icon\"\n className={cn(\n \"aui-composer-send size-[34px] rounded-full p-1 bg-[#1664FF] text-white\",\n \"hover:bg-primary/75 dark:border-muted-foreground/90\"\n )}\n aria-label=\"Send message\"\n >\n {currentThread?.loading ? (\n <LoaderCircle className=\"aui-composer-send-icon size-5 animate-spin\" />\n ) : (\n <ArrowUpIcon className=\"aui-composer-send-icon size-5\" />\n )}\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n\n <ThreadPrimitive.If running>\n <ComposerPrimitive.Cancel asChild>\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"icon\"\n className=\"aui-composer-cancel size-[34px] rounded-full border border-muted-foreground/60 hover:bg-primary/75 dark:border-muted-foreground/90\"\n aria-label=\"Stop generating\"\n >\n <Square className=\"aui-composer-cancel-icon size-3.5 fill-white dark:fill-black\" />\n </Button>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </div>\n );\n};\n\nconst MessageError: FC = () => {\n return (\n <MessagePrimitive.Error>\n <ErrorPrimitive.Root className=\"aui-message-error-root mt-2 rounded-md border border-destructive bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/5 dark:text-red-200\">\n <div className=\"font-medium text-destructive text-red-500\">\n 请求出现错误!\n </div>\n <ErrorPrimitive.Message className=\"aui-message-error-message line-clamp-2\" />\n </ErrorPrimitive.Root>\n </MessagePrimitive.Error>\n );\n};\n\nconst ToolGroup: FC<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n> = ({ startIndex, endIndex, children }) => {\n const toolCount = endIndex - startIndex + 1;\n return (\n <details className=\"my-2\">\n <summary className=\"cursor-pointer font-medium\">\n {toolCount} tool {toolCount === 1 ? \"call\" : \"calls\"}\n </summary>\n <div className=\"space-y-2 pl-4\">{children}</div>\n </details>\n );\n};\nconst AssistantMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\n className=\"aui-assistant-message-root relative mx-auto w-full max-w-[var(--thread-max-width)] py-4 duration-150 slide-in-from-bottom-1 last:mb-24\"\n data-role=\"assistant\"\n >\n <div className=\"group\">\n <div className=\"aui-assistant-message-content mx-2 leading-7 break-words text-foreground flex flex-col gap-[12px]\">\n <MessagePrimitive.Parts\n components={{\n Text: MarkdownText,\n tools: { Fallback: ToolFallback },\n File,\n Reasoning,\n // ToolGroup,\n ReasoningGroup,\n }}\n />\n <MessageError />\n </div>\n\n <div className=\"aui-assistant-message-footer mt-2 ml-2 flex hover:visible opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <BranchPicker />\n <AssistantActionBar />\n </div>\n </div>\n </div>\n </MessagePrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n const [submittedFeedback, setSubmittedFeedback] = useState<\n \"positive\" | \"negative\" | undefined\n >(undefined);\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"never\"\n autohideFloat=\"single-branch\"\n className=\"aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex items-center gap-[8px] text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm\"\n >\n <div\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"positive\" ? undefined : \"positive\"\n )\n }\n >\n <TooltipIconButton tooltip=\"Like\">\n <ThumbUpIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === \"positive\" ? \"#000\" : undefined}\n />\n </TooltipIconButton>\n </div>\n <div\n onClick={() =>\n setSubmittedFeedback(\n submittedFeedback === \"negative\" ? undefined : \"negative\"\n )\n }\n >\n <TooltipIconButton tooltip=\"Dislike\">\n <ThumbDownIcon\n className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\"\n fill={submittedFeedback === \"negative\" ? \"#000\" : undefined}\n />\n </TooltipIconButton>\n </div>\n\n <div className=\"w-[1px] h-[12px] bg-[#DDE2E9]\" />\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip=\"Copy\">\n <MessagePrimitive.If copied>\n <CheckIcon className=\"aui-assistant-action-bar-copy-check-icon size-[16px]\" />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon className=\"aui-assistant-action-bar-copy-icon size-[16px]\" />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip=\"Refresh\">\n <RefreshIcon className=\"aui-assistant-action-bar-refresh-icon size-[16px]\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload>\n </ActionBarPrimitive.Root>\n );\n};\n\n// const UserActionBar: FC = () => {\n// return (\n// <ActionBarPrimitive.Root\n// hideWhenRunning\n// autohide=\"not-last\"\n// className=\"aui-user-action-bar-root flex flex-col items-end\"\n// >\n// <ActionBarPrimitive.Edit asChild>\n// <TooltipIconButton tooltip=\"Edit\" className=\"aui-user-action-edit p-4\">\n// <PencilIcon />\n// </TooltipIconButton>\n// </ActionBarPrimitive.Edit>\n// </ActionBarPrimitive.Root>\n// );\n// };\n\nconst EditComposer: FC = () => {\n return (\n <div className=\"aui-edit-composer-wrapper mx-auto flex w-full max-w-[var(--thread-max-width)] flex-col gap-4 px-2 first:mt-4\">\n <ComposerPrimitive.Root className=\"aui-edit-composer-root ml-auto flex w-full max-w-7/8 flex-col rounded-xl bg-muted\">\n <ComposerPrimitive.Input\n className=\"aui-edit-composer-input flex min-h-[60px] w-full resize-none bg-transparent p-4 text-foreground outline-none\"\n autoFocus\n />\n\n <div className=\"aui-edit-composer-footer mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button variant=\"ghost\" size=\"sm\" aria-label=\"Cancel edit\">\n Cancel\n </Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button size=\"sm\" aria-label=\"Update message\">\n Update\n </Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n </div>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({\n className,\n ...rest\n}) => {\n return (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn(\n \"aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-xs text-muted-foreground\",\n className\n )}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"aui-branch-picker-state font-medium\">\n <BranchPickerPrimitive.Number /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root asChild>\n <div\n className=\"aui-user-message-root mx-auto grid w-full max-w-[var(--thread-max-width)] animate-in auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 px-2 py-4 duration-150 ease-out fade-in slide-in-from-bottom-1 first:mt-3 last:mb-5 [&:where(>*)]:col-start-2 group\"\n data-role=\"user\"\n >\n <UserMessageAttachments />\n\n <div className=\"aui-user-message-content-wrapper relative col-start-2 min-w-0\">\n <div className=\"aui-user-message-content bg-muted px-5 py-2.5 break-words text-foreground bg-[#F3F7FF] rounded-[8px]\">\n <MessagePrimitive.Parts />\n </div>\n {/* <div className=\"aui-user-action-bar-wrapper invisible group-hover:visible transition-all duration-200\">\n <UserActionBar />\n </div> */}\n </div>\n\n {/* 移除了下方工具栏代码 */}\n\n <BranchPicker className=\"aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end\" />\n </div>\n </MessagePrimitive.Root>\n );\n};\n\n// 2. 修改UserActionBar组件,添加编辑、分享和更多选项功能\nconst UserActionBar: FC = () => {\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n className=\"aui-user-action-bar-root flex items-end gap-2 justify-end bg-background p-1 rounded-md\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <Share2Icon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n <TooltipIconButton tooltip=\"编辑\" className=\"aui-user-action-edit\">\n <MoreHorizontalIcon className=\"h-3.5 w-3.5\" />\n </TooltipIconButton>\n </ActionBarPrimitive.Root>\n );\n};\n"],"names":["_jsxs","_jsx","ThreadPrimitive.Root","ThreadPrimitive.If","ThreadPrimitive.Viewport","ThreadPrimitive.Messages","ThreadPrimitive.ScrollToBottom","ArrowDownIcon","ComposerPrimitive.Root","ComposerPrimitive.Input","ComposerPrimitive.Send","ArrowUpIcon","ComposerPrimitive.Cancel","MessagePrimitive.Error","ErrorPrimitive.Root","ErrorPrimitive.Message","MessagePrimitive.Root","MessagePrimitive.Parts","ActionBarPrimitive.Root","ActionBarPrimitive.Copy","MessagePrimitive.If","CheckIcon","ActionBarPrimitive.Reload","BranchPickerPrimitive.Root","BranchPickerPrimitive.Previous","ChevronLeftIcon","BranchPickerPrimitive.Number","BranchPickerPrimitive.Count","BranchPickerPrimitive.Next","ChevronRightIcon"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getDefaultExportFromCjs } from '../../../../../_virtual/_commonjsHelpers.js';
|
|
2
|
-
import { __module as classnames } from '../../../../../_virtual/
|
|
2
|
+
import { __module as classnames } from '../../../../../_virtual/index.js';
|
|
3
3
|
|
|
4
4
|
/*!
|
|
5
5
|
Copyright (c) 2018 Jed Watson.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('../../../../../../_virtual/
|
|
3
|
+
var index = require('../../../../../../_virtual/index2.cjs');
|
|
4
4
|
var useSyncExternalStoreShim_production = require('../cjs/use-sync-external-store-shim.production.cjs');
|
|
5
5
|
var useSyncExternalStoreShim_development = require('../cjs/use-sync-external-store-shim.development.cjs');
|
|
6
6
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __module as shim } from '../../../../../../_virtual/
|
|
1
|
+
import { __module as shim } from '../../../../../../_virtual/index2.js';
|
|
2
2
|
import { __require as requireUseSyncExternalStoreShim_production } from '../cjs/use-sync-external-store-shim.production.js';
|
|
3
3
|
import { __require as requireUseSyncExternalStoreShim_development } from '../cjs/use-sync-external-store-shim.development.js';
|
|
4
4
|
|