@bitpalm/ai-agents 0.8.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 i in t)Ie(n,i,{get:t[i],enumerable:!0})},Bt=(n,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of Pt(t))!_t.call(n,c)&&c!==i&&Ie(n,c,{get:()=>t[c],enumerable:!(r=kt(t,c))||r.enumerable});return n};var $t=n=>Bt(Ie({},"__esModule",{value:!0}),n);var rn={};Mt(rn,{BitPalmAgent:()=>Zt,BitPalmApiError:()=>H,useBitPalmChat:()=>on});module.exports=$t(rn);var S=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 i=n.createElement("div");i.setAttribute("data-bitpalm-trigger",""),i.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;`,i.style.position="fixed",i.style.right="24px",i.style.bottom=`${t.bottom}px`;let r=n.createElement("p");r.style.cssText="font-size:14px;color:#1f2937;margin:0;",r.textContent=t.message;let c=n.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=n.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(),t.onDismiss()},i.onclick=()=>t.onEngage(),i.append(r,c,f),i}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 i=(n.getAttribute(t)||"").toLowerCase();if(i.includes("dark"))return"dark";if(i.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 i=t.getComputedStyle(n).backgroundColor.match(/rgba?\(([^)]+)\)/);if(!i)return null;let[r,c,f,m=1]=i[1].split(/[\s,/]+/).filter(Boolean).map(Number);return[r,c,f,m].some(l=>Number.isNaN(l))||m<.5?null:.2126*Ae(r)+.7152*Ae(c)+.0722*Ae(f)<.2?"dark":"light"}function Ht(n,t){let i=t.getComputedStyle(n.documentElement).colorScheme||"",r=n.querySelector('meta[name="color-scheme"]')?.getAttribute("content")||"",c=`${i} ${r}`.toLowerCase();return c.includes("dark")?c.includes("light")?t.matchMedia?.(mt).matches?"dark":"light":"dark":null}function ne(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,i=window){let r=ne(t,i),c=!1,f=()=>{c=!1;let u=ne(t,i);u!==r&&(r=u,n(u))},m=()=>{c||(c=!0,typeof i.requestAnimationFrame=="function"?i.requestAnimationFrame(f):setTimeout(f,16))},y=typeof MutationObserver<"u"?new MutationObserver(m):null,l={attributes:!0,attributeFilter:["class","style",...ut]};y?.observe(t.documentElement,l),t.body&&y?.observe(t.body,l);let h=typeof i.matchMedia=="function"?i.matchMedia(mt):null;return h?.addEventListener?.("change",m),()=>{y?.disconnect(),h?.removeEventListener?.("change",m)}}var Dt="https://agents.bitpalm.ai",L="_bp_",Ut=new Set(["password","file","checkbox","radio","submit","button","reset","image"]),Nt=8e3,ft=4096,gt=`${L}identify_signature`,pt=`${L}identify_fingerprint`,ht=`${L}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 p(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 K(n,t){for(let i of t)if(n.includes(i))return!0;return!1}function F(n){return/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/i.test(n)}function N(n){let t=p(n,50);if(!t)return"";let i=t.startsWith("+"),r=t.replace(/\D/g,"");return r.length<6?"":`${i?"+":""}${r.slice(0,20)}`}function bt(n){let t=p(n,140).toLowerCase();return!t||!F(t)?"":t}function Q(n,t){for(let i of t){let r=n.querySelector(i),c=p(r?.value);if(c)return c}return""}function Ft(n){return p(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 i=[],r=(l,h=140)=>{let u=p(l,h);u&&i.push(u)};r(t.name),r(t.id),r(t.getAttribute("autocomplete")),r(t.getAttribute("placeholder")),r(t.getAttribute("aria-label")),r(t.getAttribute("data-field")),r(t.getAttribute("data-name")),r(t.getAttribute("data-label")),r(t.getAttribute("data-bp-field")),r(t.getAttribute("data-bitpalm-field"));let c=new Set,f=l=>{let h=p(l,200);!h||c.has(h)||(c.add(h),i.push(h))};for(let l of Array.from(t.labels||[]))f(l.textContent);if(t.id){let l=n.querySelector(`label[for="${qt(t.id)}"]`);f(l?.textContent)}let m=t.closest("label");f(m?.textContent);let y=t.getAttribute("aria-labelledby");if(y)for(let l of y.split(/\s+/)){if(!l)continue;let h=n.ownerDocument.getElementById(l);f(h?.textContent)}return i}function Yt(n){let t=p(Q(n,["[data-bp-email]","[data-bitpalm-email]"]),140).toLowerCase(),i=N(Q(n,["[data-bp-phone]","[data-bitpalm-phone]"])),r=p(Q(n,["[data-bp-name]","[data-bitpalm-name]","[data-bp-full-name]","[data-bitpalm-full-name]"])),c=p(Q(n,["[data-bp-first-name]","[data-bitpalm-first-name]"])),f=p(Q(n,["[data-bp-last-name]","[data-bitpalm-last-name]"])),m=p(Q(n,["[data-bp-company]","[data-bitpalm-company]"]));for(let u of Array.from(n.elements)){if(!(u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)||u.disabled||u instanceof HTMLInputElement&&Ut.has(u.type.toLowerCase()))continue;let v=Ft(u),k=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")||!!v;if(u instanceof HTMLInputElement&&u.type.toLowerCase()==="hidden"&&!k)continue;let g=p(u.value);if(!g)continue;let A=u instanceof HTMLInputElement?u.type.toLowerCase():"",o=jt(zt(n,u).join(" "));if(!t&&v==="email"&&F(g)){t=g.toLowerCase();continue}if(!i&&(v==="phone"||v==="tel"||v==="mobile"||v==="whatsapp")){let E=N(g);if(E){i=E;continue}}if(!m&&v==="company"){m=p(g,160);continue}if(!c&&(v==="first-name"||v==="firstname")){c=p(g,100);continue}if(!f&&(v==="last-name"||v==="lastname"||v==="surname")){f=p(g,100);continue}if(!r&&(v==="name"||v==="full-name"||v==="fullname")){!F(g)&&!N(g)&&(r=p(g,140));continue}let d=A==="email"||K(o,[" email "," e mail "," mail "," email adresse "," mailadresse "," correo "]),w=A==="tel"||K(o,[" phone "," phone number "," mobile "," tel "," telefon "," telefonnummer "," whatsapp "," handy "," kontakt "," nummer "]),x=K(o,[" company "," company name "," firma "," firmenname "," organization "," organisation "," business "," unternehmen "," agency "," brokerage "]),b=K(o,[" first name "," firstname "," given name "," givenname "," vorname "," fname "]),M=K(o,[" last name "," lastname "," family name "," familyname "," surname "," nachname "," lname "]),I=K(o,[" full name "," fullname "," contact name "," name "])&&!d&&!w;if(!t&&d&&F(g)){t=g.toLowerCase();continue}if(!i&&w){let E=N(g);if(E){i=E;continue}}if(!m&&x){m=p(g,160);continue}if(!c&&b){c=p(g,100);continue}if(!f&&M){f=p(g,100);continue}if(!r&&I&&!F(g)&&!N(g)){r=p(g,140);continue}!t&&F(g)&&(t=g.toLowerCase())}if(r&&(F(r)||N(r))&&(r=""),m&&(F(m)||N(m))&&(m=""),r||(r=p([c,f].filter(Boolean).join(" "),140)),r&&t&&r.toLowerCase()===t.toLowerCase()&&(r=""),!!!(t||i)&&!!!(r&&m))return null;let h={...r?{name:r}:{},...t?{email:t}:{},...i?{phone:i}:{},...m?{company:m}:{}};return Object.keys(h).length>0?h: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 i=window.matchMedia("(pointer: coarse)").matches,r=window.matchMedia("(hover: none)").matches,c=Math.min(window.screen?.width||window.innerWidth,window.screen?.height||window.innerHeight);return i&&r&&c<=900}function vt(n){let{slug:t,locale:i=Jt(),baseUrl:r=Dt,token:c,zIndex:f=9999,autoIdentify:m=!0,launcher:y=!0}=n,l=document,h=ue(n.theme),u=h==="auto"?ne():h,v=null,k=at(n.triggers),g=k,A=null,o=l.createElement("iframe");o.setAttribute("data-bitpalm-chat","");let d=`${r}/t/${t}/widget`,w=new URLSearchParams({locale:i,theme:u});c&&w.set("token",c),g==="off"&&w.set("triggers","off"),o.src=`${d}?${w.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:${f};background:transparent;color-scheme:normal;opacity:0;pointer-events:none;`;let x=new URL(o.src).origin,b=l.createElement("div");if(b.setAttribute("role","button"),b.setAttribute("aria-label","Chat"),b.setAttribute("data-bitpalm-launcher",""),b.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:${yt};transition:transform .2s,opacity .3s;opacity:0;`,b.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>',b.onmouseenter=()=>{b.style.transform="scale(1.05)"},b.onmouseleave=()=>{b.style.transform="scale(1)"},b.onclick=()=>ee(),y&&l.body.appendChild(b),!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 M=null,I=!1,E=!1,P=!1,C=!1,B=!1,R=()=>{P||(P=!0,l.body.appendChild(o))},W=!1,fe=0,oe={overflow:"",overscrollBehavior:""},$={overflow:"",overscrollBehavior:"",position:"",top:"",left:"",right:"",width:""},_e=()=>{if(W||!Pe())return;let s=l.documentElement,a=l.body;fe=window.scrollY||window.pageYOffset||0,oe.overflow=s.style.overflow,oe.overscrollBehavior=s.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,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%",W=!0},V=()=>{if(!W)return;let e=l.documentElement,s=l.body;e.style.overflow=oe.overflow,e.style.overscrollBehavior=oe.overscrollBehavior,s.style.overflow=$.overflow,s.style.overscrollBehavior=$.overscrollBehavior,s.style.position=$.position,s.style.top=$.top,s.style.left=$.left,s.style.right=$.right,s.style.width=$.width,window.scrollTo(0,fe),W=!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="",V()),o.style.opacity="1",o.style.pointerEvents="auto"},j=()=>{M&&(M.remove(),M=null)},ie=()=>{A!==null&&(A=null,X("trigger_hidden"))},Be=()=>{o.contentWindow?.postMessage({type:"bitpalm-triggers",enabled:g!=="off"},"*")},re=()=>{},ge=()=>{},G=!1,q=new Map;function X(e,s){let a=q.get(e);if(a)for(let T of a)try{T(s)}catch{}}let $e=e=>{if(e.origin===x){if(e.data?.type==="bitpalm-widget-config"){E=!1,I=!0,o.style.display==="none"&&(o.style.display=""),e.data.primaryColor&&(b.style.background=e.data.primaryColor,b.style.boxShadow=e.data.chatShadow==="none"?"none":yt);let s=e.data.chatButtonIconColor||"black";if(e.data.chatButtonIconSvg){b.innerHTML="";let a=l.createElement("span");a.style.cssText=`display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:${s}`;let _=new DOMParser().parseFromString(e.data.chatButtonIconSvg,"image/svg+xml").querySelector("svg");_?(_.querySelectorAll("script,foreignObject").forEach(Y=>Y.remove()),_.querySelectorAll("*").forEach(Y=>{for(let J of[...Y.attributes])(J.name.startsWith("on")||J.value&&J.value.includes("javascript:"))&&Y.removeAttribute(J.name)}),_.setAttribute("width","24"),_.setAttribute("height","24"),_.style.display="block",a.appendChild(_)):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>',b.appendChild(a)}else{let a=b.querySelector("svg");a&&(a.style.stroke=s)}y&&(b.style.display="flex",requestAnimationFrame(()=>{b.style.opacity="1"})),Be()}if(e.data?.type==="bitpalm-widget-resize"){let s=e.data.width>0,a=G;G=s,s&&!a&&X("widget_opened"),!s&&a&&X("widget_closed");let T=Pe();s?(o.style.width=T?"100vw":`${e.data.width}px`,o.style.height=T?"100dvh":`${e.data.height}px`,T?(o.style.left="0",o.style.top="0",o.style.bottom="0",o.style.right="0",_e()):V(),o.style.opacity="1",o.style.pointerEvents="auto"):(V(),o.style.width="1px",o.style.height="1px",o.style.left="",o.style.top="",o.style.opacity="0",o.style.pointerEvents="none"),b.style.display=s||!y?"none":"flex"}if(e.data?.type==="bitpalm-trigger-show"){if(E||!I||g==="off")return;let s=typeof e.data.message=="string"?e.data.message:"";if(!s)return;if(g==="events"){A=s,X("trigger_shown",{message:s,triggerId:e.data.triggerId,triggerType:e.data.triggerType});return}j(),M=lt(l,{message:s,zIndex:f,bottom:y?90:24,onDismiss:()=>{j(),o.contentWindow?.postMessage({type:"bitpalm-trigger-dismiss"},"*")},onEngage:()=>{if(j(),b.style.display="none",Me(),R(),!C){B=!0;return}o.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:s},"*")}}),l.body.appendChild(M)}e.data?.type==="bitpalm-trigger-hide"&&(j(),ie()),e.data?.type==="bitpalm-request-context"&&re(),e.data?.type==="bitpalm-chat-event"&&e.data.event&&X(e.data.event,e.data.data),e.data?.type==="bitpalm-widget-blocked"&&(E=!0,I=!1,b.style.display="none",j(),ie(),V(),o.style.display="none")}};window.addEventListener("message",$e);let D=!1;try{D=localStorage.getItem(`${L}optout`)==="1"}catch{}let se=`${L}vid`,O="";if(!D){try{O=localStorage.getItem(se)||""}catch{}if(!O){let e=l.cookie.match(new RegExp(`(?:^|; )${se}=([^;]+)`));O=e?decodeURIComponent(e[1]):""}O||(O=crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,11)}`);try{localStorage.setItem(se,O)}catch{}try{l.cookie=`${se}=${encodeURIComponent(O)};path=/;max-age=31536000;SameSite=Lax`}catch{}}D||ke(()=>{try{let e=new URLSearchParams(location.search),s={};for(let U of["utm_source","utm_medium","utm_campaign","utm_term","utm_content"]){let _=e.get(U);_&&(s[U]=_)}let a=JSON.stringify({tenant_slug:t,visitor_id:O,url:location.href,referrer:l.referrer||void 0,...Object.keys(s).length>0?{utm:s}:{}}),T=`${r}/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(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(D||!O)return;let a={},T=p(e.name,140),U=bt(e.email),_=N(e.phone),Y=p(e.company,160),J=p(e.external_user_id,140),it=p(e.signature,260),Se=Number(e.signed_at);if(T&&(a.name=T),U&&(a.email=U),_&&(a.phone=_),Y&&(a.company=Y),J&&(a.external_user_id=J),it&&(a.signature=it),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 rt=JSON.stringify({tenant_slug:t,visitor_id:O,url:location.href,referrer:l.referrer||void 0,...a}),st=`${r}/api/widget/identify`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(st,new Blob([rt],{type:"application/json"})):fetch(st,{method:"POST",body:rt,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}}},Re=e=>{if(D||!m||!O)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 T=Yt(s);if(!T)return;let U=[s.getAttribute("id")||"",s.getAttribute("name")||"",s.getAttribute("action")||""].join("|");Oe({...T,identify_source:"form"},U)};!D&&m&&l.addEventListener("submit",Re,!0);let Z=parseInt(sessionStorage.getItem(`${L}pages`)||"0")+1;sessionStorage.setItem(`${L}pages`,String(Z));let z=JSON.parse(sessionStorage.getItem(`${L}hist`)||"[]");z.push(location.href),z.length>20&&(z=z.slice(-20)),sessionStorage.setItem(`${L}hist`,JSON.stringify(z));let He=Date.now(),ae=parseInt(sessionStorage.getItem(`${L}site_start`)||"0");ae||(ae=He,sessionStorage.setItem(`${L}site_start`,String(ae)));let De=[];re=()=>{let e=!1;try{e=!!localStorage.getItem(`${L}visited`)}catch{e=!1}if(o.contentWindow?.postMessage({type:"bitpalm-parent-context",url:location.href,title:l.title,returning:e,pageCount:Z,pageHistory:z,loadedAt:He,siteStart:ae,locale:i,visitorId:D?"":O},"*"),Ge(),!e&&!D)try{localStorage.setItem(`${L}visited`,"1")}catch{}},o.addEventListener("load",()=>{C=!0,re(),[120,450,1100].forEach(e=>{let s=setTimeout(()=>re(),e);De.push(s)}),B&&(B=!1,ge())}),l.readyState==="loading"?l.addEventListener("DOMContentLoaded",()=>ke(R,1600),{once:!0}):ke(R,1600);let Ue=history.pushState.bind(history),Ne=history.replaceState.bind(history),le=()=>{Z++,sessionStorage.setItem(`${L}pages`,String(Z));let e=JSON.parse(sessionStorage.getItem(`${L}hist`)||"[]");if(e.push(location.href),e.length>20&&e.splice(0,e.length-20),z=e,sessionStorage.setItem(`${L}hist`,JSON.stringify(e)),o.contentWindow?.postMessage({type:"bitpalm-page-change",url:location.href,title:l.title,pageCount:Z,pageHistory:e,loadedAt:Date.now()},"*"),!D)try{let s=JSON.stringify({tenant_slug:t,visitor_id:O,url:location.href}),a=`${r}/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(l.documentElement.scrollHeight,l.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"},"*")};l.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=>l.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 ee=()=>{if(b.style.display="none",j(),Me(),R(),!C){B=!0;return}if(A!==null){let e=A;ie(),o.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:e},"*");return}ge()},Ye=e=>{g=e,e==="off"&&(j(),ie()),Be()},Tt=()=>Ye("off"),Ct=()=>Ye(k==="off"?"bubble":k),xe=()=>{V(),o.contentWindow?.postMessage({type:"bitpalm-close"},"*")},Je=e=>{!e||typeof e!="object"||Oe({external_user_id:p(e.externalUserId,140)||void 0,name:p(e.name,140)||void 0,email:bt(e.email)||void 0,phone:N(e.phone)||void 0,company:p(e.company,160)||void 0,signature:p(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=()=>{G?xe():ee()},At=()=>G,Ve=e=>{if(!e||typeof e!="string")return;let s=e.trim().slice(0,1e4);s&&(G||ee(),setTimeout(()=>{o.contentWindow?.postMessage({type:"bitpalm-send-message",message:s},"*")},G?50:500))};function Ge(){o.contentWindow?.postMessage({type:"bitpalm-theme",theme:u},"*")}let ce=e=>{e!==u&&(u=e,Ge())},Ke=e=>{h=ue(e),v?.(),v=null,h==="auto"?(v=Le(ce),ce(ne())):ce(h)};h==="auto"&&(v=Le(ce));let Qe=e=>{let s=e.detail;if(!s||typeof s!="object")return;let a=p(s.slug,120);a&&a!==t||Ke(ue(s.theme))};window.addEventListener("bitpalm-theme",Qe);let te={},Xe=e=>{if(!e||typeof e!="object"||Array.isArray(e))return;te={...te,...e};let s=JSON.stringify(te);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:te},"*")},Lt=()=>{te={},o.contentWindow?.postMessage({type:"bitpalm-custom-context",data:{}},"*")},Ze=e=>{let a=e.detail;if(!a||typeof a!="object")return;let T=p(a.slug,120);if(T&&T!==t)return;let{slug:U,..._}=a;Xe(_)};window.addEventListener("bitpalm-context",Ze);let et=e=>{let a=e.detail;if(!a||typeof a!="object")return;let T=p(a.slug,120);T&&T!==t||Je(a)};window.addEventListener("bitpalm-identify",et);let Ee=e=>{let s=e.detail,a=p(s?.slug,120);return!a||a===t},tt=e=>{Ee(e)&&ee()},nt=e=>{Ee(e)&&xe()},ot=e=>{if(!Ee(e))return;let s=e.detail?.message;typeof s=="string"&&Ve(s)};return window.addEventListener("bitpalm-open",tt),window.addEventListener("bitpalm-close",nt),window.addEventListener("bitpalm-send",ot),{open:ee,close:xe,toggle:It,isOpen:At,identify:Je,context:Xe,resetContext:Lt,send:Ve,on:(e,s)=>(q.has(e)||q.set(e,new Set),q.get(e).add(s),()=>q.get(e)?.delete(s)),off:(e,s)=>{q.get(e)?.delete(s)},setTheme:Ke,disableTriggers:Tt,enableTriggers:Ct,destroy:()=>{window.removeEventListener("message",$e),window.removeEventListener("scroll",je),window.removeEventListener("popstate",le),l.removeEventListener("mouseout",Fe),l.removeEventListener("submit",Re,!0),ze.forEach(e=>l.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),v?.(),q.clear(),V(),j(),b.remove(),o.remove()}}}function Vt(n){let t=n.split(`
2
- `).filter(i=>i.startsWith("data:")).map(i=>i.slice(5).trimStart()).join(`
3
- `);if(!t)return null;try{let i=JSON.parse(t);return i&&typeof i.type=="string"?i:null}catch{return null}}function me(n){let t=[],i=n.replace(/\r\n/g,`
4
- `),r=i.indexOf(`
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
+ `).filter(r=>r.startsWith("data:")).map(r=>r.slice(5).trimStart()).join(`
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(;r>=0;){let c=Vt(i.slice(0,r));c&&t.push(c),i=i.slice(r+2),r=i.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:i}}function wt(n){return me(`${n}
8
+ `)}return{events:n,rest:r}}function Ct(t){return me(`${t}
9
9
 
10
- `).events}var H=class extends Error{constructor(i,r,c){super(r);this.code=i;this.status=c;this.name="BitPalmApiError"}},Gt="https://agents.bitpalm.ai";function Kt(){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 H(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??Gt).replace(/\/+$/,""),i=n.storage===void 0?Kt():n.storage,r=`bitpalm:${n.key.slice(0,14)}`,c=o=>{try{return i?.getItem(`${r}:${o}`)??null}catch{return null}},f=(o,d)=>{try{d===null?i?.removeItem(`${r}:${o}`):i?.setItem(`${r}:${o}`,d)}catch{}},m=n.visitorId??c("visitor")??Qt();n.visitorId||f("visitor",m);let y=c("conversation"),l=!1,h=null,u=o=>{for(let d of o)d.fromHuman&&d.createdAt&&(!h||d.createdAt>h)&&(h=d.createdAt)},v={Authorization:`Bearer ${n.key}`},k=async(o,d)=>{let w=await fetch(`${t}${o}`,{...d,headers:{...v,...d?.headers??{}}});if(!w.ok)throw await Xt(w);return w},g=o=>{y=o,f("conversation",o)},A=(o,d,w)=>{for(let x of o)if(x.type==="delta")d.text+=x.text,w?.(x.text,d.text);else if(x.type==="replace")d.text=x.text,w?.("",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 y},get handoff(){return l},async agent(o){let d=new URLSearchParams({locale:n.locale??"en"});return o?.url&&d.set("url",o.url),(await k(`/api/v1/agent?${d.toString()}`)).json()},async send(o,d={}){let w=await k("/api/v1/chat",{method:"POST",headers:{"Content-Type":"application/json"},signal:d.signal,body:JSON.stringify({message:o,visitorId:m,conversationId:y??void 0,context:d.context,fileIds:d.fileIds})}),x={text:"",result:null},b=w.body&&typeof w.body.getReader=="function"?w.body.getReader():null;if(b){let I=new TextDecoder,E="";for(;;){let{done:P,value:C}=await b.read();if(P)break;let B=me(E+I.decode(C,{stream:!0}));E=B.rest,A(B.events,x,d.onDelta)}A(me(`${E}
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,x,d.onDelta)}else A(wt(await w.text()),x,d.onDelta);let M=x.result??{text:x.text,conversationId:y??""};return M.conversationId&&g(M.conversationId),l=M.handoff===!0,M},async history(){let o=new URLSearchParams({visitorId:m});y&&o.set("conversationId",y);let d=await(await k(`/api/v1/chat/history?${o.toString()}`)).json();return d.conversationId&&g(d.conversationId),l=d.handoff===!0,h=null,u(d.messages),d.messages},async updates(){if(!y)return{handoff:!1,teamTyping:!1,messages:[]};let o=new URLSearchParams({visitorId:m,conversationId:y});h&&o.set("after",h);let d=await(await k(`/api/v1/chat/updates?${o.toString()}`)).json(),w=d.messages??[];return u(w),l=d.handoff===!0,{handoff:l,teamTyping:d.teamTyping===!0,messages:w}},async identify(o){await k("/api/v1/identify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...o,visitorId:m})})},async upload(o,d="photo.jpg"){let w=new FormData;w.append("file",o,d),w.append("visitorId",m),y&&w.append("conversationId",y);let x=await(await k("/api/v1/chat/upload",{method:"POST",body:w})).json();return{id:x.id,url:x.url}},async feedback(o,d){if(!y)throw new H("bad_request","There is no conversation yet.",400);await k("/api/v1/chat/feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({visitorId:m,conversationId:y,messageIndex:o,feedback:d})})},reset(){g(null),l=!1,h=null}}}function Zt(n){let t=(0,S.useRef)(null),i=(0,S.useRef)(!1);return(0,S.useEffect)(()=>{t.current?.setTheme(n.theme??"auto")},[n.theme]),(0,S.useEffect)(()=>{if(i.current)return;i.current=!0;let{onReady:r,...c}=n;return t.current=vt(c),r?.(t.current),()=>{t.current?.destroy(),t.current=null,i.current=!1}},[]),null}var en=3e3;function tn(){return typeof document<"u"&&document.visibilityState==="hidden"}function Et(n,t){return[...n.slice(0,-1),t]}function nn(n,t){let i=new Set(n.map(c=>c.id).filter(Boolean)),r=t.filter(c=>!c.id||!i.has(c.id));return r.length?[...n,...r]:n}function St(n){let t=n[n.length-1];return t?.role==="assistant"&&!t.text&&!t.cards?.length?n.slice(0,-1):n}function on(n){let[t]=(0,S.useState)(()=>xt(n)),[i,r]=(0,S.useState)([]),[c,f]=(0,S.useState)("idle"),[m,y]=(0,S.useState)(null),[l,h]=(0,S.useState)(null),[u,v]=(0,S.useState)(!1),[k,g]=(0,S.useState)(!1),A=(0,S.useRef)(!1),o=(0,S.useRef)(0),d=n.loadHistory!==!1,w=n.live!==!1;(0,S.useEffect)(()=>{let I=!0;return t.agent().then(E=>I&&h(E)).catch(()=>{}),d&&t.history().then(E=>{I&&(r(P=>P.length?P:E),v(t.handoff))}).catch(()=>{}),()=>{I=!1}},[t,d]),(0,S.useEffect)(()=>{if(!w||!u)return;let I=!1,E=!1,P=async()=>{if(!(I||E||tn())){E=!0;try{let R=await t.updates();if(I)return;g(R.teamTyping),R.messages.length&&r(W=>nn(W,R.messages)),R.handoff||v(!1)}catch{}finally{E=!1}}},C=()=>{P()};P();let B=setInterval(()=>{P()},en);return typeof document<"u"&&document.addEventListener("visibilitychange",C),()=>{I=!0,clearInterval(B),typeof document<"u"&&document.removeEventListener("visibilitychange",C)}},[t,u,w]);let x=(0,S.useCallback)(async(I,E={})=>{let P=I.trim();if(!P&&!E.fileIds?.length)return null;r(C=>[...C,{role:"user",text:P},{role:"assistant",text:""}]),f("streaming"),y(null),A.current=!0,o.current+=1;try{let C=await t.send(P,{...E,onDelta:(B,R)=>r(W=>Et(W,{role:"assistant",text:R}))});return r(B=>St(Et(B,{role:"assistant",text:C.text,...C.cards?{cards:C.cards}:{}}))),v(C.handoff===!0),f("idle"),C}catch(C){let B=C instanceof H?C:new H("network_error",String(C),0);return r(St),y(B),f("error"),null}finally{A.current=!1}},[t]),b=(0,S.useCallback)(async()=>{if(A.current)return;let I=o.current,E=await t.history();A.current||o.current!==I||(r(E),v(t.handoff))},[t]),M=(0,S.useCallback)(()=>{t.reset(),r([]),y(null),v(!1),f("idle")},[t]);return{messages:i,send:x,status:c,error:m,agent:l,handoff:u,teamTyping:u&&k,refresh:b,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