@bitpalm/ai-agents 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.cjs CHANGED
@@ -1,13 +1,13 @@
1
- "use strict";var Ie=Object.defineProperty;var kt=Object.getOwnPropertyDescriptor;var Pt=Object.getOwnPropertyNames;var _t=Object.prototype.hasOwnProperty;var Mt=(n,t)=>{for(var r in t)Ie(n,r,{get:t[r],enumerable:!0})},Bt=(n,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let u of Pt(t))!_t.call(n,u)&&u!==r&&Ie(n,u,{get:()=>t[u],enumerable:!(i=kt(t,u))||i.enumerable});return n};var $t=n=>Bt(Ie({},"__esModule",{value:!0}),n);var tn={};Mt(tn,{BitPalmAgent:()=>Zt,BitPalmApiError:()=>B,useBitPalmChat:()=>en});module.exports=$t(tn);var E=require("react");function at(n){if(n===!1)return"off";if(typeof n=="string"){let t=n.trim().toLowerCase();if(["false","off","0","no","none"].includes(t))return"off";if(t==="events")return"events"}return"bubble"}function lt(n,t){let r=n.createElement("div");r.setAttribute("data-bitpalm-trigger",""),r.style.cssText=`max-width:240px;background:#fff;border-radius:16px;padding:12px 32px 12px 12px;box-shadow:0 2px 20px rgba(0,0,0,0.08);cursor:pointer;z-index:${t.zIndex-1};font-family:system-ui,sans-serif;animation:_bp_fade .3s;`,r.style.position="fixed",r.style.right="24px",r.style.bottom=`${t.bottom}px`;let i=n.createElement("p");i.style.cssText="font-size:14px;color:#1f2937;margin:0;",i.textContent=t.message;let u=n.createElement("div");u.style.cssText="position:absolute;bottom:-8px;right:20px;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #fff;";let g=n.createElement("button");return g.type="button",g.setAttribute("aria-label","Close"),g.style.cssText="position:absolute;top:-8px;right:-8px;width:28px;height:28px;border-radius:50%;background:#fff;border:none;box-shadow:0 1px 4px rgba(0,0,0,0.1);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:#9ca3af;",g.textContent="\u2715",g.onclick=p=>{p.stopPropagation(),t.onDismiss()},r.onclick=()=>t.onEngage(),r.append(i,u,g),r}var Ot=["dark","dark-mode","dark-theme","theme-dark"],Rt=["light","light-mode","light-theme","theme-light"],ut=["data-theme","data-color-scheme","data-color-mode","data-mode","data-bs-theme"],mt="(prefers-color-scheme: dark)";function ue(n){return n==="light"||n==="dark"?n:"auto"}function ct(n){if(!n)return null;if(Ot.some(t=>n.classList.contains(t)))return"dark";if(Rt.some(t=>n.classList.contains(t)))return"light";for(let t of ut){let r=(n.getAttribute(t)||"").toLowerCase();if(r.includes("dark"))return"dark";if(r.includes("light"))return"light"}return null}function Ae(n){let t=n/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4}function dt(n,t){if(!n)return null;let r=t.getComputedStyle(n).backgroundColor.match(/rgba?\(([^)]+)\)/);if(!r)return null;let[i,u,g,p=1]=r[1].split(/[\s,/]+/).filter(Boolean).map(Number);return[i,u,g,p].some(c=>Number.isNaN(c))||p<.5?null:.2126*Ae(i)+.7152*Ae(u)+.0722*Ae(g)<.2?"dark":"light"}function Ht(n,t){let r=t.getComputedStyle(n.documentElement).colorScheme||"",i=n.querySelector('meta[name="color-scheme"]')?.getAttribute("content")||"",u=`${r} ${i}`.toLowerCase();return u.includes("dark")?u.includes("light")?t.matchMedia?.(mt).matches?"dark":"light":"dark":null}function Z(n=document,t=window){return ct(n.documentElement)??ct(n.body)??dt(n.body,t)??dt(n.documentElement,t)??Ht(n,t)??"light"}function Le(n,t=document,r=window){let i=Z(t,r),u=!1,g=()=>{u=!1;let d=Z(t,r);d!==i&&(i=d,n(d))},p=()=>{u||(u=!0,typeof r.requestAnimationFrame=="function"?r.requestAnimationFrame(g):setTimeout(g,16))},b=typeof MutationObserver<"u"?new MutationObserver(p):null,c={attributes:!0,attributeFilter:["class","style",...ut]};b?.observe(t.documentElement,c),t.body&&b?.observe(t.body,c);let w=typeof r.matchMedia=="function"?r.matchMedia(mt):null;return w?.addEventListener?.("change",p),()=>{b?.disconnect(),w?.removeEventListener?.("change",p)}}var Dt="https://agents.bitpalm.ai",A="_bp_",Ut=new Set(["password","file","checkbox","radio","submit","button","reset","image"]),Nt=8e3,ft=4096,gt=`${A}identify_signature`,pt=`${A}identify_fingerprint`,ht=`${A}identify_sent_at`,yt="0 4px 14px rgba(0,0,0,0.18)";function Wt(n){return[n.external_user_id||"",n.email||"",n.phone||"",n.name||"",n.company||"",n.signature||"",n.signed_at!=null?String(n.signed_at):"",n.signature_version||"",n.identify_source||""].join("|").toLowerCase()}function h(n,t=180){return n?n.replace(/\s+/g," ").trim().slice(0,t):""}function jt(n){return n?` ${n.toLowerCase().replace(/[_-]+/g," ").replace(/[^a-z0-9\s@.]/g," ").replace(/\s+/g," ").trim()} `:""}function Y(n,t){for(let r of t)if(n.includes(r))return!0;return!1}function D(n){return/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/i.test(n)}function R(n){let t=h(n,50);if(!t)return"";let r=t.startsWith("+"),i=t.replace(/\D/g,"");return i.length<6?"":`${r?"+":""}${i.slice(0,20)}`}function bt(n){let t=h(n,140).toLowerCase();return!t||!D(t)?"":t}function J(n,t){for(let r of t){let i=n.querySelector(r),u=h(i?.value);if(u)return u}return""}function Ft(n){return h(n.getAttribute("data-bp-field")||n.getAttribute("data-bitpalm-field"),64).toLowerCase().replace(/[_\s]+/g,"-")}function qt(n){return n.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function zt(n,t){let r=[],i=(c,w=140)=>{let d=h(c,w);d&&r.push(d)};i(t.name),i(t.id),i(t.getAttribute("autocomplete")),i(t.getAttribute("placeholder")),i(t.getAttribute("aria-label")),i(t.getAttribute("data-field")),i(t.getAttribute("data-name")),i(t.getAttribute("data-label")),i(t.getAttribute("data-bp-field")),i(t.getAttribute("data-bitpalm-field"));let u=new Set,g=c=>{let w=h(c,200);!w||u.has(w)||(u.add(w),r.push(w))};for(let c of Array.from(t.labels||[]))g(c.textContent);if(t.id){let c=n.querySelector(`label[for="${qt(t.id)}"]`);g(c?.textContent)}let p=t.closest("label");g(p?.textContent);let b=t.getAttribute("aria-labelledby");if(b)for(let c of b.split(/\s+/)){if(!c)continue;let w=n.ownerDocument.getElementById(c);g(w?.textContent)}return r}function Yt(n){let t=h(J(n,["[data-bp-email]","[data-bitpalm-email]"]),140).toLowerCase(),r=R(J(n,["[data-bp-phone]","[data-bitpalm-phone]"])),i=h(J(n,["[data-bp-name]","[data-bitpalm-name]","[data-bp-full-name]","[data-bitpalm-full-name]"])),u=h(J(n,["[data-bp-first-name]","[data-bitpalm-first-name]"])),g=h(J(n,["[data-bp-last-name]","[data-bitpalm-last-name]"])),p=h(J(n,["[data-bp-company]","[data-bitpalm-company]"]));for(let d of Array.from(n.elements)){if(!(d instanceof HTMLInputElement||d instanceof HTMLTextAreaElement||d instanceof HTMLSelectElement)||d.disabled||d instanceof HTMLInputElement&&Ut.has(d.type.toLowerCase()))continue;let y=Ft(d),k=d.hasAttribute("data-bp-email")||d.hasAttribute("data-bitpalm-email")||d.hasAttribute("data-bp-phone")||d.hasAttribute("data-bitpalm-phone")||d.hasAttribute("data-bp-name")||d.hasAttribute("data-bitpalm-name")||d.hasAttribute("data-bp-full-name")||d.hasAttribute("data-bitpalm-full-name")||d.hasAttribute("data-bp-first-name")||d.hasAttribute("data-bitpalm-first-name")||d.hasAttribute("data-bp-last-name")||d.hasAttribute("data-bitpalm-last-name")||d.hasAttribute("data-bp-company")||d.hasAttribute("data-bitpalm-company")||!!y;if(d instanceof HTMLInputElement&&d.type.toLowerCase()==="hidden"&&!k)continue;let l=h(d.value);if(!l)continue;let m=d instanceof HTMLInputElement?d.type.toLowerCase():"",o=jt(zt(n,d).join(" "));if(!t&&y==="email"&&D(l)){t=l.toLowerCase();continue}if(!r&&(y==="phone"||y==="tel"||y==="mobile"||y==="whatsapp")){let I=R(l);if(I){r=I;continue}}if(!p&&y==="company"){p=h(l,160);continue}if(!u&&(y==="first-name"||y==="firstname")){u=h(l,100);continue}if(!g&&(y==="last-name"||y==="lastname"||y==="surname")){g=h(l,100);continue}if(!i&&(y==="name"||y==="full-name"||y==="fullname")){!D(l)&&!R(l)&&(i=h(l,140));continue}let v=m==="email"||Y(o,[" email "," e mail "," mail "," email adresse "," mailadresse "," correo "]),M=m==="tel"||Y(o,[" phone "," phone number "," mobile "," tel "," telefon "," telefonnummer "," whatsapp "," handy "," kontakt "," nummer "]),C=Y(o,[" company "," company name "," firma "," firmenname "," organization "," organisation "," business "," unternehmen "," agency "," brokerage "]),f=Y(o,[" first name "," firstname "," given name "," givenname "," vorname "," fname "]),T=Y(o,[" last name "," lastname "," family name "," familyname "," surname "," nachname "," lname "]),S=Y(o,[" full name "," fullname "," contact name "," name "])&&!v&&!M;if(!t&&v&&D(l)){t=l.toLowerCase();continue}if(!r&&M){let I=R(l);if(I){r=I;continue}}if(!p&&C){p=h(l,160);continue}if(!u&&f){u=h(l,100);continue}if(!g&&T){g=h(l,100);continue}if(!i&&S&&!D(l)&&!R(l)){i=h(l,140);continue}!t&&D(l)&&(t=l.toLowerCase())}if(i&&(D(i)||R(i))&&(i=""),p&&(D(p)||R(p))&&(p=""),i||(i=h([u,g].filter(Boolean).join(" "),140)),i&&t&&i.toLowerCase()===t.toLowerCase()&&(i=""),!!!(t||r)&&!!!(i&&p))return null;let w={...i?{name:i}:{},...t?{email:t}:{},...r?{phone:r}:{},...p?{company:p}:{}};return Object.keys(w).length>0?w:null}function Jt(){if(typeof document<"u"){let n=document.documentElement.lang;if(n)return n.slice(0,2).toLowerCase()}return"en"}function ke(n,t=1200){if(typeof window<"u"&&"requestIdleCallback"in window){window.requestIdleCallback(n,{timeout:t});return}setTimeout(n,Math.min(t,300))}function Pe(){if(typeof window>"u")return!1;let n=typeof navigator<"u"?navigator.userAgent:"";if(/Android|iPhone|iPad|iPod|IEMobile|Windows Phone|Mobile/i.test(n))return!0;let r=window.matchMedia("(pointer: coarse)").matches,i=window.matchMedia("(hover: none)").matches,u=Math.min(window.screen?.width||window.innerWidth,window.screen?.height||window.innerHeight);return r&&i&&u<=900}function vt(n){let{slug:t,locale:r=Jt(),baseUrl:i=Dt,token:u,zIndex:g=9999,autoIdentify:p=!0,launcher:b=!0}=n,c=document,w=ue(n.theme),d=w==="auto"?Z():w,y=null,k=at(n.triggers),l=k,m=null,o=c.createElement("iframe");o.setAttribute("data-bitpalm-chat","");let v=`${i}/t/${t}/widget`,M=new URLSearchParams({locale:r,theme:d});u&&M.set("token",u),l==="off"&&M.set("triggers","off"),o.src=`${v}?${M.toString()}`,o.allow="clipboard-write; microphone",o.setAttribute("allowtransparency","true"),o.loading="lazy",o.style.cssText=`position:fixed;bottom:0;right:0;width:1px;height:1px;border:none;z-index:${g};background:transparent;color-scheme:normal;opacity:0;pointer-events:none;`;let C=new URL(o.src).origin,f=c.createElement("div");if(f.setAttribute("role","button"),f.setAttribute("aria-label","Chat"),f.setAttribute("data-bitpalm-launcher",""),f.style.cssText=`position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;display:none;align-items:center;justify-content:center;cursor:pointer;z-index:${g-1};background:#171717;box-shadow:${yt};transition:transform .2s,opacity .3s;opacity:0;`,f.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z"/></svg>',f.onmouseenter=()=>{f.style.transform="scale(1.05)"},f.onmouseleave=()=>{f.style.transform="scale(1)"},f.onclick=()=>Q(),b&&c.body.appendChild(f),!c.getElementById("_bp_fade")){let e=c.createElement("style");e.id="_bp_fade",e.textContent="@keyframes _bp_fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}",c.head.appendChild(e)}let T=null,S=!1,I=!1,U=!1,G=!1,ee=!1,te=()=>{U||(U=!0,c.body.appendChild(o))},ne=!1,fe=0,oe={overflow:"",overscrollBehavior:""},P={overflow:"",overscrollBehavior:"",position:"",top:"",left:"",right:"",width:""},_e=()=>{if(ne||!Pe())return;let s=c.documentElement,a=c.body;fe=window.scrollY||window.pageYOffset||0,oe.overflow=s.style.overflow,oe.overscrollBehavior=s.style.overscrollBehavior,P.overflow=a.style.overflow,P.overscrollBehavior=a.style.overscrollBehavior,P.position=a.style.position,P.top=a.style.top,P.left=a.style.left,P.right=a.style.right,P.width=a.style.width,s.style.overflow="hidden",s.style.overscrollBehavior="none",a.style.overflow="hidden",a.style.overscrollBehavior="none",a.style.position="fixed",a.style.top=`-${fe}px`,a.style.left="0",a.style.right="0",a.style.width="100%",ne=!0},q=()=>{if(!ne)return;let e=c.documentElement,s=c.body;e.style.overflow=oe.overflow,e.style.overscrollBehavior=oe.overscrollBehavior,s.style.overflow=P.overflow,s.style.overscrollBehavior=P.overscrollBehavior,s.style.position=P.position,s.style.top=P.top,s.style.left=P.left,s.style.right=P.right,s.style.width=P.width,window.scrollTo(0,fe),ne=!1},Me=()=>{let e=Pe();o.style.display==="none"&&(o.style.display=""),e?(o.style.width="100vw",o.style.height="100dvh",o.style.left="0",o.style.top="0",o.style.bottom="0",o.style.right="0",_e()):(o.style.width="420px",o.style.height="620px",o.style.bottom="24px",o.style.right="24px",o.style.left="",o.style.top="",q()),o.style.opacity="1",o.style.pointerEvents="auto"},H=()=>{T&&(T.remove(),T=null)},re=()=>{m!==null&&(m=null,K("trigger_hidden"))},Be=()=>{o.contentWindow?.postMessage({type:"bitpalm-triggers",enabled:l!=="off"},"*")},ie=()=>{},ge=()=>{},z=!1,N=new Map;function K(e,s){let a=N.get(e);if(a)for(let x of a)try{x(s)}catch{}}let $e=e=>{if(e.origin===C){if(e.data?.type==="bitpalm-widget-config"){I=!1,S=!0,o.style.display==="none"&&(o.style.display=""),e.data.primaryColor&&(f.style.background=e.data.primaryColor,f.style.boxShadow=e.data.chatShadow==="none"?"none":yt);let s=e.data.chatButtonIconColor||"black";if(e.data.chatButtonIconSvg){f.innerHTML="";let a=c.createElement("span");a.style.cssText=`display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:${s}`;let L=new DOMParser().parseFromString(e.data.chatButtonIconSvg,"image/svg+xml").querySelector("svg");L?(L.querySelectorAll("script,foreignObject").forEach(j=>j.remove()),L.querySelectorAll("*").forEach(j=>{for(let F of[...j.attributes])(F.name.startsWith("on")||F.value&&F.value.includes("javascript:"))&&j.removeAttribute(F.name)}),L.setAttribute("width","24"),L.setAttribute("height","24"),L.style.display="block",a.appendChild(L)):a.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z"/></svg>',f.appendChild(a)}else{let a=f.querySelector("svg");a&&(a.style.stroke=s)}b&&(f.style.display="flex",requestAnimationFrame(()=>{f.style.opacity="1"})),Be()}if(e.data?.type==="bitpalm-widget-resize"){let s=e.data.width>0,a=z;z=s,s&&!a&&K("widget_opened"),!s&&a&&K("widget_closed");let x=Pe();s?(o.style.width=x?"100vw":`${e.data.width}px`,o.style.height=x?"100dvh":`${e.data.height}px`,x?(o.style.left="0",o.style.top="0",o.style.bottom="0",o.style.right="0",_e()):q(),o.style.opacity="1",o.style.pointerEvents="auto"):(q(),o.style.width="1px",o.style.height="1px",o.style.left="",o.style.top="",o.style.opacity="0",o.style.pointerEvents="none"),f.style.display=s||!b?"none":"flex"}if(e.data?.type==="bitpalm-trigger-show"){if(I||!S||l==="off")return;let s=typeof e.data.message=="string"?e.data.message:"";if(!s)return;if(l==="events"){m=s,K("trigger_shown",{message:s,triggerId:e.data.triggerId,triggerType:e.data.triggerType});return}H(),T=lt(c,{message:s,zIndex:g,bottom:b?90:24,onDismiss:()=>{H(),o.contentWindow?.postMessage({type:"bitpalm-trigger-dismiss"},"*")},onEngage:()=>{if(H(),f.style.display="none",Me(),te(),!G){ee=!0;return}o.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:s},"*")}}),c.body.appendChild(T)}e.data?.type==="bitpalm-trigger-hide"&&(H(),re()),e.data?.type==="bitpalm-request-context"&&ie(),e.data?.type==="bitpalm-chat-event"&&e.data.event&&K(e.data.event,e.data.data),e.data?.type==="bitpalm-widget-blocked"&&(I=!0,S=!1,f.style.display="none",H(),re(),q(),o.style.display="none")}};window.addEventListener("message",$e);let $=!1;try{$=localStorage.getItem(`${A}optout`)==="1"}catch{}let se=`${A}vid`,_="";if(!$){try{_=localStorage.getItem(se)||""}catch{}if(!_){let e=c.cookie.match(new RegExp(`(?:^|; )${se}=([^;]+)`));_=e?decodeURIComponent(e[1]):""}_||(_=crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,11)}`);try{localStorage.setItem(se,_)}catch{}try{c.cookie=`${se}=${encodeURIComponent(_)};path=/;max-age=31536000;SameSite=Lax`}catch{}}$||ke(()=>{try{let e=new URLSearchParams(location.search),s={};for(let O of["utm_source","utm_medium","utm_campaign","utm_term","utm_content"]){let L=e.get(O);L&&(s[O]=L)}let a=JSON.stringify({tenant_slug:t,visitor_id:_,url:location.href,referrer:c.referrer||void 0,...Object.keys(s).length>0?{utm:s}:{}}),x=`${i}/api/widget/impression`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(x,new Blob([a],{type:"application/json"})):fetch(x,{method:"POST",body:a,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}},2e3);let pe="",he="",ye=0;try{pe=sessionStorage.getItem(gt)||"",he=sessionStorage.getItem(pt)||"";let e=parseInt(sessionStorage.getItem(ht)||"0",10);Number.isFinite(e)&&e>0&&(ye=e)}catch{}let Oe=(e,s="")=>{if($||!_)return;let a={},x=h(e.name,140),O=bt(e.email),L=R(e.phone),j=h(e.company,160),F=h(e.external_user_id,140),rt=h(e.signature,260),Se=Number(e.signed_at);if(x&&(a.name=x),O&&(a.email=O),L&&(a.phone=L),j&&(a.company=j),F&&(a.external_user_id=F),rt&&(a.signature=rt),Number.isFinite(Se)&&Se>0&&(a.signed_at=Math.floor(Se)),(e.signature_version==="v1"||a.signature)&&(a.signature_version="v1"),(e.identify_source==="manual"||e.identify_source==="form")&&(a.identify_source=e.identify_source),!a.name&&!a.email&&!a.phone&&!a.company&&!a.external_user_id)return;let de=Wt(a),Te=[s.toLowerCase(),de].filter(Boolean).join("|"),Ce=Date.now();if(!(Ce-ye<Nt&&(Te===pe||de===he))){pe=Te,he=de,ye=Ce;try{sessionStorage.setItem(gt,Te),sessionStorage.setItem(pt,de),sessionStorage.setItem(ht,String(Ce))}catch{}try{let it=JSON.stringify({tenant_slug:t,visitor_id:_,url:location.href,referrer:c.referrer||void 0,...a}),st=`${i}/api/widget/identify`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(st,new Blob([it],{type:"application/json"})):fetch(st,{method:"POST",body:it,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}}},Re=e=>{if($||!p||!_)return;let s=e.target instanceof HTMLFormElement?e.target:e.target instanceof Element?e.target.closest("form"):null;if(!(s instanceof HTMLFormElement))return;let a=(s.getAttribute("data-bp-identify")||s.getAttribute("data-bitpalm-identify")||"").toLowerCase();if(a==="off"||a==="false"||a==="0")return;let x=Yt(s);if(!x)return;let O=[s.getAttribute("id")||"",s.getAttribute("name")||"",s.getAttribute("action")||""].join("|");Oe({...x,identify_source:"form"},O)};!$&&p&&c.addEventListener("submit",Re,!0);let V=parseInt(sessionStorage.getItem(`${A}pages`)||"0")+1;sessionStorage.setItem(`${A}pages`,String(V));let W=JSON.parse(sessionStorage.getItem(`${A}hist`)||"[]");W.push(location.href),W.length>20&&(W=W.slice(-20)),sessionStorage.setItem(`${A}hist`,JSON.stringify(W));let He=Date.now(),ae=parseInt(sessionStorage.getItem(`${A}site_start`)||"0");ae||(ae=He,sessionStorage.setItem(`${A}site_start`,String(ae)));let De=[];ie=()=>{let e=!1;try{e=!!localStorage.getItem(`${A}visited`)}catch{e=!1}if(o.contentWindow?.postMessage({type:"bitpalm-parent-context",url:location.href,title:c.title,returning:e,pageCount:V,pageHistory:W,loadedAt:He,siteStart:ae,locale:r,visitorId:$?"":_},"*"),Ke(),!e&&!$)try{localStorage.setItem(`${A}visited`,"1")}catch{}},o.addEventListener("load",()=>{G=!0,ie(),[120,450,1100].forEach(e=>{let s=setTimeout(()=>ie(),e);De.push(s)}),ee&&(ee=!1,ge())}),c.readyState==="loading"?c.addEventListener("DOMContentLoaded",()=>ke(te,1600),{once:!0}):ke(te,1600);let Ue=history.pushState.bind(history),Ne=history.replaceState.bind(history),le=()=>{V++,sessionStorage.setItem(`${A}pages`,String(V));let e=JSON.parse(sessionStorage.getItem(`${A}hist`)||"[]");if(e.push(location.href),e.length>20&&e.splice(0,e.length-20),W=e,sessionStorage.setItem(`${A}hist`,JSON.stringify(e)),o.contentWindow?.postMessage({type:"bitpalm-page-change",url:location.href,title:c.title,pageCount:V,pageHistory:e,loadedAt:Date.now()},"*"),!$)try{let s=JSON.stringify({tenant_slug:t,visitor_id:_,url:location.href}),a=`${i}/api/widget/impression`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(a,new Blob([s],{type:"application/json"})):fetch(a,{method:"POST",body:s,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}};history.pushState=function(...e){Ue(...e),le()},history.replaceState=function(...e){Ne(...e),le()},window.addEventListener("popstate",le);let We=-1,be,je=()=>{clearTimeout(be),be=setTimeout(()=>{let e=Math.max(c.documentElement.scrollHeight,c.body.scrollHeight)-window.innerHeight,s=e>0?Math.round(window.scrollY/e*100):100;s!==We&&(We=s,o.contentWindow?.postMessage({type:"bitpalm-scroll-depth",percent:s},"*"))},500)};window.addEventListener("scroll",je,{passive:!0});let Fe=e=>{e.clientY<=0&&o.contentWindow?.postMessage({type:"bitpalm-exit-intent"},"*")};c.addEventListener("mouseout",Fe);let ve,qe=!1,we=()=>{clearTimeout(ve),!qe&&(ve=setTimeout(()=>{qe=!0,o.contentWindow?.postMessage({type:"bitpalm-inactivity"},"*")},15e3))},ze=["mousemove","keydown","scroll","touchstart"];ze.forEach(e=>c.addEventListener(e,we,{passive:!0})),we(),ge=()=>{o.contentWindow?.postMessage({type:"bitpalm-open"},"*");let e=o.src.split("#")[0];o.src=`${e}#bp-open-${Date.now()}`};let Q=()=>{if(f.style.display="none",H(),Me(),te(),!G){ee=!0;return}if(m!==null){let e=m;re(),o.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:e},"*");return}ge()},Ye=e=>{l=e,e==="off"&&(H(),re()),Be()},Tt=()=>Ye("off"),Ct=()=>Ye(k==="off"?"bubble":k),xe=()=>{q(),o.contentWindow?.postMessage({type:"bitpalm-close"},"*")},Je=e=>{!e||typeof e!="object"||Oe({external_user_id:h(e.externalUserId,140)||void 0,name:h(e.name,140)||void 0,email:bt(e.email)||void 0,phone:R(e.phone)||void 0,company:h(e.company,160)||void 0,signature:h(e.signature,260)||void 0,signed_at:Number.isFinite(Number(e.signedAt))?Math.floor(Number(e.signedAt)):void 0,signature_version:e.signatureVersion==="v1"?"v1":void 0,identify_source:"manual"},"manual")},It=()=>{z?xe():Q()},At=()=>z,Ge=e=>{if(!e||typeof e!="string")return;let s=e.trim().slice(0,1e4);s&&(z||Q(),setTimeout(()=>{o.contentWindow?.postMessage({type:"bitpalm-send-message",message:s},"*")},z?50:500))};function Ke(){o.contentWindow?.postMessage({type:"bitpalm-theme",theme:d},"*")}let ce=e=>{e!==d&&(d=e,Ke())},Ve=e=>{w=ue(e),y?.(),y=null,w==="auto"?(y=Le(ce),ce(Z())):ce(w)};w==="auto"&&(y=Le(ce));let Qe=e=>{let s=e.detail;if(!s||typeof s!="object")return;let a=h(s.slug,120);a&&a!==t||Ve(ue(s.theme))};window.addEventListener("bitpalm-theme",Qe);let X={},Xe=e=>{if(!e||typeof e!="object"||Array.isArray(e))return;X={...X,...e};let s=JSON.stringify(X);s.length>ft&&console.warn(`[BitPalm] Custom context exceeds ${ft} bytes (${s.length}). It may be truncated.`),o.contentWindow?.postMessage({type:"bitpalm-custom-context",data:X},"*")},Lt=()=>{X={},o.contentWindow?.postMessage({type:"bitpalm-custom-context",data:{}},"*")},Ze=e=>{let a=e.detail;if(!a||typeof a!="object")return;let x=h(a.slug,120);if(x&&x!==t)return;let{slug:O,...L}=a;Xe(L)};window.addEventListener("bitpalm-context",Ze);let et=e=>{let a=e.detail;if(!a||typeof a!="object")return;let x=h(a.slug,120);x&&x!==t||Je(a)};window.addEventListener("bitpalm-identify",et);let Ee=e=>{let s=e.detail,a=h(s?.slug,120);return!a||a===t},tt=e=>{Ee(e)&&Q()},nt=e=>{Ee(e)&&xe()},ot=e=>{if(!Ee(e))return;let s=e.detail?.message;typeof s=="string"&&Ge(s)};return window.addEventListener("bitpalm-open",tt),window.addEventListener("bitpalm-close",nt),window.addEventListener("bitpalm-send",ot),{open:Q,close:xe,toggle:It,isOpen:At,identify:Je,context:Xe,resetContext:Lt,send:Ge,on:(e,s)=>(N.has(e)||N.set(e,new Set),N.get(e).add(s),()=>N.get(e)?.delete(s)),off:(e,s)=>{N.get(e)?.delete(s)},setTheme:Ve,disableTriggers:Tt,enableTriggers:Ct,destroy:()=>{window.removeEventListener("message",$e),window.removeEventListener("scroll",je),window.removeEventListener("popstate",le),c.removeEventListener("mouseout",Fe),c.removeEventListener("submit",Re,!0),ze.forEach(e=>c.removeEventListener(e,we)),clearTimeout(be),clearTimeout(ve),De.forEach(e=>clearTimeout(e)),history.pushState=Ue,history.replaceState=Ne,window.removeEventListener("bitpalm-identify",et),window.removeEventListener("bitpalm-context",Ze),window.removeEventListener("bitpalm-theme",Qe),window.removeEventListener("bitpalm-open",tt),window.removeEventListener("bitpalm-close",nt),window.removeEventListener("bitpalm-send",ot),y?.(),N.clear(),q(),H(),f.remove(),o.remove()}}}function Gt(n){let t=n.split(`
1
+ "use strict";var Le=Object.defineProperty;var Ot=Object.getOwnPropertyDescriptor;var Rt=Object.getOwnPropertyNames;var Ht=Object.prototype.hasOwnProperty;var Dt=(t,n)=>{for(var r in n)Le(t,r,{get:n[r],enumerable:!0})},Ut=(t,n,r,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let c of Rt(n))!Ht.call(t,c)&&c!==r&&Le(t,c,{get:()=>n[c],enumerable:!(s=Ot(n,c))||s.enumerable});return t};var Nt=t=>Ut(Le({},"__esModule",{value:!0}),t);var un={};Dt(un,{BitPalmAgent:()=>rn,BitPalmApiError:()=>H,useBitPalmChat:()=>dn});module.exports=Nt(un);var S=require("react");function mt(t){if(t===!1)return"off";if(typeof t=="string"){let n=t.trim().toLowerCase();if(["false","off","0","no","none"].includes(n))return"off";if(n==="events")return"events"}return"bubble"}function ft(t,n){let r=t.createElement("div");r.setAttribute("data-bitpalm-trigger",""),r.style.cssText=`max-width:240px;background:#fff;border-radius:16px;padding:12px 32px 12px 12px;box-shadow:0 2px 20px rgba(0,0,0,0.08);cursor:pointer;z-index:${n.zIndex-1};font-family:system-ui,sans-serif;animation:_bp_fade .3s;`,r.style.position="fixed",r.style.right="24px",r.style.bottom=`${n.bottom}px`;let s=t.createElement("p");s.style.cssText="font-size:14px;color:#1f2937;margin:0;",s.textContent=n.message;let c=t.createElement("div");c.style.cssText="position:absolute;bottom:-8px;right:20px;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #fff;";let f=t.createElement("button");return f.type="button",f.setAttribute("aria-label","Close"),f.style.cssText="position:absolute;top:-8px;right:-8px;width:28px;height:28px;border-radius:50%;background:#fff;border:none;box-shadow:0 1px 4px rgba(0,0,0,0.1);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:#9ca3af;",f.textContent="\u2715",f.onclick=m=>{m.stopPropagation(),n.onDismiss()},r.onclick=()=>n.onEngage(),r.append(s,c,f),r}var Wt=["dark","dark-mode","dark-theme","theme-dark"],jt=["light","light-mode","light-theme","theme-light"],ht=["data-theme","data-color-scheme","data-color-mode","data-mode","data-bs-theme"],yt="(prefers-color-scheme: dark)";function ue(t){return t==="light"||t==="dark"?t:"auto"}function gt(t){if(!t)return null;if(Wt.some(n=>t.classList.contains(n)))return"dark";if(jt.some(n=>t.classList.contains(n)))return"light";for(let n of ht){let r=(t.getAttribute(n)||"").toLowerCase();if(r.includes("dark"))return"dark";if(r.includes("light"))return"light"}return null}function Ie(t){let n=t/255;return n<=.03928?n/12.92:((n+.055)/1.055)**2.4}function pt(t,n){if(!t)return null;let r=n.getComputedStyle(t).backgroundColor.match(/rgba?\(([^)]+)\)/);if(!r)return null;let[s,c,f,m=1]=r[1].split(/[\s,/]+/).filter(Boolean).map(Number);return[s,c,f,m].some(l=>Number.isNaN(l))||m<.5?null:.2126*Ie(s)+.7152*Ie(c)+.0722*Ie(f)<.2?"dark":"light"}function qt(t,n){let r=n.getComputedStyle(t.documentElement).colorScheme||"",s=t.querySelector('meta[name="color-scheme"]')?.getAttribute("content")||"",c=`${r} ${s}`.toLowerCase();return c.includes("dark")?c.includes("light")?n.matchMedia?.(yt).matches?"dark":"light":"dark":null}function ne(t=document,n=window){return gt(t.documentElement)??gt(t.body)??pt(t.body,n)??pt(t.documentElement,n)??qt(t,n)??"light"}function Ae(t,n=document,r=window){let s=ne(n,r),c=!1,f=()=>{c=!1;let u=ne(n,r);u!==s&&(s=u,t(u))},m=()=>{c||(c=!0,typeof r.requestAnimationFrame=="function"?r.requestAnimationFrame(f):setTimeout(f,16))},b=typeof MutationObserver<"u"?new MutationObserver(m):null,l={attributes:!0,attributeFilter:["class","style",...ht]};b?.observe(n.documentElement,l),n.body&&b?.observe(n.body,l);let h=typeof r.matchMedia=="function"?r.matchMedia(yt):null;return h?.addEventListener?.("change",m),()=>{b?.disconnect(),h?.removeEventListener?.("change",m)}}var Ft="https://agents.bitpalm.ai",I="_bp_",zt=new Set(["password","file","checkbox","radio","submit","button","reset","image"]),Yt=8e3,bt=4096,vt=`${I}identify_signature`,wt=`${I}identify_fingerprint`,xt=`${I}identify_sent_at`,Et="0 4px 14px rgba(0,0,0,0.18)";function Qt(t){return[t.external_user_id||"",t.email||"",t.phone||"",t.name||"",t.company||"",t.signature||"",t.signed_at!=null?String(t.signed_at):"",t.signature_version||"",t.identify_source||""].join("|").toLowerCase()}function g(t,n=180){return t?t.replace(/\s+/g," ").trim().slice(0,n):""}function Jt(t){return t?` ${t.toLowerCase().replace(/[_-]+/g," ").replace(/[^a-z0-9\s@.]/g," ").replace(/\s+/g," ").trim()} `:""}function G(t,n){for(let r of n)if(t.includes(r))return!0;return!1}function q(t){return/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/i.test(t)}function N(t){let n=g(t,50);if(!n)return"";let r=n.startsWith("+"),s=n.replace(/\D/g,"");return s.length<6?"":`${r?"+":""}${s.slice(0,20)}`}function St(t){let n=g(t,140).toLowerCase();return!n||!q(n)?"":n}function X(t,n){for(let r of n){let s=t.querySelector(r),c=g(s?.value);if(c)return c}return""}function Vt(t){return g(t.getAttribute("data-bp-field")||t.getAttribute("data-bitpalm-field"),64).toLowerCase().replace(/[_\s]+/g,"-")}function Kt(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Gt(t,n){let r=[],s=(l,h=140)=>{let u=g(l,h);u&&r.push(u)};s(n.name),s(n.id),s(n.getAttribute("autocomplete")),s(n.getAttribute("placeholder")),s(n.getAttribute("aria-label")),s(n.getAttribute("data-field")),s(n.getAttribute("data-name")),s(n.getAttribute("data-label")),s(n.getAttribute("data-bp-field")),s(n.getAttribute("data-bitpalm-field"));let c=new Set,f=l=>{let h=g(l,200);!h||c.has(h)||(c.add(h),r.push(h))};for(let l of Array.from(n.labels||[]))f(l.textContent);if(n.id){let l=t.querySelector(`label[for="${Kt(n.id)}"]`);f(l?.textContent)}let m=n.closest("label");f(m?.textContent);let b=n.getAttribute("aria-labelledby");if(b)for(let l of b.split(/\s+/)){if(!l)continue;let h=t.ownerDocument.getElementById(l);f(h?.textContent)}return r}function Xt(t){let n=g(X(t,["[data-bp-email]","[data-bitpalm-email]"]),140).toLowerCase(),r=N(X(t,["[data-bp-phone]","[data-bitpalm-phone]"])),s=g(X(t,["[data-bp-name]","[data-bitpalm-name]","[data-bp-full-name]","[data-bitpalm-full-name]"])),c=g(X(t,["[data-bp-first-name]","[data-bitpalm-first-name]"])),f=g(X(t,["[data-bp-last-name]","[data-bitpalm-last-name]"])),m=g(X(t,["[data-bp-company]","[data-bitpalm-company]"]));for(let u of Array.from(t.elements)){if(!(u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)||u.disabled||u instanceof HTMLInputElement&&zt.has(u.type.toLowerCase()))continue;let w=Vt(u),A=u.hasAttribute("data-bp-email")||u.hasAttribute("data-bitpalm-email")||u.hasAttribute("data-bp-phone")||u.hasAttribute("data-bitpalm-phone")||u.hasAttribute("data-bp-name")||u.hasAttribute("data-bitpalm-name")||u.hasAttribute("data-bp-full-name")||u.hasAttribute("data-bitpalm-full-name")||u.hasAttribute("data-bp-first-name")||u.hasAttribute("data-bitpalm-first-name")||u.hasAttribute("data-bp-last-name")||u.hasAttribute("data-bitpalm-last-name")||u.hasAttribute("data-bp-company")||u.hasAttribute("data-bitpalm-company")||!!w;if(u instanceof HTMLInputElement&&u.type.toLowerCase()==="hidden"&&!A)continue;let p=g(u.value);if(!p)continue;let L=u instanceof HTMLInputElement?u.type.toLowerCase():"",i=Jt(Gt(t,u).join(" "));if(!n&&w==="email"&&q(p)){n=p.toLowerCase();continue}if(!r&&(w==="phone"||w==="tel"||w==="mobile"||w==="whatsapp")){let E=N(p);if(E){r=E;continue}}if(!m&&w==="company"){m=g(p,160);continue}if(!c&&(w==="first-name"||w==="firstname")){c=g(p,100);continue}if(!f&&(w==="last-name"||w==="lastname"||w==="surname")){f=g(p,100);continue}if(!s&&(w==="name"||w==="full-name"||w==="fullname")){!q(p)&&!N(p)&&(s=g(p,140));continue}let d=L==="email"||G(i,[" email "," e mail "," mail "," email adresse "," mailadresse "," correo "]),y=L==="tel"||G(i,[" phone "," phone number "," mobile "," tel "," telefon "," telefonnummer "," whatsapp "," handy "," kontakt "," nummer "]),x=G(i,[" company "," company name "," firma "," firmenname "," organization "," organisation "," business "," unternehmen "," agency "," brokerage "]),v=G(i,[" first name "," firstname "," given name "," givenname "," vorname "," fname "]),_=G(i,[" last name "," lastname "," family name "," familyname "," surname "," nachname "," lname "]),k=G(i,[" full name "," fullname "," contact name "," name "])&&!d&&!y;if(!n&&d&&q(p)){n=p.toLowerCase();continue}if(!r&&y){let E=N(p);if(E){r=E;continue}}if(!m&&x){m=g(p,160);continue}if(!c&&v){c=g(p,100);continue}if(!f&&_){f=g(p,100);continue}if(!s&&k&&!q(p)&&!N(p)){s=g(p,140);continue}!n&&q(p)&&(n=p.toLowerCase())}if(s&&(q(s)||N(s))&&(s=""),m&&(q(m)||N(m))&&(m=""),s||(s=g([c,f].filter(Boolean).join(" "),140)),s&&n&&s.toLowerCase()===n.toLowerCase()&&(s=""),!!!(n||r)&&!!!(s&&m))return null;let h={...s?{name:s}:{},...n?{email:n}:{},...r?{phone:r}:{},...m?{company:m}:{}};return Object.keys(h).length>0?h:null}function Zt(){if(typeof document<"u"){let t=document.documentElement.lang;if(t)return t.slice(0,2).toLowerCase()}return"en"}function Pe(t,n=1200){if(typeof window<"u"&&"requestIdleCallback"in window){window.requestIdleCallback(t,{timeout:n});return}setTimeout(t,Math.min(n,300))}function Me(){if(typeof window>"u")return!1;let t=typeof navigator<"u"?navigator.userAgent:"";if(/Android|iPhone|iPad|iPod|IEMobile|Windows Phone|Mobile/i.test(t))return!0;let r=window.matchMedia("(pointer: coarse)").matches,s=window.matchMedia("(hover: none)").matches,c=Math.min(window.screen?.width||window.innerWidth,window.screen?.height||window.innerHeight);return r&&s&&c<=900}function Tt(t){let{slug:n,locale:r=Zt(),baseUrl:s=Ft,token:c,zIndex:f=9999,autoIdentify:m=!0,launcher:b=!0}=t,l=document,h=ue(t.theme),u=h==="auto"?ne():h,w=null,A=mt(t.triggers),p=A,L=null,i=l.createElement("iframe");i.setAttribute("data-bitpalm-chat","");let d=`${s}/t/${n}/widget`,y=new URLSearchParams({locale:r,theme:u});c&&y.set("token",c),p==="off"&&y.set("triggers","off"),i.src=`${d}?${y.toString()}`,i.allow="clipboard-write; microphone",i.setAttribute("allowtransparency","true"),i.loading="lazy",i.style.cssText=`position:fixed;bottom:0;right:0;width:1px;height:1px;border:none;z-index:${f};background:transparent;color-scheme:normal;opacity:0;pointer-events:none;`;let x=new URL(i.src).origin,v=l.createElement("div");if(v.setAttribute("role","button"),v.setAttribute("aria-label","Chat"),v.setAttribute("data-bitpalm-launcher",""),v.style.cssText=`position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;display:none;align-items:center;justify-content:center;cursor:pointer;z-index:${f-1};background:#171717;box-shadow:${Et};transition:transform .2s,opacity .3s;opacity:0;`,v.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z"/></svg>',v.onmouseenter=()=>{v.style.transform="scale(1.05)"},v.onmouseleave=()=>{v.style.transform="scale(1)"},v.onclick=()=>te(),b&&l.body.appendChild(v),!l.getElementById("_bp_fade")){let e=l.createElement("style");e.id="_bp_fade",e.textContent="@keyframes _bp_fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}",l.head.appendChild(e)}let _=null,k=!1,E=!1,P=!1,C=!1,B=!1,R=()=>{P||(P=!0,l.body.appendChild(i))},W=!1,fe=0,ie={overflow:"",overscrollBehavior:""},$={overflow:"",overscrollBehavior:"",position:"",top:"",left:"",right:"",width:""},_e=()=>{if(W||!Me())return;let o=l.documentElement,a=l.body;fe=window.scrollY||window.pageYOffset||0,ie.overflow=o.style.overflow,ie.overscrollBehavior=o.style.overscrollBehavior,$.overflow=a.style.overflow,$.overscrollBehavior=a.style.overscrollBehavior,$.position=a.style.position,$.top=a.style.top,$.left=a.style.left,$.right=a.style.right,$.width=a.style.width,o.style.overflow="hidden",o.style.overscrollBehavior="none",a.style.overflow="hidden",a.style.overscrollBehavior="none",a.style.position="fixed",a.style.top=`-${fe}px`,a.style.left="0",a.style.right="0",a.style.width="100%",W=!0},V=()=>{if(!W)return;let e=l.documentElement,o=l.body;e.style.overflow=ie.overflow,e.style.overscrollBehavior=ie.overscrollBehavior,o.style.overflow=$.overflow,o.style.overscrollBehavior=$.overscrollBehavior,o.style.position=$.position,o.style.top=$.top,o.style.left=$.left,o.style.right=$.right,o.style.width=$.width,window.scrollTo(0,fe),W=!1},Be=()=>{let e=Me();i.style.display==="none"&&(i.style.display=""),e?(i.style.width="100vw",i.style.height="100dvh",i.style.left="0",i.style.top="0",i.style.bottom="0",i.style.right="0",_e()):(i.style.width="420px",i.style.height="620px",i.style.bottom="24px",i.style.right="24px",i.style.left="",i.style.top="",V()),i.style.opacity="1",i.style.pointerEvents="auto"},j=()=>{_&&(_.remove(),_=null)},se=()=>{L!==null&&(L=null,Z("trigger_hidden"))},$e=()=>{i.contentWindow?.postMessage({type:"bitpalm-triggers",enabled:p!=="off"},"*")},oe=()=>{},ge=()=>{},K=!1,F=new Map;function Z(e,o){let a=F.get(e);if(a)for(let T of a)try{T(o)}catch{}}let Oe=e=>{if(e.origin===x){if(e.data?.type==="bitpalm-widget-config"){E=!1,k=!0,i.style.display==="none"&&(i.style.display=""),e.data.primaryColor&&(v.style.background=e.data.primaryColor,v.style.boxShadow=e.data.chatShadow==="none"?"none":Et);let o=e.data.chatButtonIconColor||"black";if(e.data.chatButtonIconSvg){v.innerHTML="";let a=l.createElement("span");a.style.cssText=`display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:${o}`;let M=new DOMParser().parseFromString(e.data.chatButtonIconSvg,"image/svg+xml").querySelector("svg");M?(M.querySelectorAll("script,foreignObject").forEach(Q=>Q.remove()),M.querySelectorAll("*").forEach(Q=>{for(let J of[...Q.attributes])(J.name.startsWith("on")||J.value&&J.value.includes("javascript:"))&&Q.removeAttribute(J.name)}),M.setAttribute("width","24"),M.setAttribute("height","24"),M.style.display="block",a.appendChild(M)):a.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z"/></svg>',v.appendChild(a)}else{let a=v.querySelector("svg");a&&(a.style.stroke=o)}b&&(v.style.display="flex",requestAnimationFrame(()=>{v.style.opacity="1"})),$e()}if(e.data?.type==="bitpalm-widget-resize"){let o=e.data.width>0,a=K;K=o,o&&!a&&Z("widget_opened"),!o&&a&&Z("widget_closed");let T=Me();o?(i.style.width=T?"100vw":`${e.data.width}px`,i.style.height=T?"100dvh":`${e.data.height}px`,T?(i.style.left="0",i.style.top="0",i.style.bottom="0",i.style.right="0",_e()):V(),i.style.opacity="1",i.style.pointerEvents="auto"):(V(),i.style.width="1px",i.style.height="1px",i.style.left="",i.style.top="",i.style.opacity="0",i.style.pointerEvents="none"),v.style.display=o||!b?"none":"flex"}if(e.data?.type==="bitpalm-trigger-show"){if(E||!k||p==="off")return;let o=typeof e.data.message=="string"?e.data.message:"";if(!o)return;if(p==="events"){L=o,Z("trigger_shown",{message:o,triggerId:e.data.triggerId,triggerType:e.data.triggerType});return}j(),_=ft(l,{message:o,zIndex:f,bottom:b?90:24,onDismiss:()=>{j(),i.contentWindow?.postMessage({type:"bitpalm-trigger-dismiss"},"*")},onEngage:()=>{if(j(),v.style.display="none",Be(),R(),!C){B=!0;return}i.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:o},"*")}}),l.body.appendChild(_)}e.data?.type==="bitpalm-trigger-hide"&&(j(),se()),e.data?.type==="bitpalm-request-context"&&oe(),e.data?.type==="bitpalm-chat-event"&&e.data.event&&Z(e.data.event,e.data.data),e.data?.type==="bitpalm-widget-blocked"&&(E=!0,k=!1,v.style.display="none",j(),se(),V(),i.style.display="none")}};window.addEventListener("message",Oe);let D=!1;try{D=localStorage.getItem(`${I}optout`)==="1"}catch{}let re=`${I}vid`,O="";if(!D){try{O=localStorage.getItem(re)||""}catch{}if(!O){let e=l.cookie.match(new RegExp(`(?:^|; )${re}=([^;]+)`));O=e?decodeURIComponent(e[1]):""}O||(O=crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,11)}`);try{localStorage.setItem(re,O)}catch{}try{l.cookie=`${re}=${encodeURIComponent(O)};path=/;max-age=31536000;SameSite=Lax`}catch{}}D||Pe(()=>{try{let e=new URLSearchParams(location.search),o={};for(let U of["utm_source","utm_medium","utm_campaign","utm_term","utm_content"]){let M=e.get(U);M&&(o[U]=M)}let a=JSON.stringify({tenant_slug:n,visitor_id:O,url:location.href,referrer:l.referrer||void 0,...Object.keys(o).length>0?{utm:o}:{}}),T=`${s}/api/widget/impression`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(T,new Blob([a],{type:"application/json"})):fetch(T,{method:"POST",body:a,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}},2e3);let pe="",he="",ye=0;try{pe=sessionStorage.getItem(vt)||"",he=sessionStorage.getItem(wt)||"";let e=parseInt(sessionStorage.getItem(xt)||"0",10);Number.isFinite(e)&&e>0&&(ye=e)}catch{}let Re=(e,o="")=>{if(D||!O)return;let a={},T=g(e.name,140),U=St(e.email),M=N(e.phone),Q=g(e.company,160),J=g(e.external_user_id,140),ct=g(e.signature,260),Te=Number(e.signed_at);if(T&&(a.name=T),U&&(a.email=U),M&&(a.phone=M),Q&&(a.company=Q),J&&(a.external_user_id=J),ct&&(a.signature=ct),Number.isFinite(Te)&&Te>0&&(a.signed_at=Math.floor(Te)),(e.signature_version==="v1"||a.signature)&&(a.signature_version="v1"),(e.identify_source==="manual"||e.identify_source==="form")&&(a.identify_source=e.identify_source),!a.name&&!a.email&&!a.phone&&!a.company&&!a.external_user_id)return;let de=Qt(a),Ce=[o.toLowerCase(),de].filter(Boolean).join("|"),ke=Date.now();if(!(ke-ye<Yt&&(Ce===pe||de===he))){pe=Ce,he=de,ye=ke;try{sessionStorage.setItem(vt,Ce),sessionStorage.setItem(wt,de),sessionStorage.setItem(xt,String(ke))}catch{}try{let dt=JSON.stringify({tenant_slug:n,visitor_id:O,url:location.href,referrer:l.referrer||void 0,...a}),ut=`${s}/api/widget/identify`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(ut,new Blob([dt],{type:"application/json"})):fetch(ut,{method:"POST",body:dt,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}}},He=e=>{if(D||!m||!O)return;let o=e.target instanceof HTMLFormElement?e.target:e.target instanceof Element?e.target.closest("form"):null;if(!(o instanceof HTMLFormElement))return;let a=(o.getAttribute("data-bp-identify")||o.getAttribute("data-bitpalm-identify")||"").toLowerCase();if(a==="off"||a==="false"||a==="0")return;let T=Xt(o);if(!T)return;let U=[o.getAttribute("id")||"",o.getAttribute("name")||"",o.getAttribute("action")||""].join("|");Re({...T,identify_source:"form"},U)};!D&&m&&l.addEventListener("submit",He,!0);let ee=parseInt(sessionStorage.getItem(`${I}pages`)||"0")+1;sessionStorage.setItem(`${I}pages`,String(ee));let z=JSON.parse(sessionStorage.getItem(`${I}hist`)||"[]");z.push(location.href),z.length>20&&(z=z.slice(-20)),sessionStorage.setItem(`${I}hist`,JSON.stringify(z));let De=Date.now(),ae=parseInt(sessionStorage.getItem(`${I}site_start`)||"0");ae||(ae=De,sessionStorage.setItem(`${I}site_start`,String(ae)));let Ue=[];oe=()=>{let e=!1;try{e=!!localStorage.getItem(`${I}visited`)}catch{e=!1}if(i.contentWindow?.postMessage({type:"bitpalm-parent-context",url:location.href,title:l.title,returning:e,pageCount:ee,pageHistory:z,loadedAt:De,siteStart:ae,locale:r,visitorId:D?"":O},"*"),Ke(),$t(),!e&&!D)try{localStorage.setItem(`${I}visited`,"1")}catch{}},i.addEventListener("load",()=>{C=!0,oe(),[120,450,1100].forEach(e=>{let o=setTimeout(()=>oe(),e);Ue.push(o)}),B&&(B=!1,ge())}),l.readyState==="loading"?l.addEventListener("DOMContentLoaded",()=>Pe(R,1600),{once:!0}):Pe(R,1600);let Ne=history.pushState.bind(history),We=history.replaceState.bind(history),le=()=>{ee++,sessionStorage.setItem(`${I}pages`,String(ee));let e=JSON.parse(sessionStorage.getItem(`${I}hist`)||"[]");if(e.push(location.href),e.length>20&&e.splice(0,e.length-20),z=e,sessionStorage.setItem(`${I}hist`,JSON.stringify(e)),i.contentWindow?.postMessage({type:"bitpalm-page-change",url:location.href,title:l.title,pageCount:ee,pageHistory:e,loadedAt:Date.now()},"*"),!D)try{let o=JSON.stringify({tenant_slug:n,visitor_id:O,url:location.href}),a=`${s}/api/widget/impression`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(a,new Blob([o],{type:"application/json"})):fetch(a,{method:"POST",body:o,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}};history.pushState=function(...e){Ne(...e),le()},history.replaceState=function(...e){We(...e),le()},window.addEventListener("popstate",le);let je=-1,be,qe=()=>{clearTimeout(be),be=setTimeout(()=>{let e=Math.max(l.documentElement.scrollHeight,l.body.scrollHeight)-window.innerHeight,o=e>0?Math.round(window.scrollY/e*100):100;o!==je&&(je=o,i.contentWindow?.postMessage({type:"bitpalm-scroll-depth",percent:o},"*"))},500)};window.addEventListener("scroll",qe,{passive:!0});let Fe=e=>{e.clientY<=0&&i.contentWindow?.postMessage({type:"bitpalm-exit-intent"},"*")};l.addEventListener("mouseout",Fe);let ve,ze=!1,we=()=>{clearTimeout(ve),!ze&&(ve=setTimeout(()=>{ze=!0,i.contentWindow?.postMessage({type:"bitpalm-inactivity"},"*")},15e3))},Ye=["mousemove","keydown","scroll","touchstart"];Ye.forEach(e=>l.addEventListener(e,we,{passive:!0})),we(),ge=()=>{i.contentWindow?.postMessage({type:"bitpalm-open"},"*");let e=i.src.split("#")[0];i.src=`${e}#bp-open-${Date.now()}`};let te=()=>{if(v.style.display="none",j(),Be(),R(),!C){B=!0;return}if(L!==null){let e=L;se(),i.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:e},"*");return}ge()},Qe=e=>{p=e,e==="off"&&(j(),se()),$e()},At=()=>Qe("off"),Pt=()=>Qe(A==="off"?"bubble":A),xe=()=>{V(),i.contentWindow?.postMessage({type:"bitpalm-close"},"*")},Je=e=>{!e||typeof e!="object"||Re({external_user_id:g(e.externalUserId,140)||void 0,name:g(e.name,140)||void 0,email:St(e.email)||void 0,phone:N(e.phone)||void 0,company:g(e.company,160)||void 0,signature:g(e.signature,260)||void 0,signed_at:Number.isFinite(Number(e.signedAt))?Math.floor(Number(e.signedAt)):void 0,signature_version:e.signatureVersion==="v1"?"v1":void 0,identify_source:"manual"},"manual")},Mt=()=>{K?xe():te()},_t=()=>K,Ve=e=>{if(!e||typeof e!="string")return;let o=e.trim().slice(0,1e4);o&&(K||te(),setTimeout(()=>{i.contentWindow?.postMessage({type:"bitpalm-send-message",message:o},"*")},K?50:500))};function Ke(){i.contentWindow?.postMessage({type:"bitpalm-theme",theme:u},"*")}let ce=e=>{e!==u&&(u=e,Ke())},Ge=e=>{h=ue(e),w?.(),w=null,h==="auto"?(w=Ae(ce),ce(ne())):ce(h)};h==="auto"&&(w=Ae(ce));let Xe=e=>{let o=e.detail;if(!o||typeof o!="object")return;let a=g(o.slug,120);a&&a!==n||Ge(ue(o.theme))};window.addEventListener("bitpalm-theme",Xe);let Y={},Ze=e=>{if(!e||typeof e!="object"||Array.isArray(e))return;Y={...Y,...e};let o=JSON.stringify(Y);o.length>bt&&console.warn(`[BitPalm] Custom context exceeds ${bt} bytes (${o.length}). It may be truncated.`),i.contentWindow?.postMessage({type:"bitpalm-custom-context",data:Y},"*")},Bt=()=>{Y={},i.contentWindow?.postMessage({type:"bitpalm-custom-context",data:{}},"*")},Ee=Array.isArray(t.quickLinks)?t.quickLinks:null,et=Ee!==null,tt=()=>{i.contentWindow?.postMessage({type:"bitpalm-quick-links",links:Ee},"*")},nt=e=>{Ee=Array.isArray(e)?e.slice(0,8):null,et=!0,tt()};function $t(){Object.keys(Y).length>0&&i.contentWindow?.postMessage({type:"bitpalm-custom-context",data:Y},"*"),et&&tt()}let it=e=>{let o=e.detail;if(!o||typeof o!="object")return;let a=g(o.slug,120);a&&a!==n||nt(o.links??null)};window.addEventListener("bitpalm-quick-links",it);let st=e=>{let a=e.detail;if(!a||typeof a!="object")return;let T=g(a.slug,120);if(T&&T!==n)return;let{slug:U,...M}=a;Ze(M)};window.addEventListener("bitpalm-context",st);let ot=e=>{let a=e.detail;if(!a||typeof a!="object")return;let T=g(a.slug,120);T&&T!==n||Je(a)};window.addEventListener("bitpalm-identify",ot);let Se=e=>{let o=e.detail,a=g(o?.slug,120);return!a||a===n},rt=e=>{Se(e)&&te()},at=e=>{Se(e)&&xe()},lt=e=>{if(!Se(e))return;let o=e.detail?.message;typeof o=="string"&&Ve(o)};return window.addEventListener("bitpalm-open",rt),window.addEventListener("bitpalm-close",at),window.addEventListener("bitpalm-send",lt),{open:te,close:xe,toggle:Mt,isOpen:_t,identify:Je,context:Ze,resetContext:Bt,setQuickLinks:nt,send:Ve,on:(e,o)=>(F.has(e)||F.set(e,new Set),F.get(e).add(o),()=>F.get(e)?.delete(o)),off:(e,o)=>{F.get(e)?.delete(o)},setTheme:Ge,disableTriggers:At,enableTriggers:Pt,destroy:()=>{window.removeEventListener("message",Oe),window.removeEventListener("scroll",qe),window.removeEventListener("popstate",le),l.removeEventListener("mouseout",Fe),l.removeEventListener("submit",He,!0),Ye.forEach(e=>l.removeEventListener(e,we)),clearTimeout(be),clearTimeout(ve),Ue.forEach(e=>clearTimeout(e)),history.pushState=Ne,history.replaceState=We,window.removeEventListener("bitpalm-identify",ot),window.removeEventListener("bitpalm-context",st),window.removeEventListener("bitpalm-quick-links",it),window.removeEventListener("bitpalm-theme",Xe),window.removeEventListener("bitpalm-open",rt),window.removeEventListener("bitpalm-close",at),window.removeEventListener("bitpalm-send",lt),w?.(),F.clear(),V(),j(),v.remove(),i.remove()}}}function en(t){let n=t.split(`
2
2
  `).filter(r=>r.startsWith("data:")).map(r=>r.slice(5).trimStart()).join(`
3
- `);if(!t)return null;try{let r=JSON.parse(t);return r&&typeof r.type=="string"?r:null}catch{return null}}function me(n){let t=[],r=n.replace(/\r\n/g,`
4
- `),i=r.indexOf(`
3
+ `);if(!n)return null;try{let r=JSON.parse(n);return r&&typeof r.type=="string"?r:null}catch{return null}}function me(t){let n=[],r=t.replace(/\r\n/g,`
4
+ `),s=r.indexOf(`
5
5
 
6
- `);for(;i>=0;){let u=Gt(r.slice(0,i));u&&t.push(u),r=r.slice(i+2),i=r.indexOf(`
6
+ `);for(;s>=0;){let c=en(r.slice(0,s));c&&n.push(c),r=r.slice(s+2),s=r.indexOf(`
7
7
 
8
- `)}return{events:t,rest:r}}function wt(n){return me(`${n}
8
+ `)}return{events:n,rest:r}}function Ct(t){return me(`${t}
9
9
 
10
- `).events}var B=class extends Error{constructor(r,i,u){super(i);this.code=r;this.status=u;this.name="BitPalmApiError"}},Kt="https://agents.bitpalm.ai";function Vt(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}function Qt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`v-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,12)}`}async function Xt(n){let t=await n.json().catch(()=>null);return new B(t?.error?.code??"server_error",t?.error?.message??`Request failed (${n.status})`,n.status)}function xt(n){if(!n?.key?.startsWith("bp_pk_"))throw new Error("createChatClient needs an app key (bp_pk_\u2026) from the BitPalm dashboard.");let t=(n.baseUrl??Kt).replace(/\/+$/,""),r=n.storage===void 0?Vt():n.storage,i=`bitpalm:${n.key.slice(0,14)}`,u=l=>{try{return r?.getItem(`${i}:${l}`)??null}catch{return null}},g=(l,m)=>{try{m===null?r?.removeItem(`${i}:${l}`):r?.setItem(`${i}:${l}`,m)}catch{}},p=n.visitorId??u("visitor")??Qt();n.visitorId||g("visitor",p);let b=u("conversation"),c=!1,w={Authorization:`Bearer ${n.key}`},d=async(l,m)=>{let o=await fetch(`${t}${l}`,{...m,headers:{...w,...m?.headers??{}}});if(!o.ok)throw await Xt(o);return o},y=l=>{b=l,g("conversation",l)},k=(l,m,o)=>{for(let v of l)if(v.type==="delta")m.text+=v.text,o?.(v.text,m.text);else if(v.type==="replace")m.text=v.text,o?.("",m.text);else if(v.type==="done")m.result={text:m.text,conversationId:v.conversationId,...v.cards?{cards:v.cards}:{},...v.handoff?{handoff:!0}:{}};else if(v.type==="error")throw new B("server_error",v.message,500)};return{visitorId:p,get conversationId(){return b},get handoff(){return c},async agent(l){let m=new URLSearchParams({locale:n.locale??"en"});return l?.url&&m.set("url",l.url),(await d(`/api/v1/agent?${m.toString()}`)).json()},async send(l,m={}){let o=await d("/api/v1/chat",{method:"POST",headers:{"Content-Type":"application/json"},signal:m.signal,body:JSON.stringify({message:l,visitorId:p,conversationId:b??void 0,context:m.context,fileIds:m.fileIds})}),v={text:"",result:null},M=o.body&&typeof o.body.getReader=="function"?o.body.getReader():null;if(M){let f=new TextDecoder,T="";for(;;){let{done:S,value:I}=await M.read();if(S)break;let U=me(T+f.decode(I,{stream:!0}));T=U.rest,k(U.events,v,m.onDelta)}k(me(`${T}
10
+ `).events}var H=class extends Error{constructor(r,s,c){super(s);this.code=r;this.status=c;this.name="BitPalmApiError"}},tn="https://agents.bitpalm.ai";function nn(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}function sn(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`v-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,12)}`}async function on(t){let n=await t.json().catch(()=>null);return new H(n?.error?.code??"server_error",n?.error?.message??`Request failed (${t.status})`,t.status)}function kt(t){if(!t?.key?.startsWith("bp_pk_"))throw new Error("createChatClient needs an app key (bp_pk_\u2026) from the BitPalm dashboard.");let n=(t.baseUrl??tn).replace(/\/+$/,""),r=t.storage===void 0?nn():t.storage,s=`bitpalm:${t.key.slice(0,14)}`,c=i=>{try{return r?.getItem(`${s}:${i}`)??null}catch{return null}},f=(i,d)=>{try{d===null?r?.removeItem(`${s}:${i}`):r?.setItem(`${s}:${i}`,d)}catch{}},m=t.visitorId??c("visitor")??sn();t.visitorId||f("visitor",m);let b=c("conversation"),l=!1,h=null,u=i=>{for(let d of i)d.fromHuman&&d.createdAt&&(!h||d.createdAt>h)&&(h=d.createdAt)},w={Authorization:`Bearer ${t.key}`},A=async(i,d)=>{let y=await fetch(`${n}${i}`,{...d,headers:{...w,...d?.headers??{}}});if(!y.ok)throw await on(y);return y},p=i=>{b=i,f("conversation",i)},L=(i,d,y)=>{for(let x of i)if(x.type==="delta")d.text+=x.text,y?.(x.text,d.text);else if(x.type==="replace")d.text=x.text,y?.("",d.text);else if(x.type==="done")d.result={text:d.text,conversationId:x.conversationId,...x.cards?{cards:x.cards}:{},...x.handoff?{handoff:!0}:{}};else if(x.type==="error")throw new H("server_error",x.message,500)};return{visitorId:m,get conversationId(){return b},get handoff(){return l},async agent(i){let d=new URLSearchParams({locale:t.locale??"en"});i?.url&&d.set("url",i.url);let y=i?.userToken?{headers:{"X-BitPalm-User-Token":i.userToken}}:void 0;return(await A(`/api/v1/agent?${d.toString()}`,y)).json()},async send(i,d={}){let y=await A("/api/v1/chat",{method:"POST",headers:{"Content-Type":"application/json"},signal:d.signal,body:JSON.stringify({message:i,visitorId:m,conversationId:b??void 0,context:d.context,fileIds:d.fileIds})}),x={text:"",result:null},v=y.body&&typeof y.body.getReader=="function"?y.body.getReader():null;if(v){let k=new TextDecoder,E="";for(;;){let{done:P,value:C}=await v.read();if(P)break;let B=me(E+k.decode(C,{stream:!0}));E=B.rest,L(B.events,x,d.onDelta)}L(me(`${E}
11
11
 
12
- `).events,v,m.onDelta)}else k(wt(await o.text()),v,m.onDelta);let C=v.result??{text:v.text,conversationId:b??""};return C.conversationId&&y(C.conversationId),c=C.handoff===!0,C},async history(){let l=new URLSearchParams({visitorId:p});b&&l.set("conversationId",b);let m=await(await d(`/api/v1/chat/history?${l.toString()}`)).json();return m.conversationId&&y(m.conversationId),c=m.handoff===!0,m.messages},async identify(l){await d("/api/v1/identify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...l,visitorId:p})})},async upload(l,m="photo.jpg"){let o=new FormData;o.append("file",l,m),o.append("visitorId",p),b&&o.append("conversationId",b);let v=await(await d("/api/v1/chat/upload",{method:"POST",body:o})).json();return{id:v.id,url:v.url}},async feedback(l,m){if(!b)throw new B("bad_request","There is no conversation yet.",400);await d("/api/v1/chat/feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({visitorId:p,conversationId:b,messageIndex:l,feedback:m})})},reset(){y(null),c=!1}}}function Zt(n){let t=(0,E.useRef)(null),r=(0,E.useRef)(!1);return(0,E.useEffect)(()=>{t.current?.setTheme(n.theme??"auto")},[n.theme]),(0,E.useEffect)(()=>{if(r.current)return;r.current=!0;let{onReady:i,...u}=n;return t.current=vt(u),i?.(t.current),()=>{t.current?.destroy(),t.current=null,r.current=!1}},[]),null}function Et(n,t){return[...n.slice(0,-1),t]}function St(n){let t=n[n.length-1];return t?.role==="assistant"&&!t.text&&!t.cards?.length?n.slice(0,-1):n}function en(n){let[t]=(0,E.useState)(()=>xt(n)),[r,i]=(0,E.useState)([]),[u,g]=(0,E.useState)("idle"),[p,b]=(0,E.useState)(null),[c,w]=(0,E.useState)(null),[d,y]=(0,E.useState)(!1),k=(0,E.useRef)(!1),l=(0,E.useRef)(0),m=n.loadHistory!==!1;(0,E.useEffect)(()=>{let C=!0;return t.agent().then(f=>C&&w(f)).catch(()=>{}),m&&t.history().then(f=>{C&&(i(T=>T.length?T:f),y(t.handoff))}).catch(()=>{}),()=>{C=!1}},[t,m]);let o=(0,E.useCallback)(async(C,f={})=>{let T=C.trim();if(!T&&!f.fileIds?.length)return null;i(S=>[...S,{role:"user",text:T},{role:"assistant",text:""}]),g("streaming"),b(null),k.current=!0,l.current+=1;try{let S=await t.send(T,{...f,onDelta:(I,U)=>i(G=>Et(G,{role:"assistant",text:U}))});return i(I=>St(Et(I,{role:"assistant",text:S.text,...S.cards?{cards:S.cards}:{}}))),y(S.handoff===!0),g("idle"),S}catch(S){let I=S instanceof B?S:new B("network_error",String(S),0);return i(St),b(I),g("error"),null}finally{k.current=!1}},[t]),v=(0,E.useCallback)(async()=>{if(k.current)return;let C=l.current,f=await t.history();k.current||l.current!==C||(i(f),y(t.handoff))},[t]),M=(0,E.useCallback)(()=>{t.reset(),i([]),b(null),y(!1),g("idle")},[t]);return{messages:r,send:o,status:u,error:p,agent:c,handoff:d,refresh:v,reset:M,client:t}}0&&(module.exports={BitPalmAgent,BitPalmApiError,useBitPalmChat});
12
+ `).events,x,d.onDelta)}else L(Ct(await y.text()),x,d.onDelta);let _=x.result??{text:x.text,conversationId:b??""};return _.conversationId&&p(_.conversationId),l=_.handoff===!0,_},async history(){let i=new URLSearchParams({visitorId:m});b&&i.set("conversationId",b);let d=await(await A(`/api/v1/chat/history?${i.toString()}`)).json();return d.conversationId&&p(d.conversationId),l=d.handoff===!0,h=null,u(d.messages),d.messages},async updates(){if(!b)return{handoff:!1,teamTyping:!1,messages:[]};let i=new URLSearchParams({visitorId:m,conversationId:b});h&&i.set("after",h);let d=await(await A(`/api/v1/chat/updates?${i.toString()}`)).json(),y=d.messages??[];return u(y),l=d.handoff===!0,{handoff:l,teamTyping:d.teamTyping===!0,messages:y}},async identify(i){await A("/api/v1/identify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...i,visitorId:m})})},async upload(i,d="photo.jpg"){let y=new FormData;y.append("file",i,d),y.append("visitorId",m),b&&y.append("conversationId",b);let x=await(await A("/api/v1/chat/upload",{method:"POST",body:y})).json();return{id:x.id,url:x.url}},async feedback(i,d){if(!b)throw new H("bad_request","There is no conversation yet.",400);await A("/api/v1/chat/feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({visitorId:m,conversationId:b,messageIndex:i,feedback:d})})},reset(){p(null),l=!1,h=null}}}function rn(t){let n=(0,S.useRef)(null),r=(0,S.useRef)(!1);(0,S.useEffect)(()=>{n.current?.setTheme(t.theme??"auto")},[t.theme]);let s=t.quickLinks===void 0?void 0:JSON.stringify(t.quickLinks),c=(0,S.useRef)(s);return(0,S.useEffect)(()=>{s!==c.current&&(c.current=s,n.current?.setQuickLinks(s===void 0?null:JSON.parse(s)))},[s]),(0,S.useEffect)(()=>{if(r.current)return;r.current=!0;let{onReady:f,...m}=t;return n.current=Tt(m),f?.(n.current),()=>{n.current?.destroy(),n.current=null,r.current=!1}},[]),null}var an=3e3;function ln(){return typeof document<"u"&&document.visibilityState==="hidden"}function Lt(t,n){return[...t.slice(0,-1),n]}function cn(t,n){let r=new Set(t.map(c=>c.id).filter(Boolean)),s=n.filter(c=>!c.id||!r.has(c.id));return s.length?[...t,...s]:t}function It(t){let n=t[t.length-1];return n?.role==="assistant"&&!n.text&&!n.cards?.length?t.slice(0,-1):t}function dn(t){let[n]=(0,S.useState)(()=>kt(t)),[r,s]=(0,S.useState)([]),[c,f]=(0,S.useState)("idle"),[m,b]=(0,S.useState)(null),[l,h]=(0,S.useState)(null),[u,w]=(0,S.useState)(!1),[A,p]=(0,S.useState)(!1),L=(0,S.useRef)(!1),i=(0,S.useRef)(0),d=t.loadHistory!==!1,y=t.live!==!1;(0,S.useEffect)(()=>{let k=!0;return n.agent().then(E=>k&&h(E)).catch(()=>{}),d&&n.history().then(E=>{k&&(s(P=>P.length?P:E),w(n.handoff))}).catch(()=>{}),()=>{k=!1}},[n,d]),(0,S.useEffect)(()=>{if(!y||!u)return;let k=!1,E=!1,P=async()=>{if(!(k||E||ln())){E=!0;try{let R=await n.updates();if(k)return;p(R.teamTyping),R.messages.length&&s(W=>cn(W,R.messages)),R.handoff||w(!1)}catch{}finally{E=!1}}},C=()=>{P()};P();let B=setInterval(()=>{P()},an);return typeof document<"u"&&document.addEventListener("visibilitychange",C),()=>{k=!0,clearInterval(B),typeof document<"u"&&document.removeEventListener("visibilitychange",C)}},[n,u,y]);let x=(0,S.useCallback)(async(k,E={})=>{let P=k.trim();if(!P&&!E.fileIds?.length)return null;s(C=>[...C,{role:"user",text:P},{role:"assistant",text:""}]),f("streaming"),b(null),L.current=!0,i.current+=1;try{let C=await n.send(P,{...E,onDelta:(B,R)=>s(W=>Lt(W,{role:"assistant",text:R}))});return s(B=>It(Lt(B,{role:"assistant",text:C.text,...C.cards?{cards:C.cards}:{}}))),w(C.handoff===!0),f("idle"),C}catch(C){let B=C instanceof H?C:new H("network_error",String(C),0);return s(It),b(B),f("error"),null}finally{L.current=!1}},[n]),v=(0,S.useCallback)(async()=>{if(L.current)return;let k=i.current,E=await n.history();L.current||i.current!==k||(s(E),w(n.handoff))},[n]),_=(0,S.useCallback)(()=>{n.reset(),s([]),b(null),w(!1),f("idle")},[n]);return{messages:r,send:x,status:c,error:m,agent:l,handoff:u,teamTyping:u&&A,refresh:v,reset:_,client:n}}0&&(module.exports={BitPalmAgent,BitPalmApiError,useBitPalmChat});
13
13
  //# sourceMappingURL=react.cjs.map