brainerce 1.35.1 → 1.36.1

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.
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var U="https://api.brainerce.com",j=new Set(["he","ar"]),L={en:{online:"Online",placeholder:"Ask anything\u2026",error:"Something went wrong \u2014 please try again.",leaveMessage:"Leave a message for the team",yourEmail:"Your email",yourMessage:"Your message",send:"Send",sent:"Thanks! The team will get back to you by email.",close:"Close",expand:"Expand",collapse:"Collapse",searching:"Searching the store\u2026",addToCart:"Add to cart",added:"Added",view:"View",chooseOptions:"View product",results:"From the store",poweredBy:"Powered by Brainerce",addFailed:"I couldn\u2019t add that to the cart \u2014 try the button on the product card."},he:{online:"\u05DE\u05D7\u05D5\u05D1\u05E8",placeholder:"\u05E9\u05D0\u05DC\u05D5 \u05D0\u05D5\u05EA\u05D9 \u05D4\u05DB\u05DC\u2026",error:"\u05DE\u05E9\u05D4\u05D5 \u05D4\u05E9\u05EA\u05D1\u05E9 \u2014 \u05E0\u05E1\u05D5 \u05E9\u05D5\u05D1.",leaveMessage:"\u05D4\u05E9\u05D0\u05D9\u05E8\u05D5 \u05D4\u05D5\u05D3\u05E2\u05D4 \u05DC\u05E6\u05D5\u05D5\u05EA",yourEmail:"\u05D4\u05D0\u05D9\u05DE\u05D9\u05D9\u05DC \u05E9\u05DC\u05DB\u05DD",yourMessage:"\u05D4\u05D4\u05D5\u05D3\u05E2\u05D4 \u05E9\u05DC\u05DB\u05DD",send:"\u05E9\u05DC\u05D9\u05D7\u05D4",sent:"\u05EA\u05D5\u05D3\u05D4! \u05D4\u05E6\u05D5\u05D5\u05EA \u05D9\u05D7\u05D6\u05D5\u05E8 \u05D0\u05DC\u05D9\u05DB\u05DD \u05D1\u05DE\u05D9\u05D9\u05DC.",close:"\u05E1\u05D2\u05D9\u05E8\u05D4",expand:"\u05D4\u05E8\u05D7\u05D1\u05D4",collapse:"\u05DB\u05D9\u05D5\u05D5\u05E5",searching:"\u05DE\u05D7\u05E4\u05E9 \u05D1\u05D7\u05E0\u05D5\u05EA\u2026",addToCart:"\u05D4\u05D5\u05E1\u05E4\u05D4 \u05DC\u05E1\u05DC",added:"\u05E0\u05D5\u05E1\u05E3",view:"\u05E6\u05E4\u05D9\u05D9\u05D4",chooseOptions:"\u05DC\u05E6\u05E4\u05D5\u05EA \u05D1\u05DE\u05D5\u05E6\u05E8",results:"\u05DE\u05EA\u05D5\u05DA \u05D4\u05D7\u05E0\u05D5\u05EA",poweredBy:"\u05DE\u05D5\u05E4\u05E2\u05DC \u05E2\u05DC \u05D9\u05D3\u05D9 Brainerce",addFailed:"\u05DC\u05D0 \u05D4\u05E6\u05DC\u05D7\u05EA\u05D9 \u05DC\u05D4\u05D5\u05E1\u05D9\u05E3 \u05DC\u05E1\u05DC \u2014 \u05E0\u05E1\u05D5 \u05D3\u05E8\u05DA \u05D4\u05DB\u05E4\u05EA\u05D5\u05E8 \u05D1\u05DB\u05E8\u05D8\u05D9\u05E1 \u05D4\u05DE\u05D5\u05E6\u05E8."}},H={chat:'<svg viewBox="0 0 24 24" fill="none"><path d="M12 3C7.03 3 3 6.58 3 11c0 2.04.86 3.9 2.28 5.32-.15 1.23-.62 2.39-1.1 3.21-.13.23.05.52.31.47 1.56-.27 3.07-.93 4.13-1.62A10.6 10.6 0 0 0 12 19c4.97 0 9-3.58 9-8s-4.03-8-9-8Z" fill="currentColor"/></svg>',close:'<svg viewBox="0 0 24 24" fill="none"><path d="M6 6l12 12M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',expand:'<svg viewBox="0 0 24 24" fill="none"><path d="M14 4h6v6M10 20H4v-6M20 4l-7 7M4 20l7-7" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>',collapse:'<svg viewBox="0 0 24 24" fill="none"><path d="M20 10h-6V4M4 14h6v6M20 4l-6 6M4 20l6-6" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>',mail:'<svg viewBox="0 0 24 24" fill="none"><rect x="3.5" y="5.5" width="17" height="13" rx="2.5" stroke="currentColor" stroke-width="1.7"/><path d="m4.5 7.5 7.5 5.5 7.5-5.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg>',send:'<svg viewBox="0 0 24 24" fill="none"><path d="M4.4 11.2 19 4.6c.7-.3 1.4.4 1.1 1.1l-6.6 14.6c-.3.7-1.3.6-1.5-.1l-1.7-5.4a1 1 0 0 0-.6-.6l-5.4-1.7c-.7-.2-.8-1.2-.1-1.5Z" fill="currentColor"/></svg>',cart:'<svg viewBox="0 0 24 24" fill="none"><path d="M3 4h2l2.4 11.2A2 2 0 0 0 9.36 17H17.5a2 2 0 0 0 1.95-1.55L21 8H6" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><circle cx="10" cy="20.5" r="1.4" fill="currentColor"/><circle cx="17" cy="20.5" r="1.4" fill="currentColor"/></svg>',check:'<svg viewBox="0 0 24 24" fill="none"><path d="m5 12.5 4.5 4.5L19 7.5" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>',arrow:'<svg viewBox="0 0 24 24" fill="none"><path d="M7 17 17 7M9 7h8v8" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>'},z="data:image/png;base64,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",P=typeof DOMParser<"u"?new DOMParser:null;function f(p){let e=(H[p]??H.chat).replace("<svg ",'<svg xmlns="http://www.w3.org/2000/svg" '),t=P?.parseFromString(e,"image/svg+xml")?.documentElement;return!t||t.nodeName==="parsererror"?document.createTextNode(""):(t.setAttribute("aria-hidden","true"),t.setAttribute("class","bb-ic"),t)}function F(p){let e=new Uint8Array(16);crypto.getRandomValues(e);let n=btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");return`${p}${n}`}function B(p){return/^\/(?!\/)/.test(p)||/^https?:\/\//i.test(p)}var R=/\*\*([^*\n]+)\*\*|\[([^\]\n]+)\]\(([^)\s]+)\)/g;function D(p,e){let n=0;R.lastIndex=0;for(let t=R.exec(e);t;t=R.exec(e)){if(t.index>n&&p.appendChild(document.createTextNode(e.slice(n,t.index))),t[1]!==void 0){let i=document.createElement("strong");i.textContent=t[1],p.appendChild(i)}else if(B(t[3])){let i=document.createElement("a");i.href=t[3],i.target="_blank",i.rel="noopener noreferrer",i.textContent=t[2],p.appendChild(i)}else p.appendChild(document.createTextNode(t[2]));n=t.index+t[0].length}n<e.length&&p.appendChild(document.createTextNode(e.slice(n)))}function O(p,e){p.replaceChildren();let n=e.split(`
1
+ "use strict";(()=>{var U="https://api.brainerce.com",j=new Set(["he","ar"]),L={en:{online:"Online",placeholder:"Ask anything\u2026",error:"Something went wrong \u2014 please try again.",leaveMessage:"Leave a message for the team",yourEmail:"Your email",yourMessage:"Your message",send:"Send",sent:"Thanks! The team will get back to you by email.",close:"Close",expand:"Expand",collapse:"Collapse",searching:"Searching the store\u2026",addToCart:"Add to cart",added:"Added",view:"View",chooseOptions:"View product",results:"From the store",poweredBy:"Powered by Brainerce",addFailed:"I couldn\u2019t add that to the cart \u2014 try the button on the product card."},he:{online:"\u05DE\u05D7\u05D5\u05D1\u05E8",placeholder:"\u05E9\u05D0\u05DC\u05D5 \u05D0\u05D5\u05EA\u05D9 \u05D4\u05DB\u05DC\u2026",error:"\u05DE\u05E9\u05D4\u05D5 \u05D4\u05E9\u05EA\u05D1\u05E9 \u2014 \u05E0\u05E1\u05D5 \u05E9\u05D5\u05D1.",leaveMessage:"\u05D4\u05E9\u05D0\u05D9\u05E8\u05D5 \u05D4\u05D5\u05D3\u05E2\u05D4 \u05DC\u05E6\u05D5\u05D5\u05EA",yourEmail:"\u05D4\u05D0\u05D9\u05DE\u05D9\u05D9\u05DC \u05E9\u05DC\u05DB\u05DD",yourMessage:"\u05D4\u05D4\u05D5\u05D3\u05E2\u05D4 \u05E9\u05DC\u05DB\u05DD",send:"\u05E9\u05DC\u05D9\u05D7\u05D4",sent:"\u05EA\u05D5\u05D3\u05D4! \u05D4\u05E6\u05D5\u05D5\u05EA \u05D9\u05D7\u05D6\u05D5\u05E8 \u05D0\u05DC\u05D9\u05DB\u05DD \u05D1\u05DE\u05D9\u05D9\u05DC.",close:"\u05E1\u05D2\u05D9\u05E8\u05D4",expand:"\u05D4\u05E8\u05D7\u05D1\u05D4",collapse:"\u05DB\u05D9\u05D5\u05D5\u05E5",searching:"\u05DE\u05D7\u05E4\u05E9 \u05D1\u05D7\u05E0\u05D5\u05EA\u2026",addToCart:"\u05D4\u05D5\u05E1\u05E4\u05D4 \u05DC\u05E1\u05DC",added:"\u05E0\u05D5\u05E1\u05E3",view:"\u05E6\u05E4\u05D9\u05D9\u05D4",chooseOptions:"\u05DC\u05E6\u05E4\u05D5\u05EA \u05D1\u05DE\u05D5\u05E6\u05E8",results:"\u05DE\u05EA\u05D5\u05DA \u05D4\u05D7\u05E0\u05D5\u05EA",poweredBy:"\u05DE\u05D5\u05E4\u05E2\u05DC \u05E2\u05DC \u05D9\u05D3\u05D9 Brainerce",addFailed:"\u05DC\u05D0 \u05D4\u05E6\u05DC\u05D7\u05EA\u05D9 \u05DC\u05D4\u05D5\u05E1\u05D9\u05E3 \u05DC\u05E1\u05DC \u2014 \u05E0\u05E1\u05D5 \u05D3\u05E8\u05DA \u05D4\u05DB\u05E4\u05EA\u05D5\u05E8 \u05D1\u05DB\u05E8\u05D8\u05D9\u05E1 \u05D4\u05DE\u05D5\u05E6\u05E8."}},H={chat:'<svg viewBox="0 0 24 24" fill="none"><path d="M12 3C7.03 3 3 6.58 3 11c0 2.04.86 3.9 2.28 5.32-.15 1.23-.62 2.39-1.1 3.21-.13.23.05.52.31.47 1.56-.27 3.07-.93 4.13-1.62A10.6 10.6 0 0 0 12 19c4.97 0 9-3.58 9-8s-4.03-8-9-8Z" fill="currentColor"/></svg>',close:'<svg viewBox="0 0 24 24" fill="none"><path d="M6 6l12 12M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',expand:'<svg viewBox="0 0 24 24" fill="none"><path d="M14 4h6v6M10 20H4v-6M20 4l-7 7M4 20l7-7" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>',collapse:'<svg viewBox="0 0 24 24" fill="none"><path d="M20 10h-6V4M4 14h6v6M20 4l-6 6M4 20l6-6" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>',mail:'<svg viewBox="0 0 24 24" fill="none"><rect x="3.5" y="5.5" width="17" height="13" rx="2.5" stroke="currentColor" stroke-width="1.7"/><path d="m4.5 7.5 7.5 5.5 7.5-5.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg>',send:'<svg viewBox="0 0 24 24" fill="none"><path d="M4.4 11.2 19 4.6c.7-.3 1.4.4 1.1 1.1l-6.6 14.6c-.3.7-1.3.6-1.5-.1l-1.7-5.4a1 1 0 0 0-.6-.6l-5.4-1.7c-.7-.2-.8-1.2-.1-1.5Z" fill="currentColor"/></svg>',cart:'<svg viewBox="0 0 24 24" fill="none"><path d="M3 4h2l2.4 11.2A2 2 0 0 0 9.36 17H17.5a2 2 0 0 0 1.95-1.55L21 8H6" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><circle cx="10" cy="20.5" r="1.4" fill="currentColor"/><circle cx="17" cy="20.5" r="1.4" fill="currentColor"/></svg>',check:'<svg viewBox="0 0 24 24" fill="none"><path d="m5 12.5 4.5 4.5L19 7.5" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>',arrow:'<svg viewBox="0 0 24 24" fill="none"><path d="M7 17 17 7M9 7h8v8" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>',sparkle:'<svg viewBox="0 0 24 24" fill="none"><path d="M12 3v2M12 19v2M3 12h2M19 12h2M6.34 6.34l1.42 1.42M16.24 16.24l1.42 1.42M6.34 17.66l1.42-1.42M16.24 7.76l1.42-1.42" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><circle cx="12" cy="12" r="3.5" fill="currentColor"/></svg>'},z="data:image/png;base64,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",P=typeof DOMParser<"u"?new DOMParser:null;function m(p){let e=(H[p]??H.chat).replace("<svg ",'<svg xmlns="http://www.w3.org/2000/svg" '),t=P?.parseFromString(e,"image/svg+xml")?.documentElement;return!t||t.nodeName==="parsererror"?document.createTextNode(""):(t.setAttribute("aria-hidden","true"),t.setAttribute("class","bb-ic"),t)}function F(p){let e=new Uint8Array(16);crypto.getRandomValues(e);let n=btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");return`${p}${n}`}function B(p){return/^\/(?!\/)/.test(p)||/^https?:\/\//i.test(p)}var R=/\*\*([^*\n]+)\*\*|\[([^\]\n]+)\]\(([^)\s]+)\)/g;function D(p,e){let n=0;R.lastIndex=0;for(let t=R.exec(e);t;t=R.exec(e)){if(t.index>n&&p.appendChild(document.createTextNode(e.slice(n,t.index))),t[1]!==void 0){let i=document.createElement("strong");i.textContent=t[1],p.appendChild(i)}else if(B(t[3])){let i=document.createElement("a");i.href=t[3],i.target="_blank",i.rel="noopener noreferrer",i.textContent=t[2],p.appendChild(i)}else p.appendChild(document.createTextNode(t[2]));n=t.index+t[0].length}n<e.length&&p.appendChild(document.createTextNode(e.slice(n)))}function O(p,e){p.replaceChildren();let n=e.split(`
2
2
  `),t=null,i=null;for(let o of n){let r=/^\s*[-•*]\s+(.*)$/.exec(o);if(r){i=null,t||(t=document.createElement("ul"),p.appendChild(t));let d=document.createElement("li");D(d,r[1]),t.appendChild(d);continue}if(t=null,!o.trim()){i=null;continue}i?i.appendChild(document.createElement("br")):(i=document.createElement("p"),p.appendChild(i)),D(i,o)}}var S=class p{constructor(e){this.settings={enabled:!1};this.locale="en";this.sessionId=null;this.conversationId=null;this.busy=!1;this.opened=!1;this.expanded=!1;this.destroyed=!1;this.pendingText="";this.cardsRow=null;this.cardIds=new Set;this.prevBodyOverflow=null;this.connectionId=e.connectionId,this.baseUrl=(e.baseUrl||U).replace(/\/$/,""),this.storageKey=`brainerce-bot:${this.connectionId}`,this.onAddToCart=e.onAddToCart}static async mount(e){if(!e?.connectionId)return console.warn("[BrainerceBot] connectionId is required"),null;let n=new p(e);return await n.boot(e.target??document.body)?n:null}destroy(){this.destroyed=!0,this.prevBodyOverflow!==null&&(document.body.style.overflow=this.prevBodyOverflow,this.prevBodyOverflow=null),this.host?.remove()}async boot(e){try{let n=await fetch(`${this.baseUrl}/api/storefront-bot/${encodeURIComponent(this.connectionId)}/settings`);if(!n.ok)return!1;this.settings=await n.json()}catch{return!1}return this.settings.enabled?(this.locale=this.settings.languages?.[0]??"en",this.restoreIds(),this.render(e),this.settings.displayMode==="auto_open"&&setTimeout(()=>!this.destroyed&&this.open(),3e3),!0):!1}t(e){return(L[this.locale]??L.en)[e]??L.en[e]??e}restoreIds(){try{let e=localStorage.getItem(this.storageKey);if(e){let n=JSON.parse(e);this.sessionId=n.sessionId??null,this.conversationId=n.conversationId??null}}catch{}}persistIds(){try{localStorage.setItem(this.storageKey,JSON.stringify({sessionId:this.sessionId,conversationId:this.conversationId}))}catch{}}css(e,n,t){let i=this.settings.bubbleShape==="square",o=i?"14px":"22px",r=i?"8px":"15px",d="5px",a=this.settings.displayMode??"floating",l=a==="side_rail",s=a==="full_screen";return`
3
3
  :host { all: initial; }
4
4
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0;
@@ -246,6 +246,6 @@
246
246
  transition: color .12s ease; }
247
247
  .bb-foot a:hover { color: #6b7280; }
248
248
  .bb-foot-mark { width: 14px; height: 14px; border-radius: 3px; display: block; }
249
- `}render(e){let n=this.settings.accentColor||"#6366F1",t=j.has(this.locale)?"rtl":"ltr",i=this.settings.position==="start"?"left":"right",o=t==="rtl"?i==="left"?"right":"left":i,r=this.settings.displayName||"Assistant";this.host=document.createElement("div"),this.host.setAttribute("data-brainerce-bot",this.connectionId),this.root=this.host.attachShadow({mode:"open"});let d=document.createElement("style");d.textContent=this.css(n,t,o),this.root.appendChild(d);let a=document.createElement("div");a.className="bb",this.root.appendChild(a);let l=document.createElement("div");l.className="bb-scrim",l.addEventListener("click",()=>{this.expanded?this.toggleExpand():this.close()}),a.appendChild(l),this.windowEl=document.createElement("div"),this.windowEl.className="bb-window",a.appendChild(this.windowEl);let s=document.createElement("div");s.className="bb-header";let b=document.createElement("span");if(b.className="bb-avatar",this.settings.avatarUrl&&B(this.settings.avatarUrl)){let g=document.createElement("img");g.src=this.settings.avatarUrl,g.alt="",b.appendChild(g)}else b.appendChild(document.createTextNode(r.charAt(0).toUpperCase()));let u=document.createElement("span");u.className="bb-head-main";let h=document.createElement("span");h.className="bb-name",h.textContent=r;let w=document.createElement("span");w.className="bb-status",w.textContent=this.t("online"),u.appendChild(h),u.appendChild(w);let v=document.createElement("span");v.className="bb-actions",(this.settings.displayMode??"floating")!=="full_screen"&&this.settings.allowExpand!==!1&&(this.expandBtn=this.iconButton("expand",this.t("expand"),()=>this.toggleExpand()),v.appendChild(this.expandBtn)),v.appendChild(this.iconButton("mail",this.t("leaveMessage"),()=>this.toggleEscalation())),v.appendChild(this.iconButton("close",this.t("close"),()=>this.close())),s.appendChild(b),s.appendChild(u),s.appendChild(v),this.windowEl.appendChild(s),this.messagesEl=document.createElement("div"),this.messagesEl.className="bb-msgs",this.windowEl.appendChild(this.messagesEl),this.chipsEl=document.createElement("div"),this.chipsEl.className="bb-chips";for(let g of this.settings.starterQuestions??[]){let M=document.createElement("button");M.className="bb-chip",M.textContent=g,M.addEventListener("click",()=>this.send(g)),this.chipsEl.appendChild(M)}this.windowEl.appendChild(this.chipsEl);let c=document.createElement("div");c.className="bb-esc";let k=document.createElement("span");k.className="bb-esc-title",k.textContent=this.t("leaveMessage");let E=document.createElement("input");E.type="email",E.name="email",E.placeholder=this.t("yourEmail");let C=document.createElement("textarea");C.name="message",C.rows=2,C.placeholder=this.t("yourMessage");let I=document.createElement("button");I.type="button",I.className="bb-esc-send",I.textContent=this.t("send"),I.addEventListener("click",()=>this.submitEscalation(c)),c.appendChild(k),c.appendChild(E),c.appendChild(C),c.appendChild(I),this.windowEl.appendChild(c);let m=document.createElement("div");m.className="bb-composer",this.inputEl=document.createElement("textarea"),this.inputEl.className="bb-input",this.inputEl.rows=1,this.inputEl.placeholder=this.t("placeholder"),this.inputEl.addEventListener("keydown",g=>{g.key==="Enter"&&!g.shiftKey&&(g.preventDefault(),this.send(this.inputEl?.value??""))}),this.inputEl.addEventListener("input",()=>this.syncSendState()),this.sendBtn=document.createElement("button"),this.sendBtn.className="bb-send",this.sendBtn.disabled=!0,this.sendBtn.setAttribute("aria-label",this.t("send")),this.sendBtn.appendChild(f("send")),this.sendBtn.addEventListener("click",()=>this.send(this.inputEl?.value??"")),m.appendChild(this.inputEl),m.appendChild(this.sendBtn),this.windowEl.appendChild(m);let A=document.createElement("div");A.className="bb-foot";let x=document.createElement("a");x.href="https://brainerce.com",x.target="_blank",x.rel="noopener noreferrer";let N=document.createElement("img");if(N.src=z,N.alt="",N.className="bb-foot-mark",x.appendChild(N),x.appendChild(document.createTextNode(this.t("poweredBy"))),A.appendChild(x),this.windowEl.appendChild(A),this.launcherEl=document.createElement("button"),this.launcherEl.className="bb-launcher",this.launcherEl.setAttribute("aria-label",r),this.settings.avatarUrl&&B(this.settings.avatarUrl)){let g=document.createElement("img");g.src=this.settings.avatarUrl,g.alt="",this.launcherEl.appendChild(g)}else{let g=f("chat");g.classList.add("bb-l-chat"),this.launcherEl.appendChild(g)}let T=f("close");T.classList.add("bb-l-close"),this.launcherEl.appendChild(T),this.launcherEl.addEventListener("click",()=>this.opened?this.close():this.open()),a.appendChild(this.launcherEl),e.appendChild(this.host)}iconButton(e,n,t){let i=document.createElement("button");return i.className="bb-iconbtn",i.title=n,i.setAttribute("aria-label",n),i.appendChild(f(e)),i.addEventListener("click",t),i}syncSendState(){this.sendBtn&&(this.sendBtn.disabled=!(this.inputEl?.value??"").trim()||this.busy)}open(){if(!this.windowEl||this.opened)return;this.opened=!0;let e=this.root?.querySelector(".bb");e?.classList.add("open");let n=(this.settings.displayMode??"floating")==="full_screen"||window.innerWidth<=520;e?.classList.toggle("big",n||this.expanded),this.syncBodyScroll(),this.messagesEl&&this.messagesEl.childElementCount===0&&this.primeThread(),this.inputEl?.focus()}close(){this.opened=!1;let e=this.root?.querySelector(".bb");e?.classList.remove("open"),this.expanded||e?.classList.remove("big"),this.syncBodyScroll()}syncBodyScroll(){let e=this.opened&&!!this.root?.querySelector(".bb")?.classList.contains("big");e&&this.prevBodyOverflow===null?(this.prevBodyOverflow=document.body.style.overflow||"",document.body.style.overflow="hidden"):!e&&this.prevBodyOverflow!==null&&(document.body.style.overflow=this.prevBodyOverflow,this.prevBodyOverflow=null)}toggleExpand(){if(this.expanded=!this.expanded,this.root?.querySelector(".bb")?.classList.toggle("expanded",this.expanded),this.root?.querySelector(".bb")?.classList.toggle("big",this.expanded),this.syncBodyScroll(),this.expandBtn){this.expandBtn.replaceChildren(f(this.expanded?"collapse":"expand"));let e=this.t(this.expanded?"collapse":"expand");this.expandBtn.title=e,this.expandBtn.setAttribute("aria-label",e)}}async primeThread(){if(this.conversationId&&this.sessionId)try{let e=await fetch(`${this.baseUrl}/api/storefront-bot/${encodeURIComponent(this.connectionId)}/conversations/${encodeURIComponent(this.conversationId)}?limit=50`,{headers:{"X-Bot-Session":this.sessionId}});if(e.ok){let n=await e.json();for(let t of n.data){let i=this.appendMessage(t.role==="assistant"?"bot":"user","");O(i,t.content)}if(n.data.length>0){this.chipsEl?.remove();return}}else this.conversationId=null,this.sessionId=null,this.persistIds()}catch{}if(this.settings.greeting){let e=this.appendMessage("bot","");O(e,this.settings.greeting)}}async send(e){let n=e.trim();if(!n||this.busy)return;this.busy=!0,this.inputEl&&(this.inputEl.value=""),this.syncSendState(),this.chipsEl?.remove(),this.appendMessage("user",n);let t=this.appendTyping();this.pendingText="",this.cardsRow=null,this.cardIds=new Set;let i=null;try{let o=await fetch(`${this.baseUrl}/api/storefront-bot/${encodeURIComponent(this.connectionId)}/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:n,turnId:F("trn_"),...this.conversationId?{conversationId:this.conversationId}:{},...this.sessionId?{anonymousSessionId:this.sessionId}:{},locale:this.locale})});if(!o.ok||!o.body)throw new Error(`chat failed (${o.status})`);let r=o.body.getReader(),d=new TextDecoder,a="";for(;;){let{value:l,done:s}=await r.read();if(s)break;a+=d.decode(l,{stream:!0});let b;for(;(b=a.indexOf(`
249
+ `}render(e){let n=this.settings.accentColor||"#6366F1",t=j.has(this.locale)?"rtl":"ltr",i=this.settings.position==="start"?"left":"right",o=t==="rtl"?i==="left"?"right":"left":i,r=this.settings.displayName||"Assistant";this.host=document.createElement("div"),this.host.setAttribute("data-brainerce-bot",this.connectionId),this.root=this.host.attachShadow({mode:"open"});let d=document.createElement("style");d.textContent=this.css(n,t,o),this.root.appendChild(d);let a=document.createElement("div");a.className="bb",this.root.appendChild(a);let l=document.createElement("div");l.className="bb-scrim",l.addEventListener("click",()=>{this.expanded?this.toggleExpand():this.close()}),a.appendChild(l),this.windowEl=document.createElement("div"),this.windowEl.className="bb-window",a.appendChild(this.windowEl);let s=document.createElement("div");s.className="bb-header";let b=document.createElement("span");if(b.className="bb-avatar",this.settings.avatarUrl&&B(this.settings.avatarUrl)){let g=document.createElement("img");g.src=this.settings.avatarUrl,g.alt="",b.appendChild(g)}else b.appendChild(m("sparkle"));let u=document.createElement("span");u.className="bb-head-main";let h=document.createElement("span");h.className="bb-name",h.textContent=r;let w=document.createElement("span");w.className="bb-status",w.textContent=this.t("online"),u.appendChild(h),u.appendChild(w);let v=document.createElement("span");v.className="bb-actions",(this.settings.displayMode??"floating")!=="full_screen"&&this.settings.allowExpand!==!1&&(this.expandBtn=this.iconButton("expand",this.t("expand"),()=>this.toggleExpand()),v.appendChild(this.expandBtn)),v.appendChild(this.iconButton("mail",this.t("leaveMessage"),()=>this.toggleEscalation())),v.appendChild(this.iconButton("close",this.t("close"),()=>this.close())),s.appendChild(b),s.appendChild(u),s.appendChild(v),this.windowEl.appendChild(s),this.messagesEl=document.createElement("div"),this.messagesEl.className="bb-msgs",this.windowEl.appendChild(this.messagesEl),this.chipsEl=document.createElement("div"),this.chipsEl.className="bb-chips";for(let g of this.settings.starterQuestions??[]){let A=document.createElement("button");A.className="bb-chip",A.textContent=g,A.addEventListener("click",()=>this.send(g)),this.chipsEl.appendChild(A)}this.windowEl.appendChild(this.chipsEl);let c=document.createElement("div");c.className="bb-esc";let k=document.createElement("span");k.className="bb-esc-title",k.textContent=this.t("leaveMessage");let E=document.createElement("input");E.type="email",E.name="email",E.placeholder=this.t("yourEmail");let C=document.createElement("textarea");C.name="message",C.rows=2,C.placeholder=this.t("yourMessage");let I=document.createElement("button");I.type="button",I.className="bb-esc-send",I.textContent=this.t("send"),I.addEventListener("click",()=>this.submitEscalation(c)),c.appendChild(k),c.appendChild(E),c.appendChild(C),c.appendChild(I),this.windowEl.appendChild(c);let f=document.createElement("div");f.className="bb-composer",this.inputEl=document.createElement("textarea"),this.inputEl.className="bb-input",this.inputEl.rows=1,this.inputEl.maxLength=4e3,this.inputEl.placeholder=this.t("placeholder"),this.inputEl.addEventListener("keydown",g=>{g.key==="Enter"&&!g.shiftKey&&(g.preventDefault(),this.send(this.inputEl?.value??""))}),this.inputEl.addEventListener("input",()=>this.syncSendState()),this.sendBtn=document.createElement("button"),this.sendBtn.className="bb-send",this.sendBtn.disabled=!0,this.sendBtn.setAttribute("aria-label",this.t("send")),this.sendBtn.appendChild(m("send")),this.sendBtn.addEventListener("click",()=>this.send(this.inputEl?.value??"")),f.appendChild(this.inputEl),f.appendChild(this.sendBtn),this.windowEl.appendChild(f);let M=document.createElement("div");M.className="bb-foot";let x=document.createElement("a");x.href="https://brainerce.com",x.target="_blank",x.rel="noopener noreferrer";let N=document.createElement("img");if(N.src=z,N.alt="",N.className="bb-foot-mark",x.appendChild(N),x.appendChild(document.createTextNode(this.t("poweredBy"))),M.appendChild(x),this.windowEl.appendChild(M),this.launcherEl=document.createElement("button"),this.launcherEl.className="bb-launcher",this.launcherEl.setAttribute("aria-label",r),this.settings.avatarUrl&&B(this.settings.avatarUrl)){let g=document.createElement("img");g.src=this.settings.avatarUrl,g.alt="",this.launcherEl.appendChild(g)}else{let g=m("chat");g.classList.add("bb-l-chat"),this.launcherEl.appendChild(g)}let T=m("close");T.classList.add("bb-l-close"),this.launcherEl.appendChild(T),this.launcherEl.addEventListener("click",()=>this.opened?this.close():this.open()),a.appendChild(this.launcherEl),e.appendChild(this.host)}iconButton(e,n,t){let i=document.createElement("button");return i.className="bb-iconbtn",i.title=n,i.setAttribute("aria-label",n),i.appendChild(m(e)),i.addEventListener("click",t),i}syncSendState(){this.sendBtn&&(this.sendBtn.disabled=!(this.inputEl?.value??"").trim()||this.busy)}open(){if(!this.windowEl||this.opened)return;this.opened=!0;let e=this.root?.querySelector(".bb");e?.classList.add("open");let n=(this.settings.displayMode??"floating")==="full_screen"||window.innerWidth<=520;e?.classList.toggle("big",n||this.expanded),this.syncBodyScroll(),this.messagesEl&&this.messagesEl.childElementCount===0&&this.primeThread(),this.inputEl?.focus()}close(){this.opened=!1;let e=this.root?.querySelector(".bb");e?.classList.remove("open"),this.expanded||e?.classList.remove("big"),this.syncBodyScroll()}syncBodyScroll(){let e=this.opened&&!!this.root?.querySelector(".bb")?.classList.contains("big");e&&this.prevBodyOverflow===null?(this.prevBodyOverflow=document.body.style.overflow||"",document.body.style.overflow="hidden"):!e&&this.prevBodyOverflow!==null&&(document.body.style.overflow=this.prevBodyOverflow,this.prevBodyOverflow=null)}toggleExpand(){if(this.expanded=!this.expanded,this.root?.querySelector(".bb")?.classList.toggle("expanded",this.expanded),this.root?.querySelector(".bb")?.classList.toggle("big",this.expanded),this.syncBodyScroll(),this.expandBtn){this.expandBtn.replaceChildren(m(this.expanded?"collapse":"expand"));let e=this.t(this.expanded?"collapse":"expand");this.expandBtn.title=e,this.expandBtn.setAttribute("aria-label",e)}}async primeThread(){if(this.conversationId&&this.sessionId)try{let e=await fetch(`${this.baseUrl}/api/storefront-bot/${encodeURIComponent(this.connectionId)}/conversations/${encodeURIComponent(this.conversationId)}?limit=50`,{headers:{"X-Bot-Session":this.sessionId}});if(e.ok){let n=await e.json();for(let t of n.data){let i=this.appendMessage(t.role==="assistant"?"bot":"user","");O(i,t.content)}if(n.data.length>0){this.chipsEl?.remove();return}}else this.conversationId=null,this.sessionId=null,this.persistIds()}catch{}if(this.settings.greeting){let e=this.appendMessage("bot","");O(e,this.settings.greeting)}}async send(e){let n=e.trim();if(!n||this.busy)return;this.busy=!0,this.inputEl&&(this.inputEl.value=""),this.syncSendState(),this.chipsEl?.remove(),this.appendMessage("user",n);let t=this.appendTyping();this.pendingText="",this.cardsRow=null,this.cardIds=new Set;let i=null;try{let o=await fetch(`${this.baseUrl}/api/storefront-bot/${encodeURIComponent(this.connectionId)}/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:n,turnId:F("trn_"),...this.conversationId?{conversationId:this.conversationId}:{},...this.sessionId?{anonymousSessionId:this.sessionId}:{},locale:this.locale})});if(!o.ok||!o.body)throw new Error(`chat failed (${o.status})`);let r=o.body.getReader(),d=new TextDecoder,a="";for(;;){let{value:l,done:s}=await r.read();if(s)break;a+=d.decode(l,{stream:!0});let b;for(;(b=a.indexOf(`
250
250
 
251
- `))>=0;){let u=a.slice(0,b);if(a=a.slice(b+2),!u.startsWith("data: "))continue;let h;try{h=JSON.parse(u.slice(6))}catch{continue}i=this.handleFrame(h,t,i)}}i&&this.pendingText&&O(i,this.pendingText)}catch{this.appendMessage("err",this.t("error"))}finally{t.remove(),this.busy=!1,this.syncSendState()}}handleFrame(e,n,t){switch(e.type){case"connected":return this.conversationId=e.conversationId||this.conversationId,this.sessionId=e.anonymousSessionId||this.sessionId,this.persistIds(),t;case"token":return t||(n.remove(),t=this.appendMessage("bot","")),this.pendingText+=e.text,t.textContent=this.pendingText,this.scrollDown(),t;case"tool":return n.classList.toggle("searching",e.status==="running"),t;case"card":return this.appendCard(e.card),t;case"action":return this.handleAction(e),t;case"error":return this.appendMessage("err",e.message||this.t("error")),t;case"done":default:return t}}appendCard(e){if(!this.messagesEl||this.cardIds.has(e.productId))return;if(this.cardIds.add(e.productId),!this.cardsRow){let s=document.createElement("div");s.className="bb-shelf";let b=document.createElement("div");b.className="bb-shelf-cap",b.textContent=this.t("results"),this.cardsRow=document.createElement("div"),this.cardsRow.className="bb-cards",s.appendChild(b),s.appendChild(this.cardsRow),this.messagesEl.appendChild(s)}let n=B(e.url)?e.url:null,t=document.createElement("div");t.className="bb-card";let i=()=>{this.beacon(e.botRef),n&&(window.location.href=n)},o=document.createElement("span");if(o.className="bb-card-img",e.imageUrl&&B(e.imageUrl)){let s=document.createElement("img");s.src=e.imageUrl,s.alt="",s.loading="lazy",o.appendChild(s)}else o.appendChild(f("cart"));o.addEventListener("click",i),t.appendChild(o);let r=document.createElement("span");r.className="bb-card-body";let d=document.createElement("span");d.className="bb-card-title",d.textContent=e.title,d.addEventListener("click",i);let a=document.createElement("span");a.className="bb-card-price",a.textContent=e.price.formatted,r.appendChild(d),r.appendChild(a);let l=document.createElement("span");if(l.className="bb-card-cta",e.requiresOptions){let s=document.createElement("button");s.className="bb-btn bb-btn-add",s.setAttribute("aria-label",this.t("addToCart")),s.appendChild(f("cart")),e.variants?.length?s.addEventListener("click",()=>this.togglePicker(r,e,o)):s.addEventListener("click",i),l.appendChild(s)}else{let s=document.createElement("button");s.className="bb-btn bb-btn-add",s.appendChild(f("cart")),s.appendChild(document.createTextNode(this.t("addToCart"))),s.addEventListener("click",()=>void this.addToCart(e,s));let b=document.createElement("button");b.className="bb-btn bb-btn-ghost",b.appendChild(document.createTextNode(this.t("view"))),b.addEventListener("click",i),l.appendChild(s),l.appendChild(b)}r.appendChild(l),t.appendChild(r),this.cardsRow.appendChild(t),this.scrollDown()}togglePicker(e,n,t){let i=e.parentElement,o=e.querySelector(".bb-pick");if(o){o.remove(),i?.classList.remove("picking");return}i?.classList.add("picking");let r=n.variants??[],d=[];for(let u of r)for(let h of Object.keys(u.attributes))d.includes(h)||d.push(h);let a={},l=document.createElement("span");l.className="bb-pick";let s=()=>r.find(u=>d.every(h=>a[h]&&u.attributes[h]===a[h]))??null,b=()=>{l.replaceChildren();for(let c of d){let k=document.createElement("span");k.className="bb-pick-key",k.textContent=c;let E=document.createElement("span");E.className="bb-pick-vals";let C=new Set;for(let I of r){let m=I.attributes[c];if(!m||C.has(m))continue;C.add(m);let A=r.some(N=>N.attributes[c]===m&&d.every(T=>T===c||!a[T]||N.attributes[T]===a[T])),x=document.createElement("button");x.className=`bb-chipv${a[c]===m?" sel":""}${A?"":" off"}`,x.textContent=m,x.addEventListener("click",()=>{a[c]===m?delete a[c]:a[c]=m,b()}),E.appendChild(x)}l.appendChild(k),l.appendChild(E)}let u=document.createElement("button");u.className="bb-pick-close",u.setAttribute("aria-label",this.t("close")),u.appendChild(f("close")),u.addEventListener("click",()=>{l.remove(),i?.classList.remove("picking")}),l.appendChild(u);let h=s(),w=document.createElement("span");w.className="bb-pick-foot";let v=document.createElement("span");v.className="bb-pick-price",v.textContent=h?h.price.formatted:"";let y=document.createElement("button");if(y.className="bb-btn bb-btn-add",y.appendChild(f("cart")),y.appendChild(document.createTextNode(this.t("addToCart"))),h||(y.disabled=!0),y.addEventListener("click",()=>{let c=s();c&&this.addToCart(n,y,c.id)}),w.appendChild(v),w.appendChild(y),l.appendChild(w),h?.imageUrl&&B(h.imageUrl)){let c=t.querySelector("img");c&&(c.src=h.imageUrl)}this.scrollDown()};b(),e.appendChild(l),this.scrollDown()}async addToCart(e,n,t){this.beacon(e.botRef),n.dataset.state="busy",await this.dispatchAdd(e.productId,t??null)?(n.dataset.state="done",n.replaceChildren(f("check"),document.createTextNode(this.t("added"))),setTimeout(()=>{!this.destroyed&&n.isConnected&&(delete n.dataset.state,n.replaceChildren(f("cart"),document.createTextNode(this.t("addToCart"))))},2200)):(delete n.dataset.state,B(e.url)&&(window.location.href=e.url))}async dispatchAdd(e,n){try{if(this.onAddToCart)return await this.onAddToCart({productId:e,variantId:n,quantity:1})!==!1;let t=new CustomEvent("brainerce:bot:add-to-cart",{detail:{productId:e,variantId:n,quantity:1,connectionId:this.connectionId},cancelable:!0,bubbles:!0,composed:!0});return!window.dispatchEvent(t)}catch{return!1}}async handleAction(e){if(e.action!=="add_to_cart")return;e.botRef&&this.beacon(e.botRef),await this.dispatchAdd(e.productId,e.variantId)||this.appendMessage("err",this.t("addFailed"))}beacon(e){try{navigator.sendBeacon?.(`${this.baseUrl}/api/storefront-bot/attribution/click`,new Blob([JSON.stringify({botRef:e})],{type:"application/json"}))}catch{}}toggleEscalation(){this.root?.querySelector(".bb-esc")?.classList.toggle("open")}async submitEscalation(e){let n=e.querySelector('input[name="email"]')?.value.trim(),t=e.querySelector('textarea[name="message"]')?.value.trim();if(!(!n||!t||!this.conversationId||!this.sessionId))try{if((await fetch(`${this.baseUrl}/api/storefront-bot/${encodeURIComponent(this.connectionId)}/escalate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:n,message:t,conversationId:this.conversationId,anonymousSessionId:this.sessionId,locale:this.locale})})).ok){let o=document.createElement("span");o.className="bb-esc-note",o.appendChild(f("check")),o.appendChild(document.createTextNode(this.t("sent"))),e.replaceChildren(o)}}catch{}}appendMessage(e,n){let t=document.createElement("div");return t.className=`bb-msg ${e}`,t.setAttribute("dir","auto"),t.textContent=n,this.messagesEl?.appendChild(t),this.scrollDown(),t}appendTyping(){let e=document.createElement("div");e.className="bb-typing";let n=document.createElement("span");n.className="bb-dots";for(let i=0;i<3;i++)n.appendChild(document.createElement("i"));let t=document.createElement("span");return t.className="bb-tool",t.textContent=this.t("searching"),e.appendChild(n),e.appendChild(t),this.messagesEl?.appendChild(e),this.scrollDown(),e}scrollDown(){this.messagesEl&&(this.messagesEl.scrollTop=this.messagesEl.scrollHeight)}};(()=>{let p=document.currentScript,e=p?.dataset.connectionId;if(!e){console.warn("[BrainerceBot] missing data-connection-id on the bot.js script tag");return}let n=p?.dataset.apiBase||void 0,t=()=>void S.mount({connectionId:e,baseUrl:n});document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t,{once:!0}):t()})();})();
251
+ `))>=0;){let u=a.slice(0,b);if(a=a.slice(b+2),!u.startsWith("data: "))continue;let h;try{h=JSON.parse(u.slice(6))}catch{continue}i=this.handleFrame(h,t,i)}}i&&this.pendingText&&O(i,this.pendingText)}catch{this.appendMessage("err",this.t("error"))}finally{t.remove(),this.busy=!1,this.syncSendState()}}handleFrame(e,n,t){switch(e.type){case"connected":return this.conversationId=e.conversationId||this.conversationId,this.sessionId=e.anonymousSessionId||this.sessionId,this.persistIds(),t;case"token":return t||(n.remove(),t=this.appendMessage("bot","")),this.pendingText+=e.text,t.textContent=this.pendingText,this.scrollDown(),t;case"tool":return n.classList.toggle("searching",e.status==="running"),t;case"card":return this.appendCard(e.card),t;case"action":return this.handleAction(e),t;case"error":return this.appendMessage("err",e.message||this.t("error")),t;case"escalate_offer":return this.openEscalation(),t;case"done":default:return t}}appendCard(e){if(!this.messagesEl||this.cardIds.has(e.productId))return;if(this.cardIds.add(e.productId),!this.cardsRow){let s=document.createElement("div");s.className="bb-shelf";let b=document.createElement("div");b.className="bb-shelf-cap",b.textContent=this.t("results"),this.cardsRow=document.createElement("div"),this.cardsRow.className="bb-cards",s.appendChild(b),s.appendChild(this.cardsRow),this.messagesEl.appendChild(s)}let n=B(e.url)?e.url:null,t=document.createElement("div");t.className="bb-card";let i=()=>{this.beacon(e.botRef),n&&(window.location.href=n)},o=document.createElement("span");if(o.className="bb-card-img",e.imageUrl&&B(e.imageUrl)){let s=document.createElement("img");s.src=e.imageUrl,s.alt="",s.loading="lazy",o.appendChild(s)}else o.appendChild(m("cart"));o.addEventListener("click",i),t.appendChild(o);let r=document.createElement("span");r.className="bb-card-body";let d=document.createElement("span");d.className="bb-card-title",d.textContent=e.title,d.addEventListener("click",i);let a=document.createElement("span");a.className="bb-card-price",a.textContent=e.price.formatted,r.appendChild(d),r.appendChild(a);let l=document.createElement("span");if(l.className="bb-card-cta",e.requiresOptions){let s=document.createElement("button");s.className="bb-btn bb-btn-add",s.setAttribute("aria-label",this.t("addToCart")),s.appendChild(m("cart")),e.variants?.length?s.addEventListener("click",()=>this.togglePicker(r,e,o)):s.addEventListener("click",i),l.appendChild(s)}else{let s=document.createElement("button");s.className="bb-btn bb-btn-add",s.appendChild(m("cart")),s.appendChild(document.createTextNode(this.t("addToCart"))),s.addEventListener("click",()=>void this.addToCart(e,s));let b=document.createElement("button");b.className="bb-btn bb-btn-ghost",b.appendChild(document.createTextNode(this.t("view"))),b.addEventListener("click",i),l.appendChild(s),l.appendChild(b)}r.appendChild(l),t.appendChild(r),this.cardsRow.appendChild(t),this.scrollDown()}togglePicker(e,n,t){let i=e.parentElement,o=e.querySelector(".bb-pick");if(o){o.remove(),i?.classList.remove("picking");return}i?.classList.add("picking");let r=n.variants??[],d=[];for(let u of r)for(let h of Object.keys(u.attributes))d.includes(h)||d.push(h);let a={},l=document.createElement("span");l.className="bb-pick";let s=()=>r.find(u=>d.every(h=>a[h]&&u.attributes[h]===a[h]))??null,b=()=>{l.replaceChildren();for(let c of d){let k=document.createElement("span");k.className="bb-pick-key",k.textContent=c;let E=document.createElement("span");E.className="bb-pick-vals";let C=new Set;for(let I of r){let f=I.attributes[c];if(!f||C.has(f))continue;C.add(f);let M=r.some(N=>N.attributes[c]===f&&d.every(T=>T===c||!a[T]||N.attributes[T]===a[T])),x=document.createElement("button");x.className=`bb-chipv${a[c]===f?" sel":""}${M?"":" off"}`,x.textContent=f,x.addEventListener("click",()=>{a[c]===f?delete a[c]:a[c]=f,b()}),E.appendChild(x)}l.appendChild(k),l.appendChild(E)}let u=document.createElement("button");u.className="bb-pick-close",u.setAttribute("aria-label",this.t("close")),u.appendChild(m("close")),u.addEventListener("click",()=>{l.remove(),i?.classList.remove("picking")}),l.appendChild(u);let h=s(),w=document.createElement("span");w.className="bb-pick-foot";let v=document.createElement("span");v.className="bb-pick-price",v.textContent=h?h.price.formatted:"";let y=document.createElement("button");if(y.className="bb-btn bb-btn-add",y.appendChild(m("cart")),y.appendChild(document.createTextNode(this.t("addToCart"))),h||(y.disabled=!0),y.addEventListener("click",()=>{let c=s();c&&this.addToCart(n,y,c.id)}),w.appendChild(v),w.appendChild(y),l.appendChild(w),h?.imageUrl&&B(h.imageUrl)){let c=t.querySelector("img");c&&(c.src=h.imageUrl)}this.scrollDown()};b(),e.appendChild(l),this.scrollDown()}async addToCart(e,n,t){this.beacon(e.botRef),n.dataset.state="busy",await this.dispatchAdd(e.productId,t??null)?(n.dataset.state="done",n.replaceChildren(m("check"),document.createTextNode(this.t("added"))),setTimeout(()=>{!this.destroyed&&n.isConnected&&(delete n.dataset.state,n.replaceChildren(m("cart"),document.createTextNode(this.t("addToCart"))))},2200)):(delete n.dataset.state,B(e.url)&&(window.location.href=e.url))}async dispatchAdd(e,n){try{if(this.onAddToCart)return await this.onAddToCart({productId:e,variantId:n,quantity:1})!==!1;let t=new CustomEvent("brainerce:bot:add-to-cart",{detail:{productId:e,variantId:n,quantity:1,connectionId:this.connectionId},cancelable:!0,bubbles:!0,composed:!0});return!window.dispatchEvent(t)}catch{return!1}}async handleAction(e){if(e.action!=="add_to_cart")return;e.botRef&&this.beacon(e.botRef),await this.dispatchAdd(e.productId,e.variantId)||this.appendMessage("err",this.t("addFailed"))}beacon(e){try{navigator.sendBeacon?.(`${this.baseUrl}/api/storefront-bot/attribution/click`,new Blob([JSON.stringify({botRef:e})],{type:"application/json"}))}catch{}}toggleEscalation(){this.root?.querySelector(".bb-esc")?.classList.toggle("open")}openEscalation(){this.root?.querySelector(".bb-esc")?.classList.add("open")}async submitEscalation(e){let n=e.querySelector('input[name="email"]')?.value.trim(),t=e.querySelector('textarea[name="message"]')?.value.trim();if(!(!n||!t||!this.conversationId||!this.sessionId))try{if((await fetch(`${this.baseUrl}/api/storefront-bot/${encodeURIComponent(this.connectionId)}/escalate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:n,message:t,conversationId:this.conversationId,anonymousSessionId:this.sessionId,locale:this.locale})})).ok){let o=document.createElement("span");o.className="bb-esc-note",o.appendChild(m("check")),o.appendChild(document.createTextNode(this.t("sent"))),e.replaceChildren(o)}}catch{}}appendMessage(e,n){let t=document.createElement("div");return t.className=`bb-msg ${e}`,t.setAttribute("dir","auto"),t.textContent=n,this.messagesEl?.appendChild(t),this.scrollDown(),t}appendTyping(){let e=document.createElement("div");e.className="bb-typing";let n=document.createElement("span");n.className="bb-dots";for(let i=0;i<3;i++)n.appendChild(document.createElement("i"));let t=document.createElement("span");return t.className="bb-tool",t.textContent=this.t("searching"),e.appendChild(n),e.appendChild(t),this.messagesEl?.appendChild(e),this.scrollDown(),e}scrollDown(){this.messagesEl&&(this.messagesEl.scrollTop=this.messagesEl.scrollHeight)}};(()=>{let p=document.currentScript,e=p?.dataset.connectionId;if(!e){console.warn("[BrainerceBot] missing data-connection-id on the bot.js script tag");return}let n=p?.dataset.apiBase||void 0,t=()=>void S.mount({connectionId:e,baseUrl:n});document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t,{once:!0}):t()})();})();
@@ -110,6 +110,7 @@ declare class BrainerceBot {
110
110
  /** The durable conversion signal — fire-and-forget, never blocks. */
111
111
  private beacon;
112
112
  private toggleEscalation;
113
+ private openEscalation;
113
114
  private submitEscalation;
114
115
  private appendMessage;
115
116
  private appendTyping;
@@ -110,6 +110,7 @@ declare class BrainerceBot {
110
110
  /** The durable conversion signal — fire-and-forget, never blocks. */
111
111
  private beacon;
112
112
  private toggleEscalation;
113
+ private openEscalation;
113
114
  private submitEscalation;
114
115
  private appendMessage;
115
116
  private appendTyping;
package/dist/bot/index.js CHANGED
@@ -80,7 +80,8 @@ var ICONS = {
80
80
  send: '<svg viewBox="0 0 24 24" fill="none"><path d="M4.4 11.2 19 4.6c.7-.3 1.4.4 1.1 1.1l-6.6 14.6c-.3.7-1.3.6-1.5-.1l-1.7-5.4a1 1 0 0 0-.6-.6l-5.4-1.7c-.7-.2-.8-1.2-.1-1.5Z" fill="currentColor"/></svg>',
81
81
  cart: '<svg viewBox="0 0 24 24" fill="none"><path d="M3 4h2l2.4 11.2A2 2 0 0 0 9.36 17H17.5a2 2 0 0 0 1.95-1.55L21 8H6" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><circle cx="10" cy="20.5" r="1.4" fill="currentColor"/><circle cx="17" cy="20.5" r="1.4" fill="currentColor"/></svg>',
82
82
  check: '<svg viewBox="0 0 24 24" fill="none"><path d="m5 12.5 4.5 4.5L19 7.5" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>',
83
- arrow: '<svg viewBox="0 0 24 24" fill="none"><path d="M7 17 17 7M9 7h8v8" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>'
83
+ arrow: '<svg viewBox="0 0 24 24" fill="none"><path d="M7 17 17 7M9 7h8v8" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>',
84
+ sparkle: '<svg viewBox="0 0 24 24" fill="none"><path d="M12 3v2M12 19v2M3 12h2M19 12h2M6.34 6.34l1.42 1.42M16.24 16.24l1.42 1.42M6.34 17.66l1.42-1.42M16.24 7.76l1.42-1.42" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><circle cx="12" cy="12" r="3.5" fill="currentColor"/></svg>'
84
85
  };
85
86
  var BRAND_MARK = "data:image/png;base64,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";
86
87
  var svgParser = typeof DOMParser !== "undefined" ? new DOMParser() : null;
@@ -541,7 +542,7 @@ var BrainerceBot = class _BrainerceBot {
541
542
  img.alt = "";
542
543
  avatar.appendChild(img);
543
544
  } else {
544
- avatar.appendChild(document.createTextNode(name.charAt(0).toUpperCase()));
545
+ avatar.appendChild(icon("sparkle"));
545
546
  }
546
547
  const headMain = document.createElement("span");
547
548
  headMain.className = "bb-head-main";
@@ -560,7 +561,9 @@ var BrainerceBot = class _BrainerceBot {
560
561
  this.expandBtn = this.iconButton("expand", this.t("expand"), () => this.toggleExpand());
561
562
  actions.appendChild(this.expandBtn);
562
563
  }
563
- actions.appendChild(this.iconButton("mail", this.t("leaveMessage"), () => this.toggleEscalation()));
564
+ actions.appendChild(
565
+ this.iconButton("mail", this.t("leaveMessage"), () => this.toggleEscalation())
566
+ );
564
567
  actions.appendChild(this.iconButton("close", this.t("close"), () => this.close()));
565
568
  header.appendChild(avatar);
566
569
  header.appendChild(headMain);
@@ -607,6 +610,7 @@ var BrainerceBot = class _BrainerceBot {
607
610
  this.inputEl = document.createElement("textarea");
608
611
  this.inputEl.className = "bb-input";
609
612
  this.inputEl.rows = 1;
613
+ this.inputEl.maxLength = 4e3;
610
614
  this.inputEl.placeholder = this.t("placeholder");
611
615
  this.inputEl.addEventListener("keydown", (e) => {
612
616
  if (e.key === "Enter" && !e.shiftKey) {
@@ -836,6 +840,9 @@ var BrainerceBot = class _BrainerceBot {
836
840
  case "error":
837
841
  this.appendMessage("err", frame.message || this.t("error"));
838
842
  return botBubble;
843
+ case "escalate_offer":
844
+ this.openEscalation();
845
+ return botBubble;
839
846
  case "done":
840
847
  default:
841
848
  return botBubble;
@@ -1079,6 +1086,9 @@ var BrainerceBot = class _BrainerceBot {
1079
1086
  toggleEscalation() {
1080
1087
  this.root?.querySelector(".bb-esc")?.classList.toggle("open");
1081
1088
  }
1089
+ openEscalation() {
1090
+ this.root?.querySelector(".bb-esc")?.classList.add("open");
1091
+ }
1082
1092
  async submitEscalation(form) {
1083
1093
  const email = form.querySelector('input[name="email"]')?.value.trim();
1084
1094
  const message = form.querySelector('textarea[name="message"]')?.value.trim();
@@ -54,7 +54,8 @@ var ICONS = {
54
54
  send: '<svg viewBox="0 0 24 24" fill="none"><path d="M4.4 11.2 19 4.6c.7-.3 1.4.4 1.1 1.1l-6.6 14.6c-.3.7-1.3.6-1.5-.1l-1.7-5.4a1 1 0 0 0-.6-.6l-5.4-1.7c-.7-.2-.8-1.2-.1-1.5Z" fill="currentColor"/></svg>',
55
55
  cart: '<svg viewBox="0 0 24 24" fill="none"><path d="M3 4h2l2.4 11.2A2 2 0 0 0 9.36 17H17.5a2 2 0 0 0 1.95-1.55L21 8H6" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><circle cx="10" cy="20.5" r="1.4" fill="currentColor"/><circle cx="17" cy="20.5" r="1.4" fill="currentColor"/></svg>',
56
56
  check: '<svg viewBox="0 0 24 24" fill="none"><path d="m5 12.5 4.5 4.5L19 7.5" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>',
57
- arrow: '<svg viewBox="0 0 24 24" fill="none"><path d="M7 17 17 7M9 7h8v8" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>'
57
+ arrow: '<svg viewBox="0 0 24 24" fill="none"><path d="M7 17 17 7M9 7h8v8" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>',
58
+ sparkle: '<svg viewBox="0 0 24 24" fill="none"><path d="M12 3v2M12 19v2M3 12h2M19 12h2M6.34 6.34l1.42 1.42M16.24 16.24l1.42 1.42M6.34 17.66l1.42-1.42M16.24 7.76l1.42-1.42" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><circle cx="12" cy="12" r="3.5" fill="currentColor"/></svg>'
58
59
  };
59
60
  var BRAND_MARK = "data:image/png;base64,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";
60
61
  var svgParser = typeof DOMParser !== "undefined" ? new DOMParser() : null;
@@ -515,7 +516,7 @@ var BrainerceBot = class _BrainerceBot {
515
516
  img.alt = "";
516
517
  avatar.appendChild(img);
517
518
  } else {
518
- avatar.appendChild(document.createTextNode(name.charAt(0).toUpperCase()));
519
+ avatar.appendChild(icon("sparkle"));
519
520
  }
520
521
  const headMain = document.createElement("span");
521
522
  headMain.className = "bb-head-main";
@@ -534,7 +535,9 @@ var BrainerceBot = class _BrainerceBot {
534
535
  this.expandBtn = this.iconButton("expand", this.t("expand"), () => this.toggleExpand());
535
536
  actions.appendChild(this.expandBtn);
536
537
  }
537
- actions.appendChild(this.iconButton("mail", this.t("leaveMessage"), () => this.toggleEscalation()));
538
+ actions.appendChild(
539
+ this.iconButton("mail", this.t("leaveMessage"), () => this.toggleEscalation())
540
+ );
538
541
  actions.appendChild(this.iconButton("close", this.t("close"), () => this.close()));
539
542
  header.appendChild(avatar);
540
543
  header.appendChild(headMain);
@@ -581,6 +584,7 @@ var BrainerceBot = class _BrainerceBot {
581
584
  this.inputEl = document.createElement("textarea");
582
585
  this.inputEl.className = "bb-input";
583
586
  this.inputEl.rows = 1;
587
+ this.inputEl.maxLength = 4e3;
584
588
  this.inputEl.placeholder = this.t("placeholder");
585
589
  this.inputEl.addEventListener("keydown", (e) => {
586
590
  if (e.key === "Enter" && !e.shiftKey) {
@@ -810,6 +814,9 @@ var BrainerceBot = class _BrainerceBot {
810
814
  case "error":
811
815
  this.appendMessage("err", frame.message || this.t("error"));
812
816
  return botBubble;
817
+ case "escalate_offer":
818
+ this.openEscalation();
819
+ return botBubble;
813
820
  case "done":
814
821
  default:
815
822
  return botBubble;
@@ -1053,6 +1060,9 @@ var BrainerceBot = class _BrainerceBot {
1053
1060
  toggleEscalation() {
1054
1061
  this.root?.querySelector(".bb-esc")?.classList.toggle("open");
1055
1062
  }
1063
+ openEscalation() {
1064
+ this.root?.querySelector(".bb-esc")?.classList.add("open");
1065
+ }
1056
1066
  async submitEscalation(form) {
1057
1067
  const email = form.querySelector('input[name="email"]')?.value.trim();
1058
1068
  const message = form.querySelector('textarea[name="message"]')?.value.trim();
package/dist/index.d.mts CHANGED
@@ -248,6 +248,13 @@ interface Product {
248
248
  id: string;
249
249
  name: string;
250
250
  slug?: string | null;
251
+ /**
252
+ * Per-locale URL slugs derived from the product's translation map.
253
+ * Key = BCP-47 locale (e.g. `"en"`, `"he"`, `"ar"`), value = the translated slug for that locale.
254
+ * Used by storefronts to build hreflang tags and locale-specific sitemap entries.
255
+ * Only populated when the product has at least one locale-specific slug configured.
256
+ */
257
+ localeSlugs?: Record<string, string> | null;
251
258
  /**
252
259
  * Product description as HTML. **Always sanitize before rendering**, e.g.:
253
260
  *
package/dist/index.d.ts CHANGED
@@ -248,6 +248,13 @@ interface Product {
248
248
  id: string;
249
249
  name: string;
250
250
  slug?: string | null;
251
+ /**
252
+ * Per-locale URL slugs derived from the product's translation map.
253
+ * Key = BCP-47 locale (e.g. `"en"`, `"he"`, `"ar"`), value = the translated slug for that locale.
254
+ * Used by storefronts to build hreflang tags and locale-specific sitemap entries.
255
+ * Only populated when the product has at least one locale-specific slug configured.
256
+ */
257
+ localeSlugs?: Record<string, string> | null;
251
258
  /**
252
259
  * Product description as HTML. **Always sanitize before rendering**, e.g.:
253
260
  *
package/package.json CHANGED
@@ -1,81 +1,81 @@
1
- {
2
- "name": "brainerce",
3
- "version": "1.35.1",
4
- "description": "Official SDK for building e-commerce storefronts with Brainerce Platform. Perfect for vibe-coded sites, AI-built stores (Cursor, Lovable, v0), and custom storefronts.",
5
- "main": "dist/index.js",
6
- "module": "dist/index.mjs",
7
- "types": "dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "require": "./dist/index.js",
12
- "import": "./dist/index.mjs"
13
- },
14
- "./bot": {
15
- "types": "./dist/bot/index.d.ts",
16
- "require": "./dist/bot/index.js",
17
- "import": "./dist/bot/index.mjs"
18
- }
19
- },
20
- "files": [
21
- "dist",
22
- "README.md"
23
- ],
24
- "scripts": {
25
- "build": "tsup src/index.ts --format cjs,esm --dts && tsup src/bot/index.ts --format cjs,esm --dts --out-dir dist/bot && tsup src/bot/bootstrap.ts --format iife --minify --out-dir dist/bot",
26
- "dev": "tsup src/index.ts --format cjs,esm --dts --watch",
27
- "lint": "eslint \"src/**/*.ts\"",
28
- "test": "vitest run",
29
- "test:watch": "vitest",
30
- "prepublishOnly": "pnpm build"
31
- },
32
- "keywords": [
33
- "brainerce",
34
- "e-commerce",
35
- "ecommerce",
36
- "sdk",
37
- "vibe-coding",
38
- "vibe-coded",
39
- "ai-commerce",
40
- "storefront",
41
- "headless-commerce",
42
- "multi-platform",
43
- "shopify",
44
- "tiktok",
45
- "cursor",
46
- "lovable",
47
- "v0",
48
- "cart",
49
- "checkout",
50
- "products",
51
- "sync"
52
- ],
53
- "author": "Brainerce",
54
- "license": "MIT",
55
- "repository": {
56
- "type": "git",
57
- "url": "https://github.com/brainerce/brainerce.git",
58
- "directory": "packages/sdk"
59
- },
60
- "homepage": "https://brainerce.com",
61
- "bugs": {
62
- "url": "https://github.com/brainerce/brainerce/issues"
63
- },
64
- "devDependencies": {
65
- "@types/node": "^25.0.3",
66
- "@typescript-eslint/eslint-plugin": "^8.50.1",
67
- "@typescript-eslint/parser": "^8.50.1",
68
- "eslint": "^9.39.2",
69
- "tsup": "^8.0.0",
70
- "typescript": "^5.3.0",
71
- "vitest": "^1.0.0"
72
- },
73
- "peerDependencies": {
74
- "typescript": ">=4.7.0"
75
- },
76
- "peerDependenciesMeta": {
77
- "typescript": {
78
- "optional": true
79
- }
80
- }
81
- }
1
+ {
2
+ "name": "brainerce",
3
+ "version": "1.36.1",
4
+ "description": "Official SDK for building e-commerce storefronts with Brainerce Platform. Perfect for vibe-coded sites, AI-built stores (Cursor, Lovable, v0), and custom storefronts.",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "require": "./dist/index.js",
12
+ "import": "./dist/index.mjs"
13
+ },
14
+ "./bot": {
15
+ "types": "./dist/bot/index.d.ts",
16
+ "require": "./dist/bot/index.js",
17
+ "import": "./dist/bot/index.mjs"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "README.md"
23
+ ],
24
+ "scripts": {
25
+ "build": "tsup src/index.ts --format cjs,esm --dts && tsup src/bot/index.ts --format cjs,esm --dts --out-dir dist/bot && tsup src/bot/bootstrap.ts --format iife --minify --out-dir dist/bot",
26
+ "dev": "tsup src/index.ts --format cjs,esm --dts --watch",
27
+ "lint": "eslint \"src/**/*.ts\"",
28
+ "test": "vitest run",
29
+ "test:watch": "vitest",
30
+ "prepublishOnly": "pnpm build"
31
+ },
32
+ "keywords": [
33
+ "brainerce",
34
+ "e-commerce",
35
+ "ecommerce",
36
+ "sdk",
37
+ "vibe-coding",
38
+ "vibe-coded",
39
+ "ai-commerce",
40
+ "storefront",
41
+ "headless-commerce",
42
+ "multi-platform",
43
+ "shopify",
44
+ "tiktok",
45
+ "cursor",
46
+ "lovable",
47
+ "v0",
48
+ "cart",
49
+ "checkout",
50
+ "products",
51
+ "sync"
52
+ ],
53
+ "author": "Brainerce",
54
+ "license": "MIT",
55
+ "repository": {
56
+ "type": "git",
57
+ "url": "https://github.com/brainerce/brainerce.git",
58
+ "directory": "packages/sdk"
59
+ },
60
+ "homepage": "https://brainerce.com",
61
+ "bugs": {
62
+ "url": "https://github.com/brainerce/brainerce/issues"
63
+ },
64
+ "devDependencies": {
65
+ "@types/node": "^25.0.3",
66
+ "@typescript-eslint/eslint-plugin": "^8.50.1",
67
+ "@typescript-eslint/parser": "^8.50.1",
68
+ "eslint": "^9.39.2",
69
+ "tsup": "^8.0.0",
70
+ "typescript": "^5.3.0",
71
+ "vitest": "^1.0.0"
72
+ },
73
+ "peerDependencies": {
74
+ "typescript": ">=4.7.0"
75
+ },
76
+ "peerDependenciesMeta": {
77
+ "typescript": {
78
+ "optional": true
79
+ }
80
+ }
81
+ }