@bothub-chat/ui
Version:
Bothub UI Components
2 lines (1 loc) • 22 kB
JavaScript
import{__awaiter as i}from"tslib";import{jsx as o,jsxs as e,Fragment as s}from"react/jsx-runtime";import{useRef as n,useCallback as t,useEffect as r}from"react";import{marked as d}from"marked";import{MessageStyledWrapper as c,MessageStyledWithBottomPanel as p,MessageStyled as m,MessageContent as a,MessageTop as l,MessageSender as x,MessageName as j,MessageAvatarWrapper as g,MessageAvatar as u,MessageBlockWrapper as b,MessageBlock as y,MessageBlockScrollbarWrapper as h,MessageBlockContent as f,MessageBlockBottomPanel as w,MessageBlockTransaction as k,MessageButtonsStyled as M}from"./styled.js";export{MessageAction,MessageBlockTextArea,MessageEditAction,MessageImageBottomArrowButton,MessageImageLeftArrowButton,MessageImageRightArrowButton,MessageImageTopArrowButton,MessageTag,MessageTags,MessageTransaction}from"./styled.js";import{Loader as v}from"../loader/index.js";import{Skeleton as T}from"../skeleton/index.js";import"../../theme/index.js";import{getTgMarkdown as C}from"../../utils/getTgMarkdown.js";import{colorToRgba as S}from"../../utils/colors/colorToRgba.js";import"../../utils/colors/calculateGrayScale.js";import"../../utils/colors/calculateAccentColors.js";import{MessageProvider as I}from"./context.js";export{MessageConsumer,MessageContext,useMessage}from"./context.js";import"styled-components";export{MessageInlineCodeStyled}from"./components/code/inline/styled.js";export{MessageMultilineCodeBody,MessageMultilineCodeHead,MessageMultilineCodeLanguage,MessageMultilineCodeStyled}from"./components/code/multiline/styled.js";import"@react-spring/web";import"react-markdown";import"react-dom";import"../portal/styled.js";import"../tooltip/styled.js";import"../tooltip/arrow/styled.js";import"../tooltip/context.js";import"./components/code/multiline/copy/styled.js";import"../../icons/check-small/index.js";import"../../icons/copy/index.js";import"./components/code/multiline/content/styled.js";import{MessageParagraph as B}from"./components/paragraph/index.js";export{MessageBoldStyled}from"./components/bold/styled.js";export{MessageItalicStyled}from"./components/italic/styled.js";export{MessageStrikeStyled}from"./components/strike/styled.js";export{MessageBlockquoteStyled}from"./components/blockquote/styled.js";export{MessageHrStyled}from"./components/hr/styled.js";export{MessagePre}from"./components/pre/styled.js";export{MessageTableBody,MessageTableContent,MessageTableHead,MessageTableRow,MessageTableStyled}from"./components/table/styled.js";export{MessageTableCellStyled,MessageTableCellText,MessageTableHeadCell}from"./components/table/cell/styled.js";export{MessageListStyled}from"./components/list/styled.js";import"./components/list/context.js";export{MessageListItemStyled}from"./components/list/item/styled.js";export{MessageTitleStyled}from"./components/title/styled.js";export{MessageLinkStyled}from"./components/link/styled.js";export{MessageImageNative,MessageImageSkeleton,MessageImageStyled}from"./components/image/styled.js";export{MessageImageConsumer,MessageImageContext,MessageImageProvider,useMessageImage}from"./components/image/context.js";export{MessageImageGrid}from"./components/image/grid/styled.js";export{MessageImageButtonContent,MessageImageButtonStyled,MessageImageButtonZoneWrapper}from"./components/image/button/styled.js";export{MessageImageButtonsContent,MessageImageButtonsStyled}from"./components/image/button/list/styled.js";import"./components/document-copy/styled.js";export{MessageCiteStyled}from"./components/cite/styled.js";import{MessageMarkdown as L}from"./markdown/index.js";import"../scrollbar/styled.js";import{ScrollbarShadow as $}from"../scrollbar/shadow/index.js";import"../scrollbar/style/styled.js";import{MessageTimestamp as R}from"./timestamp/index.js";import{MessageActions as q}from"./actions/index.js";import{MessageVersions as A}from"./versions/index.js";import"./list/styled.js";import"./scroll-button/styled.js";import"./copy/styled.js";import"./badge-progress/styled.js";export{MessageButton}from"./button/styled.js";import"./button/list/styled.js";export{MessageFileInfo,MessageFileName,MessageFileSize,MessageFileStyled,MessageFiles}from"./file/styled.js";import"../icon/styled.js";import"../../icons/pdf-big/index.js";import"../../icons/txt-big/index.js";import"../../icons/word-big/index.js";import"../../icons/xls-big/index.js";import"../../icons/attach-file-big/index.js";import"./voice/styled.js";import"../../icons/loader-circular-gradient-2/index.js";import"./reasoning-block/styled.js";import"../../icons/analyze-urls/index.js";import"../typography/styled.js";import"./search-results/styled.js";import"../../icons/arrow-down/index.js";import"../../icons/arrow-narrow-left/index.js";import"../../icons/arrow-narrow-right/index.js";import"../../icons/arrow-up/index.js";import"../../icons/bitcoin/index.js";import"../../icons/bot-circle/index.js";import"../../icons/bothub-agg/index.js";import"../../icons/business-colored/index.js";import"../../icons/check-circle/index.js";import"../../icons/close/index.js";import"../../icons/email-circle/index.js";import"../../icons/language/index.js";import"../../icons/lock-circle/index.js";import"../../icons/menu/index.js";import"../../icons/medium-circle/index.js";import"../../icons/tg-circle/index.js";import"../../icons/tg-colored/index.js";import"../../icons/youcassa/index.js";import"../../icons/dashboard/index.js";import"../../icons/user-profile/index.js";import"../../icons/logout/index.js";import"../../icons/habr-2/index.js";import"../../icons/arrow-2-down/index.js";import"../../icons/links/index.js";import"../../icons/free/index.js";import"../../icons/hotness/index.js";import"../../icons/checked/index.js";import"../../icons/ai/index.js";import"../../icons/bookmarks/index.js";import"../../icons/bookmarks-big/index.js";import"../../icons/chat/index.js";import"../../icons/chats/index.js";import"../../icons/coder/index.js";import"../../icons/edit/index.js";import"../../icons/presets-big/index.js";import"../../icons/referal/index.js";import"../../icons/restore/index.js";import"../../icons/tariff/index.js";import"../../icons/trash/index.js";import"../../icons/update/index.js";import"../../icons/menu-dot/index.js";import"../../icons/plus-2/index.js";import"../../icons/plus-1/index.js";import"../../icons/send/index.js";import"../../icons/settings/index.js";import"../../icons/habr/index.js";import"../../icons/stop/index.js";import"../../icons/thumb-up/index.js";import"../../icons/thumb-down/index.js";import"../../icons/star/index.js";import"../../icons/info-big/index.js";import"../../icons/warning-big/index.js";import"../../icons/error-big/index.js";import"../../icons/success-big/index.js";import"../../icons/mj/index.js";import"../../icons/card/index.js";import"../../icons/arrow-narrow-up/index.js";import"../../icons/arrow-narrow-down/index.js";import"../../icons/filters/index.js";import"../../icons/info/index.js";import"../../icons/search-circle/index.js";import"../../icons/save/index.js";import"../../icons/light/index.js";import"../../icons/dark/index.js";import"../../icons/email-colored/index.js";import"../../icons/action-chat/index.js";import"../../icons/attach/index.js";import"../../icons/avatar-add/index.js";import"../../icons/brush/index.js";import"../../icons/calendar/index.js";import"../../icons/claude/index.js";import"../../icons/cookie/index.js";import"../../icons/dalle/index.js";import"../../icons/download-img/index.js";import"../../icons/error/index.js";import"../../icons/expand/index.js";import"../../icons/eye/index.js";import"../../icons/face/index.js";import"../../icons/gear/index.js";import"../../icons/gear-min/index.js";import"../../icons/generation/index.js";import"../../icons/gpt-3_5/index.js";import"../../icons/gpt-4/index.js";import"../../icons/imagine/index.js";import"../../icons/imagine-2/index.js";import"../../icons/loader/index.js";import"../../icons/loader-circular/index.js";import"../../icons/loader-circular-gradient/index.js";import"../../icons/minus/index.js";import"../../icons/mj-white/index.js";import"../../icons/prompt/index.js";import"../../icons/rabbit/index.js";import"../../icons/ratio-1x1/index.js";import"../../icons/ratio-2x3/index.js";import"../../icons/ratio-3x2/index.js";import"../../icons/ratio-4x5/index.js";import"../../icons/ratio-4x7/index.js";import"../../icons/ratio-5x4/index.js";import"../../icons/ratio-7x4/index.js";import"../../icons/ratio-16x9/index.js";import"../../icons/ratio-9x16/index.js";import"../../icons/ratio-21x9/index.js";import"../../icons/ratio-9x21/index.js";import"../../icons/refferal-min/index.js";import"../../icons/search-data/index.js";import"../../icons/square/index.js";import"../../icons/turtle/index.js";import"../../icons/upscale/index.js";import"../../icons/withdraw/index.js";import"../../icons/search-plus/index.js";import"../../icons/lightning/index.js";import"../../icons/blog-circle/index.js";import"../../icons/stripe/index.js";import"../../icons/corporate/index.js";import"../../icons/public/index.js";import"../../icons/private/index.js";import"../../icons/mistral/index.js";import"../../icons/gemini/index.js";import"../../icons/search-simple/index.js";import"../../icons/sad-robot/index.js";import"../../icons/model/index.js";import"../../icons/phone-colored/index.js";import"../../icons/questions/index.js";import"../../icons/pdf/index.js";import"../../icons/xls/index.js";import"../../icons/word/index.js";import"../../icons/txt/index.js";import"../../icons/bothub-logo-gradient/index.js";import"../../icons/telegram-logo-gradient/index.js";import"../../icons/decline-circle/index.js";import"../../icons/simple-gear-bg/index.js";import"../../icons/advanced-filter/index.js";import"../../icons/big-corporate/index.js";import"../../icons/big-mj/index.js";import"../../icons/big-models/index.js";import"../../icons/big-stats/index.js";import"../../icons/big-success/index.js";import"../../icons/big-users/index.js";import"../../icons/optional-presets/index.js";import"../../icons/wallet-withdraw/index.js";import"../../icons/big-presets/index.js";import"../../icons/big-favorite/index.js";import"../../icons/big-referal/index.js";import"../../icons/attach-file/index.js";import"../../icons/voice/index.js";import"../../icons/play-button/index.js";import"../../icons/pause-button/index.js";import"../../icons/text-read/index.js";import"../../icons/text-hide/index.js";import"../../icons/best-chat-bots/index.js";import"../../icons/upload/index.js";import"../../icons/enter/index.js";import"../../icons/discord/index.js";import"../../icons/discord-circle/index.js";import"../../icons/black-forest-labs/index.js";import"../../icons/flux/index.js";import"../../icons/stable-diffusion/index.js";import"../../icons/stability-ai/index.js";import"../../icons/article-generator/index.js";import"../../icons/success/index.js";import"../../icons/google/index.js";import"../../icons/yandex/index.js";import"../../icons/vk/index.js";import"../../icons/resend/index.js";import"../../icons/big-article/index.js";import"../../icons/add-chat/index.js";import"../../icons/add-group/index.js";import"../../icons/drag-dot/index.js";import"../../icons/add-folder/index.js";import"../../icons/temp-chat/index.js";import"../../icons/delete-chat/index.js";import"../../icons/sidebar-chat/index.js";import"../../icons/organization/index.js";import"../../icons/simple-gear/index.js";import"../../icons/text-bold/index.js";import"../../icons/text-italic/index.js";import"../../icons/text-underline/index.js";import"../../icons/text-strikethrough/index.js";import"../../icons/refresh/index.js";import"../../icons/copy-variants/index.js";import"../../icons/sort-ascending/index.js";import"../../icons/sort-descending/index.js";import"../../icons/quote/index.js";import"../../icons/url-circle/index.js";import"../../icons/show-ui/index.js";import"../../icons/hide-ui/index.js";import"../../icons/sort-user/index.js";import"../../icons/happy-robot/index.js";import"../../icons/happy-robot-gradient/index.js";import"../../icons/min-window/index.js";import"../../icons/max-window/index.js";import"../../icons/manage-chat/index.js";import"../../icons/web-search/index.js";import"../../icons/include-context/index.js";import"../../icons/queue/index.js";import"../../icons/sort-alphabet-ascending/index.js";import"../../icons/sort-alphabet-descending/index.js";import"../../icons/sort-date-ascending/index.js";import"../../icons/sort-date-descending/index.js";import"../../icons/cot-r1/index.js";import"../../icons/news/index.js";import"../../icons/volume/index.js";import"../../icons/flag-ru/index.js";import"../../icons/flag-kz/index.js";import"../../icons/print/index.js";import"../../icons/pc-icon-1/index.js";import"../../icons/pc-icon-2/index.js";import"../../icons/pc-icon-3/index.js";import"../../icons/star-unfilled/index.js";import"../../icons/image-generation/index.js";import"../../icons/speech-synthesys/index.js";import"../../icons/transcription/index.js";import"../../icons/text-rewrite/index.js";import"../../icons/code-generation/index.js";import"../../icons/essay-generation/index.js";import"../../icons/spelling/index.js";import"../../icons/text-generation/index.js";import"../../icons/traffic-analisys/index.js";import"../../icons/fav-profile/index.js";import"../../icons/exclamation/index.js";import"../../icons/article/index.js";import"../../icons/setchel/index.js";import"../../icons/assembly/index.js";import"../../icons/data-visualisation/index.js";import"../../icons/document-analisys/index.js";import"../../icons/problem-solvment/index.js";import"../../icons/setting-analisys/index.js";import"../../icons/translation/index.js";import"../../icons/stars/index.js";import"../../icons/academy/index.js";import"../../icons/articles/index.js";import"../../icons/blog-post/index.js";import"../../icons/book/index.js";import"../../icons/bow-tie/index.js";import"../../icons/case-study/index.js";import"../../icons/comments/index.js";import"../../icons/guide/index.js";import"../../icons/marketing/index.js";import"../../icons/post/index.js";import"../../icons/report/index.js";import"../../icons/review/index.js";import"../../icons/scientific-article/index.js";import"../../icons/selling-text/index.js";import"../../icons/textbook/index.js";import"../../icons/wind/index.js";import"../../icons/grok/index.js";import"../../icons/deepseek/index.js";import"../../icons/grid-horizontal/index.js";import"../../icons/grid-vertical/index.js";import"../../icons/star-gradient/index.js";import"../../icons/qwen/index.js";import"../../icons/sidebar-toggle-left/index.js";import"../../icons/sidebar-toggle-right/index.js";import"../../icons/system/index.js";import"../../icons/selector/index.js";import"../../icons/video-camera/index.js";import"../../icons/music-note/index.js";import"../../icons/add-profile/index.js";import"../../icons/token-counter/index.js";import"../../icons/customer-support/index.js";import"../../icons/sort-alphabet-top-bottom/index.js";import"../../icons/sort-alphabet-bottom-top/index.js";import"../../icons/pause/index.js";import"../../icons/play/index.js";import"../../icons/restore-2/index.js";import"../../icons/video-generation/index.js";import"../../icons/veo-model/index.js";import"../../icons/runway/index.js";import"../../icons/queue-select/index.js";import"../../icons/apple/index.js";import"../../icons/mail-colored/index.js";import"../../icons/shield/index.js";import"../../icons/stars-gradient/index.js";import"../../icons/fire/index.js";import"../../icons/brain/index.js";import"../../icons/mj-purple/index.js";import"../../icons/claude-black/index.js";import"../../icons/vk-filled/index.js";import"../../icons/tg/index.js";import"../../icons/gift/index.js";import"../../icons/exchange/index.js";import"../../icons/time/index.js";import"../../icons/folder/index.js";import"../../icons/history/index.js";import"../../icons/money-plus/index.js";import"../../icons/money-stack/index.js";import"../../icons/sort-numeric-bottom/index.js";import"../../icons/sort-numeric-top/index.js";import"../../icons/bulb/index.js";import"../../icons/prompt-queue/index.js";import"../../icons/image/index.js";import"../../icons/text/index.js";import"../../icons/code/index.js";import"../../icons/blue-grok/index.js";import"../../icons/double-image/index.js";import"../../icons/pdf-black/index.js";import"../../icons/csv/index.js";import"../../icons/xls-black/index.js";import"../../icons/word-black/index.js";import"../../icons/brain-black/index.js";import"../../icons/txt-black/index.js";import"../../icons/workspace/index.js";import"../../icons/chat-doc/index.js";import"../../icons/money-spend/index.js";import"../../icons/money-minus/index.js";import"../../icons/max-logo-gradient/index.js";import"../../icons/empty-word/index.js";import"../../icons/music-file/index.js";import"../../icons/sad-file/index.js";import"../../icons/happy-file/index.js";import"../../icons/volume-off/index.js";import"../../icons/github/index.js";import"../../icons/erase/index.js";import"../../icons/arrow-narrow-stars-right/index.js";import"../../icons/literature-list/index.js";import"../../icons/bell-dot/index.js";import"../../icons/bell/index.js";import"../../icons/kwaivgi/index.js";import"../../icons/dollar/index.js";import"./video/styled.js";import"./music/styled.js";import{useTheme as P}from"../../theme/hook.js";const D=({id:D,content:E,className:z,variant:N="user",color:V="default",name:F,tags:H,avatar:O,transaction:U,edited:G=!1,editedText:W,disableModal:Z=!1,disableResend:_=!1,disableEdit:J=!1,disableDelete:K=!1,disableUpdate:Q=!1,disableCopy:X=!1,disableDownload:Y=!0,disableEncryption:ii=!0,hasCacheTokens:oi=!1,editOutOfMenu:ei=!1,copyPlainText:si,copyTgText:ni,editText:ti,resendText:ri,deleteText:di,onReportText:ci,downloadTooltipLabel:pi,updateTooltipLabel:mi,copyTooltipLabel:ai,encryptionTooltipLabel:li,cacheTokenTooltipLabel:xi,typing:ji=!1,timestamp:gi,timestampPosition:ui="right",skeleton:bi=!1,buttons:yi,after:hi,components:fi,children:wi,version:ki,totalVersions:Mi,hideActions:vi,loader:Ti,onCopy:Ci,onCodeCopy:Si,onEdit:Ii,onDelete:Bi,onUpdate:Li,onReport:$i,onNextVersion:Ri,onPrevVersion:qi,onDownload:Ai})=>{const Pi=P(),Di=n(null),Ei=n(null),zi=n(null),Ni=t(()=>i(void 0,void 0,void 0,function*(){const i=(yield d.parse(zi.current)).replace(/<p>([\s\S]*?)<\/p>/g,"<pre>$1</pre>");return[new ClipboardItem({"text/plain":new Blob([zi.current],{type:"text/plain"}),"text/html":new Blob([i],{type:"text/html"})})]}),[]),Vi=t(i=>[new ClipboardItem({"text/plain":new Blob([i.innerText.replace(/\n{3,}/g,"\n\n")],{type:"text/plain"})})],[]),Fi=t(i=>{const o=C(i);return[new ClipboardItem({"text/plain":new Blob([o],{type:"text/plain"})})]},[]),Hi=t(()=>{if(Ei.current)return null==Ci?void 0:Ci(Vi(Ei.current))},[E]),Oi=t(()=>{if(zi.current)return null==Ci?void 0:Ci(Fi(zi.current))},[]),Ui=t(()=>i(void 0,void 0,void 0,function*(){if(zi.current)return null==Ci?void 0:Ci(yield Ni())}),[]);let Gi;switch(V&&"object"==typeof CSS&&"function"==typeof CSS.supports&&CSS.supports("background",null!=V?V:"#000")||(V="default"),N){case"user":switch(V){case"default":if("custom"===Pi.scheme){Gi=Pi.colors.custom.message.user.background;break}if("standard"===Pi.scheme){Gi="dark"===Pi.mode?S(Pi.colors.accent.primaryLight,.5):S(Pi.colors.accent.primaryLight,.2);break}Gi=Pi.colors.accent.primary;break;case"green":Gi=Pi.colors.gpt3;break;case"purple":Gi=Pi.colors.gpt4;break;default:Gi=V}break;case"assistant":switch(V){case"default":Gi="dark"===Pi.mode?Pi.colors.grayScale.gray2:Pi.colors.grayScale.gray3;break;case"green":Gi=Pi.colors.gpt3;break;case"purple":Gi=Pi.colors.gpt4;break;default:Gi=V}}return r(()=>{E&&(zi.current=E)},[E]),o(I,{variant:N,color:V,typing:ji,onCopy:Hi,onCodeCopy:Si,children:o(c,{$variant:N,ref:Di,children:e(p,{children:[o(m,{$variant:N,className:z,"data-date":gi,children:e(a,{$variant:N,children:[F&&e(l,{children:["string"==typeof F&&e(x,{children:[o(j,{$color:V,children:F}),H]}),"string"!=typeof F&&o("div",{})]}),"string"!=typeof F&&F,o(g,{$variant:N,children:o(u,{children:O})}),o(b,{children:o(y,{$variant:N,$hexColor:Gi,$skeleton:bi,$hasTimestamp:!!gi,$timestampPosition:ui,children:e(h,{scrollShadows:{color:Gi,size:60,left:o($,{side:"left"}),right:o($,{side:"right"})},children:[o(f,{ref:Ei,$variant:N,children:e(s,{children:[!bi&&(Ti?o(B,{disableMargin:!0,children:o(v,{})}):e(s,{children:["string"==typeof wi&&o(L,{components:fi,children:wi}),"string"!=typeof wi&&wi]})),bi&&o(B,{disableMargin:!0,children:o(T,{width:260,opacity:["light"===Pi.mode?.1:.15,"light"===Pi.mode?.225:.45],colors:["user"===N?Pi.colors.base.white:"light"===Pi.mode?Pi.default.colors.base.black:Pi.colors.grayScale.gray6]})}),hi]})}),"user"===N&&o(R,{edited:G,editedText:W,time:gi,position:ui,color:Gi})]})})}),gi&&"assistant"===N&&o(R,{time:gi,position:ui,color:Gi}),e(w,{$variant:N,children:[U&&o(k,{children:U}),!bi&&!vi&&o(q,{id:D,onDownload:Ai,disableDownload:Y,message:E,variant:N,skeleton:bi,disableModal:Z,disableResend:_,disableEdit:J,disableDelete:K,disableUpdate:Q,disableCopy:X,disableEncryption:ii,hasCacheTokens:oi,editOutOfMenu:ei,copyPlainText:si,copyTgText:ni,editText:ti,resendText:ri,deleteText:di,onReportText:ci,downloadTooltipLabel:pi,updateTooltipLabel:mi,copyTooltipLabel:ai,encryptionTooltipLabel:li,cacheTokenTooltipLabel:xi,onEdit:Ii,onResend:Li,onDelete:Bi,onUpdate:Li,onReport:$i,onPlainTextCopy:Hi,onTgCopy:Oi,onCopy:Ui}),o(A,{id:D,version:ki,totalVersions:Mi,onNextVersion:Ri,onPrevVersion:qi,variant:N})]})]})}),o(M,{children:yi})]})})})};export{D as Message,u as MessageAvatar,g as MessageAvatarWrapper,y as MessageBlock,w as MessageBlockBottomPanel,f as MessageBlockContent,h as MessageBlockScrollbarWrapper,k as MessageBlockTransaction,b as MessageBlockWrapper,M as MessageButtonsStyled,a as MessageContent,L as MessageMarkdown,j as MessageName,B as MessageParagraph,I as MessageProvider,x as MessageSender,m as MessageStyled,p as MessageStyledWithBottomPanel,c as MessageStyledWrapper,l as MessageTop};