@hsafa/ui-sdk 0.5.4 → 0.5.6
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/index.cjs +119 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +119 -15
- package/dist/index.js.map +1 -1
- package/docs/XMARKDOWN_USAGE.md +196 -0
- package/package.json +5 -3
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var jsxRuntime=require('react/jsx-runtime'),at=require('react'),react=require('@ai-sdk/react'),ai=require('ai'),client=require('react-dom/client'),reactDom=require('react-dom'),lucideReact=require('lucide-react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var at__default=/*#__PURE__*/_interopDefault(at);var ve={};var Lr=({variant:e="primary",size:t="md",loading:n=false,disabled:r,children:o,className:l,...u})=>{let i=[ve.button,ve[e],ve[t],n&&ve.loading,l].filter(Boolean).join(" ");return jsxRuntime.jsxs("button",{className:i,disabled:r||n,...u,children:[n&&jsxRuntime.jsx("span",{className:ve.spinner}),jsxRuntime.jsx("span",{className:n?ve.hiddenText:void 0,children:o})]})};function jt({show:e,onClick:t,resolvedColors:n,floatingButtonPosition:r}){if(!e)return null;let o={position:"fixed",bottom:typeof r.bottom=="number"?`${r.bottom}px`:r.bottom,right:r.right?typeof r.right=="number"?`${r.right}px`:r.right:void 0,top:r.top?typeof r.top=="number"?`${r.top}px`:r.top:void 0,left:r.left?typeof r.left=="number"?`${r.left}px`:r.left:void 0,zIndex:1e3};return jsxRuntime.jsx("button",{"aria-label":"Open chat",onClick:t,style:{...o,borderColor:n.borderColor,backgroundColor:n.accentColor,color:n.textColor,borderRadius:"50%",border:`1px solid ${n.borderColor}`,padding:"12px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",transition:"all 0.2s",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:l=>{l.currentTarget.style.borderColor=n.primaryColor,l.currentTarget.style.backgroundColor=`${n.accentColor}dd`;},onMouseLeave:l=>{l.currentTarget.style.borderColor=n.borderColor,l.currentTarget.style.backgroundColor=n.accentColor;},children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})})})}function Kt(e=true){let t=at.useRef(null),n=at.useRef(e);return at.useEffect(()=>{n.current=e;},[e]),at.useEffect(()=>{let r=t.current;if(!r)return;let o=new MutationObserver(()=>{n.current&&(r.scrollTop=r.scrollHeight);});return o.observe(r,{childList:true,subtree:true}),n.current&&(r.scrollTop=r.scrollHeight),()=>o.disconnect()},[]),t}function Xt(e,t){if(!e)return t;let n=e.endsWith("/")?e.slice(0,-1):e,r=t.startsWith("/")?t:`/${t}`;return `${n}${r}`}var Yt=at.createContext(void 0);function co({baseUrl:e,dir:t="ltr",theme:n="dark",children:r}){let[o,l]=at.useState(new Map),[u,i]=at.useState(new Map),[h,I]=at.useState(new Map),[f,S]=at.useState(new Map),[b,k]=at.useState(void 0),a=at.useCallback((c,p)=>(l(T=>{let m=new Map(T);return m.set(String(c),p),m}),()=>{l(T=>{let m=new Map(T),F=m.get(String(c));return (!p||F===p)&&m.delete(String(c)),m});}),[]),v=at.useCallback((c,p)=>{l(T=>{let m=new Map(T),F=m.get(String(c));return (!p||F===p)&&m.delete(String(c)),m});},[]),s=at.useCallback((c,p)=>(i(T=>{let m=new Map(T);return m.set(String(c),p),m}),()=>{i(T=>{let m=new Map(T),F=m.get(String(c));return (!p||F===p)&&m.delete(String(c)),m});}),[]),d=at.useCallback((c,p)=>{i(T=>{let m=new Map(T),F=m.get(String(c));return (!p||F===p)&&m.delete(String(c)),m});},[]),g=at.useCallback((c,p)=>{I(T=>{let m=new Map(T);return p?m.set(c,true):m.delete(c),m});},[]),C=at.useCallback((c,p)=>{S(T=>{let m=new Map(T);return m.set(c,p),m});},[]),y=at.useMemo(()=>Array.from(h.values()).some(c=>c),[h]),w=at.useMemo(()=>Array.from(f.values()).some(c=>c),[f]),x=at.useMemo(()=>({baseUrl:e,dir:t,theme:n,actions:o,components:u,registerAction:a,unregisterAction:v,registerComponent:s,unregisterComponent:d,isAnyStreaming:y,setStreamingState:g,isAnyChatOpen:w,setChatOpenState:C,currentChatId:b,setCurrentChatId:k}),[e,t,n,o,u,a,v,s,d,y,g,w,C,b]);return jsxRuntime.jsx(Yt.Provider,{value:x,children:r})}function ae(){let e=at.useContext(Yt);return e||{baseUrl:void 0,actions:new Map,components:new Map,registerAction:()=>()=>{},unregisterAction:()=>{},registerComponent:()=>()=>{},unregisterComponent:()=>{},isAnyStreaming:false,setStreamingState:()=>{},isAnyChatOpen:false,setChatOpenState:()=>{},currentChatId:void 0,setCurrentChatId:()=>{}}}var Tt=25*1024*1024;function Zt(e){let{baseUrl:t}=ae(),n=e||t||"",[r,o]=at.useState([]),[l,u]=at.useState(false),i=at.useRef(null),h=at.useCallback(a=>{if(!a||Number.isNaN(a))return "0 B";let v=["B","KB","MB","GB","TB"],s=Math.min(v.length-1,Math.floor(Math.log(a)/Math.log(1024)));return `${(a/Math.pow(1024,s)).toFixed(s===0?0:1)} ${v[s]}`},[]),I=at.useCallback(async a=>{let v=new FormData;v.append("file",a);let s=await fetch(Xt(n,"/api/uploads"),{method:"POST",body:v});if(!s.ok){let g=await s.text().catch(()=>"");throw new Error(g||`Failed to upload ${a.name}`)}let d=await s.json();return {id:d.id,name:d.name||a.name,url:d.url,mimeType:d.mimeType||a.type||"application/octet-stream",size:typeof d.size=="number"?d.size:a.size}},[n]),f=at.useCallback(a=>{o(v=>v.filter(s=>s.id!==a));},[]),S=at.useCallback(async(a,v)=>{if(!a)return;let s=Array.isArray(a)?a:Array.from(a);v(null),u(true);let d=[];try{for(let g of s){if(g.size>Tt){v(`"${g.name}" exceeds the ${h(Tt)} limit.`);continue}try{let C=await I(g);d.push(C);}catch(C){console.error("Failed to upload attachment:",C),v(String(C?.message??`Failed to upload ${g.name}`));}}d.length&&o(g=>[...g,...d]);}finally{u(false);}},[I,h]),b=at.useCallback((a,v)=>{let s=[],d=(a||"").trim();d&&s.push({type:"text",text:d});for(let g of v||[]){let C=g.mimeType||"application/octet-stream";C.startsWith("image/")?s.push({type:"image",image:new URL(g.url),mediaType:C}):s.push({type:"file",data:g.url,mediaType:C,name:g.name});}return s},[]),k=at.useCallback(()=>{o([]);},[]);return {attachments:r,uploading:l,fileInputRef:i,formatBytes:h,handleRemoveAttachment:f,handleFileSelection:S,buildUserContent:b,clearAttachments:k,setAttachments:o,MAX_UPLOAD_SIZE:Tt}}function Qt(e,t,n,r){return console.log("\u{1F680} [SDK] createHsafaTransport called with templateParams:",r),new ai.DefaultChatTransport({api:`${e}/api/run/${t}`,fetch:async(o,l)=>{let u=l||{},i=u?.body?JSON.parse(u.body):{},h=r&&typeof r=="object"?r:{};console.log("\u{1F680} [SDK] Before merge - body:",i),console.log("\u{1F680} [SDK] Before merge - mergedParams:",h);let I={...h,...i,chatId:n};return console.log("\u{1F680} [SDK] After merge - enhancedBody:",I),fetch(o,{...l,body:JSON.stringify(I)})}})}function go(e){if(!(e instanceof HTMLElement))return true;let t=window.getComputedStyle(e);return t.display!=="none"&&t.visibility!=="hidden"&&t.opacity!=="0"&&e.offsetParent!==null}function fo(e){if(e.id){let n=document.querySelector(`label[for="${e.id}"]`);if(n)return n.textContent?.trim()}let t=e.closest("label");if(t){let n=t.cloneNode(true),r=n.querySelector("input, select, textarea");return r&&r.remove(),n.textContent?.trim()}}function It(e){if(e.textContent&&e.textContent.trim())return e.textContent.trim().slice(0,100)}function St(e){if(e instanceof HTMLInputElement){let t=e.type.toLowerCase();return t==="checkbox"||t==="radio"?e.checked:e.value}if(e instanceof HTMLTextAreaElement)return e.value;if(e instanceof HTMLSelectElement)return e.multiple?Array.from(e.selectedOptions).map(t=>t.value):e.value;if(e instanceof HTMLElement&&e.isContentEditable)return e.textContent||void 0}function yo(e){if(e.id)return `#${e.id}`;let t=[],n=e;for(;n&&n!==document.body;){let r=n.tagName.toLowerCase();if(n.className&&typeof n.className=="string"){let l=n.className.split(" ").filter(u=>u.trim()).slice(0,2);l.length>0&&(r+="."+l.join("."));}let o=n.parentElement;if(o){let l=Array.from(o.children).filter(u=>u.tagName===n.tagName);if(l.length>1){let u=l.indexOf(n)+1;r+=`:nth-child(${u})`;}}t.unshift(r),n=o;}return t.slice(-3).join(" > ")}async function We(e={}){try{let{includeHidden:t=!1,selector:n,what:r="content",limit:o}=e,l=document.querySelector(".hsafa-content-container");if(!l)return {ok:!1,components:[],count:0,total:0,containerFound:!1,error:"ContentContainer not found on page. Make sure you have wrapped your app with <ContentContainer>."};let u=n&&l.querySelector(n)||l,i=[],h=[];r==="inputs"?h=["input","textarea","select",'[contenteditable="true"]','[contenteditable=""]']:h=["header","nav","main","section","article","aside","footer","h1","h2","h3","h4","h5","h6","p","img[alt]","ul","ol","li","table","thead","tbody","tr","td","th","form","label","input","textarea","select",'[contenteditable="true"]','[contenteditable=""]',"a[href]","button",'[role="button"]','[role="link"]',"[onclick]","[tabindex]","div"],u.querySelectorAll(h.join(", ")).forEach(s=>{let d=go(s);if(!d&&!t)return;let g={id:s.id||null,tag:s.tagName.toLowerCase(),className:s.className&&typeof s.className=="string"?s.className:void 0,isVisible:d,isInteractive:!0,selector:yo(s)};s instanceof HTMLInputElement?(g.type=s.type,g.name=s.name||void 0,g.placeholder=s.placeholder||void 0,g.value=St(s),g.checked=s.type==="checkbox"||s.type==="radio"?s.checked:void 0,g.disabled=s.disabled,g.required=s.required):s instanceof HTMLTextAreaElement?(g.name=s.name||void 0,g.placeholder=s.placeholder||void 0,g.value=St(s),g.disabled=s.disabled,g.required=s.required):s instanceof HTMLSelectElement?(g.name=s.name||void 0,g.value=St(s),g.disabled=s.disabled,g.required=s.required,g.options=Array.from(s.options).map(C=>({value:C.value,label:C.text,selected:C.selected,disabled:C.disabled}))):s instanceof HTMLButtonElement?(g.type=s.type,g.disabled=s.disabled,g.text=It(s)):s instanceof HTMLAnchorElement?(g.href=s.href,g.text=It(s)):s instanceof HTMLImageElement?(g.text=s.alt||void 0,g.label=s.alt||g.label):g.text=It(s),g.label=fo(s),g.role=s.getAttribute("role")||void 0,g.ariaLabel=s.getAttribute("aria-label")||void 0,i.push(g);});let f=s=>s.isVisible?r==="inputs"?s.tag==="input"||s.tag==="textarea"||s.tag==="select"||s.role==="textbox"?3:s.tag==="button"||s.tag==="a"?2:1:["header","nav","main","footer"].includes(s.tag)?5:["section","article","aside"].includes(s.tag)||["h1","h2","h3"].includes(s.tag)?4:["h4","h5","h6"].includes(s.tag)?3:s.tag==="form"?4:s.tag==="label"?3:s.tag==="input"||s.tag==="textarea"||s.tag==="select"?4:s.tag==="p"||s.tag==="img"||s.tag==="button"||s.tag==="a"?3:1:0;i.sort((s,d)=>f(d)-f(s));let S=i.length,k=Math.max(1,Math.min(200,typeof o=="number"?Math.floor(o):r==="inputs"?100:150)),a=S>k,v=a?i.slice(0,k):i;return {ok:!0,components:v,count:v.length,total:S,truncated:a,containerFound:!0}}catch(t){return {ok:false,components:[],count:0,total:0,containerFound:false,error:t?.message||String(t)}}}typeof window<"u"&&(window.getDomComponents=We);async function ke(e,t={}){if(typeof window>"u")return {ok:false,steps:[{ok:false,action:"none",targetKind:"position",durationMs:0,error:"guideCursor only works in browser environment"}]};let n=window.__cursorGuide;if(!n)return {ok:false,steps:[{ok:false,action:"none",targetKind:"position",durationMs:0,error:"CursorController not initialized. Make sure to mount <CursorController /> component."}]};try{return await n(e,t)}catch(r){return {ok:false,steps:[{ok:false,action:t.action||"none",targetKind:"position",durationMs:0,error:r?.message||String(r)}]}}}typeof window<"u"&&(window.guideCursor=ke);function en(e){return !!e&&e.nodeType===1}function se(e,t){e.dispatchEvent(new Event(t,{bubbles:true}));}function tn(e,t){let n=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),"value")?.set;n?n.call(e,t):e.value=t,se(e,"input");}function ho(e,t){e.checked!==t&&e.click();}function xo(e,t){if(typeof t=="object"&&t&&"index"in t&&typeof t.index=="number")e.selectedIndex=Math.max(0,Math.min(e.options.length-1,t.index));else if(typeof t=="object"&&t&&"label"in t&&typeof t.label=="string"){let n=Array.from(e.options).findIndex(r=>r.text===t.label);e.selectedIndex=n>=0?n:0;}else e.value=String(t);se(e,"input"),se(e,"change");}function bo(e,t){let n=new Set(t.map(String));Array.from(e.options).forEach(r=>{r.selected=n.has(r.value)||n.has(r.text);}),se(e,"input"),se(e,"change");}function Co(e){return e?e instanceof Date?e.toISOString().slice(0,10):String(e):""}function vo(e,t){let n=Array.isArray(t)?t:[t],r=new DataTransfer;for(let o of n)r.items.add(o);Object.defineProperty(e,"files",{value:r.files,configurable:true}),se(e,"input"),se(e,"change");}async function Ue(e,t={}){let n=document.activeElement||null;if(n&&en(n)){let r=n.closest('[contenteditable="true"], [contenteditable=""]');r&&(n=r);}if(!n||n===document.body)return {ok:false,filled:[{key:"active",status:"skipped",message:"No active input element"}],errors:["No active input element"]};try{let r=n.tagName.toLowerCase();if(r==="input"){let o=n,l=(o.type||"text").toLowerCase();if(l==="checkbox")ho(o,!!e);else if(l==="radio"){let u=o.name;if(u&&e!=null&&String(o.value)!==String(e)){let i=document.querySelector(`input[type="radio"][name="${CSS.escape(u)}"][value="${CSS.escape(String(e))}"]`);i?i.click():o.click();}else o.click();}else if(l==="file")if(e instanceof File||Array.isArray(e)&&e.every(u=>u instanceof File))vo(o,e);else return {ok:!1,filled:[{key:"active",status:"skipped",message:"Provide File or File[] for file input"}],errors:["Provide File or File[] for file input"]};else {let u=l==="date"?Co(e):String(e??"");tn(o,u),se(o,"change");}return {ok:!0,filled:[{key:"active",status:"ok"}]}}if(r==="textarea"){let o=n,l=String(e??"");return tn(o,l),se(o,"change"),{ok:!0,filled:[{key:"active",status:"ok"}]}}if(r==="select"){let o=n;return o.multiple?bo(o,Array.isArray(e)?e:[e]):xo(o,e),{ok:!0,filled:[{key:"active",status:"ok"}]}}if(en(n)&&n.isContentEditable){let o=n;return o.focus(),o.textContent=String(e??""),se(o,"input"),se(o,"change"),o.blur?.(),{ok:!0,filled:[{key:"active",status:"ok"}]}}return {ok:!1,filled:[{key:"active",status:"skipped",message:`Unsupported active element: ${r}`}],errors:[`Unsupported active element: ${r}`]}}catch(r){return {ok:false,filled:[{key:"active",status:"error",message:r?.message??String(r)}],errors:[r?.message??String(r)]}}}typeof window<"u"&&(window.FillActiveInput=Ue);var Oe=null,Qe={},on=false,Re=null,tt=false;function Mt(e){e.classList.add("visible");}function dn(){tt=true,Re!=null&&(clearTimeout(Re),Re=null);}function wo(e,t=1500){tt||(Re!=null&&clearTimeout(Re),Re=window.setTimeout(()=>{tt||e.classList.remove("visible");},t));}function To(e,t=1200){tt=false,wo(e,t);}function Io(e){let t=[],n=e?.parentElement;for(;n;){let r=getComputedStyle(n),o=r.overflow+r.overflowY+r.overflowX;/(auto|scroll)/.test(o)&&t.push(n),n=n.parentElement;}return t}async function So(e,t=1500,n=160){let r=performance.now(),o=e?Io(e):[],l=()=>{let f=[window.scrollX||document.documentElement.scrollLeft||0,window.scrollY||document.documentElement.scrollTop||0];return o.forEach(S=>{f.push(S.scrollLeft,S.scrollTop);}),f},u=()=>{if(!e)return {x:0,y:0};let f=e.getBoundingClientRect();return {x:f.left,y:f.top}},i=l(),h=u(),I=performance.now();return new Promise(f=>{function S(b){let k=l(),a=u(),v=false;for(let s=0;s<k.length;s++)if(k[s]!==i[s]){v=true;break}if(!v&&e&&(a.x!==h.x||a.y!==h.y)&&(v=true),v&&(i=k,h=a,I=b),b-I>=n||b-r>=t){f();return}requestAnimationFrame(S);}requestAnimationFrame(S);})}var Mo='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32px" height="32px"><path d="M 7.2304688 4.9863281 C 5.9215232 4.8276681 4.8053213 6.0177722 5.0234375 7.3066406 A 1.0001 1.0001 0 0 0 5.0253906 7.3085938 C 5.9996339 12.981516 7.7205826 18.716222 10 24.515625 A 1.0001 1.0001 0 0 0 10 24.517578 C 10.26886 25.199332 10.914322 25.653844 11.5625 25.738281 C 12.210678 25.822721 12.879213 25.592031 13.359375 25.09375 C 14.505165 23.921134 15.214424 22.695429 15.90625 21.498047 C 17.56565 23.217848 19.256845 24.909775 21.0625 26.484375 L 21.060547 26.480469 C 21.799528 27.12933 22.841378 27.205969 23.673828 26.78125 A 1.0001 1.0001 0 0 0 23.691406 26.771484 C 24.987999 26.077693 26.028685 25.052256 26.71875 23.746094 L 26.71875 23.744141 C 27.174557 22.900924 27.06954 21.854242 26.439453 21.119141 A 1.0001 1.0001 0 0 0 26.433594 21.113281 C 24.867416 19.313474 23.193611 17.633865 21.488281 15.986328 C 22.714141 15.237691 23.933938 14.51508 25.158203 13.414062 A 1.0001 1.0001 0 0 0 25.162109 13.410156 C 26.052979 12.600274 25.977319 11.169141 25.101562 10.404297 A 1.0001 1.0001 0 0 0 24.669922 10.042969 C 18.793373 7.4738953 12.973806 5.6931843 7.2324219 4.9882812 A 1.0001 1.0001 0 0 0 7.2304688 4.9863281 z M 6.9960938 6.9746094 C 12.468883 7.6474978 18.081513 9.3573116 23.796875 11.849609 A 1.0001 1.0001 0 0 0 23.867188 11.884766 C 23.901248 11.899796 23.884276 11.867987 23.816406 11.929688 C 22.403891 13.198979 20.999383 14.076858 19.457031 14.976562 A 1.0001 1.0001 0 0 0 19.275391 16.568359 C 21.250864 18.425305 23.134972 20.36916 24.919922 22.419922 C 25.009402 22.524309 25.024026 22.676488 24.960938 22.792969 A 1.0001 1.0001 0 0 0 24.955078 22.804688 C 24.446951 23.770198 23.730542 24.476149 22.755859 25 C 22.611605 25.06851 22.457885 25.047856 22.378906 24.978516 A 1.0001 1.0001 0 0 0 22.376953 24.976562 C 20.293628 23.159824 18.307991 21.233373 16.419922 19.216797 A 1.0001 1.0001 0 0 0 14.835938 19.378906 C 13.841812 21.004716 13.152668 22.447221 11.925781 23.701172 A 1.0001 1.0001 0 0 0 11.919922 23.707031 C 11.883822 23.744501 11.865156 23.739957 11.847656 23.742188 C 9.6161121 18.057657 7.9395914 12.46667 6.9960938 6.9746094 z"/></svg>',Eo='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="32px" height="32px"><path d="M 22.5 3 C 19.480226 3 17 5.4802259 17 8.5 L 17 23.412109 L 14.871094 22.697266 C 13.308963 22.172461 11.892528 22 10.703125 22 C 9.5908429 22 8.5540295 22.197475 7.640625 22.65625 C 5.2906802 23.831199 3.9427678 26.197397 4.0019531 28.90625 C 4.0019531 28.90625 4.0019531 28.908203 4.0019531 28.908203 C 4.0019531 28.908203 4.0019531 28.910156 4.0019531 28.910156 C 4.0184171 29.660452 4.4596385 30.354695 5.1328125 30.6875 A 1.50015 1.50015 0 0 0 5.1367188 30.689453 C 5.1367188 30.689453 9.4097266 32.789754 11.599609 33.949219 C 12.445613 34.397848 13.696939 34.926046 15.210938 36.09375 C 16.724935 37.261454 18.423179 39.012543 19.826172 41.792969 C 21.023611 44.165544 23.672779 45.195669 26.144531 44.955078 A 1.50015 1.50015 0 0 0 26.146484 44.955078 C 31.427085 44.439215 32.081856 44.381732 35.59375 44.023438 C 37.044229 43.875625 38.276993 43.213524 39.111328 42.289062 C 39.945663 41.364602 40.422895 40.257718 40.798828 39.125 C 41.561218 36.826116 42.933037 33.169846 43.671875 30.599609 C 45.018525 25.913269 41.884024 21.194549 37.246094 19.953125 L 37.242188 19.951172 C 36.99827 19.885452 36.756736 19.832884 36.521484 19.789062 A 1.50015 1.50015 0 0 0 36.513672 19.787109 L 28 18.248047 L 28 8.5 C 28 5.4802259 25.519774 3 22.5 3 z M 22.5 6 C 23.898226 6 25 7.1017741 25 8.5 L 25 19.5 A 1.50015 1.50015 0 0 0 26.232422 20.976562 L 35.980469 22.740234 C 36.14895 22.771804 36.312663 22.808524 36.464844 22.849609 A 1.50015 1.50015 0 0 0 36.46875 22.849609 C 39.614436 23.689967 41.641993 26.803286 40.789062 29.771484 C 40.115901 32.113248 38.752735 35.768572 37.953125 38.179688 C 37.641059 39.119968 37.279727 39.837554 36.882812 40.277344 C 36.485898 40.717133 36.095584 40.956874 35.289062 41.039062 C 31.783676 41.396695 31.135884 41.452908 25.855469 41.96875 C 24.423221 42.108159 23.024467 41.472831 22.503906 40.441406 C 20.887905 37.238832 18.854971 35.116296 17.042969 33.71875 C 15.230967 32.321204 13.560902 31.594199 13.003906 31.298828 C 10.939171 30.205625 7.8041786 28.665144 7.1035156 28.320312 C 7.1954033 26.8809 7.6810328 25.989859 8.9824219 25.339844 A 1.50015 1.50015 0 0 0 8.9863281 25.337891 C 9.3949198 25.132713 9.9434071 25 10.703125 25 C 11.605722 25 12.680146 25.12582 13.916016 25.541016 L 18.021484 26.921875 A 1.50015 1.50015 0 0 0 20 25.5 L 20 8.5 C 20 7.1017741 21.101774 6 22.5 6 z"/></svg>';async function Ao(){if(!Qe.arrow)try{Qe.arrow=Mo,Qe.pointer=Eo;}catch(e){console.warn("Failed to set cursor SVGs",e);}return Qe}function rn({arrowSvg:e,pointerSvg:t}){return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[e&&jsxRuntime.jsx("div",{className:"arrow",dangerouslySetInnerHTML:{__html:e}}),t&&jsxRuntime.jsx("div",{className:"pointer",dangerouslySetInnerHTML:{__html:t}})]})}async function Ro(){let e="demo-fake-cursor",t=document.getElementById(e),n=await Ao();if(!on){let r="cursor-controller-styles";if(!document.getElementById(r)){let o=document.createElement("style");o.id=r,o.textContent=`
|
|
1
|
+
'use strict';var jsxRuntime=require('react/jsx-runtime'),so=require('react'),react=require('@ai-sdk/react'),ai=require('ai'),client=require('react-dom/client'),xMarkdown=require('@ant-design/x-markdown');require('@ant-design/x-markdown/themes/light.css'),require('@ant-design/x-markdown/themes/dark.css');var reactDom=require('react-dom'),lucideReact=require('lucide-react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var so__default=/*#__PURE__*/_interopDefault(so);var Se={};var zr=({variant:e="primary",size:t="md",loading:n=false,disabled:r,children:o,className:l,...u})=>{let c=[Se.button,Se[e],Se[t],n&&Se.loading,l].filter(Boolean).join(" ");return jsxRuntime.jsxs("button",{className:c,disabled:r||n,...u,children:[n&&jsxRuntime.jsx("span",{className:Se.spinner}),jsxRuntime.jsx("span",{className:n?Se.hiddenText:void 0,children:o})]})};function kn({show:e,onClick:t,resolvedColors:n,floatingButtonPosition:r}){if(!e)return null;let o={position:"fixed",bottom:typeof r.bottom=="number"?`${r.bottom}px`:r.bottom,right:r.right?typeof r.right=="number"?`${r.right}px`:r.right:void 0,top:r.top?typeof r.top=="number"?`${r.top}px`:r.top:void 0,left:r.left?typeof r.left=="number"?`${r.left}px`:r.left:void 0,zIndex:1e3};return jsxRuntime.jsx("button",{"aria-label":"Open chat",onClick:t,style:{...o,borderColor:n.borderColor,backgroundColor:n.accentColor,color:n.textColor,borderRadius:"50%",border:`1px solid ${n.borderColor}`,padding:"12px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",transition:"all 0.2s",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:l=>{l.currentTarget.style.borderColor=n.primaryColor,l.currentTarget.style.backgroundColor=`${n.accentColor}dd`;},onMouseLeave:l=>{l.currentTarget.style.borderColor=n.borderColor,l.currentTarget.style.backgroundColor=n.accentColor;},children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})})})}function In(e=true){let t=so.useRef(null),n=so.useRef(e);return so.useEffect(()=>{n.current=e;},[e]),so.useEffect(()=>{let r=t.current;if(!r)return;let o=new MutationObserver(()=>{n.current&&(r.scrollTop=r.scrollHeight);});return o.observe(r,{childList:true,subtree:true}),n.current&&(r.scrollTop=r.scrollHeight),()=>o.disconnect()},[]),t}function Sn(e,t){if(!e)return t;let n=e.endsWith("/")?e.slice(0,-1):e,r=t.startsWith("/")?t:`/${t}`;return `${n}${r}`}var Mn=so.createContext(void 0);function xo({baseUrl:e,dir:t="ltr",theme:n="dark",children:r}){let[o,l]=so.useState(new Map),[u,c]=so.useState(new Map),[x,I]=so.useState(new Map),[d,S]=so.useState(new Map),[C,b]=so.useState(void 0),a=so.useCallback((m,v)=>(l(M=>{let f=new Map(M);return f.set(String(m),v),f}),()=>{l(M=>{let f=new Map(M),F=f.get(String(m));return (!v||F===v)&&f.delete(String(m)),f});}),[]),w=so.useCallback((m,v)=>{l(M=>{let f=new Map(M),F=f.get(String(m));return (!v||F===v)&&f.delete(String(m)),f});},[]),i=so.useCallback((m,v)=>(c(M=>{let f=new Map(M);return f.set(String(m),v),f}),()=>{c(M=>{let f=new Map(M),F=f.get(String(m));return (!v||F===v)&&f.delete(String(m)),f});}),[]),T=so.useCallback((m,v)=>{c(M=>{let f=new Map(M),F=f.get(String(m));return (!v||F===v)&&f.delete(String(m)),f});},[]),s=so.useCallback((m,v)=>{I(M=>{let f=new Map(M);return v?f.set(m,true):f.delete(m),f});},[]),g=so.useCallback((m,v)=>{S(M=>{let f=new Map(M);return f.set(m,v),f});},[]),h=so.useMemo(()=>Array.from(x.values()).some(m=>m),[x]),k=so.useMemo(()=>Array.from(d.values()).some(m=>m),[d]),y=so.useMemo(()=>({baseUrl:e,dir:t,theme:n,actions:o,components:u,registerAction:a,unregisterAction:w,registerComponent:i,unregisterComponent:T,isAnyStreaming:h,setStreamingState:s,isAnyChatOpen:k,setChatOpenState:g,currentChatId:C,setCurrentChatId:b}),[e,t,n,o,u,a,w,i,T,h,s,k,g,C]);return jsxRuntime.jsx(Mn.Provider,{value:y,children:r})}function le(){let e=so.useContext(Mn);return e||{baseUrl:void 0,actions:new Map,components:new Map,registerAction:()=>()=>{},unregisterAction:()=>{},registerComponent:()=>()=>{},unregisterComponent:()=>{},isAnyStreaming:false,setStreamingState:()=>{},isAnyChatOpen:false,setChatOpenState:()=>{},currentChatId:void 0,setCurrentChatId:()=>{}}}var Ht=25*1024*1024;function Rn(e){let{baseUrl:t}=le(),n=e||t||"",[r,o]=so.useState([]),[l,u]=so.useState(false),c=so.useRef(null),x=so.useCallback(a=>{if(!a||Number.isNaN(a))return "0 B";let w=["B","KB","MB","GB","TB"],i=Math.min(w.length-1,Math.floor(Math.log(a)/Math.log(1024)));return `${(a/Math.pow(1024,i)).toFixed(i===0?0:1)} ${w[i]}`},[]),I=so.useCallback(async a=>{let w=new FormData;w.append("file",a);let i=await fetch(Sn(n,"/api/uploads"),{method:"POST",body:w});if(!i.ok){let s=await i.text().catch(()=>"");throw new Error(s||`Failed to upload ${a.name}`)}let T=await i.json();return {id:T.id,name:T.name||a.name,url:T.url,mimeType:T.mimeType||a.type||"application/octet-stream",size:typeof T.size=="number"?T.size:a.size}},[n]),d=so.useCallback(a=>{o(w=>w.filter(i=>i.id!==a));},[]),S=so.useCallback(async(a,w)=>{if(!a)return;let i=Array.isArray(a)?a:Array.from(a);w(null),u(true);let T=[];try{for(let s of i){if(s.size>Ht){w(`"${s.name}" exceeds the ${x(Ht)} limit.`);continue}try{let g=await I(s);T.push(g);}catch(g){console.error("Failed to upload attachment:",g),w(String(g?.message??`Failed to upload ${s.name}`));}}T.length&&o(s=>[...s,...T]);}finally{u(false);}},[I,x]),C=so.useCallback((a,w)=>{let i=[],T=(a||"").trim();T&&i.push({type:"text",text:T});for(let s of w||[]){let g=s.mimeType||"application/octet-stream";g.startsWith("image/")?i.push({type:"image",image:new URL(s.url),mediaType:g}):i.push({type:"file",data:s.url,mediaType:g,name:s.name});}return i},[]),b=so.useCallback(()=>{o([]);},[]);return {attachments:r,uploading:l,fileInputRef:c,formatBytes:x,handleRemoveAttachment:d,handleFileSelection:S,buildUserContent:C,clearAttachments:b,setAttachments:o,MAX_UPLOAD_SIZE:Ht}}function An(e,t,n,r){return console.log("\u{1F680} [SDK] createHsafaTransport called with templateParams:",r),new ai.DefaultChatTransport({api:`${e}/api/run/${t}`,fetch:async(o,l)=>{let u=l||{},c=u?.body?JSON.parse(u.body):{},x=r&&typeof r=="object"?r:{};console.log("\u{1F680} [SDK] Before merge - body:",c),console.log("\u{1F680} [SDK] Before merge - mergedParams:",x);let I={...x,...c,chatId:n};return console.log("\u{1F680} [SDK] After merge - enhancedBody:",I),fetch(o,{...l,body:JSON.stringify(I)})}})}function ko(e){if(!(e instanceof HTMLElement))return true;let t=window.getComputedStyle(e);return t.display!=="none"&&t.visibility!=="hidden"&&t.opacity!=="0"&&e.offsetParent!==null}function wo(e){if(e.id){let n=document.querySelector(`label[for="${e.id}"]`);if(n)return n.textContent?.trim()}let t=e.closest("label");if(t){let n=t.cloneNode(true),r=n.querySelector("input, select, textarea");return r&&r.remove(),n.textContent?.trim()}}function Ft(e){if(e.textContent&&e.textContent.trim())return e.textContent.trim().slice(0,100)}function Bt(e){if(e instanceof HTMLInputElement){let t=e.type.toLowerCase();return t==="checkbox"||t==="radio"?e.checked:e.value}if(e instanceof HTMLTextAreaElement)return e.value;if(e instanceof HTMLSelectElement)return e.multiple?Array.from(e.selectedOptions).map(t=>t.value):e.value;if(e instanceof HTMLElement&&e.isContentEditable)return e.textContent||void 0}function To(e){if(e.id)return `#${e.id}`;let t=[],n=e;for(;n&&n!==document.body;){let r=n.tagName.toLowerCase();if(n.className&&typeof n.className=="string"){let l=n.className.split(" ").filter(u=>u.trim()).slice(0,2);l.length>0&&(r+="."+l.join("."));}let o=n.parentElement;if(o){let l=Array.from(o.children).filter(u=>u.tagName===n.tagName);if(l.length>1){let u=l.indexOf(n)+1;r+=`:nth-child(${u})`;}}t.unshift(r),n=o;}return t.slice(-3).join(" > ")}async function _e(e={}){try{let{includeHidden:t=!1,selector:n,what:r="content",limit:o}=e,l=document.querySelector(".hsafa-content-container");if(!l)return {ok:!1,components:[],count:0,total:0,containerFound:!1,error:"ContentContainer not found on page. Make sure you have wrapped your app with <ContentContainer>."};let u=n&&l.querySelector(n)||l,c=[],x=[];r==="inputs"?x=["input","textarea","select",'[contenteditable="true"]','[contenteditable=""]']:x=["header","nav","main","section","article","aside","footer","h1","h2","h3","h4","h5","h6","p","img[alt]","ul","ol","li","table","thead","tbody","tr","td","th","form","label","input","textarea","select",'[contenteditable="true"]','[contenteditable=""]',"a[href]","button",'[role="button"]','[role="link"]',"[onclick]","[tabindex]","div"],u.querySelectorAll(x.join(", ")).forEach(i=>{let T=ko(i);if(!T&&!t)return;let s={id:i.id||null,tag:i.tagName.toLowerCase(),className:i.className&&typeof i.className=="string"?i.className:void 0,isVisible:T,isInteractive:!0,selector:To(i)};i instanceof HTMLInputElement?(s.type=i.type,s.name=i.name||void 0,s.placeholder=i.placeholder||void 0,s.value=Bt(i),s.checked=i.type==="checkbox"||i.type==="radio"?i.checked:void 0,s.disabled=i.disabled,s.required=i.required):i instanceof HTMLTextAreaElement?(s.name=i.name||void 0,s.placeholder=i.placeholder||void 0,s.value=Bt(i),s.disabled=i.disabled,s.required=i.required):i instanceof HTMLSelectElement?(s.name=i.name||void 0,s.value=Bt(i),s.disabled=i.disabled,s.required=i.required,s.options=Array.from(i.options).map(g=>({value:g.value,label:g.text,selected:g.selected,disabled:g.disabled}))):i instanceof HTMLButtonElement?(s.type=i.type,s.disabled=i.disabled,s.text=Ft(i)):i instanceof HTMLAnchorElement?(s.href=i.href,s.text=Ft(i)):i instanceof HTMLImageElement?(s.text=i.alt||void 0,s.label=i.alt||s.label):s.text=Ft(i),s.label=wo(i),s.role=i.getAttribute("role")||void 0,s.ariaLabel=i.getAttribute("aria-label")||void 0,c.push(s);});let d=i=>i.isVisible?r==="inputs"?i.tag==="input"||i.tag==="textarea"||i.tag==="select"||i.role==="textbox"?3:i.tag==="button"||i.tag==="a"?2:1:["header","nav","main","footer"].includes(i.tag)?5:["section","article","aside"].includes(i.tag)||["h1","h2","h3"].includes(i.tag)?4:["h4","h5","h6"].includes(i.tag)?3:i.tag==="form"?4:i.tag==="label"?3:i.tag==="input"||i.tag==="textarea"||i.tag==="select"?4:i.tag==="p"||i.tag==="img"||i.tag==="button"||i.tag==="a"?3:1:0;c.sort((i,T)=>d(T)-d(i));let S=c.length,b=Math.max(1,Math.min(200,typeof o=="number"?Math.floor(o):r==="inputs"?100:150)),a=S>b,w=a?c.slice(0,b):c;return {ok:!0,components:w,count:w.length,total:S,truncated:a,containerFound:!0}}catch(t){return {ok:false,components:[],count:0,total:0,containerFound:false,error:t?.message||String(t)}}}typeof window<"u"&&(window.getDomComponents=_e);async function Me(e,t={}){if(typeof window>"u")return {ok:false,steps:[{ok:false,action:"none",targetKind:"position",durationMs:0,error:"guideCursor only works in browser environment"}]};let n=window.__cursorGuide;if(!n)return {ok:false,steps:[{ok:false,action:"none",targetKind:"position",durationMs:0,error:"CursorController not initialized. Make sure to mount <CursorController /> component."}]};try{return await n(e,t)}catch(r){return {ok:false,steps:[{ok:false,action:t.action||"none",targetKind:"position",durationMs:0,error:r?.message||String(r)}]}}}typeof window<"u"&&(window.guideCursor=Me);function Ln(e){return !!e&&e.nodeType===1}function ce(e,t){e.dispatchEvent(new Event(t,{bubbles:true}));}function Hn(e,t){let n=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),"value")?.set;n?n.call(e,t):e.value=t,ce(e,"input");}function Io(e,t){e.checked!==t&&e.click();}function So(e,t){if(typeof t=="object"&&t&&"index"in t&&typeof t.index=="number")e.selectedIndex=Math.max(0,Math.min(e.options.length-1,t.index));else if(typeof t=="object"&&t&&"label"in t&&typeof t.label=="string"){let n=Array.from(e.options).findIndex(r=>r.text===t.label);e.selectedIndex=n>=0?n:0;}else e.value=String(t);ce(e,"input"),ce(e,"change");}function Mo(e,t){let n=new Set(t.map(String));Array.from(e.options).forEach(r=>{r.selected=n.has(r.value)||n.has(r.text);}),ce(e,"input"),ce(e,"change");}function Eo(e){return e?e instanceof Date?e.toISOString().slice(0,10):String(e):""}function Ro(e,t){let n=Array.isArray(t)?t:[t],r=new DataTransfer;for(let o of n)r.items.add(o);Object.defineProperty(e,"files",{value:r.files,configurable:true}),ce(e,"input"),ce(e,"change");}async function qe(e,t={}){let n=document.activeElement||null;if(n&&Ln(n)){let r=n.closest('[contenteditable="true"], [contenteditable=""]');r&&(n=r);}if(!n||n===document.body)return {ok:false,filled:[{key:"active",status:"skipped",message:"No active input element"}],errors:["No active input element"]};try{let r=n.tagName.toLowerCase();if(r==="input"){let o=n,l=(o.type||"text").toLowerCase();if(l==="checkbox")Io(o,!!e);else if(l==="radio"){let u=o.name;if(u&&e!=null&&String(o.value)!==String(e)){let c=document.querySelector(`input[type="radio"][name="${CSS.escape(u)}"][value="${CSS.escape(String(e))}"]`);c?c.click():o.click();}else o.click();}else if(l==="file")if(e instanceof File||Array.isArray(e)&&e.every(u=>u instanceof File))Ro(o,e);else return {ok:!1,filled:[{key:"active",status:"skipped",message:"Provide File or File[] for file input"}],errors:["Provide File or File[] for file input"]};else {let u=l==="date"?Eo(e):String(e??"");Hn(o,u),ce(o,"change");}return {ok:!0,filled:[{key:"active",status:"ok"}]}}if(r==="textarea"){let o=n,l=String(e??"");return Hn(o,l),ce(o,"change"),{ok:!0,filled:[{key:"active",status:"ok"}]}}if(r==="select"){let o=n;return o.multiple?Mo(o,Array.isArray(e)?e:[e]):So(o,e),{ok:!0,filled:[{key:"active",status:"ok"}]}}if(Ln(n)&&n.isContentEditable){let o=n;return o.focus(),o.textContent=String(e??""),ce(o,"input"),ce(o,"change"),o.blur?.(),{ok:!0,filled:[{key:"active",status:"ok"}]}}return {ok:!1,filled:[{key:"active",status:"skipped",message:`Unsupported active element: ${r}`}],errors:[`Unsupported active element: ${r}`]}}catch(r){return {ok:false,filled:[{key:"active",status:"error",message:r?.message??String(r)}],errors:[r?.message??String(r)]}}}typeof window<"u"&&(window.FillActiveInput=qe);var Ke=null,st={},Bn=false,De=null,lt=false;function Dt(e){e.classList.add("visible");}function Wn(){lt=true,De!=null&&(clearTimeout(De),De=null);}function Lo(e,t=1500){lt||(De!=null&&clearTimeout(De),De=window.setTimeout(()=>{lt||e.classList.remove("visible");},t));}function Ho(e,t=1200){lt=false,Lo(e,t);}function Fo(e){let t=[],n=e?.parentElement;for(;n;){let r=getComputedStyle(n),o=r.overflow+r.overflowY+r.overflowX;/(auto|scroll)/.test(o)&&t.push(n),n=n.parentElement;}return t}async function Bo(e,t=1500,n=160){let r=performance.now(),o=e?Fo(e):[],l=()=>{let d=[window.scrollX||document.documentElement.scrollLeft||0,window.scrollY||document.documentElement.scrollTop||0];return o.forEach(S=>{d.push(S.scrollLeft,S.scrollTop);}),d},u=()=>{if(!e)return {x:0,y:0};let d=e.getBoundingClientRect();return {x:d.left,y:d.top}},c=l(),x=u(),I=performance.now();return new Promise(d=>{function S(C){let b=l(),a=u(),w=false;for(let i=0;i<b.length;i++)if(b[i]!==c[i]){w=true;break}if(!w&&e&&(a.x!==x.x||a.y!==x.y)&&(w=true),w&&(c=b,x=a,I=C),C-I>=n||C-r>=t){d();return}requestAnimationFrame(S);}requestAnimationFrame(S);})}var Do='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32px" height="32px"><path d="M 7.2304688 4.9863281 C 5.9215232 4.8276681 4.8053213 6.0177722 5.0234375 7.3066406 A 1.0001 1.0001 0 0 0 5.0253906 7.3085938 C 5.9996339 12.981516 7.7205826 18.716222 10 24.515625 A 1.0001 1.0001 0 0 0 10 24.517578 C 10.26886 25.199332 10.914322 25.653844 11.5625 25.738281 C 12.210678 25.822721 12.879213 25.592031 13.359375 25.09375 C 14.505165 23.921134 15.214424 22.695429 15.90625 21.498047 C 17.56565 23.217848 19.256845 24.909775 21.0625 26.484375 L 21.060547 26.480469 C 21.799528 27.12933 22.841378 27.205969 23.673828 26.78125 A 1.0001 1.0001 0 0 0 23.691406 26.771484 C 24.987999 26.077693 26.028685 25.052256 26.71875 23.746094 L 26.71875 23.744141 C 27.174557 22.900924 27.06954 21.854242 26.439453 21.119141 A 1.0001 1.0001 0 0 0 26.433594 21.113281 C 24.867416 19.313474 23.193611 17.633865 21.488281 15.986328 C 22.714141 15.237691 23.933938 14.51508 25.158203 13.414062 A 1.0001 1.0001 0 0 0 25.162109 13.410156 C 26.052979 12.600274 25.977319 11.169141 25.101562 10.404297 A 1.0001 1.0001 0 0 0 24.669922 10.042969 C 18.793373 7.4738953 12.973806 5.6931843 7.2324219 4.9882812 A 1.0001 1.0001 0 0 0 7.2304688 4.9863281 z M 6.9960938 6.9746094 C 12.468883 7.6474978 18.081513 9.3573116 23.796875 11.849609 A 1.0001 1.0001 0 0 0 23.867188 11.884766 C 23.901248 11.899796 23.884276 11.867987 23.816406 11.929688 C 22.403891 13.198979 20.999383 14.076858 19.457031 14.976562 A 1.0001 1.0001 0 0 0 19.275391 16.568359 C 21.250864 18.425305 23.134972 20.36916 24.919922 22.419922 C 25.009402 22.524309 25.024026 22.676488 24.960938 22.792969 A 1.0001 1.0001 0 0 0 24.955078 22.804688 C 24.446951 23.770198 23.730542 24.476149 22.755859 25 C 22.611605 25.06851 22.457885 25.047856 22.378906 24.978516 A 1.0001 1.0001 0 0 0 22.376953 24.976562 C 20.293628 23.159824 18.307991 21.233373 16.419922 19.216797 A 1.0001 1.0001 0 0 0 14.835938 19.378906 C 13.841812 21.004716 13.152668 22.447221 11.925781 23.701172 A 1.0001 1.0001 0 0 0 11.919922 23.707031 C 11.883822 23.744501 11.865156 23.739957 11.847656 23.742188 C 9.6161121 18.057657 7.9395914 12.46667 6.9960938 6.9746094 z"/></svg>',Po='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="32px" height="32px"><path d="M 22.5 3 C 19.480226 3 17 5.4802259 17 8.5 L 17 23.412109 L 14.871094 22.697266 C 13.308963 22.172461 11.892528 22 10.703125 22 C 9.5908429 22 8.5540295 22.197475 7.640625 22.65625 C 5.2906802 23.831199 3.9427678 26.197397 4.0019531 28.90625 C 4.0019531 28.90625 4.0019531 28.908203 4.0019531 28.908203 C 4.0019531 28.908203 4.0019531 28.910156 4.0019531 28.910156 C 4.0184171 29.660452 4.4596385 30.354695 5.1328125 30.6875 A 1.50015 1.50015 0 0 0 5.1367188 30.689453 C 5.1367188 30.689453 9.4097266 32.789754 11.599609 33.949219 C 12.445613 34.397848 13.696939 34.926046 15.210938 36.09375 C 16.724935 37.261454 18.423179 39.012543 19.826172 41.792969 C 21.023611 44.165544 23.672779 45.195669 26.144531 44.955078 A 1.50015 1.50015 0 0 0 26.146484 44.955078 C 31.427085 44.439215 32.081856 44.381732 35.59375 44.023438 C 37.044229 43.875625 38.276993 43.213524 39.111328 42.289062 C 39.945663 41.364602 40.422895 40.257718 40.798828 39.125 C 41.561218 36.826116 42.933037 33.169846 43.671875 30.599609 C 45.018525 25.913269 41.884024 21.194549 37.246094 19.953125 L 37.242188 19.951172 C 36.99827 19.885452 36.756736 19.832884 36.521484 19.789062 A 1.50015 1.50015 0 0 0 36.513672 19.787109 L 28 18.248047 L 28 8.5 C 28 5.4802259 25.519774 3 22.5 3 z M 22.5 6 C 23.898226 6 25 7.1017741 25 8.5 L 25 19.5 A 1.50015 1.50015 0 0 0 26.232422 20.976562 L 35.980469 22.740234 C 36.14895 22.771804 36.312663 22.808524 36.464844 22.849609 A 1.50015 1.50015 0 0 0 36.46875 22.849609 C 39.614436 23.689967 41.641993 26.803286 40.789062 29.771484 C 40.115901 32.113248 38.752735 35.768572 37.953125 38.179688 C 37.641059 39.119968 37.279727 39.837554 36.882812 40.277344 C 36.485898 40.717133 36.095584 40.956874 35.289062 41.039062 C 31.783676 41.396695 31.135884 41.452908 25.855469 41.96875 C 24.423221 42.108159 23.024467 41.472831 22.503906 40.441406 C 20.887905 37.238832 18.854971 35.116296 17.042969 33.71875 C 15.230967 32.321204 13.560902 31.594199 13.003906 31.298828 C 10.939171 30.205625 7.8041786 28.665144 7.1035156 28.320312 C 7.1954033 26.8809 7.6810328 25.989859 8.9824219 25.339844 A 1.50015 1.50015 0 0 0 8.9863281 25.337891 C 9.3949198 25.132713 9.9434071 25 10.703125 25 C 11.605722 25 12.680146 25.12582 13.916016 25.541016 L 18.021484 26.921875 A 1.50015 1.50015 0 0 0 20 25.5 L 20 8.5 C 20 7.1017741 21.101774 6 22.5 6 z"/></svg>';async function $o(){if(!st.arrow)try{st.arrow=Do,st.pointer=Po;}catch(e){console.warn("Failed to set cursor SVGs",e);}return st}function Dn({arrowSvg:e,pointerSvg:t}){return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[e&&jsxRuntime.jsx("div",{className:"arrow",dangerouslySetInnerHTML:{__html:e}}),t&&jsxRuntime.jsx("div",{className:"pointer",dangerouslySetInnerHTML:{__html:t}})]})}async function zo(){let e="demo-fake-cursor",t=document.getElementById(e),n=await $o();if(!Bn){let r="cursor-controller-styles";if(!document.getElementById(r)){let o=document.createElement("style");o.id=r,o.textContent=`
|
|
2
2
|
.fake-cursor { pointer-events: none; opacity: 0; transition: opacity 0.2s ease; z-index: 2147483647; }
|
|
3
3
|
.fake-cursor.visible { opacity: 1; }
|
|
4
4
|
.fake-cursor .arrow { display: none; }
|
|
@@ -8,19 +8,12 @@
|
|
|
8
8
|
.fake-cursor.as-pointer .arrow { display: none; }
|
|
9
9
|
.fake-cursor.as-pointer .pointer { display: block; }
|
|
10
10
|
.fake-cursor.pressing .pointer svg path { filter: brightness(0.9); }
|
|
11
|
-
`,document.head.appendChild(o);}on=true;}return t?(t.classList.add("as-arrow"),Oe||(Oe=client.createRoot(t),Oe.render(jsxRuntime.jsx(rn,{arrowSvg:n.arrow,pointerSvg:n.pointer})))):(t=document.createElement("div"),t.id=e,t.className="fake-cursor as-arrow",t.style.position="fixed",t.style.left="20px",t.style.top="20px",document.body.appendChild(t),Oe=client.createRoot(t),Oe.render(jsxRuntime.jsx(rn,{arrowSvg:n.arrow,pointerSvg:n.pointer}))),t}function Fe(e,t,n){return Math.max(t,Math.min(n,e))}function Fo(e){return e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2}function un(e){if(!e)return null;let t=document.createElement("canvas").getContext("2d");if(!t)return null;t.fillStyle="#000",t.fillStyle=e;let r=t.fillStyle.match(/rgba?\(([^)]+)\)/i);if(!r)return null;let o=r[1].split(/\s*,\s*/).map(Number),[l,u,i,h=1]=o;return {r:l,g:u,b:i,a:h}}function Lo({r:e,g:t,b:n}){let r=[e,t,n].map(o=>o/255).map(o=>o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4));return .2126*r[0]+.7152*r[1]+.0722*r[2]}function Ho(e){let t=e?un(e):null;return !t||t.a===0?false:Lo(t)<.5}function $o(e,t){let n=document.elementFromPoint(e,t),r=new Set;for(;n&&!r.has(n);){r.add(n);let u=getComputedStyle(n).backgroundColor,i=un(u);if(i&&i.a>0)return u;n=n.parentElement;}return getComputedStyle(document.body).backgroundColor||"rgb(255,255,255)"}function Et(e,t,n){let r=$o(t,n),o=Ho(r),l=o?"#ffffff":"#000000";e.querySelectorAll("svg path").forEach(i=>{i.style.fill="white",i.style.stroke=l,i.style.strokeWidth="1";}),e.style.filter=o?"drop-shadow(0 1px 2px rgba(0,0,0,0.8))":"drop-shadow(0 1px 2px rgba(255,255,255,0.9))";}async function et(e,t,n,r,o="ease-in-out",l="curve",u=.25,i="auto",h){dn(),Mt(e);let I=performance.now(),f=o==="linear"?k=>k:Fo,S=l!=="straight",b={x:0,y:0};if(S){let k=n.x-t.x,a=n.y-t.y,v=Math.hypot(k,a)||1,s=(t.x+n.x)/2,d=(t.y+n.y)/2,g=-a/v,C=k/v,y=1;i==="left"?y=-1:i==="right"?y=1:y=Math.random()<.5?-1:1;let w=Fe(u,0,1)*v;b={x:s+y*g*w,y:d+y*C*w};}return new Promise(k=>{function a(v){let s=Fe((v-I)/r,0,1),d=f(s),g,C;if(S){let p=1-d;g=p*p*t.x+2*p*d*b.x+d*d*n.x,C=p*p*t.y+2*p*d*b.y+d*d*n.y;}else g=t.x+(n.x-t.x)*d,C=t.y+(n.y-t.y)*d;let w=.35*(1-d),x=Math.sin(v*.02)*w,c=Math.cos(v*.018)*w;e.style.left=`${g+x}px`,e.style.top=`${C+c}px`,Et(e,g+x,C+c),h&&h({x:g+x,y:C+c,t:s,now:v}),s<1?requestAnimationFrame(a):k();}requestAnimationFrame(a);})}function an(e,t){return {x:e.x+(t?.x??0),y:e.y+(t?.y??0)}}function ue(e,t,n,r){let o={bubbles:true,cancelable:true,view:window,clientX:n.x,clientY:n.y,...r};try{let l=t==="pointerdown"||t==="mousedown",u=t==="pointerup"||t==="mouseup",i={button:0,buttons:l?1:0,isPrimary:!0,...o};if("PointerEvent"in window){let h=new PointerEvent(t,{pointerId:1,pointerType:"mouse",...i});e.dispatchEvent(h);}else {let h=new MouseEvent(t,i);e.dispatchEvent(h);}}catch{let l=new MouseEvent(t,o);e.dispatchEvent(l);}}function pn(e){return e&&typeof e=="object"&&e.nodeType===1}function Bo(e){if(!e)return document;if(pn(e))return e;if(typeof e=="string"){let t=document.getElementById(e);if(t)return t;let n=document.querySelector(e);if(n)return n}return document}function sn(e){if(pn(e))return {kind:"element",element:e};if(typeof e=="string"){let t=document.getElementById(e);if(t)return {kind:"element",element:t};let n=document.querySelector(e);return {kind:n?"element":"position",element:n??null}}if(typeof e=="object"&&"position"in e)return {kind:"position",point:e.position};if(typeof e=="object"&&"selector"in e){let n=Bo(e.within??null).querySelectorAll(e.selector),r=Math.max(0,Math.min(n.length-1,e.nth??0)),o=n[r]??null;return {kind:o?"element":"position",element:o}}return {kind:"position",point:{x:0,y:0}}}function ln(e,t){let n=e.getBoundingClientRect();if(!t||t==="center")return {x:n.left+n.width/2,y:n.top+n.height/2};if(t==="top-left")return {x:n.left,y:n.top};if(t==="bottom-right")return {x:n.right,y:n.bottom};let r=Fe(t.x,0,1),o=Fe(t.y,0,1);return {x:n.left+n.width*r,y:n.top+n.height*o}}function cn(e){return {x:Fe(e.x,0,window.innerWidth),y:Fe(e.y,0,window.innerHeight)}}function Do(){return at.useEffect(()=>(window.__cursorGuide=async(e,t={})=>{let n=Array.isArray(e)?e:[{target:e,action:t.action??"none",options:t}],r=[],o=await Ro();o.classList.add("visible","as-arrow"),o.classList.remove("as-pointer","pressing"),Mt(o),dn();let l=parseFloat(o.style.left||"20")||20,u=parseFloat(o.style.top||"20")||20;Et(o,l,u);for(let i of n){let{durationMs:h=800,easing:I="ease-in-out",offset:f,highlight:S=true,path:b="curve",curveStrength:k=.25,curveDirection:a="auto",anchor:v,cursorHotspot:s,dragTo:d}=i.options??{},g=i.action??i.options?.action??"none",C=performance.now(),y=sn(i.target),w=null,x=null;if(y.kind==="element"&&y.element?(x=y.element,o.classList.remove("visible"),x.scrollIntoView({behavior:"smooth",block:"center",inline:"center"}),await So(x,1500,180),Mt(o),w=ln(x,v)):y.kind==="position"&&y.point&&(w=y.point),!w){r.push({ok:false,action:g,targetKind:y.kind,durationMs:Math.round(performance.now()-C),error:"Target not found"});continue}let c={x:parseFloat(o.style.left||"20")||20,y:parseFloat(o.style.top||"20")||20},p=cn(an(w,f));await et(o,c,p,h,I,b,k,a);let T=p.x-c.x,m=p.y-c.y,F=Math.hypot(T,m)||1,H=T/F,R=m/F,O=Math.min(6,Math.max(3,F*.02)),V={x:p.x+H*O,y:p.y+R*O};await et(o,p,V,Math.max(70,h*.1),"ease-out","straight",0,"right"),await et(o,V,p,120,"ease-out","straight",0,"left"),S&&(o.classList?.add("click"),setTimeout(()=>o.classList?.remove("click"),180));let K=null;try{if(g==="click"){o.classList.remove("as-arrow"),o.classList.add("as-pointer","pressing");let E={x:s?.x??0,y:s?.y??0},L={x:p.x+E.x,y:p.y+E.y};o.style.left=`${L.x}px`,o.style.top=`${L.y}px`,Et(o,L.x,L.y);let W=x??document.elementFromPoint(L.x,L.y)??document.body;ue(W,"pointerdown",L),ue(W,"mousedown",L),await new Promise(U=>setTimeout(U,90)),o.classList.remove("pressing"),ue(W,"mouseup",L),ue(W,"click",L),setTimeout(()=>{o.classList.remove("as-pointer"),o.classList.add("as-arrow");},140),W instanceof HTMLElement&&W.focus?.(),K=W?.id??null;}else if(g==="drag"){if(!d)throw new Error("dragTo is required for action 'drag'");let E=sn(d),L=null;if(E.kind==="element"&&E.element&&(L=ln(E.element,v)),E.kind==="position"&&E.point&&(L=E.point),!L)throw new Error("dragTo target not found");let W=cn(an(L,f)),U={x:p.x,y:p.y},Z=x??document.elementFromPoint(U.x,U.y)??document.body;o.classList.remove("as-arrow"),o.classList.add("as-pointer","pressing"),ue(Z,"pointerdown",U),ue(Z,"mousedown",U),await et(o,U,W,Math.max(200,h),I,b,k,a,({x:N,y:xe})=>{let pe=document.elementFromPoint(N,xe)??document.body,be={x:N,y:xe};ue(pe,"pointermove",be),ue(pe,"mousemove",be);});let G=document.elementFromPoint(W.x,W.y)??document.body;o.classList.remove("pressing"),ue(G,"pointerup",W),ue(G,"mouseup",W);}r.push({ok:!0,action:g,targetKind:y.kind,durationMs:Math.round(performance.now()-C),clickedElementId:K});}catch(E){r.push({ok:false,action:g,targetKind:y.kind,durationMs:Math.round(performance.now()-C),error:E?.message??String(E)});}}return To(o,2e3),{ok:r.every(i=>i.ok),steps:r}},()=>{try{delete window.__cursorGuide;}catch{window.__cursorGuide=void 0;}}),[]),null}var ot=Do;function mn(){return {getDomComponents:{tool:async({includeHidden:e,selector:t})=>await We({includeHidden:e,selector:t}),executeEachToken:false},controlCursor:{tool:async({target:e,action:t,anchor:n,durationMs:r,dragTo:o})=>{let l=await ke(e,{action:t,anchor:n,durationMs:r,dragTo:o});if(l&&l.ok){let u=Array.isArray(l.steps)&&l.steps.length?l.steps[l.steps.length-1]:void 0,i=u?.clickedElementId?` (clicked element id: ${u.clickedElementId})`:"",h=t||u?.action||"none";return {success:true,message:h==="click"?`Cursor moved and clicked successfully${i}`:h==="drag"?"Cursor dragged successfully":"Cursor moved successfully",details:l}}return {success:false,message:"Cursor action failed",details:l}},executeEachToken:false},fillActiveInput:{tool:async({value:e})=>{let t=await Ue(e);return {success:!!t?.ok,message:t?.ok?"Active input filled successfully":t?.errors?.[0]||"Failed to fill active input",details:t}},executeEachToken:true},requestInput:{tool:async e=>({ok:true}),executeEachToken:true}}}function yn({chart:e,theme:t}){let n=at.useRef(null),[r,o]=at.useState(null),[l,u]=at.useState(true);at.useEffect(()=>{let b=true;return (async()=>{try{u(!0),o(null);let a;try{a=await import('mermaid');}catch{throw new Error("Mermaid library not available")}if(!b)return;if(a.default?.initialize({startOnLoad:!1,theme:t==="dark"?"dark":"default",themeVariables:{darkMode:t==="dark",primaryColor:t==="dark"?"#3B82F6":"#1D4ED8",primaryTextColor:t==="dark"?"#F3F4F6":"#1F2937",primaryBorderColor:t==="dark"?"#374151":"#D1D5DB"},flowchart:{useMaxWidth:!0},sequence:{useMaxWidth:!0},gantt:{useMaxWidth:!0}}),n.current&&b){let v=`mermaid-${Date.now()}-${Math.random().toString(36).slice(2)}`,{svg:s}=await a.default.render(v,e);if(n.current&&b){n.current.innerHTML=s;let d=n.current.querySelector("svg");d&&(d.style.maxWidth="100%",d.style.height="auto",d.style.display="block");}}}catch(a){b&&o(a instanceof Error?a.message:"Failed to render diagram");}finally{b&&u(false);}})(),()=>{b=false;}},[e,t]);let i=t==="dark"?"#374151":"#D1D5DB",h=t==="dark"?"#1F2937":"#F9FAFB",I=t==="dark"?"#7F1D1D":"#FEF2F2",f=t==="dark"?"#FCA5A5":"#DC2626",S=t==="dark"?"#9CA3AF":"#6B7280";return r?jsxRuntime.jsxs("div",{style:{borderRadius:"12px",border:`1px solid ${i}`,backgroundColor:I,padding:"16px",margin:"8px 0"},children:[jsxRuntime.jsx("div",{style:{fontSize:"14px",color:f,marginBottom:"8px",fontWeight:"500"},children:"Failed to render diagram"}),jsxRuntime.jsx("div",{style:{fontSize:"12px",color:f,opacity:.8},children:r})]}):jsxRuntime.jsxs("div",{style:{borderRadius:"12px",border:`1px solid ${i}`,backgroundColor:h,padding:"16px",margin:"8px 0",overflow:"hidden"},children:[l&&jsxRuntime.jsx("div",{style:{fontSize:"14px",color:S,textAlign:"center",padding:"32px"},children:"Rendering diagram..."}),jsxRuntime.jsx("div",{ref:n,style:{display:l?"none":"block",textAlign:"center",minHeight:l?"0":"50px"}})]})}function ie(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Le(e){return e=e.replace(/\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)/g,'<a href="$2" target="_blank" rel="noopener noreferrer" style="text-decoration: underline; color: inherit; opacity: 0.8;">$1</a>'),e=e.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),e=e.replace(/\*([^*\n]+)\*/g,"<em>$1</em>"),e=e.replace(/`([^`]+)`/g,'<code style="padding: 2px 4px; border-radius: 4px; background-color: rgba(0,0,0,0.1); font-family: monospace;">$1</code>'),e}function Oo(e,t="dark"){let n=(e||"").replace(/\r\n/g,`
|
|
12
|
-
`).split(`
|
|
13
|
-
`),r="",o=false,l="",u=[],i=false,h=false,I=false,f=t==="dark"?"#374151":"#D1D5DB",b=t==="dark"?"#111827":"#F3F4F6",k=t==="dark"?"#E5E7EB":"#374151",a=t==="dark"?"#374151":"#F3F4F6",v=t==="dark"?"#F9FAFB":"#111827",s=()=>{i&&(r+="</ul>",i=false),h&&(r+="</ol>",h=false);},d=c=>{for(let p=c;p<n.length;p++)if(n[p].trim().length>0)return p;return -1},g=c=>{let p=c.trim(),T=p.startsWith("|")?p.slice(1):p;return (T.endsWith("|")?T.slice(0,-1):T).split("|").map(F=>F.trim())},C=c=>{let p=c.trim();if(!p.startsWith("|"))return false;let T=g(p);return T.length>=2&&T.some(m=>m.length>0)},y=c=>{let p=g(c);return p.length===0?false:p.every(T=>/^:?-{3,}:?$/.test(T))},w=c=>{let p=c.startsWith(":"),T=c.endsWith(":");return p&&T?"center":!p&&T?"right":"left"},x=c=>{let p=c,T=d(p+1);if(T===-1)return {tableHtml:"",endIndex:c};let m=g(n[p]),F=g(n[T]),H=Math.max(m.length,F.length),R=[];for(let E=0;E<H;E++){let L=F[E]||"---";R.push(w(L));}let O=[],V=T+1;for(;V<n.length;){let E=n[V].trim();if(E.length===0){V++;continue}if(!E.startsWith("|"))break;let L=g(n[V]),W=[];for(let U=0;U<H;U++)W.push(L[U]??"");O.push(W),V++;}let K=`<div style="overflow: auto; max-width: 100%; max-height: 60vh; border-radius: 10px; margin: 8px 0;">
|
|
14
|
-
<table style="width: 100%; min-width: max-content; border-collapse: separate; border-spacing: 0; margin: 0;">`;K+="<thead><tr>";for(let E=0;E<H;E++){let L=Le(ie(m[E]??"")),W=R[E],U=E===0,Z=E===H-1;K+=`<th style="text-align: ${W}; padding: 10px 12px; border-bottom: 1px solid ${f}; background-color: ${a}; color: ${v}; position: sticky; top: 0; z-index: 1; ${`${U?"border-top-left-radius: 10px;":""}${Z?"border-top-right-radius: 10px;":""}`}">${L}</th>`;}K+="</tr></thead>",K+="<tbody>";for(let E of O){K+="<tr>";for(let L=0;L<H;L++){let W=Le(ie(E[L]??"")),U=R[L],Z=L===0;K+=`<td style="text-align: ${U}; padding: 10px 12px; border-bottom: 1px solid ${f}; ${Z?`border-left: 1px solid ${f};`:""} border-right: 1px solid ${f};">${W}</td>`;}K+="</tr>";}return K+="</tbody></table></div>",{tableHtml:K,endIndex:V-1}};for(let c=0;c<n.length;c++){let p=n[c],T=p.match(/^```\s*(\w+)?\s*$/);if(T){if(!o)s(),o=true,l=T[1]?String(T[1]):"",u=[];else {if(l==="mermaid"){I=true;let R=u.join(`
|
|
15
|
-
`);r+=`<div class="mermaid-placeholder" data-mermaid="${ie(R)}"></div>`;}else {let R=ie(u.join(`
|
|
16
|
-
`)),O=l?`language-${l}`:"";r+=`<pre style="border-radius: 8px; padding: 12px; background-color: ${b}; color: ${k}; border: 1px solid ${f}; overflow-x: auto; white-space: pre-wrap; word-break: break-all;"><code class="${O}">${R}</code></pre>`;}o=false,l="",u=[];}continue}if(o){u.push(p);continue}if(/^\s*(---|\*\*\*|___)\s*$/.test(p)){s(),r+='<hr style="margin: 12px 0; opacity: 0.6; border: none; border-top: 1px solid currentColor;" />';continue}let m=p.match(/^(#{1,6})\s+(.+)$/);if(m){s();let R=m[1].length,O=Le(ie(m[2].trim())),V=R<=2?"18px":R===3?"16px":"14px";r+=`<h${R} style="font-size: ${V}; font-weight: 600; margin: 8px 0 4px 0;">${O}</h${R}>`;continue}if(C(p)){let R=d(c+1);if(R!==-1&&y(n[R])){s();let{tableHtml:O,endIndex:V}=x(c);if(O){r+=O,c=V;continue}}}let F=p.match(/^\s*[-*]\s+(.+)$/),H=p.match(/^\s*\d+\.\s+(.+)$/);if(F){i||(s(),r+='<ul style="list-style-type: disc; padding-left: 24px; margin: 4px 0;">',i=true);let R=Le(ie(F[1]));r+=`<li style="margin: 2px 0;">${R}</li>`;continue}if(H){h||(s(),r+='<ol style="list-style-type: decimal; padding-left: 24px; margin: 4px 0;">',h=true);let R=Le(ie(H[1]));r+=`<li style="margin: 2px 0;">${R}</li>`;continue}if(p.trim().length===0)s(),r+='<div style="height: 8px;"></div>';else {s();let R=Le(ie(p));r+=`<p style="line-height: 1.6; margin: 4px 0; word-break: break-word;">${R}</p>`;}}if(o)if(l==="mermaid"){I=true;let c=u.join(`
|
|
17
|
-
`);r+=`<div class="mermaid-placeholder" data-mermaid="${ie(c)}"></div>`;}else {let c=ie(u.join(`
|
|
18
|
-
`)),p=l?`language-${l}`:"";r+=`<pre style="border-radius: 8px; padding: 12px; background-color: ${b}; color: ${k}; border: 1px solid ${f}; overflow-x: auto; white-space: pre-wrap; word-break: break-all;"><code class="${p}">${c}</code></pre>`;}return i&&(r+="</ul>"),h&&(r+="</ol>"),{html:r,hasMermaid:I}}function Ge({content:e,theme:t}){let{html:n,hasMermaid:r}=at.useMemo(()=>Oo(e,t),[e,t]);if(!r)return jsxRuntime.jsx("div",{style:{fontSize:"14px",lineHeight:"1.6",wordBreak:"break-word",maxWidth:"100%",overflow:"hidden"},dangerouslySetInnerHTML:{__html:n}});let o=n.split(/(<div class="mermaid-placeholder"[^>]*><\/div>)/g),l=[];return o.forEach((u,i)=>{if(u.includes("mermaid-placeholder")){let h=u.match(/data-mermaid="([^"]*)"/);if(h){let I=h[1].replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'");l.push(at__default.default.createElement(yn,{key:`mermaid-${i}`,chart:I,theme:t}));}}else u.trim()&&l.push(at__default.default.createElement("div",{key:`html-${i}`,style:{fontSize:"14px",lineHeight:"1.6",wordBreak:"break-word",maxWidth:"100%",overflow:"hidden"},dangerouslySetInnerHTML:{__html:u}}));}),at__default.default.createElement(at__default.default.Fragment,{},...l)}function _o({input:e}){return jsxRuntime.jsx("div",{style:{fontSize:"14px",lineHeight:"1.6",width:"100%"},children:jsxRuntime.jsx(Ge,{content:e?.text||"",theme:"dark"})})}function xn(){return {plainText:_o}}function bn(e,t,n,r,o,l){let u=n.get(t);if(u){let y=u.parentElement,w=document.querySelector(`[data-get-from-user-host="${t}"]`);if(w&&y!==w){try{y?.removeChild(u);}catch{}w.innerHTML="",w.appendChild(u);}}else {u=document.createElement("div"),u.className="hsafa-inline-form";let y=document.querySelector(`[data-get-from-user-host="${t}"]`);y?(y.innerHTML="",y.appendChild(u)):(document.querySelector(".chat-scroll-container")||document.body).appendChild(u),n.set(t,u);}let i=e?.title||"Provide input",h=e?.description||"",I=e?.submitLabel||"Submit",f=e?.skipLabel||"Skip",S=Array.isArray(e?.fields)?e.fields:e?.label||e?.placeholder?[{id:"value",label:e?.label||"Value",type:"text",placeholder:e?.placeholder||""}]:[],b=r.get(t)||{submitted:false,skipped:false,values:void 0};u.innerHTML="";let k=document.createElement("form");k.style.margin="12px 0",k.style.padding="14px",k.style.border="1px solid var(--hsafa-border, #2A2C33)",k.style.borderRadius="12px",k.style.background="var(--hsafa-card, #121318)",k.style.color="var(--hsafa-text, #EDEEF0)",k.style.boxShadow="0 6px 20px rgba(0,0,0,0.25)";let a=document.createElement("div");if(a.style.fontWeight="600",a.style.marginBottom="6px",a.textContent=i,k.appendChild(a),h){let y=document.createElement("div");y.style.fontSize="12px",y.style.opacity="0.8",y.style.marginBottom="10px",y.textContent=h,k.appendChild(y);}S.forEach(y=>{let w=document.createElement("div");if(w.style.margin="10px 0",y.label){let m=document.createElement("label");m.style.display="block",m.style.fontSize="12px",m.style.marginBottom="6px",m.style.opacity="0.9",m.textContent=y.label,w.appendChild(m);}let x,c=(y.type||"text").toLowerCase();if(c==="textarea"){let m=document.createElement("textarea");m.placeholder=y.placeholder||"",m.value=y.value??"",m.style.width="100%",m.style.minHeight="72px",m.style.padding="10px 12px",m.style.border="1px solid var(--hsafa-border, #2A2C33)",m.style.borderRadius="10px",m.style.background="var(--hsafa-input-bg, #17181C)",m.style.color="inherit",x=m;}else if(c==="select"&&Array.isArray(y.options)){let m=document.createElement("select");m.style.width="100%",m.style.padding="10px 12px",m.style.border="1px solid var(--hsafa-border, #2A2C33)",m.style.borderRadius="10px",m.style.background="var(--hsafa-input-bg, #17181C)",m.style.color="inherit",y.options.forEach(F=>{let H=document.createElement("option");H.value=String(F.value),H.text=String(F.label??F.value),m.appendChild(H);}),m.value=y.value??"",x=m;}else if(c==="checkbox"){let m=document.createElement("input");m.type="checkbox",m.checked=!!y.value,m.style.transform="scale(1.1)",x=m;}else {let m=document.createElement("input");m.type=c,m.placeholder=y.placeholder||"",m.value=y.value??"",m.style.width="100%",m.style.padding="10px 12px",m.style.border="1px solid var(--hsafa-border, #2A2C33)",m.style.borderRadius="10px",m.style.background="var(--hsafa-input-bg, #17181C)",m.style.color="inherit",x=m;}let p=y.id||"value";x.dataset.fieldId=p;let T=b.values&&Object.prototype.hasOwnProperty.call(b.values,p)?b.values[p]:void 0;typeof T<"u"&&(x.type==="checkbox"?x.checked=!!T:x.value=String(T)),(b.submitted||b.skipped)&&(x.setAttribute("disabled","true"),x.style.opacity="0.7"),w.appendChild(x),k.appendChild(w);});let v=String(I).trim(),s=String(f).trim(),d=!!(v||s),g=null,C=null;if(d){let y=document.createElement("div");y.style.display="flex",y.style.gap="8px",y.style.marginTop="10px",g=document.createElement("button"),g.type="submit",g.textContent=v||"Submit",g.style.padding="6px 10px",g.style.borderRadius="8px",g.style.background="var(--hsafa-button-bg, var(--hsafa-primary, #2563eb))",g.style.color="#000000",C=document.createElement("button"),C.type="button",C.textContent=s||"Skip",C.style.padding="6px 10px",C.style.borderRadius="8px",C.style.background="transparent",C.style.border="1px solid var(--hsafa-border, #2A2C33)",C.style.color="inherit",y.appendChild(g),y.appendChild(C),k.appendChild(y);}if(k.onsubmit=y=>{y.preventDefault();let w={};k.querySelectorAll("[data-field-id]").forEach(x=>{let c=x.dataset.fieldId||"value";x.type==="checkbox"?w[c]=x.checked:w[c]=x.value??"";}),r.set(t,{submitted:true,skipped:false,values:w}),o({tool:"requestInput",toolCallId:t,output:{success:true,submitted:true,values:w}}),k.querySelectorAll("[data-field-id]").forEach(x=>{x.disabled=true,x.style.opacity="0.7";}),g&&(g.textContent=`${v||"Submit"} \u2713`,g.style.opacity="0.8",g.disabled=true),C&&(C.disabled=true);},C&&(C.onclick=()=>{r.set(t,{submitted:false,skipped:true,values:void 0}),o({tool:"requestInput",toolCallId:t,output:{success:true,submitted:false,skipped:true}}),k.querySelectorAll("[data-field-id]").forEach(y=>{y.disabled=true,y.style.opacity="0.7";}),C&&(C.textContent=`${s||"Skip"} \u2713`,C.style.opacity="0.8",C.disabled=true),g&&(g.disabled=true);}),b.submitted||b.skipped){let y=document.createElement("div");y.style.marginTop="10px",y.style.fontSize="12px",y.style.display="flex",y.style.alignItems="center",y.style.gap="8px";let w=document.createElement("span");w.style.display="inline-flex",w.style.alignItems="center",w.style.padding="2px 8px",w.style.borderRadius="999px",w.style.fontWeight="600",w.style.fontSize="11px",b.submitted?(w.style.background="rgba(16,185,129,0.15)",w.style.color="#10b981",w.textContent="Submitted"):(w.style.background="rgba(234,179,8,0.15)",w.style.color="#eab308",w.textContent="Skipped"),y.appendChild(w),k.appendChild(y);try{g&&(g.disabled=!0,g.style.opacity="0.8",b.submitted&&(g.textContent=`${v||"Submit"} \u2713`)),C&&(C.disabled=!0,C.style.opacity="0.8",b.skipped&&(C.textContent=`${s||"Skip"} \u2713`));}catch{}}u.appendChild(k);}function Cn(e,t,n){let r=at.useRef(new Map),o=at.useRef(new Map),l=at.useRef(t),u=at.useRef(n);l.current=t,u.current=n,at.useEffect(()=>{e.forEach(i=>{i.role==="assistant"&&i.parts?.forEach(h=>{if(!h.toolCallId)return;let I=h.toolName;if(!I&&h.type?.startsWith("tool-")&&(I=h.type.replace(/^tool-/,"")),!I)return;let f=l.current[I];if(f&&typeof f=="object"&&f.executeEachToken&&f.tool){let S=h.input||h.args||{},b=JSON.stringify(S),k=r.current.get(h.toolCallId);if(b!==k&&b!=="{}"){r.current.set(h.toolCallId,b);try{if(I==="requestInput")u.current(S,h.toolCallId);else {let v=(o.current.get(h.toolCallId)||0)+1;o.current.set(h.toolCallId,v),v>1&&f.tool({...S,toolCallNumber:v-1});}}catch{}}}});});},[e]);}function Rt(e){let{agentId:t,baseUrl:n="",tools:r={},uiComponents:o={},onStart:l,onFinish:u,onError:i,initialMessages:h=[],onMessagesChange:I,controlledChatId:f,onChatIdChange:S,templateParams:b}=e,{baseUrl:k,setCurrentChatId:a}=ae(),v=n&&n.length>0?n:k||"",[s,d]=at.useState(""),[g,C]=at.useState(()=>`chat_${Date.now()}_${Math.random().toString(36).slice(2)}`),y=f??g,w=at.useCallback(A=>{f===void 0&&C(A),S&&S(A);},[f,S]);at.useEffect(()=>{try{a(y);}catch{}return ()=>{try{a(void 0);}catch{}}},[y,a]);let x=at.useMemo(()=>Qt(v,t,y,b),[v,t,y,b]),c=at.useCallback(A=>{console.log("Message finished:",A);let D=A?.message?.id;if(!D&&Array.isArray(A?.messages))for(let _=A.messages.length-1;_>=0;_--){let B=A.messages[_];if(B&&B.role==="assistant"&&B.id){D=B.id;break}}u?.({...A,chatId:y,assistantMessageId:D});},[u,y]),p=at.useCallback(A=>{console.error("Chat error:",A),i?.(A);},[i]),T=at.useMemo(()=>mn(),[]),m=at.useMemo(()=>({...T,...r}),[T,r]),F=at.useMemo(()=>xn(),[]),H=at.useMemo(()=>({...F,...o}),[F,o]),R=at.useRef(new Map),O=at.useRef(new Map),V=at.useCallback(()=>{try{R.current.forEach(A=>{try{A.remove();}catch{}}),R.current.clear(),O.current.clear();}catch{}},[]),K=at.useCallback((A,D)=>{bn(A,D,R.current,O.current,_=>E.current.addToolResult(_));},[]),E=at.useRef(null),L=at.useRef(new Set),W=at.useCallback((A,D,_)=>{console.error(`UI Error [${D}]:`,_),E.current&&L.current.has(A)&&(L.current.delete(A),E.current.addToolResult({tool:D,toolCallId:A,state:"output-error",errorText:_?.message||String(_)}));},[]),U=at.useCallback((A,D)=>{E.current&&L.current.has(A)&&(L.current.delete(A),E.current.addToolResult({tool:D,toolCallId:A,output:{status:"ok",rendered:true,component:D,logs:[]}}));},[]),Z=at.useCallback(A=>{let D=m[A];return D?typeof D=="object"&&"tool"in D?D.tool:typeof D=="function"?D:null:null},[m]),G=react.useChat({transport:x,onFinish:c,onError:p,experimental_throttle:10,sendAutomaticallyWhen:ai.lastAssistantMessageIsCompleteWithToolCalls,async onToolCall({toolCall:A}){let D=Z(A.toolName);if(A.toolName==="requestInput"){try{K(A.input,A.toolCallId);}catch(ne){console.error("requestInput render error",ne);}return}let _=A.toolName==="ui";A?.input;let te=H&&A.toolName in H;if(_||te){L.current.add(A.toolCallId);return}if(D)try{let ne=await D(A.input);G.addToolResult({tool:A.toolName,toolCallId:A.toolCallId,output:ne});}catch(ne){G.addToolResult({tool:A.toolName,toolCallId:A.toolCallId,state:"output-error",errorText:ne?.message||String(ne)});}}}),{messages:N,sendMessage:xe,status:pe,stop:be,error:ht}=G;E.current=G,Cn(N,m,K),at.useEffect(()=>{try{let A=new Set,D=[];if(N.forEach(_=>{_.role==="assistant"&&(_.parts||[]).forEach(B=>{if((B?.toolName||(typeof B?.type=="string"&&B.type.startsWith("tool-")?String(B.type.replace(/^tool-/,"")):void 0))!=="requestInput")return;let ne=B?.toolCallId||"";if(!ne)return;A.add(ne);let me=B?.output;if(me&&(me.submitted||me.skipped||me.values)){let Ce={submitted:!!me.submitted,skipped:!!me.skipped,values:me.values||void 0};O.current.set(ne,Ce);}let Q=B?.input||B?.args||{};D.push({input:Q,toolCallId:ne});});}),R.current.forEach((_,B)=>{if(!A.has(B)){let te=R.current.get(B);try{te?.remove();}catch{}R.current.delete(B),O.current.delete(B);}}),D.length>0){let _=requestAnimationFrame(()=>{D.forEach(({input:B,toolCallId:te})=>{try{K(B,te);}catch{}});});return ()=>cancelAnimationFrame(_)}}catch{}},[N,K]),at.useEffect(()=>{h&&h.length>0&&N.length===0&&console.log("Initial messages:",h);},[h,N.length]);let Y=pe==="submitted"||pe==="streaming",Ke=at.useCallback(()=>{I&&I(N,y);},[I,N,y]),Be=at.useCallback(async A=>{let D=A?.text!==void 0?A.text:s,_=A?.files||[],B=D.trim();if(!(!B&&_.length===0)&&!Y){A?.text===void 0&&d("");try{if(l){let te={role:"user",content:B,createdAt:Date.now(),chatId:y};l(te);}await xe({text:B,files:_});}catch(te){throw console.error("Failed to send message:",te),te}}},[s,Y,xe,l,y]),Se=at.useCallback(()=>{if(Y)return;V(),d("");try{G?.setMessages?.([]);}catch{}let A=`chat_${Date.now()}_${Math.random().toString(36).slice(2)}`;w(A);},[Y,G,V,w]),Dt=at.useCallback(A=>{try{G?.setMessages?.(A);}catch{}},[G]);return {input:s,setInput:d,messages:N,isLoading:Y,status:pe,error:ht,sendMessage:Be,stop:be,newChat:Se,setMessages:Dt,notifyMessagesChange:Ke,chatApi:G,chatId:y,setChatId:w,tools:m,uiComponents:H,formHostRef:R,formStateRef:O,cleanupForms:V,onUISuccess:U,onUIError:W}}function lt(e){let t=`hsafaChat_${e}`,n=`${t}.chats`,r=C=>`${t}.chat.${C}`,o=`${t}.currentChatId`,l=`${t}.showChat`,u=()=>{try{let C=localStorage.getItem(n);return C?JSON.parse(C):[]}catch{return []}},i=C=>{try{localStorage.setItem(n,JSON.stringify(C));}catch{}},h=C=>{try{let y=localStorage.getItem(r(C));return y?JSON.parse(y):null}catch{return null}},I=C=>{try{localStorage.setItem(r(C.id),JSON.stringify(C));}catch{}},f=C=>{let y=u(),w=y.findIndex(x=>x.id===C.id);w>=0?y[w]=C:y.unshift(C),i(y);},S=C=>{let w=u().filter(x=>x.id!==C);i(w);},b=C=>{try{localStorage.removeItem(r(C));}catch{}};return {loadChatsIndex:u,saveChatsIndex:i,loadChat:h,saveChat:I,upsertChatMeta:f,deleteChatMeta:S,deleteChatData:b,deleteChat:C=>{b(C),S(C);},loadShowChatPreference:C=>{try{let y=localStorage.getItem(l);return y!==null?y==="true":C}catch{return C}},saveShowChatPreference:C=>{try{localStorage.setItem(l,String(C));}catch{}},loadCurrentChatId:()=>{try{return localStorage.getItem(o)}catch{return null}},saveCurrentChatId:C=>{try{localStorage.setItem(o,C);}catch{}},removeCurrentChatId:()=>{try{localStorage.removeItem(o);}catch{}}}}function Lt(e){let{agentId:t,chatId:n,messages:r,isLoading:o=false,autoSave:l=true,autoRestore:u=true}=e,i=at.useMemo(()=>lt(t),[t]),[h,I]=at.useState([]),[f,S]=at.useState(null),b=at.useRef(false),k=at.useRef(false),a=at.useCallback(()=>{try{let x=i.loadChatsIndex();I(x);let c=x.find(p=>p.id===n);S(c||null);}catch(x){console.error("Failed to refresh chat list:",x);}},[i,n]);at.useEffect(()=>{a();},[a]),at.useEffect(()=>{if(!(!u||k.current)){try{i.loadCurrentChatId()&&(b.current=!0);}catch(x){console.error("Failed to restore chat:",x);}k.current=true;}},[i,u]),at.useEffect(()=>{if(!(!l||r.length===0))if(b.current){if(!o){let x=Date.now();try{i.saveChat({id:n,messages:r,agentId:t});let p=i.loadChatsIndex().find(T=>T.id===n);p&&(i.upsertChatMeta({...p,updatedAt:x}),a());}catch(c){console.error("Failed to save chat:",c);}}}else {let x=r.find(c=>c.role==="user");if(x){let c="";if(Array.isArray(x.parts)){let m=x.parts.find(F=>F&&F.type==="text");c=m&&typeof m.text=="string"?m.text:"";}let p=(c||"New chat").slice(0,80),T=Date.now();try{i.upsertChatMeta({id:n,title:p,createdAt:T,updatedAt:T}),i.saveChat({id:n,messages:r,agentId:t}),i.saveCurrentChatId(n),b.current=!0,a();}catch(m){console.error("Failed to create chat:",m);}}}},[]);let v=at.useRef(false);at.useEffect(()=>{if(o){v.current=true;return}if(v.current&&l){v.current=false;try{let x=Date.now();i.saveChat({id:n,messages:r,agentId:t});let p=i.loadChatsIndex().find(T=>T.id===n);if(p)i.upsertChatMeta({...p,updatedAt:x});else {let T="",m=Array.isArray(r)?r.find(H=>H&&H.role==="user"):void 0;if(m&&Array.isArray(m.parts)){let H=m.parts.find(R=>R&&R.type==="text");T=H&&typeof H.text=="string"?H.text:"";}let F=(T||"New chat").slice(0,80);i.upsertChatMeta({id:n,title:F,createdAt:x,updatedAt:x});try{i.saveCurrentChatId(n);}catch{}b.current=!0;}a();}catch(x){console.error("Failed to save chat on completion:",x);}}},[o,r,n,t,i,l,a]);let s=at.useCallback(x=>{try{let c=i.loadChat(x);return c?{id:c.id,messages:c.messages,agentId:c.agentId||t}:null}catch(c){return console.error("Failed to load chat:",c),null}},[i,t]),d=at.useCallback(()=>{if(r.length!==0)try{let x=Date.now();i.saveChat({id:n,messages:r,agentId:t});let p=i.loadChatsIndex().find(T=>T.id===n);p&&(i.upsertChatMeta({...p,updatedAt:x}),a());}catch(x){console.error("Failed to save chat:",x);}},[i,n,r,t,a]),g=at.useCallback(x=>{try{i.deleteChat(x),a();}catch(c){console.error("Failed to delete chat:",c);}},[i,a]),C=at.useCallback((x,c)=>{if(x!==n)try{b.current=!0,i.saveCurrentChatId(x);let p=i.loadChat(x),T=p&&Array.isArray(p.messages)?p.messages:[];c(T),a();}catch(p){console.error("Failed to switch chat:",p);}},[i,n,a]),y=at.useCallback(x=>{b.current=false,x();},[]),w=at.useCallback(x=>{if(!x.trim())return h;let c=x.toLowerCase();return h.filter(p=>p.title.toLowerCase().includes(c))},[h]);return {chatList:h,currentChatMeta:f,refreshChatList:a,loadChat:s,saveCurrentChat:d,deleteChat:g,switchToChat:C,createNewChat:y,searchChats:w,storage:i}}function Xo(e){let{messages:t,isLoading:n,sendMessage:r,setMessages:o,baseUrl:l}=e,{baseUrl:u}=ae(),i=l||u||"",[h,I]=at.useState(null),[f,S]=at.useState(""),[b,k]=at.useState([]),[a,v]=at.useState(false),s=at.useCallback((x,c,p=[])=>{I(x),S(c),k(p);},[]),d=at.useCallback(()=>{I(null),S(""),k([]);},[]),g=at.useCallback(async x=>{if(!n)try{let c=t.findIndex(T=>T.id===x);if(c===-1)return;let p=t.slice(0,c);o(p),await r({text:f.trim(),files:b.map(T=>({type:"file",url:T.url,mediaType:T.mimeType||"application/octet-stream",...T.name?{name:T.name}:{},...T.size?{size:T.size}:{}}))}),d();}catch(c){throw console.error("Failed to save edit:",c),c}},[n,t,r,f,b,o,d]),C=at.useCallback(x=>h===x,[h]),y=at.useCallback(async x=>{if(!i){console.warn("baseUrl not provided, cannot upload attachments");return}v(true);try{let c=Array.from(x).map(async T=>{if(T.size>26214400)throw new Error(`${T.name} is too large (max 25MB)`);let m=new FormData;m.append("file",T);let F=await fetch(`${i}/api/upload`,{method:"POST",body:m});if(!F.ok)throw new Error(`Upload failed: ${F.statusText}`);let H=await F.json();return {id:H.url||`${Date.now()}-${Math.random()}`,name:T.name,url:H.url,mimeType:T.type,size:T.size}}),p=await Promise.all(c);k(T=>[...T,...p]);}catch(c){throw console.error("Failed to upload files:",c),c}finally{v(false);}},[i]),w=at.useCallback(x=>{k(c=>c.filter(p=>p.id!==x));},[]);return {editingMessageId:h,editingText:f,setEditingText:S,editAttachments:b,setEditAttachments:k,editUploading:a,startEdit:s,cancelEdit:d,saveEdit:g,isEditing:C,addEditAttachments:y,removeEditAttachment:w}}function X({IconComponent:e,...t}){return at__default.default.createElement(e,t)}function Ht({icon:e,onClick:t,ariaLabel:n,resolvedColors:r,disabled:o=false,title:l}){return jsxRuntime.jsx("button",{"aria-label":n,title:l,disabled:o,style:{backgroundColor:"transparent",color:r.mutedTextColor,border:"none",borderRadius:"8px",padding:"8px",cursor:o?"not-allowed":"pointer",opacity:o?.5:1,transition:"all 0.2s ease-out",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:u=>{o||(u.currentTarget.style.backgroundColor=r.hoverBackground,u.currentTarget.style.color=r.textColor);},onMouseLeave:u=>{u.currentTarget.style.backgroundColor="transparent",u.currentTarget.style.color=r.mutedTextColor;},onClick:t,children:e})}function Tn({title:e,alwaysOpen:t,streaming:n,dir:r,resolvedColors:o,onNew:l,onToggleHistory:u,onClose:i,historyBtnRef:h,t:I}){return jsxRuntime.jsxs("div",{style:{marginBottom:"24px",display:"flex",alignItems:"center",justifyContent:"space-between",direction:r==="rtl"?"rtl":"ltr"},children:[jsxRuntime.jsx("div",{style:{minWidth:"0"},children:jsxRuntime.jsx("h1",{title:e,style:{color:o.textColor,fontSize:"18px",fontWeight:"600",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",margin:"0"},children:e})}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",position:"relative",color:o.mutedTextColor},children:[jsxRuntime.jsx(Ht,{icon:jsxRuntime.jsx(X,{IconComponent:lucideReact.Plus,size:"20",strokeWidth:"2"}),onClick:()=>{n||l();},ariaLabel:I("header.new"),resolvedColors:o,disabled:n}),jsxRuntime.jsx("button",{ref:h,"aria-label":I("header.history"),style:{backgroundColor:"transparent",color:o.mutedTextColor,border:"none",borderRadius:"8px",padding:"8px",cursor:"pointer",transition:"all 0.2s ease-out",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:f=>{f.currentTarget.style.backgroundColor=o.hoverBackground,f.currentTarget.style.color=o.textColor;},onMouseLeave:f=>{f.currentTarget.style.backgroundColor="transparent",f.currentTarget.style.color=o.mutedTextColor;},onClick:u,children:jsxRuntime.jsx(X,{IconComponent:lucideReact.History,size:"20",strokeWidth:"2"})}),!t&&jsxRuntime.jsx(Ht,{icon:jsxRuntime.jsx(X,{IconComponent:lucideReact.ChevronRight,size:"20",strokeWidth:"2",style:{transform:r==="rtl"?"rotate(180deg)":"none"}}),onClick:i,ariaLabel:I("header.close"),resolvedColors:o})]})]})}var mt=class extends at.Component{constructor(t){super(t),this.state={hasError:false,error:null,errorInfo:null};}static getDerivedStateFromError(t){return {hasError:true,error:t,errorInfo:null}}componentDidMount(){let{toolCallId:t,toolName:n,onSuccess:r}=this.props;t&&n&&r&&!this.state.hasError&&setTimeout(()=>{this.state.hasError||r(t,n);},0);}componentDidCatch(t,n){console.error(`UI Component Error (${this.props.componentName}):`,t,n),this.setState({error:t,errorInfo:n});let{toolCallId:r,toolName:o,onError:l}=this.props;r&&o&&l&&l(r,o,t);}render(){if(this.state.hasError&&this.state.error){let{resolvedColors:t,componentName:n}=this.props;return jsxRuntime.jsxs("div",{style:{padding:"16px",backgroundColor:"#fee2e2",border:"2px solid #ef4444",borderRadius:"12px",color:"#991b1b"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"8px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"20px"},children:"\u26A0\uFE0F"}),jsxRuntime.jsxs("strong",{style:{fontSize:"16px"},children:["Component Error: ",n]})]}),jsxRuntime.jsx("div",{style:{fontSize:"14px",marginBottom:"8px",fontFamily:"monospace"},children:this.state.error.message}),this.state.errorInfo&&jsxRuntime.jsxs("details",{style:{fontSize:"12px",marginTop:"8px"},children:[jsxRuntime.jsx("summary",{style:{cursor:"pointer",fontWeight:"bold"},children:"Stack Trace"}),jsxRuntime.jsx("pre",{style:{marginTop:"8px",padding:"8px",backgroundColor:"#fef2f2",borderRadius:"4px",overflow:"auto",maxHeight:"200px",fontSize:"11px"},children:this.state.errorInfo.componentStack})]})]})}return this.props.children}};var nr=e=>{let t={"input-streaming":{color:"#eab308",text:"Inputting"},"input-available":{color:"#3b82f6",text:"Running"},error:{color:"#ef4444",text:"Error"},"output-available":{color:"#10b981",text:"Called"},finished:{color:"#10b981",text:"Called"}};return t[e||"output-available"]||t["output-available"]},or=e=>{let t=/^(.+?)_([a-f0-9]{6})_(.+)$/,n=e.match(t);if(n){let[,r,,o]=n;return {isMCP:true,mcpName:r.replace(/_/g," "),toolName:o.replace(/_/g," ")}}return {isMCP:false,toolName:e}},rr=e=>e.replace(/_/g," ").replace(/-/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b\w/g,t=>t.toUpperCase());function In({parts:e,messageId:t,openReasoningIds:n,toggleReasoning:r,resolvedColors:o,HsafaUI:l,onUIError:u,onUISuccess:i,addToolResult:h}){let I=[],f=[],S,b,k=false;for(let a of Array.isArray(e)?e:[]){if(!a)continue;if(a.type==="reasoning"&&typeof a.text=="string"){f.push(a.text),S||(S=a.startDate),b=a.endDate,a.state==="done"&&(k=true);continue}if(a.type==="text"&&typeof a.text=="string"){f.length&&(I.push({type:"reasoning",texts:f,startDate:S,endDate:b,isCompleted:k}),f=[],S=void 0,b=void 0,k=false),I.push({type:"text",text:a.text,startDate:a.startDate,endDate:a.endDate});continue}let v=a.type==="dynamic-tool",s=typeof a.type=="string"&&a.type.startsWith("tool-");if(v||s||a.type==="tool-call"){f.length&&(I.push({type:"reasoning",texts:f,startDate:S,endDate:b,isCompleted:k}),f=[],S=void 0,b=void 0,k=false);let d=String(v?a.toolName||"dynamic-tool":s?a.type?.slice(5)||"tool":a.toolName||"tool");d==="requestInput"?I.push({type:"tool",toolName:d,status:a.state||a.status,input:a.input,output:a.output,startDate:a.startDate,endDate:a.endDate,toolCallId:a.toolCallId}):I.push({type:"tool",toolName:d,status:a.state||a.status,input:a.input,output:a.output,startDate:a.startDate,endDate:a.endDate,toolCallId:a.toolCallId});continue}}return f.length&&I.push({type:"reasoning",texts:f,startDate:S,endDate:b,isCompleted:k}),I.length?jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[I.map((a,v)=>{let s=`${t}-${v}`,d=n.has(s);if(a.type==="reasoning"){let c=a.isCompleted||typeof a.startDate=="number"&&typeof a.endDate=="number",p=a.texts&&a.texts.length>0&&a.texts.some(m=>m.trim().length>0),T=()=>{p&&r(s);};return c&&!p?null:jsxRuntime.jsx("div",{onClick:T,style:{cursor:p?"pointer":"default",padding:"0"},children:jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:d?"4px":"0px"},children:[jsxRuntime.jsxs("div",{style:{fontSize:"13px",color:o.mutedTextColor,fontWeight:500,display:"flex",alignItems:"center",gap:"6px",overflow:"hidden",maxWidth:"100%",minWidth:0,width:"100%"},children:[jsxRuntime.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:[!c&&jsxRuntime.jsx("span",{style:{display:"inline-block",height:"6px",width:"6px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"pulse 1.5s ease-in-out infinite"}}),jsxRuntime.jsx("span",{style:{color:o.textColor,fontWeight:600,opacity:.9,background:c?"none":`linear-gradient(90deg, ${o.textColor}, ${o.mutedTextColor}, ${o.mutedTextColor})`,backgroundSize:c?"auto":"200% 100%",backgroundClip:c?"unset":"text",WebkitBackgroundClip:c?"unset":"text",WebkitTextFillColor:c?o.mutedTextColor:"transparent",animation:c?void 0:"shimmer 2s ease-in-out infinite"},children:c?"Finish Thinking":"Thinking"})]}),p&&jsxRuntime.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,transform:d?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.2s ease-out"},children:jsxRuntime.jsx("polyline",{points:"9 18 15 12 9 6"})})]}),jsxRuntime.jsx("div",{style:{display:"grid",gridTemplateRows:d||!c?"1fr":"0fr",transition:"grid-template-rows 0.2s ease-out",overflow:"hidden"},children:jsxRuntime.jsx("div",{style:{minHeight:0},children:a.texts&&a.texts.length>0?jsxRuntime.jsx("div",{style:{fontSize:"13px",color:o.mutedTextColor,lineHeight:"1.6",maxWidth:"100%"},children:(!c&&d?a.texts:c?d?a.texts:[]:[a.texts[a.texts.length-1]]).map((m,F)=>jsxRuntime.jsx("div",{style:{marginBottom:"6px"},children:jsxRuntime.jsx(Ge,{content:m,theme:"dark"})},`rg-line-${v}-${F}`))}):jsxRuntime.jsxs("div",{style:{fontSize:"12px",color:o.mutedTextColor,opacity:.7,display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{display:"inline-block",height:"6px",width:"6px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"pulse 1.5s ease-in-out infinite"}}),jsxRuntime.jsx("span",{style:{letterSpacing:"2px",animation:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite"},children:"..."})]})})})]})},s)}if(a.type==="text")return jsxRuntime.jsx("div",{style:{fontSize:"15px",color:o.textColor,lineHeight:"1.6"},children:jsxRuntime.jsx(Ge,{content:a.text,theme:"dark"})},s);let{color:g,text:C}=nr(a.status),y=a.status==="input-streaming"||a.status==="input-available";if(a.toolName==="requestInput")return jsxRuntime.jsx("div",{style:{display:"block",position:"relative"},children:jsxRuntime.jsx("div",{"data-get-from-user-host":a.toolCallId||s,style:{width:"100%"}})},s);let w=l?.[a.toolName||""];if(w)return jsxRuntime.jsx("div",{style:{display:"block",position:"relative"},children:jsxRuntime.jsx(mt,{componentName:a.toolName||"Unknown",resolvedColors:o,toolCallId:a.toolCallId,toolName:a.toolName||"unknown",onError:u,onSuccess:i,children:jsxRuntime.jsx(w,{toolName:a.toolName||"",toolCallId:a.toolCallId||"",input:a.input,output:a.output,status:a.status,addToolResult:h})})},s);let x=or(a.toolName||"tool");return jsxRuntime.jsx("div",{style:{display:"flex",gap:"12px",position:"relative"},children:jsxRuntime.jsx("div",{style:{flex:1,minWidth:0},children:jsxRuntime.jsxs("div",{style:{fontSize:"13px",color:o.mutedTextColor,display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"},children:[jsxRuntime.jsxs("span",{style:{fontWeight:600,color:g,display:"flex",alignItems:"center",gap:"6px"},children:[jsxRuntime.jsx("span",{style:{display:"inline-block",height:"6px",width:"6px",borderRadius:"50%",backgroundColor:g,animation:y?"pulse 1.5s ease-in-out infinite":void 0}}),C]}),x.isMCP?jsxRuntime.jsxs("span",{style:{fontWeight:500,color:o.textColor},children:[jsxRuntime.jsx("span",{style:{fontWeight:600},children:x.toolName}),jsxRuntime.jsx("span",{style:{opacity:.7,margin:"0 4px"},children:"from"}),jsxRuntime.jsx("span",{style:{fontWeight:600,opacity:.85},children:x.mcpName})]}):jsxRuntime.jsx("span",{style:{fontWeight:500,color:o.textColor},children:rr(x.toolName)})]})})},s)}),jsxRuntime.jsx("style",{children:`
|
|
11
|
+
`,document.head.appendChild(o);}Bn=true;}return t?(t.classList.add("as-arrow"),Ke||(Ke=client.createRoot(t),Ke.render(jsxRuntime.jsx(Dn,{arrowSvg:n.arrow,pointerSvg:n.pointer})))):(t=document.createElement("div"),t.id=e,t.className="fake-cursor as-arrow",t.style.position="fixed",t.style.left="20px",t.style.top="20px",document.body.appendChild(t),Ke=client.createRoot(t),Ke.render(jsxRuntime.jsx(Dn,{arrowSvg:n.arrow,pointerSvg:n.pointer}))),t}function Pe(e,t,n){return Math.max(t,Math.min(n,e))}function No(e){return e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2}function Un(e){if(!e)return null;let t=document.createElement("canvas").getContext("2d");if(!t)return null;t.fillStyle="#000",t.fillStyle=e;let r=t.fillStyle.match(/rgba?\(([^)]+)\)/i);if(!r)return null;let o=r[1].split(/\s*,\s*/).map(Number),[l,u,c,x=1]=o;return {r:l,g:u,b:c,a:x}}function Wo({r:e,g:t,b:n}){let r=[e,t,n].map(o=>o/255).map(o=>o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4));return .2126*r[0]+.7152*r[1]+.0722*r[2]}function Uo(e){let t=e?Un(e):null;return !t||t.a===0?false:Wo(t)<.5}function Oo(e,t){let n=document.elementFromPoint(e,t),r=new Set;for(;n&&!r.has(n);){r.add(n);let u=getComputedStyle(n).backgroundColor,c=Un(u);if(c&&c.a>0)return u;n=n.parentElement;}return getComputedStyle(document.body).backgroundColor||"rgb(255,255,255)"}function Pt(e,t,n){let r=Oo(t,n),o=Uo(r),l=o?"#ffffff":"#000000";e.querySelectorAll("svg path").forEach(c=>{c.style.fill="white",c.style.stroke=l,c.style.strokeWidth="1";}),e.style.filter=o?"drop-shadow(0 1px 2px rgba(0,0,0,0.8))":"drop-shadow(0 1px 2px rgba(255,255,255,0.9))";}async function it(e,t,n,r,o="ease-in-out",l="curve",u=.25,c="auto",x){Wn(),Dt(e);let I=performance.now(),d=o==="linear"?b=>b:No,S=l!=="straight",C={x:0,y:0};if(S){let b=n.x-t.x,a=n.y-t.y,w=Math.hypot(b,a)||1,i=(t.x+n.x)/2,T=(t.y+n.y)/2,s=-a/w,g=b/w,h=1;c==="left"?h=-1:c==="right"?h=1:h=Math.random()<.5?-1:1;let k=Pe(u,0,1)*w;C={x:i+h*s*k,y:T+h*g*k};}return new Promise(b=>{function a(w){let i=Pe((w-I)/r,0,1),T=d(i),s,g;if(S){let v=1-T;s=v*v*t.x+2*v*T*C.x+T*T*n.x,g=v*v*t.y+2*v*T*C.y+T*T*n.y;}else s=t.x+(n.x-t.x)*T,g=t.y+(n.y-t.y)*T;let k=.35*(1-T),y=Math.sin(w*.02)*k,m=Math.cos(w*.018)*k;e.style.left=`${s+y}px`,e.style.top=`${g+m}px`,Pt(e,s+y,g+m),x&&x({x:s+y,y:g+m,t:i,now:w}),i<1?requestAnimationFrame(a):b();}requestAnimationFrame(a);})}function Pn(e,t){return {x:e.x+(t?.x??0),y:e.y+(t?.y??0)}}function he(e,t,n,r){let o={bubbles:true,cancelable:true,view:window,clientX:n.x,clientY:n.y,...r};try{let l=t==="pointerdown"||t==="mousedown",u=t==="pointerup"||t==="mouseup",c={button:0,buttons:l?1:0,isPrimary:!0,...o};if("PointerEvent"in window){let x=new PointerEvent(t,{pointerId:1,pointerType:"mouse",...c});e.dispatchEvent(x);}else {let x=new MouseEvent(t,c);e.dispatchEvent(x);}}catch{let l=new MouseEvent(t,o);e.dispatchEvent(l);}}function On(e){return e&&typeof e=="object"&&e.nodeType===1}function Go(e){if(!e)return document;if(On(e))return e;if(typeof e=="string"){let t=document.getElementById(e);if(t)return t;let n=document.querySelector(e);if(n)return n}return document}function $n(e){if(On(e))return {kind:"element",element:e};if(typeof e=="string"){let t=document.getElementById(e);if(t)return {kind:"element",element:t};let n=document.querySelector(e);return {kind:n?"element":"position",element:n??null}}if(typeof e=="object"&&"position"in e)return {kind:"position",point:e.position};if(typeof e=="object"&&"selector"in e){let n=Go(e.within??null).querySelectorAll(e.selector),r=Math.max(0,Math.min(n.length-1,e.nth??0)),o=n[r]??null;return {kind:o?"element":"position",element:o}}return {kind:"position",point:{x:0,y:0}}}function zn(e,t){let n=e.getBoundingClientRect();if(!t||t==="center")return {x:n.left+n.width/2,y:n.top+n.height/2};if(t==="top-left")return {x:n.left,y:n.top};if(t==="bottom-right")return {x:n.right,y:n.bottom};let r=Pe(t.x,0,1),o=Pe(t.y,0,1);return {x:n.left+n.width*r,y:n.top+n.height*o}}function Nn(e){return {x:Pe(e.x,0,window.innerWidth),y:Pe(e.y,0,window.innerHeight)}}function jo(){return so.useEffect(()=>(window.__cursorGuide=async(e,t={})=>{let n=Array.isArray(e)?e:[{target:e,action:t.action??"none",options:t}],r=[],o=await zo();o.classList.add("visible","as-arrow"),o.classList.remove("as-pointer","pressing"),Dt(o),Wn();let l=parseFloat(o.style.left||"20")||20,u=parseFloat(o.style.top||"20")||20;Pt(o,l,u);for(let c of n){let{durationMs:x=800,easing:I="ease-in-out",offset:d,highlight:S=true,path:C="curve",curveStrength:b=.25,curveDirection:a="auto",anchor:w,cursorHotspot:i,dragTo:T}=c.options??{},s=c.action??c.options?.action??"none",g=performance.now(),h=$n(c.target),k=null,y=null;if(h.kind==="element"&&h.element?(y=h.element,o.classList.remove("visible"),y.scrollIntoView({behavior:"smooth",block:"center",inline:"center"}),await Bo(y,1500,180),Dt(o),k=zn(y,w)):h.kind==="position"&&h.point&&(k=h.point),!k){r.push({ok:false,action:s,targetKind:h.kind,durationMs:Math.round(performance.now()-g),error:"Target not found"});continue}let m={x:parseFloat(o.style.left||"20")||20,y:parseFloat(o.style.top||"20")||20},v=Nn(Pn(k,d));await it(o,m,v,x,I,C,b,a);let M=v.x-m.x,f=v.y-m.y,F=Math.hypot(M,f)||1,G=M/F,V=f/F,me=Math.min(6,Math.max(3,F*.02)),ge={x:v.x+G*me,y:v.y+V*me};await it(o,v,ge,Math.max(70,x*.1),"ease-out","straight",0,"right"),await it(o,ge,v,120,"ease-out","straight",0,"left"),S&&(o.classList?.add("click"),setTimeout(()=>o.classList?.remove("click"),180));let se=null;try{if(s==="click"){o.classList.remove("as-arrow"),o.classList.add("as-pointer","pressing");let P={x:i?.x??0,y:i?.y??0},U={x:v.x+P.x,y:v.y+P.y};o.style.left=`${U.x}px`,o.style.top=`${U.y}px`,Pt(o,U.x,U.y);let X=y??document.elementFromPoint(U.x,U.y)??document.body;he(X,"pointerdown",U),he(X,"mousedown",U),await new Promise(fe=>setTimeout(fe,90)),o.classList.remove("pressing"),he(X,"mouseup",U),he(X,"click",U),setTimeout(()=>{o.classList.remove("as-pointer"),o.classList.add("as-arrow");},140),X instanceof HTMLElement&&X.focus?.(),se=X?.id??null;}else if(s==="drag"){if(!T)throw new Error("dragTo is required for action 'drag'");let P=$n(T),U=null;if(P.kind==="element"&&P.element&&(U=zn(P.element,w)),P.kind==="position"&&P.point&&(U=P.point),!U)throw new Error("dragTo target not found");let X=Nn(Pn(U,d)),fe={x:v.x,y:v.y},A=y??document.elementFromPoint(fe.x,fe.y)??document.body;o.classList.remove("as-arrow"),o.classList.add("as-pointer","pressing"),he(A,"pointerdown",fe),he(A,"mousedown",fe),await it(o,fe,X,Math.max(200,x),I,C,b,a,({x:Q,y:ie})=>{let J=document.elementFromPoint(Q,ie)??document.body,ee={x:Q,y:ie};he(J,"pointermove",ee),he(J,"mousemove",ee);});let O=document.elementFromPoint(X.x,X.y)??document.body;o.classList.remove("pressing"),he(O,"pointerup",X),he(O,"mouseup",X);}r.push({ok:!0,action:s,targetKind:h.kind,durationMs:Math.round(performance.now()-g),clickedElementId:se});}catch(P){r.push({ok:false,action:s,targetKind:h.kind,durationMs:Math.round(performance.now()-g),error:P?.message??String(P)});}}return Ho(o,2e3),{ok:r.every(c=>c.ok),steps:r}},()=>{try{delete window.__cursorGuide;}catch{window.__cursorGuide=void 0;}}),[]),null}var Ve=jo;function Gn(){return {getDomComponents:{tool:async({includeHidden:e,selector:t})=>await _e({includeHidden:e,selector:t}),executeEachToken:false},controlCursor:{tool:async({target:e,action:t,anchor:n,durationMs:r,dragTo:o})=>{let l=await Me(e,{action:t,anchor:n,durationMs:r,dragTo:o});if(l&&l.ok){let u=Array.isArray(l.steps)&&l.steps.length?l.steps[l.steps.length-1]:void 0,c=u?.clickedElementId?` (clicked element id: ${u.clickedElementId})`:"",x=t||u?.action||"none";return {success:true,message:x==="click"?`Cursor moved and clicked successfully${c}`:x==="drag"?"Cursor dragged successfully":"Cursor moved successfully",details:l}}return {success:false,message:"Cursor action failed",details:l}},executeEachToken:false},fillActiveInput:{tool:async({value:e})=>{let t=await qe(e);return {success:!!t?.ok,message:t?.ok?"Active input filled successfully":t?.errors?.[0]||"Failed to fill active input",details:t}},executeEachToken:true},requestInput:{tool:async e=>({ok:true}),executeEachToken:true}}}function Xe({content:e,theme:t="dark",streaming:n=false}){return jsxRuntime.jsx(xMarkdown.XMarkdown,{content:e,className:t==="dark"?"x-markdown-dark":"x-markdown-light",streaming:{hasNextChunk:n,enableAnimation:true,animationConfig:{fadeDuration:200},incompleteMarkdownComponentMap:{html:"IncompleteBlock",link:"IncompleteBlock",image:"IncompleteBlock"}},openLinksInNewTab:true,config:{gfm:true},dompurifyConfig:{ADD_TAGS:["data-chart","welcome","user-card","mermaid"],ADD_ATTR:["data-source","data-spec","data-icon","data-description","data-raw"]},style:{fontSize:"14px",lineHeight:"1.6",wordBreak:"break-word",maxWidth:"100%",overflow:"hidden"}})}function Xo({input:e}){return jsxRuntime.jsx("div",{style:{fontSize:"14px",lineHeight:"1.6",width:"100%"},children:jsxRuntime.jsx(Xe,{content:e?.text||"",theme:"dark"})})}function _n(){return {plainText:Xo}}function qn(e,t,n,r,o,l){let u=n.get(t);if(u){let h=u.parentElement,k=document.querySelector(`[data-get-from-user-host="${t}"]`);if(k&&h!==k){try{h?.removeChild(u);}catch{}k.innerHTML="",k.appendChild(u);}}else {u=document.createElement("div"),u.className="hsafa-inline-form";let h=document.querySelector(`[data-get-from-user-host="${t}"]`);h?(h.innerHTML="",h.appendChild(u)):(document.querySelector(".chat-scroll-container")||document.body).appendChild(u),n.set(t,u);}let c=e?.title||"Provide input",x=e?.description||"",I=e?.submitLabel||"Submit",d=e?.skipLabel||"Skip",S=Array.isArray(e?.fields)?e.fields:e?.label||e?.placeholder?[{id:"value",label:e?.label||"Value",type:"text",placeholder:e?.placeholder||""}]:[],C=r.get(t)||{submitted:false,skipped:false,values:void 0};u.innerHTML="";let b=document.createElement("form");b.style.margin="12px 0",b.style.padding="14px",b.style.border="1px solid var(--hsafa-border, #2A2C33)",b.style.borderRadius="12px",b.style.background="var(--hsafa-card, #121318)",b.style.color="var(--hsafa-text, #EDEEF0)",b.style.boxShadow="0 6px 20px rgba(0,0,0,0.25)";let a=document.createElement("div");if(a.style.fontWeight="600",a.style.marginBottom="6px",a.textContent=c,b.appendChild(a),x){let h=document.createElement("div");h.style.fontSize="12px",h.style.opacity="0.8",h.style.marginBottom="10px",h.textContent=x,b.appendChild(h);}S.forEach(h=>{let k=document.createElement("div");if(k.style.margin="10px 0",h.label){let f=document.createElement("label");f.style.display="block",f.style.fontSize="12px",f.style.marginBottom="6px",f.style.opacity="0.9",f.textContent=h.label,k.appendChild(f);}let y,m=(h.type||"text").toLowerCase();if(m==="textarea"){let f=document.createElement("textarea");f.placeholder=h.placeholder||"",f.value=h.value??"",f.style.width="100%",f.style.minHeight="72px",f.style.padding="10px 12px",f.style.border="1px solid var(--hsafa-border, #2A2C33)",f.style.borderRadius="10px",f.style.background="var(--hsafa-input-bg, #17181C)",f.style.color="inherit",y=f;}else if(m==="select"&&Array.isArray(h.options)){let f=document.createElement("select");f.style.width="100%",f.style.padding="10px 12px",f.style.border="1px solid var(--hsafa-border, #2A2C33)",f.style.borderRadius="10px",f.style.background="var(--hsafa-input-bg, #17181C)",f.style.color="inherit",h.options.forEach(F=>{let G=document.createElement("option");G.value=String(F.value),G.text=String(F.label??F.value),f.appendChild(G);}),f.value=h.value??"",y=f;}else if(m==="checkbox"){let f=document.createElement("input");f.type="checkbox",f.checked=!!h.value,f.style.transform="scale(1.1)",y=f;}else {let f=document.createElement("input");f.type=m,f.placeholder=h.placeholder||"",f.value=h.value??"",f.style.width="100%",f.style.padding="10px 12px",f.style.border="1px solid var(--hsafa-border, #2A2C33)",f.style.borderRadius="10px",f.style.background="var(--hsafa-input-bg, #17181C)",f.style.color="inherit",y=f;}let v=h.id||"value";y.dataset.fieldId=v;let M=C.values&&Object.prototype.hasOwnProperty.call(C.values,v)?C.values[v]:void 0;typeof M<"u"&&(y.type==="checkbox"?y.checked=!!M:y.value=String(M)),(C.submitted||C.skipped)&&(y.setAttribute("disabled","true"),y.style.opacity="0.7"),k.appendChild(y),b.appendChild(k);});let w=String(I).trim(),i=String(d).trim(),T=!!(w||i),s=null,g=null;if(T){let h=document.createElement("div");h.style.display="flex",h.style.gap="8px",h.style.marginTop="10px",s=document.createElement("button"),s.type="submit",s.textContent=w||"Submit",s.style.padding="6px 10px",s.style.borderRadius="8px",s.style.background="var(--hsafa-button-bg, var(--hsafa-primary, #2563eb))",s.style.color="#000000",g=document.createElement("button"),g.type="button",g.textContent=i||"Skip",g.style.padding="6px 10px",g.style.borderRadius="8px",g.style.background="transparent",g.style.border="1px solid var(--hsafa-border, #2A2C33)",g.style.color="inherit",h.appendChild(s),h.appendChild(g),b.appendChild(h);}if(b.onsubmit=h=>{h.preventDefault();let k={};b.querySelectorAll("[data-field-id]").forEach(y=>{let m=y.dataset.fieldId||"value";y.type==="checkbox"?k[m]=y.checked:k[m]=y.value??"";}),r.set(t,{submitted:true,skipped:false,values:k}),o({tool:"requestInput",toolCallId:t,output:{success:true,submitted:true,values:k}}),b.querySelectorAll("[data-field-id]").forEach(y=>{y.disabled=true,y.style.opacity="0.7";}),s&&(s.textContent=`${w||"Submit"} \u2713`,s.style.opacity="0.8",s.disabled=true),g&&(g.disabled=true);},g&&(g.onclick=()=>{r.set(t,{submitted:false,skipped:true,values:void 0}),o({tool:"requestInput",toolCallId:t,output:{success:true,submitted:false,skipped:true}}),b.querySelectorAll("[data-field-id]").forEach(h=>{h.disabled=true,h.style.opacity="0.7";}),g&&(g.textContent=`${i||"Skip"} \u2713`,g.style.opacity="0.8",g.disabled=true),s&&(s.disabled=true);}),C.submitted||C.skipped){let h=document.createElement("div");h.style.marginTop="10px",h.style.fontSize="12px",h.style.display="flex",h.style.alignItems="center",h.style.gap="8px";let k=document.createElement("span");k.style.display="inline-flex",k.style.alignItems="center",k.style.padding="2px 8px",k.style.borderRadius="999px",k.style.fontWeight="600",k.style.fontSize="11px",C.submitted?(k.style.background="rgba(16,185,129,0.15)",k.style.color="#10b981",k.textContent="Submitted"):(k.style.background="rgba(234,179,8,0.15)",k.style.color="#eab308",k.textContent="Skipped"),h.appendChild(k),b.appendChild(h);try{s&&(s.disabled=!0,s.style.opacity="0.8",C.submitted&&(s.textContent=`${w||"Submit"} \u2713`)),g&&(g.disabled=!0,g.style.opacity="0.8",C.skipped&&(g.textContent=`${i||"Skip"} \u2713`));}catch{}}u.appendChild(b);}function Kn(e,t,n){let r=so.useRef(new Map),o=so.useRef(new Map),l=so.useRef(t),u=so.useRef(n);l.current=t,u.current=n,so.useEffect(()=>{e.forEach(c=>{c.role==="assistant"&&c.parts?.forEach(x=>{if(!x.toolCallId)return;let I=x.toolName;if(!I&&x.type?.startsWith("tool-")&&(I=x.type.replace(/^tool-/,"")),!I)return;let d=l.current[I];if(d&&typeof d=="object"&&d.executeEachToken&&d.tool){let S=x.input||x.args||{},C=JSON.stringify(S),b=r.current.get(x.toolCallId);if(C!==b&&C!=="{}"){r.current.set(x.toolCallId,C);try{if(I==="requestInput")u.current(S,x.toolCallId);else {let w=(o.current.get(x.toolCallId)||0)+1;o.current.set(x.toolCallId,w),w>1&&d.tool({...S,toolCallNumber:w-1});}}catch{}}}});});},[e]);}function zt(e){let{agentId:t,baseUrl:n="",tools:r={},uiComponents:o={},onStart:l,onFinish:u,onError:c,initialMessages:x=[],onMessagesChange:I,controlledChatId:d,onChatIdChange:S,templateParams:C}=e,{baseUrl:b,setCurrentChatId:a}=le(),w=n&&n.length>0?n:b||"",[i,T]=so.useState(""),[s,g]=so.useState(()=>`chat_${Date.now()}_${Math.random().toString(36).slice(2)}`),h=d??s,k=so.useCallback(R=>{d===void 0&&g(R),S&&S(R);},[d,S]);so.useEffect(()=>{try{a(h);}catch{}return ()=>{try{a(void 0);}catch{}}},[h,a]);let y=so.useMemo(()=>An(w,t,h,C),[w,t,h,C]),m=so.useCallback(R=>{console.log("Message finished:",R);let B=R?.message?.id;if(!B&&Array.isArray(R?.messages))for(let W=R.messages.length-1;W>=0;W--){let N=R.messages[W];if(N&&N.role==="assistant"&&N.id){B=N.id;break}}u?.({...R,chatId:h,assistantMessageId:B});},[u,h]),v=so.useCallback(R=>{console.error("Chat error:",R),c?.(R);},[c]),M=so.useMemo(()=>Gn(),[]),f=so.useMemo(()=>({...M,...r}),[M,r]),F=so.useMemo(()=>_n(),[]),G=so.useMemo(()=>({...F,...o}),[F,o]),V=so.useRef(new Map),me=so.useRef(new Map),ge=so.useCallback(()=>{try{V.current.forEach(R=>{try{R.remove();}catch{}}),V.current.clear(),me.current.clear();}catch{}},[]),se=so.useCallback((R,B)=>{qn(R,B,V.current,me.current,W=>P.current.addToolResult(W));},[]),P=so.useRef(null),U=so.useRef(new Set),X=so.useCallback((R,B,W)=>{console.error(`UI Error [${B}]:`,W),P.current&&U.current.has(R)&&(U.current.delete(R),P.current.addToolResult({tool:B,toolCallId:R,state:"output-error",errorText:W?.message||String(W)}));},[]),fe=so.useCallback((R,B)=>{P.current&&U.current.has(R)&&(U.current.delete(R),P.current.addToolResult({tool:B,toolCallId:R,output:{status:"ok",rendered:true,component:B,logs:[]}}));},[]),A=so.useCallback(R=>{let B=f[R];return B?typeof B=="object"&&"tool"in B?B.tool:typeof B=="function"?B:null:null},[f]),O=react.useChat({transport:y,onFinish:m,onError:v,experimental_throttle:10,sendAutomaticallyWhen:ai.lastAssistantMessageIsCompleteWithToolCalls,async onToolCall({toolCall:R}){let B=A(R.toolName);if(R.toolName==="requestInput"){try{se(R.input,R.toolCallId);}catch(oe){console.error("requestInput render error",oe);}return}let W=R.toolName==="ui";R?.input;let Z=G&&R.toolName in G;if(W||Z){U.current.add(R.toolCallId);return}if(B)try{let oe=await B(R.input);O.addToolResult({tool:R.toolName,toolCallId:R.toolCallId,output:oe});}catch(oe){O.addToolResult({tool:R.toolName,toolCallId:R.toolCallId,state:"output-error",errorText:oe?.message||String(oe)});}}}),{messages:Q,sendMessage:ie,status:J,stop:ee,error:j}=O;P.current=O,Kn(Q,f,se),so.useEffect(()=>{try{let R=new Set,B=[];if(Q.forEach(W=>{W.role==="assistant"&&(W.parts||[]).forEach(N=>{if((N?.toolName||(typeof N?.type=="string"&&N.type.startsWith("tool-")?String(N.type.replace(/^tool-/,"")):void 0))!=="requestInput")return;let oe=N?.toolCallId||"";if(!oe)return;R.add(oe);let be=N?.output;if(be&&(be.submitted||be.skipped||be.values)){let nt={submitted:!!be.submitted,skipped:!!be.skipped,values:be.values||void 0};me.current.set(oe,nt);}let we=N?.input||N?.args||{};B.push({input:we,toolCallId:oe});});}),V.current.forEach((W,N)=>{if(!R.has(N)){let Z=V.current.get(N);try{Z?.remove();}catch{}V.current.delete(N),me.current.delete(N);}}),B.length>0){let W=requestAnimationFrame(()=>{B.forEach(({input:N,toolCallId:Z})=>{try{se(N,Z);}catch{}});});return ()=>cancelAnimationFrame(W)}}catch{}},[Q,se]),so.useEffect(()=>{x&&x.length>0&&Q.length===0&&console.log("Initial messages:",x);},[x,Q.length]);let xe=J==="submitted"||J==="streaming",Ae=so.useCallback(()=>{I&&I(Q,h);},[I,Q,h]),et=so.useCallback(async R=>{let B=R?.text!==void 0?R.text:i,W=R?.files||[],N=B.trim();if(!(!N&&W.length===0)&&!xe){R?.text===void 0&&T("");try{if(l){let Z={role:"user",content:N,createdAt:Date.now(),chatId:h};l(Z);}await ie({text:N,files:W});}catch(Z){throw console.error("Failed to send message:",Z),Z}}},[i,xe,ie,l,h]),tt=so.useCallback(()=>{if(xe)return;ge(),T("");try{O?.setMessages?.([]);}catch{}let R=`chat_${Date.now()}_${Math.random().toString(36).slice(2)}`;k(R);},[xe,O,ge,k]),te=so.useCallback(R=>{try{O?.setMessages?.(R);}catch{}},[O]);return {input:i,setInput:T,messages:Q,isLoading:xe,status:J,error:j,sendMessage:et,stop:ee,newChat:tt,setMessages:te,notifyMessagesChange:Ae,chatApi:O,chatId:h,setChatId:k,tools:f,uiComponents:G,formHostRef:V,formStateRef:me,cleanupForms:ge,onUISuccess:fe,onUIError:X}}function pt(e){let t=`hsafaChat_${e}`,n=`${t}.chats`,r=g=>`${t}.chat.${g}`,o=`${t}.currentChatId`,l=`${t}.showChat`,u=()=>{try{let g=localStorage.getItem(n);return g?JSON.parse(g):[]}catch{return []}},c=g=>{try{localStorage.setItem(n,JSON.stringify(g));}catch{}},x=g=>{try{let h=localStorage.getItem(r(g));return h?JSON.parse(h):null}catch{return null}},I=g=>{try{localStorage.setItem(r(g.id),JSON.stringify(g));}catch{}},d=g=>{let h=u(),k=h.findIndex(y=>y.id===g.id);k>=0?h[k]=g:h.unshift(g),c(h);},S=g=>{let k=u().filter(y=>y.id!==g);c(k);},C=g=>{try{localStorage.removeItem(r(g));}catch{}};return {loadChatsIndex:u,saveChatsIndex:c,loadChat:x,saveChat:I,upsertChatMeta:d,deleteChatMeta:S,deleteChatData:C,deleteChat:g=>{C(g),S(g);},loadShowChatPreference:g=>{try{let h=localStorage.getItem(l);return h!==null?h==="true":g}catch{return g}},saveShowChatPreference:g=>{try{localStorage.setItem(l,String(g));}catch{}},loadCurrentChatId:()=>{try{return localStorage.getItem(o)}catch{return null}},saveCurrentChatId:g=>{try{localStorage.setItem(o,g);}catch{}},removeCurrentChatId:()=>{try{localStorage.removeItem(o);}catch{}}}}function Wt(e){let{agentId:t,chatId:n,messages:r,isLoading:o=false,autoSave:l=true,autoRestore:u=true}=e,c=so.useMemo(()=>pt(t),[t]),[x,I]=so.useState([]),[d,S]=so.useState(null),C=so.useRef(false),b=so.useRef(false),a=so.useCallback(()=>{try{let y=c.loadChatsIndex();I(y);let m=y.find(v=>v.id===n);S(m||null);}catch(y){console.error("Failed to refresh chat list:",y);}},[c,n]);so.useEffect(()=>{a();},[a]),so.useEffect(()=>{if(!(!u||b.current)){try{c.loadCurrentChatId()&&(C.current=!0);}catch(y){console.error("Failed to restore chat:",y);}b.current=true;}},[c,u]),so.useEffect(()=>{if(!(!l||r.length===0))if(C.current){if(!o){let y=Date.now();try{c.saveChat({id:n,messages:r,agentId:t});let v=c.loadChatsIndex().find(M=>M.id===n);v&&(c.upsertChatMeta({...v,updatedAt:y}),a());}catch(m){console.error("Failed to save chat:",m);}}}else {let y=r.find(m=>m.role==="user");if(y){let m="";if(Array.isArray(y.parts)){let f=y.parts.find(F=>F&&F.type==="text");m=f&&typeof f.text=="string"?f.text:"";}let v=(m||"New chat").slice(0,80),M=Date.now();try{c.upsertChatMeta({id:n,title:v,createdAt:M,updatedAt:M}),c.saveChat({id:n,messages:r,agentId:t}),c.saveCurrentChatId(n),C.current=!0,a();}catch(f){console.error("Failed to create chat:",f);}}}},[]);let w=so.useRef(false);so.useEffect(()=>{if(o){w.current=true;return}if(w.current&&l){w.current=false;try{let y=Date.now();c.saveChat({id:n,messages:r,agentId:t});let v=c.loadChatsIndex().find(M=>M.id===n);if(v)c.upsertChatMeta({...v,updatedAt:y});else {let M="",f=Array.isArray(r)?r.find(G=>G&&G.role==="user"):void 0;if(f&&Array.isArray(f.parts)){let G=f.parts.find(V=>V&&V.type==="text");M=G&&typeof G.text=="string"?G.text:"";}let F=(M||"New chat").slice(0,80);c.upsertChatMeta({id:n,title:F,createdAt:y,updatedAt:y});try{c.saveCurrentChatId(n);}catch{}C.current=!0;}a();}catch(y){console.error("Failed to save chat on completion:",y);}}},[o,r,n,t,c,l,a]);let i=so.useCallback(y=>{try{let m=c.loadChat(y);return m?{id:m.id,messages:m.messages,agentId:m.agentId||t}:null}catch(m){return console.error("Failed to load chat:",m),null}},[c,t]),T=so.useCallback(()=>{if(r.length!==0)try{let y=Date.now();c.saveChat({id:n,messages:r,agentId:t});let v=c.loadChatsIndex().find(M=>M.id===n);v&&(c.upsertChatMeta({...v,updatedAt:y}),a());}catch(y){console.error("Failed to save chat:",y);}},[c,n,r,t,a]),s=so.useCallback(y=>{try{c.deleteChat(y),a();}catch(m){console.error("Failed to delete chat:",m);}},[c,a]),g=so.useCallback((y,m)=>{if(y!==n)try{C.current=!0,c.saveCurrentChatId(y);let v=c.loadChat(y),M=v&&Array.isArray(v.messages)?v.messages:[];m(M),a();}catch(v){console.error("Failed to switch chat:",v);}},[c,n,a]),h=so.useCallback(y=>{C.current=false,y();},[]),k=so.useCallback(y=>{if(!y.trim())return x;let m=y.toLowerCase();return x.filter(v=>v.title.toLowerCase().includes(m))},[x]);return {chatList:x,currentChatMeta:d,refreshChatList:a,loadChat:i,saveCurrentChat:T,deleteChat:s,switchToChat:g,createNewChat:h,searchChats:k,storage:c}}function er(e){let{messages:t,isLoading:n,sendMessage:r,setMessages:o,baseUrl:l}=e,{baseUrl:u}=le(),c=l||u||"",[x,I]=so.useState(null),[d,S]=so.useState(""),[C,b]=so.useState([]),[a,w]=so.useState(false),i=so.useCallback((y,m,v=[])=>{I(y),S(m),b(v);},[]),T=so.useCallback(()=>{I(null),S(""),b([]);},[]),s=so.useCallback(async y=>{if(!n)try{let m=t.findIndex(M=>M.id===y);if(m===-1)return;let v=t.slice(0,m);o(v),await r({text:d.trim(),files:C.map(M=>({type:"file",url:M.url,mediaType:M.mimeType||"application/octet-stream",...M.name?{name:M.name}:{},...M.size?{size:M.size}:{}}))}),T();}catch(m){throw console.error("Failed to save edit:",m),m}},[n,t,r,d,C,o,T]),g=so.useCallback(y=>x===y,[x]),h=so.useCallback(async y=>{if(!c){console.warn("baseUrl not provided, cannot upload attachments");return}w(true);try{let m=Array.from(y).map(async M=>{if(M.size>26214400)throw new Error(`${M.name} is too large (max 25MB)`);let f=new FormData;f.append("file",M);let F=await fetch(`${c}/api/upload`,{method:"POST",body:f});if(!F.ok)throw new Error(`Upload failed: ${F.statusText}`);let G=await F.json();return {id:G.url||`${Date.now()}-${Math.random()}`,name:M.name,url:G.url,mimeType:M.type,size:M.size}}),v=await Promise.all(m);b(M=>[...M,...v]);}catch(m){throw console.error("Failed to upload files:",m),m}finally{w(false);}},[c]),k=so.useCallback(y=>{b(m=>m.filter(v=>v.id!==y));},[]);return {editingMessageId:x,editingText:d,setEditingText:S,editAttachments:C,setEditAttachments:b,editUploading:a,startEdit:i,cancelEdit:T,saveEdit:s,isEditing:g,addEditAttachments:h,removeEditAttachment:k}}function q({IconComponent:e,...t}){return so__default.default.createElement(e,t)}function Ut({icon:e,onClick:t,ariaLabel:n,resolvedColors:r,disabled:o=false,title:l}){return jsxRuntime.jsx("button",{"aria-label":n,title:l,disabled:o,style:{backgroundColor:"transparent",color:r.mutedTextColor,border:"none",borderRadius:"8px",padding:"8px",cursor:o?"not-allowed":"pointer",opacity:o?.5:1,transition:"all 0.2s ease-out",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:u=>{o||(u.currentTarget.style.backgroundColor=r.hoverBackground,u.currentTarget.style.color=r.textColor);},onMouseLeave:u=>{u.currentTarget.style.backgroundColor="transparent",u.currentTarget.style.color=r.mutedTextColor;},onClick:t,children:e})}function Jn({title:e,alwaysOpen:t,streaming:n,dir:r,resolvedColors:o,onNew:l,onToggleHistory:u,onClose:c,historyBtnRef:x,t:I}){return jsxRuntime.jsxs("div",{style:{marginBottom:"24px",display:"flex",alignItems:"center",justifyContent:"space-between",direction:r==="rtl"?"rtl":"ltr"},children:[jsxRuntime.jsx("div",{style:{minWidth:"0"},children:jsxRuntime.jsx("h1",{title:e,style:{color:o.textColor,fontSize:"18px",fontWeight:"600",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",margin:"0"},children:e})}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",position:"relative",color:o.mutedTextColor},children:[jsxRuntime.jsx(Ut,{icon:jsxRuntime.jsx(q,{IconComponent:lucideReact.Plus,size:"20",strokeWidth:"2"}),onClick:()=>{n||l();},ariaLabel:I("header.new"),resolvedColors:o,disabled:n}),jsxRuntime.jsx("button",{ref:x,"aria-label":I("header.history"),style:{backgroundColor:"transparent",color:o.mutedTextColor,border:"none",borderRadius:"8px",padding:"8px",cursor:"pointer",transition:"all 0.2s ease-out",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:d=>{d.currentTarget.style.backgroundColor=o.hoverBackground,d.currentTarget.style.color=o.textColor;},onMouseLeave:d=>{d.currentTarget.style.backgroundColor="transparent",d.currentTarget.style.color=o.mutedTextColor;},onClick:u,children:jsxRuntime.jsx(q,{IconComponent:lucideReact.History,size:"20",strokeWidth:"2"})}),!t&&jsxRuntime.jsx(Ut,{icon:jsxRuntime.jsx(q,{IconComponent:lucideReact.ChevronRight,size:"20",strokeWidth:"2",style:{transform:r==="rtl"?"rotate(180deg)":"none"}}),onClick:c,ariaLabel:I("header.close"),resolvedColors:o})]})]})}var yt=class extends so.Component{constructor(t){super(t),this.state={hasError:false,error:null,errorInfo:null};}static getDerivedStateFromError(t){return {hasError:true,error:t,errorInfo:null}}componentDidMount(){let{toolCallId:t,toolName:n,onSuccess:r}=this.props;t&&n&&r&&!this.state.hasError&&setTimeout(()=>{this.state.hasError||r(t,n);},0);}componentDidCatch(t,n){console.error(`UI Component Error (${this.props.componentName}):`,t,n),this.setState({error:t,errorInfo:n});let{toolCallId:r,toolName:o,onError:l}=this.props;r&&o&&l&&l(r,o,t);}render(){if(this.state.hasError&&this.state.error){let{resolvedColors:t,componentName:n}=this.props;return jsxRuntime.jsxs("div",{style:{padding:"16px",backgroundColor:"#fee2e2",border:"2px solid #ef4444",borderRadius:"12px",color:"#991b1b"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"8px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"20px"},children:"\u26A0\uFE0F"}),jsxRuntime.jsxs("strong",{style:{fontSize:"16px"},children:["Component Error: ",n]})]}),jsxRuntime.jsx("div",{style:{fontSize:"14px",marginBottom:"8px",fontFamily:"monospace"},children:this.state.error.message}),this.state.errorInfo&&jsxRuntime.jsxs("details",{style:{fontSize:"12px",marginTop:"8px"},children:[jsxRuntime.jsx("summary",{style:{cursor:"pointer",fontWeight:"bold"},children:"Stack Trace"}),jsxRuntime.jsx("pre",{style:{marginTop:"8px",padding:"8px",backgroundColor:"#fef2f2",borderRadius:"4px",overflow:"auto",maxHeight:"200px",fontSize:"11px"},children:this.state.errorInfo.componentStack})]})]})}return this.props.children}};var ir=e=>{let t={"input-streaming":{color:"#eab308",text:"Inputting"},"input-available":{color:"#3b82f6",text:"Running"},error:{color:"#ef4444",text:"Error"},"output-available":{color:"#10b981",text:"Called"},finished:{color:"#10b981",text:"Called"}};return t[e||"output-available"]||t["output-available"]},lr=e=>{let t=/^(.+?)_([a-f0-9]{6})_(.+)$/,n=e.match(t);if(n){let[,r,,o]=n;return {isMCP:true,mcpName:r.replace(/_/g," "),toolName:o.replace(/_/g," ")}}return {isMCP:false,toolName:e}},cr=e=>e.replace(/_/g," ").replace(/-/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b\w/g,t=>t.toUpperCase());function Zn({parts:e,messageId:t,openReasoningIds:n,toggleReasoning:r,resolvedColors:o,HsafaUI:l,onUIError:u,onUISuccess:c,addToolResult:x}){let I=[],d=[],S,C,b=false;for(let a of Array.isArray(e)?e:[]){if(!a)continue;if(a.type==="reasoning"&&typeof a.text=="string"){d.push(a.text),S||(S=a.startDate),C=a.endDate,a.state==="done"&&(b=true);continue}if(a.type==="text"&&typeof a.text=="string"){d.length&&(I.push({type:"reasoning",texts:d,startDate:S,endDate:C,isCompleted:b}),d=[],S=void 0,C=void 0,b=false),I.push({type:"text",text:a.text,startDate:a.startDate,endDate:a.endDate});continue}let w=a.type==="dynamic-tool",i=typeof a.type=="string"&&a.type.startsWith("tool-");if(w||i||a.type==="tool-call"){d.length&&(I.push({type:"reasoning",texts:d,startDate:S,endDate:C,isCompleted:b}),d=[],S=void 0,C=void 0,b=false);let T=String(w?a.toolName||"dynamic-tool":i?a.type?.slice(5)||"tool":a.toolName||"tool");T==="requestInput"?I.push({type:"tool",toolName:T,status:a.state||a.status,input:a.input,output:a.output,startDate:a.startDate,endDate:a.endDate,toolCallId:a.toolCallId}):I.push({type:"tool",toolName:T,status:a.state||a.status,input:a.input,output:a.output,startDate:a.startDate,endDate:a.endDate,toolCallId:a.toolCallId});continue}}return d.length&&I.push({type:"reasoning",texts:d,startDate:S,endDate:C,isCompleted:b}),I.length?jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[I.map((a,w)=>{let i=`${t}-${w}`,T=n.has(i);if(a.type==="reasoning"){let m=a.isCompleted||typeof a.startDate=="number"&&typeof a.endDate=="number",v=a.texts&&a.texts.length>0&&a.texts.some(f=>f.trim().length>0),M=()=>{v&&r(i);};return m&&!v?null:jsxRuntime.jsx("div",{onClick:M,style:{cursor:v?"pointer":"default",padding:"0"},children:jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:T?"4px":"0px"},children:[jsxRuntime.jsxs("div",{style:{fontSize:"13px",color:o.mutedTextColor,fontWeight:500,display:"flex",alignItems:"center",gap:"6px",overflow:"hidden",maxWidth:"100%",minWidth:0,width:"100%"},children:[jsxRuntime.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:"6px"},children:[!m&&jsxRuntime.jsx("span",{style:{display:"inline-block",height:"6px",width:"6px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"pulse 1.5s ease-in-out infinite"}}),jsxRuntime.jsx("span",{style:{color:o.textColor,fontWeight:600,opacity:.9,background:m?"none":`linear-gradient(90deg, ${o.textColor}, ${o.mutedTextColor}, ${o.mutedTextColor})`,backgroundSize:m?"auto":"200% 100%",backgroundClip:m?"unset":"text",WebkitBackgroundClip:m?"unset":"text",WebkitTextFillColor:m?o.mutedTextColor:"transparent",animation:m?void 0:"shimmer 2s ease-in-out infinite"},children:m?"Finish Thinking":"Thinking"})]}),v&&jsxRuntime.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,transform:T?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.2s ease-out"},children:jsxRuntime.jsx("polyline",{points:"9 18 15 12 9 6"})})]}),jsxRuntime.jsx("div",{style:{display:"grid",gridTemplateRows:T||!m?"1fr":"0fr",transition:"grid-template-rows 0.2s ease-out",overflow:"hidden"},children:jsxRuntime.jsx("div",{style:{minHeight:0},children:a.texts&&a.texts.length>0?jsxRuntime.jsx("div",{style:{fontSize:"13px",color:o.mutedTextColor,lineHeight:"1.6",maxWidth:"100%"},children:(!m&&T?a.texts:m?T?a.texts:[]:[a.texts[a.texts.length-1]]).map((f,F)=>jsxRuntime.jsx("div",{style:{marginBottom:"6px",opacity:.5},children:jsxRuntime.jsx(Xe,{content:f,theme:"dark",streaming:!m})},`rg-line-${w}-${F}`))}):jsxRuntime.jsxs("div",{style:{fontSize:"12px",color:o.mutedTextColor,opacity:.7,display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{display:"inline-block",height:"6px",width:"6px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"pulse 1.5s ease-in-out infinite"}}),jsxRuntime.jsx("span",{style:{letterSpacing:"2px",animation:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite"},children:"..."})]})})})]})},i)}if(a.type==="text"){let m=typeof a.endDate!="number";return jsxRuntime.jsx("div",{style:{fontSize:"15px",color:o.textColor,lineHeight:"1.6"},children:jsxRuntime.jsx(Xe,{content:a.text,theme:"dark",streaming:m})},i)}let{color:s,text:g}=ir(a.status),h=a.status==="input-streaming"||a.status==="input-available";if(a.toolName==="requestInput")return jsxRuntime.jsx("div",{style:{display:"block",position:"relative"},children:jsxRuntime.jsx("div",{"data-get-from-user-host":a.toolCallId||i,style:{width:"100%"}})},i);let k=l?.[a.toolName||""];if(k)return jsxRuntime.jsx("div",{style:{display:"block",position:"relative"},children:jsxRuntime.jsx(yt,{componentName:a.toolName||"Unknown",resolvedColors:o,toolCallId:a.toolCallId,toolName:a.toolName||"unknown",onError:u,onSuccess:c,children:jsxRuntime.jsx(k,{toolName:a.toolName||"",toolCallId:a.toolCallId||"",input:a.input,output:a.output,status:a.status,addToolResult:x})})},i);let y=lr(a.toolName||"tool");return jsxRuntime.jsx("div",{style:{display:"flex",gap:"12px",position:"relative"},children:jsxRuntime.jsx("div",{style:{flex:1,minWidth:0},children:jsxRuntime.jsxs("div",{style:{fontSize:"13px",color:o.mutedTextColor,display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"},children:[jsxRuntime.jsxs("span",{style:{fontWeight:600,color:s,display:"flex",alignItems:"center",gap:"6px"},children:[jsxRuntime.jsx("span",{style:{display:"inline-block",height:"6px",width:"6px",borderRadius:"50%",backgroundColor:s,animation:h?"pulse 1.5s ease-in-out infinite":void 0}}),g]}),y.isMCP?jsxRuntime.jsxs("span",{style:{fontWeight:500,color:o.textColor},children:[jsxRuntime.jsx("span",{style:{fontWeight:600},children:y.toolName}),jsxRuntime.jsx("span",{style:{opacity:.7,margin:"0 4px"},children:"from"}),jsxRuntime.jsx("span",{style:{fontWeight:600,opacity:.85},children:y.mcpName})]}):jsxRuntime.jsx("span",{style:{fontWeight:500,color:o.textColor},children:cr(y.toolName)})]})})},i)}),jsxRuntime.jsx("style",{children:`
|
|
19
12
|
@keyframes shimmer {
|
|
20
13
|
0% { background-position: -200% 0; }
|
|
21
14
|
100% { background-position: 200% 0; }
|
|
22
15
|
}
|
|
23
|
-
`})]}):null}function
|
|
16
|
+
`})]}):null}function Qn(e){if(!e||Number.isNaN(e))return "0 B";let t=["B","KB","MB","GB","TB"],n=Math.min(t.length-1,Math.floor(Math.log(e)/Math.log(1024)));return `${(e/Math.pow(1024,n)).toFixed(n===0?0:1)} ${t[n]}`}function eo({attachment:e,resolvedColors:t,mode:n,onRemove:r,maxWidth:o="200px"}){let l=e.mimeType?.startsWith("image/"),u=n==="editable"||n==="input",c=n==="viewable",x={display:"flex",alignItems:"center",gap:n==="input"?"8px":"6px",padding:n==="input"?"8px 12px":"6px 10px",backgroundColor:t.inputBackground,borderRadius:n==="input"?"10px":"8px",border:`1px solid ${t.borderColor}`,fontSize:n==="input"?"12px":"11px",color:t.textColor,transition:"all 0.2s ease-out",cursor:c?"pointer":"default",maxWidth:n==="input"?"140px":o,position:"relative"},I=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",width:n==="input"?"20px":"16px",height:n==="input"?"20px":"16px",borderRadius:n==="input"?"4px":"3px",backgroundColor:l?"transparent":t.accentColor,flexShrink:0},children:[l?jsxRuntime.jsx("img",{src:e.url,alt:e.name,style:{width:n==="input"?"20px":"16px",height:n==="input"?"20px":"16px",borderRadius:n==="input"?"4px":"3px",objectFit:"cover"},onError:d=>{d.target.style.display="none";let S=d.target.nextElementSibling;S&&(S.style.display="block");}}):null,jsxRuntime.jsx(q,{IconComponent:lucideReact.File,size:n==="input"?14:10,strokeWidth:"2",style:{display:l?"none":"block",color:t.mutedTextColor}})]}),jsxRuntime.jsxs("div",{style:{minWidth:"0",flex:"1",display:"flex",flexDirection:"column"},children:[jsxRuntime.jsx("span",{title:e.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:"500"},children:e.name}),jsxRuntime.jsx("span",{style:{fontSize:n==="input"?"10px":"9px",color:t.mutedTextColor,marginTop:n==="input"?"2px":"1px"},children:Qn(e.size)})]}),n==="input"&&l&&jsxRuntime.jsx("button",{onClick:d=>{d.stopPropagation(),window.open(e.url,"_blank");},style:{background:"none",border:"none",color:t.mutedTextColor,cursor:"pointer",padding:"2px",display:"flex",alignItems:"center",borderRadius:"4px",transition:"all 0.2s"},title:"Preview image",onMouseEnter:d=>{d.currentTarget.style.backgroundColor=t.hoverBackground,d.currentTarget.style.color=t.textColor;},onMouseLeave:d=>{d.currentTarget.style.backgroundColor="transparent",d.currentTarget.style.color=t.mutedTextColor;},children:jsxRuntime.jsx(q,{IconComponent:lucideReact.Eye,size:"12",strokeWidth:"2"})}),u&&r&&jsxRuntime.jsx("button",{onClick:d=>{d.stopPropagation(),r(e.id);},style:{display:"flex",alignItems:"center",justifyContent:"center",width:n==="input"?"auto":"16px",height:n==="input"?"auto":"16px",padding:n==="input"?"2px":"0",borderRadius:"4px",border:"none",backgroundColor:"transparent",color:t.mutedTextColor,cursor:"pointer",transition:"all 0.2s",flexShrink:0},onMouseEnter:d=>{d.currentTarget.style.backgroundColor="#ef444420",d.currentTarget.style.color="#ef4444";},onMouseLeave:d=>{d.currentTarget.style.backgroundColor="transparent",d.currentTarget.style.color=t.mutedTextColor;},children:jsxRuntime.jsx(q,{IconComponent:lucideReact.X,size:"12",strokeWidth:"2"})}),c&&jsxRuntime.jsx(q,{IconComponent:lucideReact.Download,size:"10",strokeWidth:"2",style:{color:t.mutedTextColor,flexShrink:0}})]});return c?jsxRuntime.jsx("a",{href:e.url,target:"_blank",rel:"noreferrer",style:{...x,textDecoration:"none"},onMouseEnter:d=>{d.currentTarget.style.backgroundColor=t.hoverBackground,d.currentTarget.style.borderColor=t.primaryColor;},onMouseLeave:d=>{d.currentTarget.style.backgroundColor=t.inputBackground,d.currentTarget.style.borderColor=t.borderColor;},children:I}):jsxRuntime.jsx("div",{style:x,children:I})}function no({attachments:e,resolvedColors:t,onRemove:n}){if(!Array.isArray(e)||e.length===0)return null;let r=typeof n=="function"?"editable":"viewable";return jsxRuntime.jsx("div",{style:{marginTop:"12px",display:"flex",flexWrap:"wrap",gap:"8px"},children:e.map(o=>jsxRuntime.jsx(eo,{attachment:o,resolvedColors:t,mode:r,onRemove:n},o.id))})}function Gt({chatMessages:e,isLoading:t,openReasoningIds:n,toggleReasoning:r,resolvedColors:o,t:l,onUserMessageClick:u,HsafaUI:c,onUIError:x,onUISuccess:I,addToolResult:d,editableMessageIcon:S,fullPage:C}){return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("style",{children:`
|
|
24
17
|
@keyframes jumpingDots {
|
|
25
18
|
0%, 80%, 100% {
|
|
26
19
|
transform: translateY(0);
|
|
@@ -29,15 +22,126 @@
|
|
|
29
22
|
transform: translateY(-5px);
|
|
30
23
|
}
|
|
31
24
|
}
|
|
32
|
-
`}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[e.map((b,
|
|
33
|
-
`),s=a.filter(d=>d.type==="file"||d.type==="image").map(d=>{if(d.type==="image"){let g=typeof d.image=="string"?d.image:d.image?.toString?.()||"";return {id:g||`${b.id}-img-${Date.now()}`,name:d.name||"image",url:g,mimeType:d.mediaType||"image/jpeg",size:d.size||0}}else return {id:d.url||`${b.id}-file-${Date.now()}`,name:d.name||"file",url:d.url||"",mimeType:d.mediaType||"application/octet-stream",size:d.size||0}});return jsxRuntime.jsx("div",{style:{padding:"0 4px"},children:b.role==="user"?jsxRuntime.jsx("div",{children:jsxRuntime.jsx("div",{title:l("editor.clickToEdit"),onClick:()=>u(b,b.id,v,s),style:{maxWidth:"720px",borderRadius:"16px",padding:"16px",fontSize:"15px",lineHeight:"1.6",whiteSpace:"pre-wrap",cursor:"pointer",transition:"background-color 0.2s",backgroundColor:o.accentColor,color:o.textColor,marginBottom:"16px",marginTop:"16px",position:"relative"},onMouseEnter:d=>d.currentTarget.style.backgroundColor=o.hoverBackground,onMouseLeave:d=>d.currentTarget.style.backgroundColor=o.accentColor,children:jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"8px"},children:[jsxRuntime.jsxs("div",{style:{flex:1},children:[v,s.length>0&&jsxRuntime.jsx(An,{attachments:s,resolvedColors:o})]}),jsxRuntime.jsx("div",{style:{flexShrink:0,opacity:.5,transition:"opacity 0.2s"},children:jsxRuntime.jsx(X,{IconComponent:S||lucideReact.Pencil,size:"14",strokeWidth:"2"})})]})})}):jsxRuntime.jsx(In,{parts:a,messageId:b.id,openReasoningIds:n,toggleReasoning:r,resolvedColors:o,HsafaUI:i,onUIError:h,onUISuccess:I,addToolResult:f})},b.id)}),t&&jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px",padding:"0 4px",height:"20px"},children:[jsxRuntime.jsx("span",{style:{display:"inline-block",width:"4px",height:"4px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"jumpingDots 1s infinite ease-in-out",animationDelay:"0s"}}),jsxRuntime.jsx("span",{style:{display:"inline-block",width:"4px",height:"4px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"jumpingDots 1s infinite ease-in-out",animationDelay:"0.2s"}}),jsxRuntime.jsx("span",{style:{display:"inline-block",width:"4px",height:"4px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"jumpingDots 1s infinite ease-in-out",animationDelay:"0.4s"}})]})]})]})}function Fn({input:e,setInput:t,textareaRef:n,fileInputRef:r,isLoading:o,uploading:l,attachments:u,formatBytes:i,handleRemoveAttachment:h,onFileInputChange:I,onSend:f,onStop:S,status:b,t:k,resolvedColors:a}){let v=b==="streaming"||b==="submitted",s=u.length>0||e.trim().length>0;return jsxRuntime.jsx("div",{style:{position:"sticky",bottom:"0",marginTop:"auto",paddingBottom:"8px",paddingTop:"4px"},children:jsxRuntime.jsx("div",{style:{position:"relative",flex:1},children:jsxRuntime.jsxs("div",{style:{position:"relative",width:"100%",borderRadius:"16px",paddingBottom:"48px",paddingTop:"16px",border:`1px solid ${a.borderColor}`,backgroundColor:a.cardBackground},children:[u.length>0&&jsxRuntime.jsx("div",{style:{padding:"0px 16px 12px 16px",display:"flex",flexWrap:"wrap",gap:"10px"},children:u.map(d=>{let g=d.mimeType.startsWith("image/");return jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"8px 12px",backgroundColor:a.inputBackground,borderRadius:"10px",border:`1px solid ${a.borderColor}`,fontSize:"12px",color:a.textColor,position:"relative"},children:[jsxRuntime.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",width:"20px",height:"20px",borderRadius:"4px",backgroundColor:g?"transparent":a.cardBackground},children:g?jsxRuntime.jsx("img",{src:d.url,alt:d.name,style:{width:"20px",height:"20px",borderRadius:"4px",objectFit:"cover"}}):jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:jsxRuntime.jsx("rect",{x:"4",y:"4",width:"16",height:"20",rx:"2",ry:"2"})})}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",minWidth:0,flex:1},children:[jsxRuntime.jsx("span",{title:d.name,style:{maxWidth:"140px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:500},children:d.name}),jsxRuntime.jsx("span",{style:{color:a.mutedTextColor,fontSize:"10px",marginTop:"2px"},children:i(d.size)})]}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px",marginLeft:"8px"},children:[g&&jsxRuntime.jsx("a",{href:d.url,target:"_blank",rel:"noopener noreferrer",style:{background:"none",border:"none",color:a.mutedTextColor,cursor:"pointer",padding:"2px",display:"flex",alignItems:"center",borderRadius:"4px",textDecoration:"none"},title:k("input.previewImage"),children:jsxRuntime.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),jsxRuntime.jsx("circle",{cx:"12",cy:"12",r:"3"})]})}),jsxRuntime.jsx("button",{onClick:()=>h(d.id),style:{background:"none",border:"none",color:a.mutedTextColor,cursor:"pointer",padding:"2px",display:"flex",alignItems:"center",borderRadius:"4px"},title:k("input.removeFile"),children:jsxRuntime.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntime.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]})]},d.id)})}),l&&jsxRuntime.jsxs("div",{style:{padding:"0px 16px 12px 16px",display:"flex",alignItems:"center",gap:"8px",fontSize:"13px",color:a.mutedTextColor},children:[jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{animation:"spin 1s linear infinite"},children:jsxRuntime.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})}),jsxRuntime.jsx("span",{children:k("input.uploadingFiles")})]}),jsxRuntime.jsx("div",{style:{padding:"0 16px"},children:jsxRuntime.jsx("textarea",{ref:n,"aria-label":"Prompt",rows:1,placeholder:k("input.placeholder"),value:e,onChange:d=>t(d.target.value),onKeyDown:d=>{d.key==="Enter"&&!d.shiftKey&&(d.preventDefault(),f());},disabled:o||l,style:{height:"24px",maxHeight:"200px",width:"100%",resize:"none",backgroundColor:"transparent",fontSize:"15px",lineHeight:"1.6",outline:"none",border:"none",color:a.textColor,fontFamily:"inherit",overflow:"auto"}})}),jsxRuntime.jsx("input",{ref:r,type:"file",multiple:true,onChange:I,style:{display:"none"},accept:"*/*"}),jsxRuntime.jsx("div",{style:{position:"absolute",bottom:"8px",left:"8px",display:"flex",alignItems:"center",gap:"4px",color:a.mutedTextColor},children:jsxRuntime.jsx("button",{onClick:()=>r.current?.click(),disabled:o||l,style:{borderRadius:"8px",padding:"8px",transition:"all 0.2s",backgroundColor:"transparent",border:"none",cursor:o||l?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"inherit",opacity:o||l?.5:1},"aria-label":k("input.attachFiles"),children:jsxRuntime.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 1 1 5.66 5.66l-9.2 9.19a2 2 0 1 1-2.83-2.83l8.49-8.49"})})})}),jsxRuntime.jsx("div",{style:{position:"absolute",bottom:"8px",right:"8px"},children:o?jsxRuntime.jsx("button",{onClick:S,disabled:!v,"aria-label":k("input.stop"),title:"Stop generation",style:{borderRadius:"12px",padding:"12px",transition:"all 0.2s ease-out",border:"1px solid #ef4444",backgroundColor:"#ef444420",color:"#ef4444",opacity:v?1:.4,cursor:v?"pointer":"not-allowed",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:d=>{v&&(d.currentTarget.style.backgroundColor="#ef444430",d.currentTarget.style.transform="scale(1.02)");},onMouseLeave:d=>{d.currentTarget.style.backgroundColor="#ef444420",d.currentTarget.style.transform="scale(1)";},children:jsxRuntime.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"})})}):jsxRuntime.jsx("button",{onClick:f,disabled:!s||l,"aria-label":k("input.send"),title:"Send message",style:{borderRadius:"12px",padding:"12px",transition:"all 0.2s ease-out",border:`1px solid ${a.borderColor}`,backgroundColor:a.cardBackground,color:!s||l?a.mutedTextColor:a.primaryColor,cursor:!s||l?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",opacity:!s||l?.5:1},onMouseEnter:d=>{s&&!l&&(d.currentTarget.style.borderColor=a.primaryColor,d.currentTarget.style.transform="scale(1.02)");},onMouseLeave:d=>{d.currentTarget.style.borderColor=a.borderColor,d.currentTarget.style.transform="scale(1)";},children:jsxRuntime.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("path",{d:"m5 12 7-7 7 7"}),jsxRuntime.jsx("path",{d:"M12 19V5"})]})})})]})})})}function Ln({prompts:e,onSelect:t,resolvedColors:n,disabled:r=false}){let[o,l]=at.useState(null);return !e||e.length===0?null:jsxRuntime.jsxs("div",{style:{padding:"12px 0",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"12px",fontWeight:600,color:n.mutedTextColor,paddingLeft:"4px",textTransform:"uppercase",letterSpacing:"0.5px"},children:"Suggested Prompts"}),jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:e.map((u,i)=>{let h=o===i,I=u.prompt.length>80,f=I&&!h?u.prompt.slice(0,80)+"...":u.prompt;return jsxRuntime.jsxs("button",{onClick:()=>{r||t(u.prompt);},disabled:r,style:{display:"flex",flexDirection:"column",alignItems:"flex-start",padding:"12px",backgroundColor:n.cardBackground,border:`1px solid ${n.borderColor}`,borderRadius:"12px",cursor:r?"not-allowed":"pointer",transition:"all 0.2s ease",textAlign:"left",opacity:r?.5:1,position:"relative",overflow:"hidden"},onMouseEnter:S=>{r||(S.currentTarget.style.backgroundColor=n.hoverBackground,S.currentTarget.style.borderColor=n.primaryColor,S.currentTarget.style.transform="translateX(2px)");},onMouseLeave:S=>{S.currentTarget.style.backgroundColor=n.cardBackground,S.currentTarget.style.borderColor=n.borderColor,S.currentTarget.style.transform="translateX(0)";},children:[jsxRuntime.jsxs("div",{style:{fontSize:"13px",fontWeight:600,color:n.textColor,marginBottom:"6px",display:"flex",alignItems:"center",gap:"6px"},children:[jsxRuntime.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:n.primaryColor,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[jsxRuntime.jsx("path",{d:"M12 20h9"}),jsxRuntime.jsx("path",{d:"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"})]}),u.label]}),jsxRuntime.jsx("div",{style:{fontSize:"12px",color:n.mutedTextColor,lineHeight:"1.5",width:"100%",wordWrap:"break-word",whiteSpace:"pre-wrap"},children:f}),I&&jsxRuntime.jsxs("button",{onClick:S=>{S.stopPropagation(),l(h?null:i);},style:{marginTop:"8px",padding:"4px 8px",fontSize:"11px",color:n.primaryColor,backgroundColor:"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",gap:"4px",fontWeight:500},children:[h?"Show less":"Show more",jsxRuntime.jsx("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{transform:h?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"},children:jsxRuntime.jsx("polyline",{points:"6 9 12 15 18 9"})})]})]},i)})})]})}function Hn(e){let t=Date.now()-e,n=Math.max(1,Math.floor(t/1e3));if(n<60)return `${n}s`;let r=Math.floor(n/60);if(r<60)return `${r}m`;let o=Math.floor(r/60);if(o<24)return `${o}h`;let l=Math.floor(o/24);if(l<7)return `${l}d`;let u=Math.floor(l/7);if(u<4)return `${u}w`;let i=Math.floor(l/30);return i<12?`${i}mo`:`${Math.floor(i/12)}y`}function $n({historyOpen:e,historySearch:t,currentChatId:n,refreshKey:r,resolvedColors:o,onClose:l,onSearchChange:u,onChatSelect:i,onChatDelete:h,loadChatsIndex:I,historyPopupRef:f}){if(!e)return null;let S=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{style:{position:"fixed",inset:"0",zIndex:1100,backgroundColor:"rgba(0, 0, 0, 0.4)",backdropFilter:"blur(4px)",WebkitBackdropFilter:"blur(4px)"},onClick:l}),jsxRuntime.jsxs("div",{ref:f,style:{position:"fixed",left:"50%",top:"64px",transform:"translateX(-50%)",zIndex:1101,width:"680px",maxWidth:"94vw",overflow:"hidden",borderRadius:"16px",border:`1px solid ${o.borderColor}`,backgroundColor:`${o.backgroundColor}f0`,boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.25)",backdropFilter:"blur(16px)",WebkitBackdropFilter:"blur(16px)"},children:[jsxRuntime.jsx("div",{style:{display:"flex",alignItems:"center",gap:"12px",borderBottom:`1px solid ${o.borderColor}`,padding:"12px 16px"},children:jsxRuntime.jsx("div",{style:{flex:"1"},children:jsxRuntime.jsx("input",{autoFocus:true,value:t,onChange:b=>u(b.target.value),placeholder:"Search",style:{width:"100%",borderRadius:"8px",backgroundColor:o.inputBackground,padding:"8px 12px",fontSize:"14px",color:o.textColor,border:`1px solid ${o.borderColor}`,outline:"none"},onFocus:b=>b.currentTarget.style.borderColor=o.primaryColor,onBlur:b=>b.currentTarget.style.borderColor=o.borderColor})})}),jsxRuntime.jsx("div",{style:{maxHeight:"60vh",overflowY:"auto"},children:(()=>{let b=t.toLowerCase().trim(),k=I();return b&&(k=k.filter(a=>(a.title||"").toLowerCase().includes(b))),!k||k.length===0?jsxRuntime.jsx("div",{style:{padding:"24px",color:o.mutedTextColor,textAlign:"center"},children:"No chats found."}):jsxRuntime.jsx("div",{children:k.map((a,v)=>jsxRuntime.jsx("div",{style:{borderTop:v>0?`1px solid ${o.borderColor}`:"none"},children:jsxRuntime.jsxs("div",{style:{display:"flex",width:"100%",alignItems:"center",justifyContent:"space-between",gap:"12px",padding:"12px",backgroundColor:a.id===n?o.cardBackground:"transparent"},children:[jsxRuntime.jsx("button",{style:{flex:"1",textAlign:"left",transition:"background-color 0.2s",borderRadius:"8px",padding:"8px",border:"none",backgroundColor:"transparent",cursor:"pointer",color:o.textColor},onMouseEnter:s=>s.currentTarget.style.backgroundColor=o.hoverBackground,onMouseLeave:s=>s.currentTarget.style.backgroundColor="transparent",onClick:()=>i(a.id),children:jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"},children:[jsxRuntime.jsx("div",{style:{minWidth:"0",flex:"1"},children:jsxRuntime.jsx("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"14px",color:o.textColor},children:a.title||"Untitled chat"})}),jsxRuntime.jsx("div",{style:{flexShrink:0,fontSize:"12px",color:o.mutedTextColor},children:Hn(a.updatedAt)})]})}),jsxRuntime.jsx("button",{style:{flexShrink:0,borderRadius:"6px",padding:"8px",color:o.mutedTextColor,border:"1px solid transparent",backgroundColor:"transparent",cursor:"pointer",transition:"all 0.2s"},title:"Delete chat",onMouseEnter:s=>{s.currentTarget.style.color="#ef4444",s.currentTarget.style.backgroundColor="rgba(239, 68, 68, 0.1)",s.currentTarget.style.borderColor="rgba(239, 68, 68, 0.3)";},onMouseLeave:s=>{s.currentTarget.style.color=o.mutedTextColor,s.currentTarget.style.backgroundColor="transparent",s.currentTarget.style.borderColor="transparent";},onClick:s=>{s.stopPropagation(),h(a.id);},children:jsxRuntime.jsx(X,{IconComponent:lucideReact.Trash2,size:"16",strokeWidth:"2"})})]})},a.id))})})()})]})]});return typeof document<"u"&&document.body?reactDom.createPortal(S,document.body):S}function Bn({isOpen:e,resolvedColors:t,onConfirm:n,onCancel:r,editProcessContent:o}){if(!e)return null;let l=o?.title||"Edit Message",u=o?.content||"This will remove this message and all messages after it, and place its content in the input field for editing. Do you want to continue?",i=o?.submit_button_label||"Edit",h=o?.cancel_button_label||"Cancel",I=o?.icon,f=typeof u=="function",S=f?u:null,b=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{style:{position:"fixed",inset:"0",zIndex:1100,backgroundColor:"rgba(0, 0, 0, 0.4)",backdropFilter:"blur(4px)",WebkitBackdropFilter:"blur(4px)"},onClick:r}),jsxRuntime.jsxs("div",{style:{position:"fixed",left:"50%",top:"50%",transform:"translate(-50%, -50%)",zIndex:1101,width:"420px",maxWidth:"94vw",overflow:"hidden",borderRadius:"16px",border:`1px solid ${t.borderColor}`,backgroundColor:t.backgroundColor,boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.25)",backdropFilter:"blur(16px)",WebkitBackdropFilter:"blur(16px)"},children:[jsxRuntime.jsxs("div",{style:{padding:"20px 24px",borderBottom:`1px solid ${t.borderColor}`,display:"flex",alignItems:"center",gap:"12px"},children:[I?jsxRuntime.jsx("div",{style:{flexShrink:0},children:jsxRuntime.jsx(X,{IconComponent:I,size:"20",strokeWidth:"2"})}):jsxRuntime.jsx("div",{style:{flexShrink:0,color:t.mutedTextColor},children:jsxRuntime.jsx(X,{IconComponent:lucideReact.Pencil,size:"20",strokeWidth:"2"})}),jsxRuntime.jsx("h3",{style:{margin:0,fontSize:"18px",fontWeight:"600",color:t.textColor,flex:1},children:l})]}),jsxRuntime.jsx("div",{style:{padding:"24px",color:t.textColor,fontSize:"14px",lineHeight:"1.6"},children:f&&S?jsxRuntime.jsx(S,{}):jsxRuntime.jsx("p",{style:{margin:0},children:u})}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"12px",padding:"16px 24px",borderTop:`1px solid ${t.borderColor}`,justifyContent:"flex-end"},children:[jsxRuntime.jsx("button",{onClick:r,style:{padding:"8px 16px",borderRadius:"8px",fontSize:"14px",fontWeight:"500",border:`1px solid ${t.borderColor}`,backgroundColor:"transparent",color:t.textColor,cursor:"pointer",transition:"all 0.2s"},onMouseEnter:k=>{k.currentTarget.style.backgroundColor=t.hoverBackground;},onMouseLeave:k=>{k.currentTarget.style.backgroundColor="transparent";},children:h}),jsxRuntime.jsx("button",{onClick:n,style:{padding:"8px 16px",borderRadius:"8px",fontSize:"14px",fontWeight:"500",border:"none",backgroundColor:t.primaryColor,color:t.backgroundColor,cursor:"pointer",transition:"all 0.2s",opacity:1},onMouseEnter:k=>{k.currentTarget.style.opacity="0.9";},onMouseLeave:k=>{k.currentTarget.style.opacity="1";},children:i})]})]})]});return typeof document<"u"&&document.body?reactDom.createPortal(b,document.body):b}function vr({agentId:e,theme:t,primaryColor:n,primaryColorDark:r,primaryColorLight:o,backgroundColor:l,borderColor:u,textColor:i,accentColor:h,baseUrl:I="",initialMessages:f=[],onMessagesChange:S,defaultOpen:b=true,floatingButtonPosition:k={bottom:24,right:24},HsafaTools:a={},HsafaUI:v={},componentAboveInput:s,editProcessContent:d,presetPrompts:g,onStart:C,onFinish:y,currentChat:w,onChatChanged:x,templateParams:c}){let{dir:p,theme:T,baseUrl:m,setStreamingState:F,setChatOpenState:H}=ae(),R=t||T||"dark",O=I&&I.length>0?I:m||"",E={primaryColor:R==="dark"?r||n||"#ffffff":o||n||"#000000",backgroundColor:l||(R==="dark"?"#0B0B0F":"#FFFFFF"),borderColor:u||(R==="dark"?"#2A2C33":"#E5E7EB"),textColor:i||(R==="dark"?"#EDEEF0":"#111827"),accentColor:h||(R==="dark"?"#17181C":"#F9FAFB"),mutedTextColor:R==="dark"?"#6f7276":"#6B7280",inputBackground:R==="dark"?"#17181C":"#F3F4F6",cardBackground:R==="dark"?"#121318":"#FFFFFF",hoverBackground:R==="dark"?"#1c1e25":"#F3F4F6"},L=M=>({"header.new":"New","header.history":"History","header.close":"Close chat","input.placeholder":"Ask your question...","input.attachFiles":"Attach files","input.insertLink":"Insert link","input.send":"Send","input.stop":"Stop","input.uploadingFiles":"Uploading files...","input.previewImage":"Preview image","input.removeFile":"Remove file","messages.empty":"Start by sending a message to the agent.","general.agent":"Agent","editor.cancel":"Cancel","editor.saveAndRegenerate":"Save & Regenerate","editor.clickToEdit":"Click to edit"})[M]||M,W=Rt({agentId:e,baseUrl:O,tools:a,uiComponents:v,templateParams:c,controlledChatId:w,onChatIdChange:w===void 0?M=>{x&&x(M);}:void 0,onStart:at.useCallback(M=>{C&&C(M);},[C]),onFinish:at.useCallback(M=>{y&&y(M);},[y]),onError:at.useCallback(M=>{console.error("Chat error:",M);},[]),initialMessages:f,onMessagesChange:S}),{input:U,setInput:Z,messages:G,isLoading:N,status:xe,error:pe,sendMessage:be,stop:ht,setMessages:Y,notifyMessagesChange:Ke,chatId:Be,setChatId:Se,tools:Dt,uiComponents:A,formHostRef:D,formStateRef:_,cleanupForms:B,onUISuccess:te,onUIError:ne,chatApi:me}=W,Q=w!==void 0?w:Be,Ce=at.useCallback(M=>{w===void 0&&Se(M),x&&x(M);},[w,Se,x]);at.useEffect(()=>{w!==void 0&&w!==Be&&Se(w);},[w,Be,Se]);let{attachments:Xe,uploading:Pn,fileInputRef:Ye,formatBytes:zn,handleRemoveAttachment:Nn,handleFileSelection:Pt,clearAttachments:Je,setAttachments:zt}=Zt(O),[Nt,Me]=at.useState(null),[Ze,Wt]=at.useState(()=>{try{return lt(e).loadShowChatPreference(!!b)}catch{return !!b}}),[Wn,xt]=at.useState(false),[Un,On]=at.useState(""),[Gn,_n]=at.useState(0),jn=at.useRef(null),qn=at.useRef(null),[Vn,Kn]=at.useState(new Set),[Xn,bt]=at.useState(false),[De,Ct]=at.useState(null),Ut=at.useRef(null),Yn=Kt(N),vt=Lt({agentId:e,chatId:Q,messages:G,isLoading:N,autoSave:true,autoRestore:false}),q=vt.storage,Pe=at.useRef(false),ze=at.useRef(null);at.useEffect(()=>{if(!Pe.current){if(w!==void 0){try{let M=q.loadChat(w),P=M&&Array.isArray(M.messages)?M.messages:[];if(P.length>0)try{Y(P);}catch{}ze.current=w;}catch{}try{q.saveCurrentChatId(w);}catch{}Pe.current=true;return}try{let M=q.loadCurrentChatId();if(M){Ce(M);let P=q.loadChat(M),j=P&&Array.isArray(P.messages)?P.messages:[];try{Y(j);}catch{}ze.current=M;}}catch{}Pe.current=true;}},[w]),at.useEffect(()=>{if(Pe.current&&w!==void 0&&w!==ze.current)try{let M=q.loadChat(w),P=M&&Array.isArray(M.messages)?M.messages:[];try{Y(P);}catch{}ze.current=w;try{q.saveCurrentChatId(w);}catch{}}catch{}},[w,q,Y]),at.useEffect(()=>{if(Pe.current)try{q.saveCurrentChatId(Q);}catch{}},[Q,q]),at.useEffect(()=>{try{F(Q,N);}catch{}return ()=>{try{F(Q,!1);}catch{}}},[Q,N,F]),at.useEffect(()=>{try{H(Q,Ze);}catch{}return ()=>{try{H(Q,!1);}catch{}}},[Q,Ze,H]);let Jn=at.useCallback(async()=>{let M=U.trim();if(!M&&Xe.length===0||N)return;let P=[...Xe];Z(""),Je(),Me(null);try{await be({text:M,files:P.map(j=>({type:"file",url:j.url,mediaType:j.mimeType||"application/octet-stream",...j.name?{name:j.name}:{},...j.size?{size:j.size}:{}}))});}catch(j){console.error("Failed to send message:",j),Me("Failed to send message. Please try again.");}},[U,Xe,N,be,Je]),Ot=at.useCallback(()=>{if(N)return;B(),Z(""),Je(),Me(null);try{Y([]);}catch{}let M=`chat_${Date.now()}_${Math.random().toString(36).slice(2)}`;ze.current=M;try{vt.createNewChat(()=>{Ce(M);try{q.saveCurrentChatId(M);}catch{}});}catch{Ce(M);try{q.saveCurrentChatId(M);}catch{}}},[N,Je,q,Y,Ce,B,vt]),Zn=at.useCallback(()=>{xt(M=>!M);},[]),Qn=at.useCallback(()=>{Wt(false);try{q.saveShowChatPreference(!1);}catch{}},[q]),eo=at.useCallback(async M=>{let P=M.target.files;P&&await Pt(P,Me),Ye.current&&(Ye.current.value="");},[Pt,Ye]);at.useEffect(()=>{let M=Ut.current;if(!M)return;M.style.height="24px",M.offsetHeight,M.style.height="auto";let P=Math.min(M.scrollHeight,200);M.style.height=`${P}px`;},[U]);let to=at.useCallback((M,P,j,ro)=>{Ct({id:P,text:j,attachments:ro||[]}),bt(true);},[]),no=at.useCallback(()=>{if(!(!De||N))try{let M=G.findIndex(j=>j.id===De.id);if(M===-1)return;let P=G.slice(0,M);try{Y(P);}catch{}Z(De.text),zt(De.attachments),bt(!1),Ct(null),Ke();}catch(M){console.error("Failed to edit message:",M),Me("Failed to edit message. Please try again.");}},[De,N,G,Y,zt,Ke]),oo=at.useCallback(()=>{bt(false),Ct(null);},[]),Gt=jsxRuntime.jsxs("div",{style:{position:"fixed",right:0,top:0,bottom:0,width:"420px",display:"flex",flexDirection:"column",padding:"24px 16px",color:E.textColor,gap:"16px",zIndex:1e3,transform:Ze?"translateX(0)":"translateX(100%)",transition:"transform 0.25s ease-out, width 0.2s ease-out"},children:[jsxRuntime.jsx(Tn,{title:L("general.agent"),alwaysOpen:false,streaming:N,dir:p||"ltr",resolvedColors:E,onNew:Ot,onToggleHistory:Zn,onClose:Qn,historyBtnRef:jn,t:L}),jsxRuntime.jsx("div",{ref:Yn,className:"chat-scroll-container",style:{flex:"1",overflowY:"auto",overflowX:"hidden",padding:"16px 4px 16px 4px",display:"flex",flexDirection:"column",gap:"16px",scrollBehavior:"smooth","--hsafa-primary":E.primaryColor,"--hsafa-border":E.borderColor,"--hsafa-card":E.cardBackground,"--hsafa-text":E.textColor,"--hsafa-muted":E.mutedTextColor,"--hsafa-bg":E.backgroundColor,"--hsafa-hover":E.hoverBackground,"--hsafa-input-bg":E.inputBackground,"--hsafa-accent":E.accentColor},children:G.length===0?jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"16px",padding:"16px 0"},children:g&&g.length>0?jsxRuntime.jsx(Ln,{prompts:g,onSelect:M=>Z(M),resolvedColors:E,disabled:N}):jsxRuntime.jsx("div",{style:{padding:"32px",textAlign:"center",color:E.mutedTextColor,fontSize:"14px"},children:L("messages.empty")})}):jsxRuntime.jsx(Rn,{chatMessages:G,isLoading:N,openReasoningIds:Vn,toggleReasoning:M=>Kn(P=>{let j=new Set(P);return j.has(M)?j.delete(M):j.add(M),j}),resolvedColors:E,t:L,onUserMessageClick:to,HsafaUI:A,onUIError:ne,onUISuccess:te,addToolResult:M=>me?.addToolResult?.(M),editableMessageIcon:d?.message_icon})}),jsxRuntime.jsxs("div",{style:{position:"sticky",bottom:"0",marginTop:"auto",paddingBottom:"8px"},children:[s&&at__default.default.createElement(s,{}),Nt&&jsxRuntime.jsxs("div",{style:{padding:"8px 12px",marginBottom:"8px",backgroundColor:"#ef4444",color:"#fff",borderRadius:"8px",fontSize:"13px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsx("span",{children:Nt}),jsxRuntime.jsx("button",{onClick:()=>Me(null),style:{background:"none",border:"none",color:"#fff",cursor:"pointer",padding:"2px"},children:"\xD7"})]}),pe&&jsxRuntime.jsxs("div",{style:{padding:"8px 12px",marginBottom:"8px",backgroundColor:"#ef4444",color:"#fff",borderRadius:"8px",fontSize:"13px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsxs("span",{children:["An error occurred: ",pe.message||"Please try again."]}),jsxRuntime.jsx("button",{onClick:()=>window.location.reload(),style:{background:"none",border:"1px solid #fff",color:"#fff",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px"},children:"Refresh"})]}),jsxRuntime.jsx(Fn,{input:U,setInput:Z,textareaRef:Ut,fileInputRef:Ye,isLoading:N,uploading:Pn,attachments:Xe,formatBytes:zn,handleRemoveAttachment:Nn,onFileInputChange:eo,onSend:Jn,onStop:()=>ht(),status:xe,t:L,resolvedColors:E})]}),jsxRuntime.jsx($n,{historyOpen:Wn,historySearch:Un,currentChatId:Q,refreshKey:Gn,resolvedColors:E,onClose:()=>xt(false),onSearchChange:On,onChatSelect:M=>{if(xt(false),M&&M!==Q&&(B(),Ce(M),w===void 0)){try{q.saveCurrentChatId(M);}catch{}try{let P=q.loadChat(M),j=P&&Array.isArray(P.messages)?P.messages:[];try{Y(j);}catch{}}catch{}}},onChatDelete:M=>{try{q.deleteChat(M),_n(P=>P+1),M===Q&&Ot();}catch{}},loadChatsIndex:()=>q.loadChatsIndex(),historyPopupRef:qn}),jsxRuntime.jsx(Bn,{isOpen:Xn,resolvedColors:E,onConfirm:no,onCancel:oo,editProcessContent:d}),jsxRuntime.jsx("style",{children:`
|
|
25
|
+
`}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[e.map((b,a)=>{let w=Array.isArray(b.parts)?b.parts:[],i=w.filter(s=>s.type==="text").map(s=>s&&typeof s.text=="string"?s.text:"").join(`
|
|
26
|
+
`),T=w.filter(s=>s.type==="file"||s.type==="image").map(s=>{if(s.type==="image"){let g=typeof s.image=="string"?s.image:s.image?.toString?.()||"";return {id:g||`${b.id}-img-${Date.now()}`,name:s.name||"image",url:g,mimeType:s.mediaType||"image/jpeg",size:s.size||0}}else return {id:s.url||`${b.id}-file-${Date.now()}`,name:s.name||"file",url:s.url||"",mimeType:s.mediaType||"application/octet-stream",size:s.size||0}});return jsxRuntime.jsx("div",{style:{padding:"0 4px",display:"flex",flexDirection:"column",alignItems:b.role==="user"&&C?"flex-end":"stretch"},children:b.role==="user"?jsxRuntime.jsx("div",{style:{maxWidth:C?"80%":"100%"},children:jsxRuntime.jsx("div",{title:l("editor.clickToEdit"),onClick:()=>u(b,b.id,i,T),style:{maxWidth:C?"100%":"720px",borderRadius:C?"20px":"16px",padding:"12px 16px",fontSize:"15px",lineHeight:"1.6",whiteSpace:"pre-wrap",cursor:"pointer",transition:"background-color 0.2s",backgroundColor:C?o.inputBackground:o.accentColor,color:o.textColor,marginBottom:"16px",marginTop:"16px",position:"relative",border:C?`1px solid ${o.borderColor}`:"none"},onMouseEnter:s=>s.currentTarget.style.backgroundColor=o.hoverBackground,onMouseLeave:s=>s.currentTarget.style.backgroundColor=C?o.inputBackground:o.accentColor,children:jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"8px"},children:[jsxRuntime.jsxs("div",{style:{flex:1},children:[i,T.length>0&&jsxRuntime.jsx(no,{attachments:T,resolvedColors:o})]}),jsxRuntime.jsx("div",{style:{flexShrink:0,opacity:.5,transition:"opacity 0.2s"},children:jsxRuntime.jsx(q,{IconComponent:S||lucideReact.Pencil,size:"14",strokeWidth:"2"})})]})})}):jsxRuntime.jsx(Zn,{parts:w,messageId:b.id,openReasoningIds:n,toggleReasoning:r,resolvedColors:o,HsafaUI:c,onUIError:x,onUISuccess:I,addToolResult:d})},b.id)}),t&&jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px",padding:"0 4px",height:"20px"},children:[jsxRuntime.jsx("span",{style:{display:"inline-block",width:"4px",height:"4px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"jumpingDots 1s infinite ease-in-out",animationDelay:"0s"}}),jsxRuntime.jsx("span",{style:{display:"inline-block",width:"4px",height:"4px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"jumpingDots 1s infinite ease-in-out",animationDelay:"0.2s"}}),jsxRuntime.jsx("span",{style:{display:"inline-block",width:"4px",height:"4px",borderRadius:"50%",backgroundColor:o.mutedTextColor,animation:"jumpingDots 1s infinite ease-in-out",animationDelay:"0.4s"}})]})]})]})}function jt({input:e,setInput:t,textareaRef:n,fileInputRef:r,isLoading:o,uploading:l,attachments:u,formatBytes:c,handleRemoveAttachment:x,onFileInputChange:I,onSend:d,onStop:S,status:C,t:b,resolvedColors:a,fullPage:w}){let i=C==="streaming"||C==="submitted",T=u.length>0||e.trim().length>0;return w?jsxRuntime.jsxs("div",{style:{position:"relative",width:"100%",maxWidth:"768px",margin:"0 auto"},children:[jsxRuntime.jsxs("div",{style:{position:"relative",width:"100%",borderRadius:"26px",padding:"14px 14px 14px 48px",backgroundColor:a.inputBackground,boxShadow:"0 0 0 1px rgba(0,0,0,0.05)",transition:"box-shadow 0.2s ease"},onFocus:s=>{},children:[jsxRuntime.jsx("div",{style:{position:"absolute",bottom:"10px",left:"12px",zIndex:10},children:jsxRuntime.jsx("button",{onClick:()=>r.current?.click(),disabled:o||l,style:{borderRadius:"50%",width:"33px",height:"33px",transition:"all 0.2s",backgroundColor:"transparent",border:"none",cursor:o||l?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:a.textColor,opacity:o||l?.5:.7},"aria-label":b("input.attachFiles"),onMouseEnter:s=>{!o&&!l&&(s.currentTarget.style.backgroundColor=a.hoverBackground,s.currentTarget.style.opacity="1");},onMouseLeave:s=>{s.currentTarget.style.backgroundColor="transparent",s.currentTarget.style.opacity="0.7";},children:jsxRuntime.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M12 5v14M5 12h14"})})})}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[u.length>0&&jsxRuntime.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",paddingBottom:"8px",marginLeft:"-4px"},children:u.map(s=>{let g=s.mimeType.startsWith("image/");return jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 10px",backgroundColor:a.cardBackground,borderRadius:"8px",border:`1px solid ${a.borderColor}`,fontSize:"12px",color:a.textColor,position:"relative"},children:[jsxRuntime.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",width:"20px",height:"20px",borderRadius:"4px",backgroundColor:g?"transparent":a.inputBackground},children:g?jsxRuntime.jsx("img",{src:s.url,alt:s.name,style:{width:"20px",height:"20px",borderRadius:"4px",objectFit:"cover"}}):jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:jsxRuntime.jsx("rect",{x:"4",y:"4",width:"16",height:"20",rx:"2",ry:"2"})})}),jsxRuntime.jsx("span",{title:s.name,style:{maxWidth:"120px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:500},children:s.name}),jsxRuntime.jsx("button",{onClick:()=>x(s.id),style:{background:"none",border:"none",color:a.mutedTextColor,cursor:"pointer",padding:"2px",display:"flex",alignItems:"center",borderRadius:"4px"},children:jsxRuntime.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntime.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},s.id)})}),l&&jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"13px",color:a.mutedTextColor},children:[jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{animation:"spin 1s linear infinite"},children:jsxRuntime.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})}),jsxRuntime.jsx("span",{children:b("input.uploadingFiles")})]}),jsxRuntime.jsx("div",{style:{paddingRight:"40px",display:"flex",alignItems:"center"},children:jsxRuntime.jsx("textarea",{ref:n,"aria-label":"Prompt",rows:1,placeholder:b("input.placeholder"),value:e,onChange:s=>t(s.target.value),onKeyDown:s=>{s.key==="Enter"&&!s.shiftKey&&(s.preventDefault(),d());},disabled:l,style:{maxHeight:"200px",width:"100%",resize:"none",backgroundColor:"transparent",fontSize:"16px",lineHeight:"1.5",outline:"none",border:"none",color:a.textColor,fontFamily:"inherit",overflow:"auto",padding:0,margin:0}})})]}),jsxRuntime.jsx("div",{style:{position:"absolute",bottom:"8px",right:"8px"},children:o?jsxRuntime.jsx("button",{onClick:S,disabled:!i,"aria-label":b("input.stop"),style:{borderRadius:"50%",width:"36px",height:"36px",transition:"all 0.2s ease-out",backgroundColor:a.textColor,color:a.inputBackground,border:"none",opacity:i?1:.7,cursor:i?"pointer":"not-allowed",display:"flex",alignItems:"center",justifyContent:"center"},children:jsxRuntime.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.jsx("rect",{width:"24",height:"24",rx:"2"})})}):jsxRuntime.jsx("button",{onClick:d,disabled:!T||l,"aria-label":b("input.send"),style:{borderRadius:"50%",width:"36px",height:"36px",transition:"all 0.2s ease-out",backgroundColor:!T||l?a.cardBackground:a.textColor,color:!T||l?a.mutedTextColor:a.inputBackground,border:"none",cursor:!T||l?"default":"pointer",display:"flex",alignItems:"center",justifyContent:"center"},children:jsxRuntime.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("path",{d:"M5 12h14"}),jsxRuntime.jsx("path",{d:"M12 5l7 7-7 7"})]})})})]}),jsxRuntime.jsx("input",{ref:r,type:"file",multiple:true,onChange:I,style:{display:"none"},accept:"*/*"}),jsxRuntime.jsx("div",{style:{textAlign:"center",padding:"8px 0",fontSize:"12px",color:a.mutedTextColor,opacity:.8},children:"AI can make mistakes. Please check important information."})]}):jsxRuntime.jsx("div",{style:{position:"sticky",bottom:"0",marginTop:"auto",paddingBottom:"8px",paddingTop:"4px"},children:jsxRuntime.jsx("div",{style:{position:"relative",flex:1},children:jsxRuntime.jsxs("div",{style:{position:"relative",width:"100%",borderRadius:"16px",paddingBottom:"48px",paddingTop:"16px",border:`1px solid ${a.borderColor}`,backgroundColor:a.cardBackground},children:[u.length>0&&jsxRuntime.jsx("div",{style:{padding:"0px 16px 12px 16px",display:"flex",flexWrap:"wrap",gap:"10px"},children:u.map(s=>{let g=s.mimeType.startsWith("image/");return jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"8px 12px",backgroundColor:a.inputBackground,borderRadius:"10px",border:`1px solid ${a.borderColor}`,fontSize:"12px",color:a.textColor,position:"relative"},children:[jsxRuntime.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",width:"20px",height:"20px",borderRadius:"4px",backgroundColor:g?"transparent":a.cardBackground},children:g?jsxRuntime.jsx("img",{src:s.url,alt:s.name,style:{width:"20px",height:"20px",borderRadius:"4px",objectFit:"cover"}}):jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:jsxRuntime.jsx("rect",{x:"4",y:"4",width:"16",height:"20",rx:"2",ry:"2"})})}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",minWidth:0,flex:1},children:[jsxRuntime.jsx("span",{title:s.name,style:{maxWidth:"140px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:500},children:s.name}),jsxRuntime.jsx("span",{style:{color:a.mutedTextColor,fontSize:"10px",marginTop:"2px"},children:c(s.size)})]}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px",marginLeft:"8px"},children:[g&&jsxRuntime.jsx("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",style:{background:"none",border:"none",color:a.mutedTextColor,cursor:"pointer",padding:"2px",display:"flex",alignItems:"center",borderRadius:"4px",textDecoration:"none"},title:b("input.previewImage"),children:jsxRuntime.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),jsxRuntime.jsx("circle",{cx:"12",cy:"12",r:"3"})]})}),jsxRuntime.jsx("button",{onClick:()=>x(s.id),style:{background:"none",border:"none",color:a.mutedTextColor,cursor:"pointer",padding:"2px",display:"flex",alignItems:"center",borderRadius:"4px"},title:b("input.removeFile"),children:jsxRuntime.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntime.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]})]},s.id)})}),l&&jsxRuntime.jsxs("div",{style:{padding:"0px 16px 12px 16px",display:"flex",alignItems:"center",gap:"8px",fontSize:"13px",color:a.mutedTextColor},children:[jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{animation:"spin 1s linear infinite"},children:jsxRuntime.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})}),jsxRuntime.jsx("span",{children:b("input.uploadingFiles")})]}),jsxRuntime.jsx("div",{style:{padding:"0 16px"},children:jsxRuntime.jsx("textarea",{ref:n,"aria-label":"Prompt",rows:1,placeholder:b("input.placeholder"),value:e,onChange:s=>t(s.target.value),onKeyDown:s=>{s.key==="Enter"&&!s.shiftKey&&(s.preventDefault(),d());},disabled:l,style:{height:"24px",maxHeight:"200px",width:"100%",resize:"none",backgroundColor:"transparent",fontSize:"15px",lineHeight:"1.6",outline:"none",border:"none",color:a.textColor,fontFamily:"inherit",overflow:"auto"}})}),jsxRuntime.jsx("input",{ref:r,type:"file",multiple:true,onChange:I,style:{display:"none"},accept:"*/*"}),jsxRuntime.jsx("div",{style:{position:"absolute",bottom:"8px",left:"8px",display:"flex",alignItems:"center",gap:"4px",color:a.mutedTextColor},children:jsxRuntime.jsx("button",{onClick:()=>r.current?.click(),disabled:o||l,style:{borderRadius:"8px",padding:"8px",transition:"all 0.2s",backgroundColor:"transparent",border:"none",cursor:o||l?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"inherit",opacity:o||l?.5:1},"aria-label":b("input.attachFiles"),children:jsxRuntime.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 1 1 5.66 5.66l-9.2 9.19a2 2 0 1 1-2.83-2.83l8.49-8.49"})})})}),jsxRuntime.jsx("div",{style:{position:"absolute",bottom:"8px",right:"8px"},children:o?jsxRuntime.jsx("button",{onClick:S,disabled:!i,"aria-label":b("input.stop"),title:"Stop generation",style:{borderRadius:"12px",padding:"12px",transition:"all 0.2s ease-out",border:"1px solid #ef4444",backgroundColor:"#ef444420",color:"#ef4444",opacity:i?1:.4,cursor:i?"pointer":"not-allowed",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:s=>{i&&(s.currentTarget.style.backgroundColor="#ef444430",s.currentTarget.style.transform="scale(1.02)");},onMouseLeave:s=>{s.currentTarget.style.backgroundColor="#ef444420",s.currentTarget.style.transform="scale(1)";},children:jsxRuntime.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"})})}):jsxRuntime.jsx("button",{onClick:d,disabled:!T||l,"aria-label":b("input.send"),title:"Send message",style:{borderRadius:"12px",padding:"12px",transition:"all 0.2s ease-out",border:`1px solid ${a.borderColor}`,backgroundColor:a.cardBackground,color:!T||l?a.mutedTextColor:a.primaryColor,cursor:!T||l?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",opacity:!T||l?.5:1},onMouseEnter:s=>{T&&!l&&(s.currentTarget.style.borderColor=a.primaryColor,s.currentTarget.style.transform="scale(1.02)");},onMouseLeave:s=>{s.currentTarget.style.borderColor=a.borderColor,s.currentTarget.style.transform="scale(1)";},children:jsxRuntime.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("path",{d:"m5 12 7-7 7 7"}),jsxRuntime.jsx("path",{d:"M12 19V5"})]})})})]})})})}function _t({prompts:e,onSelect:t,resolvedColors:n,disabled:r=false}){let[o,l]=so.useState(null);return !e||e.length===0?null:jsxRuntime.jsxs("div",{style:{padding:"12px 0",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"12px",fontWeight:600,color:n.mutedTextColor,paddingLeft:"4px",textTransform:"uppercase",letterSpacing:"0.5px"},children:"Suggested Prompts"}),jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:e.map((u,c)=>{let x=o===c,I=u.prompt.length>80,d=I&&!x?u.prompt.slice(0,80)+"...":u.prompt;return jsxRuntime.jsxs("button",{onClick:()=>{r||t(u.prompt);},disabled:r,style:{display:"flex",flexDirection:"column",alignItems:"flex-start",padding:"12px",backgroundColor:n.cardBackground,border:`1px solid ${n.borderColor}`,borderRadius:"12px",cursor:r?"not-allowed":"pointer",transition:"all 0.2s ease",textAlign:"left",opacity:r?.5:1,position:"relative",overflow:"hidden"},onMouseEnter:S=>{r||(S.currentTarget.style.backgroundColor=n.hoverBackground,S.currentTarget.style.borderColor=n.primaryColor,S.currentTarget.style.transform="translateX(2px)");},onMouseLeave:S=>{S.currentTarget.style.backgroundColor=n.cardBackground,S.currentTarget.style.borderColor=n.borderColor,S.currentTarget.style.transform="translateX(0)";},children:[jsxRuntime.jsxs("div",{style:{fontSize:"13px",fontWeight:600,color:n.textColor,marginBottom:"6px",display:"flex",alignItems:"center",gap:"6px"},children:[jsxRuntime.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:n.primaryColor,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[jsxRuntime.jsx("path",{d:"M12 20h9"}),jsxRuntime.jsx("path",{d:"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"})]}),u.label]}),jsxRuntime.jsx("div",{style:{fontSize:"12px",color:n.mutedTextColor,lineHeight:"1.5",width:"100%",wordWrap:"break-word",whiteSpace:"pre-wrap"},children:d}),I&&jsxRuntime.jsxs("button",{onClick:S=>{S.stopPropagation(),l(x?null:c);},style:{marginTop:"8px",padding:"4px 8px",fontSize:"11px",color:n.primaryColor,backgroundColor:"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",gap:"4px",fontWeight:500},children:[x?"Show less":"Show more",jsxRuntime.jsx("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{transform:x?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"},children:jsxRuntime.jsx("polyline",{points:"6 9 12 15 18 9"})})]})]},c)})})]})}function oo(e){let t=Date.now()-e,n=Math.max(1,Math.floor(t/1e3));if(n<60)return `${n}s`;let r=Math.floor(n/60);if(r<60)return `${r}m`;let o=Math.floor(r/60);if(o<24)return `${o}h`;let l=Math.floor(o/24);if(l<7)return `${l}d`;let u=Math.floor(l/7);if(u<4)return `${u}w`;let c=Math.floor(l/30);return c<12?`${c}mo`:`${Math.floor(c/12)}y`}function xt({search:e,onSearchChange:t,chats:n,currentChatId:r,resolvedColors:o,onChatSelect:l,onChatDelete:u,className:c,style:x}){let I=e.trim()?n.filter(d=>(d.title||"").toLowerCase().includes(e.toLowerCase().trim())):n;return jsxRuntime.jsxs("div",{className:c,style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",...x},children:[jsxRuntime.jsx("div",{style:{display:"flex",alignItems:"center",gap:"12px",borderBottom:`1px solid ${o.borderColor}`,padding:"12px 16px",flexShrink:0},children:jsxRuntime.jsx("div",{style:{flex:"1"},children:jsxRuntime.jsx("input",{value:e,onChange:d=>t(d.target.value),placeholder:"Search",style:{width:"100%",borderRadius:"8px",backgroundColor:o.inputBackground,padding:"8px 12px",fontSize:"14px",color:o.textColor,border:`1px solid ${o.borderColor}`,outline:"none"},onFocus:d=>d.currentTarget.style.borderColor=o.primaryColor,onBlur:d=>d.currentTarget.style.borderColor=o.borderColor})})}),jsxRuntime.jsx("div",{style:{flex:1,overflowY:"auto",padding:"0"},children:I.length===0?jsxRuntime.jsx("div",{style:{padding:"24px",color:o.mutedTextColor,textAlign:"center"},children:"No chats found."}):jsxRuntime.jsx("div",{children:I.map((d,S)=>jsxRuntime.jsx("div",{style:{borderTop:S>0?`1px solid ${o.borderColor}`:"none"},children:jsxRuntime.jsxs("div",{style:{display:"flex",width:"100%",alignItems:"center",justifyContent:"space-between",gap:"12px",padding:"8px 12px",backgroundColor:d.id===r?o.cardBackground:"transparent",transition:"background-color 0.2s"},children:[jsxRuntime.jsx("button",{style:{flex:"1",textAlign:"left",transition:"background-color 0.2s",borderRadius:"8px",padding:"8px",border:"none",backgroundColor:"transparent",cursor:"pointer",color:o.textColor,overflow:"hidden"},onMouseEnter:C=>C.currentTarget.style.backgroundColor=o.hoverBackground,onMouseLeave:C=>C.currentTarget.style.backgroundColor="transparent",onClick:()=>l(d.id),children:jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"},children:[jsxRuntime.jsx("div",{style:{minWidth:"0",flex:"1"},children:jsxRuntime.jsx("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"14px",color:o.textColor,fontWeight:d.id===r?600:400},children:d.title||"Untitled chat"})}),jsxRuntime.jsx("div",{style:{flexShrink:0,fontSize:"12px",color:o.mutedTextColor},children:oo(d.updatedAt)})]})}),jsxRuntime.jsx("button",{style:{flexShrink:0,borderRadius:"6px",padding:"8px",color:o.mutedTextColor,border:"1px solid transparent",backgroundColor:"transparent",cursor:"pointer",transition:"all 0.2s"},title:"Delete chat",onMouseEnter:C=>{C.currentTarget.style.color="#ef4444",C.currentTarget.style.backgroundColor="rgba(239, 68, 68, 0.1)",C.currentTarget.style.borderColor="rgba(239, 68, 68, 0.3)";},onMouseLeave:C=>{C.currentTarget.style.color=o.mutedTextColor,C.currentTarget.style.backgroundColor="transparent",C.currentTarget.style.borderColor="transparent";},onClick:C=>{C.stopPropagation(),u(d.id);},children:jsxRuntime.jsx(q,{IconComponent:lucideReact.Trash2,size:"16",strokeWidth:"2"})})]})},d.id))})})]})}function Vt({historyOpen:e,historySearch:t,currentChatId:n,refreshKey:r,resolvedColors:o,onClose:l,onSearchChange:u,onChatSelect:c,onChatDelete:x,loadChatsIndex:I,historyPopupRef:d}){if(!e)return null;let S=I(),C=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{style:{position:"fixed",inset:"0",zIndex:1100,backgroundColor:"rgba(0, 0, 0, 0.4)",backdropFilter:"blur(4px)",WebkitBackdropFilter:"blur(4px)"},onClick:l}),jsxRuntime.jsx("div",{ref:d,style:{position:"fixed",left:"50%",top:"64px",transform:"translateX(-50%)",zIndex:1101,width:"680px",maxWidth:"94vw",height:"60vh",maxHeight:"600px",overflow:"hidden",borderRadius:"16px",border:`1px solid ${o.borderColor}`,backgroundColor:`${o.backgroundColor}f0`,boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.25)",backdropFilter:"blur(16px)",WebkitBackdropFilter:"blur(16px)",display:"flex",flexDirection:"column"},children:jsxRuntime.jsx(xt,{search:t,onSearchChange:u,chats:S,currentChatId:n,resolvedColors:o,onChatSelect:c,onChatDelete:x})})]});return typeof document<"u"&&document.body?reactDom.createPortal(C,document.body):C}function ao({isOpen:e,historySearch:t,onSearchChange:n,chats:r,currentChatId:o,resolvedColors:l,onChatSelect:u,onChatDelete:c,onNewChat:x,isMobile:I=false}){return jsxRuntime.jsxs("div",{style:{width:e?"260px":"0px",opacity:e?1:0,marginLeft:e?0:-10,height:"100%",backgroundColor:l.backgroundColor,borderRight:e?`1px solid ${l.borderColor}`:"none",display:"flex",flexDirection:"column",transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",overflow:"hidden",flexShrink:0,position:I?"fixed":"relative",zIndex:I?100:1,left:0,top:0,bottom:0,visibility:e?"visible":"hidden"},children:[jsxRuntime.jsx("div",{style:{padding:"12px",flexShrink:0,opacity:e?1:0,transition:"opacity 0.2s 0.1s"},children:jsxRuntime.jsxs("button",{onClick:x,style:{width:"100%",display:"flex",alignItems:"center",gap:"12px",padding:"10px 12px",borderRadius:"8px",border:`1px solid ${l.borderColor}`,backgroundColor:"transparent",color:l.textColor,cursor:"pointer",fontSize:"14px",transition:"all 0.2s",textAlign:"left"},onMouseEnter:d=>d.currentTarget.style.backgroundColor=l.hoverBackground,onMouseLeave:d=>d.currentTarget.style.backgroundColor="transparent",children:[jsxRuntime.jsx(q,{IconComponent:lucideReact.Plus,size:"16",strokeWidth:"2"}),jsxRuntime.jsx("span",{children:"New chat"})]})}),jsxRuntime.jsx(xt,{search:t,onSearchChange:n,chats:r,currentChatId:o,resolvedColors:l,onChatSelect:u,onChatDelete:c,style:{flex:1}})]})}function Xt({isOpen:e,resolvedColors:t,onConfirm:n,onCancel:r,editProcessContent:o}){if(!e)return null;let l=o?.title||"Edit Message",u=o?.content||"This will remove this message and all messages after it, and place its content in the input field for editing. Do you want to continue?",c=o?.submit_button_label||"Edit",x=o?.cancel_button_label||"Cancel",I=o?.icon,d=typeof u=="function",S=d?u:null,C=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{style:{position:"fixed",inset:"0",zIndex:1100,backgroundColor:"rgba(0, 0, 0, 0.4)",backdropFilter:"blur(4px)",WebkitBackdropFilter:"blur(4px)"},onClick:r}),jsxRuntime.jsxs("div",{style:{position:"fixed",left:"50%",top:"50%",transform:"translate(-50%, -50%)",zIndex:1101,width:"420px",maxWidth:"94vw",overflow:"hidden",borderRadius:"16px",border:`1px solid ${t.borderColor}`,backgroundColor:t.backgroundColor,boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.25)",backdropFilter:"blur(16px)",WebkitBackdropFilter:"blur(16px)"},children:[jsxRuntime.jsxs("div",{style:{padding:"20px 24px",borderBottom:`1px solid ${t.borderColor}`,display:"flex",alignItems:"center",gap:"12px"},children:[I?jsxRuntime.jsx("div",{style:{flexShrink:0},children:jsxRuntime.jsx(q,{IconComponent:I,size:"20",strokeWidth:"2"})}):jsxRuntime.jsx("div",{style:{flexShrink:0,color:t.mutedTextColor},children:jsxRuntime.jsx(q,{IconComponent:lucideReact.Pencil,size:"20",strokeWidth:"2"})}),jsxRuntime.jsx("h3",{style:{margin:0,fontSize:"18px",fontWeight:"600",color:t.textColor,flex:1},children:l})]}),jsxRuntime.jsx("div",{style:{padding:"24px",color:t.textColor,fontSize:"14px",lineHeight:"1.6"},children:d&&S?jsxRuntime.jsx(S,{}):jsxRuntime.jsx("p",{style:{margin:0},children:u})}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"12px",padding:"16px 24px",borderTop:`1px solid ${t.borderColor}`,justifyContent:"flex-end"},children:[jsxRuntime.jsx("button",{onClick:r,style:{padding:"8px 16px",borderRadius:"8px",fontSize:"14px",fontWeight:"500",border:`1px solid ${t.borderColor}`,backgroundColor:"transparent",color:t.textColor,cursor:"pointer",transition:"all 0.2s"},onMouseEnter:b=>{b.currentTarget.style.backgroundColor=t.hoverBackground;},onMouseLeave:b=>{b.currentTarget.style.backgroundColor="transparent";},children:x}),jsxRuntime.jsx("button",{onClick:n,style:{padding:"8px 16px",borderRadius:"8px",fontSize:"14px",fontWeight:"500",border:"none",backgroundColor:t.primaryColor,color:t.backgroundColor,cursor:"pointer",transition:"all 0.2s",opacity:1},onMouseEnter:b=>{b.currentTarget.style.opacity="0.9";},onMouseLeave:b=>{b.currentTarget.style.opacity="1";},children:c})]})]})]});return typeof document<"u"&&document.body?reactDom.createPortal(C,document.body):C}function Er({agentId:e,theme:t,primaryColor:n,primaryColorDark:r,primaryColorLight:o,backgroundColor:l,borderColor:u,textColor:c,accentColor:x,baseUrl:I="",initialMessages:d=[],onMessagesChange:S,defaultOpen:C=true,floatingButtonPosition:b={bottom:24,right:24},HsafaTools:a={},HsafaUI:w={},componentAboveInput:i,editProcessContent:T,presetPrompts:s,onStart:g,onFinish:h,currentChat:k,onChatChanged:y,templateParams:m,fullPageChat:v=false,title:M,placeholder:f,emptyStateMessage:F}){let{dir:G,theme:V,baseUrl:me,setStreamingState:ge,setChatOpenState:se}=le(),P=t||V||"dark",U=I&&I.length>0?I:me||"",A={primaryColor:P==="dark"?r||n||"#ffffff":o||n||"#000000",backgroundColor:l||(P==="dark"?"#0B0B0F":"#FFFFFF"),borderColor:u||(P==="dark"?"#2A2C33":"#E5E7EB"),textColor:c||(P==="dark"?"#EDEEF0":"#111827"),accentColor:x||(P==="dark"?"#17181C":"#F9FAFB"),mutedTextColor:P==="dark"?"#6f7276":"#6B7280",inputBackground:P==="dark"?"#17181C":"#F3F4F6",cardBackground:P==="dark"?"#121318":"#FFFFFF",hoverBackground:P==="dark"?"#1c1e25":"#F3F4F6"},O=p=>({"header.new":"New","header.history":"History","header.close":"Close chat","input.placeholder":f||"Ask your question...","input.attachFiles":"Attach files","input.insertLink":"Insert link","input.send":"Send","input.stop":"Stop","input.uploadingFiles":"Uploading files...","input.previewImage":"Preview image","input.removeFile":"Remove file","messages.empty":F||"Start by sending a message to the agent.","general.agent":M||"Agent","editor.cancel":"Cancel","editor.saveAndRegenerate":"Save & Regenerate","editor.clickToEdit":"Click to edit"})[p]||p,Q=zt({agentId:e,baseUrl:U,tools:a,uiComponents:w,templateParams:m,controlledChatId:k,onChatIdChange:k===void 0?p=>{y&&y(p);}:void 0,onStart:so.useCallback(p=>{g&&g(p);},[g]),onFinish:so.useCallback(p=>{h&&h(p);},[h]),onError:so.useCallback(p=>{console.error("Chat error:",p);},[]),initialMessages:d,onMessagesChange:S}),{input:ie,setInput:J,messages:ee,isLoading:j,status:xe,error:Ae,sendMessage:et,stop:tt,setMessages:te,notifyMessagesChange:R,chatId:B,setChatId:W,tools:N,uiComponents:Z,formHostRef:oe,formStateRef:be,cleanupForms:we,onUISuccess:nt,onUIError:Jt,chatApi:Zt}=Q,_=k!==void 0?k:B,Te=so.useCallback(p=>{k===void 0&&W(p),y&&y(p);},[k,W,y]);so.useEffect(()=>{k!==void 0&&k!==B&&W(k);},[k,B,W]);let{attachments:ze,uploading:Qt,fileInputRef:Ne,formatBytes:en,handleRemoveAttachment:tn,handleFileSelection:nn,clearAttachments:ot,setAttachments:on}=Rn(U),[rt,Ie]=so.useState(null),[at,rn]=so.useState(()=>{try{return pt(e).loadShowChatPreference(!!C)}catch{return !!C}}),[kt,Le]=so.useState(false),[wt,Tt]=so.useState(""),[It,St]=so.useState(0),an=so.useRef(null),sn=so.useRef(null),[ln,cn]=so.useState(new Set),[dn,Mt]=so.useState(false),[We,Et]=so.useState(null),Ue=so.useRef(null),un=In(j),[pn,co]=so.useState(false);so.useEffect(()=>{let p=()=>co(window.innerWidth<768);return p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)},[]);let Rt=Wt({agentId:e,chatId:_,messages:ee,isLoading:j,autoSave:true,autoRestore:false}),$=Rt.storage,mn=so.useMemo(()=>{try{return $.loadChatsIndex()}catch{return []}},[$,It]),Oe=so.useRef(false),Ge=so.useRef(null);so.useEffect(()=>{if(!Oe.current){if(k!==void 0){try{let p=$.loadChat(k),L=p&&Array.isArray(p.messages)?p.messages:[];if(L.length>0)try{te(L);}catch{}Ge.current=k;}catch{}try{$.saveCurrentChatId(k);}catch{}Oe.current=true;return}try{let p=$.loadCurrentChatId();if(p){Te(p);let L=$.loadChat(p),D=L&&Array.isArray(L.messages)?L.messages:[];try{te(D);}catch{}Ge.current=p;}}catch{}Oe.current=true;}},[k]),so.useEffect(()=>{if(Oe.current&&k!==void 0&&k!==Ge.current)try{let p=$.loadChat(k),L=p&&Array.isArray(p.messages)?p.messages:[];try{te(L);}catch{}Ge.current=k;try{$.saveCurrentChatId(k);}catch{}}catch{}},[k,$,te]),so.useEffect(()=>{if(Oe.current)try{$.saveCurrentChatId(_);}catch{}},[_,$]),so.useEffect(()=>{try{ge(_,j);}catch{}return ()=>{try{ge(_,!1);}catch{}}},[_,j,ge]),so.useEffect(()=>{try{se(_,at);}catch{}return ()=>{try{se(_,!1);}catch{}}},[_,at,se]);let gn=so.useCallback(async()=>{let p=ie.trim();if(!p&&ze.length===0||j)return;let L=[...ze];J(""),ot(),Ie(null),Ue.current&&Ue.current.focus();try{await et({text:p,files:L.map(D=>({type:"file",url:D.url,mediaType:D.mimeType||"application/octet-stream",...D.name?{name:D.name}:{},...D.size?{size:D.size}:{}}))});}catch(D){console.error("Failed to send message:",D),Ie("Failed to send message. Please try again.");}},[ie,ze,j,et,ot]),He=so.useCallback(()=>{if(j)return;we(),J(""),ot(),Ie(null);try{te([]);}catch{}let p=`chat_${Date.now()}_${Math.random().toString(36).slice(2)}`;Ge.current=p;try{Rt.createNewChat(()=>{Te(p);try{$.saveCurrentChatId(p);}catch{}});}catch{Te(p);try{$.saveCurrentChatId(p);}catch{}}},[j,ot,$,te,Te,we,Rt]),fn=so.useCallback(()=>{Le(p=>!p);},[]),uo=so.useCallback(()=>{rn(false);try{$.saveShowChatPreference(!1);}catch{}},[$]),hn=so.useCallback(async p=>{let L=p.target.files;L&&await nn(L,Ie),Ne.current&&(Ne.current.value="");},[nn,Ne]);so.useEffect(()=>{let p=Ue.current;if(!p)return;p.style.height="24px",p.offsetHeight,p.style.height="auto";let L=Math.min(p.scrollHeight,200);p.style.height=`${L}px`;},[ie]);let yn=so.useCallback((p,L,D,mo)=>{Et({id:L,text:D,attachments:mo||[]}),Mt(true);},[]),xn=so.useCallback(()=>{if(!(!We||j))try{let p=ee.findIndex(D=>D.id===We.id);if(p===-1)return;let L=ee.slice(0,p);try{te(L);}catch{}J(We.text),on(We.attachments),Mt(!1),Et(null),R();}catch(p){console.error("Failed to edit message:",p),Ie("Failed to edit message. Please try again.");}},[We,j,ee,te,on,R]),bn=so.useCallback(()=>{Mt(false),Et(null);},[]),po=jsxRuntime.jsxs("div",{style:{position:"fixed",inset:0,display:"flex",flexDirection:"row",backgroundColor:A.backgroundColor,color:A.textColor,overflow:"hidden"},children:[!pn&&jsxRuntime.jsx(ao,{isOpen:kt,historySearch:wt,onSearchChange:Tt,chats:mn,currentChatId:_,resolvedColors:A,onChatSelect:p=>{if(p&&p!==_&&(we(),Te(p),k===void 0)){try{$.saveCurrentChatId(p);}catch{}try{let L=$.loadChat(p),D=L&&Array.isArray(L.messages)?L.messages:[];try{te(D);}catch{}}catch{}}},onChatDelete:p=>{try{$.deleteChat(p),St(L=>L+1),p===_&&He();}catch{}},onNewChat:He,onClose:()=>Le(false)}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",flex:1,minWidth:0,position:"relative"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 20px",backgroundColor:A.backgroundColor,minHeight:"60px",zIndex:10},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"12px"},children:[jsxRuntime.jsx("button",{ref:an,onClick:fn,style:{padding:"8px",borderRadius:"8px",border:"none",backgroundColor:"transparent",color:A.mutedTextColor,cursor:"pointer",transition:"all 0.2s",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:p=>{p.currentTarget.style.backgroundColor=A.hoverBackground,p.currentTarget.style.color=A.textColor;},onMouseLeave:p=>{p.currentTarget.style.backgroundColor="transparent",p.currentTarget.style.color=A.mutedTextColor;},"aria-label":O("header.history"),children:jsxRuntime.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"}),jsxRuntime.jsx("line",{x1:"9",y1:"3",x2:"9",y2:"21"})]})}),jsxRuntime.jsx("h1",{style:{fontSize:"16px",fontWeight:600,margin:0,color:A.textColor},children:O("general.agent")})]}),jsxRuntime.jsx("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:jsxRuntime.jsx("button",{onClick:He,disabled:j,style:{padding:"8px",borderRadius:"8px",border:"none",backgroundColor:"transparent",color:A.mutedTextColor,cursor:j?"not-allowed":"pointer",transition:"all 0.2s",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:p=>{j||(p.currentTarget.style.backgroundColor=A.hoverBackground,p.currentTarget.style.color=A.textColor);},onMouseLeave:p=>{p.currentTarget.style.backgroundColor="transparent",p.currentTarget.style.color=A.mutedTextColor;},"aria-label":O("header.new"),children:jsxRuntime.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.jsx("path",{d:"M12 5v14M5 12h14"})})})})]}),jsxRuntime.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden"},children:[jsxRuntime.jsx("div",{ref:un,className:"chat-scroll-container",style:{flex:1,overflowY:"auto",overflowX:"hidden",display:"flex",flexDirection:"column",scrollBehavior:"smooth","--hsafa-primary":A.primaryColor,"--hsafa-border":A.borderColor,"--hsafa-card":A.cardBackground,"--hsafa-text":A.textColor,"--hsafa-muted":A.mutedTextColor,"--hsafa-bg":A.backgroundColor,"--hsafa-hover":A.hoverBackground,"--hsafa-input-bg":A.inputBackground,"--hsafa-accent":A.accentColor},children:jsxRuntime.jsx("div",{style:{maxWidth:"768px",width:"100%",margin:"0 auto",padding:"32px 24px",display:"flex",flexDirection:"column",gap:"24px"},children:ee.length===0?jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"16px",padding:"64px 0"},children:s&&s.length>0?jsxRuntime.jsx(_t,{prompts:s,onSelect:p=>J(p),resolvedColors:A,disabled:j}):jsxRuntime.jsx("div",{style:{padding:"64px 32px",textAlign:"center",color:A.mutedTextColor,fontSize:"16px"},children:O("messages.empty")})}):jsxRuntime.jsx(Gt,{chatMessages:ee,isLoading:j,openReasoningIds:ln,toggleReasoning:p=>cn(L=>{let D=new Set(L);return D.has(p)?D.delete(p):D.add(p),D}),resolvedColors:A,t:O,onUserMessageClick:yn,HsafaUI:Z,onUIError:Jt,onUISuccess:nt,addToolResult:p=>Zt?.addToolResult?.(p),editableMessageIcon:T?.message_icon,fullPage:true})})}),jsxRuntime.jsx("div",{style:{backgroundColor:A.backgroundColor,padding:"0 24px 24px",position:"relative",zIndex:20},children:jsxRuntime.jsxs("div",{style:{maxWidth:"768px",width:"100%",margin:"0 auto"},children:[i&&so__default.default.createElement(i,{}),rt&&jsxRuntime.jsxs("div",{style:{padding:"12px 16px",marginBottom:"12px",backgroundColor:"#ef4444",color:"#fff",borderRadius:"8px",fontSize:"14px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsx("span",{children:rt}),jsxRuntime.jsx("button",{onClick:()=>Ie(null),style:{background:"none",border:"none",color:"#fff",cursor:"pointer",padding:"2px",fontSize:"20px"},children:"\xD7"})]}),Ae&&jsxRuntime.jsxs("div",{style:{padding:"12px 16px",marginBottom:"12px",backgroundColor:"#ef4444",color:"#fff",borderRadius:"8px",fontSize:"14px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsxs("span",{children:["An error occurred: ",Ae.message||"Please try again."]}),jsxRuntime.jsx("button",{onClick:()=>window.location.reload(),style:{background:"none",border:"1px solid #fff",color:"#fff",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px"},children:"Refresh"})]}),jsxRuntime.jsx(jt,{input:ie,setInput:J,textareaRef:Ue,fileInputRef:Ne,isLoading:j,uploading:Qt,attachments:ze,formatBytes:en,handleRemoveAttachment:tn,onFileInputChange:hn,onSend:gn,onStop:()=>tt(),status:xe,t:O,resolvedColors:A,fullPage:true})]})})]})]}),pn&&jsxRuntime.jsx(Vt,{historyOpen:kt,historySearch:wt,currentChatId:_,refreshKey:It,resolvedColors:A,onClose:()=>Le(false),onSearchChange:Tt,onChatSelect:p=>{if(Le(false),p&&p!==_&&(we(),Te(p),k===void 0)){try{$.saveCurrentChatId(p);}catch{}try{let L=$.loadChat(p),D=L&&Array.isArray(L.messages)?L.messages:[];try{te(D);}catch{}}catch{}}},onChatDelete:p=>{try{$.deleteChat(p),St(L=>L+1),p===_&&He();}catch{}},loadChatsIndex:()=>mn,historyPopupRef:sn}),jsxRuntime.jsx(Xt,{isOpen:dn,resolvedColors:A,onConfirm:xn,onCancel:bn,editProcessContent:T}),jsxRuntime.jsx("style",{children:`
|
|
34
27
|
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
|
|
35
28
|
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
|
|
30
|
+
/* Markdown Table Styles */
|
|
31
|
+
.chat-scroll-container .x-markdown-dark table,
|
|
32
|
+
.chat-scroll-container .x-markdown-light table,
|
|
33
|
+
.chat-scroll-container table {
|
|
34
|
+
width: 100%;
|
|
35
|
+
border-collapse: separate;
|
|
36
|
+
border-spacing: 0;
|
|
37
|
+
border-radius: 8px;
|
|
38
|
+
overflow: hidden;
|
|
39
|
+
border: 1px solid var(--hsafa-border);
|
|
40
|
+
margin: 16px 0;
|
|
41
|
+
font-size: 14px;
|
|
42
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
43
|
+
}
|
|
44
|
+
.chat-scroll-container th,
|
|
45
|
+
.chat-scroll-container td {
|
|
46
|
+
padding: 12px 16px;
|
|
47
|
+
text-align: left;
|
|
48
|
+
border-bottom: 1px solid var(--hsafa-border);
|
|
49
|
+
border-right: 1px solid var(--hsafa-border);
|
|
50
|
+
line-height: 1.5;
|
|
51
|
+
}
|
|
52
|
+
.chat-scroll-container th:last-child,
|
|
53
|
+
.chat-scroll-container td:last-child {
|
|
54
|
+
border-right: none;
|
|
55
|
+
}
|
|
56
|
+
.chat-scroll-container tr:last-child td {
|
|
57
|
+
border-bottom: none;
|
|
58
|
+
}
|
|
59
|
+
.chat-scroll-container th {
|
|
60
|
+
background-color: var(--hsafa-hover);
|
|
61
|
+
color: var(--hsafa-text);
|
|
62
|
+
font-weight: 600;
|
|
63
|
+
font-size: 13px;
|
|
64
|
+
text-transform: uppercase;
|
|
65
|
+
letter-spacing: 0.02em;
|
|
66
|
+
}
|
|
67
|
+
.chat-scroll-container td {
|
|
68
|
+
background-color: transparent;
|
|
69
|
+
color: var(--hsafa-text);
|
|
70
|
+
}
|
|
71
|
+
/* Row hover effect */
|
|
72
|
+
.chat-scroll-container tr:hover td {
|
|
73
|
+
background-color: var(--hsafa-hover);
|
|
74
|
+
transition: background-color 0.15s ease;
|
|
75
|
+
}
|
|
76
|
+
/* Ensure code blocks don't overflow */
|
|
77
|
+
.chat-scroll-container pre {
|
|
78
|
+
border-radius: 8px;
|
|
79
|
+
overflow-x: auto;
|
|
80
|
+
margin: 12px 0;
|
|
81
|
+
border: 1px solid var(--hsafa-border);
|
|
82
|
+
}
|
|
83
|
+
`})]}),Cn=jsxRuntime.jsxs("div",{style:{position:"fixed",right:0,top:0,bottom:0,width:"420px",display:"flex",flexDirection:"column",padding:"24px 16px",color:A.textColor,gap:"16px",zIndex:1e3,transform:at?"translateX(0)":"translateX(100%)",transition:"transform 0.25s ease-out, width 0.2s ease-out"},children:[jsxRuntime.jsx(Jn,{title:O("general.agent"),alwaysOpen:false,streaming:j,dir:G||"ltr",resolvedColors:A,onNew:He,onToggleHistory:fn,onClose:uo,historyBtnRef:an,t:O}),jsxRuntime.jsx("div",{ref:un,className:"chat-scroll-container",style:{flex:"1",overflowY:"auto",overflowX:"hidden",padding:"16px 4px 16px 4px",display:"flex",flexDirection:"column",gap:"16px",scrollBehavior:"smooth","--hsafa-primary":A.primaryColor,"--hsafa-border":A.borderColor,"--hsafa-card":A.cardBackground,"--hsafa-text":A.textColor,"--hsafa-muted":A.mutedTextColor,"--hsafa-bg":A.backgroundColor,"--hsafa-hover":A.hoverBackground,"--hsafa-input-bg":A.inputBackground,"--hsafa-accent":A.accentColor},children:ee.length===0?jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"16px",padding:"16px 0"},children:s&&s.length>0?jsxRuntime.jsx(_t,{prompts:s,onSelect:p=>J(p),resolvedColors:A,disabled:j}):jsxRuntime.jsx("div",{style:{padding:"32px",textAlign:"center",color:A.mutedTextColor,fontSize:"14px"},children:O("messages.empty")})}):jsxRuntime.jsx(Gt,{chatMessages:ee,isLoading:j,openReasoningIds:ln,toggleReasoning:p=>cn(L=>{let D=new Set(L);return D.has(p)?D.delete(p):D.add(p),D}),resolvedColors:A,t:O,onUserMessageClick:yn,HsafaUI:Z,onUIError:Jt,onUISuccess:nt,addToolResult:p=>Zt?.addToolResult?.(p),editableMessageIcon:T?.message_icon})}),jsxRuntime.jsxs("div",{style:{position:"sticky",bottom:"0",marginTop:"auto",paddingBottom:"8px"},children:[i&&so__default.default.createElement(i,{}),rt&&jsxRuntime.jsxs("div",{style:{padding:"8px 12px",marginBottom:"8px",backgroundColor:"#ef4444",color:"#fff",borderRadius:"8px",fontSize:"13px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsx("span",{children:rt}),jsxRuntime.jsx("button",{onClick:()=>Ie(null),style:{background:"none",border:"none",color:"#fff",cursor:"pointer",padding:"2px"},children:"\xD7"})]}),Ae&&jsxRuntime.jsxs("div",{style:{padding:"8px 12px",marginBottom:"8px",backgroundColor:"#ef4444",color:"#fff",borderRadius:"8px",fontSize:"13px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsxs("span",{children:["An error occurred: ",Ae.message||"Please try again."]}),jsxRuntime.jsx("button",{onClick:()=>window.location.reload(),style:{background:"none",border:"1px solid #fff",color:"#fff",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px"},children:"Refresh"})]}),jsxRuntime.jsx(jt,{input:ie,setInput:J,textareaRef:Ue,fileInputRef:Ne,isLoading:j,uploading:Qt,attachments:ze,formatBytes:en,handleRemoveAttachment:tn,onFileInputChange:hn,onSend:gn,onStop:()=>tt(),status:xe,t:O,resolvedColors:A})]}),jsxRuntime.jsx(Vt,{historyOpen:kt,historySearch:wt,currentChatId:_,refreshKey:It,resolvedColors:A,onClose:()=>Le(false),onSearchChange:Tt,onChatSelect:p=>{if(Le(false),p&&p!==_&&(we(),Te(p),k===void 0)){try{$.saveCurrentChatId(p);}catch{}try{let L=$.loadChat(p),D=L&&Array.isArray(L.messages)?L.messages:[];try{te(D);}catch{}}catch{}}},onChatDelete:p=>{try{$.deleteChat(p),St(L=>L+1),p===_&&He();}catch{}},loadChatsIndex:()=>$.loadChatsIndex(),historyPopupRef:sn}),jsxRuntime.jsx(Xt,{isOpen:dn,resolvedColors:A,onConfirm:xn,onCancel:bn,editProcessContent:T}),jsxRuntime.jsx("style",{children:`
|
|
84
|
+
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
|
|
85
|
+
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
|
|
86
|
+
|
|
87
|
+
/* Markdown Table Styles */
|
|
88
|
+
.chat-scroll-container .x-markdown-dark table,
|
|
89
|
+
.chat-scroll-container .x-markdown-light table,
|
|
90
|
+
.chat-scroll-container table {
|
|
91
|
+
width: 100%;
|
|
92
|
+
border-collapse: separate;
|
|
93
|
+
border-spacing: 0;
|
|
94
|
+
border-radius: 8px;
|
|
95
|
+
overflow: hidden;
|
|
96
|
+
border: 1px solid var(--hsafa-border);
|
|
97
|
+
margin: 16px 0;
|
|
98
|
+
font-size: 14px;
|
|
99
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
100
|
+
}
|
|
101
|
+
.chat-scroll-container th,
|
|
102
|
+
.chat-scroll-container td {
|
|
103
|
+
padding: 12px 16px;
|
|
104
|
+
text-align: left;
|
|
105
|
+
border-bottom: 1px solid var(--hsafa-border);
|
|
106
|
+
border-right: 1px solid var(--hsafa-border);
|
|
107
|
+
line-height: 1.5;
|
|
108
|
+
}
|
|
109
|
+
.chat-scroll-container th:last-child,
|
|
110
|
+
.chat-scroll-container td:last-child {
|
|
111
|
+
border-right: none;
|
|
112
|
+
}
|
|
113
|
+
.chat-scroll-container tr:last-child td {
|
|
114
|
+
border-bottom: none;
|
|
115
|
+
}
|
|
116
|
+
.chat-scroll-container th {
|
|
117
|
+
background-color: var(--hsafa-hover);
|
|
118
|
+
color: var(--hsafa-text);
|
|
119
|
+
font-weight: 600;
|
|
120
|
+
font-size: 13px;
|
|
121
|
+
text-transform: uppercase;
|
|
122
|
+
letter-spacing: 0.02em;
|
|
123
|
+
}
|
|
124
|
+
.chat-scroll-container td {
|
|
125
|
+
background-color: transparent;
|
|
126
|
+
color: var(--hsafa-text);
|
|
127
|
+
}
|
|
128
|
+
/* Row hover effect */
|
|
129
|
+
.chat-scroll-container tr:hover td {
|
|
130
|
+
background-color: var(--hsafa-hover);
|
|
131
|
+
transition: background-color 0.15s ease;
|
|
132
|
+
}
|
|
133
|
+
/* Ensure code blocks don't overflow */
|
|
134
|
+
.chat-scroll-container pre {
|
|
135
|
+
border-radius: 8px;
|
|
136
|
+
overflow-x: auto;
|
|
137
|
+
margin: 12px 0;
|
|
138
|
+
border: 1px solid var(--hsafa-border);
|
|
139
|
+
}
|
|
140
|
+
`})]});return v?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Ve,{}),po]}):typeof document<"u"&&document.body?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Ve,{}),reactDom.createPortal(Cn,document.body),jsxRuntime.jsx(kn,{show:!at,onClick:()=>{rn(true);try{$.saveShowChatPreference(!0);}catch{}},resolvedColors:A,floatingButtonPosition:b})]}):Cn}var lo={dark:{primaryColor:"#4D78FF",backgroundColor:"#0B0B0F",borderColor:"#2A2C33",textColor:"#EDEEF0",accentColor:"#17181C",mutedTextColor:"#9AA0A6",inputBackground:"#17181C",cardBackground:"#121318",hoverBackground:"#1c1e25"},light:{primaryColor:"#2563EB",backgroundColor:"#FFFFFF",borderColor:"#E5E7EB",textColor:"#111827",accentColor:"#F9FAFB",mutedTextColor:"#6B7280",inputBackground:"#F9FAFB",cardBackground:"#F3F4F6",hoverBackground:"#F3F4F6"}};function Hr({children:e,theme:t="dark",primaryColor:n,backgroundColor:r,borderColor:o,textColor:l,mutedTextColor:u,enableBorderAnimation:c=true,borderRadius:x=16,enableContentBorder:I=true,className:d="",enableMargin:S=true,chatWidth:C=420,dir:b="ltr"}){let{isAnyStreaming:a,isAnyChatOpen:w,dir:i,theme:T}=le(),s=(b??i)||"ltr",g=(t??T)||"dark",h=so.useRef(`content-container-${Date.now()}-${Math.random().toString(36).slice(2,8)}`),[k,y]=so.useState(false);so.useEffect(()=>{let V=setTimeout(()=>y(true),50);return ()=>clearTimeout(V)},[]);let m=lo[g],v={primaryColor:n||m.primaryColor,backgroundColor:r||m.backgroundColor,borderColor:o||m.borderColor,textColor:l||m.textColor,accentColor:m.accentColor,mutedTextColor:u||m.mutedTextColor,inputBackground:m.inputBackground,cardBackground:m.cardBackground,hoverBackground:m.hoverBackground},M=typeof x=="number"?`${x}px`:x,f=typeof C=="number"?`${C}px`:C,F=S&&w?s==="rtl"?{marginLeft:f}:{marginRight:f}:{},G=S&&w?`calc(100% - ${f})`:"100%";return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:d,style:{width:G,height:"100%",transition:k?"all 0.2s ease-out":"none",padding:w&&I?"16px":"0",...F},children:jsxRuntime.jsx("div",{style:{position:"relative",width:"100%",height:"100%",transition:k?"all 0.2s ease-out":"none",borderRadius:w?M:"0",border:w&&a&&c?"none":w?`1px solid ${v.borderColor}`:"none",padding:w&&a&&c?"1.5px":"0",background:w&&a&&c?`linear-gradient(120deg, ${v.primaryColor}dd 0%, ${v.primaryColor}88 25%, ${v.primaryColor}00 50%, ${v.primaryColor}88 75%, ${v.primaryColor}dd 100%)`:"transparent",backgroundSize:w&&a&&c?"300% 300%":"auto",animation:w&&a&&c?`${h.current}-border-flow 3s ease-in-out infinite`:"none",filter:w&&a&&c?`drop-shadow(0 0 10px ${v.primaryColor}40)`:"none"},children:jsxRuntime.jsx("div",{className:"hsafa-content-container",style:{width:"100%",height:"100%",borderRadius:w&&I?M:"0",backgroundColor:w&&I?v.backgroundColor:"transparent",overflow:"auto",position:"relative",isolation:"isolate",contain:"layout style paint",transform:"translateZ(0)",scrollbarWidth:"thin",scrollbarColor:`${v.mutedTextColor}40 transparent`},children:e})})}),jsxRuntime.jsx("style",{children:`
|
|
141
|
+
@keyframes ${h.current}-border-flow {
|
|
38
142
|
0% { background-position: 0% 50%; }
|
|
39
143
|
50% { background-position: 100% 50%; }
|
|
40
144
|
100% { background-position: 0% 50%; }
|
|
41
145
|
}
|
|
42
|
-
`})," "]})}var
|
|
146
|
+
`})," "]})}var Yt=class{constructor(){this.components=new Map;}register(t,n){this.components.set(t,n);}unregister(t){this.components.delete(t);}get(t){return this.components.get(t)}has(t){return this.components.has(t)}clear(){this.components.clear();}getRegisteredNames(){return Array.from(this.components.keys())}},Dr=new Yt;exports.Button=zr;exports.ContentContainer=Hr;exports.CursorController=Ve;exports.FillActiveInput=qe;exports.FloatingChatButton=kn;exports.HsafaChat=Er;exports.HsafaProvider=xo;exports.componentRegistry=Dr;exports.controlCursor=Me;exports.getDomComponents=_e;exports.guideCursor=Me;exports.useAutoScroll=In;exports.useChatStorage=Wt;exports.useFileUpload=Rn;exports.useHsafa=le;exports.useHsafaAgent=zt;exports.useMessageEditor=er;//# sourceMappingURL=index.cjs.map
|
|
43
147
|
//# sourceMappingURL=index.cjs.map
|