@bothub-chat/ui 2.51.5-develop-a968c70b-4a05-4d81-9b66-5be2547683bf → 2.51.5-develop-4075c45f-ab0d-4f44-a458-a65269346796

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.
@@ -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 {};
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-4075c45f-ab0d-4f44-a458-a65269346796",
4
4
  "description": "Bothub UI Components",
5
5
  "keywords": [
6
6
  "bot",