@bothub-chat/ui 2.51.5-develop-a968c70b-4a05-4d81-9b66-5be2547683bf → 2.51.5-develop-128a7131-b055-4ba0-aeb2-c65583137dd8

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.
@@ -30,6 +30,7 @@ export declare const AdaptiveButtonTooltip: import("styled-components").IStyledC
30
30
  align?: import("@/ui/components/tooltip").TooltipAlign | undefined;
31
31
  inverted?: boolean | undefined;
32
32
  label?: import("react").ReactNode;
33
+ contentWidth?: number | undefined;
33
34
  disabled?: boolean | undefined;
34
35
  disableHiddenAnimation?: boolean | undefined;
35
36
  markdown?: boolean | undefined;
@@ -1,29 +1,37 @@
1
1
  import React from 'react';
2
- import { IConfigureOption, IInputMessageFile, IInputMessageVoiceFile } from './types';
3
- import { UseVoiceProps } from './use-voice';
4
- import { UseFilesProps } from './use-files';
5
- import { UseInputProps } from './use-input';
2
+ import { IConfigureOption, IInputMessageFile, IInputMessageVoiceFile, InputMessageErrorEvent } from './types';
6
3
  export type InputMessageChangeEventHandler = (message: string) => unknown;
7
4
  export type InputMessageFilesChangeEventHandler = (files: IInputMessageFile[]) => unknown;
8
5
  export type InputMessageVoiceFilesChangeEventHandler = (files: IInputMessageVoiceFile[]) => unknown;
9
6
  export type InputMessageSendEventHandler = (message: string, files: IInputMessageFile[]) => unknown;
10
7
  export type InputMessageVoiceEventHandler = (blob: Blob) => unknown;
11
- export type InputMessageProps = Omit<React.ComponentProps<'textarea'>, 'value' | 'onChange'> & {
8
+ export interface InputMessageProps extends Omit<React.ComponentProps<'textarea'>, 'value' | 'onChange'> {
12
9
  className?: string;
13
10
  placeholder?: string;
14
11
  message?: string;
15
12
  files?: IInputMessageFile[];
16
13
  hideUploadFile?: boolean;
14
+ uploadFileLimit?: number;
15
+ uploadFileDisabled?: boolean;
16
+ uploadFileAccept?: string;
17
17
  uploadFileText?: string;
18
18
  sendDisabled?: boolean;
19
19
  textAreaDisabled?: boolean;
20
+ altKeyDefaultValue?: boolean;
20
21
  defaultKeySendText?: React.ReactNode;
21
22
  alternativeKeySendText?: React.ReactNode;
22
23
  concatenateText?: React.ReactNode;
24
+ autoFocus?: boolean;
23
25
  voice?: boolean;
24
- actions?: React.ReactNode;
25
- configureOptions?: IConfigureOption[];
26
+ onSetAlternativeKeyValue?: (value: boolean) => unknown;
27
+ onChange?: InputMessageChangeEventHandler;
28
+ onFilesChange?: InputMessageFilesChangeEventHandler;
29
+ onVoiceFilesChange?: InputMessageVoiceFilesChangeEventHandler;
30
+ onTextAreaChange?: React.ChangeEventHandler<HTMLTextAreaElement>;
26
31
  onSend?: InputMessageSendEventHandler;
27
- } & (UseInputProps & UseFilesProps & UseVoiceProps);
32
+ emitError?(event: InputMessageErrorEvent): void;
33
+ configureOptions?: IConfigureOption[];
34
+ actions?: React.ReactNode;
35
+ }
28
36
  export declare const InputMessage: React.FC<InputMessageProps>;
29
37
  export * from './types';
@@ -1 +1 @@
1
- import{__rest as i,__awaiter as o}from"tslib";import{jsx as e,jsxs as s}from"react/jsx-runtime";import{useState as n,useRef as t,useCallback as r}from"react";import{useTransition as c}from"@react-spring/web";import{InputMessageStyled as d,InputMessageContent as m,InputMessageConfigure as p,InputMessageConfigureButton as a,InputMessageConfigureMenu as l,InputMessageUploadFile as j,InputMessageUploadFileLabel as x,InputMessageUploadFileInput as g,InputMessageMenuHr as u,InputMessageMenuOption as h,InputMessageMain as b,InputMessageVoiceRecord as y,InputMessageVoiceRecordDot as f,InputMessageVoiceRecordTimeText as v,InputMessageConcatenateWarning as k,InputMessageVoiceFiles as w,InputMessageVoiceTrack as F,InputMessageVoiceFileDelete as C,InputMessageTextArea as D,InputMessageButtons as A,InputMessageAltKeyStyled as V,InputMessageAltKeyButton as K,InputMessageAltKeyModalStyled as S,InputMessageAltKeyModalOption as T,InputMessageVoicePlayButton as O,InputMessageVoicePauseButton as P,InputMessageVoiceButton as R,InputMessageSendButton as $,InputMessageSendIcon as q}from"./styled.js";import"marked";import"../message/styled.js";import"../loader/styled.js";import"../../theme/index.js";import"../loader/three-dots-loader/styled.js";import"../skeleton/index.js";import{useOnClickOutside as B}from"../../utils/useOnClickOutside.js";import"unified";import"remark-parse";import"remark-gfm";import"mdast-util-to-markdown";import"../../utils/colors/calculateGrayScale.js";import"../../utils/colors/calculateAccentColors.js";import{formatSeconds as z}from"../../utils/formatSeconds.js";import"../message/context.js";import"styled-components";import"../message/components/code/inline/styled.js";import"../message/components/code/multiline/styled.js";import"react-markdown";import"react-dom";import"../portal/styled.js";import"../tooltip/styled.js";import"../tooltip/arrow/styled.js";import"../tooltip/context.js";import"../message/components/code/multiline/copy/styled.js";import"../../icons/check-small/index.js";import"../../icons/copy/index.js";import"../message/components/code/multiline/content/styled.js";import"../message/components/paragraph/styled.js";import"../message/components/bold/styled.js";import"../message/components/italic/styled.js";import"../message/components/pre/styled.js";import"../message/components/table/styled.js";import"../message/components/table/cell/styled.js";import"../message/components/list/styled.js";import"../message/components/list/context.js";import"../message/components/list/item/styled.js";import"../message/components/title/styled.js";import"../message/components/link/styled.js";import"../message/components/image/styled.js";import"../message/components/image/context.js";import"../message/components/image/grid/styled.js";import"../message/components/image/button/styled.js";import"../message/components/image/button/list/styled.js";import"../message/markdown/styled.js";import"../scrollbar/styled.js";import"../scrollbar/shadow/styled.js";import"../scrollbar/style/styled.js";import"../message/timestamp/styled.js";import"../../icons/menu-dot/index.js";import"../../icons/update/index.js";import"../../icons/resend/index.js";import"../../icons/edit/index.js";import"../../icons/trash/index.js";import"../../icons/thumb-down/index.js";import"../../icons/close/index.js";import"../../icons/download-img/index.js";import"../message/actions/styled.js";import"../message/actions/copy-button/styled.js";import"../message/list/styled.js";import"../message/scroll-button/styled.js";import"../icon/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/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/presets-big/index.js";import"../../icons/referal/index.js";import"../../icons/restore/index.js";import"../../icons/tariff/index.js";import{Plus2Icon as E}from"../../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/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{AttachIcon as L}from"../../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/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/loader-circular-gradient-2/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-big/index.js";import"../../icons/xls-big/index.js";import"../../icons/word-big/index.js";import"../../icons/txt-big/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/attach-file-big/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/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/analyze-urls/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/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"../message/versions/styled.js";import"../message/copy/styled.js";import"../message/badge-progress/styled.js";import"../message/button/styled.js";import"../message/button/list/styled.js";import"../message/file/styled.js";import{MessageVoice as M}from"../message/voice/index.js";import"../message/reasoning-block/styled.js";import{Typography as U}from"../typography/index.js";import"../message/search-results/styled.js";import"../message/video/styled.js";import{useVoice as N}from"./use-voice.js";import{useFiles as G}from"./use-files.js";import{useInput as H}from"./use-input.js";import{InputMessageFiles as I}from"./input-files.js";import{useTheme as _}from"../../theme/hook.js";const J=J=>{var{className:Q,placeholder:W,message:X,files:Y,disabled:Z=!1,sendDisabled:ii=!1,textAreaDisabled:oi=!1,altKeyDefaultValue:ei=!1,defaultKeySendText:si,alternativeKeySendText:ni,concatenateText:ti,uploadFileLimit:ri=5,hideUploadFile:ci=!1,uploadFileDisabled:di=!1,uploadFileAccept:mi,uploadFileText:pi,autoFocus:ai=!0,voice:li=!1,onSetAlternativeKeyValue:ji,onChange:xi,onFilesChange:gi,onVoiceFilesChange:ui,onTextAreaChange:hi,onSend:bi,onFocus:yi,onBlur:fi,emitError:vi,actions:ki,configureOptions:wi}=J,Fi=i(J,["className","placeholder","message","files","disabled","sendDisabled","textAreaDisabled","altKeyDefaultValue","defaultKeySendText","alternativeKeySendText","concatenateText","uploadFileLimit","hideUploadFile","uploadFileDisabled","uploadFileAccept","uploadFileText","autoFocus","voice","onSetAlternativeKeyValue","onChange","onFilesChange","onVoiceFilesChange","onTextAreaChange","onSend","onFocus","onBlur","emitError","actions","configureOptions"]);const Ci=_(),[Di,Ai]=n(!1),Vi=t(null),[Ki,Si]=n(!1),{files:Ti,setFiles:Oi,handleFilePaste:Pi,handleFileInputChange:Ri,handleSideUploadFiles:$i,handleDeleteFile:qi}=G({uploadFileAccept:mi,uploadFileLimit:ri,uploadFileDisabled:di,initialFiles:Y,emitError:vi,onFilesChange:gi,onUploadFileChange:()=>Si(!1)}),{textareaRef:Bi,altKeyButtonRef:zi,isFocus:Ei,isAltKey:Li,height:Mi,message:Ui,isAltKeyModalShown:Ni,setHeight:Gi,setMessage:Hi,setAltKeyModalShown:Ii,handleDefaultKey:_i,handleAlternativeKey:Ji,handleFocus:Qi,handleBlur:Wi,handleClick:Xi,handleChange:Yi}=H({initialMessage:X,disabled:Z,autoFocus:ai,altKeyDefaultValue:ei,onChange:xi,onSend:()=>null==bi?void 0:bi(Ui,Ti),onTextAreaChange:hi,onSetAlternativeKeyValue:ji,onFocus:yi,onBlur:fi}),{voiceFiles:Zi,isVoiceRecording:io,isVoicePaused:oo,voiceRecordingTime:eo,setVoiceFiles:so,handleVoiceRecordStart:no,handleVoiceRecordEnd:to,handleVoiceResume:ro,handleVoicePause:co,handleVoiceFileDelete:mo}=N({onVoiceFilesChange:ui}),po=r(i=>{i.stopPropagation(),null==bi||bi(Ui,Ti),null==Hi||Hi(""),null==Oi||Oi([]),null==so||so([]),Gi("calc(var(--bothub-scale, 1) * 22px)")},[Ui,Ti,bi,Hi,Oi,so]);B(zi,()=>{Ii(!1)}),B(Vi,()=>{Si(!1)});const ao=c(!Z&&Ni,{from:{opacity:0,y:10},enter:{opacity:1,y:0},leave:{opacity:0,y:10},config:{duration:100,ease:"easeOut"}}),lo=c(!Z&&Ki,{from:{opacity:0,y:10},enter:{opacity:1,y:0},leave:{opacity:0,y:10},config:{duration:100,ease:"easeOut"}});return e(d,{$active:Ei,$dragActive:Di,$disabled:Z,$textAreaDisabled:oi,$voiceRecording:io,className:Q,onClick:Xi,onDragEnter:()=>Ai(!0),onDragLeave:()=>Ai(!1),onDragOver:i=>(i.stopPropagation(),i.preventDefault(),!1),onDrop:i=>o(void 0,void 0,void 0,function*(){if(i.dataTransfer.files.length>0)return i.stopPropagation(),i.preventDefault(),yield $i([...i.dataTransfer.files]),Ai(!1),!1}),children:s(m,{children:[(!ci||!!wi)&&s(p,{ref:Vi,children:[e(a,{$disabled:Z,onClick:i=>{i.stopPropagation(),Si(!Ki)},children:e(E,{fill:Ci.colors.base.white})}),lo((o,n)=>n&&s(l,{style:o,children:[!ci&&s(j,{children:[s(x,{$disabled:Ti.length>=ri||Z||di,onClick:i=>i.stopPropagation(),children:[e(L,{size:18,fill:Ci.colors.base.white}),e(U,{variant:"body-m-medium",children:pi})]}),e(g,{type:"file",accept:mi,multiple:!0,disabled:Ti.length>=ri||Z||di,onChange:Ri},Ti.length)]}),!ci&&!!wi&&e(u,{}),null==wi?void 0:wi.map(o=>{var{onClick:s}=o,n=i(o,["onClick"]);return e(h,Object.assign({},n,{onClick:()=>{null==s||s(),Si(!1)}}))})]})),ki]}),s(b,{onClick:Xi,children:[io&&null!==eo&&s(y,{children:[e(f,{}),e(v,{children:z(eo)})]}),e(I,{files:Ti,handleDeleteFile:qi}),Zi.length>1&&e(k,{children:ti}),Zi.length>0&&e(w,{children:Zi.map(i=>s(F,{children:[e(M,{variant:"input",height:24,src:i.src,duration:i.duration,waveData:i.waveData,disableTranscription:!0}),e(C,{onClick:mo.bind(null,i)})]},i.src))}),(!oi||oi&&W&&Ti.length!==ri||oi&&Ui)&&e(D,Object.assign({$disabled:Z},Fi,{ref:Bi,value:Ui,placeholder:W,disabled:Z||oi,style:Object.assign(Object.assign({},Fi.style),{height:Mi}),onFocus:Qi,onBlur:Wi,onChange:Yi,onPaste:Pi}))]}),s(A,{children:[!!si&&!!ni&&s(V,{ref:zi,children:[e(K,{onClick:i=>{i.stopPropagation(),Ii(!Ni)},disabled:Z}),ao((i,o)=>o&&s(S,{style:i,children:[e(T,{active:!Li,onClick:_i,children:si}),e(T,{active:Li,onClick:Ji,children:ni})]},"alternative-key-modal"))]}),io&&(oo?e(O,{onClick:ro}):e(P,{onClick:co})),li&&e(R,{$isRecording:io,disabled:Z||ii,onClick:io?to:no,"data-test":"submit-message"}),e($,Object.assign({disabled:Z||ii||io,onClick:po},Ci.bright&&{iconFill:Ci.default.colors.base.black},{"data-test":"submit-message",children:e(q,{})}))]})]})})};export{J as InputMessage};
1
+ import{__rest as i,__awaiter as o}from"tslib";import{jsx as e,jsxs as s}from"react/jsx-runtime";import{useState as n,useRef as t,useCallback as r}from"react";import{useTransition as c}from"@react-spring/web";import{InputMessageStyled as d,InputMessageContent as m,InputMessageConfigure as p,InputMessageConfigureButton as a,InputMessageConfigureMenu as l,InputMessageUploadFile as j,InputMessageUploadFileLabel as x,InputMessageUploadFileInput as g,InputMessageMenuHr as u,InputMessageMenuOption as h,InputMessageMain as b,InputMessageVoiceRecord as y,InputMessageVoiceRecordDot as f,InputMessageVoiceRecordTimeText as v,InputMessageConcatenateWarning as k,InputMessageVoiceFiles as w,InputMessageVoiceTrack as F,InputMessageVoiceFileDelete as C,InputMessageTextArea as D,InputMessageButtons as A,InputMessageAltKeyStyled as V,InputMessageAltKeyButton as K,InputMessageAltKeyModalStyled as S,InputMessageAltKeyModalOption as T,InputMessageVoicePlayButton as O,InputMessageVoicePauseButton as P,InputMessageVoiceButton as R,InputMessageSendButton as $,InputMessageSendIcon as q}from"./styled.js";import"marked";import"../message/styled.js";import"../loader/styled.js";import"../../theme/index.js";import"../loader/three-dots-loader/styled.js";import"../skeleton/index.js";import{useOnClickOutside as B}from"../../utils/useOnClickOutside.js";import"unified";import"remark-parse";import"remark-gfm";import"mdast-util-to-markdown";import"../../utils/colors/calculateGrayScale.js";import"../../utils/colors/calculateAccentColors.js";import{formatSeconds as z}from"../../utils/formatSeconds.js";import"../message/context.js";import"styled-components";import"../message/components/code/inline/styled.js";import"../message/components/code/multiline/styled.js";import"react-markdown";import"react-dom";import"../portal/styled.js";import"../tooltip/styled.js";import"../tooltip/arrow/styled.js";import"../tooltip/context.js";import"../message/components/code/multiline/copy/styled.js";import"../../icons/check-small/index.js";import"../../icons/copy/index.js";import"../message/components/code/multiline/content/styled.js";import"../message/components/paragraph/styled.js";import"../message/components/bold/styled.js";import"../message/components/italic/styled.js";import"../message/components/pre/styled.js";import"../message/components/table/styled.js";import"../message/components/table/cell/styled.js";import"../message/components/list/styled.js";import"../message/components/list/context.js";import"../message/components/list/item/styled.js";import"../message/components/title/styled.js";import"../message/components/link/styled.js";import"../message/components/image/styled.js";import"../message/components/image/context.js";import"../message/components/image/grid/styled.js";import"../message/components/image/button/styled.js";import"../message/components/image/button/list/styled.js";import"../message/markdown/styled.js";import"../scrollbar/styled.js";import"../scrollbar/shadow/styled.js";import"../scrollbar/style/styled.js";import"../message/timestamp/styled.js";import"../../icons/menu-dot/index.js";import"../../icons/update/index.js";import"../../icons/resend/index.js";import"../../icons/edit/index.js";import"../../icons/trash/index.js";import"../../icons/thumb-down/index.js";import"../../icons/close/index.js";import"../../icons/download-img/index.js";import"../message/actions/styled.js";import"../message/actions/copy-button/styled.js";import"../message/list/styled.js";import"../message/scroll-button/styled.js";import"../icon/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/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/presets-big/index.js";import"../../icons/referal/index.js";import"../../icons/restore/index.js";import"../../icons/tariff/index.js";import{Plus2Icon as E}from"../../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/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{AttachIcon as M}from"../../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/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/loader-circular-gradient-2/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-big/index.js";import"../../icons/xls-big/index.js";import"../../icons/word-big/index.js";import"../../icons/txt-big/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/attach-file-big/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/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/analyze-urls/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/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"../message/versions/styled.js";import"../message/copy/styled.js";import"../message/badge-progress/styled.js";import"../message/button/styled.js";import"../message/button/list/styled.js";import"../message/file/styled.js";import{MessageVoice as L}from"../message/voice/index.js";import"../message/reasoning-block/styled.js";import{Typography as U}from"../typography/index.js";import"../message/search-results/styled.js";import"../message/video/styled.js";import{useVoice as N}from"./use-voice.js";import{useFiles as G}from"./use-files.js";import{useInput as H}from"./use-input.js";import{InputMessageFiles as I}from"./input-files.js";import{useTheme as _}from"../../theme/hook.js";const J=J=>{var{className:Q,placeholder:W,message:X,files:Y,disabled:Z=!1,sendDisabled:ii=!1,textAreaDisabled:oi=!1,altKeyDefaultValue:ei=!1,defaultKeySendText:si,alternativeKeySendText:ni,concatenateText:ti,uploadFileLimit:ri=5,hideUploadFile:ci=!1,uploadFileDisabled:di=!1,uploadFileAccept:mi,uploadFileText:pi,autoFocus:ai=!0,voice:li=!1,onSetAlternativeKeyValue:ji,onChange:xi,onFilesChange:gi,onVoiceFilesChange:ui,onTextAreaChange:hi,onSend:bi,onFocus:yi,onBlur:fi,emitError:vi,actions:ki,configureOptions:wi}=J,Fi=i(J,["className","placeholder","message","files","disabled","sendDisabled","textAreaDisabled","altKeyDefaultValue","defaultKeySendText","alternativeKeySendText","concatenateText","uploadFileLimit","hideUploadFile","uploadFileDisabled","uploadFileAccept","uploadFileText","autoFocus","voice","onSetAlternativeKeyValue","onChange","onFilesChange","onVoiceFilesChange","onTextAreaChange","onSend","onFocus","onBlur","emitError","actions","configureOptions"]);const Ci=_(),[Di,Ai]=n(!1),Vi=t(null),[Ki,Si]=n(!1),{files:Ti,setFiles:Oi,handleFilePaste:Pi,handleFileInputChange:Ri,handleSideUploadFiles:$i,handleDeleteFile:qi}=G({uploadFileAccept:mi,uploadFileLimit:ri,uploadFileDisabled:di,initialFiles:Y,emitError:vi,onFilesChange:gi,onUploadFileChange:()=>Si(!1)}),{textareaRef:Bi,altKeyButtonRef:zi,isFocus:Ei,isAltKey:Mi,height:Li,message:Ui,isAltKeyModalShown:Ni,setHeight:Gi,setMessage:Hi,setAltKeyModalShown:Ii,handleDefaultKey:_i,handleAlternativeKey:Ji,handleFocus:Qi,handleBlur:Wi,handleClick:Xi,handleChange:Yi}=H({initialMessage:X,disabled:Z,autoFocus:ai,altKeyDefaultValue:ei,onChange:xi,onSendMessage:()=>null==bi?void 0:bi(Ui,Ti),onTextAreaChange:hi,onSetAlternativeKeyValue:ji,onFocus:yi,onBlur:fi}),{voiceFiles:Zi,isVoiceRecording:io,isVoicePaused:oo,voiceRecordingTime:eo,setVoiceFiles:so,handleVoiceRecordStart:no,handleVoiceRecordEnd:to,handleVoiceResume:ro,handleVoicePause:co,handleVoiceFileDelete:mo}=N({onVoiceFilesChange:ui}),po=r(i=>{i.stopPropagation(),null==bi||bi(Ui,Ti),null==Hi||Hi(""),null==Oi||Oi([]),null==so||so([]),Gi("calc(var(--bothub-scale, 1) * 22px)")},[Ui,Ti,bi,Hi,Oi,so]);B(zi,()=>{Ii(!1)}),B(Vi,()=>{Si(!1)});const ao=c(!Z&&Ni,{from:{opacity:0,y:10},enter:{opacity:1,y:0},leave:{opacity:0,y:10},config:{duration:100,ease:"easeOut"}}),lo=c(!Z&&Ki,{from:{opacity:0,y:10},enter:{opacity:1,y:0},leave:{opacity:0,y:10},config:{duration:100,ease:"easeOut"}});return e(d,{$active:Ei,$dragActive:Di,$disabled:Z,$textAreaDisabled:oi,$voiceRecording:io,className:Q,onClick:Xi,onDragEnter:()=>Ai(!0),onDragLeave:()=>Ai(!1),onDragOver:i=>(i.stopPropagation(),i.preventDefault(),!1),onDrop:i=>o(void 0,void 0,void 0,function*(){if(i.dataTransfer.files.length>0)return i.stopPropagation(),i.preventDefault(),yield $i([...i.dataTransfer.files]),Ai(!1),!1}),children:s(m,{children:[(!ci||!!wi)&&s(p,{ref:Vi,children:[e(a,{$disabled:Z,onClick:i=>{i.stopPropagation(),Si(!Ki)},children:e(E,{fill:Ci.colors.base.white})}),lo((o,n)=>n&&s(l,{style:o,children:[!ci&&s(j,{children:[s(x,{$disabled:Ti.length>=ri||Z||di,onClick:i=>i.stopPropagation(),children:[e(M,{size:18,fill:Ci.colors.base.white}),e(U,{variant:"body-m-medium",children:pi})]}),e(g,{type:"file",accept:mi,multiple:!0,disabled:Ti.length>=ri||Z||di,onChange:Ri},Ti.length)]}),!ci&&!!wi&&e(u,{}),null==wi?void 0:wi.map(o=>{var{onClick:s}=o,n=i(o,["onClick"]);return e(h,Object.assign({},n,{onClick:()=>{null==s||s(),Si(!1)}}))})]})),ki]}),s(b,{onClick:Xi,children:[io&&null!==eo&&s(y,{children:[e(f,{}),e(v,{children:z(eo)})]}),e(I,{files:Ti,handleDeleteFile:qi}),Zi.length>1&&e(k,{children:ti}),Zi.length>0&&e(w,{children:Zi.map(i=>s(F,{children:[e(L,{variant:"input",height:24,src:i.src,duration:i.duration,waveData:i.waveData,disableTranscription:!0}),e(C,{onClick:mo.bind(null,i)})]},i.src))}),(!oi||oi&&W&&Ti.length!==ri||oi&&Ui)&&e(D,Object.assign({$disabled:Z},Fi,{ref:Bi,value:Ui,placeholder:W,disabled:Z||oi,style:Object.assign(Object.assign({},Fi.style),{height:Li}),onFocus:Qi,onBlur:Wi,onChange:Yi,onPaste:Pi}))]}),s(A,{children:[!!si&&!!ni&&s(V,{ref:zi,children:[e(K,{onClick:i=>{i.stopPropagation(),Ii(!Ni)},disabled:Z}),ao((i,o)=>o&&s(S,{style:i,children:[e(T,{active:!Mi,onClick:_i,children:si}),e(T,{active:Mi,onClick:Ji,children:ni})]},"alternative-key-modal"))]}),io&&(oo?e(O,{onClick:ro}):e(P,{onClick:co})),li&&e(R,{$isRecording:io,disabled:Z||ii,onClick:io?to:no,"data-test":"submit-message"}),e($,Object.assign({disabled:Z||ii||io,onClick:po},Ci.bright&&{iconFill:Ci.default.colors.base.black},{"data-test":"submit-message",children:e(q,{})}))]})]})})};export{J as InputMessage};
@@ -1,5 +1,5 @@
1
1
  import { IInputMessageFile, InputMessageErrorEvent } from './types';
2
- export interface UseFilesProps {
2
+ interface UseFilesProps {
3
3
  initialFiles?: IInputMessageFile[];
4
4
  uploadFileAccept?: string;
5
5
  uploadFileLimit: number;
@@ -16,3 +16,4 @@ export declare const useFiles: ({ initialFiles, uploadFileAccept, uploadFileLimi
16
16
  handleFileInputChange: import("react").ChangeEventHandler<HTMLInputElement>;
17
17
  handleDeleteFile: (file: IInputMessageFile) => void;
18
18
  };
19
+ export {};
@@ -1,16 +1,16 @@
1
- export interface UseInputProps {
1
+ interface UseInputProps {
2
2
  initialMessage?: string;
3
3
  disabled?: boolean;
4
4
  autoFocus?: boolean;
5
5
  altKeyDefaultValue?: boolean;
6
6
  onChange?: (value: string) => unknown;
7
- onSend?: () => unknown;
7
+ onSendMessage?: () => unknown;
8
8
  onTextAreaChange?: React.ChangeEventHandler<HTMLTextAreaElement>;
9
9
  onSetAlternativeKeyValue?: (value: boolean) => unknown;
10
10
  onFocus?: (e: React.FocusEvent<HTMLTextAreaElement, Element>) => unknown;
11
11
  onBlur?: (e: React.FocusEvent<HTMLTextAreaElement, Element>) => unknown;
12
12
  }
13
- export declare const useInput: ({ initialMessage, disabled, autoFocus, altKeyDefaultValue, onChange, onSend, onTextAreaChange, onSetAlternativeKeyValue, onFocus, onBlur, }: UseInputProps) => {
13
+ export declare const useInput: ({ initialMessage, disabled, autoFocus, altKeyDefaultValue, onChange, onSendMessage, onTextAreaChange, onSetAlternativeKeyValue, onFocus, onBlur, }: UseInputProps) => {
14
14
  textareaRef: import("react").RefObject<HTMLTextAreaElement | null>;
15
15
  altKeyButtonRef: import("react").RefObject<HTMLDivElement | null>;
16
16
  isFocus: boolean;
@@ -28,3 +28,4 @@ export declare const useInput: ({ initialMessage, disabled, autoFocus, altKeyDef
28
28
  handleClick: () => void;
29
29
  handleChange: import("react").ChangeEventHandler<HTMLTextAreaElement>;
30
30
  };
31
+ export {};
@@ -1 +1 @@
1
- import{useRef as e,useState as t,useCallback as l,useEffect as n}from"react";import{isMobileDevice as r}from"./utils.js";const a=({initialMessage:a,disabled:o,autoFocus:s,altKeyDefaultValue:u,onChange:c,onSend:i,onTextAreaChange:h,onSetAlternativeKeyValue:f,onFocus:y,onBlur:d})=>{var v;const g=e(null),p=e(null),[K,m]=t(null!==(v=!o&&s)&&void 0!==v&&v),[b,x]=t("calc(var(--bothub-scale, 1) * 22px)"),[E,k]="string"==typeof a?[a,c]:t(""),[A,S]=t(null!=u&&u),[w,C]=t(!1),D=l(()=>{S(!1),null==f||f(!1),C(!1)},[]),F=l(()=>{S(!0),null==f||f(!0),C(!1)},[]),M=l(e=>{m(!0),null==y||y(e)},[y]),$=l(e=>{m(!1),null==d||d(e)},[d]),B=l(()=>{var e;o||null===(e=g.current)||void 0===e||e.focus()},[o,s]),H=l(e=>{null==k||k(e.target.value),null==h||h(e)},[k,h]);return n(()=>{const e=g.current;if(!e||o)return;const t=!o&&!!s;m(t),t?e.focus():document.activeElement===e&&e.blur()},[o,s]),n(()=>{const e=g.current;if(null===e)return;const t=e=>{e.stopPropagation();if(r()&&"Enter"===e.key)return;const t=A?"enter":"ctrl/shift+enter";let l="";if("Enter"===e.key&&(e.shiftKey||e.ctrlKey))l="ctrl/shift+enter";else{if("Enter"!==e.key)return;l="enter"}if(K&&"Enter"===e.key){if(l===t&&e.ctrlKey){e.preventDefault();const t=g.current;if(!t)return;const l=t.value,r=t.selectionStart,o=l.slice(0,r),s=l.slice(r);null==k||k(`${o}\n${s}`),n=t,a=r+1,setTimeout(()=>{n.selectionStart=a,n.selectionEnd=a},1)}t!==l&&""!==l&&(e.preventDefault(),null==i||i(),x("calc(var(--bothub-scale, 1) * 22px)"))}var n,a};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}},[K,E,i,k]),n(()=>{const e=g.current;null!==e&&(e.style.height="calc(var(--bothub-scale, 1) * 22px)",e.style.height=`${e.scrollHeight}px`,x(`${e.scrollHeight}px`))},[E,s]),{textareaRef:g,altKeyButtonRef:p,isFocus:K,isAltKey:A,height:b,message:E,isAltKeyModalShown:w,setHeight:x,setMessage:k,setAltKeyModalShown:C,handleDefaultKey:D,handleAlternativeKey:F,handleFocus:M,handleBlur:$,handleClick:B,handleChange:H}};export{a as useInput};
1
+ import{useRef as e,useState as t,useCallback as l,useEffect as n}from"react";import{isMobileDevice as r}from"./utils.js";const s=({initialMessage:s,disabled:a,autoFocus:o,altKeyDefaultValue:u,onChange:c,onSendMessage:i,onTextAreaChange:h,onSetAlternativeKeyValue:f,onFocus:y,onBlur:d})=>{var v;const g=e(null),p=e(null),[K,m]=t(null!==(v=!a&&o)&&void 0!==v&&v),[b,x]=t("calc(var(--bothub-scale, 1) * 22px)"),[E,k]="string"==typeof s?[s,c]:t(""),[A,S]=t(null!=u&&u),[M,w]=t(!1),C=l(()=>{S(!1),null==f||f(!1),w(!1)},[]),D=l(()=>{S(!0),null==f||f(!0),w(!1)},[]),F=l(e=>{m(!0),null==y||y(e)},[y]),$=l(e=>{m(!1),null==d||d(e)},[d]),B=l(()=>{var e;a||null===(e=g.current)||void 0===e||e.focus()},[a,o]),H=l(e=>{null==k||k(e.target.value),null==h||h(e)},[k,h]);return n(()=>{const e=g.current;if(!e||a)return;const t=!a&&!!o;m(t),t?e.focus():document.activeElement===e&&e.blur()},[a,o]),n(()=>{const e=g.current;if(null===e)return;const t=e=>{e.stopPropagation();if(r()&&"Enter"===e.key)return;const t=A?"enter":"ctrl/shift+enter";let l="";if("Enter"===e.key&&(e.shiftKey||e.ctrlKey))l="ctrl/shift+enter";else{if("Enter"!==e.key)return;l="enter"}if(K&&"Enter"===e.key){if(l===t&&e.ctrlKey){e.preventDefault();const t=g.current;if(!t)return;const l=t.value,r=t.selectionStart,a=l.slice(0,r),o=l.slice(r);null==k||k(`${a}\n${o}`),n=t,s=r+1,setTimeout(()=>{n.selectionStart=s,n.selectionEnd=s},1)}t!==l&&""!==l&&(e.preventDefault(),null==i||i(),x("calc(var(--bothub-scale, 1) * 22px)"))}var n,s};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}},[K,E,i,k]),n(()=>{const e=g.current;null!==e&&(e.style.height="calc(var(--bothub-scale, 1) * 22px)",e.style.height=`${e.scrollHeight}px`,x(`${e.scrollHeight}px`))},[E,o]),{textareaRef:g,altKeyButtonRef:p,isFocus:K,isAltKey:A,height:b,message:E,isAltKeyModalShown:M,setHeight:x,setMessage:k,setAltKeyModalShown:w,handleDefaultKey:C,handleAlternativeKey:D,handleFocus:F,handleBlur:$,handleClick:B,handleChange:H}};export{s as useInput};
@@ -1,5 +1,5 @@
1
1
  import { IInputMessageVoiceFile } from './types';
2
- export interface UseVoiceProps {
2
+ interface UseVoiceProps {
3
3
  onVoiceFilesChange?: (files: IInputMessageVoiceFile[]) => unknown;
4
4
  }
5
5
  export declare const useVoice: ({ onVoiceFilesChange }: UseVoiceProps) => {
@@ -14,3 +14,4 @@ export declare const useVoice: ({ onVoiceFilesChange }: UseVoiceProps) => {
14
14
  handleVoiceResume: () => void;
15
15
  handleVoiceFileDelete: (file: IInputMessageVoiceFile) => void;
16
16
  };
17
+ export {};
@@ -4024,6 +4024,7 @@ export declare const SidebarChatTooltip: import("styled-components").IStyledComp
4024
4024
  align?: import("@/ui/components/tooltip").TooltipAlign | undefined;
4025
4025
  inverted?: boolean | undefined;
4026
4026
  label?: import("react").ReactNode;
4027
+ contentWidth?: number | undefined;
4027
4028
  disabled?: boolean | undefined;
4028
4029
  disableHiddenAnimation?: boolean | undefined;
4029
4030
  markdown?: boolean | undefined;
@@ -4525,6 +4526,7 @@ export declare const SidebarChatNameTooltip: import("styled-components").IStyled
4525
4526
  align?: import("@/ui/components/tooltip").TooltipAlign | undefined;
4526
4527
  inverted?: boolean | undefined;
4527
4528
  label?: import("react").ReactNode;
4529
+ contentWidth?: number | undefined;
4528
4530
  disabled?: boolean | undefined;
4529
4531
  disableHiddenAnimation?: boolean | undefined;
4530
4532
  markdown?: boolean | undefined;
@@ -2946,6 +2946,7 @@ export declare const SidebarGroupTooltip: import("styled-components").IStyledCom
2946
2946
  align?: import("@/ui/components/tooltip").TooltipAlign | undefined;
2947
2947
  inverted?: boolean | undefined;
2948
2948
  label?: import("react").ReactNode;
2949
+ contentWidth?: number | undefined;
2949
2950
  disabled?: boolean | undefined;
2950
2951
  disableHiddenAnimation?: boolean | undefined;
2951
2952
  markdown?: boolean | undefined;
@@ -14,6 +14,7 @@ export interface TooltipProps extends React.PropsWithChildren {
14
14
  align?: TooltipAlign;
15
15
  inverted?: boolean;
16
16
  label?: React.ReactNode;
17
+ contentWidth?: number;
17
18
  disabled?: boolean;
18
19
  disableHiddenAnimation?: boolean;
19
20
  markdown?: boolean;
@@ -1 +1 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as r,useState as n,useCallback as c,useEffect as o}from"react";import{useTransition as a}from"@react-spring/web";import i from"react-markdown";import{Portal as s}from"../portal/index.js";import{TooltipStyled as l,TooltipBlock as p,TooltipLabel as d,TooltipMarkdown as h,TooltipLabelBold as m,TooltipCode as u}from"./styled.js";export{TooltipColumn,TooltipImage}from"./styled.js";import{TooltipArrow as f}from"./arrow/index.js";import{TooltipProvider as g}from"./context.js";export{TooltipConsumer,TooltipContext,useTooltip}from"./context.js";const b={enter:150,exit:150,leaveDisabledHiddenAnimation:0},w=({className:w,variant:v="primary",placement:x="top",placementX:k=0,placementY:y=-5,align:T="auto",inverted:j=!1,label:$,disabled:E=!1,disableHiddenAnimation:C=!1,markdown:L=!1,children:M,hideOnScroll:O=!0})=>{const Y=r(null),[A,B]=n(),[H,N]=n([0,0]),R=!$||E,X=c(()=>{const e=Y.current;if(null===e)return[0,0];const t=A;if(!(t instanceof Element))return[0,0];const{width:r,height:n}=e.getBoundingClientRect(),c=t.getBoundingClientRect(),{width:o}=c,a=c.left+window.scrollX,i=c.top+window.scrollY,s=c.bottom+window.scrollY;let l=0;switch(x){case"top-left":switch(T){case"left":case"auto":l=a;break;case"center":l=a-r/2;break;case"right":l=a-r}break;case"top":switch(T){case"left":l=a+o/2;break;case"center":case"auto":l=a+o/2-r/2;break;case"right":l=a+o/2-r}break;case"top-right":switch(T){case"left":l=a+o;break;case"center":l=a+o-r/2;break;case"right":case"auto":l=a+o-r}break;case"center-right":l=a+o-18;break;case"center-left":l=a-r+18}let p=0;switch(x){case"top-left":case"top":case"top-right":p=j?s+6:i-n-6;break;case"center-right":case"center-left":p=(i+s-n+10)/2;break;default:p=s+6}return[l,p]},[x,T,A]),D=c(()=>{A&&N(X())},[A,X]),I=c(()=>{B(null)},[]),P=[`${H[1]}px`];0!==y&&P.push(`calc(var(--bothub-scale, 1) * ${y}px)`);const S=[`${H[0]}px`];switch(x){case"top-left":switch(T){case"center":S.push("14.5px");break;case"right":S.push("29px")}break;case"top":switch(T){case"left":S.push("-14.5px");break;case"right":S.push("14.5px")}break;case"top-right":switch(T){case"left":S.push("-29px");break;case"center":S.push("-14.5px")}}0!==k&&S.push(`calc(var(--bothub-scale, 1) * ${k}px)`);const q=a(!!A,{from:{opacity:0,y:-6},enter:{opacity:1,y:0},leave:{opacity:0,y:-6,transition:{duration:C?0:.3}},config:{duration:b.enter}})((r,n)=>n&&e(l,{$placement:x,$align:T,$inverted:j,ref:Y,className:w,style:Object.assign(Object.assign({},r),{top:P.length<=1?P[0]:`calc(${P.join(" + ")})`,left:S.length<=1?S[0]:`calc(${S.join(" + ")})`}),children:[j&&t(f,{placement:x,variant:v,inverted:j}),e(p,{$variant:v,children:["string"==typeof $&&!L&&e(d,{children:[$.slice(0,272),$.length>272&&"..."]}),"string"==typeof $&&L&&t(h,{children:t(i,{components:{p:({children:e})=>t(d,{component:"p",children:e}),b:({children:e})=>t(m,{children:e}),strong:({children:e})=>t(m,{component:"strong",children:e}),code:({children:e})=>t(u,{children:e})},children:$})}),"string"!=typeof $&&$]}),!j&&t(f,{placement:x,variant:v,inverted:j})]}));o(()=>{D()},[A,D]);const z=c(e=>{!R&&e.currentTarget instanceof Element&&(B(e.currentTarget),D())},[R,D]);return o(()=>{const e=()=>{I()},t=()=>{I()};return window.addEventListener("mouseleave",e),window.addEventListener("scroll",t,O),()=>{window.removeEventListener("mouseleave",e),window.removeEventListener("scroll",t,O)}},[I]),e(g,{handleTooltipMouseEnter:e=>{!R&&e.currentTarget instanceof Element&&B(e.currentTarget)},handleTooltipMouseLeave:()=>{B(null)},handleTooltipPointerMove:z,children:[t(s,{children:q}),M]})};export{w as Tooltip,b as TooltipAnimationDuration,p as TooltipBlock,u as TooltipCode,d as TooltipLabel,m as TooltipLabelBold,h as TooltipMarkdown,g as TooltipProvider,l as TooltipStyled};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as r,useState as n,useCallback as c,useEffect as o}from"react";import{useTransition as a}from"@react-spring/web";import i from"react-markdown";import{Portal as s}from"../portal/index.js";import{TooltipStyled as l,TooltipBlock as p,TooltipLabel as d,TooltipMarkdown as h,TooltipLabelBold as m,TooltipCode as u}from"./styled.js";export{TooltipColumn,TooltipImage}from"./styled.js";import{TooltipArrow as f}from"./arrow/index.js";import{TooltipProvider as g}from"./context.js";export{TooltipConsumer,TooltipContext,useTooltip}from"./context.js";const b={enter:150,exit:150,leaveDisabledHiddenAnimation:0},w=({className:w,variant:v="primary",placement:x="top",placementX:k=0,placementY:y=-5,align:T="auto",inverted:j=!1,label:$,contentWidth:E,disabled:C=!1,disableHiddenAnimation:L=!1,markdown:M=!1,children:O,hideOnScroll:Y=!0})=>{const A=r(null),[B,H]=n(),[N,R]=n([0,0]),W=!$||C,X=c(()=>{const e=A.current;if(null===e)return[0,0];const t=B;if(!(t instanceof Element))return[0,0];const{width:r,height:n}=e.getBoundingClientRect(),c=t.getBoundingClientRect(),{width:o}=c,a=c.left+window.scrollX,i=c.top+window.scrollY,s=c.bottom+window.scrollY;let l=0;switch(x){case"top-left":switch(T){case"left":case"auto":l=a;break;case"center":l=a-r/2;break;case"right":l=a-r}break;case"top":switch(T){case"left":l=a+o/2;break;case"center":case"auto":l=a+o/2-r/2;break;case"right":l=a+o/2-r}break;case"top-right":switch(T){case"left":l=a+o;break;case"center":l=a+o-r/2;break;case"right":case"auto":l=a+o-r}break;case"center-right":l=a+o-18;break;case"center-left":l=a-r+18}let p=0;switch(x){case"top-left":case"top":case"top-right":p=j?s+6:i-n-6;break;case"center-right":case"center-left":p=(i+s-n+10)/2;break;default:p=s+6}return[l,p]},[x,T,B]),D=c(()=>{B&&R(X())},[B,X]),I=c(()=>{H(null)},[]),P=[`${N[1]}px`];0!==y&&P.push(`calc(var(--bothub-scale, 1) * ${y}px)`);const S=[`${N[0]}px`];switch(x){case"top-left":switch(T){case"center":S.push("14.5px");break;case"right":S.push("29px")}break;case"top":switch(T){case"left":S.push("-14.5px");break;case"right":S.push("14.5px")}break;case"top-right":switch(T){case"left":S.push("-29px");break;case"center":S.push("-14.5px")}}0!==k&&S.push(`calc(var(--bothub-scale, 1) * ${k}px)`);const q=a(!!B,{from:{opacity:0,y:-6},enter:{opacity:1,y:0},leave:{opacity:0,y:-6,transition:{duration:L?0:.3}},config:{duration:b.enter}})((r,n)=>n&&e(l,{$placement:x,$align:T,$inverted:j,ref:A,className:w,style:Object.assign(Object.assign({},r),{top:P.length<=1?P[0]:`calc(${P.join(" + ")})`,left:S.length<=1?S[0]:`calc(${S.join(" + ")})`}),children:[j&&t(f,{placement:x,variant:v,inverted:j}),e(p,{$contentWidth:E,$variant:v,children:["string"==typeof $&&!M&&e(d,{children:[$.slice(0,272),$.length>272&&"..."]}),"string"==typeof $&&M&&t(h,{children:t(i,{components:{p:({children:e})=>t(d,{component:"p",children:e}),b:({children:e})=>t(m,{children:e}),strong:({children:e})=>t(m,{component:"strong",children:e}),code:({children:e})=>t(u,{children:e})},children:$})}),"string"!=typeof $&&$]}),!j&&t(f,{placement:x,variant:v,inverted:j})]}));o(()=>{D()},[B,D]);const z=c(e=>{!W&&e.currentTarget instanceof Element&&(H(e.currentTarget),D())},[W,D]);return o(()=>{const e=()=>{I()},t=()=>{I()};return window.addEventListener("mouseleave",e),window.addEventListener("scroll",t,Y),()=>{window.removeEventListener("mouseleave",e),window.removeEventListener("scroll",t,Y)}},[I]),e(g,{handleTooltipMouseEnter:e=>{!W&&e.currentTarget instanceof Element&&H(e.currentTarget)},handleTooltipMouseLeave:()=>{H(null)},handleTooltipPointerMove:z,children:[t(s,{children:q}),O]})};export{w as Tooltip,b as TooltipAnimationDuration,p as TooltipBlock,u as TooltipCode,d as TooltipLabel,m as TooltipLabelBold,h as TooltipMarkdown,g as TooltipProvider,l as TooltipStyled};
@@ -1142,6 +1142,7 @@ export declare const TooltipStyled: import("styled-components").IStyledComponent
1142
1142
  }, TooltipStyledProps>>;
1143
1143
  export interface TooltipBlockProps {
1144
1144
  $variant: TooltipVariant;
1145
+ $contentWidth?: number;
1145
1146
  }
1146
1147
  export declare const TooltipBlock: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, TooltipBlockProps>>;
1147
1148
  export declare const TooltipLabel: import("styled-components").IStyledComponent<"web", {
@@ -28,4 +28,4 @@ import{styled as e,css as t}from"styled-components";import{animated as i}from"@r
28
28
  align-items: center;
29
29
  `;case"top-right":return t`
30
30
  align-items: flex-end;
31
- `}}),a=e.span.withConfig({displayName:"styled__TooltipBlock",componentId:"sc-1kd2o9y-1"})(["display:inline-flex;width:max-content;max-width:260px;padding:8px;background:",";overflow:hidden;border-radius:6px;box-sizing:border-box;"],({theme:e,$variant:t})=>{switch(t){case"primary":return e.colors.grayScale.gray2;case"secondary":return e.colors.grayScale.gray3}}),l=e(o).attrs({variant:"body-s-medium"}).withConfig({displayName:"styled__TooltipLabel",componentId:"sc-1kd2o9y-2"})(["white-space:pre-wrap;"]),s=e.div.withConfig({displayName:"styled__TooltipMarkdown",componentId:"sc-1kd2o9y-3"})(["display:flex;flex-direction:column;align-items:flex-start;"]),d=e(o).attrs({variant:"body-s-semibold"}).withConfig({displayName:"styled__TooltipLabelBold",componentId:"sc-1kd2o9y-4"})([""]),c=e(o).attrs({component:"code",variant:"body-s-medium"}).withConfig({displayName:"styled__TooltipCode",componentId:"sc-1kd2o9y-5"})(["display:inline-flex;border-radius:4px;background:",";"],({theme:e})=>e.colors.grayScale.gray3),p=e.div.withConfig({displayName:"styled__TooltipColumn",componentId:"sc-1kd2o9y-6"})(["display:inline-flex;flex-direction:column;align-items:center;gap:8px;"]),m=e(n).withConfig({displayName:"styled__TooltipImage",componentId:"sc-1kd2o9y-7"})(["border-radius:4px;"]);export{a as TooltipBlock,c as TooltipCode,p as TooltipColumn,m as TooltipImage,l as TooltipLabel,d as TooltipLabelBold,s as TooltipMarkdown,r as TooltipStyled};
31
+ `}}),a=e.span.withConfig({displayName:"styled__TooltipBlock",componentId:"sc-1kd2o9y-1"})(["display:inline-flex;width:max-content;max-width:","px;padding:8px;background:",";overflow:hidden;border-radius:6px;box-sizing:border-box;"],({$contentWidth:e})=>null!=e?e:260,({theme:e,$variant:t})=>{switch(t){case"primary":return e.colors.grayScale.gray2;case"secondary":return e.colors.grayScale.gray3}}),l=e(o).attrs({variant:"body-s-medium"}).withConfig({displayName:"styled__TooltipLabel",componentId:"sc-1kd2o9y-2"})(["white-space:pre-wrap;"]),s=e.div.withConfig({displayName:"styled__TooltipMarkdown",componentId:"sc-1kd2o9y-3"})(["display:flex;flex-direction:column;align-items:flex-start;"]),d=e(o).attrs({variant:"body-s-semibold"}).withConfig({displayName:"styled__TooltipLabelBold",componentId:"sc-1kd2o9y-4"})([""]),c=e(o).attrs({component:"code",variant:"body-s-medium"}).withConfig({displayName:"styled__TooltipCode",componentId:"sc-1kd2o9y-5"})(["display:inline-flex;border-radius:4px;background:",";"],({theme:e})=>e.colors.grayScale.gray3),p=e.div.withConfig({displayName:"styled__TooltipColumn",componentId:"sc-1kd2o9y-6"})(["display:inline-flex;flex-direction:column;align-items:center;gap:8px;"]),m=e(n).withConfig({displayName:"styled__TooltipImage",componentId:"sc-1kd2o9y-7"})(["border-radius:4px;"]);export{a as TooltipBlock,c as TooltipCode,p as TooltipColumn,m as TooltipImage,l as TooltipLabel,d as TooltipLabelBold,s as TooltipMarkdown,r as TooltipStyled};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bothub-chat/ui",
3
- "version": "2.51.5-develop-a968c70b-4a05-4d81-9b66-5be2547683bf",
3
+ "version": "2.51.5-develop-128a7131-b055-4ba0-aeb2-c65583137dd8",
4
4
  "description": "Bothub UI Components",
5
5
  "keywords": [
6
6
  "bot",