@webority/chat-react 0.79.0 → 0.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/chat-react.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ChatApiError as e,DEFAULT_CHAT_LABELS as t,createChatClient as n,createSseParser as r,linkRoute as i,mergeLabels as a,parseBlocks as o,parseInline as s}from"@webority/ui-elements/chat-core";import{AppActionIcon as c,AppAlert as l,AppButton as u,AppCard as d,AppChip as f,AppConfirmDialog as p,AppDataTable as m,AppEmptyState as h,AppIcon as g,AppLink as _,AppSidebarMenu as v,AppSkeleton as y,AppSpinner as b,AppTextarea as x,useFloatingStack as S}from"@webority/ui-react";import{Fragment as C,useCallback as w,useEffect as T,useId as E,useRef as D,useState as O}from"react";import{Fragment as k,jsx as A,jsxs as j}from"react/jsx-runtime";import{createPortal as M}from"react-dom";function N(e,t){return e.kind===`Reply`?t.actionReply(e.ticketNumber):e.kind===`Reopen`?t.actionReopen(e.ticketNumber):t.actionRaiseTicket}function P(e,t,n){return e===`Reply`?n.actionDoneReply(t):e===`Reopen`?n.actionDoneReopen(t):n.actionDoneRaiseTicket(t)}function F({action:e,confirmAction:t,onViewTicket:n,labels:r}){let i=a(r),[o,s]=O(`ready`),[c,f]=O(null),[p,m]=O(``);if(o===`dismissed`)return A(`p`,{className:`wui-text-sm text-body-secondary mb-0`,children:i.actionDismissed});if(o===`done`)return A(l,{variant:`success`,role:`status`,size:`sm`,action:n?A(u,{size:`sm`,variant:`ghost`,onClick:()=>n(c),children:i.viewTicket}):void 0,children:P(e.kind,c.number,i)});async function h(){s(`sending`),m(``);try{f(await t(e.token)),s(`done`)}catch(e){m(e?.message||i.actionFailed),s(`ready`)}}let g=o===`sending`,_=new Date(e.expiresDateTimeUtc).getTime()<=Date.now(),v=e.kind===`RaiseTicket`?[e.category,e.subject].filter(Boolean).join(` · `):``;return A(d,{padding:`sm`,className:`border`,title:N(e,i),subtitle:v||void 0,children:j(`div`,{className:`d-flex flex-column gap-2`,children:[e.kind!==`Reopen`&&e.body&&A(`p`,{className:`wui-text-sm mb-0`,style:{whiteSpace:`pre-wrap`,overflowWrap:`anywhere`},children:e.body}),_?A(`p`,{className:`wui-text-sm text-body-secondary mb-0`,children:i.actionExpired}):j(k,{children:[A(`p`,{className:`wui-text-xs text-body-secondary mb-0`,children:i.actionNote}),p&&A(l,{size:`sm`,variant:`danger`,children:p}),j(`div`,{className:`d-flex flex-wrap gap-2`,children:[A(u,{size:`sm`,loading:g,onClick:h,children:i.actionConfirm}),A(u,{size:`sm`,variant:`secondary`,disabled:g,onClick:()=>s(`dismissed`),children:i.actionDismiss})]})]})]})})}function I({onSubmit:e,busy:t=!1,disabled:n=!1,maxLength:r=4e3,inputRef:i,labels:o}){let s=a(o),c=E(),[l,d]=O(``),f=t||n||!l.trim();function p(){f||(e(l.trim()),d(``))}return j(`form`,{className:`wui-chat-composer d-flex align-items-end gap-2`,"aria-label":s.composer,onSubmit:e=>{e.preventDefault(),p()},children:[A(x,{id:`${c}-message`,"aria-label":s.composer,"aria-describedby":`${c}-hint`,placeholder:s.placeholder,rows:1,autoGrow:!0,maxLength:r,value:l,disabled:n,ref:i,fieldClassName:`flex-grow-1 mb-0`,onChange:e=>d(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),p())}}),A(`span`,{id:`${c}-hint`,className:`visually-hidden`,children:s.composerHint}),A(u,{type:`submit`,leftIcon:`send`,disabled:f,children:A(`span`,{className:`visually-hidden`,children:s.send})})]})}var L=new Intl.DateTimeFormat(`en-IN`,{day:`2-digit`,month:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0,timeZoneName:`short`}),R=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function z(e){if(!e)return`-`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`-`;let n=Object.fromEntries(L.formatToParts(t).map(e=>[e.type,e.value]));return`${n.day} ${R[Number(n.month)-1]} ${n.year}, ${n.hour}:${n.minute} ${n.dayPeriod.toLowerCase()} ${n.timeZoneName}`}function B({client:e,onOpen:t,onDeleted:n,pageSize:r=20,labels:i}){let o=a(i),[s,f]=O([]),[m,g]=O(!0),[_,v]=O(``),[b,x]=O(!1),[S,C]=O(0),[E,D]=O(null),[k,M]=O(!1),[N,P]=O(``),F=w(async t=>{g(!0),v(``);try{let n=await e.listConversations({skip:t,take:r});f(e=>t===0?n:[...e,...n]),x(n.length===r)}catch(e){v(e?.message||o.loadFailed)}finally{g(!1)}},[e,r,o.loadFailed]);T(()=>{F(0)},[F,S]);async function I(){M(!0),P(``);try{await e.deleteConversation(E.publicId),f(e=>e.filter(e=>e.publicId!==E.publicId)),n?.(E.publicId),D(null)}catch(e){P(e?.message||o.deleteFailed)}finally{M(!1)}}return!m&&!_&&s.length===0?A(h,{icon:`chat`,size:`sm`,title:o.conversationsEmptyTitle,text:o.conversationsEmptyText}):j(`div`,{className:`d-flex flex-column gap-3`,children:[_&&A(l,{variant:`danger`,action:A(u,{size:`sm`,variant:`secondary`,onClick:()=>C(e=>e+1),children:o.retry}),children:_}),s.length>0&&A(`ul`,{className:`list-unstyled d-flex flex-column gap-2 mb-0`,"aria-label":o.conversations,children:s.map(e=>A(`li`,{children:j(d,{padding:`sm`,className:`border`,bodyClassName:`d-flex align-items-center gap-2`,children:[A(u,{variant:`ghost`,className:`flex-grow-1 text-start`,style:{minWidth:0},onClick:()=>t(e),children:j(`span`,{className:`d-flex flex-column`,style:{minWidth:0},children:[A(`span`,{className:`text-truncate fw-semibold`,children:e.title||o.untitled}),A(`time`,{dateTime:e.lastMessageDateTimeUtc,className:`wui-text-xs text-body-secondary`,children:z(e.lastMessageDateTimeUtc)})]})}),A(c,{icon:`trash-2`,danger:!0,label:o.deleteConversation,onClick:()=>{P(``),D(e)}})]})},e.publicId))}),m&&j(`div`,{className:`d-flex flex-column gap-2`,"aria-hidden":`true`,children:[A(y,{height:44}),A(y,{height:44}),A(y,{height:44})]}),!m&&b&&A(u,{variant:`secondary`,className:`align-self-center`,onClick:()=>F(s.length),children:o.loadMore}),A(p,{open:E!==null,title:o.deleteConfirmTitle,message:N?A(l,{variant:`danger`,children:N}):o.deleteConfirmMessage,confirmLabel:o.deleteConfirm,cancelLabel:o.cancel,danger:!0,loading:k,onConfirm:I,onClose:()=>{k||D(null)}})]})}var V={zIndex:`var(--wui-z-fixed)`,bottom:0},H={end:{insetInlineEnd:0},start:{insetInlineStart:0}};function U({onClick:e,open:t=!1,position:n=`end`,icon:r=`sparkles`,compact:i=!1,className:o,style:s,labels:c}){let l=a(c);return i?A(W,{onClick:e,open:t,position:n,icon:r,className:o,style:s,label:l.launcher}):A(`span`,{"data-support-capture":`exclude`,className:[`position-fixed m-3`,o].filter(Boolean).join(` `),style:{...V,...H[n],...s},children:A(u,{leftIcon:r,className:`rounded-pill`,onClick:e,"aria-haspopup":`dialog`,"aria-expanded":t,children:l.launcher})})}function W({onClick:e,open:t,position:n,icon:r,className:i,style:a,label:o}){let s=S(n);return s?M(A(`span`,{className:[`wui-floating-stack-item wui-floating-stack-item--primary`,i].filter(Boolean).join(` `),style:a,children:A(u,{className:`wui-floating-btn`,onClick:e,"aria-label":o,"aria-haspopup":`dialog`,"aria-expanded":t,tooltip:o,tooltipPlacement:n===`start`?`end`:`start`,children:A(g,{name:r,size:24})})}),s):null}function G({tokens:e,resolveLink:t,linkComponent:n}){return e.map(e=>{switch(e.type){case`code`:return A(`code`,{children:e.text},e.key);case`strong`:return A(`strong`,{children:A(G,{tokens:e.children,resolveLink:t,linkComponent:n})},e.key);case`em`:return A(`em`,{children:A(G,{tokens:e.children,resolveLink:t,linkComponent:n})},e.key);case`link`:{let r=A(G,{tokens:e.children,resolveLink:t,linkComponent:n}),a=i(e.href,t);return a?A(_,{href:a,linkComponent:n,animation:`static`,children:r},e.key):A(`span`,{children:r},e.key)}default:return A(C,{children:e.text},e.key)}})}function K({text:e,resolveLink:t,linkComponent:n}){return A(G,{tokens:s(e),resolveLink:t,linkComponent:n})}function q({block:e,resolveLink:t,linkComponent:n}){let r=e=>A(K,{text:e,resolveLink:t,linkComponent:n});switch(e.type){case`heading`:return A(`p`,{className:`fw-semibold mb-2`,children:r(e.text)});case`rule`:return A(`hr`,{className:`my-2`});case`code`:return A(`pre`,{className:`wui-text-sm mb-2`,children:A(`code`,{children:e.text})});case`list`:{let t=e.items.map((e,t)=>A(`li`,{children:r(e)},t));return e.ordered?A(`ol`,{className:`mb-2 ps-4`,start:e.start===1?void 0:e.start,children:t}):A(`ul`,{className:`mb-2 ps-4`,children:t})}case`table`:return A(m,{columns:e.header.map((e,t)=>({key:`c${t}`,label:r(e),render:e=>r(e.cells[t]??``)})),rows:e.rows.map((e,t)=>({id:t,cells:e})),density:`compact`,empty:null,wrapperClassName:`mb-2`});default:return A(`p`,{className:`mb-2`,children:e.lines.map((e,t)=>j(`span`,{children:[t>0&&A(`br`,{}),r(e)]},t))})}}function J({text:e,resolveLink:t,linkComponent:n,className:r}){let i=o(e);return A(`div`,{className:[`wui-text-sm text-break`,r].filter(Boolean).join(` `),children:i.map(e=>A(q,{block:e,resolveLink:t,linkComponent:n},e.key))})}function Y({rating:e=null,onRate:t,noteMaxLength:n=1e3,labels:r}){let i=a(r),o=E(),[s,c]=O(!1),[d,f]=O(!1),[p,m]=O(``),[h,g]=O(``),[_,v]=O(!1);async function y(e,n){c(!0),g(``);try{await t(e,n),f(e===`Down`&&n===void 0),v(e===`Up`||n!==void 0),n!==void 0&&m(``)}catch{g(i.ratingFailed)}finally{c(!1)}}return j(`div`,{className:`d-flex flex-column gap-2`,children:[j(`div`,{className:`d-flex flex-wrap align-items-center gap-1`,children:[A(u,{size:`sm`,variant:e===`Up`?`neutral`:`ghost`,leftIcon:`check`,"aria-pressed":e===`Up`,disabled:s,onClick:()=>y(`Up`),children:i.rateUp}),A(u,{size:`sm`,variant:e===`Down`?`neutral`:`ghost`,leftIcon:`x`,"aria-pressed":e===`Down`,disabled:s,onClick:()=>y(`Down`),children:i.rateDown}),_&&!d&&A(`span`,{className:`wui-text-xs text-body-secondary`,role:`status`,children:i.rated})]}),h&&A(l,{size:`sm`,variant:`danger`,children:h}),d&&j(`form`,{className:`d-flex flex-column gap-2`,onSubmit:e=>{e.preventDefault(),y(`Down`,p)},children:[A(x,{id:`${o}-note`,label:i.ratingNote,hint:i.ratingNoteHint,rows:2,maxLength:n,value:p,onChange:e=>m(e.target.value)}),j(`div`,{className:`d-flex gap-2`,children:[A(u,{type:`submit`,size:`sm`,loading:s,children:i.ratingNoteSend}),A(u,{size:`sm`,variant:`secondary`,disabled:s,onClick:()=>{f(!1),v(!0)},children:i.ratingNoteSkip})]})]})]})}var X={maxWidth:`85%`,whiteSpace:`pre-wrap`,overflowWrap:`anywhere`};function Z({turn:e,onRate:t,resolveLink:n,linkComponent:r,confirmAction:i,onViewTicket:o,renderReply:s,labels:c}){let u=a(c),f=e.streaming&&!e.answer;return j(`li`,{className:`d-flex flex-column gap-2`,children:[e.question&&j(`div`,{className:`align-self-end`,style:X,children:[j(`span`,{className:`visually-hidden`,children:[u.you,`: `]}),A(d,{padding:`sm`,variant:`muted`,className:`wui-text-sm`,children:e.question})]}),j(`div`,{className:`d-flex flex-column gap-2`,style:{minWidth:0},children:[j(`span`,{className:`visually-hidden`,children:[u.assistant,`: `]}),A(`div`,{"aria-live":`polite`,"aria-busy":e.streaming,children:f?j(`span`,{className:`d-inline-flex align-items-center gap-2 wui-text-sm text-body-secondary`,children:[A(b,{size:`sm`,label:u.thinking}),A(`span`,{"aria-hidden":`true`,children:u.thinking})]}):e.answer&&(s?s(e,{streaming:!!e.streaming}):A(J,{text:e.answer,resolveLink:n,linkComponent:r}))}),e.error&&A(l,{size:`sm`,variant:`danger`,children:e.error.message}),i&&!e.streaming&&e.actions.map(e=>A(F,{action:e,confirmAction:i,onViewTicket:o,labels:c},e.token)),t&&e.messageId&&!e.streaming&&A(Y,{rating:e.rating,onRate:(n,r)=>t(e.id,n,r),labels:c})]})]})}function ee(e){for(let t=e?.parentElement;t&&t!==document.body;t=t.parentElement){let{overflowY:e}=getComputedStyle(t);if((e===`auto`||e===`scroll`)&&t.scrollHeight>t.clientHeight)return t}return null}function Q({turns:e,empty:t,onRate:n,resolveLink:r,linkComponent:i,confirmAction:o,onViewTicket:s,renderReply:c,labels:l}){let u=a(l),d=D(null),f=e[e.length-1];return T(()=>{let e=ee(d.current);e&&(e.scrollTop=e.scrollHeight)},[e.length,f?.answer,f?.error,f?.actions]),e.length===0?t??A(h,{icon:`sparkles`,size:`sm`,title:u.emptyTitle,text:u.emptyText}):j(k,{children:[A(`ol`,{className:`list-unstyled d-flex flex-column gap-3 mb-0`,"aria-label":u.thread,children:e.map(e=>A(Z,{turn:e,onRate:n,resolveLink:r,linkComponent:i,confirmAction:o,onViewTicket:s,renderReply:c,labels:l},e.id))}),A(`div`,{ref:d})]})}function te({chat:e,open:t,onClose:n,title:r,titleIcon:i=`sparkles`,headerActions:o,empty:s,disclaimer:u,maxLength:d=4e3,allowanceThreshold:f=10,width:p=`440px`,resolveLink:m,linkComponent:h,confirmAction:_,onViewTicket:y,rating:x=!0,renderReply:S,labels:C}){let w=a(C),E=D(null),{refreshAllowance:O}=e;T(()=>{t&&O().catch(()=>{})},[t,O]);let k=e.messagesLeftToday,M=r??w.panelTitle;return A(v,{show:t,onHide:n,side:`right`,width:p,header:j(`div`,{className:`drawer-header`,children:[j(`div`,{className:`drawer-title`,children:[i&&A(`span`,{className:`drawer-title-ic`,children:A(g,{name:i,size:18})}),M]}),j(`div`,{className:`d-flex align-items-center gap-1`,children:[o,A(c,{icon:`plus`,label:w.newChat,onClick:e.newConversation,disabled:e.turns.length===0&&!e.loading}),A(c,{icon:`x`,label:w.close,onClick:n})]})]}),footer:j(`div`,{className:`d-flex flex-column gap-2`,children:[k!==null&&k<=f&&A(`p`,{className:`wui-text-xs text-body-secondary mb-0`,role:`status`,children:w.allowance(k)}),A(I,{onSubmit:e.submit,busy:e.streaming||e.loading,disabled:k===0,maxLength:d,inputRef:E,labels:C}),A(`p`,{className:`wui-text-xs text-body-secondary mb-0`,children:u??w.disclaimer})]}),ariaLabel:typeof M==`string`?M:w.panelTitle,onEntered:()=>E.current?.focus(),children:e.loading?A(`div`,{className:`d-flex justify-content-center py-4`,children:A(b,{label:w.loadingConversation})}):e.loadError?A(l,{variant:`danger`,children:e.loadError.message}):A(Q,{turns:e.turns,empty:s,onRate:x?e.rate:void 0,resolveLink:m,linkComponent:h,confirmAction:_,onViewTicket:y,renderReply:S,labels:C})})}var ne=/\[([^[\]]*)\](?!\()/g;function re(e,t){let n=[],r=0;for(let i of e.matchAll(ne)){let a=i[1];a===``||!t(a)||(i.index>r&&n.push({text:e.slice(r,i.index)}),n.push({citation:a}),r=i.index+i[0].length)}return r<e.length&&n.push({text:e.slice(r)}),n}function ie({citation:e,label:t,ariaLabel:n,onOpen:r}){return A(f,{label:t??e,size:`sm`,tone:`primary`,variant:`outline`,leadingIcon:`book-1`,"aria-label":n??e,onClick:()=>r(e)})}function ae({title:e,subtitle:t,lines:n,note:r,onConfirm:i,labels:o}){let s=a(o),[c,f]=O(`ready`),[p,m]=O(null),[h,g]=O(``);if(c===`dismissed`)return A(`p`,{className:`wui-text-sm text-body-secondary mb-0`,children:s.actionDismissed});if(c===`done`)return A(l,{variant:`success`,role:`status`,size:`sm`,children:p?.message||s.actionDone});async function _(){f(`sending`),g(``);try{let e=await i();m(e??null),f(`done`)}catch(e){g(e?.message||s.actionFailed),f(`ready`)}}let v=c===`sending`;return A(d,{padding:`sm`,className:`border`,title:e,subtitle:t||void 0,children:j(`div`,{className:`d-flex flex-column gap-2`,children:[(n??[]).map((e,t)=>A(`p`,{className:`wui-text-sm mb-0`,style:{whiteSpace:`pre-wrap`,overflowWrap:`anywhere`},children:e},t)),A(`p`,{className:`wui-text-xs text-body-secondary mb-0`,children:r??s.actionNote}),h&&A(l,{size:`sm`,variant:`danger`,children:h}),j(`div`,{className:`d-flex flex-wrap gap-2`,children:[A(u,{size:`sm`,loading:v,onClick:_,children:s.actionConfirm}),A(u,{size:`sm`,variant:`secondary`,disabled:v,onClick:()=>f(`dismissed`),children:s.actionDismiss})]})]})})}function $(e){return{code:e?.code||`unknown`,message:e?.message||`Something went wrong. Please try again.`,resetsAtUtc:e?.resetsAtUtc??null}}function oe(e){if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t:[]}function se(e){let t=[];for(let n of e??[]){if(n.role===`User`){t.push({id:n.publicId,question:n.content,answer:``,streaming:!1,step:null,error:null,actions:[],messageId:null,rating:null,ratingNote:null});continue}let e=t[t.length-1],r={answer:n.content,actions:oe(n.actionsJson),messageId:n.publicId,rating:n.rating??null,ratingNote:n.ratingNote??null};e&&e.messageId===null&&e.answer===``?Object.assign(e,r):t.push({id:n.publicId,question:``,streaming:!1,step:null,error:null,...r})}return t}function ce({client:e,pageContext:t}){let[n,r]=O([]),[i,a]=O(null),[o,s]=O(null),[c,l]=O(!1),[u,d]=O(null),f=D(null),p=D(0),m=D(0),h=D(t);h.current=t;let g=D(null);g.current=i;let _=D(n);_.current=n;let v=w(()=>{p.current+=1,f.current?.abort(),f.current=null},[]);T(()=>v,[v]);let y=w((e,t)=>{r(n=>n.map(n=>n.id===e?{...n,...typeof t==`function`?t(n):t}:n))},[]),b=w(async t=>{let n=typeof t==`string`?t.trim():``;if(!n||f.current)return;let i=p.current,o=new AbortController;f.current=o,m.current+=1;let c=`turn-${m.current}`;r(e=>[...e,{id:c,question:n,answer:``,streaming:!0,step:null,error:null,actions:[],messageId:null,rating:null,ratingNote:null}]);let l=()=>i===p.current&&!o.signal.aborted;try{let t=await e.sendMessage({message:n,conversationId:g.current,pageContext:h.current},{signal:o.signal,onEvent:(e,t)=>{l()&&(e===`delta`?y(c,e=>({answer:e.answer+(t?.text??``),step:null})):e===`reset`?y(c,{answer:``,step:null}):e===`tool`?y(c,{step:typeof t?.toolName==`string`&&t.toolName?t.toolName:null}):e===`actions`&&y(c,{actions:Array.isArray(t?.actions)?t.actions:[]}))}});if(!l())return;y(c,{answer:t.reply,messageId:t.messageId??null,streaming:!1,step:null}),g.current=t.conversationId,a(t.conversationId),s(t.messagesLeftToday??null)}catch(e){if(!l())return;y(c,{answer:``,actions:[],streaming:!1,step:null,error:$(e)}),e?.code===`daily_limit`&&s(0),e?.code===`conversation_not_found`&&(g.current=null,a(null))}finally{f.current===o&&(f.current=null)}},[e,y]),x=w(async t=>{v();let n=p.current;r([]),a(null),d(null),l(!0);try{let i=await e.getConversation(t);if(n!==p.current)return;r(se(i.messages)),a(i.publicId)}catch(e){if(n!==p.current)return;d($(e))}finally{n===p.current&&l(!1)}},[v,e]),S=w(()=>{v(),r([]),a(null),d(null),l(!1)},[v]),C=w(()=>{v(),r([]),a(null),s(null),d(null),l(!1)},[v]),E=w(async()=>{let t=p.current,n=await e.getAllowance();t===p.current&&s(n?.messagesLeftToday??null)},[e]),k=w(async(t,n,r)=>{let i=_.current.find(e=>e.id===t),a=g.current;if(!i?.messageId||!a)throw Error(`Only a stored reply can be rated.`);let o={rating:i.rating,ratingNote:i.ratingNote},s=typeof r==`string`&&r.trim()?r.trim():null;y(t,{rating:n,ratingNote:s});try{await e.rateMessage(a,i.messageId,{rating:n,note:s})}catch(e){throw y(t,o),e}},[e,y]);return{turns:n,conversationId:i,messagesLeftToday:o,streaming:n.some(e=>e.streaming),loading:c,loadError:u,submit:b,openConversation:x,newConversation:S,rate:k,refreshAllowance:E,reset:C}}export{F as ActionCard,e as ChatApiError,I as ChatComposer,B as ChatConversationList,U as ChatLauncher,J as ChatMarkdown,Z as ChatMessage,te as ChatPanel,Q as ChatThread,ie as CitationChip,ae as ConfirmCard,t as DEFAULT_CHAT_LABELS,Y as ReplyRating,n as createChatClient,r as createSseParser,re as splitCitations,ce as useChat};
|
|
1
|
+
import{ChatApiError as e,DEFAULT_CHAT_LABELS as t,createChatClient as n,createSseParser as r,linkRoute as i,mergeLabels as a,parseBlocks as o,parseInline as s}from"@webority/ui-elements/chat-core";import{AppActionIcon as c,AppAlert as l,AppButton as u,AppCard as d,AppChip as f,AppConfirmDialog as p,AppDataTable as m,AppEmptyState as h,AppIcon as g,AppLink as _,AppSidebarMenu as v,AppSkeleton as y,AppSpinner as b,AppTextarea as x,useFloatingStack as S}from"@webority/ui-react";import{Fragment as C,memo as w,startTransition as T,useCallback as E,useEffect as D,useId as O,useMemo as k,useRef as A,useState as j}from"react";import{Fragment as M,jsx as N,jsxs as P}from"react/jsx-runtime";import{createPortal as F}from"react-dom";function I(e,t){return e.kind===`Reply`?t.actionReply(e.ticketNumber):e.kind===`Reopen`?t.actionReopen(e.ticketNumber):t.actionRaiseTicket}function ee(e,t,n){return e===`Reply`?n.actionDoneReply(t):e===`Reopen`?n.actionDoneReopen(t):n.actionDoneRaiseTicket(t)}function L({action:e,confirmAction:t,onViewTicket:n,labels:r}){let i=a(r),[o,s]=j(`ready`),[c,f]=j(null),[p,m]=j(``);if(o===`dismissed`)return N(`p`,{className:`wui-text-sm text-body-secondary mb-0`,children:i.actionDismissed});if(o===`done`)return N(l,{variant:`success`,role:`status`,size:`sm`,action:n?N(u,{size:`sm`,variant:`ghost`,onClick:()=>n(c),children:i.viewTicket}):void 0,children:ee(e.kind,c.number,i)});async function h(){s(`sending`),m(``);try{f(await t(e.token)),s(`done`)}catch(e){m(e?.message||i.actionFailed),s(`ready`)}}let g=o===`sending`,_=new Date(e.expiresDateTimeUtc).getTime()<=Date.now(),v=e.kind===`RaiseTicket`?[e.category,e.subject].filter(Boolean).join(` · `):``;return N(d,{padding:`sm`,className:`border`,title:I(e,i),subtitle:v||void 0,children:P(`div`,{className:`d-flex flex-column gap-2`,children:[e.kind!==`Reopen`&&e.body&&N(`p`,{className:`wui-text-sm mb-0`,style:{whiteSpace:`pre-wrap`,overflowWrap:`anywhere`},children:e.body}),_?N(`p`,{className:`wui-text-sm text-body-secondary mb-0`,children:i.actionExpired}):P(M,{children:[N(`p`,{className:`wui-text-xs text-body-secondary mb-0`,children:i.actionNote}),p&&N(l,{size:`sm`,variant:`danger`,children:p}),P(`div`,{className:`d-flex flex-wrap gap-2`,children:[N(u,{size:`sm`,loading:g,onClick:h,children:i.actionConfirm}),N(u,{size:`sm`,variant:`secondary`,disabled:g,onClick:()=>s(`dismissed`),children:i.actionDismiss})]})]})]})})}function R({onSubmit:e,busy:t=!1,disabled:n=!1,maxLength:r=4e3,inputRef:i,labels:o}){let s=a(o),c=O(),[l,d]=j(``),f=t||n||!l.trim();function p(){f||(e(l.trim()),d(``))}return P(`form`,{className:`wui-chat-composer d-flex align-items-end gap-2`,"aria-label":s.composer,onSubmit:e=>{e.preventDefault(),p()},children:[N(x,{id:`${c}-message`,"aria-label":s.composer,"aria-describedby":`${c}-hint`,placeholder:s.placeholder,rows:1,autoGrow:!0,maxLength:r,value:l,disabled:n,ref:i,fieldClassName:`flex-grow-1 mb-0`,onChange:e=>d(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),p())}}),N(`span`,{id:`${c}-hint`,className:`visually-hidden`,children:s.composerHint}),N(u,{type:`submit`,leftIcon:`send`,disabled:f,children:N(`span`,{className:`visually-hidden`,children:s.send})})]})}var z=new Intl.DateTimeFormat(`en-IN`,{day:`2-digit`,month:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0,timeZoneName:`short`}),B=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function V(e){if(!e)return`-`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`-`;let n=Object.fromEntries(z.formatToParts(t).map(e=>[e.type,e.value]));return`${n.day} ${B[Number(n.month)-1]} ${n.year}, ${n.hour}:${n.minute} ${n.dayPeriod.toLowerCase()} ${n.timeZoneName}`}function H({client:e,onOpen:t,onDeleted:n,pageSize:r=20,labels:i}){let o=a(i),[s,f]=j([]),[m,g]=j(!0),[_,v]=j(``),[b,x]=j(!1),[S,C]=j(0),[w,T]=j(null),[O,k]=j(!1),[A,M]=j(``),F=E(async t=>{g(!0),v(``);try{let n=await e.listConversations({skip:t,take:r});f(e=>t===0?n:[...e,...n]),x(n.length===r)}catch(e){v(e?.message||o.loadFailed)}finally{g(!1)}},[e,r,o.loadFailed]);D(()=>{F(0)},[F,S]);async function I(){k(!0),M(``);try{await e.deleteConversation(w.publicId),f(e=>e.filter(e=>e.publicId!==w.publicId)),n?.(w.publicId),T(null)}catch(e){M(e?.message||o.deleteFailed)}finally{k(!1)}}return!m&&!_&&s.length===0?N(h,{icon:`chat`,size:`sm`,title:o.conversationsEmptyTitle,text:o.conversationsEmptyText}):P(`div`,{className:`d-flex flex-column gap-3`,children:[_&&N(l,{variant:`danger`,action:N(u,{size:`sm`,variant:`secondary`,onClick:()=>C(e=>e+1),children:o.retry}),children:_}),s.length>0&&N(`ul`,{className:`list-unstyled d-flex flex-column gap-2 mb-0`,"aria-label":o.conversations,children:s.map(e=>N(`li`,{children:P(d,{padding:`sm`,className:`border`,bodyClassName:`d-flex align-items-center gap-2`,children:[N(u,{variant:`ghost`,className:`flex-grow-1 text-start`,style:{minWidth:0},onClick:()=>t(e),children:P(`span`,{className:`d-flex flex-column`,style:{minWidth:0},children:[N(`span`,{className:`text-truncate fw-semibold`,children:e.title||o.untitled}),N(`time`,{dateTime:e.lastMessageDateTimeUtc,className:`wui-text-xs text-body-secondary`,children:V(e.lastMessageDateTimeUtc)})]})}),N(c,{icon:`trash-2`,danger:!0,label:o.deleteConversation,onClick:()=>{M(``),T(e)}})]})},e.publicId))}),m&&P(`div`,{className:`d-flex flex-column gap-2`,"aria-hidden":`true`,children:[N(y,{height:44}),N(y,{height:44}),N(y,{height:44})]}),!m&&b&&N(u,{variant:`secondary`,className:`align-self-center`,onClick:()=>F(s.length),children:o.loadMore}),N(p,{open:w!==null,title:o.deleteConfirmTitle,message:A?N(l,{variant:`danger`,children:A}):o.deleteConfirmMessage,confirmLabel:o.deleteConfirm,cancelLabel:o.cancel,danger:!0,loading:O,onConfirm:I,onClose:()=>{O||T(null)}})]})}var U={zIndex:`var(--wui-z-fixed)`,bottom:0},W={end:{insetInlineEnd:0},start:{insetInlineStart:0}};function G({onClick:e,open:t=!1,position:n=`end`,icon:r=`sparkles`,compact:i=!1,className:o,style:s,labels:c}){let l=a(c);return i?N(K,{onClick:e,open:t,position:n,icon:r,className:o,style:s,label:l.launcher}):N(`span`,{"data-support-capture":`exclude`,className:[`position-fixed m-3`,o].filter(Boolean).join(` `),style:{...U,...W[n],...s},children:N(u,{leftIcon:r,className:`rounded-pill`,onClick:e,"aria-haspopup":`dialog`,"aria-expanded":t,children:l.launcher})})}function K({onClick:e,open:t,position:n,icon:r,className:i,style:a,label:o}){let s=S(n);return s?F(N(`span`,{className:[`wui-floating-stack-item wui-floating-stack-item--primary`,i].filter(Boolean).join(` `),style:a,children:N(u,{className:`wui-floating-btn`,onClick:e,"aria-label":o,"aria-haspopup":`dialog`,"aria-expanded":t,tooltip:o,tooltipPlacement:n===`start`?`end`:`start`,children:N(g,{name:r,size:24})})}),s):null}function q({tokens:e,resolveLink:t,linkComponent:n}){return e.map(e=>{switch(e.type){case`code`:return N(`code`,{children:e.text},e.key);case`strong`:return N(`strong`,{children:N(q,{tokens:e.children,resolveLink:t,linkComponent:n})},e.key);case`em`:return N(`em`,{children:N(q,{tokens:e.children,resolveLink:t,linkComponent:n})},e.key);case`link`:{let r=N(q,{tokens:e.children,resolveLink:t,linkComponent:n}),a=i(e.href,t);return a?N(_,{href:a,linkComponent:n,animation:`static`,children:r},e.key):N(`span`,{children:r},e.key)}default:return N(C,{children:e.text},e.key)}})}function J({text:e,resolveLink:t,linkComponent:n}){return N(q,{tokens:s(e),resolveLink:t,linkComponent:n})}function te({block:e,resolveLink:t,linkComponent:n}){let r=e=>N(J,{text:e,resolveLink:t,linkComponent:n}),i=k(()=>e.type===`table`?{columns:e.header.map((e,r)=>({key:`c${r}`,label:N(J,{text:e,resolveLink:t,linkComponent:n}),render:e=>N(J,{text:e.cells[r]??``,resolveLink:t,linkComponent:n})})),rows:e.rows.map((e,t)=>({id:t,cells:e}))}:null,[e,t,n]);switch(e.type){case`heading`:return N(`p`,{className:`fw-semibold mb-2`,children:r(e.text)});case`rule`:return N(`hr`,{className:`my-2`});case`code`:return N(`pre`,{className:`wui-text-sm mb-2`,children:N(`code`,{children:e.text})});case`list`:{let t=e.items.map((e,t)=>N(`li`,{children:r(e)},t));return e.ordered?N(`ol`,{className:`mb-2 ps-4`,start:e.start===1?void 0:e.start,children:t}):N(`ul`,{className:`mb-2 ps-4`,children:t})}case`table`:return N(m,{columns:i.columns,rows:i.rows,density:`compact`,empty:null,wrapperClassName:`mb-2`});default:return N(`p`,{className:`mb-2`,children:e.lines.map((e,t)=>P(`span`,{children:[t>0&&N(`br`,{}),r(e)]},t))})}}function Y({text:e,resolveLink:t,linkComponent:n,className:r}){let i=k(()=>o(e),[e]);return N(`div`,{className:[`wui-text-sm text-break`,r].filter(Boolean).join(` `),children:i.map(e=>N(te,{block:e,resolveLink:t,linkComponent:n},e.key))})}function X({rating:e=null,onRate:t,noteMaxLength:n=1e3,labels:r}){let i=a(r),o=O(),[s,c]=j(!1),[d,f]=j(!1),[p,m]=j(``),[h,g]=j(``),[_,v]=j(!1);async function y(e,n){c(!0),g(``);try{await t(e,n),f(e===`Down`&&n===void 0),v(e===`Up`||n!==void 0),n!==void 0&&m(``)}catch{g(i.ratingFailed)}finally{c(!1)}}return P(`div`,{className:`d-flex flex-column gap-2`,children:[P(`div`,{className:`d-flex flex-wrap align-items-center gap-1`,children:[N(u,{size:`sm`,variant:e===`Up`?`neutral`:`ghost`,leftIcon:`check`,"aria-pressed":e===`Up`,disabled:s,onClick:()=>y(`Up`),children:i.rateUp}),N(u,{size:`sm`,variant:e===`Down`?`neutral`:`ghost`,leftIcon:`x`,"aria-pressed":e===`Down`,disabled:s,onClick:()=>y(`Down`),children:i.rateDown}),_&&!d&&N(`span`,{className:`wui-text-xs text-body-secondary`,role:`status`,children:i.rated})]}),h&&N(l,{size:`sm`,variant:`danger`,children:h}),d&&P(`form`,{className:`d-flex flex-column gap-2`,onSubmit:e=>{e.preventDefault(),y(`Down`,p)},children:[N(x,{id:`${o}-note`,label:i.ratingNote,hint:i.ratingNoteHint,rows:2,maxLength:n,value:p,onChange:e=>m(e.target.value)}),P(`div`,{className:`d-flex gap-2`,children:[N(u,{type:`submit`,size:`sm`,loading:s,children:i.ratingNoteSend}),N(u,{size:`sm`,variant:`secondary`,disabled:s,onClick:()=>{f(!1),v(!0)},children:i.ratingNoteSkip})]})]})]})}var ne={maxWidth:`85%`,whiteSpace:`pre-wrap`,overflowWrap:`anywhere`};function re({turn:e,onRate:t,resolveLink:n,linkComponent:r,confirmAction:i,onViewTicket:o,renderReply:s,labels:c}){let u=a(c),f=e.streaming&&!e.answer;return P(`li`,{className:`d-flex flex-column gap-2`,children:[e.question&&P(`div`,{className:`align-self-end`,style:ne,children:[P(`span`,{className:`visually-hidden`,children:[u.you,`: `]}),N(d,{padding:`sm`,variant:`muted`,className:`wui-text-sm`,children:e.question})]}),P(`div`,{className:`d-flex flex-column gap-2`,style:{minWidth:0},children:[P(`span`,{className:`visually-hidden`,children:[u.assistant,`: `]}),N(`div`,{"aria-live":`polite`,"aria-busy":e.streaming,children:f?P(`span`,{className:`d-inline-flex align-items-center gap-2 wui-text-sm text-body-secondary`,children:[N(b,{size:`sm`,label:u.thinking}),N(`span`,{"aria-hidden":`true`,children:u.thinking})]}):e.answer&&(s?s(e,{streaming:!!e.streaming}):N(Y,{text:e.answer,resolveLink:n,linkComponent:r}))}),e.error&&N(l,{size:`sm`,variant:`danger`,children:e.error.message}),i&&!e.streaming&&e.actions.map(e=>N(L,{action:e,confirmAction:i,onViewTicket:o,labels:c},e.token)),t&&e.messageId&&!e.streaming&&N(X,{rating:e.rating,onRate:(n,r)=>t(e.id,n,r),labels:c})]})]})}var Z=w(re);function ie(e){for(let t=e?.parentElement;t&&t!==document.body;t=t.parentElement){let{overflowY:e}=getComputedStyle(t);if((e===`auto`||e===`scroll`)&&t.scrollHeight>t.clientHeight)return t}return null}function Q({turns:e,empty:t,onRate:n,resolveLink:r,linkComponent:i,confirmAction:o,onViewTicket:s,renderReply:c,labels:l}){let u=a(l),d=A(null),f=e[e.length-1];return D(()=>{let e=ie(d.current);e&&(e.scrollTop=e.scrollHeight)},[e.length,f?.answer,f?.error,f?.actions]),e.length===0?t??N(h,{icon:`sparkles`,size:`sm`,title:u.emptyTitle,text:u.emptyText}):P(M,{children:[N(`ol`,{className:`list-unstyled d-flex flex-column gap-3 mb-0`,"aria-label":u.thread,children:e.map(e=>N(Z,{turn:e,onRate:n,resolveLink:r,linkComponent:i,confirmAction:o,onViewTicket:s,renderReply:c,labels:l},e.id))}),N(`div`,{ref:d})]})}function ae({chat:e,open:t,onClose:n,title:r,titleIcon:i=`sparkles`,headerActions:o,empty:s,disclaimer:u,maxLength:d=4e3,allowanceThreshold:f=10,width:p=`440px`,resolveLink:m,linkComponent:h,confirmAction:_,onViewTicket:y,rating:x=!0,renderReply:S,labels:C}){let w=a(C),T=A(null),{refreshAllowance:E}=e;D(()=>{t&&E().catch(()=>{})},[t,E]);let O=e.messagesLeftToday,k=r??w.panelTitle;return N(v,{show:t,onHide:n,side:`right`,width:p,header:P(`div`,{className:`drawer-header`,children:[P(`div`,{className:`drawer-title`,children:[i&&N(`span`,{className:`drawer-title-ic`,children:N(g,{name:i,size:18})}),k]}),P(`div`,{className:`d-flex align-items-center gap-1`,children:[o,N(c,{icon:`plus`,label:w.newChat,onClick:e.newConversation,disabled:e.turns.length===0&&!e.loading}),N(c,{icon:`x`,label:w.close,onClick:n})]})]}),footer:P(`div`,{className:`d-flex flex-column gap-2`,children:[O!==null&&O<=f&&N(`p`,{className:`wui-text-xs text-body-secondary mb-0`,role:`status`,children:w.allowance(O)}),N(R,{onSubmit:e.submit,busy:e.streaming||e.loading,disabled:O===0,maxLength:d,inputRef:T,labels:C}),N(`p`,{className:`wui-text-xs text-body-secondary mb-0`,children:u??w.disclaimer})]}),ariaLabel:typeof k==`string`?k:w.panelTitle,onEntered:()=>T.current?.focus(),children:e.loading?N(`div`,{className:`d-flex justify-content-center py-4`,children:N(b,{label:w.loadingConversation})}):e.loadError?N(l,{variant:`danger`,children:e.loadError.message}):N(Q,{turns:e.turns,empty:s,onRate:x?e.rate:void 0,resolveLink:m,linkComponent:h,confirmAction:_,onViewTicket:y,renderReply:S,labels:C})})}var oe=/\[([^[\]]*)\](?!\()/g;function se(e,t){let n=[],r=0;for(let i of e.matchAll(oe)){let a=i[1];a===``||!t(a)||(i.index>r&&n.push({text:e.slice(r,i.index)}),n.push({citation:a}),r=i.index+i[0].length)}return r<e.length&&n.push({text:e.slice(r)}),n}function ce({citation:e,label:t,ariaLabel:n,onOpen:r}){return N(f,{label:t??e,size:`sm`,tone:`primary`,variant:`outline`,leadingIcon:`book-1`,"aria-label":n??e,onClick:()=>r(e)})}function le({title:e,subtitle:t,lines:n,note:r,onConfirm:i,labels:o}){let s=a(o),[c,f]=j(`ready`),[p,m]=j(null),[h,g]=j(``);if(c===`dismissed`)return N(`p`,{className:`wui-text-sm text-body-secondary mb-0`,children:s.actionDismissed});if(c===`done`)return N(l,{variant:`success`,role:`status`,size:`sm`,children:p?.message||s.actionDone});async function _(){f(`sending`),g(``);try{let e=await i();m(e??null),f(`done`)}catch(e){g(e?.message||s.actionFailed),f(`ready`)}}let v=c===`sending`;return N(d,{padding:`sm`,className:`border`,title:e,subtitle:t||void 0,children:P(`div`,{className:`d-flex flex-column gap-2`,children:[(n??[]).map((e,t)=>N(`p`,{className:`wui-text-sm mb-0`,style:{whiteSpace:`pre-wrap`,overflowWrap:`anywhere`},children:e},t)),N(`p`,{className:`wui-text-xs text-body-secondary mb-0`,children:r??s.actionNote}),h&&N(l,{size:`sm`,variant:`danger`,children:h}),P(`div`,{className:`d-flex flex-wrap gap-2`,children:[N(u,{size:`sm`,loading:v,onClick:_,children:s.actionConfirm}),N(u,{size:`sm`,variant:`secondary`,disabled:v,onClick:()=>f(`dismissed`),children:s.actionDismiss})]})]})})}function $(e){return{code:e?.code||`unknown`,message:e?.message||`Something went wrong. Please try again.`,resetsAtUtc:e?.resetsAtUtc??null}}function ue(e){if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t:[]}function de(e){let t=[];for(let n of e??[]){if(n.role===`User`){t.push({id:n.publicId,question:n.content,answer:``,streaming:!1,step:null,error:null,actions:[],messageId:null,rating:null,ratingNote:null});continue}let e=t[t.length-1],r={answer:n.content,actions:ue(n.actionsJson),messageId:n.publicId,rating:n.rating??null,ratingNote:n.ratingNote??null};e&&e.messageId===null&&e.answer===``?Object.assign(e,r):t.push({id:n.publicId,question:``,streaming:!1,step:null,error:null,...r})}return t}function fe({client:e,pageContext:t}){let[n,r]=j([]),[i,a]=j(null),[o,s]=j(null),[c,l]=j(!1),[u,d]=j(null),f=A(null),p=A(0),m=A(0),h=A(t);h.current=t;let g=A(null);g.current=i;let _=A(n);_.current=n;let v=A(new Map),y=A(0),b=A(!1),x=E(()=>{let e=v.current;e.size!==0&&(v.current=new Map,T(()=>{r(t=>t.map(t=>e.has(t.id)?{...t,answer:t.answer+e.get(t.id),step:null}:t))}))},[]),S=E((e,t)=>{v.current.set(e,(v.current.get(e)??``)+t),!b.current&&(b.current=!0,y.current=requestAnimationFrame(()=>{b.current=!1,x()}))},[x]),C=E(()=>{x(),p.current+=1,f.current?.abort(),f.current=null},[x]);D(()=>C,[C]),D(()=>()=>{cancelAnimationFrame(y.current),b.current=!1},[]);let w=E((e,t)=>{r(n=>n.map(n=>n.id===e?{...n,...typeof t==`function`?t(n):t}:n))},[]),O=E(async t=>{let n=typeof t==`string`?t.trim():``;if(!n||f.current)return;let i=p.current,o=new AbortController;f.current=o,m.current+=1;let c=`turn-${m.current}`;r(e=>[...e,{id:c,question:n,answer:``,streaming:!0,step:null,error:null,actions:[],messageId:null,rating:null,ratingNote:null}]);let l=()=>i===p.current&&!o.signal.aborted;try{let t=await e.sendMessage({message:n,conversationId:g.current,pageContext:h.current},{signal:o.signal,onEvent:(e,t)=>{if(l()){if(e===`delta`){S(c,t?.text??``);return}x(),e===`reset`?w(c,{answer:``,step:null}):e===`tool`?w(c,{step:typeof t?.toolName==`string`&&t.toolName?t.toolName:null}):e===`actions`&&w(c,{actions:Array.isArray(t?.actions)?t.actions:[]})}}});if(x(),!l())return;w(c,{answer:t.reply,messageId:t.messageId??null,streaming:!1,step:null}),g.current=t.conversationId,a(t.conversationId),s(t.messagesLeftToday??null)}catch(e){if(x(),!l())return;w(c,{answer:``,actions:[],streaming:!1,step:null,error:$(e)}),e?.code===`daily_limit`&&s(0),e?.code===`conversation_not_found`&&(g.current=null,a(null))}finally{f.current===o&&(f.current=null)}},[e,w,x,S]),k=E(async t=>{C();let n=p.current;r([]),a(null),d(null),l(!0);try{let i=await e.getConversation(t);if(n!==p.current)return;r(de(i.messages)),a(i.publicId)}catch(e){if(n!==p.current)return;d($(e))}finally{n===p.current&&l(!1)}},[C,e]),M=E(()=>{C(),r([]),a(null),d(null),l(!1)},[C]),N=E(()=>{C(),r([]),a(null),s(null),d(null),l(!1)},[C]),P=E(async()=>{let t=p.current,n=await e.getAllowance();t===p.current&&s(n?.messagesLeftToday??null)},[e]),F=E(async(t,n,r)=>{let i=_.current.find(e=>e.id===t),a=g.current;if(!i?.messageId||!a)throw Error(`Only a stored reply can be rated.`);let o={rating:i.rating,ratingNote:i.ratingNote},s=typeof r==`string`&&r.trim()?r.trim():null;w(t,{rating:n,ratingNote:s});try{await e.rateMessage(a,i.messageId,{rating:n,note:s})}catch(e){throw w(t,o),e}},[e,w]);return{turns:n,conversationId:i,messagesLeftToday:o,streaming:n.some(e=>e.streaming),loading:c,loadError:u,submit:O,openConversation:k,newConversation:M,rate:F,refreshAllowance:P,reset:N}}export{L as ActionCard,e as ChatApiError,R as ChatComposer,H as ChatConversationList,G as ChatLauncher,Y as ChatMarkdown,Z as ChatMessage,ae as ChatPanel,Q as ChatThread,ce as CitationChip,le as ConfirmCard,t as DEFAULT_CHAT_LABELS,X as ReplyRating,n as createChatClient,r as createSseParser,se as splitCitations,fe as useChat};
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* cards, rating and layout stay the library's.
|
|
18
18
|
* @param {Partial<typeof import('@webority/ui-elements/chat-core').DEFAULT_CHAT_LABELS>} [props.labels]
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
declare function ChatMessage({ turn, onRate, resolveLink, linkComponent, confirmAction, onViewTicket, renderReply, labels: labelOverrides }: {
|
|
21
21
|
turn: import('../useChat.js').ChatTurn;
|
|
22
22
|
onRate?: (turnId: string, rating: "Up" | "Down", note?: string) => Promise<unknown>;
|
|
23
23
|
resolveLink?: (href: string) => string | null | undefined;
|
|
@@ -35,3 +35,5 @@ export default function ChatMessage({ turn, onRate, resolveLink, linkComponent,
|
|
|
35
35
|
}) => import('react').ReactNode;
|
|
36
36
|
labels?: Partial<typeof import('@webority/ui-elements/chat-core').DEFAULT_CHAT_LABELS>;
|
|
37
37
|
}): import("react").JSX.Element;
|
|
38
|
+
declare const _default: import("react").MemoExoticComponent<typeof ChatMessage>;
|
|
39
|
+
export default _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/chat-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.80.0",
|
|
4
4
|
"description": "Webority AI assistant for React portals: a streaming chat client, a store-agnostic chat hook, and the launcher, panel, thread, rating and support action card, built on @webority/ui-react.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"react": "^19.0.0",
|
|
31
31
|
"react-bootstrap": "^2.10.0",
|
|
32
32
|
"react-dom": "^19.0.0",
|
|
33
|
-
"@webority/ui-
|
|
34
|
-
"@webority/ui-
|
|
33
|
+
"@webority/ui-react": "0.80.0",
|
|
34
|
+
"@webority/ui-elements": "0.80.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@testing-library/dom": "10.4.2",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"typescript": "^7.0.2",
|
|
50
50
|
"vite": "^8.0.12",
|
|
51
51
|
"vitest": "5.0.1",
|
|
52
|
-
"@webority/ui-react": "0.
|
|
53
|
-
"@webority/ui-elements": "0.
|
|
52
|
+
"@webority/ui-react": "0.80.0",
|
|
53
|
+
"@webority/ui-elements": "0.80.0"
|
|
54
54
|
},
|
|
55
55
|
"scripts": {
|
|
56
56
|
"build": "vite build && tsc -p tsconfig.json",
|