@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/README.md +14 -0
- package/dist/headless.cjs +6 -6
- package/dist/headless.cjs.map +1 -1
- package/dist/headless.d.cts +20 -2
- package/dist/headless.d.ts +20 -2
- package/dist/headless.js +8 -8
- package/dist/headless.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -1
- package/dist/index.d.ts +34 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +7 -7
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +56 -2
- package/dist/react.d.ts +56 -2
- package/dist/react.js +8 -8
- package/dist/react.js.map +1 -1
- package/dist/widget.global.js +1 -1
- package/dist/widget.global.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function ae(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 st(t){return t==="off"?!1:t==="events"?"events":!0}function rt(t,n){let l=t.createElement("div");l.setAttribute("data-bitpalm-trigger",""),l.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;`,l.style.position="fixed",l.style.right="24px",l.style.bottom=`${n.bottom}px`;let r=t.createElement("p");r.style.cssText="font-size:14px;color:#1f2937;margin:0;",r.textContent=n.message;let m=t.createElement("div");m.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 u=t.createElement("button");return u.type="button",u.setAttribute("aria-label","Close"),u.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;",u.textContent="\u2715",u.onclick=g=>{g.stopPropagation(),n.onDismiss()},l.onclick=()=>n.onEngage(),l.append(r,m,u),l}var xt=["dark","dark-mode","dark-theme","theme-dark"],St=["light","light-mode","light-theme","theme-light"],ct=["data-theme","data-color-scheme","data-color-mode","data-mode","data-bs-theme"],dt="(prefers-color-scheme: dark)";function R(t){return t==="light"||t==="dark"?t:"auto"}function at(t){if(!t)return null;if(xt.some(n=>t.classList.contains(n)))return"dark";if(St.some(n=>t.classList.contains(n)))return"light";for(let n of ct){let l=(t.getAttribute(n)||"").toLowerCase();if(l.includes("dark"))return"dark";if(l.includes("light"))return"light"}return null}function xe(t){let n=t/255;return n<=.03928?n/12.92:((n+.055)/1.055)**2.4}function lt(t,n){if(!t)return null;let l=n.getComputedStyle(t).backgroundColor.match(/rgba?\(([^)]+)\)/);if(!l)return null;let[r,m,u,g=1]=l[1].split(/[\s,/]+/).filter(Boolean).map(Number);return[r,m,u,g].some(a=>Number.isNaN(a))||g<.5?null:.2126*xe(r)+.7152*xe(m)+.0722*xe(u)<.2?"dark":"light"}function Lt(t,n){let l=n.getComputedStyle(t.documentElement).colorScheme||"",r=t.querySelector('meta[name="color-scheme"]')?.getAttribute("content")||"",m=`${l} ${r}`.toLowerCase();return m.includes("dark")?m.includes("light")?n.matchMedia?.(dt).matches?"dark":"light":"dark":null}function W(t=document,n=window){return at(t.documentElement)??at(t.body)??lt(t.body,n)??lt(t.documentElement,n)??Lt(t,n)??"light"}function Se(t,n=document,l=window){let r=W(n,l),m=!1,u=()=>{m=!1;let c=W(n,l);c!==r&&(r=c,t(c))},g=()=>{m||(m=!0,typeof l.requestAnimationFrame=="function"?l.requestAnimationFrame(u):setTimeout(u,16))},T=typeof MutationObserver<"u"?new MutationObserver(g):null,a={attributes:!0,attributeFilter:["class","style",...ct]};T?.observe(n.documentElement,a),n.body&&T?.observe(n.body,a);let h=typeof l.matchMedia=="function"?l.matchMedia(dt):null;return h?.addEventListener?.("change",g),()=>{T?.disconnect(),h?.removeEventListener?.("change",g)}}var It="https://agents.bitpalm.ai",v="_bp_",_t=new Set(["password","file","checkbox","radio","submit","button","reset","image"]),At=8e3,mt=4096,ut=`${v}identify_signature`,ft=`${v}identify_fingerprint`,gt=`${v}identify_sent_at`,pt="0 4px 14px rgba(0,0,0,0.18)";function Ct(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 d(t,n=180){return t?t.replace(/\s+/g," ").trim().slice(0,n):""}function Mt(t){return t?` ${t.toLowerCase().replace(/[_-]+/g," ").replace(/[^a-z0-9\s@.]/g," ").replace(/\s+/g," ").trim()} `:""}function F(t,n){for(let l of n)if(t.includes(l))return!0;return!1}function M(t){return/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/i.test(t)}function _(t){let n=d(t,50);if(!n)return"";let l=n.startsWith("+"),r=n.replace(/\D/g,"");return r.length<6?"":`${l?"+":""}${r.slice(0,20)}`}function ht(t){let n=d(t,140).toLowerCase();return!n||!M(n)?"":n}function U(t,n){for(let l of n){let r=t.querySelector(l),m=d(r?.value);if(m)return m}return""}function kt(t){return d(t.getAttribute("data-bp-field")||t.getAttribute("data-bitpalm-field"),64).toLowerCase().replace(/[_\s]+/g,"-")}function Bt(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Pt(t,n){let l=[],r=(a,h=140)=>{let c=d(a,h);c&&l.push(c)};r(n.name),r(n.id),r(n.getAttribute("autocomplete")),r(n.getAttribute("placeholder")),r(n.getAttribute("aria-label")),r(n.getAttribute("data-field")),r(n.getAttribute("data-name")),r(n.getAttribute("data-label")),r(n.getAttribute("data-bp-field")),r(n.getAttribute("data-bitpalm-field"));let m=new Set,u=a=>{let h=d(a,200);!h||m.has(h)||(m.add(h),l.push(h))};for(let a of Array.from(n.labels||[]))u(a.textContent);if(n.id){let a=t.querySelector(`label[for="${Bt(n.id)}"]`);u(a?.textContent)}let g=n.closest("label");u(g?.textContent);let T=n.getAttribute("aria-labelledby");if(T)for(let a of T.split(/\s+/)){if(!a)continue;let h=t.ownerDocument.getElementById(a);u(h?.textContent)}return l}function Ht(t){let n=d(U(t,["[data-bp-email]","[data-bitpalm-email]"]),140).toLowerCase(),l=_(U(t,["[data-bp-phone]","[data-bitpalm-phone]"])),r=d(U(t,["[data-bp-name]","[data-bitpalm-name]","[data-bp-full-name]","[data-bitpalm-full-name]"])),m=d(U(t,["[data-bp-first-name]","[data-bitpalm-first-name]"])),u=d(U(t,["[data-bp-last-name]","[data-bitpalm-last-name]"])),g=d(U(t,["[data-bp-company]","[data-bitpalm-company]"]));for(let c of Array.from(t.elements)){if(!(c instanceof HTMLInputElement||c instanceof HTMLTextAreaElement||c instanceof HTMLSelectElement)||c.disabled||c instanceof HTMLInputElement&&_t.has(c.type.toLowerCase()))continue;let y=kt(c),z=c.hasAttribute("data-bp-email")||c.hasAttribute("data-bitpalm-email")||c.hasAttribute("data-bp-phone")||c.hasAttribute("data-bitpalm-phone")||c.hasAttribute("data-bp-name")||c.hasAttribute("data-bitpalm-name")||c.hasAttribute("data-bp-full-name")||c.hasAttribute("data-bitpalm-full-name")||c.hasAttribute("data-bp-first-name")||c.hasAttribute("data-bitpalm-first-name")||c.hasAttribute("data-bp-last-name")||c.hasAttribute("data-bitpalm-last-name")||c.hasAttribute("data-bp-company")||c.hasAttribute("data-bitpalm-company")||!!y;if(c instanceof HTMLInputElement&&c.type.toLowerCase()==="hidden"&&!z)continue;let f=d(c.value);if(!f)continue;let A=c instanceof HTMLInputElement?c.type.toLowerCase():"",s=Mt(Pt(t,c).join(" "));if(!n&&y==="email"&&M(f)){n=f.toLowerCase();continue}if(!l&&(y==="phone"||y==="tel"||y==="mobile"||y==="whatsapp")){let S=_(f);if(S){l=S;continue}}if(!g&&y==="company"){g=d(f,160);continue}if(!m&&(y==="first-name"||y==="firstname")){m=d(f,100);continue}if(!u&&(y==="last-name"||y==="lastname"||y==="surname")){u=d(f,100);continue}if(!r&&(y==="name"||y==="full-name"||y==="fullname")){!M(f)&&!_(f)&&(r=d(f,140));continue}let K=A==="email"||F(s,[" email "," e mail "," mail "," email adresse "," mailadresse "," correo "]),O=A==="tel"||F(s,[" phone "," phone number "," mobile "," tel "," telefon "," telefonnummer "," whatsapp "," handy "," kontakt "," nummer "]),le=F(s,[" company "," company name "," firma "," firmenname "," organization "," organisation "," business "," unternehmen "," agency "," brokerage "]),p=F(s,[" first name "," firstname "," given name "," givenname "," vorname "," fname "]),k=F(s,[" last name "," lastname "," family name "," familyname "," surname "," nachname "," lname "]),j=F(s,[" full name "," fullname "," contact name "," name "])&&!K&&!O;if(!n&&K&&M(f)){n=f.toLowerCase();continue}if(!l&&O){let S=_(f);if(S){l=S;continue}}if(!g&&le){g=d(f,160);continue}if(!m&&p){m=d(f,100);continue}if(!u&&k){u=d(f,100);continue}if(!r&&j&&!M(f)&&!_(f)){r=d(f,140);continue}!n&&M(f)&&(n=f.toLowerCase())}if(r&&(M(r)||_(r))&&(r=""),g&&(M(g)||_(g))&&(g=""),r||(r=d([m,u].filter(Boolean).join(" "),140)),r&&n&&r.toLowerCase()===n.toLowerCase()&&(r=""),!!!(n||l)&&!!!(r&&g))return null;let h={...r?{name:r}:{},...n?{email:n}:{},...l?{phone:l}:{},...g?{company:g}:{}};return Object.keys(h).length>0?h:null}function $t(){if(typeof document<"u"){let t=document.documentElement.lang;if(t)return t.slice(0,2).toLowerCase()}return"en"}function Le(t,n=1200){if(typeof window<"u"&&"requestIdleCallback"in window){window.requestIdleCallback(t,{timeout:n});return}setTimeout(t,Math.min(n,300))}function Ie(){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 l=window.matchMedia("(pointer: coarse)").matches,r=window.matchMedia("(hover: none)").matches,m=Math.min(window.screen?.width||window.innerWidth,window.screen?.height||window.innerHeight);return l&&r&&m<=900}function _e(t){let{slug:n,locale:l=$t(),baseUrl:r=It,token:m,zIndex:u=9999,autoIdentify:g=!0,launcher:T=!0}=t,a=document,h=R(t.theme),c=h==="auto"?W():h,y=null,z=ae(t.triggers),f=z,A=null,s=a.createElement("iframe");s.setAttribute("data-bitpalm-chat","");let K=`${r}/t/${n}/widget`,O=new URLSearchParams({locale:l,theme:c});m&&O.set("token",m),f==="off"&&O.set("triggers","off"),s.src=`${K}?${O.toString()}`,s.allow="clipboard-write; microphone",s.setAttribute("allowtransparency","true"),s.loading="lazy",s.style.cssText=`position:fixed;bottom:0;right:0;width:1px;height:1px;border:none;z-index:${u};background:transparent;color-scheme:normal;opacity:0;pointer-events:none;`;let le=new URL(s.src).origin,p=a.createElement("div");if(p.setAttribute("role","button"),p.setAttribute("aria-label","Chat"),p.setAttribute("data-bitpalm-launcher",""),p.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:${u-1};background:#171717;box-shadow:${pt};transition:transform .2s,opacity .3s;opacity:0;`,p.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>',p.onmouseenter=()=>{p.style.transform="scale(1.05)"},p.onmouseleave=()=>{p.style.transform="scale(1)"},p.onclick=()=>J(),T&&a.body.appendChild(p),!a.getElementById("_bp_fade")){let e=a.createElement("style");e.id="_bp_fade",e.textContent="@keyframes _bp_fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}",a.head.appendChild(e)}let k=null,j=!1,S=!1,Ae=!1,ce=!1,V=!1,X=()=>{Ae||(Ae=!0,a.body.appendChild(s))},Z=!1,de=0,Q={overflow:"",overscrollBehavior:""},E={overflow:"",overscrollBehavior:"",position:"",top:"",left:"",right:"",width:""},Ce=()=>{if(Z||!Ie())return;let o=a.documentElement,i=a.body;de=window.scrollY||window.pageYOffset||0,Q.overflow=o.style.overflow,Q.overscrollBehavior=o.style.overscrollBehavior,E.overflow=i.style.overflow,E.overscrollBehavior=i.style.overscrollBehavior,E.position=i.style.position,E.top=i.style.top,E.left=i.style.left,E.right=i.style.right,E.width=i.style.width,o.style.overflow="hidden",o.style.overscrollBehavior="none",i.style.overflow="hidden",i.style.overscrollBehavior="none",i.style.position="fixed",i.style.top=`-${de}px`,i.style.left="0",i.style.right="0",i.style.width="100%",Z=!0},D=()=>{if(!Z)return;let e=a.documentElement,o=a.body;e.style.overflow=Q.overflow,e.style.overscrollBehavior=Q.overscrollBehavior,o.style.overflow=E.overflow,o.style.overscrollBehavior=E.overscrollBehavior,o.style.position=E.position,o.style.top=E.top,o.style.left=E.left,o.style.right=E.right,o.style.width=E.width,window.scrollTo(0,de),Z=!1},Me=()=>{let e=Ie();s.style.display==="none"&&(s.style.display=""),e?(s.style.width="100vw",s.style.height="100dvh",s.style.left="0",s.style.top="0",s.style.bottom="0",s.style.right="0",Ce()):(s.style.width="420px",s.style.height="620px",s.style.bottom="24px",s.style.right="24px",s.style.left="",s.style.top="",D()),s.style.opacity="1",s.style.pointerEvents="auto"},C=()=>{k&&(k.remove(),k=null)},ee=()=>{A!==null&&(A=null,q("trigger_hidden"))},ke=()=>{s.contentWindow?.postMessage({type:"bitpalm-triggers",enabled:f!=="off"},"*")},te=()=>{},me=()=>{},N=!1,B=new Map;function q(e,o){let i=B.get(e);if(i)for(let b of i)try{b(o)}catch{}}let Be=e=>{if(e.origin===le){if(e.data?.type==="bitpalm-widget-config"){S=!1,j=!0,s.style.display==="none"&&(s.style.display=""),e.data.primaryColor&&(p.style.background=e.data.primaryColor,p.style.boxShadow=e.data.chatShadow==="none"?"none":pt);let o=e.data.chatButtonIconColor||"black";if(e.data.chatButtonIconSvg){p.innerHTML="";let i=a.createElement("span");i.style.cssText=`display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:${o}`;let w=new DOMParser().parseFromString(e.data.chatButtonIconSvg,"image/svg+xml").querySelector("svg");w?(w.querySelectorAll("script,foreignObject").forEach(H=>H.remove()),w.querySelectorAll("*").forEach(H=>{for(let $ of[...H.attributes])($.name.startsWith("on")||$.value&&$.value.includes("javascript:"))&&H.removeAttribute($.name)}),w.setAttribute("width","24"),w.setAttribute("height","24"),w.style.display="block",i.appendChild(w)):i.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>',p.appendChild(i)}else{let i=p.querySelector("svg");i&&(i.style.stroke=o)}T&&(p.style.display="flex",requestAnimationFrame(()=>{p.style.opacity="1"})),ke()}if(e.data?.type==="bitpalm-widget-resize"){let o=e.data.width>0,i=N;N=o,o&&!i&&q("widget_opened"),!o&&i&&q("widget_closed");let b=Ie();o?(s.style.width=b?"100vw":`${e.data.width}px`,s.style.height=b?"100dvh":`${e.data.height}px`,b?(s.style.left="0",s.style.top="0",s.style.bottom="0",s.style.right="0",Ce()):D(),s.style.opacity="1",s.style.pointerEvents="auto"):(D(),s.style.width="1px",s.style.height="1px",s.style.left="",s.style.top="",s.style.opacity="0",s.style.pointerEvents="none"),p.style.display=o||!T?"none":"flex"}if(e.data?.type==="bitpalm-trigger-show"){if(S||!j||f==="off")return;let o=typeof e.data.message=="string"?e.data.message:"";if(!o)return;if(f==="events"){A=o,q("trigger_shown",{message:o,triggerId:e.data.triggerId,triggerType:e.data.triggerType});return}C(),k=rt(a,{message:o,zIndex:u,bottom:T?90:24,onDismiss:()=>{C(),s.contentWindow?.postMessage({type:"bitpalm-trigger-dismiss"},"*")},onEngage:()=>{if(C(),p.style.display="none",Me(),X(),!ce){V=!0;return}s.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:o},"*")}}),a.body.appendChild(k)}e.data?.type==="bitpalm-trigger-hide"&&(C(),ee()),e.data?.type==="bitpalm-request-context"&&te(),e.data?.type==="bitpalm-chat-event"&&e.data.event&&q(e.data.event,e.data.data),e.data?.type==="bitpalm-widget-blocked"&&(S=!0,j=!1,p.style.display="none",C(),ee(),D(),s.style.display="none")}};window.addEventListener("message",Be);let L=!1;try{L=localStorage.getItem(`${v}optout`)==="1"}catch{}let ne=`${v}vid`,x="";if(!L){try{x=localStorage.getItem(ne)||""}catch{}if(!x){let e=a.cookie.match(new RegExp(`(?:^|; )${ne}=([^;]+)`));x=e?decodeURIComponent(e[1]):""}x||(x=crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,11)}`);try{localStorage.setItem(ne,x)}catch{}try{a.cookie=`${ne}=${encodeURIComponent(x)};path=/;max-age=31536000;SameSite=Lax`}catch{}}L||Le(()=>{try{let e=new URLSearchParams(location.search),o={};for(let I of["utm_source","utm_medium","utm_campaign","utm_term","utm_content"]){let w=e.get(I);w&&(o[I]=w)}let i=JSON.stringify({tenant_slug:n,visitor_id:x,url:location.href,referrer:a.referrer||void 0,...Object.keys(o).length>0?{utm:o}:{}}),b=`${r}/api/widget/impression`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(b,new Blob([i],{type:"application/json"})):fetch(b,{method:"POST",body:i,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}},2e3);let ue="",fe="",ge=0;try{ue=sessionStorage.getItem(ut)||"",fe=sessionStorage.getItem(ft)||"";let e=parseInt(sessionStorage.getItem(gt)||"0",10);Number.isFinite(e)&&e>0&&(ge=e)}catch{}let Pe=(e,o="")=>{if(L||!x)return;let i={},b=d(e.name,140),I=ht(e.email),w=_(e.phone),H=d(e.company,160),$=d(e.external_user_id,140),nt=d(e.signature,260),we=Number(e.signed_at);if(b&&(i.name=b),I&&(i.email=I),w&&(i.phone=w),H&&(i.company=H),$&&(i.external_user_id=$),nt&&(i.signature=nt),Number.isFinite(we)&&we>0&&(i.signed_at=Math.floor(we)),(e.signature_version==="v1"||i.signature)&&(i.signature_version="v1"),(e.identify_source==="manual"||e.identify_source==="form")&&(i.identify_source=e.identify_source),!i.name&&!i.email&&!i.phone&&!i.company&&!i.external_user_id)return;let re=Ct(i),Ee=[o.toLowerCase(),re].filter(Boolean).join("|"),Te=Date.now();if(!(Te-ge<At&&(Ee===ue||re===fe))){ue=Ee,fe=re,ge=Te;try{sessionStorage.setItem(ut,Ee),sessionStorage.setItem(ft,re),sessionStorage.setItem(gt,String(Te))}catch{}try{let ot=JSON.stringify({tenant_slug:n,visitor_id:x,url:location.href,referrer:a.referrer||void 0,...i}),it=`${r}/api/widget/identify`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(it,new Blob([ot],{type:"application/json"})):fetch(it,{method:"POST",body:ot,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}}},He=e=>{if(L||!g||!x)return;let o=e.target instanceof HTMLFormElement?e.target:e.target instanceof Element?e.target.closest("form"):null;if(!(o instanceof HTMLFormElement))return;let i=(o.getAttribute("data-bp-identify")||o.getAttribute("data-bitpalm-identify")||"").toLowerCase();if(i==="off"||i==="false"||i==="0")return;let b=Ht(o);if(!b)return;let I=[o.getAttribute("id")||"",o.getAttribute("name")||"",o.getAttribute("action")||""].join("|");Pe({...b,identify_source:"form"},I)};!L&&g&&a.addEventListener("submit",He,!0);let Y=parseInt(sessionStorage.getItem(`${v}pages`)||"0")+1;sessionStorage.setItem(`${v}pages`,String(Y));let P=JSON.parse(sessionStorage.getItem(`${v}hist`)||"[]");P.push(location.href),P.length>20&&(P=P.slice(-20)),sessionStorage.setItem(`${v}hist`,JSON.stringify(P));let $e=Date.now(),oe=parseInt(sessionStorage.getItem(`${v}site_start`)||"0");oe||(oe=$e,sessionStorage.setItem(`${v}site_start`,String(oe)));let Oe=[];te=()=>{let e=!1;try{e=!!localStorage.getItem(`${v}visited`)}catch{e=!1}if(s.contentWindow?.postMessage({type:"bitpalm-parent-context",url:location.href,title:a.title,returning:e,pageCount:Y,pageHistory:P,loadedAt:$e,siteStart:oe,locale:l,visitorId:L?"":x},"*"),Je(),!e&&!L)try{localStorage.setItem(`${v}visited`,"1")}catch{}},s.addEventListener("load",()=>{ce=!0,te(),[120,450,1100].forEach(e=>{let o=setTimeout(()=>te(),e);Oe.push(o)}),V&&(V=!1,me())}),a.readyState==="loading"?a.addEventListener("DOMContentLoaded",()=>Le(X,1600),{once:!0}):Le(X,1600);let De=history.pushState.bind(history),Ne=history.replaceState.bind(history),ie=()=>{Y++,sessionStorage.setItem(`${v}pages`,String(Y));let e=JSON.parse(sessionStorage.getItem(`${v}hist`)||"[]");if(e.push(location.href),e.length>20&&e.splice(0,e.length-20),P=e,sessionStorage.setItem(`${v}hist`,JSON.stringify(e)),s.contentWindow?.postMessage({type:"bitpalm-page-change",url:location.href,title:a.title,pageCount:Y,pageHistory:e,loadedAt:Date.now()},"*"),!L)try{let o=JSON.stringify({tenant_slug:n,visitor_id:x,url:location.href}),i=`${r}/api/widget/impression`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(i,new Blob([o],{type:"application/json"})):fetch(i,{method:"POST",body:o,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}};history.pushState=function(...e){De(...e),ie()},history.replaceState=function(...e){Ne(...e),ie()},window.addEventListener("popstate",ie);let We=-1,pe,Re=()=>{clearTimeout(pe),pe=setTimeout(()=>{let e=Math.max(a.documentElement.scrollHeight,a.body.scrollHeight)-window.innerHeight,o=e>0?Math.round(window.scrollY/e*100):100;o!==We&&(We=o,s.contentWindow?.postMessage({type:"bitpalm-scroll-depth",percent:o},"*"))},500)};window.addEventListener("scroll",Re,{passive:!0});let Fe=e=>{e.clientY<=0&&s.contentWindow?.postMessage({type:"bitpalm-exit-intent"},"*")};a.addEventListener("mouseout",Fe);let he,Ue=!1,ye=()=>{clearTimeout(he),!Ue&&(he=setTimeout(()=>{Ue=!0,s.contentWindow?.postMessage({type:"bitpalm-inactivity"},"*")},15e3))},ze=["mousemove","keydown","scroll","touchstart"];ze.forEach(e=>a.addEventListener(e,ye,{passive:!0})),ye(),me=()=>{s.contentWindow?.postMessage({type:"bitpalm-open"},"*");let e=s.src.split("#")[0];s.src=`${e}#bp-open-${Date.now()}`};let J=()=>{if(p.style.display="none",C(),Me(),X(),!ce){V=!0;return}if(A!==null){let e=A;ee(),s.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:e},"*");return}me()},je=e=>{f=e,e==="off"&&(C(),ee()),ke()},bt=()=>je("off"),vt=()=>je(z==="off"?"bubble":z),be=()=>{D(),s.contentWindow?.postMessage({type:"bitpalm-close"},"*")},qe=e=>{!e||typeof e!="object"||Pe({external_user_id:d(e.externalUserId,140)||void 0,name:d(e.name,140)||void 0,email:ht(e.email)||void 0,phone:_(e.phone)||void 0,company:d(e.company,160)||void 0,signature:d(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")},wt=()=>{N?be():J()},Et=()=>N,Ye=e=>{if(!e||typeof e!="string")return;let o=e.trim().slice(0,1e4);o&&(N||J(),setTimeout(()=>{s.contentWindow?.postMessage({type:"bitpalm-send-message",message:o},"*")},N?50:500))};function Je(){s.contentWindow?.postMessage({type:"bitpalm-theme",theme:c},"*")}let se=e=>{e!==c&&(c=e,Je())},Ge=e=>{h=R(e),y?.(),y=null,h==="auto"?(y=Se(se),se(W())):se(h)};h==="auto"&&(y=Se(se));let Ke=e=>{let o=e.detail;if(!o||typeof o!="object")return;let i=d(o.slug,120);i&&i!==n||Ge(R(o.theme))};window.addEventListener("bitpalm-theme",Ke);let G={},Ve=e=>{if(!e||typeof e!="object"||Array.isArray(e))return;G={...G,...e};let o=JSON.stringify(G);o.length>mt&&console.warn(`[BitPalm] Custom context exceeds ${mt} bytes (${o.length}). It may be truncated.`),s.contentWindow?.postMessage({type:"bitpalm-custom-context",data:G},"*")},Tt=()=>{G={},s.contentWindow?.postMessage({type:"bitpalm-custom-context",data:{}},"*")},Xe=e=>{let i=e.detail;if(!i||typeof i!="object")return;let b=d(i.slug,120);if(b&&b!==n)return;let{slug:I,...w}=i;Ve(w)};window.addEventListener("bitpalm-context",Xe);let Ze=e=>{let i=e.detail;if(!i||typeof i!="object")return;let b=d(i.slug,120);b&&b!==n||qe(i)};window.addEventListener("bitpalm-identify",Ze);let ve=e=>{let o=e.detail,i=d(o?.slug,120);return!i||i===n},Qe=e=>{ve(e)&&J()},et=e=>{ve(e)&&be()},tt=e=>{if(!ve(e))return;let o=e.detail?.message;typeof o=="string"&&Ye(o)};return window.addEventListener("bitpalm-open",Qe),window.addEventListener("bitpalm-close",et),window.addEventListener("bitpalm-send",tt),{open:J,close:be,toggle:wt,isOpen:Et,identify:qe,context:Ve,resetContext:Tt,send:Ye,on:(e,o)=>(B.has(e)||B.set(e,new Set),B.get(e).add(o),()=>B.get(e)?.delete(o)),off:(e,o)=>{B.get(e)?.delete(o)},setTheme:Ge,disableTriggers:bt,enableTriggers:vt,destroy:()=>{window.removeEventListener("message",Be),window.removeEventListener("scroll",Re),window.removeEventListener("popstate",ie),a.removeEventListener("mouseout",Fe),a.removeEventListener("submit",He,!0),ze.forEach(e=>a.removeEventListener(e,ye)),clearTimeout(pe),clearTimeout(he),Oe.forEach(e=>clearTimeout(e)),history.pushState=De,history.replaceState=Ne,window.removeEventListener("bitpalm-identify",Ze),window.removeEventListener("bitpalm-context",Xe),window.removeEventListener("bitpalm-theme",Ke),window.removeEventListener("bitpalm-open",Qe),window.removeEventListener("bitpalm-close",et),window.removeEventListener("bitpalm-send",tt),y?.(),B.clear(),D(),C(),p.remove(),s.remove()}}}function yt(t){if(t==null)return;let n=t.trim().toLowerCase();if(["1","true","yes","on"].includes(n))return!0;if(["0","false","no","off"].includes(n))return!1}if(typeof document<"u"){let t=document.currentScript;if(t?.dataset.slug){let n=()=>{_e({slug:t.dataset.slug,locale:t.dataset.locale,baseUrl:t.dataset.baseUrl,token:t.dataset.token,zIndex:t.dataset.zIndex?Number(t.dataset.zIndex):void 0,autoIdentify:yt(t.dataset.autoIdentify),theme:R(t.dataset.theme),launcher:yt(t.dataset.launcher),triggers:t.dataset.triggers===void 0?void 0:st(ae(t.dataset.triggers))})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",n):n()}}export{_e as createWidget,W as detectHostTheme};
|
|
1
|
+
function ae(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 dt(t){return t==="off"?!1:t==="events"?"events":!0}function mt(t,n){let l=t.createElement("div");l.setAttribute("data-bitpalm-trigger",""),l.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;`,l.style.position="fixed",l.style.right="24px",l.style.bottom=`${n.bottom}px`;let r=t.createElement("p");r.style.cssText="font-size:14px;color:#1f2937;margin:0;",r.textContent=n.message;let m=t.createElement("div");m.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 u=t.createElement("button");return u.type="button",u.setAttribute("aria-label","Close"),u.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;",u.textContent="\u2715",u.onclick=g=>{g.stopPropagation(),n.onDismiss()},l.onclick=()=>n.onEngage(),l.append(r,m,u),l}var _t=["dark","dark-mode","dark-theme","theme-dark"],Ct=["light","light-mode","light-theme","theme-light"],gt=["data-theme","data-color-scheme","data-color-mode","data-mode","data-bs-theme"],pt="(prefers-color-scheme: dark)";function F(t){return t==="light"||t==="dark"?t:"auto"}function ut(t){if(!t)return null;if(_t.some(n=>t.classList.contains(n)))return"dark";if(Ct.some(n=>t.classList.contains(n)))return"light";for(let n of gt){let l=(t.getAttribute(n)||"").toLowerCase();if(l.includes("dark"))return"dark";if(l.includes("light"))return"light"}return null}function Se(t){let n=t/255;return n<=.03928?n/12.92:((n+.055)/1.055)**2.4}function ft(t,n){if(!t)return null;let l=n.getComputedStyle(t).backgroundColor.match(/rgba?\(([^)]+)\)/);if(!l)return null;let[r,m,u,g=1]=l[1].split(/[\s,/]+/).filter(Boolean).map(Number);return[r,m,u,g].some(a=>Number.isNaN(a))||g<.5?null:.2126*Se(r)+.7152*Se(m)+.0722*Se(u)<.2?"dark":"light"}function Mt(t,n){let l=n.getComputedStyle(t.documentElement).colorScheme||"",r=t.querySelector('meta[name="color-scheme"]')?.getAttribute("content")||"",m=`${l} ${r}`.toLowerCase();return m.includes("dark")?m.includes("light")?n.matchMedia?.(pt).matches?"dark":"light":"dark":null}function R(t=document,n=window){return ut(t.documentElement)??ut(t.body)??ft(t.body,n)??ft(t.documentElement,n)??Mt(t,n)??"light"}function Le(t,n=document,l=window){let r=R(n,l),m=!1,u=()=>{m=!1;let c=R(n,l);c!==r&&(r=c,t(c))},g=()=>{m||(m=!0,typeof l.requestAnimationFrame=="function"?l.requestAnimationFrame(u):setTimeout(u,16))},T=typeof MutationObserver<"u"?new MutationObserver(g):null,a={attributes:!0,attributeFilter:["class","style",...gt]};T?.observe(n.documentElement,a),n.body&&T?.observe(n.body,a);let h=typeof l.matchMedia=="function"?l.matchMedia(pt):null;return h?.addEventListener?.("change",g),()=>{T?.disconnect(),h?.removeEventListener?.("change",g)}}var Bt="https://agents.bitpalm.ai",v="_bp_",Pt=new Set(["password","file","checkbox","radio","submit","button","reset","image"]),Ht=8e3,ht=4096,yt=`${v}identify_signature`,bt=`${v}identify_fingerprint`,vt=`${v}identify_sent_at`,wt="0 4px 14px rgba(0,0,0,0.18)";function $t(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 d(t,n=180){return t?t.replace(/\s+/g," ").trim().slice(0,n):""}function Ot(t){return t?` ${t.toLowerCase().replace(/[_-]+/g," ").replace(/[^a-z0-9\s@.]/g," ").replace(/\s+/g," ").trim()} `:""}function U(t,n){for(let l of n)if(t.includes(l))return!0;return!1}function C(t){return/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/i.test(t)}function I(t){let n=d(t,50);if(!n)return"";let l=n.startsWith("+"),r=n.replace(/\D/g,"");return r.length<6?"":`${l?"+":""}${r.slice(0,20)}`}function Et(t){let n=d(t,140).toLowerCase();return!n||!C(n)?"":n}function j(t,n){for(let l of n){let r=t.querySelector(l),m=d(r?.value);if(m)return m}return""}function Wt(t){return d(t.getAttribute("data-bp-field")||t.getAttribute("data-bitpalm-field"),64).toLowerCase().replace(/[_\s]+/g,"-")}function Dt(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Nt(t,n){let l=[],r=(a,h=140)=>{let c=d(a,h);c&&l.push(c)};r(n.name),r(n.id),r(n.getAttribute("autocomplete")),r(n.getAttribute("placeholder")),r(n.getAttribute("aria-label")),r(n.getAttribute("data-field")),r(n.getAttribute("data-name")),r(n.getAttribute("data-label")),r(n.getAttribute("data-bp-field")),r(n.getAttribute("data-bitpalm-field"));let m=new Set,u=a=>{let h=d(a,200);!h||m.has(h)||(m.add(h),l.push(h))};for(let a of Array.from(n.labels||[]))u(a.textContent);if(n.id){let a=t.querySelector(`label[for="${Dt(n.id)}"]`);u(a?.textContent)}let g=n.closest("label");u(g?.textContent);let T=n.getAttribute("aria-labelledby");if(T)for(let a of T.split(/\s+/)){if(!a)continue;let h=t.ownerDocument.getElementById(a);u(h?.textContent)}return l}function Rt(t){let n=d(j(t,["[data-bp-email]","[data-bitpalm-email]"]),140).toLowerCase(),l=I(j(t,["[data-bp-phone]","[data-bitpalm-phone]"])),r=d(j(t,["[data-bp-name]","[data-bitpalm-name]","[data-bp-full-name]","[data-bitpalm-full-name]"])),m=d(j(t,["[data-bp-first-name]","[data-bitpalm-first-name]"])),u=d(j(t,["[data-bp-last-name]","[data-bitpalm-last-name]"])),g=d(j(t,["[data-bp-company]","[data-bitpalm-company]"]));for(let c of Array.from(t.elements)){if(!(c instanceof HTMLInputElement||c instanceof HTMLTextAreaElement||c instanceof HTMLSelectElement)||c.disabled||c instanceof HTMLInputElement&&Pt.has(c.type.toLowerCase()))continue;let y=Wt(c),q=c.hasAttribute("data-bp-email")||c.hasAttribute("data-bitpalm-email")||c.hasAttribute("data-bp-phone")||c.hasAttribute("data-bitpalm-phone")||c.hasAttribute("data-bp-name")||c.hasAttribute("data-bitpalm-name")||c.hasAttribute("data-bp-full-name")||c.hasAttribute("data-bitpalm-full-name")||c.hasAttribute("data-bp-first-name")||c.hasAttribute("data-bitpalm-first-name")||c.hasAttribute("data-bp-last-name")||c.hasAttribute("data-bitpalm-last-name")||c.hasAttribute("data-bp-company")||c.hasAttribute("data-bitpalm-company")||!!y;if(c instanceof HTMLInputElement&&c.type.toLowerCase()==="hidden"&&!q)continue;let f=d(c.value);if(!f)continue;let A=c instanceof HTMLInputElement?c.type.toLowerCase():"",s=Ot(Nt(t,c).join(" "));if(!n&&y==="email"&&C(f)){n=f.toLowerCase();continue}if(!l&&(y==="phone"||y==="tel"||y==="mobile"||y==="whatsapp")){let S=I(f);if(S){l=S;continue}}if(!g&&y==="company"){g=d(f,160);continue}if(!m&&(y==="first-name"||y==="firstname")){m=d(f,100);continue}if(!u&&(y==="last-name"||y==="lastname"||y==="surname")){u=d(f,100);continue}if(!r&&(y==="name"||y==="full-name"||y==="fullname")){!C(f)&&!I(f)&&(r=d(f,140));continue}let G=A==="email"||U(s,[" email "," e mail "," mail "," email adresse "," mailadresse "," correo "]),W=A==="tel"||U(s,[" phone "," phone number "," mobile "," tel "," telefon "," telefonnummer "," whatsapp "," handy "," kontakt "," nummer "]),le=U(s,[" company "," company name "," firma "," firmenname "," organization "," organisation "," business "," unternehmen "," agency "," brokerage "]),p=U(s,[" first name "," firstname "," given name "," givenname "," vorname "," fname "]),M=U(s,[" last name "," lastname "," family name "," familyname "," surname "," nachname "," lname "]),z=U(s,[" full name "," fullname "," contact name "," name "])&&!G&&!W;if(!n&&G&&C(f)){n=f.toLowerCase();continue}if(!l&&W){let S=I(f);if(S){l=S;continue}}if(!g&&le){g=d(f,160);continue}if(!m&&p){m=d(f,100);continue}if(!u&&M){u=d(f,100);continue}if(!r&&z&&!C(f)&&!I(f)){r=d(f,140);continue}!n&&C(f)&&(n=f.toLowerCase())}if(r&&(C(r)||I(r))&&(r=""),g&&(C(g)||I(g))&&(g=""),r||(r=d([m,u].filter(Boolean).join(" "),140)),r&&n&&r.toLowerCase()===n.toLowerCase()&&(r=""),!!!(n||l)&&!!!(r&&g))return null;let h={...r?{name:r}:{},...n?{email:n}:{},...l?{phone:l}:{},...g?{company:g}:{}};return Object.keys(h).length>0?h:null}function Ft(){if(typeof document<"u"){let t=document.documentElement.lang;if(t)return t.slice(0,2).toLowerCase()}return"en"}function ke(t,n=1200){if(typeof window<"u"&&"requestIdleCallback"in window){window.requestIdleCallback(t,{timeout:n});return}setTimeout(t,Math.min(n,300))}function Ie(){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 l=window.matchMedia("(pointer: coarse)").matches,r=window.matchMedia("(hover: none)").matches,m=Math.min(window.screen?.width||window.innerWidth,window.screen?.height||window.innerHeight);return l&&r&&m<=900}function Ae(t){let{slug:n,locale:l=Ft(),baseUrl:r=Bt,token:m,zIndex:u=9999,autoIdentify:g=!0,launcher:T=!0}=t,a=document,h=F(t.theme),c=h==="auto"?R():h,y=null,q=ae(t.triggers),f=q,A=null,s=a.createElement("iframe");s.setAttribute("data-bitpalm-chat","");let G=`${r}/t/${n}/widget`,W=new URLSearchParams({locale:l,theme:c});m&&W.set("token",m),f==="off"&&W.set("triggers","off"),s.src=`${G}?${W.toString()}`,s.allow="clipboard-write; microphone",s.setAttribute("allowtransparency","true"),s.loading="lazy",s.style.cssText=`position:fixed;bottom:0;right:0;width:1px;height:1px;border:none;z-index:${u};background:transparent;color-scheme:normal;opacity:0;pointer-events:none;`;let le=new URL(s.src).origin,p=a.createElement("div");if(p.setAttribute("role","button"),p.setAttribute("aria-label","Chat"),p.setAttribute("data-bitpalm-launcher",""),p.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:${u-1};background:#171717;box-shadow:${wt};transition:transform .2s,opacity .3s;opacity:0;`,p.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>',p.onmouseenter=()=>{p.style.transform="scale(1.05)"},p.onmouseleave=()=>{p.style.transform="scale(1)"},p.onclick=()=>J(),T&&a.body.appendChild(p),!a.getElementById("_bp_fade")){let e=a.createElement("style");e.id="_bp_fade",e.textContent="@keyframes _bp_fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}",a.head.appendChild(e)}let M=null,z=!1,S=!1,_e=!1,ce=!1,K=!1,V=()=>{_e||(_e=!0,a.body.appendChild(s))},X=!1,de=0,Z={overflow:"",overscrollBehavior:""},E={overflow:"",overscrollBehavior:"",position:"",top:"",left:"",right:"",width:""},Ce=()=>{if(X||!Ie())return;let i=a.documentElement,o=a.body;de=window.scrollY||window.pageYOffset||0,Z.overflow=i.style.overflow,Z.overscrollBehavior=i.style.overscrollBehavior,E.overflow=o.style.overflow,E.overscrollBehavior=o.style.overscrollBehavior,E.position=o.style.position,E.top=o.style.top,E.left=o.style.left,E.right=o.style.right,E.width=o.style.width,i.style.overflow="hidden",i.style.overscrollBehavior="none",o.style.overflow="hidden",o.style.overscrollBehavior="none",o.style.position="fixed",o.style.top=`-${de}px`,o.style.left="0",o.style.right="0",o.style.width="100%",X=!0},D=()=>{if(!X)return;let e=a.documentElement,i=a.body;e.style.overflow=Z.overflow,e.style.overscrollBehavior=Z.overscrollBehavior,i.style.overflow=E.overflow,i.style.overscrollBehavior=E.overscrollBehavior,i.style.position=E.position,i.style.top=E.top,i.style.left=E.left,i.style.right=E.right,i.style.width=E.width,window.scrollTo(0,de),X=!1},Me=()=>{let e=Ie();s.style.display==="none"&&(s.style.display=""),e?(s.style.width="100vw",s.style.height="100dvh",s.style.left="0",s.style.top="0",s.style.bottom="0",s.style.right="0",Ce()):(s.style.width="420px",s.style.height="620px",s.style.bottom="24px",s.style.right="24px",s.style.left="",s.style.top="",D()),s.style.opacity="1",s.style.pointerEvents="auto"},_=()=>{M&&(M.remove(),M=null)},ee=()=>{A!==null&&(A=null,Y("trigger_hidden"))},Be=()=>{s.contentWindow?.postMessage({type:"bitpalm-triggers",enabled:f!=="off"},"*")},te=()=>{},me=()=>{},N=!1,B=new Map;function Y(e,i){let o=B.get(e);if(o)for(let b of o)try{b(i)}catch{}}let Pe=e=>{if(e.origin===le){if(e.data?.type==="bitpalm-widget-config"){S=!1,z=!0,s.style.display==="none"&&(s.style.display=""),e.data.primaryColor&&(p.style.background=e.data.primaryColor,p.style.boxShadow=e.data.chatShadow==="none"?"none":wt);let i=e.data.chatButtonIconColor||"black";if(e.data.chatButtonIconSvg){p.innerHTML="";let o=a.createElement("span");o.style.cssText=`display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:${i}`;let w=new DOMParser().parseFromString(e.data.chatButtonIconSvg,"image/svg+xml").querySelector("svg");w?(w.querySelectorAll("script,foreignObject").forEach($=>$.remove()),w.querySelectorAll("*").forEach($=>{for(let O of[...$.attributes])(O.name.startsWith("on")||O.value&&O.value.includes("javascript:"))&&$.removeAttribute(O.name)}),w.setAttribute("width","24"),w.setAttribute("height","24"),w.style.display="block",o.appendChild(w)):o.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>',p.appendChild(o)}else{let o=p.querySelector("svg");o&&(o.style.stroke=i)}T&&(p.style.display="flex",requestAnimationFrame(()=>{p.style.opacity="1"})),Be()}if(e.data?.type==="bitpalm-widget-resize"){let i=e.data.width>0,o=N;N=i,i&&!o&&Y("widget_opened"),!i&&o&&Y("widget_closed");let b=Ie();i?(s.style.width=b?"100vw":`${e.data.width}px`,s.style.height=b?"100dvh":`${e.data.height}px`,b?(s.style.left="0",s.style.top="0",s.style.bottom="0",s.style.right="0",Ce()):D(),s.style.opacity="1",s.style.pointerEvents="auto"):(D(),s.style.width="1px",s.style.height="1px",s.style.left="",s.style.top="",s.style.opacity="0",s.style.pointerEvents="none"),p.style.display=i||!T?"none":"flex"}if(e.data?.type==="bitpalm-trigger-show"){if(S||!z||f==="off")return;let i=typeof e.data.message=="string"?e.data.message:"";if(!i)return;if(f==="events"){A=i,Y("trigger_shown",{message:i,triggerId:e.data.triggerId,triggerType:e.data.triggerType});return}_(),M=mt(a,{message:i,zIndex:u,bottom:T?90:24,onDismiss:()=>{_(),s.contentWindow?.postMessage({type:"bitpalm-trigger-dismiss"},"*")},onEngage:()=>{if(_(),p.style.display="none",Me(),V(),!ce){K=!0;return}s.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:i},"*")}}),a.body.appendChild(M)}e.data?.type==="bitpalm-trigger-hide"&&(_(),ee()),e.data?.type==="bitpalm-request-context"&&te(),e.data?.type==="bitpalm-chat-event"&&e.data.event&&Y(e.data.event,e.data.data),e.data?.type==="bitpalm-widget-blocked"&&(S=!0,z=!1,p.style.display="none",_(),ee(),D(),s.style.display="none")}};window.addEventListener("message",Pe);let L=!1;try{L=localStorage.getItem(`${v}optout`)==="1"}catch{}let ne=`${v}vid`,x="";if(!L){try{x=localStorage.getItem(ne)||""}catch{}if(!x){let e=a.cookie.match(new RegExp(`(?:^|; )${ne}=([^;]+)`));x=e?decodeURIComponent(e[1]):""}x||(x=crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,11)}`);try{localStorage.setItem(ne,x)}catch{}try{a.cookie=`${ne}=${encodeURIComponent(x)};path=/;max-age=31536000;SameSite=Lax`}catch{}}L||ke(()=>{try{let e=new URLSearchParams(location.search),i={};for(let k of["utm_source","utm_medium","utm_campaign","utm_term","utm_content"]){let w=e.get(k);w&&(i[k]=w)}let o=JSON.stringify({tenant_slug:n,visitor_id:x,url:location.href,referrer:a.referrer||void 0,...Object.keys(i).length>0?{utm:i}:{}}),b=`${r}/api/widget/impression`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(b,new Blob([o],{type:"application/json"})):fetch(b,{method:"POST",body:o,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}},2e3);let ue="",fe="",ge=0;try{ue=sessionStorage.getItem(yt)||"",fe=sessionStorage.getItem(bt)||"";let e=parseInt(sessionStorage.getItem(vt)||"0",10);Number.isFinite(e)&&e>0&&(ge=e)}catch{}let He=(e,i="")=>{if(L||!x)return;let o={},b=d(e.name,140),k=Et(e.email),w=I(e.phone),$=d(e.company,160),O=d(e.external_user_id,140),at=d(e.signature,260),Ee=Number(e.signed_at);if(b&&(o.name=b),k&&(o.email=k),w&&(o.phone=w),$&&(o.company=$),O&&(o.external_user_id=O),at&&(o.signature=at),Number.isFinite(Ee)&&Ee>0&&(o.signed_at=Math.floor(Ee)),(e.signature_version==="v1"||o.signature)&&(o.signature_version="v1"),(e.identify_source==="manual"||e.identify_source==="form")&&(o.identify_source=e.identify_source),!o.name&&!o.email&&!o.phone&&!o.company&&!o.external_user_id)return;let re=$t(o),Te=[i.toLowerCase(),re].filter(Boolean).join("|"),xe=Date.now();if(!(xe-ge<Ht&&(Te===ue||re===fe))){ue=Te,fe=re,ge=xe;try{sessionStorage.setItem(yt,Te),sessionStorage.setItem(bt,re),sessionStorage.setItem(vt,String(xe))}catch{}try{let lt=JSON.stringify({tenant_slug:n,visitor_id:x,url:location.href,referrer:a.referrer||void 0,...o}),ct=`${r}/api/widget/identify`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(ct,new Blob([lt],{type:"application/json"})):fetch(ct,{method:"POST",body:lt,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}}},$e=e=>{if(L||!g||!x)return;let i=e.target instanceof HTMLFormElement?e.target:e.target instanceof Element?e.target.closest("form"):null;if(!(i instanceof HTMLFormElement))return;let o=(i.getAttribute("data-bp-identify")||i.getAttribute("data-bitpalm-identify")||"").toLowerCase();if(o==="off"||o==="false"||o==="0")return;let b=Rt(i);if(!b)return;let k=[i.getAttribute("id")||"",i.getAttribute("name")||"",i.getAttribute("action")||""].join("|");He({...b,identify_source:"form"},k)};!L&&g&&a.addEventListener("submit",$e,!0);let Q=parseInt(sessionStorage.getItem(`${v}pages`)||"0")+1;sessionStorage.setItem(`${v}pages`,String(Q));let P=JSON.parse(sessionStorage.getItem(`${v}hist`)||"[]");P.push(location.href),P.length>20&&(P=P.slice(-20)),sessionStorage.setItem(`${v}hist`,JSON.stringify(P));let Oe=Date.now(),ie=parseInt(sessionStorage.getItem(`${v}site_start`)||"0");ie||(ie=Oe,sessionStorage.setItem(`${v}site_start`,String(ie)));let We=[];te=()=>{let e=!1;try{e=!!localStorage.getItem(`${v}visited`)}catch{e=!1}if(s.contentWindow?.postMessage({type:"bitpalm-parent-context",url:location.href,title:a.title,returning:e,pageCount:Q,pageHistory:P,loadedAt:Oe,siteStart:ie,locale:l,visitorId:L?"":x},"*"),Je(),At(),!e&&!L)try{localStorage.setItem(`${v}visited`,"1")}catch{}},s.addEventListener("load",()=>{ce=!0,te(),[120,450,1100].forEach(e=>{let i=setTimeout(()=>te(),e);We.push(i)}),K&&(K=!1,me())}),a.readyState==="loading"?a.addEventListener("DOMContentLoaded",()=>ke(V,1600),{once:!0}):ke(V,1600);let De=history.pushState.bind(history),Ne=history.replaceState.bind(history),oe=()=>{Q++,sessionStorage.setItem(`${v}pages`,String(Q));let e=JSON.parse(sessionStorage.getItem(`${v}hist`)||"[]");if(e.push(location.href),e.length>20&&e.splice(0,e.length-20),P=e,sessionStorage.setItem(`${v}hist`,JSON.stringify(e)),s.contentWindow?.postMessage({type:"bitpalm-page-change",url:location.href,title:a.title,pageCount:Q,pageHistory:e,loadedAt:Date.now()},"*"),!L)try{let i=JSON.stringify({tenant_slug:n,visitor_id:x,url:location.href}),o=`${r}/api/widget/impression`;typeof navigator.sendBeacon=="function"?navigator.sendBeacon(o,new Blob([i],{type:"application/json"})):fetch(o,{method:"POST",body:i,headers:{"Content-Type":"application/json"},keepalive:!0}).catch(()=>{})}catch{}};history.pushState=function(...e){De(...e),oe()},history.replaceState=function(...e){Ne(...e),oe()},window.addEventListener("popstate",oe);let Re=-1,pe,Fe=()=>{clearTimeout(pe),pe=setTimeout(()=>{let e=Math.max(a.documentElement.scrollHeight,a.body.scrollHeight)-window.innerHeight,i=e>0?Math.round(window.scrollY/e*100):100;i!==Re&&(Re=i,s.contentWindow?.postMessage({type:"bitpalm-scroll-depth",percent:i},"*"))},500)};window.addEventListener("scroll",Fe,{passive:!0});let Ue=e=>{e.clientY<=0&&s.contentWindow?.postMessage({type:"bitpalm-exit-intent"},"*")};a.addEventListener("mouseout",Ue);let he,je=!1,ye=()=>{clearTimeout(he),!je&&(he=setTimeout(()=>{je=!0,s.contentWindow?.postMessage({type:"bitpalm-inactivity"},"*")},15e3))},qe=["mousemove","keydown","scroll","touchstart"];qe.forEach(e=>a.addEventListener(e,ye,{passive:!0})),ye(),me=()=>{s.contentWindow?.postMessage({type:"bitpalm-open"},"*");let e=s.src.split("#")[0];s.src=`${e}#bp-open-${Date.now()}`};let J=()=>{if(p.style.display="none",_(),Me(),V(),!ce){K=!0;return}if(A!==null){let e=A;ee(),s.contentWindow?.postMessage({type:"bitpalm-trigger-engaged",message:e},"*");return}me()},ze=e=>{f=e,e==="off"&&(_(),ee()),Be()},xt=()=>ze("off"),St=()=>ze(q==="off"?"bubble":q),be=()=>{D(),s.contentWindow?.postMessage({type:"bitpalm-close"},"*")},Ye=e=>{!e||typeof e!="object"||He({external_user_id:d(e.externalUserId,140)||void 0,name:d(e.name,140)||void 0,email:Et(e.email)||void 0,phone:I(e.phone)||void 0,company:d(e.company,160)||void 0,signature:d(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")},Lt=()=>{N?be():J()},kt=()=>N,Qe=e=>{if(!e||typeof e!="string")return;let i=e.trim().slice(0,1e4);i&&(N||J(),setTimeout(()=>{s.contentWindow?.postMessage({type:"bitpalm-send-message",message:i},"*")},N?50:500))};function Je(){s.contentWindow?.postMessage({type:"bitpalm-theme",theme:c},"*")}let se=e=>{e!==c&&(c=e,Je())},Ge=e=>{h=F(e),y?.(),y=null,h==="auto"?(y=Le(se),se(R())):se(h)};h==="auto"&&(y=Le(se));let Ke=e=>{let i=e.detail;if(!i||typeof i!="object")return;let o=d(i.slug,120);o&&o!==n||Ge(F(i.theme))};window.addEventListener("bitpalm-theme",Ke);let H={},Ve=e=>{if(!e||typeof e!="object"||Array.isArray(e))return;H={...H,...e};let i=JSON.stringify(H);i.length>ht&&console.warn(`[BitPalm] Custom context exceeds ${ht} bytes (${i.length}). It may be truncated.`),s.contentWindow?.postMessage({type:"bitpalm-custom-context",data:H},"*")},It=()=>{H={},s.contentWindow?.postMessage({type:"bitpalm-custom-context",data:{}},"*")},ve=Array.isArray(t.quickLinks)?t.quickLinks:null,Xe=ve!==null,Ze=()=>{s.contentWindow?.postMessage({type:"bitpalm-quick-links",links:ve},"*")},et=e=>{ve=Array.isArray(e)?e.slice(0,8):null,Xe=!0,Ze()};function At(){Object.keys(H).length>0&&s.contentWindow?.postMessage({type:"bitpalm-custom-context",data:H},"*"),Xe&&Ze()}let tt=e=>{let i=e.detail;if(!i||typeof i!="object")return;let o=d(i.slug,120);o&&o!==n||et(i.links??null)};window.addEventListener("bitpalm-quick-links",tt);let nt=e=>{let o=e.detail;if(!o||typeof o!="object")return;let b=d(o.slug,120);if(b&&b!==n)return;let{slug:k,...w}=o;Ve(w)};window.addEventListener("bitpalm-context",nt);let it=e=>{let o=e.detail;if(!o||typeof o!="object")return;let b=d(o.slug,120);b&&b!==n||Ye(o)};window.addEventListener("bitpalm-identify",it);let we=e=>{let i=e.detail,o=d(i?.slug,120);return!o||o===n},ot=e=>{we(e)&&J()},st=e=>{we(e)&&be()},rt=e=>{if(!we(e))return;let i=e.detail?.message;typeof i=="string"&&Qe(i)};return window.addEventListener("bitpalm-open",ot),window.addEventListener("bitpalm-close",st),window.addEventListener("bitpalm-send",rt),{open:J,close:be,toggle:Lt,isOpen:kt,identify:Ye,context:Ve,resetContext:It,setQuickLinks:et,send:Qe,on:(e,i)=>(B.has(e)||B.set(e,new Set),B.get(e).add(i),()=>B.get(e)?.delete(i)),off:(e,i)=>{B.get(e)?.delete(i)},setTheme:Ge,disableTriggers:xt,enableTriggers:St,destroy:()=>{window.removeEventListener("message",Pe),window.removeEventListener("scroll",Fe),window.removeEventListener("popstate",oe),a.removeEventListener("mouseout",Ue),a.removeEventListener("submit",$e,!0),qe.forEach(e=>a.removeEventListener(e,ye)),clearTimeout(pe),clearTimeout(he),We.forEach(e=>clearTimeout(e)),history.pushState=De,history.replaceState=Ne,window.removeEventListener("bitpalm-identify",it),window.removeEventListener("bitpalm-context",nt),window.removeEventListener("bitpalm-quick-links",tt),window.removeEventListener("bitpalm-theme",Ke),window.removeEventListener("bitpalm-open",ot),window.removeEventListener("bitpalm-close",st),window.removeEventListener("bitpalm-send",rt),y?.(),B.clear(),D(),_(),p.remove(),s.remove()}}}function Tt(t){if(t==null)return;let n=t.trim().toLowerCase();if(["1","true","yes","on"].includes(n))return!0;if(["0","false","no","off"].includes(n))return!1}if(typeof document<"u"){let t=document.currentScript;if(t?.dataset.slug){let n=()=>{Ae({slug:t.dataset.slug,locale:t.dataset.locale,baseUrl:t.dataset.baseUrl,token:t.dataset.token,zIndex:t.dataset.zIndex?Number(t.dataset.zIndex):void 0,autoIdentify:Tt(t.dataset.autoIdentify),theme:F(t.dataset.theme),launcher:Tt(t.dataset.launcher),triggers:t.dataset.triggers===void 0?void 0:dt(ae(t.dataset.triggers))})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",n):n()}}export{Ae as createWidget,R as detectHostTheme};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|