@bothub-chat/ui
Version:
Bothub UI Components
2 lines (1 loc) • 1.72 kB
JavaScript
import{jsxs as i,jsx as e}from"react/jsx-runtime";import{useState as r,useCallback as t,useMemo as o,useEffect as n}from"react";import{useDelayedVisible as s}from"../../../utils/useDelayedVisible.js";import{useMeasure as l}from"../../../utils/useMeasure.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"tslib";import{LoaderCircularGradient2Icon as m}from"../../../icons/loader-circular-gradient-2/index.js";import{MessageMarkdown as a}from"../markdown/index.js";import{ReasoningBlockStyled as d,ReasoningBlockHeader as c,ReasoningBlockButton as p,ReasoningBlockButtonArrow as u,ReasoningBlockContentWrapper as h}from"./styled.js";import{reasoningComponentsOverride as f}from"./markdown-components.js";const g=({content:g,buttonText:j,isReasoning:y,fullWidth:$=!1})=>{const[b,k]=r(!1),x=t(()=>{y||k(i=>!i)},[y]),v=o(()=>"string"==typeof g?(i=>{let e=i;return e=e.replace(/([.!?…»")\]])[ \t]*\n?(\*\*[A-ZА-ЯЁ])/g,"$1\n\n$2"),e=e.replace(/([^\n])\n(#{1,6}\s)/g,"$1\n\n$2"),e})(g):g,[g]),[w,M]=l(),W=Math.max(Math.min(M.height,650),300),{delayedVisible:z,mounted:A}=s(b,0,W);return n(()=>{k(!!y)},[y]),i(d,{$fullWidth:$,children:[i(c,{children:[i(p,{onClick:x,disabled:y||!g,children:[j,!y&&!!g&&e(u,{$isOpen:b,size:16})]}),y&&e(m,{size:16})]}),A&&e(h,{$isReasoning:!!y,$fullWidth:$,style:{"--reasoning-block-animation-duration":W/1e3+"s",height:b&&z?y?"auto":M.height:0},children:i("div",{ref:w,children:[e("div",{}),e("div",{children:"string"==typeof v?e(a,{componentsOverride:f,disableTyping:!0,children:v}):v})]})})]})};export{g as MessageReasoningBlock};