@next-bricks/ai 1.17.0 → 1.17.1
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/bricks.json +1 -1
- package/dist/chunks/{3751.eb7f94f9.js → 1370.eaf34ae0.js} +2 -2
- package/dist/chunks/{3751.eb7f94f9.js.map → 1370.eaf34ae0.js.map} +1 -1
- package/dist/chunks/1766.bbfc4ec7.js +2 -0
- package/dist/chunks/1766.bbfc4ec7.js.map +1 -0
- package/dist/chunks/1843.1fd3b188.js +2 -0
- package/dist/chunks/1843.1fd3b188.js.map +1 -0
- package/dist/chunks/467.7e034b2e.js +3 -0
- package/dist/chunks/467.7e034b2e.js.LICENSE.txt +29 -0
- package/dist/chunks/467.7e034b2e.js.map +1 -0
- package/dist/chunks/4984.1668d34d.js +2 -0
- package/dist/chunks/4984.1668d34d.js.map +1 -0
- package/dist/chunks/7304.eb78800a.js +2 -0
- package/dist/chunks/7304.eb78800a.js.map +1 -0
- package/dist/chunks/8989.82221efb.js +2 -0
- package/dist/chunks/{8989.c691b402.js.map → 8989.82221efb.js.map} +1 -1
- package/dist/chunks/{9515.530a47e3.js → 9515.b792ec21.js} +2 -2
- package/dist/chunks/{9515.530a47e3.js.map → 9515.b792ec21.js.map} +1 -1
- package/dist/chunks/main.4c9fe5b0.js +2 -0
- package/dist/chunks/main.4c9fe5b0.js.map +1 -0
- package/dist/index.86bb947e.js +2 -0
- package/dist/index.86bb947e.js.map +1 -0
- package/package.json +2 -2
- package/dist/chunks/1370.026d7240.js +0 -2
- package/dist/chunks/1370.026d7240.js.map +0 -1
- package/dist/chunks/3205.db7d6c59.js +0 -3
- package/dist/chunks/3205.db7d6c59.js.LICENSE.txt +0 -7
- package/dist/chunks/3205.db7d6c59.js.map +0 -1
- package/dist/chunks/7041.1c3e361e.js +0 -2
- package/dist/chunks/7041.1c3e361e.js.map +0 -1
- package/dist/chunks/774.f12cf7d3.js +0 -2
- package/dist/chunks/774.f12cf7d3.js.map +0 -1
- package/dist/chunks/843.ac8d836c.js +0 -2
- package/dist/chunks/843.ac8d836c.js.map +0 -1
- package/dist/chunks/8989.c691b402.js +0 -2
- package/dist/chunks/main.7344e9c1.js +0 -2
- package/dist/chunks/main.7344e9c1.js.map +0 -1
- package/dist/index.6840b76e.js +0 -2
- package/dist/index.6840b76e.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/1766.bbfc4ec7.js","mappings":"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","sources":["webpack:///./src/chat-view/ChatViewContext.ts","webpack:///./src/chat-view/components/Loading.tsx","webpack:///./src/chat-view/components/MessageItem/Avatar.tsx","webpack:///./src/chat-view/components/MessageItem/GuideItem.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/ProgressText.tsx","webpack:///./src/chat-view/components/MessageItem/MsgItemContext.ts","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/CustomComponent.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/index.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/index.tsx","webpack:///./src/chat-view/components/MessageItem/TableItem.tsx","webpack:///./src/chat-view/components/MessageItem/TextItem.tsx","webpack:///./src/chat-view/components/MessageItem/Toolbar.tsx","webpack:///./src/chat-view/components/MessageItem/Time.tsx","webpack:///./src/chat-view/components/MessageItem/ContentTip.tsx","webpack:///./src/chat-view/components/MessageItem/index.tsx","webpack:///./src/chat-view/components/QuickAnswerList/index.tsx","webpack:///./src/chat-view/components/StopBtn.tsx","webpack:///./src/chat-view/components/MessageList.tsx","webpack:///./src/chat-view/components/utils/calculateAutoSizeStyle.ts","webpack:///./src/chat-view/components/SearchInput.tsx","webpack:///./src/chat-view/components/SessionList.tsx","webpack:///./src/chat-view/ChatService.ts","webpack:///./src/chat-view/hooks/useChatViewInfo.ts","webpack:///./src/chat-view/host-context.css","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/CodeBlock.shadow.css","webpack:///./src/chat-view/components/MessageItem/Markdown/markdown.shadow.css","webpack:///./src/chat-view/components/QuickAnswerList/quickAnswerList.shadow.css","webpack:///./src/chat-view/components/loading.shadow.css","webpack:///./src/chat-view/styles.shadow.css","webpack:///./src/chat-view/host-context.css?1beb"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { AgentDetailItem } from \"./components/QuickAnswerList/index.js\";\nimport { SessionItem } from \"./ChatService.js\";\n\nexport type Role = \"guide\" | \"user\" | \"assistant\";\n\nexport interface MessageItemContent {\n type: \"guide\" | \"text\" | \"markdown\" | \"table\" | \"load\";\n text: string;\n examplePrompts?: string[];\n}\n\nexport interface MessageItem {\n role: Role;\n content: MessageItemContent;\n created?: number | string;\n key?: number | string;\n conversationId?: string;\n taskId?: string;\n agentId?: string;\n chatting?: boolean;\n tag?: {\n isLike?: boolean;\n };\n}\n\nexport interface QuickAnswerConfig {\n tip: string;\n list: AgentDetailItem[];\n}\ninterface ChatViewContextProps {\n sessionEnd: boolean;\n sessionLoading: boolean;\n activeSessionId?: string;\n sessionList: SessionItem[];\n msgEnd: boolean;\n msgLoading: boolean;\n msgList: MessageItem[];\n loading: boolean;\n chatting: boolean;\n searchStr: string;\n showLike: boolean;\n readonly: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n setAgent: (id: string) => void;\n handleIsLike: (id: string, isLike: boolean) => Promise<boolean>;\n handleChat: (str: string) => void;\n stopChat: () => void;\n checkSession: (id?: string, isInit?: boolean) => void;\n createSession: () => void;\n deleteSession: (ids: string[]) => Promise<boolean>;\n setSearchStr: (str: string) => void;\n querySessionHistory: (limit?: number) => void;\n}\n\nexport const ChatViewContext = createContext<ChatViewContextProps>(\n {} as ChatViewContextProps\n);\n\nexport const useChatViewContext = (): ChatViewContextProps =>\n useContext(ChatViewContext);\n","import React from \"react\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { wrapBrick } from \"@next-core/react-element\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function MessageListLoading() {\n return <div className=\"message-list-loading-wrapper\"></div>;\n}\n\nexport function ChatItemLoading() {\n return (\n <div className=\"chart-item-loading-wrapper\">\n <div className=\"load\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n );\n}\n\nexport function CommonLoading() {\n return (\n <div className=\"common-loading-wrapper\">\n <WrappedIcon icon=\"loading\" lib=\"antd\" spinning />\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { useChatViewContext, type Role } from \"../../ChatViewContext.js\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { wrapBrick } from \"@next-core/react-element\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function Avatar({\n role,\n agentId,\n}: {\n role: Role;\n agentId?: string;\n}): React.ReactNode {\n const isUser = useMemo(() => role === \"user\", [role]);\n const { quickAnswerConfig } = useChatViewContext();\n\n const agentList = useMemo(\n () => quickAnswerConfig?.list ?? [],\n [quickAnswerConfig]\n );\n\n const matchAgent = useMemo(() => {\n return agentList.find((item) => item.id === agentId);\n }, [agentList, agentId]);\n\n return !isUser && matchAgent ? (\n <WrappedIcon\n className=\"avatar\"\n {...matchAgent.icon}\n style={{\n color: `var(--theme-${matchAgent.icon.color}-color)`,\n background: `var(--theme-${matchAgent.icon.color}-background)`,\n }}\n />\n ) : (\n <div className={`avatar ${isUser ? \"user\" : \"robot\"}`} />\n );\n}\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\ninterface GuideItemProps {\n text: string;\n prompts?: string[];\n}\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function GuideItem({ text, prompts }: GuideItemProps) {\n return (\n <div className=\"guide-item\">\n {text}\n <div className=\"prompts-list\">\n {prompts\n ? prompts.map((item, index) => (\n <WrappedLink key={index}>{item}</WrappedLink>\n ))\n : null}\n </div>\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\n\nexport function ProgressText({ text }: { text: string }): React.ReactNode {\n const renderText = useMemo(() => {\n // 文本末尾存在 \\n ```, 会导致在渲染快结束的时候突然有一个换行,在结束的时候,换行被干掉,导致页面闪动的情况\n // 所以在这里计算,如果文本将要关闭,则默认不然 \\n ``` 显示\n const newText = text.replace(/\\n[`]{0,3}$/, \"\");\n return newText;\n }, [text]);\n\n return <div className=\"progress-text\">{renderText}</div>;\n}\n","import { createContext, useContext } from \"react\";\nimport { MessageItem } from \"../../ChatViewContext\";\n\nexport const MsgItemContext = createContext<MessageItem>({} as MessageItem);\n\nexport const useMsgItemContext = (): MessageItem => useContext(MsgItemContext);\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n lazy,\n} from \"react\";\nimport {\n InstanceApi_postSearchV3,\n InstanceApi_PostSearchV3RequestBody,\n} from \"@next-api-sdk/cmdb-sdk\";\nimport { ChatItemLoading } from \"../../../Loading.js\";\nimport { useMsgItemContext } from \"../../MsgItemContext.js\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport { http } from \"@next-core/http\";\n\nconst TableComponent = lazy(() => import(\"./Table/index.js\"));\nconst ChartComponent = lazy(() => import(\"./Chart/index.js\"));\n\ntype CustomLanguage =\n | \"easy_cmd_cmdb_instance_list\"\n | \"easy_cmd_monitor_dashboard\";\n\ninterface UseFetchDataProps {\n text: string;\n chatting: boolean;\n language: CustomLanguage;\n}\n\nfunction useFetchData({ text, chatting, language }: UseFetchDataProps) {\n const cahceTextRef = useRef<string>(\"\");\n const [isFetching, setIsFetching] = useState<boolean>(false);\n const [isEnd, setIsEnd] = useState<boolean>(false);\n const [isError, setIsError] = useState<boolean>(false);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [parseData, setParseData] = useState<any>();\n const [data, setData] = useState<any>({});\n\n const requestPromise = useCallback(\n async (data: any) => {\n switch (language) {\n case \"easy_cmd_cmdb_instance_list\":\n return await InstanceApi_postSearchV3(data.objectId, {\n page: 1,\n page_size: 10,\n ...data,\n });\n case \"easy_cmd_monitor_dashboard\":\n return await http.request<any>(\n `${getBasePath()}/api/gateway/logic.data_exchange/api/v1/data_exchange/olap`,\n {\n method: \"POST\",\n body: text,\n }\n );\n }\n },\n [language, text, parseData]\n );\n\n const fetchData = useCallback(\n async (data: any) => {\n if (isFetching) return;\n setIsFetching(true);\n try {\n const response = await requestPromise(data);\n setData(response);\n setIsError(false);\n } catch {\n setIsError(true);\n }\n setIsFetching(false);\n setIsLoading(false);\n },\n [isFetching, requestPromise]\n );\n\n useEffect(() => {\n if (cahceTextRef.current !== text) {\n cahceTextRef.current = text;\n let data: InstanceApi_PostSearchV3RequestBody & { objectId: string };\n try {\n data = JSON.parse(text);\n } catch {\n setIsError(true);\n return;\n }\n setParseData(data);\n fetchData(data);\n }\n }, [text]);\n\n useEffect(() => {\n if (chatting) {\n if (text.match(/\\n[`]{0,3}$/)) {\n setIsEnd(true);\n }\n } else {\n setIsEnd(true);\n }\n }, [text, chatting, isFetching]);\n\n return {\n data,\n parseData,\n isError: isEnd && isError,\n isLoading: isLoading || isFetching,\n };\n}\n\nexport default function CustomComponent({\n text,\n language,\n}: {\n text: string;\n language: CustomLanguage;\n}) {\n const { chatting } = useMsgItemContext();\n\n const { data, parseData, isError, isLoading } = useFetchData({\n text,\n language,\n chatting: !!chatting,\n });\n\n const component = useMemo(() => {\n switch (language) {\n case \"easy_cmd_cmdb_instance_list\":\n return <TableComponent data={data?.list} params={parseData} />;\n case \"easy_cmd_monitor_dashboard\":\n return <ChartComponent data={data?.data} params={parseData} />;\n }\n }, [language, data, parseData]);\n\n return (\n <div className=\"custom-component-wrapper\">\n <div className=\"params\">\n <div className=\"params-tip\">【查询语句】: </div>\n <pre>\n <code>{text}</code>\n </pre>\n </div>\n {isLoading ? (\n <ChatItemLoading />\n ) : isError ? (\n <div className=\"error-tip\">【查询失败】</div>\n ) : (\n <>\n <div className=\"result-tip\">【查询结果】:</div>\n {component}\n </>\n )}\n </div>\n );\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useNodeViewContext } from \"@prosemirror-adapter/react\";\nimport { ProgressText } from \"./ProgressText.js\";\nimport CustomComponent from \"./CustomComponent.js\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { Tooltip, message } from \"antd\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst copyIcon: GeneralIconProps = {\n lib: \"antd\",\n icon: \"copy\",\n theme: \"outlined\",\n};\n\nexport const CodeBlock = () => {\n const [language, setLanguage] = useState(\"\");\n const { contentRef, node } = useNodeViewContext();\n const [messageApi, contextHolder] = message.useMessage();\n\n const handleCopy = async () => {\n const text = node.content.firstChild?.text;\n try {\n if (text) {\n await navigator.clipboard.writeText(text);\n messageApi.success(\"复制成功\");\n }\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to copy: \", err);\n messageApi.error(\"复制失败\");\n }\n };\n\n const defaultContent = useMemo(\n () => (\n <div className=\"default-container\">\n {contextHolder}\n <pre spellCheck={false}>\n <code ref={contentRef} style={{ position: \"relative\" }}>\n <div className=\"default-toolbar-container\">\n <Tooltip title=\"复制\" color=\"#474747\" arrow={false}>\n <WrappedIcon\n {...(copyIcon as GeneralIconProps)}\n onClick={handleCopy}\n style={{ cursor: \"pointer\" }}\n />\n </Tooltip>\n </div>\n </code>\n </pre>\n </div>\n ),\n [contentRef]\n );\n\n const renderContent = useMemo(() => {\n if (!node.firstChild?.text) return null;\n const text = node.firstChild?.textContent;\n switch (language) {\n case \"easy_cmd_progress\":\n return <ProgressText text={text} />;\n case \"easy_cmd_cmdb_instance_list\":\n case \"easy_cmd_monitor_dashboard\":\n return <CustomComponent text={text} language={language} />;\n default:\n return defaultContent;\n }\n }, [node, language, defaultContent]);\n\n useEffect(() => {\n if (!language) {\n const {\n attrs: { language },\n } = node;\n if (language) {\n setLanguage(language);\n }\n }\n }, [node, language]);\n\n return renderContent;\n};\n","import React, { useEffect } from \"react\";\nimport {\n defaultValueCtx,\n Editor,\n rootCtx,\n editorViewOptionsCtx,\n} from \"@milkdown/core\";\nimport { EditorView } from \"prosemirror-view\";\nimport { Milkdown, useEditor, MilkdownProvider } from \"@milkdown/react\";\nimport { commonmark, codeBlockSchema } from \"@milkdown/preset-commonmark\";\nimport { nord } from \"@milkdown/theme-nord\";\nimport { gfm } from \"@milkdown/preset-gfm\";\nimport { prism } from \"@milkdown/plugin-prism\";\nimport { $view, replaceAll } from \"@milkdown/utils\";\nimport {\n ProsemirrorAdapterProvider,\n useNodeViewFactory,\n} from \"@prosemirror-adapter/react\";\nimport { CodeBlock } from \"./CodeBlock/index.js\";\n\nexport function MarkdownItem({ text }: { text: string }) {\n return (\n <div className=\"markdown-item\">\n <MilkdownProvider>\n <ProsemirrorAdapterProvider>\n <MarkdownDisplay value={text} />\n </ProsemirrorAdapterProvider>\n </MilkdownProvider>\n </div>\n );\n}\n\nfunction hasURLProtocol(url: any) {\n return (\n url.startsWith(\"http://\") ||\n url.startsWith(\"https://\") ||\n url.startsWith(\"file://\") ||\n url.startsWith(\"data:\") ||\n url.startsWith(\"ts://?ts\") ||\n url.startsWith(\"ts:?ts\")\n );\n}\n\nexport function MarkdownDisplay({ value }: { value: string }): React.ReactNode {\n const nodeViewFactory = useNodeViewFactory();\n\n const handleClick = (view: EditorView, pos: number) => {\n const found = view.state.tr.doc.nodeAt(pos);\n\n if (found && found.marks.length > 0) {\n const mark = found.marks.find((m) => m.type.name === \"link\");\n const href = mark?.attrs.href;\n let path: string;\n\n if (hasURLProtocol(href)) {\n path = href;\n } else {\n path = encodeURIComponent(href);\n }\n\n window.open(path, \"_blank\");\n }\n return true;\n };\n\n const { get } = useEditor((root) => {\n return Editor.make()\n .config((ctx) => {\n ctx.set(rootCtx, root);\n ctx.update(editorViewOptionsCtx, (prev: any) => ({\n ...prev,\n editable: () => false,\n handleClickOn: (view: EditorView, pos: number) =>\n handleClick(view, pos),\n }));\n value && ctx.set(defaultValueCtx, value);\n //拦截link的默认点击事件以支持通过新窗口弹出页面,如果后续有其他的定制化需求可以改用custom widget的方式写link widget\n const observer = new MutationObserver(() => {\n const links = Array.from(root.querySelectorAll(\"a\"));\n links.forEach((link) => {\n link.onclick = () => false;\n });\n });\n observer.observe(root, {\n childList: true,\n subtree: true,\n });\n })\n .config(nord)\n .use(prism)\n .use(gfm)\n .use(commonmark)\n .use(\n $view(codeBlockSchema.node, () =>\n nodeViewFactory({ component: CodeBlock })\n )\n );\n }, []);\n\n useEffect(() => {\n if (value !== undefined) {\n get()?.action(replaceAll(value));\n }\n }, [get, value]);\n\n return <Milkdown />;\n}\n","import React from \"react\";\n// import { wrapBrick } from \"@next-core/react-element\";\n// import type {\n// EoNextTable,\n// NextTableComponentProps,\n// } from \"@next-bricks/advanced/next-table\";\n\ninterface MarkdownItemProps {\n text: string;\n}\n\n// const WrappedNextTable = wrapBrick<EoNextTable, NextTableComponentProps>(\n// \"eo-next-table\"\n// );\n\nexport function TableItem({ text }: MarkdownItemProps) {\n // const parseContent = useMemo((): NextTableComponentProps => {\n // let content: NextTableComponentProps;\n // try {\n // content = JSON.parse(text);\n // } catch {\n // content = {} as NextTableComponentProps;\n // }\n // return content;\n // }, [text]);\n\n // return (\n // <div className=\"table-item\">\n // <WrappedNextTable pagination={false} {...parseContent} />\n // </div>\n // );\n return <div className=\"table-item\">{text}</div>;\n}\n","import React from \"react\";\n\ninterface TextItem {\n text: string;\n}\n\nexport function TextItem({ text }: TextItem) {\n return <div className=\"text-item\">{text}</div>;\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { copyToClipboard as _copyToClipboard } from \"@next-bricks/basic/data-providers/copy-to-clipboard\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { MessageItem, useChatViewContext } from \"../../ChatViewContext\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport classNames from \"classnames\";\n\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n\nexport function Toolbar({\n role,\n content,\n chatting,\n taskId,\n tag,\n}: MessageItem): React.ReactNode {\n const isAssistant = useMemo(\n () => role === \"assistant\" && content.type !== \"load\",\n [role, content.type]\n );\n const isChattingItem = useMemo(() => chatting, [chatting]);\n const { showLike, readonly, handleIsLike } = useChatViewContext();\n\n const handleCopy = () => {\n copyToClipboard(content.text)\n .then(() => showNotification({ type: \"success\", message: \"复制成功\" }))\n .catch(() => showNotification({ type: \"error\", message: \"复制失败\" }));\n };\n\n const handleLikeOrIsLike = useCallback(\n async (islike: boolean) => {\n const result = await handleIsLike(taskId!, islike);\n showNotification({\n message: `${islike ? \"点赞\" : \"操作\"}${result ? \"成功\" : \"失败\"}`,\n type: result ? \"success\" : \"error\",\n });\n },\n [taskId, handleIsLike]\n );\n\n return isAssistant && !isChattingItem ? (\n <div className=\"toolbar\">\n {showLike && !readonly && (\n <>\n <WrappedToolTip content=\"点赞\" hoist>\n <WrapperIcon\n className={classNames(\"like\", {\n active: tag?.isLike === true,\n })}\n lib=\"easyops\"\n icon=\"like\"\n onClick={() => handleLikeOrIsLike(true)}\n />\n </WrappedToolTip>\n <WrappedToolTip content=\"还不够好\" hoist>\n <WrapperIcon\n className={classNames(\"unlike\", {\n active: tag?.isLike === false,\n })}\n lib=\"easyops\"\n icon=\"unlike\"\n onClick={() => handleLikeOrIsLike(false)}\n />\n </WrappedToolTip>\n <div className=\"split\" />\n </>\n )}\n <WrappedToolTip content=\"点击复制\" hoist>\n <WrapperIcon lib=\"antd\" icon=\"copy\" onClick={handleCopy} />\n </WrappedToolTip>\n </div>\n ) : null;\n}\n","import moment from \"moment\";\nimport React from \"react\";\n\nexport function Time({ time }: { time?: string | number }) {\n return (\n <div className=\"time\">\n {time\n ? typeof time === \"string\"\n ? time\n : moment(time).format(\"YYYY-MM-DD HH:mm:ss\")\n : null}\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { useChatViewContext, type MessageItem } from \"../../ChatViewContext\";\n\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function ContentTip({ role, content }: MessageItem): React.ReactNode {\n const isUser = useMemo(() => role === \"user\", [role]);\n\n const { chatting, readonly, setSearchStr } = useChatViewContext();\n\n const handleCopy = () => {\n setSearchStr(content.text);\n };\n\n return !readonly && isUser && !chatting ? (\n <div className=\"content-tip\">\n <WrappedToolTip content=\"点击再次提问\" hoist>\n <WrapperIcon lib=\"antd\" icon=\"edit\" onClick={handleCopy} />\n </WrappedToolTip>\n </div>\n ) : null;\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport {\n MessageItem,\n MessageItemContent,\n useChatViewContext,\n} from \"../../ChatViewContext.js\";\nimport { GuideItem } from \"./GuideItem.js\";\nimport { MarkdownItem } from \"./Markdown/index.js\";\nimport { TableItem } from \"./TableItem.js\";\nimport { ChatItemLoading } from \"../Loading.js\";\nimport { TextItem } from \"./TextItem.js\";\nimport { Toolbar } from \"./Toolbar.js\";\nimport { Time } from \"./Time.js\";\nimport { ContentTip } from \"./ContentTip.js\";\nimport { MsgItemContext } from \"./MsgItemContext.js\";\n\nconst NOT_AGENT_MATCH = \"no_agent\";\n\nexport function MessageNode(props: MessageItem): React.ReactNode {\n const { content, created, role, agentId } = props;\n const isUser = useMemo(() => role === \"user\", [role]);\n const { quickAnswerConfig } = useChatViewContext();\n\n const getContentNode = useCallback((content: MessageItemContent) => {\n const { type, text, examplePrompts } = content;\n switch (type) {\n case \"guide\":\n return <GuideItem text={text} prompts={examplePrompts} />;\n case \"text\":\n return <TextItem text={text} />;\n case \"table\":\n return <TableItem text={text} />;\n case \"load\":\n return <ChatItemLoading />;\n case \"markdown\":\n default:\n return <MarkdownItem text={text} />;\n }\n }, []);\n\n const messageNode = useMemo(\n () => getContentNode(content),\n [content, getContentNode]\n );\n\n const agentList = useMemo(\n () => quickAnswerConfig?.list ?? [],\n [quickAnswerConfig]\n );\n\n const matchAgent = useMemo(() => {\n return agentList.find((item) => item.id === agentId);\n }, [agentList, agentId]);\n\n return (\n <MsgItemContext.Provider value={props}>\n <div className=\"message-box\">\n <div className=\"message-top\">\n {isUser\n ? \"我\"\n : !agentId || agentId === NOT_AGENT_MATCH || !matchAgent\n ? \"AI助手\"\n : matchAgent.name}\n <Time time={created} />\n </div>\n <div className=\"message-content\">\n <div className=\"wrapper\">\n <div className=\"content\">{messageNode}</div>\n\n <ContentTip {...props} />\n <Toolbar {...props} />\n </div>\n </div>\n </div>\n </MsgItemContext.Provider>\n );\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useChatViewContext } from \"../../ChatViewContext\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport interface AgentDetailItem {\n name: string;\n description: string;\n icon: GeneralIconProps & { color: string };\n starterPrompts?: string[];\n instanceId: string;\n id: string;\n [key: string]: any;\n}\n\nconst CARD_ITEM_HEIGHT = 85;\nconst HEIGHT_GAP = 24;\n\nfunction QuickAnswerCardItem({\n name,\n description,\n icon,\n starterPrompts,\n}: AgentDetailItem) {\n const { setSearchStr } = useChatViewContext();\n\n const handleCardClick = () => {\n starterPrompts?.length && setSearchStr(starterPrompts[0]);\n };\n\n const iconColor = useMemo(() => icon?.color ?? \"geekblue\", [icon]);\n\n return (\n <div\n className=\"quick-answer-card-item\"\n style={{\n height: CARD_ITEM_HEIGHT,\n background: `linear-gradient(rgba(var(--theme-${iconColor}-color-rgb-channel), 0.1), rgba(var(--theme-${iconColor}-color-rgb-channel), 0.08))`,\n }}\n onClick={handleCardClick}\n >\n <div className=\"left\">\n <WrappedIcon\n className=\"icon\"\n {...(icon ?? {\n icon: \"default-app\",\n lib: \"easyops\",\n category: \"app\",\n })}\n style={{\n background: `rgba(var(--theme-${iconColor}-color-rgb-channel), 0.5)`,\n }}\n />\n </div>\n <div className=\"content\">\n <div className=\"title\">{name}</div>\n <div className=\"description\">{description}</div>\n </div>\n </div>\n );\n}\n\nexport function QuickAnswerList() {\n const { quickAnswerConfig, msgList, loading } = useChatViewContext();\n const [showMoreBtn, setShowMoreBtn] = useState<boolean>(false);\n const listRef = useRef<HTMLDivElement>(null);\n const hadClickShowMoreBtn = useRef<boolean>(false);\n\n const handleShowMoreClick = () => {\n hadClickShowMoreBtn.current = true;\n setShowMoreBtn(false);\n };\n\n useEffect(() => {\n const element = listRef.current;\n if (element) {\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (\n entry.contentRect.height >\n CARD_ITEM_HEIGHT * 3 + HEIGHT_GAP * 2\n ) {\n if (!hadClickShowMoreBtn.current) {\n setShowMoreBtn(true);\n }\n } else {\n setShowMoreBtn(false);\n }\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }\n }, [showMoreBtn, quickAnswerConfig?.list]);\n\n return quickAnswerConfig?.list.length && msgList.length === 0 && !loading ? (\n <div className=\"quick-answer-wrapper\">\n <div className=\"tip\">\n {quickAnswerConfig.tip ??\n \"你好,我是运维数智人 — Murphy,我能为你提供以下服务:\"}\n </div>\n <div\n className=\"quick-answer-list\"\n style={{\n ...(showMoreBtn\n ? {\n maxHeight: CARD_ITEM_HEIGHT * 3 + HEIGHT_GAP * 2 + 10,\n overflow: \"hidden\",\n }\n : {}),\n }}\n ref={listRef}\n >\n {quickAnswerConfig.list.map((item) => (\n <QuickAnswerCardItem key={item.instanceId} {...item} />\n ))}\n </div>\n {showMoreBtn ? (\n <div className=\"show-more-wrapper\">\n <WrappedLink\n icon={{\n lib: \"antd\",\n icon: \"down\",\n }}\n className=\"show-more-btn\"\n onClick={handleShowMoreClick}\n >\n 显示更多\n </WrappedLink>\n </div>\n ) : null}\n </div>\n ) : null;\n}\n","import React from \"react\";\nimport { useChatViewContext } from \"../ChatViewContext\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function StopBtn() {\n const { stopChat } = useChatViewContext();\n\n const handleStopChat = () => {\n stopChat();\n };\n return (\n <div className=\"stop-responding-wrapper\">\n <WrappedLink className=\"stop-btn\" onClick={handleStopChat}>\n 停止生成\n </WrappedLink>\n </div>\n );\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { MessageItem, useChatViewContext } from \"../ChatViewContext\";\nimport { Avatar } from \"./MessageItem/Avatar.js\";\nimport classNames from \"classnames\";\nimport { CommonLoading, MessageListLoading } from \"./Loading.js\";\nimport { MessageNode } from \"./MessageItem/index.js\";\nimport { QuickAnswerList } from \"./QuickAnswerList/index.js\";\nimport { debounce } from \"lodash\";\nimport { StopBtn } from \"./StopBtn.js\";\n\ninterface MessageListProps {\n showAvatar?: boolean;\n}\n\nconst DEFAULT_OFFSET_HEIGHT = 80;\nconst CACHE_HEIGHT = 200;\n\nexport function MessageList({\n showAvatar = true,\n}: MessageListProps): React.ReactNode {\n const chatViewRef = useRef<HTMLDivElement>(null);\n const messgetListBoxRef = useRef<HTMLDivElement>(null);\n const [preHeight, setPreHeight] = useState<number>(0);\n const isCustomScroll = useRef<boolean>(false);\n\n const {\n msgLoading,\n msgEnd,\n msgList,\n loading,\n activeSessionId,\n chatting,\n checkSession,\n } = useChatViewContext();\n\n const getMsgItemNode = useCallback(\n (item: MessageItem, index: number = 0) => {\n return (\n <div\n className={classNames(\"message-item\", { user: item.role === \"user\" })}\n key={index}\n >\n {showAvatar && <Avatar role={item.role} agentId={item.agentId} />}\n <MessageNode {...item} />\n </div>\n );\n },\n [showAvatar]\n );\n\n const msgListNode = useMemo(() => {\n return msgList.map((item, index) => {\n if (item.chatting) {\n return (\n <>\n {getMsgItemNode(item, index)}\n {chatting && index === msgList.length - 1 ? <StopBtn /> : null}\n </>\n );\n } else {\n return getMsgItemNode(item, index);\n }\n });\n }, [msgList, chatting, getMsgItemNode]);\n\n const handleScroll = useCallback(() => {\n const messageList = chatViewRef.current;\n if (messageList) {\n const { scrollHeight, clientHeight, scrollTop } = messageList;\n // 滚动到底部所需的高度 = 总高度 - 视图高度\n const isBottom = scrollHeight - clientHeight === scrollTop;\n if (!isBottom) {\n isCustomScroll.current = true;\n } else if (isBottom && isCustomScroll.current) {\n // 自动吸低\n isCustomScroll.current = false;\n }\n if (\n !msgLoading &&\n !msgEnd &&\n scrollTop < CACHE_HEIGHT &&\n activeSessionId\n ) {\n checkSession();\n }\n }\n }, [msgEnd, msgLoading, activeSessionId, checkSession]);\n\n const debounceHandleScroll = debounce(handleScroll, 200);\n\n useEffect(() => {\n if (chatting || activeSessionId) {\n // 聊天或者会话变更时,重置滚动状态\n isCustomScroll.current = false;\n }\n }, [chatting, activeSessionId]);\n\n useEffect(() => {\n const element = messgetListBoxRef.current;\n if (element) {\n const observer = new ResizeObserver((entries) => {\n let newHeight: number = 0;\n // 如果存在用户行为,不触发自动滚动行为\n if (isCustomScroll.current) return;\n for (const entry of entries) {\n newHeight = entry.contentRect.height - DEFAULT_OFFSET_HEIGHT;\n }\n if (!loading && !chatting) {\n // 高度变化,代表消息新增,自动滚动到最下\n chatViewRef.current!.scroll({\n top: Number.MAX_SAFE_INTEGER,\n });\n }\n if (newHeight > preHeight && chatting) {\n chatViewRef.current!.scroll({\n top: Number.MAX_SAFE_INTEGER,\n });\n setPreHeight(Math.max(preHeight, newHeight));\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }\n }, [chatting, loading, preHeight]);\n\n return (\n <div\n className=\"chat-view\"\n ref={chatViewRef}\n onScroll={debounceHandleScroll}\n >\n <div className=\"message-list\">\n <div className=\"message-list-box\" ref={messgetListBoxRef}>\n {msgEnd && msgList.length ? (\n <div className=\"message-start-tip\">会话开始</div>\n ) : null}\n {msgLoading && <CommonLoading />}\n <QuickAnswerList />\n {msgListNode}\n </div>\n {loading && <MessageListLoading />}\n </div>\n </div>\n );\n}\n","const HIDDEN_TEXTAREA_STYLE = `\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n padding: 10px !important;\n pointer-events: none !important;\n`;\n\nconst SIZING_STYLE = [\n \"letter-spacing\",\n \"line-height\",\n \"padding-top\",\n \"padding-bottom\",\n \"font-family\",\n \"font-weight\",\n \"font-size\",\n \"font-variant\",\n \"text-rendering\",\n \"text-transform\",\n \"width\",\n \"text-indent\",\n \"padding-left\",\n \"padding-right\",\n \"border-width\",\n \"box-sizing\",\n \"word-break\",\n \"white-space\",\n];\nlet hiddenTextarea: HTMLTextAreaElement;\n\n/**\n * 计算 textare 高度\n * https://github.com/react-component/textarea/blob/1c0026fbe30e5f7dff1fca695b2cf262246381ca/src/calculateNodeHeight.tsx\n * */\nexport default function calculateAutoSizeStyle(\n uiTextNode: HTMLTextAreaElement,\n minRows: number | null = null,\n maxRows: number | null = null\n): React.CSSProperties {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement(\"textarea\");\n hiddenTextarea.setAttribute(\"tab-index\", \"-1\");\n hiddenTextarea.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenTextarea);\n }\n\n const uiTextNodeStyle = window.getComputedStyle(uiTextNode);\n const sizingStyle = SIZING_STYLE.map(\n (name) => `${name}:${uiTextNodeStyle.getPropertyValue(name)}`\n ).join(\";\");\n\n // equal style\n hiddenTextarea.setAttribute(\n \"style\",\n `${sizingStyle};${HIDDEN_TEXTAREA_STYLE}`\n );\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || \"\";\n\n let minHeight: number | undefined = undefined;\n let maxHeight: number | undefined = undefined;\n // let overflowY: any;\n\n const borderSize = 2;\n const paddingSize = 20;\n let height = hiddenTextarea.scrollHeight - paddingSize + borderSize;\n\n if (minRows !== null || maxRows !== null) {\n // measure height of a textarea with a single row\n hiddenTextarea.value = \" \";\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows - paddingSize + borderSize;\n height = Math.max(paddingSize, height);\n }\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows - paddingSize + borderSize;\n // overflowY = height > maxHeight ? \"\" : \"hidden\";\n height = Math.min(maxHeight, height);\n }\n }\n\n const style: React.CSSProperties = {\n height,\n overflowY: \"scroll\",\n resize: \"none\",\n };\n\n if (minHeight) {\n style.minHeight = minHeight;\n }\n if (maxHeight) {\n style.maxHeight = maxHeight;\n }\n\n return style;\n}\n","import React, {\n ChangeEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport calculateAutoSizeStyle from \"./utils/calculateAutoSizeStyle.js\";\nimport classNames from \"classnames\";\nimport { useChatViewContext } from \"../ChatViewContext.js\";\nimport { AgentDetailItem } from \"./QuickAnswerList/index\";\n\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst PREFIX_WORD = \"@\";\n\nexport function SearchInput(): React.ReactNode {\n const [value, setValue] = useState<string>(\"\");\n const [active, setActive] = useState<boolean>(false);\n const [expand, setExpand] = useState<boolean>(false);\n const [autoSizeStyle, setAutoSizeStyle] = useState<React.CSSProperties>();\n const [isFillContent, setIsFillContent] = useState<boolean>(false);\n\n // mention\n const [mentionOpen, setMentionOpen] = useState<boolean>(false);\n const [matchPrefixIndex, setMatchPrefixIndex] = useState<number>(-1);\n const [matchAgentList, setMatchMentionList] = useState<AgentDetailItem[]>([]);\n const [matchMentionsIndex, setMatchMentionsIndex] = useState<number>(0);\n\n const mentionsRef = useRef<HTMLDivElement>(null);\n const searchInputBoxRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const hadExpanded = useRef<boolean>(false);\n const inputEndRef = useRef<boolean>(false);\n\n const {\n chatting,\n loading,\n searchStr,\n quickAnswerConfig,\n createSession,\n setSearchStr,\n handleChat,\n setAgent,\n } = useChatViewContext();\n\n const agentList = useMemo(\n () => quickAnswerConfig?.list ?? [],\n [quickAnswerConfig]\n );\n\n const hadValue = useMemo(() => !!value, [value]);\n const defaultSize = useMemo(() => [1, 5], []);\n const disabled = useMemo(() => loading || chatting, [chatting, loading]);\n\n const matchPrefixInfo = useMemo(() => {\n const textareaElement = textareaRef.current!;\n if (matchPrefixIndex >= 0 && value) {\n const currentFocusIndex = textareaElement.selectionStart;\n let matchWord = \"\";\n for (let i = matchPrefixIndex + 1; i < currentFocusIndex; i++) {\n // 匹配中文英文数字\n if (/[\\u4e00-\\u9fa5]|\\w|\\d/.test(value[i]) || inputEndRef.current) {\n matchWord = matchWord + value[i];\n } else {\n setMatchPrefixIndex(-1);\n return false;\n }\n }\n return {\n start: matchPrefixIndex + 1,\n end: currentFocusIndex,\n word: matchWord,\n };\n }\n return false;\n }, [matchPrefixIndex, value]);\n\n const handleAgentItemSelect = useCallback(\n (item: AgentDetailItem) => {\n if (matchPrefixInfo) {\n const { start, end } = matchPrefixInfo;\n const valueList = value.split(\"\");\n const trimName = item.name.replace(/\\s+/g, \"\") + \" \";\n const focusIndex = start + trimName.length;\n valueList.splice(start, end - start, trimName);\n setValue(valueList.join(\"\"));\n setMatchPrefixIndex(-1);\n\n setTimeout(() => {\n textareaRef.current!.selectionStart = focusIndex;\n textareaRef.current!.selectionEnd = focusIndex;\n textareaRef.current!.focus();\n }, 0);\n }\n },\n [matchPrefixInfo, value]\n );\n\n const isShowMentions = useMemo(() => {\n return matchAgentList.length && mentionOpen;\n }, [matchAgentList, mentionOpen]);\n\n const mentions = useMemo(() => {\n return isShowMentions ? (\n <div className=\"mentions-list-wrapper\" ref={mentionsRef}>\n <div className=\"content\">\n <div className=\"mentions-title\">Agents</div>\n <div className=\"mentions-list\">\n {matchAgentList.slice(0, 10).map((item, index) => {\n return (\n <div\n className={classNames(\"mentions-item\", {\n active: index === matchMentionsIndex,\n })}\n key={index}\n onClick={() => handleAgentItemSelect(item)}\n >\n <WrappedIcon\n className=\"icon\"\n {...item.icon}\n style={{\n color: `var(--theme-${item.icon.color}-color)`,\n background: `var(--theme-${item.icon.color}-background)`,\n }}\n />\n <div className=\"name\">{item.name}</div>\n <div className=\"description\">{item.description}</div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n ) : null;\n }, [\n matchAgentList,\n matchMentionsIndex,\n isShowMentions,\n handleAgentItemSelect,\n ]);\n\n const computedAutoSize = useCallback(\n (size = defaultSize) => {\n if (hadExpanded.current && expand) return;\n const textareaElement = textareaRef.current as HTMLTextAreaElement;\n if (textareaElement) {\n const textareaStyles = calculateAutoSizeStyle(\n textareaElement,\n size[0],\n size[1]\n );\n\n setAutoSizeStyle(textareaStyles);\n }\n hadExpanded.current = expand;\n },\n [defaultSize, expand]\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement> | string): void => {\n const value = typeof e === \"string\" ? e : e.target.value;\n setValue(value);\n textareaRef.current!.value = value;\n },\n []\n );\n\n const handleCompositionStart = () => {\n inputEndRef.current = true;\n };\n\n const handleCompositionEnd = () => {\n inputEndRef.current = false;\n };\n\n const hanldeCreateSession = () => {\n createSession();\n };\n\n const handleExpand = useCallback(() => {\n setExpand((value) => {\n return !value;\n });\n }, []);\n\n const matchFirstAgent = useCallback(\n (value: string) => {\n const regex = /@([\\u4e00-\\u9fa5|\\w|\\d]+)/g;\n\n // 在字符串中循环匹配正则表达式\n let match: RegExpExecArray | null;\n while ((match = regex.exec(value)) !== null) {\n if (match) {\n const agent = agentList?.find(\n (item) => item.name.replace(/\\s+/g, \"\") === match![1]\n );\n agent && setAgent(agent.id);\n if (agent) break;\n }\n }\n },\n [agentList, setAgent]\n );\n\n const handleSubmit = useCallback(() => {\n if (!hadValue || !textareaRef.current || disabled) return;\n\n matchFirstAgent(value);\n handleChat(value);\n\n setActive(false);\n setExpand(false);\n handleChange(\"\");\n textareaRef.current.blur();\n }, [value, hadValue, disabled, handleChat, handleChange, matchFirstAgent]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !inputEndRef.current) {\n e.preventDefault();\n if (isShowMentions) {\n handleAgentItemSelect(matchAgentList[matchMentionsIndex]);\n } else {\n handleSubmit();\n }\n }\n if (isShowMentions) {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setMatchMentionsIndex((index) => Math.max(0, index - 1));\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setMatchMentionsIndex((index) =>\n Math.min(matchAgentList.length - 1, index + 1)\n );\n }\n }\n },\n [\n handleSubmit,\n handleAgentItemSelect,\n isShowMentions,\n matchAgentList,\n matchMentionsIndex,\n ]\n );\n\n const handleKeyUp = useCallback(\n (e: React.KeyboardEvent) => {\n const textareaElement = textareaRef.current!;\n\n const selectionIndex = textareaElement.selectionStart;\n const prefixWord = textareaElement.value[selectionIndex - 1];\n const beforeSelectionText = textareaElement.value.slice(\n 0,\n selectionIndex\n );\n const index = beforeSelectionText.lastIndexOf(PREFIX_WORD);\n\n if (\n e.key === \"Escape\" ||\n (!isShowMentions &&\n [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"].indexOf(e.key) !==\n -1)\n ) {\n setMatchPrefixIndex(-1);\n return;\n }\n\n if (prefixWord === PREFIX_WORD) {\n setMatchPrefixIndex(selectionIndex - 1);\n } else {\n setMatchPrefixIndex(index);\n }\n },\n [isShowMentions]\n );\n\n useEffect(() => {\n if (searchStr) {\n handleChange(searchStr.trim());\n textareaRef.current?.focus();\n setSearchStr(\"\");\n }\n }, [searchStr, disabled, setSearchStr, handleChange]);\n\n useEffect(() => {\n computedAutoSize(expand ? [20, 20] : undefined);\n }, [value, expand, computedAutoSize]);\n\n useEffect(() => {\n const searchInputBox = searchInputBoxRef.current;\n if (searchInputBox) {\n const observe = new ResizeObserver(() => {\n const { width: currentWidth } = searchInputBox.getBoundingClientRect();\n const FIT_CONTENT_WIDTH = 900;\n\n setIsFillContent(currentWidth < FIT_CONTENT_WIDTH);\n });\n\n observe.observe(searchInputBox);\n\n return () => {\n observe.disconnect();\n };\n }\n }, []);\n\n useEffect(() => {\n if (!chatting && textareaRef.current) {\n textareaRef.current?.focus();\n }\n }, [chatting]);\n\n useEffect(() => {\n if (agentList?.length && matchPrefixInfo) {\n const filterList =\n matchPrefixInfo.word === \"\"\n ? agentList\n : agentList.filter((item) =>\n item.name.includes(matchPrefixInfo.word)\n );\n\n setMatchMentionList(filterList);\n setMatchMentionsIndex(0);\n setMentionOpen(true);\n } else {\n setMatchMentionList([]);\n setMentionOpen(false);\n }\n }, [matchPrefixInfo, agentList]);\n\n useEffect(() => {\n if (matchMentionsIndex >= 0 && mentionsRef.current) {\n const element = mentionsRef.current.querySelector(\n \".mentions-item.active\"\n );\n element?.scrollIntoView({ block: \"nearest\" });\n }\n }, [matchMentionsIndex]);\n\n useEffect(() => {\n const handleDocumentClick = (e: any) => {\n const mentionsElemnt = mentionsRef.current;\n if (mentionsElemnt && !mentionsElemnt.contains(e.composedPath()[0])) {\n setMentionOpen(false);\n }\n };\n\n document.addEventListener(\"click\", handleDocumentClick);\n\n return () => {\n document.removeEventListener(\"click\", handleDocumentClick);\n };\n }, []);\n\n return (\n <div\n className={classNames(\"search-input-box\", {\n \"fill-content\": isFillContent,\n })}\n ref={searchInputBoxRef}\n >\n {mentions}\n <div\n className={classNames(\"input-box\", {\n active,\n disabled,\n expand,\n })}\n >\n <textarea\n value={value}\n ref={textareaRef}\n style={{\n ...autoSizeStyle,\n paddingRight: expand ? \"50px\" : \"140px\",\n }}\n placeholder={chatting ? \"回复中,请稍等...\" : \"提出你的想法...\"}\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onKeyUpCapture={handleKeyUp}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n />\n <span className=\"suffix-icon\">\n <WrappedToolTip content=\"新增会话\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"plus-circle\"\n onClick={hanldeCreateSession}\n />\n </WrappedToolTip>\n {!expand && (\n <WrappedToolTip content=\"放大\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"arrows-alt\"\n onClick={handleExpand}\n />\n </WrappedToolTip>\n )}\n <div className=\"submit-split\"></div>\n <WrappedToolTip content=\"提交\">\n <WrappedIcon\n className={classNames(\"submit-btn\", {\n active: hadValue,\n disabled: !hadValue || disabled,\n })}\n lib={chatting ? \"antd\" : \"easyops\"}\n icon={chatting ? \"loading\" : \"release-management-fill\"}\n category={chatting ? \"\" : \"menu\"}\n spinning={chatting}\n onClick={handleSubmit}\n />\n </WrappedToolTip>\n </span>\n <span className=\"toolbar-icon\">\n {expand && (\n <WrappedToolTip content=\"缩小\">\n <WrappedIcon lib=\"antd\" icon=\"shrink\" onClick={handleExpand} />\n </WrappedToolTip>\n )}\n </span>\n </div>\n {hadValue && (\n <div className=\"search-input-toolbar\">\n <div className=\"input-tip\">Shift + Enter 换行</div>\n </div>\n )}\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { useChatViewContext } from \"../ChatViewContext\";\nimport classNames from \"classnames\";\nimport { debounce } from \"lodash\";\nimport { SessionItem as SessionItemProps } from \"../ChatService\";\nimport { CommonLoading } from \"./Loading.js\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\n\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst showDialog = unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nconst SESSION_ITEM_HEIGHT = 42;\nconst BUFFER_NUMBER = 5;\nconst CACHE_HEIGHT = 100;\n\nexport function SessionList(): React.ReactNode {\n const { sessionEnd, sessionLoading, sessionList, querySessionHistory } =\n useChatViewContext();\n const sessionWrapperRef = useRef<HTMLDivElement>(null);\n const sessionListRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n // 计算视图内可以展示多少条会话历史数据\n let limit = 20;\n const sessionWrapper = sessionWrapperRef.current;\n if (sessionWrapper) {\n // limit = 视图高度 % 单条高度 + 缓冲长度\n limit =\n Math.floor(sessionWrapper.clientHeight / SESSION_ITEM_HEIGHT) +\n BUFFER_NUMBER;\n }\n querySessionHistory(limit);\n }, []);\n\n const checkSessionList = useCallback(() => {\n if (sessionLoading || sessionEnd) return;\n const sessionList = sessionListRef.current;\n if (sessionList) {\n const { scrollTop, scrollHeight, clientHeight } = sessionList;\n // 如果滚动的高度 + 视图高度 + 缓冲高度 > 视图的滚动高度,请求新的数据\n if (scrollTop + clientHeight + CACHE_HEIGHT > scrollHeight) {\n querySessionHistory();\n }\n }\n }, [querySessionHistory, sessionLoading, sessionEnd]);\n\n const handleScroll = debounce(checkSessionList, 200);\n\n return (\n <div className=\"session-list-wrapper\" ref={sessionWrapperRef}>\n <div className=\"session-title\">历史对话</div>\n <div\n className=\"session-list\"\n ref={sessionListRef}\n onScroll={handleScroll}\n >\n {sessionList.map((item, index) => {\n return <SessionItem key={index} {...item} />;\n })}\n {sessionLoading && <CommonLoading />}\n {/* {sessionEnd && <div className=\"session-end-tip\">到底啦</div>} */}\n </div>\n </div>\n );\n}\n\nfunction SessionItem({ title, conversationId }: SessionItemProps) {\n const { activeSessionId, checkSession, deleteSession } = useChatViewContext();\n\n const handleCheckSession = useCallback(() => {\n checkSession(conversationId, true);\n }, [conversationId, checkSession]);\n\n const handleDeleteSession = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n showDialog({\n type: \"confirm\",\n title: \"会话删除确认\",\n content: `请输入 {{ expect }} 以确认删除`,\n expect: title.replace(/\\s+/g, \"\"),\n }).then(async () => {\n const result = await deleteSession([conversationId]);\n showNotification({\n message: `删除会话${result ? \"成功\" : \"失败\"}`,\n type: result ? \"success\" : \"error\",\n });\n });\n },\n [conversationId, deleteSession, title]\n );\n\n return (\n <div\n key={title}\n className={classNames(\"session-item\", {\n active: conversationId === activeSessionId,\n })}\n onClick={handleCheckSession}\n >\n <div className=\"content\">\n <div className=\"title\" title={title}>\n {title}\n </div>\n </div>\n\n <div className=\"session-close-btn\" onClick={handleDeleteSession}>\n <WrappedIcon icon=\"close\" lib=\"antd\" />\n </div>\n </div>\n );\n}\n","import { fetchEventSource } from \"@microsoft/fetch-event-source\";\nimport { http } from \"@next-core/http\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport moment from \"moment\";\n\nexport interface SSEMessageItem {\n conversationId?: string;\n created: number | string;\n delta: {\n content: string;\n role: string;\n };\n taskId?: string;\n agentId?: string;\n}\n\nexport interface QueueItem {\n topic: string;\n message?: SSEMessageItem;\n}\n\nexport interface SessionItem {\n conversationId: string;\n isDelete: boolean;\n time: number;\n title: string;\n user: string;\n _row_id: string;\n}\n\nexport interface ChatItem {\n agentId: string;\n conversationId: string;\n input: string;\n output: string;\n taskId: string;\n time: number;\n inputTime: number;\n user: string;\n _row_id: string;\n tag: {\n isLike?: boolean;\n };\n}\n\nexport class ChatService {\n #debug: boolean;\n #ctrl?: AbortController;\n #agentId: string;\n #enterInterval: number;\n #charting = false;\n #isStartEmitEvent = false;\n #emitTimer: NodeJS.Timeout | undefined;\n #messageQueue: Array<QueueItem> = [];\n #subscribers: Record<string, Array<(msg?: SSEMessageItem) => void>> = {};\n #conversationId?: string;\n\n // 会话\n #sessionNextToken?: string;\n #cacheLimit?: number;\n\n // 消息\n #messageNextToken?: string;\n\n constructor({\n agentId,\n enterInterval = 50,\n debug = false,\n }: {\n agentId: string;\n enterInterval: number;\n debug: boolean;\n }) {\n this.#agentId = agentId;\n this.#enterInterval = enterInterval;\n this.#debug = debug;\n }\n\n enqueue(data: QueueItem) {\n this.#messageQueue.push(data);\n this.#startEmitEvent();\n }\n\n dequeue() {\n return this.#messageQueue.shift();\n }\n\n #clear() {\n this.#messageQueue.length = 0;\n }\n\n getMessageQueue() {\n return this.#messageQueue;\n }\n\n subscribe(topic: string, callback: (msg?: SSEMessageItem) => void) {\n if (!this.#subscribers[topic]) {\n this.#subscribers[topic] = [];\n }\n this.#subscribers[topic].push(callback);\n }\n\n unsubscribe(topic: string, callback: (msg?: SSEMessageItem) => void) {\n if (this.#subscribers[topic]) {\n this.#subscribers[topic] = this.#subscribers[topic].filter(\n (cb) => cb !== callback\n );\n }\n }\n\n notifySubscribers(data: QueueItem) {\n const topic = data.topic;\n if (this.#subscribers[topic]) {\n this.#subscribers[topic].forEach((callback) => {\n callback(data?.message);\n });\n }\n }\n\n async setChatItemIsLike(id: string, isLike: boolean): Promise<boolean> {\n let flag: boolean = false;\n try {\n const { code } = await http.request<{ code: number }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.CommentDialogue/conversation/comment`,\n {\n method: \"POST\",\n body: JSON.stringify({\n taskId: id,\n isLike,\n }),\n }\n );\n if (code === 0) {\n flag = true;\n }\n } catch {\n flag = false;\n }\n return flag;\n }\n\n setAgentId(id: string) {\n this.#agentId = id;\n }\n\n setConversationId(id?: string) {\n this.#conversationId = id;\n }\n\n async getSessionHistory(limit?: number): Promise<SessionItem[]> {\n if (limit) {\n this.#cacheLimit = limit;\n }\n try {\n const {\n data: { conversations, next_token },\n } = await http.request<{\n data: {\n conversations: SessionItem[];\n next_token: string;\n previous_token: string;\n };\n }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.ListConversation/conversation/list`,\n {\n method: \"POST\",\n body: JSON.stringify({\n limit: this.#cacheLimit ?? 20,\n next_token: this.#sessionNextToken,\n }),\n }\n );\n this.#sessionNextToken = next_token;\n if (!next_token) {\n this.notifySubscribers({ topic: \"session.fetch.end\" });\n }\n return conversations;\n } catch {\n // eslint-disable-next-line no-console\n console.error(\"获取会话历史失败\");\n }\n return [];\n }\n\n async getChatHistory(id?: string): Promise<ChatItem[]> {\n if (id) {\n this.setConversationId(id);\n this.#messageNextToken = \"\";\n }\n if (!this.#conversationId) return [];\n try {\n const {\n data: { conversations, next_token },\n } = await http.request<{\n data: {\n conversations: ChatItem[];\n next_token: string;\n previous_token: string;\n };\n }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.GetAllDialogue/conversation/get/${this.#conversationId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n limit: 15,\n next_token: this.#messageNextToken,\n }),\n }\n );\n this.#messageNextToken = next_token;\n if (!next_token) {\n this.notifySubscribers({ topic: \"message.fetch.end\" });\n }\n return conversations;\n } catch {\n // eslint-disable-next-line no-console\n console.error(\"获取消息历史失败\");\n }\n return [];\n }\n\n async deleteSession(id: string[]): Promise<boolean> {\n if (!id.length) return false;\n let flag: boolean = false;\n try {\n const { code } = await http.request<{ code: number }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.DeleteConversation/conversation/delete`,\n {\n method: \"POST\",\n body: JSON.stringify({\n conversationIds: id,\n }),\n }\n );\n if (code === 0) {\n flag = true;\n }\n } catch {\n flag = false;\n }\n return flag;\n }\n\n splitWord(str: string) {\n if (!str) return [];\n // 单词长度小于 5 直接返回, 否则做单词分割处理\n if (str?.length < 5) return [str];\n const list = [];\n\n if (window.Intl) {\n const segmenterFr = new Intl.Segmenter(\"zh-Hans-CN\", {\n granularity: \"word\",\n });\n const iterator = segmenterFr.segment(str)[Symbol.iterator]();\n\n let nextWord = iterator.next();\n while (!nextWord.done) {\n list.push(nextWord.value.segment);\n nextWord = iterator.next();\n }\n } else {\n const customSplit = {\n [Symbol.split](str: string) {\n let pos = 0;\n const result = [];\n let cache = \"\";\n while (pos < str.length) {\n const matchStr = str.substring(pos, pos + 1);\n // 如果是中文,单个输出\n if (/[\\u4e00-\\u9fa5]/.test(matchStr)) {\n result.push(cache + matchStr);\n cache = \"\";\n } else {\n // 否则,遇到空格或者标点符号再分词\n if (!/\\s|[,。;《》?!,.:<>?!]]/.test(matchStr)) {\n cache = cache + matchStr;\n } else {\n result.push(cache + matchStr);\n cache = \"\";\n }\n }\n pos++;\n }\n if (cache) result.push(cache);\n return result;\n },\n };\n\n str.split(customSplit).forEach((word) => {\n list.push(word);\n });\n }\n\n return list;\n }\n\n async chat(str: string): Promise<void> {\n this.#ctrl = new AbortController();\n let hadMatchMessage = false;\n this.#charting = true;\n await fetchEventSource(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions`,\n {\n method: \"POST\",\n signal: this.#ctrl.signal,\n body: JSON.stringify({\n agentId: this.#agentId,\n conversationId: this.#conversationId,\n input: str,\n stream: true,\n config: {\n debug: this.#debug,\n },\n }),\n headers: {\n \"giraffe-contract-name\": \"easyops.api.aiops_chat.manage.LLMChatProxy\",\n },\n onopen: async (response) => {\n if (response.ok) {\n // eslint-disable-next-line no-console\n console.log(\"open sse service success!\");\n } else {\n // eslint-disable-next-line no-console\n console.log(\"open sse service fail!\");\n }\n },\n onmessage: (msg) => {\n const { data } = msg;\n hadMatchMessage = true;\n if (data === \"[DONE]\") {\n this.#ctrl!.abort();\n return;\n }\n let result = {} as SSEMessageItem;\n try {\n result = JSON.parse(data);\n } catch {\n this.enqueue({\n topic: \"add\",\n message: {\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n delta: {\n role: \"assistant\",\n content: `\\`【数据格式错误】:\\` ${data}`,\n },\n agentId: this.#agentId,\n },\n });\n return;\n }\n if (!this.#conversationId) {\n this.setConversationId(result.conversationId);\n }\n const wordList = this.splitWord(result.delta.content);\n wordList.forEach((word) => {\n this.enqueue({\n topic: \"add\",\n message: {\n ...result,\n delta: {\n role: \"assistant\",\n content: word,\n },\n },\n });\n });\n },\n onclose: () => {\n // eslint-disable-next-line no-console\n console.log(\"close\");\n // 兜底逻辑,连接结束,并且没有数据返回\n if (!hadMatchMessage) {\n this.enqueue({\n topic: \"add\",\n message: {\n delta: {\n role: \"assistant\",\n content: \"`无法识别`\",\n },\n agentId: this.#agentId,\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n },\n });\n }\n this.#ctrl!.abort();\n },\n onerror: (err) => {\n // eslint-disable-next-line no-console\n console.log(\"err\", err);\n this.#ctrl!.abort();\n },\n }\n );\n\n this.#charting = false;\n }\n\n stop() {\n clearInterval(this.#emitTimer);\n this.#ctrl && this.#ctrl?.abort();\n this.#charting = false;\n this.#emitTimer = undefined;\n this.#isStartEmitEvent = false;\n this.#clear();\n this.notifySubscribers({ topic: \"stop\" });\n }\n\n #startEmitEvent() {\n if (this.#isStartEmitEvent) return;\n this.#isStartEmitEvent = true;\n // 轮训队列,每隔 #enterInterval(默认 50ms) 推出第一条数据,获取到 text,推送给组件,组件接受后进行渲染\n // 直到聊天结束,并且消息队列数据为空时,停止 emit\n this.#emitTimer = setInterval(() => {\n if (this.#charting || this.getMessageQueue().length) {\n const messageItem = this.dequeue()!;\n messageItem && this.notifySubscribers(messageItem);\n } else {\n clearInterval(this.#emitTimer);\n this.#emitTimer = undefined;\n this.#isStartEmitEvent = false;\n this.notifySubscribers({ topic: \"finish\" });\n }\n }, this.#enterInterval);\n }\n}\n\n// export const chartService = new ChatService();\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { MessageItem } from \"../ChatViewContext.js\";\nimport moment from \"moment\";\nimport {\n ChatItem,\n ChatService,\n SessionItem,\n SSEMessageItem,\n} from \"../ChatService.js\";\n\nconst NEW_SESSION_ID = \"new_session_id\";\n\nexport function useChatViewInfo({\n agentId,\n sessionId,\n enterInterval = 50,\n debug,\n}: {\n agentId: string;\n sessionId?: string;\n enterInterval?: number;\n debug: boolean;\n}) {\n const [sessionEnd, setSessionEnd] = useState<boolean>(false);\n const [sessionLoading, setSessionLoading] = useState<boolean>(false);\n const [activeSessionId, setActiveSessionId] = useState<string>();\n const [loading, setLoading] = useState<boolean>(false);\n const [chatting, setChatting] = useState<boolean>(false);\n const [sessionList, setSessionList] = useState<SessionItem[]>([]);\n\n const [msgLoading, setMsgLoading] = useState<boolean>(false);\n const [msgEnd, setMsgEnd] = useState<boolean>(false);\n const [msgList, setMsgList] = useState<MessageItem[]>([]);\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const chatingText = useRef<string>(\"\");\n const chatingMessageItem = useRef<MessageItem>();\n const chatService = useMemo(\n () =>\n new ChatService({\n agentId,\n enterInterval,\n debug,\n }),\n [agentId, enterInterval, debug]\n );\n\n const defaultNewSessionItem = useMemo(\n () =>\n ({\n conversationId: NEW_SESSION_ID,\n title: \"新建会话\",\n }) as SessionItem,\n []\n );\n\n const stopChat = useCallback(() => {\n chatService.stop();\n }, [chatService]);\n\n const setAgent = useCallback(\n (id: string) => {\n chatService.setAgentId(id);\n },\n [chatService]\n );\n\n const checkSession = useCallback(\n async (id?: string, isInit = false) => {\n if (isInit && id) {\n // 切换聊天,重制状态\n setMsgEnd(false);\n setMsgLoading(false);\n setLoading(true);\n setMsgList([]);\n setActiveSessionId(id);\n if (chatting) {\n stopChat();\n }\n } else {\n setMsgLoading(true);\n }\n // 如果是新建会话,不需要查询历史\n if (id === NEW_SESSION_ID) {\n // 重置会话id\n chatService.setConversationId();\n setMsgEnd(true);\n setLoading(false);\n return;\n }\n const list = await chatService.getChatHistory(id);\n const computedList = (list: ChatItem[]) => {\n const newList: MessageItem[] = [];\n list.forEach((item) => {\n newList.unshift(\n {\n taskId: item.taskId,\n role: \"user\",\n content: {\n type: \"text\",\n text: item.input,\n },\n key: `user_${item.taskId}`,\n created: item.time,\n },\n {\n agentId: item.agentId,\n taskId: item.taskId,\n role: \"assistant\",\n content: {\n type: \"markdown\",\n text: item.output,\n },\n key: `assistant_${item.taskId}`,\n created: item.inputTime,\n tag: item.tag,\n }\n );\n });\n return newList.filter((item) => item.content.text);\n };\n setMsgList((preList) => {\n return computedList(list).concat(preList);\n });\n setMsgLoading(false);\n setLoading(false);\n },\n [chatService, chatting, stopChat]\n );\n\n const deleteSession = useCallback(\n async (ids: string[]): Promise<boolean> => {\n // 需要过滤新建会话, 因为新建会话在本地,还没上报到远端\n const filterIds = ids.filter((item) => item !== NEW_SESSION_ID);\n const result = await chatService.deleteSession(filterIds);\n if (result) {\n let deleteActiveSession = false;\n if (\n activeSessionId &&\n filterIds.includes(activeSessionId) &&\n activeSessionId !== NEW_SESSION_ID\n ) {\n // 如果删除会话包含当前会话,需要重置状态\n deleteActiveSession = true;\n // 清除会话id\n chatService.setConversationId();\n\n setMsgEnd(false);\n setMsgLoading(false);\n setMsgList([]);\n\n if (chatting) {\n stopChat();\n }\n }\n\n setSessionList((list) => {\n const newList = list.filter(\n (item) => !filterIds.includes(item.conversationId!)\n );\n if (deleteActiveSession) {\n // 已经选中的当前会话被删除,新建会话\n const hasNewOne = list.find(\n (item) => item.conversationId === NEW_SESSION_ID\n );\n setLoading(false);\n\n setActiveSessionId(NEW_SESSION_ID);\n if (hasNewOne) {\n return newList;\n } else {\n return [defaultNewSessionItem].concat(newList);\n }\n }\n return newList;\n });\n }\n return result;\n },\n [activeSessionId, chatService, chatting, defaultNewSessionItem, stopChat]\n );\n\n const querySessionHistory = useCallback(\n async (limit?: number) => {\n setSessionLoading(true);\n const list = await chatService.getSessionHistory(limit);\n if (!activeSessionId) {\n // 如果没有 activeSessionId, 默认新增会话\n setActiveSessionId(NEW_SESSION_ID);\n }\n setSessionList((preList) => {\n return !activeSessionId\n ? [defaultNewSessionItem].concat([...preList, ...list])\n : preList.concat(list);\n });\n setSessionLoading(false);\n },\n [chatService, activeSessionId, defaultNewSessionItem]\n );\n\n const handleChat = useCallback(\n async (str: string) => {\n if (activeSessionId === NEW_SESSION_ID) {\n // 如果当前会话属于新建会话,更新会话历史数据\n setSessionList((list) => {\n return list.map((item) => ({\n ...item,\n title: item.conversationId === NEW_SESSION_ID ? str : item.title,\n }));\n });\n }\n setChatting(true);\n chatService.chat(str);\n setMsgList((list) => {\n return list.concat([\n {\n role: \"user\",\n content: {\n type: \"text\",\n text: str,\n },\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n },\n {\n role: \"assistant\",\n content: {\n type: \"load\",\n text: \"\",\n },\n chatting: true,\n created: \"Now\",\n },\n ]);\n });\n },\n [chatService, activeSessionId]\n );\n\n const createSession = useCallback(() => {\n chatService.setConversationId();\n setMsgList([]);\n setActiveSessionId(NEW_SESSION_ID);\n const hasNewOne = sessionList.find(\n (item) => item.conversationId === NEW_SESSION_ID\n );\n if (!hasNewOne) {\n setSessionList((preList) => {\n return [defaultNewSessionItem].concat(preList);\n });\n }\n }, [chatService, sessionList, defaultNewSessionItem]);\n\n const handleIsLike = useCallback(\n async (id: string, isLike: boolean): Promise<boolean> => {\n const result = await chatService.setChatItemIsLike(id, isLike);\n if (result) {\n setMsgList((list) => {\n return list.map((item) => ({\n ...item,\n tag:\n id === item.taskId\n ? {\n isLike,\n }\n : item.tag,\n }));\n });\n }\n return result;\n },\n [chatService]\n );\n\n useEffect(() => {\n if (sessionId) {\n checkSession(sessionId);\n }\n }, [sessionId]);\n\n useEffect(() => {\n // session listener\n const handleSessionEnd = () => {\n setSessionEnd(true);\n };\n chatService.subscribe(\"session.fetch.end\", handleSessionEnd);\n\n return () => {\n chatService.subscribe(\"session.fetch.end\", handleSessionEnd);\n };\n }, [chatService]);\n\n useEffect(() => {\n // chat listener\n const listener = (msgItem?: SSEMessageItem) => {\n if (!msgItem) return;\n chatingText.current = chatingText.current + msgItem.delta.content;\n if (activeSessionId === NEW_SESSION_ID && msgItem.conversationId) {\n // 如果当前会话属于新建会话,更新会话历史数据\n setSessionList((list) => {\n return list.map((item) => ({\n ...item,\n conversationId:\n item.conversationId === NEW_SESSION_ID\n ? msgItem.conversationId!\n : item.conversationId,\n }));\n });\n setActiveSessionId(msgItem.conversationId);\n }\n // eslint-disable-next-line no-console\n // console.log(chatingText.current);\n chatingMessageItem.current = {\n ...msgItem,\n role: \"assistant\",\n content: {\n type: \"markdown\",\n text: chatingText.current,\n },\n chatting: true,\n created: moment(msgItem?.created).format(\"YYYY-MM-DD HH:mm:ss\"),\n };\n setMsgList((list) => {\n list.pop();\n return list.concat(chatingMessageItem.current!);\n });\n };\n const reset = () => {\n chatingText.current = \"\";\n setChatting(false);\n setLoading(false);\n chatingMessageItem.current = undefined;\n };\n const finishListener = () => {\n setMsgList((list) => {\n return list.map((item) => ({\n ...item,\n chatting: false,\n }));\n });\n reset();\n };\n const fetchEndListener = () => {\n setMsgEnd(true);\n };\n const stopListener = () => {\n if (chatingMessageItem.current) {\n const stopMessageItem: MessageItem = {\n ...chatingMessageItem.current,\n content: {\n type: \"markdown\",\n text:\n chatingMessageItem.current.content.text +\n \" \\\\\\n ` 对话被中断了 `\",\n },\n };\n setMsgList((list) => {\n list.pop();\n return msgList.concat(stopMessageItem);\n });\n } else {\n setMsgList((list) => {\n return list.filter((item) => item.content.type !== \"load\");\n });\n }\n reset();\n };\n chatService.subscribe(\"add\", listener);\n chatService.subscribe(\"finish\", finishListener);\n chatService.subscribe(\"stop\", stopListener);\n chatService.subscribe(\"message.fetch.end\", fetchEndListener);\n return () => {\n chatService.unsubscribe(\"add\", listener);\n chatService.unsubscribe(\"finish\", finishListener);\n chatService.unsubscribe(\"stop\", stopListener);\n chatService.unsubscribe(\"message.fetch.end\", fetchEndListener);\n };\n }, [chatService, activeSessionId, msgList]);\n\n return {\n sessionEnd,\n sessionLoading,\n loading,\n chatting,\n activeSessionId,\n sessionList,\n searchStr,\n msgEnd,\n msgLoading,\n msgList,\n setAgent,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n handleIsLike,\n };\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--message-box-bg:#f1f3f4;--search-input-icon-hover:#ddd;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.15)}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--message-box-bg:rgba(255,255,255,0.16);--search-input-icon-hover:#383838;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.24)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.progress-text{position:relative;margin-left:12px;font-size:12px;color:var(--palette-gray-7);line-height:22px;min-height:22px}.progress-text::before{content:\"·\";font-size:16px;position:absolute;left:-10px;top:-4px}.custom-component-wrapper .params{margin-top:6px;border-radius:3px}.custom-component-wrapper .params pre{margin:4px 0}.custom-component-wrapper .params-tip,\n .custom-component-wrapper .error-tip,\n .custom-component-wrapper .result-tip{font-size:0.875em;color:rgb(94 129 172)}.custom-component-wrapper .empty-tip{font-size:12px;color:var(--palette-gray-7)}.custom-component-wrapper .table-wrapper .table-container{position:relative;box-sizing:border-box;margin:0;padding:0;font-size:14px;clear:both;max-width:100%;overflow:hidden}.custom-component-wrapper .table-wrapper .table-container .table-content{overflow-x:auto}.custom-component-wrapper .table-wrapper .table-container .table-content table{margin:4px 0}.custom-component-wrapper .table-wrapper .table-container .table-content table tr td{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.custom-component-wrapper .table-wrapper .open-more{margin-top:4px;font-size:12px;display:flex;justify-content:end}.custom-component-wrapper .chart-wrapper{background:#fff;margin-top:12px}.default-container .default-toolbar-container{visibility:hidden;position:absolute;top:0;right:0}.default-container:hover .default-toolbar-container{visibility:visible}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;font-variant-ligatures:none;font-feature-settings:\"liga\" 0,none}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.ProseMirror .tableWrapper{overflow-x:auto}.ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}.ProseMirror td,\n.ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}.ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}.ProseMirror.resize-cursor{cursor:ew-resize;cursor:col-resize}.ProseMirror .selectedCell:after{z-index:2;position:absolute;content:\"\";left:0;right:0;top:0;bottom:0;background:rgba(200,200,255,0.4);pointer-events:none}.milkdown-theme-nord blockquote{border-left-width:4px;--tw-border-opacity:1;border-color:rgb(94 129 172/var(--tw-border-opacity));padding-left:1rem;font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif;font-style:normal}.milkdown-theme-nord code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord pre code{color:inherit}.milkdown-theme-nord img{margin-top:0!important;margin-bottom:0!important;display:inline-block;max-width:100%}.milkdown-theme-nord.prose\n :where(blockquote):not(:where([class~=\"not-prose\"] *)){font-weight:400}.milkdown-theme-nord.prose\n :where(ol > li):not(:where([class~=\"not-prose\"] *))::marker,\n.milkdown-theme-nord.prose\n :where(ul > li):not(:where([class~=\"not-prose\"] *))::marker{--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"] *)):before,\n.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"] *)):after{content:\"\"}.milkdown-theme-nord.prose\n :where(code):not(:where([class~=\"not-prose\"] *)):before,\n.milkdown-theme-nord.prose\n :where(code):not(:where([class~=\"not-prose\"] *)):after{content:\"\"}.milkdown-theme-nord.prose .tableWrapper{position:relative;margin-bottom:0.5rem;overflow-x:auto}.milkdown-theme-nord.prose table{font-size:0.875rem;line-height:1.25rem;--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (min-width: 640px){.milkdown-theme-nord.prose table{border-radius:0.5rem}}.milkdown-theme-nord.prose td,\n.milkdown-theme-nord.prose th{padding:0.75rem 1.5rem!important}.milkdown-theme-nord.prose tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.dark .milkdown-theme-nord.prose tr{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.milkdown-theme-nord.prose :where(td, th) p{margin:0!important}.milkdown-theme-nord.prose :where(td, th):nth-child(odd){background-color:var(--color-fill-bg-base-1)}.dark .milkdown-theme-nord.prose :where(td, th):nth-child(odd){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.milkdown-theme-nord.prose.ProseMirror .selectedCell:after{background-color:#88c0d04d}.milkdown-theme-nord.prose br[data-is-inline=\"true\"],\n.milkdown-theme-nord.prose br[data-is-inline=\"true\"]:after{content:\" \"}.prose{color:var(--color-normal-text)}.prose :where(p):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=\"lead\"]):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=\"not-prose\"] *)){color:var(--color-info);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600}.prose :where(a strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(ol):not(:where([class~=\"not-prose\"] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=\"A\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-alpha}.prose :where(ol[type=\"a\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-alpha}.prose :where(ol[type=\"A\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-alpha}.prose :where(ol[type=\"a\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-alpha}.prose :where(ol[type=\"I\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-roman}.prose :where(ol[type=\"i\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-roman}.prose :where(ol[type=\"I\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-roman}.prose :where(ol[type=\"i\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-roman}.prose :where(ol[type=\"1\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=\"not-prose\"] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol > li):not(:where([class~=\"not-prose\"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~=\"not-prose\"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=\"not-prose\"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=\"not-prose\"] *)){font-weight:500;font-style:italic;color:var(--color-auxiliary-text);border-left-width:0.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:\"\\\\201C\" \"\\\\201D\" \"\\\\2018\" \"\\\\2019\";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose\n :where(blockquote p:first-of-type):not(\n :where([class~=\"not-prose\"] *)\n )::before{content:open-quote}.prose\n :where(blockquote p:last-of-type):not(:where([class~=\"not-prose\"] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:0.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=\"not-prose\"] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=\"not-prose\"] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:0.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=\"not-prose\"] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;margin-top:1.5em;margin-bottom:0.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=\"not-prose\"] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure > *):not(:where([class~=\"not-prose\"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-captions);font-size:0.875em;line-height:1.4285714;margin-top:0.8571429em}.prose :where(code):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-code);font-weight:600;font-size:0.875em}.prose :where(code):not(:where([class~=\"not-prose\"] *))::before{content:\"\\`\"}.prose :where(code):not(:where([class~=\"not-prose\"] *))::after{content:\"\\`\"}.prose :where(a code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(h1 code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(h2 code):not(:where([class~=\"not-prose\"] *)){color:inherit;font-size:0.875em}.prose :where(h3 code):not(:where([class~=\"not-prose\"] *)){color:inherit;font-size:0.9em}.prose :where(h4 code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(thead th code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(pre):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:0.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:0.375rem;padding-top:0.8571429em;padding-right:1.1428571em;padding-bottom:0.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~=\"not-prose\"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=\"not-prose\"] *))::before{content:none}.prose :where(pre code):not(:where([class~=\"not-prose\"] *))::after{content:none}.prose :where(table):not(:where([class~=\"not-prose\"] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:0.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=\"not-prose\"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;vertical-align:bottom;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose :where(tbody tr):not(:where([class~=\"not-prose\"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=\"not-prose\"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=\"not-prose\"] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=\"not-prose\"] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=\"not-prose\"] *)){vertical-align:top}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0/50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=\"not-prose\"] *)){margin-top:0.5em;margin-bottom:0.5em}.prose :where(ol > li):not(:where([class~=\"not-prose\"] *)){padding-left:0.375em}.prose :where(ul > li):not(:where([class~=\"not-prose\"] *)){padding-left:0.375em}.prose :where(.prose > ul > li p):not(:where([class~=\"not-prose\"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose\n :where(.prose > ul > li > *:first-child):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em}.prose\n :where(.prose > ul > li > *:last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:1.25em}.prose\n :where(.prose > ol > li > *:first-child):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em}.prose\n :where(.prose > ol > li > *:last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:1.25em}.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\"not-prose\"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose :where(hr + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=\"not-prose\"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=\"not-prose\"] *)){padding-right:0}.prose :where(tbody td, tfoot td):not(:where([class~=\"not-prose\"] *)){padding-top:0.5714286em;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose\n :where(tbody td:first-child, tfoot td:first-child):not(\n :where([class~=\"not-prose\"] *)\n ){padding-left:0}.prose\n :where(tbody td:last-child, tfoot td:last-child):not(\n :where([class~=\"not-prose\"] *)\n ){padding-right:0}.prose :where(.prose > :first-child):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(.prose > :last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.isolate{isolation:isolate}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\\\\!table{display:table!important}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.flex-shrink{flex-shrink:1}.shrink{flex-shrink:1}.flex-grow{flex-grow:1}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.\\\\!transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.break-all{word-break:break-all}.rounded{border-radius:0.25rem}.border{border-width:1px}.text-justify{text-align:justify}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.lining-nums{--tw-numeric-figure:lining-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.ease-in{transition-timing-function:cubic-bezier(0.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,0.2,1)}.milkdown{border-radius:0.25rem;margin:0;padding:0}.editor{margin-left:auto;margin-right:auto}:is(.dark .dark\\\\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}code[class*=\"language-\"],\npre[class*=\"language-\"]{color:#f8f8f2;background:none;font-family:\"Fira Code\",Consolas,Monaco,\"Andale Mono\",\"Ubuntu Mono\",monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=\"language-\"]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:0.3em}:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"]{background:#2e3440}:not(pre) > code[class*=\"language-\"]{padding:0.1em;border-radius:0.3em;white-space:normal}.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:0.7}.token.property,\n.token.tag,\n.token.constant,\n.token.symbol,\n.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted{color:#a3be8c}.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable{color:#81a1c1}.token.atrule,\n.token.attr-value,\n.token.function,\n.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,\n.token.important{color:#ebcb8b}.token.important,\n.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.quick-answer-wrapper{margin-top:20px;border-radius:6px;border:1px solid var(--color-border-divider-line);padding:16px 24px}.quick-answer-wrapper .tip{font-size:18px;margin-bottom:30px}.quick-answer-wrapper .quick-answer-list{display:grid;grid-gap:24px 16px;gap:24px 16px;border-radius:3px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item{position:relative;padding:16px;border-radius:6px;cursor:pointer;display:flex;padding:10px 20px;gap:12px;width:auto;box-sizing:border-box}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item:hover{box-shadow:var(--quick-answer-card-item-hover)}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .left .icon{font-size:20px;color:#fff;padding:8px;border-radius:6px;margin-top:4px}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content{flex:1;min-width:0}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .title{font-size:16px;font-weight:bold;color:var(--color-normal-text);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .description{color:var(--color-auxiliary-text);font-size:12px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.quick-answer-wrapper .show-more-wrapper{text-align:center;margin-top:20px}.quick-answer-wrapper .show-more-wrapper .show-more-btn{line-height:24px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after,\n .quick-answer-wrapper .show-more-wrapper .show-more-btn::before{content:\"- - - - -\";color:var(--color-text-divider-line);position:absolute}.quick-answer-wrapper .show-more-wrapper .show-more-btn::before{margin-left:-60px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after{margin-left:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../assets/loading.gif\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.message-list-loading-wrapper{width:140px;height:140px;background-repeat:no-repeat;margin:auto;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.chart-item-loading-wrapper{display:flex;padding:10px;font-size:40px;align-items:center;justify-content:center;color:#d2d3d4;border-radius:6px}.chart-item-loading-wrapper .load{display:inline-block;position:relative;width:64px;height:64px}.chart-item-loading-wrapper .load div{position:absolute;top:27px;width:11px;height:11px;border-radius:50%;background:#aaa8a8;animation-timing-function:cubic-bezier(0,1,1,0)}.chart-item-loading-wrapper .load div:nth-child(1){left:6px;animation:load1 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(2){left:6px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(3){left:26px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(4){left:45px;animation:load3 0.6s infinite}@keyframes load1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes load2{0%{transform:translate(0,0)}100%{transform:translate(19px,0)}}@keyframes load3{0%{transform:scale(1)}100%{transform:scale(0)}}.common-loading-wrapper{text-align:center;font-size:30px;color:#ddd}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./assets/user.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./assets/robot.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;height:100%}:host([hidden]){display:none}@media only screen and (min-width: 1920px){.chat-view-container .chat-view-content .chat-view .message-list{width:1556px}.chat-view-container .chat-view-content .search-input-box{width:1556px}}@media only screen and (min-width: 1440px) and (max-width: 1920px){.chat-view-container .chat-view-content .chat-view .message-list{width:1156px}.chat-view-container .chat-view-content .search-input-box{width:1156px}}@media only screen and (min-width: 804px) and (max-width: 1440px){.chat-view-container .chat-view-content .chat-view .message-list{width:804px}.chat-view-container .chat-view-content .search-input-box{width:804px}}@media only screen and (max-width: 804px){.chat-view-container .chat-view-content .chat-view .message-list{width:100%}.chat-view-container .chat-view-content .search-input-box{width:100%}}.chat-view-container{display:flex;flex-direction:row;width:100%;height:100%}.chat-view-selector{width:200px;padding:14px;border-right:1px solid var(--color-border-divider-line)}.chat-view-content{flex:1;display:flex;flex-direction:column;width:100%;gap:8px}.chat-view-content .chat-view-toolbar{background:#e0e4e5;padding:18px;display:flex;justify-content:space-between;align-items:center}.chat-view-content .chat-view-toolbar .username{color:#333333;font-weight:500;line-height:22px;font-size:16px}.chat-view-content .chat-view-toolbar .toolbar eo-icon{cursor:pointer}.chat-view-content .chat-view{max-width:100%;position:relative;display:flex;flex:1;flex-direction:column;box-sizing:border-box;overflow-y:auto}.session-list-wrapper{display:flex;flex-direction:column;height:100%}.session-list-wrapper .session-title{font-size:16px;color:var(--color-header-text);margin-bottom:16px}.session-list-wrapper .session-list{overflow-y:auto}.session-list-wrapper .session-list .session-item{display:flex;justify-content:space-between;cursor:pointer;border-radius:var(--small-border-radius);background-color:var(--third-menu-default-bg);padding:6px 16px;color:var(--color-header-text);margin-top:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-list-wrapper .session-list .session-item .content{width:0;flex:1}.session-list-wrapper .session-list .session-item .content .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-list-wrapper .session-list .session-item:hover .session-close-btn eo-icon{display:block}.session-list-wrapper .session-list .session-item:first-child{margin-top:0px}.session-list-wrapper .session-list .session-item.active{background-color:var(--third-menu-item-selected-bg);color:var(--color-brand)}.session-list-wrapper .session-list .session-item:hover,\n .session-list-wrapper .session-list .session-item.active:hover{color:var(--color-header-text);background-color:var(--third-menu-item-hover-bg)}.session-list-wrapper .session-list .session-item .session-close-btn{display:flex;align-items:center;cursor:pointer;font-size:12px}.session-list-wrapper .session-list .session-item .session-close-btn:hover{color:var(--color-error)}.session-list-wrapper .session-list .session-item .session-close-btn eo-icon{display:none}.message-list{display:flex;flex-direction:column;padding-bottom:30px;padding:12px;flex:1;margin:0 auto;max-width:100%;box-sizing:border-box}.message-list .message-list-box{display:flex;flex-direction:column;position:relative;gap:36px}.message-list .message-list-box .message-item{display:flex;gap:8px;padding-right:40px}.message-list .message-list-box .message-item.user{flex-direction:row-reverse;padding:0;padding-left:40px}.message-list .message-list-box .message-item.user .message-box{margin-bottom:0;overflow:hidden}.message-list .message-list-box .message-item.user .message-box .message-top{flex-direction:row-reverse}.message-list .message-list-box .message-item.user .message-box .message-content{justify-content:end}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper{display:flex;flex-direction:row-reverse}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper .content{background-color:#606f7c;color:#fff}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper:hover .content-tip{display:block}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper .content-tip{display:none}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper .content-tip eo-icon{padding:4px;color:#606f7c;cursor:pointer}.message-list .message-list-box .message-item .avatar{width:36px;height:36px;margin-top:32px;border-radius:50%;font-size:20px;display:flex;align-items:center;justify-content:center}.message-list .message-list-box .message-item .avatar.user{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.message-list .message-list-box .message-item .avatar.robot{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.message-list .message-list-box .message-item .message-box{position:relative;flex:1;overflow:hidden}.message-list .message-list-box .message-item .message-box .message-content{display:flex;justify-content:start;position:relative}.message-list .message-list-box .message-item .message-box .message-content .wrapper{position:relative;overflow:hidden}.message-list .message-list-box .message-item .message-box .message-content .wrapper .content{position:relative;padding:14px;border-radius:6px;overflow:hidden;background:var(--message-box-bg)}.message-list .message-list-box .message-item .message-box .message-content .wrapper .content .text-item{white-space:pre-wrap}.message-list .message-list-box .message-item .message-box .message-content .wrapper .toolbar{display:flex;gap:12px;justify-content:end;margin-top:4px}.message-list .message-list-box .message-item .message-box .message-content .wrapper .toolbar eo-icon{cursor:pointer;color:#606f7c}.message-list .message-list-box .message-item .message-box .message-content .wrapper .toolbar eo-icon.active{color:var(--color-brand)}.message-list .message-list-box .message-item .message-box .message-content .wrapper .toolbar .split{width:1px;height:16px;background-color:#d9d9d9;margin-bottom:1px}.message-list .message-list-box .message-item .message-box .message-top{display:flex;margin-bottom:4px;color:#bec8ce;gap:8px}.message-list .message-list-box .message-item .message-box .message-top .time{min-height:22px}.message-list .message-list-box .stop-responding-wrapper{position:absolute;left:44px;bottom:-28px}.search-input-box{display:flex;flex-direction:column;height:75px;padding:12px;position:relative;margin:0 auto;max-width:100%;box-sizing:border-box}.search-input-box .mentions-list-wrapper{position:absolute;bottom:100%;left:12px;right:12px}.search-input-box .mentions-list-wrapper .content{background-color:var(--antd-input-bg);border-radius:6px;border:1px solid var(--palette-gray-4);padding:8px}.search-input-box .mentions-list-wrapper .content .mentions-title{font-size:14px;font-weight:bold;color:var(--color-strong-text);padding-bottom:8px}.search-input-box .mentions-list-wrapper .content .mentions-list{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item{display:flex;flex-direction:row;align-items:center;gap:12px;padding:8px;border-radius:6px;cursor:pointer}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item .icon{font-size:18px;padding:8px;border-radius:50%}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item .name{color:var(--color-normal-text)}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item .description{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--color-disabled-text)}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item:hover,\n .search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item.active{background:var(--palette-gray-3)}.search-input-box.fill-content{border-top:1px solid rgba(197,197,197,0.5)}.search-input-box .input-box{position:absolute;bottom:20px;left:12px;right:12px;display:inline-flex;padding:var(--input-affix-wrapper-padding);border-radius:var(--small-border-radius);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;color:var(--text-color-default);background-color:var(--antd-input-bg);border:1px solid var(--color-border-divider-line);transition:border-color 0.3s;overflow:visible}.search-input-box .input-box.active{border-color:var(--antd-input-focus-border-color)}.search-input-box .input-box.disabled{pointer-events:none;background:var(--input-outline-disabled);cursor:not-allowed}.search-input-box .input-box.expand textarea{padding-right:50px;margin-bottom:50px}.search-input-box .input-box textarea{width:100%;height:22px;font-size:18px;resize:none;padding:10px 50px 10px 10px;outline:none;border:none;line-height:20px;color:var(--color-normal-text);background-color:transparent;cursor:inherit;transition:all 300ms ease-out}.search-input-box .input-box textarea::placeholder{color:#b0b1b8}.search-input-box .input-box .suffix-icon{display:flex;align-items:center;gap:8px;position:absolute;right:12px;bottom:6px}.search-input-box .input-box .suffix-icon eo-tooltip{display:flex}.search-input-box .input-box .suffix-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .suffix-icon eo-icon:not(.disabled):hover{background:var(--search-input-icon-hover)}.search-input-box .input-box .suffix-icon .submit-split{width:1px;height:20px;background:#d1d1d1}.search-input-box .input-box .suffix-icon .submit-btn.active{color:var(--color-brand)}.search-input-box .input-box .suffix-icon .submit-btn.disabled{color:var(--color-disabled-text);cursor:not-allowed}.search-input-box .input-box .toolbar-icon{position:absolute;top:12px;right:14px}.search-input-box .input-box .toolbar-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .toolbar-icon eo-icon:hover{background:var(--search-input-icon-hover)}.search-input-box .search-input-toolbar{display:flex;justify-content:end;position:absolute;right:12px;bottom:0px}.search-input-box .search-input-toolbar .input-tip{font-size:12px;color:var(--color-secondary-text)}.message-start-tip,\n.session-end-tip{color:var(--color-disabled-text);font-size:12px;text-align:center;margin-top:12px;position:relative}.message-start-tip::after,\n .session-end-tip::after,\n .message-start-tip::before,\n .session-end-tip::before{content:\"- - -\";color:var(--color-disabled-text);position:absolute}.message-start-tip::before, .session-end-tip::before{margin-left:-35px}.message-start-tip::after, .session-end-tip::after{margin-left:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n"],"names":["ChatViewContext","createContext","useChatViewContext","useContext","WrappedIcon","wrapBrick","MessageListLoading","React","className","ChatItemLoading","CommonLoading","icon","lib","spinning","Avatar","_ref","role","agentId","isUser","useMemo","quickAnswerConfig","agentList","_quickAnswerConfig$li","list","matchAgent","find","item","id","_extends","style","color","concat","background","WrappedLink","GuideItem","text","prompts","map","index","key","ProgressText","renderText","replace","MsgItemContext","TableComponent","lazy","ChartComponent","CustomComponent","_ref4","language","chatting","data","parseData","isError","isLoading","cahceTextRef","useRef","isFetching","setIsFetching","useState","isEnd","setIsEnd","setIsError","setIsLoading","setParseData","setData","requestPromise","useCallback","_ref2","_asyncToGenerator","InstanceApi_postSearchV3","objectId","_objectSpread","page","page_size","http","request","getBasePath","method","body","_x","apply","arguments","fetchData","_ref3","response","_unused","_x2","useEffect","current","JSON","parse","_unused2","match","useFetchData","component","params","copyIcon","theme","CodeBlock","setLanguage","contentRef","node","useNodeViewContext","messageApi","contextHolder","message","useMessage","handleCopy","_node$content$firstCh","content","firstChild","navigator","clipboard","writeText","success","err","console","error","defaultContent","spellCheck","ref","position","Tooltip","title","arrow","onClick","cursor","renderContent","_node$firstChild","_node$firstChild2","textContent","attrs","MarkdownItem","MilkdownProvider","ProsemirrorAdapterProvider","MarkdownDisplay","value","nodeViewFactory","useNodeViewFactory","get","useEditor","root","Editor","make","config","ctx","set","rootCtx","update","editorViewOptionsCtx","prev","editable","handleClickOn","view","pos","handleClick","url","found","state","tr","doc","nodeAt","marks","length","path","mark","m","type","name","href","startsWith","encodeURIComponent","window","open","defaultValueCtx","MutationObserver","Array","from","querySelectorAll","forEach","link","onclick","observe","childList","subtree","nord","use","prism","gfm","commonmark","$view","codeBlockSchema","_get","undefined","action","replaceAll","Milkdown","TableItem","TextItem","WrapperIcon","WrappedToolTip","copyToClipboard","unwrapProvider","showNotification","Toolbar","taskId","tag","isAssistant","isChattingItem","showLike","readonly","handleIsLike","handleLikeOrIsLike","islike","result","hoist","classNames","active","isLike","then","catch","Time","time","moment","format","ContentTip","setSearchStr","NOT_AGENT_MATCH","MessageNode","props","created","getContentNode","examplePrompts","messageNode","Provider","CARD_ITEM_HEIGHT","HEIGHT_GAP","QuickAnswerCardItem","description","starterPrompts","iconColor","_icon$color","height","handleCardClick","category","QuickAnswerList","_quickAnswerConfig$ti","msgList","loading","showMoreBtn","setShowMoreBtn","listRef","hadClickShowMoreBtn","element","observer","ResizeObserver","entries","entry","contentRect","disconnect","tip","maxHeight","overflow","instanceId","handleShowMoreClick","StopBtn","stopChat","handleStopChat","DEFAULT_OFFSET_HEIGHT","CACHE_HEIGHT","MessageList","showAvatar","chatViewRef","messgetListBoxRef","preHeight","setPreHeight","isCustomScroll","msgLoading","msgEnd","activeSessionId","checkSession","getMsgItemNode","user","msgListNode","handleScroll","messageList","scrollHeight","clientHeight","scrollTop","isBottom","debounceHandleScroll","debounce","newHeight","scroll","top","Number","MAX_SAFE_INTEGER","Math","max","onScroll","hiddenTextarea","HIDDEN_TEXTAREA_STYLE","SIZING_STYLE","PREFIX_WORD","SearchInput","setValue","setActive","expand","setExpand","autoSizeStyle","setAutoSizeStyle","isFillContent","setIsFillContent","mentionOpen","setMentionOpen","matchPrefixIndex","setMatchPrefixIndex","matchAgentList","setMatchMentionList","matchMentionsIndex","setMatchMentionsIndex","mentionsRef","searchInputBoxRef","textareaRef","hadExpanded","inputEndRef","searchStr","createSession","handleChat","setAgent","hadValue","defaultSize","disabled","matchPrefixInfo","textareaElement","currentFocusIndex","selectionStart","matchWord","i","test","start","end","word","handleAgentItemSelect","valueList","split","trimName","focusIndex","splice","join","setTimeout","selectionEnd","focus","isShowMentions","mentions","slice","computedAutoSize","size","textareaStyles","uiTextNode","minRows","maxRows","document","createElement","setAttribute","appendChild","uiTextNodeStyle","getComputedStyle","sizingStyle","getPropertyValue","placeholder","minHeight","singleRowHeight","min","overflowY","resize","calculateAutoSizeStyle","handleChange","e","target","handleExpand","matchFirstAgent","regex","exec","agent","handleSubmit","blur","handleKeyDown","shiftKey","preventDefault","handleKeyUp","selectionIndex","prefixWord","lastIndexOf","indexOf","_textareaRef$current","trim","searchInputBox","width","currentWidth","getBoundingClientRect","_textareaRef$current2","filterList","filter","includes","querySelector","scrollIntoView","block","handleDocumentClick","mentionsElemnt","contains","composedPath","addEventListener","removeEventListener","paddingRight","onFocus","onBlur","onChange","onKeyDown","onKeyUpCapture","onCompositionStart","handleCompositionStart","onCompositionEnd","handleCompositionEnd","hanldeCreateSession","showDialog","SESSION_ITEM_HEIGHT","BUFFER_NUMBER","SessionList","sessionEnd","sessionLoading","sessionList","querySessionHistory","sessionWrapperRef","sessionListRef","limit","sessionWrapper","floor","checkSessionList","SessionItem","conversationId","deleteSession","handleCheckSession","handleDeleteSession","stopPropagation","expect","_debug","WeakMap","_ctrl","_agentId","_enterInterval","_charting","_isStartEmitEvent","_emitTimer","_messageQueue","_subscribers","_conversationId","_sessionNextToken","_cacheLimit","_messageNextToken","_ChatService_brand","WeakSet","ChatService","constructor","enterInterval","debug","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_classPrivateFieldSet","this","enqueue","_classPrivateFieldGet","push","_assertClassBrand","_startEmitEvent","call","dequeue","shift","getMessageQueue","subscribe","topic","callback","unsubscribe","cb","notifySubscribers","setChatItemIsLike","flag","code","stringify","setAgentId","setConversationId","getSessionHistory","_this","_classPrivateFieldGet2","conversations","next_token","getChatHistory","_this2","_unused3","conversationIds","_unused4","splitWord","str","Intl","iterator","Segmenter","granularity","segment","Symbol","nextWord","next","done","customSplit","cache","matchStr","substring","chat","_this3","AbortController","hadMatchMessage","fetchEventSource","signal","input","stream","headers","onopen","ok","log","onmessage","msg","_unused5","delta","abort","onclose","onerror","stop","_classPrivateFieldGet3","clearInterval","_clear","setInterval","messageItem","NEW_SESSION_ID","useChatViewInfo","sessionId","setSessionEnd","setSessionLoading","setActiveSessionId","setLoading","setChatting","setSessionList","setMsgLoading","setMsgEnd","setMsgList","chatingText","chatingMessageItem","chatService","defaultNewSessionItem","preList","newList","unshift","output","inputTime","computedList","ids","filterIds","deleteActiveSession","hasNewOne","_x3","_ref5","_x4","_ref6","_x5","_x6","handleSessionEnd","listener","msgItem","pop","reset","finishListener","fetchEndListener","stopListener","stopMessageItem","___CSS_LOADER_EXPORT___","module","toString","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_REPLACEMENT_1___","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_next_bricks_ai=self.webpackChunk_next_bricks_ai||[]).push([[1843],{4579:(e,a,r)=>{r.d(a,{H:()=>g,K6:()=>n,Me:()=>c,Ob:()=>d,YL:()=>i,_:()=>t,g8:()=>h,n6:()=>s,oS:()=>b,wE:()=>o});var f=r(1071);function t(e,a,r){return{r:255*(0,f.Cg)(e,255),g:255*(0,f.Cg)(a,255),b:255*(0,f.Cg)(r,255)}}function n(e,a,r){e=(0,f.Cg)(e,255),a=(0,f.Cg)(a,255),r=(0,f.Cg)(r,255);var t=Math.max(e,a,r),n=Math.min(e,a,r),l=0,i=0,o=(t+n)/2;if(t===n)i=0,l=0;else{var c=t-n;switch(i=o>.5?c/(2-t-n):c/(t+n),t){case e:l=(a-r)/c+(a<r?6:0);break;case a:l=(r-e)/c+2;break;case r:l=(e-a)/c+4}l/=6}return{h:l,s:i,l:o}}function l(e,a,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*r*(a-e):r<.5?a:r<2/3?e+(a-e)*(2/3-r)*6:e}function i(e,a,r){var t,n,i;if(e=(0,f.Cg)(e,360),a=(0,f.Cg)(a,100),r=(0,f.Cg)(r,100),0===a)n=r,i=r,t=r;else{var o=r<.5?r*(1+a):r+a-r*a,c=2*r-o;t=l(c,o,e+1/3),n=l(c,o,e),i=l(c,o,e-1/3)}return{r:255*t,g:255*n,b:255*i}}function o(e,a,r){e=(0,f.Cg)(e,255),a=(0,f.Cg)(a,255),r=(0,f.Cg)(r,255);var t=Math.max(e,a,r),n=Math.min(e,a,r),l=0,i=t,o=t-n,c=0===t?0:o/t;if(t===n)l=0;else{switch(t){case e:l=(a-r)/o+(a<r?6:0);break;case a:l=(r-e)/o+2;break;case r:l=(e-a)/o+4}l/=6}return{h:l,s:c,v:i}}function c(e,a,r){e=6*(0,f.Cg)(e,360),a=(0,f.Cg)(a,100),r=(0,f.Cg)(r,100);var t=Math.floor(e),n=e-t,l=r*(1-a),i=r*(1-n*a),o=r*(1-(1-n)*a),c=t%6;return{r:255*[r,i,l,l,o,r][c],g:255*[o,r,r,i,l,l][c],b:255*[l,l,o,r,r,i][c]}}function d(e,a,r,t){var n=[(0,f.wl)(Math.round(e).toString(16)),(0,f.wl)(Math.round(a).toString(16)),(0,f.wl)(Math.round(r).toString(16))];return t&&n[0].startsWith(n[0].charAt(1))&&n[1].startsWith(n[1].charAt(1))&&n[2].startsWith(n[2].charAt(1))?n[0].charAt(0)+n[1].charAt(0)+n[2].charAt(0):n.join("")}function g(e,a,r,t,n){var l,i=[(0,f.wl)(Math.round(e).toString(16)),(0,f.wl)(Math.round(a).toString(16)),(0,f.wl)(Math.round(r).toString(16)),(0,f.wl)((l=t,Math.round(255*parseFloat(l)).toString(16)))];return n&&i[0].startsWith(i[0].charAt(1))&&i[1].startsWith(i[1].charAt(1))&&i[2].startsWith(i[2].charAt(1))&&i[3].startsWith(i[3].charAt(1))?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0)+i[3].charAt(0):i.join("")}function s(e){return h(e)/255}function h(e){return parseInt(e,16)}function b(e){return{r:e>>16,g:(65280&e)>>8,b:255&e}}},2887:(e,a,r)=>{r.d(a,{D:()=>f});var f={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},4501:(e,a,r)=>{r.d(a,{RO:()=>l});var f=r(4579),t=r(2887),n=r(1071);function l(e){var a={r:0,g:0,b:0},r=1,l=null,i=null,o=null,c=!1,s=!1;return"string"==typeof e&&(e=function(e){if(0===(e=e.trim().toLowerCase()).length)return!1;var a=!1;if(t.D[e])e=t.D[e],a=!0;else if("transparent"===e)return{r:0,g:0,b:0,a:0,format:"name"};var r=d.rgb.exec(e);return r?{r:r[1],g:r[2],b:r[3]}:(r=d.rgba.exec(e))?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=d.hsl.exec(e))?{h:r[1],s:r[2],l:r[3]}:(r=d.hsla.exec(e))?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=d.hsv.exec(e))?{h:r[1],s:r[2],v:r[3]}:(r=d.hsva.exec(e))?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=d.hex8.exec(e))?{r:(0,f.g8)(r[1]),g:(0,f.g8)(r[2]),b:(0,f.g8)(r[3]),a:(0,f.n6)(r[4]),format:a?"name":"hex8"}:(r=d.hex6.exec(e))?{r:(0,f.g8)(r[1]),g:(0,f.g8)(r[2]),b:(0,f.g8)(r[3]),format:a?"name":"hex"}:(r=d.hex4.exec(e))?{r:(0,f.g8)(r[1]+r[1]),g:(0,f.g8)(r[2]+r[2]),b:(0,f.g8)(r[3]+r[3]),a:(0,f.n6)(r[4]+r[4]),format:a?"name":"hex8"}:!!(r=d.hex3.exec(e))&&{r:(0,f.g8)(r[1]+r[1]),g:(0,f.g8)(r[2]+r[2]),b:(0,f.g8)(r[3]+r[3]),format:a?"name":"hex"}}(e)),"object"==typeof e&&(g(e.r)&&g(e.g)&&g(e.b)?(a=(0,f._)(e.r,e.g,e.b),c=!0,s="%"===String(e.r).substr(-1)?"prgb":"rgb"):g(e.h)&&g(e.s)&&g(e.v)?(l=(0,n.Px)(e.s),i=(0,n.Px)(e.v),a=(0,f.Me)(e.h,l,i),c=!0,s="hsv"):g(e.h)&&g(e.s)&&g(e.l)&&(l=(0,n.Px)(e.s),o=(0,n.Px)(e.l),a=(0,f.YL)(e.h,l,o),c=!0,s="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(r=e.a)),r=(0,n.TV)(r),{ok:c,format:e.format||s,r:Math.min(255,Math.max(a.r,0)),g:Math.min(255,Math.max(a.g,0)),b:Math.min(255,Math.max(a.b,0)),a:r}}var i="(?:".concat("[-\\+]?\\d*\\.\\d+%?",")|(?:").concat("[-\\+]?\\d+%?",")"),o="[\\s|\\(]+(".concat(i,")[,|\\s]+(").concat(i,")[,|\\s]+(").concat(i,")\\s*\\)?"),c="[\\s|\\(]+(".concat(i,")[,|\\s]+(").concat(i,")[,|\\s]+(").concat(i,")[,|\\s]+(").concat(i,")\\s*\\)?"),d={CSS_UNIT:new RegExp(i),rgb:new RegExp("rgb"+o),rgba:new RegExp("rgba"+c),hsl:new RegExp("hsl"+o),hsla:new RegExp("hsla"+c),hsv:new RegExp("hsv"+o),hsva:new RegExp("hsva"+c),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function g(e){return Boolean(d.CSS_UNIT.exec(String(e)))}},1071:(e,a,r)=>{function f(e,a){(function(e){return"string"==typeof e&&-1!==e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var r=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=360===a?e:Math.min(a,Math.max(0,parseFloat(e))),r&&(e=parseInt(String(e*a),10)/100),Math.abs(e-a)<1e-6?1:e=360===a?(e<0?e%a+a:e%a)/parseFloat(String(a)):e%a/parseFloat(String(a))}function t(e){return Math.min(1,Math.max(0,e))}function n(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function l(e){return e<=1?"".concat(100*Number(e),"%"):e}function i(e){return 1===e.length?"0"+e:String(e)}r.d(a,{Cg:()=>f,J$:()=>t,Px:()=>l,TV:()=>n,wl:()=>i})},4223:(e,a,r)=>{function f(e,a){if(null==e)return{};var r,f,t=function(e,a){if(null==e)return{};var r,f,t={},n=Object.keys(e);for(f=0;f<n.length;f++)r=n[f],a.indexOf(r)>=0||(t[r]=e[r]);return t}(e,a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(f=0;f<n.length;f++)r=n[f],a.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(t[r]=e[r])}return t}r.d(a,{A:()=>f})}}]);
|
|
2
|
+
//# sourceMappingURL=1843.1fd3b188.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/1843.1fd3b188.js","mappings":"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","sources":["webpack:///../../node_modules/@ctrl/tinycolor/dist/module/conversion.js","webpack:///../../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","webpack:///../../node_modules/@ctrl/tinycolor/dist/module/format-input.js","webpack:///../../node_modules/@ctrl/tinycolor/dist/module/util.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["import { bound01, pad2 } from './util.js';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * <http://www.w3.org/TR/css3-color/>\n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { boundAlpha, convertToPercentage } from './util.js';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// <http://www.w3.org/TR/css3-values/#integers>\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}"],"names":["rgbToRgb","r","g","b","rgbToHsl","max","Math","min","h","s","l","d","hue2rgb","p","q","t","hslToRgb","rgbToHsv","v","hsvToRgb","i","floor","f","mod","rgbToHex","allow3Char","hex","round","toString","startsWith","charAt","join","rgbaToHex","a","allow4Char","parseFloat","convertHexToDecimal","parseIntFromHex","val","parseInt","numberInputToObject","color","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","goldenrod","gold","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavenderblush","lavender","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","inputToRGB","rgb","ok","format","trim","toLowerCase","length","named","match","matchers","exec","rgba","hsl","hsla","hsv","hsva","hex8","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","String","substr","Object","prototype","hasOwnProperty","call","CSS_UNIT","concat","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","RegExp","Boolean","bound01","n","indexOf","isOnePointZero","isPercent","isPercentage","abs","clamp01","boundAlpha","isNaN","convertToPercentage","Number","pad2","c","_objectWithoutProperties","source","excluded","key","target","sourceKeys","keys","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable"],"sourceRoot":""}
|