wineater-bot 1.5.13 → 1.5.15

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.
@@ -280,31 +280,31 @@ const f = `
280
280
  }`, p = document.createElement("style");
281
281
  p.textContent = f;
282
282
  document.head.appendChild(p);
283
- function b(n, t, e) {
284
- let o = "";
283
+ function b(o, t, e) {
284
+ let n = "";
285
285
  if (e) {
286
286
  const i = /* @__PURE__ */ new Date();
287
- i.setTime(i.getTime() + e * 24 * 60 * 60 * 1e3), o = "; expires=" + i.toUTCString();
287
+ i.setTime(i.getTime() + e * 24 * 60 * 60 * 1e3), n = "; expires=" + i.toUTCString();
288
288
  }
289
- document.cookie = n + "=" + (t || "") + o + "; path=/; secure; samesite=strict";
289
+ document.cookie = o + "=" + (t || "") + n + "; path=/; secure; samesite=strict";
290
290
  }
291
- function r(n) {
292
- const e = `; ${document.cookie}`.split(`; ${n}=`);
291
+ function r(o) {
292
+ const e = `; ${document.cookie}`.split(`; ${o}=`);
293
293
  if (e.length === 2)
294
294
  return e.pop().split(";").shift();
295
295
  }
296
- function d(n, t) {
297
- const e = "6f3d90d5b02720f58de3663e3ef675fe", o = "https://api.mixpanel.com/track", i = [{
298
- event: n,
296
+ function d(o, t) {
297
+ const e = "6f3d90d5b02720f58de3663e3ef675fe", n = "https://api.mixpanel.com/track", i = [{
298
+ event: o,
299
299
  properties: {
300
300
  token: e,
301
301
  ...t
302
302
  }
303
303
  }];
304
- fetch(o, {
304
+ fetch(n, {
305
305
  method: "POST",
306
306
  headers: {
307
- "access-control-allow-origin": "*"
307
+ "content-type": "application/json"
308
308
  },
309
309
  body: JSON.stringify(i)
310
310
  }).then((s) => {
@@ -319,18 +319,18 @@ function h() {
319
319
  function g() {
320
320
  d("Chatbot Closed", { distinct_id: r("chatbotToken") });
321
321
  }
322
- function y(n) {
323
- d("Message Sent", { distinct_id: r("chatbotToken"), message_content: n });
322
+ function y(o) {
323
+ d("Message Sent", { distinct_id: r("chatbotToken"), message_content: o });
324
324
  }
325
- function w(n) {
326
- d("Message Sent", { distinct_id: r("chatbotToken"), products: n });
325
+ function w(o) {
326
+ d("Message Sent", { distinct_id: r("chatbotToken"), products: o });
327
327
  }
328
- function x(n) {
329
- d("Product Clicked", { distinct_id: r("chatbotToken"), product_id: n });
328
+ function x(o) {
329
+ d("Product Clicked", { distinct_id: r("chatbotToken"), product_id: o });
330
330
  }
331
331
  function u() {
332
- const n = document.getElementById("chat-window"), t = document.getElementById("chat-icon");
333
- n.classList.contains("visible") ? (g(), n.classList.remove("visible"), t.style.display = "flex") : (h(), n.classList.add("visible"), t.style.display = "none");
332
+ const o = document.getElementById("chat-window"), t = document.getElementById("chat-icon");
333
+ o.classList.contains("visible") ? (g(), o.classList.remove("visible"), t.style.display = "flex") : (h(), o.classList.add("visible"), t.style.display = "none");
334
334
  }
335
335
  function v() {
336
336
  g(), document.getElementById("chat-window").classList.remove("visible");
@@ -345,7 +345,7 @@ const E = ["climats", "telckel", "biobio", "weinpoint"], I = "OuhXJRleF6sROjsQZP
345
345
  class m {
346
346
  constructor(t) {
347
347
  var e;
348
- this.baseURL = "https://api.wineater.com/", this.store = E.find((o) => window.location.href.includes(o)), this.token = ((e = window == null ? void 0 : window.wineaterData) == null ? void 0 : e.CLIENT_TOKEN) || I;
348
+ this.baseURL = "https://api.wineater.com/", this.store = E.find((n) => window.location.href.includes(n)), this.token = ((e = window == null ? void 0 : window.wineaterData) == null ? void 0 : e.CLIENT_TOKEN) || I;
349
349
  }
350
350
  async getStoreConfig(t) {
351
351
  console.log(t);
@@ -375,10 +375,10 @@ class m {
375
375
  Authorization: `Bearer ${this.token}`
376
376
  },
377
377
  body: JSON.stringify({ text: t, store: this.store ? this.store.toString().charAt(0).toUpperCase() + this.store.slice(1) : void 0 })
378
- }), o = await e.json();
378
+ }), n = await e.json();
379
379
  if (!e.ok)
380
- throw new Error(`API call failed with status ${e.status}: ${o.message || "No additional error information"}`);
381
- return o;
380
+ throw new Error(`API call failed with status ${e.status}: ${n.message || "No additional error information"}`);
381
+ return n;
382
382
  } catch (e) {
383
383
  throw console.error("Fetching wine recommendations failed:", e.message), new Error(`Error in getWineRecommendations: ${e.message}`);
384
384
  }
@@ -465,13 +465,13 @@ class T {
465
465
  this.api = new m(), this.displayFirstMessage(a.translate("welcomeMessage"));
466
466
  }
467
467
  initialize() {
468
- document.getElementById("send-button").addEventListener("click", () => this.handleUserInput()), document.getElementById("user-input").addEventListener("keypress", (o) => {
469
- o.key === "Enter" && this.handleUserInput();
468
+ document.getElementById("send-button").addEventListener("click", () => this.handleUserInput()), document.getElementById("user-input").addEventListener("keypress", (n) => {
469
+ n.key === "Enter" && this.handleUserInput();
470
470
  });
471
471
  }
472
472
  displayFirstMessage(t, e = "api") {
473
- const o = document.getElementById("message-container"), i = document.createElement("div");
474
- i.className = `message ${e}`, i.textContent = t, o.appendChild(i), o.scrollTop = o.scrollHeight;
473
+ const n = document.getElementById("message-container"), i = document.createElement("div");
474
+ i.className = `message ${e}`, i.textContent = t, n.appendChild(i), n.scrollTop = n.scrollHeight;
475
475
  }
476
476
  async handleUserInput() {
477
477
  const t = document.getElementById("user-input"), e = t.value.trim();
@@ -479,8 +479,8 @@ class T {
479
479
  this.displayMessage(e, "user"), t.value = "", this.showTypingIndicator();
480
480
  try {
481
481
  y(e);
482
- const o = await this.api.getWineRecommendations(e);
483
- this.hideTypingIndicator(), o && o.length ? this.displayResults(o) : this.displayMessage("No results found.", "api");
482
+ const n = await this.api.getWineRecommendations(e);
483
+ this.hideTypingIndicator(), n && n.length ? this.displayResults(n) : this.displayMessage("No results found.", "api");
484
484
  } catch {
485
485
  this.hideTypingIndicator(), this.displayMessage(a.translate("somethingWentWrong"), "api");
486
486
  }
@@ -493,26 +493,26 @@ class T {
493
493
  document.getElementById("typing-indicator").classList.remove("visible");
494
494
  }
495
495
  displayMessage(t, e) {
496
- const o = document.getElementById("message-container"), i = document.createElement("div");
497
- i.textContent = t, i.className = "message " + e, o.appendChild(i), o.scrollTop = o.scrollHeight;
496
+ const n = document.getElementById("message-container"), i = document.createElement("div");
497
+ i.textContent = t, i.className = "message " + e, n.appendChild(i), n.scrollTop = n.scrollHeight;
498
498
  }
499
499
  sendAnalytics(t) {
500
500
  x(t);
501
501
  }
502
502
  displayResults(t) {
503
503
  const e = document.getElementById("message-container");
504
- w(t.map((o) => o.Title)), t.forEach((o) => {
504
+ w(t.map((n) => n.Title)), t.forEach((n) => {
505
505
  const i = document.createElement("div");
506
506
  i.className = "wine-item";
507
507
  const s = document.createElement("img");
508
- s.src = o.Image, i.appendChild(s);
508
+ s.src = n.Image, i.appendChild(s);
509
509
  const c = document.createElement("div");
510
510
  c.innerHTML = `
511
- <strong>${o.Title}</strong><br>
512
- ${a.translate("price")}: ${o.Price}<br>
513
- ${a.translate("region")}: ${o.Region}<br>
514
- ${a.translate("type")}: ${o.Type}<br>
515
- <a href="${o.Url}" onclick="sendAnalytics(${o.Title})" target="_blank">${a.translate("moreInfo")}</a>
511
+ <strong>${n.Title}</strong><br>
512
+ ${a.translate("price")}: ${n.Price}<br>
513
+ ${a.translate("region")}: ${n.Region}<br>
514
+ ${a.translate("type")}: ${n.Type}<br>
515
+ <a href="${n.Url}" onclick="sendAnalytics(${n.Title})" target="_blank">${a.translate("moreInfo")}</a>
516
516
  `, i.appendChild(c), e.appendChild(i);
517
517
  }), e.scrollTop = e.scrollHeight;
518
518
  }
@@ -522,7 +522,7 @@ document.addEventListener("DOMContentLoaded", () => {
522
522
  window.toggleChatWindow = u, window.closeChatWindow = v, window.openChatWindow = k;
523
523
  });
524
524
  function W() {
525
- const n = `
525
+ const o = `
526
526
  <div id="chatbot-container">
527
527
  <div id="chat-icon" onclick="toggleChatWindow()">
528
528
  <img src="https://landing-static.s3.eu-central-1.amazonaws.com/images/chat-icon.svg" alt="Chat Icon"> <!-- Update the path to your logo image -->
@@ -549,30 +549,30 @@ function W() {
549
549
  </div>
550
550
  </div>
551
551
  `;
552
- document.body.insertAdjacentHTML("beforeend", n);
552
+ document.body.insertAdjacentHTML("beforeend", o);
553
553
  }
554
554
  function P() {
555
555
  document.getElementById("close-btn").addEventListener("click", u);
556
556
  }
557
557
  function L() {
558
- window.addEventListener("click", function(n) {
558
+ window.addEventListener("click", function(o) {
559
559
  const t = document.getElementById("chat-window"), e = document.getElementById("chat-icon");
560
- !t.contains(n.target) && !e.contains(n.target) && (t.classList.remove("visible"), e.style.display = "flex");
560
+ !t.contains(o.target) && !e.contains(o.target) && (t.classList.remove("visible"), e.style.display = "flex");
561
561
  });
562
562
  }
563
- function S(n) {
564
- console.log(n);
563
+ function S(o) {
564
+ console.log(o);
565
565
  const t = document.getElementById("chat-icon"), e = document.getElementById("chat-window");
566
- t.className = "", e.className = "", n === "right-center" ? (t.classList.add("chat-icon-right-center"), e.classList.add("right-center-aligned")) : t.classList.add("chat-icon-bottom-right");
566
+ t.className = "", e.className = "", o === "right-center" ? (t.classList.add("chat-icon-right-center"), e.classList.add("right-center-aligned")) : t.classList.add("chat-icon-bottom-right");
567
567
  }
568
568
  var l;
569
569
  if (typeof window < "u") {
570
- const n = ((l = window.wineaterData) == null ? void 0 : l.POSITION) || "bottom-right";
570
+ const o = ((l = window.wineaterData) == null ? void 0 : l.POSITION) || "bottom-right";
571
571
  window.addEventListener("DOMContentLoaded", async () => {
572
572
  var s;
573
- const e = ["climats", "telckel", "biobio", "weinpoint"].find((c) => window.location.href.includes(c)) || null;
574
- let o;
575
- e && (o = e.charAt(0).toUpperCase() + e.slice(1)), await a.fetchConfig(o || null), W(), P(), L(), S(n), b("chatbotToken", ((s = window.wineaterData) == null ? void 0 : s.CLIENT_TOKEN) || B, 365), new T().initialize();
573
+ const e = ["climats", "telckel", "biobio", "weinpoint", "vinigrandi"].find((c) => window.location.href.includes(c)) || null;
574
+ let n;
575
+ e && (n = e.charAt(0).toUpperCase() + e.slice(1)), await a.fetchConfig(n || "Demo"), W(), P(), L(), S(o), b("chatbotToken", ((s = window.wineaterData) == null ? void 0 : s.CLIENT_TOKEN) || B, 365), new T().initialize();
576
576
  });
577
577
  }
578
578
  export {
@@ -277,7 +277,7 @@
277
277
  .typing-indicator.visible {
278
278
  visibility: visible;
279
279
  height: 50px;
280
- }`,g=document.createElement("style");g.textContent=d,document.head.appendChild(g);function x(o,t,e){let n="";if(e){const i=new Date;i.setTime(i.getTime()+e*24*60*60*1e3),n="; expires="+i.toUTCString()}document.cookie=o+"="+(t||"")+n+"; path=/; secure; samesite=strict"}function c(o){const e=`; ${document.cookie}`.split(`; ${o}=`);if(e.length===2)return e.pop().split(";").shift()}function l(o,t){const e="6f3d90d5b02720f58de3663e3ef675fe",n="https://api.mixpanel.com/track",i=[{event:o,properties:{token:e,...t}}];fetch(n,{method:"POST",headers:{"access-control-allow-origin":"*"},body:JSON.stringify(i)}).then(a=>{a.ok||console.error("Mixpanel tracking failed",a)}).catch(a=>{console.error("Mixpanel tracking error",a)})}function u(){l("Chatbot Opened",{distinct_id:c("chatbotToken")})}function m(){l("Chatbot Closed",{distinct_id:c("chatbotToken")})}function v(o){l("Message Sent",{distinct_id:c("chatbotToken"),message_content:o})}function k(o){l("Message Sent",{distinct_id:c("chatbotToken"),products:o})}function E(o){l("Product Clicked",{distinct_id:c("chatbotToken"),product_id:o})}function h(){const o=document.getElementById("chat-window"),t=document.getElementById("chat-icon");o.classList.contains("visible")?(m(),o.classList.remove("visible"),t.style.display="flex"):(u(),o.classList.add("visible"),t.style.display="none")}function f(){m(),document.getElementById("chat-window").classList.remove("visible")}function b(){u(),document.getElementById("chat-window").classList.add("visible")}document.addEventListener("DOMContentLoaded",()=>{setupCloseButton(),setupOutsideClick()});const C=["climats","telckel","biobio","weinpoint"],I="OuhXJRleF6sROjsQZPWx1yqjrL6APeJxmHswqyOBWbgIqtXcht3MDadvI9DtOOoL";class y{constructor(t){var e;this.baseURL="https://api.wineater.com/",this.store=C.find(n=>window.location.href.includes(n)),this.token=((e=window==null?void 0:window.wineaterData)==null?void 0:e.CLIENT_TOKEN)||I}async getStoreConfig(t){console.log(t);try{const e=await fetch(`${this.baseURL}stores/store`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({store:t})});if(!e.ok)throw new Error(`HTTP error! Status: ${e.status}`);return await e.json()}catch(e){throw console.error("Error fetching store configuration:",e),e}}async getWineRecommendations(t){console.log(window.location.href);try{const e=await fetch(`${this.baseURL}dish/recommendations`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({text:t,store:this.store?this.store.toString().charAt(0).toUpperCase()+this.store.slice(1):void 0})}),n=await e.json();if(!e.ok)throw new Error(`API call failed with status ${e.status}: ${n.message||"No additional error information"}`);return n}catch(e){throw console.error("Fetching wine recommendations failed:",e.message),new Error(`Error in getWineRecommendations: ${e.message}`)}}}class T{constructor(){this.api=new y,this.language="en",this.translations={fr:{welcomeMessage:"Sublimez votre expérience gastronomique. Il vous suffit de donner les détails de votre plat, et obtenez la recommandation de compagnon de vin idéale. Que voulez-vous manger?",noResultsFound:"Aucun résultat trouvé.",somethingWentWrong:"Désolé, quelque chose a mal tourné.",chatButton:"Accorder le vin au dîner",inputPlaceholder:"ex., Salade de thon",sendButton:"Accorder",price:"Prix",region:"Région",type:"Type",moreInfo:"Plus d'infos"},de:{welcomeMessage:"Sublimez votre expérience gastronomique. Il vous suffit de donner les détails de votre plat, et obtenez la recommandation de compagnon de vin idéale. Que voulez-vous manger?",noResultsFound:"Aucun résultat trouvé.",somethingWentWrong:"Désolé, quelque chose a mal tourné.",chatButton:"Accorder le vin au dîner",inputPlaceholder:"ex., Salade de thon",sendButton:"Accorder",price:"Prix",region:"Région",type:"Type",moreInfo:"Plus d'infos"},es:{welcomeMessage:"Mejore su experiencia gastronómica. Solo proporcione los detalles de su plato y obtenga la recomendación de vino ideal. ¿Qué le gustaría comer?",noResultsFound:"No se encontraron resultados.",somethingWentWrong:"Lo sentimos, algo salió mal.",chatButton:"Maridar vino con cena",inputPlaceholder:"ej., Ensalada de atún",sendButton:"Maridar",price:"Precio",region:"Región",type:"Tipo",moreInfo:"Más info"},en:{welcomeMessage:"Enhance your dining experience. Just provide your dish details and get the ideal wine pairing. What would you like to eat?",noResultsFound:"No results found.",somethingWentWrong:"Sorry, something went wrong.",chatButton:"Pair wine with dinner",inputPlaceholder:"e.g., Tuna Salad",sendButton:"Pair",price:"Price",region:"Region",type:"Type",moreInfo:"More info"},de:{welcomeMessage:"Verbessern Sie Ihr kulinarisches Erlebnis. Geben Sie einfach die Details Ihres Gerichts an und erhalten Sie die ideale Weinempfehlung. Was möchten Sie essen?",noResultsFound:"Keine Ergebnisse gefunden.",somethingWentWrong:"Entschuldigung, etwas ist schief gelaufen.",chatButton:"Wein zum Abendessen kombinieren",inputPlaceholder:"z.B., Thunfischsalat",sendButton:"Kombinieren",price:"Preis",region:"Region",type:"Typ",moreInfo:"Mehr Info"}}}async fetchConfig(t="Demo"){if(t){const e=await this.api.getStoreConfig(t);this.language=e.lang}}translate(t){return this.translations[this.language][t]||t}}const s=new T;class W{constructor(){this.api=new y,this.displayFirstMessage(s.translate("welcomeMessage"))}initialize(){document.getElementById("send-button").addEventListener("click",()=>this.handleUserInput()),document.getElementById("user-input").addEventListener("keypress",n=>{n.key==="Enter"&&this.handleUserInput()})}displayFirstMessage(t,e="api"){const n=document.getElementById("message-container"),i=document.createElement("div");i.className=`message ${e}`,i.textContent=t,n.appendChild(i),n.scrollTop=n.scrollHeight}async handleUserInput(){const t=document.getElementById("user-input"),e=t.value.trim();if(e){this.displayMessage(e,"user"),t.value="",this.showTypingIndicator();try{v(e);const n=await this.api.getWineRecommendations(e);this.hideTypingIndicator(),n&&n.length?this.displayResults(n):this.displayMessage("No results found.","api")}catch{this.hideTypingIndicator(),this.displayMessage(s.translate("somethingWentWrong"),"api")}}}showTypingIndicator(){document.getElementById("typing-indicator").classList.add("visible")}hideTypingIndicator(){document.getElementById("typing-indicator").classList.remove("visible")}displayMessage(t,e){const n=document.getElementById("message-container"),i=document.createElement("div");i.textContent=t,i.className="message "+e,n.appendChild(i),n.scrollTop=n.scrollHeight}sendAnalytics(t){E(t)}displayResults(t){const e=document.getElementById("message-container");k(t.map(n=>n.Title)),t.forEach(n=>{const i=document.createElement("div");i.className="wine-item";const a=document.createElement("img");a.src=n.Image,i.appendChild(a);const p=document.createElement("div");p.innerHTML=`
280
+ }`,g=document.createElement("style");g.textContent=d,document.head.appendChild(g);function x(o,t,e){let n="";if(e){const i=new Date;i.setTime(i.getTime()+e*24*60*60*1e3),n="; expires="+i.toUTCString()}document.cookie=o+"="+(t||"")+n+"; path=/; secure; samesite=strict"}function c(o){const e=`; ${document.cookie}`.split(`; ${o}=`);if(e.length===2)return e.pop().split(";").shift()}function l(o,t){const e="6f3d90d5b02720f58de3663e3ef675fe",n="https://api.mixpanel.com/track",i=[{event:o,properties:{token:e,...t}}];fetch(n,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i)}).then(a=>{a.ok||console.error("Mixpanel tracking failed",a)}).catch(a=>{console.error("Mixpanel tracking error",a)})}function u(){l("Chatbot Opened",{distinct_id:c("chatbotToken")})}function m(){l("Chatbot Closed",{distinct_id:c("chatbotToken")})}function v(o){l("Message Sent",{distinct_id:c("chatbotToken"),message_content:o})}function k(o){l("Message Sent",{distinct_id:c("chatbotToken"),products:o})}function E(o){l("Product Clicked",{distinct_id:c("chatbotToken"),product_id:o})}function h(){const o=document.getElementById("chat-window"),t=document.getElementById("chat-icon");o.classList.contains("visible")?(m(),o.classList.remove("visible"),t.style.display="flex"):(u(),o.classList.add("visible"),t.style.display="none")}function f(){m(),document.getElementById("chat-window").classList.remove("visible")}function b(){u(),document.getElementById("chat-window").classList.add("visible")}document.addEventListener("DOMContentLoaded",()=>{setupCloseButton(),setupOutsideClick()});const C=["climats","telckel","biobio","weinpoint"],I="OuhXJRleF6sROjsQZPWx1yqjrL6APeJxmHswqyOBWbgIqtXcht3MDadvI9DtOOoL";class y{constructor(t){var e;this.baseURL="https://api.wineater.com/",this.store=C.find(n=>window.location.href.includes(n)),this.token=((e=window==null?void 0:window.wineaterData)==null?void 0:e.CLIENT_TOKEN)||I}async getStoreConfig(t){console.log(t);try{const e=await fetch(`${this.baseURL}stores/store`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({store:t})});if(!e.ok)throw new Error(`HTTP error! Status: ${e.status}`);return await e.json()}catch(e){throw console.error("Error fetching store configuration:",e),e}}async getWineRecommendations(t){console.log(window.location.href);try{const e=await fetch(`${this.baseURL}dish/recommendations`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({text:t,store:this.store?this.store.toString().charAt(0).toUpperCase()+this.store.slice(1):void 0})}),n=await e.json();if(!e.ok)throw new Error(`API call failed with status ${e.status}: ${n.message||"No additional error information"}`);return n}catch(e){throw console.error("Fetching wine recommendations failed:",e.message),new Error(`Error in getWineRecommendations: ${e.message}`)}}}class T{constructor(){this.api=new y,this.language="en",this.translations={fr:{welcomeMessage:"Sublimez votre expérience gastronomique. Il vous suffit de donner les détails de votre plat, et obtenez la recommandation de compagnon de vin idéale. Que voulez-vous manger?",noResultsFound:"Aucun résultat trouvé.",somethingWentWrong:"Désolé, quelque chose a mal tourné.",chatButton:"Accorder le vin au dîner",inputPlaceholder:"ex., Salade de thon",sendButton:"Accorder",price:"Prix",region:"Région",type:"Type",moreInfo:"Plus d'infos"},de:{welcomeMessage:"Sublimez votre expérience gastronomique. Il vous suffit de donner les détails de votre plat, et obtenez la recommandation de compagnon de vin idéale. Que voulez-vous manger?",noResultsFound:"Aucun résultat trouvé.",somethingWentWrong:"Désolé, quelque chose a mal tourné.",chatButton:"Accorder le vin au dîner",inputPlaceholder:"ex., Salade de thon",sendButton:"Accorder",price:"Prix",region:"Région",type:"Type",moreInfo:"Plus d'infos"},es:{welcomeMessage:"Mejore su experiencia gastronómica. Solo proporcione los detalles de su plato y obtenga la recomendación de vino ideal. ¿Qué le gustaría comer?",noResultsFound:"No se encontraron resultados.",somethingWentWrong:"Lo sentimos, algo salió mal.",chatButton:"Maridar vino con cena",inputPlaceholder:"ej., Ensalada de atún",sendButton:"Maridar",price:"Precio",region:"Región",type:"Tipo",moreInfo:"Más info"},en:{welcomeMessage:"Enhance your dining experience. Just provide your dish details and get the ideal wine pairing. What would you like to eat?",noResultsFound:"No results found.",somethingWentWrong:"Sorry, something went wrong.",chatButton:"Pair wine with dinner",inputPlaceholder:"e.g., Tuna Salad",sendButton:"Pair",price:"Price",region:"Region",type:"Type",moreInfo:"More info"},de:{welcomeMessage:"Verbessern Sie Ihr kulinarisches Erlebnis. Geben Sie einfach die Details Ihres Gerichts an und erhalten Sie die ideale Weinempfehlung. Was möchten Sie essen?",noResultsFound:"Keine Ergebnisse gefunden.",somethingWentWrong:"Entschuldigung, etwas ist schief gelaufen.",chatButton:"Wein zum Abendessen kombinieren",inputPlaceholder:"z.B., Thunfischsalat",sendButton:"Kombinieren",price:"Preis",region:"Region",type:"Typ",moreInfo:"Mehr Info"}}}async fetchConfig(t="Demo"){if(t){const e=await this.api.getStoreConfig(t);this.language=e.lang}}translate(t){return this.translations[this.language][t]||t}}const s=new T;class W{constructor(){this.api=new y,this.displayFirstMessage(s.translate("welcomeMessage"))}initialize(){document.getElementById("send-button").addEventListener("click",()=>this.handleUserInput()),document.getElementById("user-input").addEventListener("keypress",n=>{n.key==="Enter"&&this.handleUserInput()})}displayFirstMessage(t,e="api"){const n=document.getElementById("message-container"),i=document.createElement("div");i.className=`message ${e}`,i.textContent=t,n.appendChild(i),n.scrollTop=n.scrollHeight}async handleUserInput(){const t=document.getElementById("user-input"),e=t.value.trim();if(e){this.displayMessage(e,"user"),t.value="",this.showTypingIndicator();try{v(e);const n=await this.api.getWineRecommendations(e);this.hideTypingIndicator(),n&&n.length?this.displayResults(n):this.displayMessage("No results found.","api")}catch{this.hideTypingIndicator(),this.displayMessage(s.translate("somethingWentWrong"),"api")}}}showTypingIndicator(){document.getElementById("typing-indicator").classList.add("visible")}hideTypingIndicator(){document.getElementById("typing-indicator").classList.remove("visible")}displayMessage(t,e){const n=document.getElementById("message-container"),i=document.createElement("div");i.textContent=t,i.className="message "+e,n.appendChild(i),n.scrollTop=n.scrollHeight}sendAnalytics(t){E(t)}displayResults(t){const e=document.getElementById("message-container");k(t.map(n=>n.Title)),t.forEach(n=>{const i=document.createElement("div");i.className="wine-item";const a=document.createElement("img");a.src=n.Image,i.appendChild(a);const p=document.createElement("div");p.innerHTML=`
281
281
  <strong>${n.Title}</strong><br>
282
282
  ${s.translate("price")}: ${n.Price}<br>
283
283
  ${s.translate("region")}: ${n.Region}<br>
@@ -309,4 +309,4 @@
309
309
  </div>
310
310
  </div>
311
311
  </div>
312
- `;document.body.insertAdjacentHTML("beforeend",o)}function L(){document.getElementById("close-btn").addEventListener("click",h)}function S(){window.addEventListener("click",function(o){const t=document.getElementById("chat-window"),e=document.getElementById("chat-icon");!t.contains(o.target)&&!e.contains(o.target)&&(t.classList.remove("visible"),e.style.display="flex")})}function O(o){console.log(o);const t=document.getElementById("chat-icon"),e=document.getElementById("chat-window");t.className="",e.className="",o==="right-center"?(t.classList.add("chat-icon-right-center"),e.classList.add("right-center-aligned")):t.classList.add("chat-icon-bottom-right")}if(typeof window<"u"){const o=((w=window.wineaterData)==null?void 0:w.POSITION)||"bottom-right";window.addEventListener("DOMContentLoaded",async()=>{var a;const e=["climats","telckel","biobio","weinpoint"].find(p=>window.location.href.includes(p))||null;let n;e&&(n=e.charAt(0).toUpperCase()+e.slice(1)),await s.fetchConfig(n||null),P(),L(),S(),O(o),x("chatbotToken",((a=window.wineaterData)==null?void 0:a.CLIENT_TOKEN)||B,365),new W().initialize()})}r.closeChatWindow=f,r.openChatWindow=b,r.toggleChatWindow=h,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})});
312
+ `;document.body.insertAdjacentHTML("beforeend",o)}function L(){document.getElementById("close-btn").addEventListener("click",h)}function S(){window.addEventListener("click",function(o){const t=document.getElementById("chat-window"),e=document.getElementById("chat-icon");!t.contains(o.target)&&!e.contains(o.target)&&(t.classList.remove("visible"),e.style.display="flex")})}function O(o){console.log(o);const t=document.getElementById("chat-icon"),e=document.getElementById("chat-window");t.className="",e.className="",o==="right-center"?(t.classList.add("chat-icon-right-center"),e.classList.add("right-center-aligned")):t.classList.add("chat-icon-bottom-right")}if(typeof window<"u"){const o=((w=window.wineaterData)==null?void 0:w.POSITION)||"bottom-right";window.addEventListener("DOMContentLoaded",async()=>{var a;const e=["climats","telckel","biobio","weinpoint","vinigrandi"].find(p=>window.location.href.includes(p))||null;let n;e&&(n=e.charAt(0).toUpperCase()+e.slice(1)),await s.fetchConfig(n||"Demo"),P(),L(),S(),O(o),x("chatbotToken",((a=window.wineaterData)==null?void 0:a.CLIENT_TOKEN)||B,365),new W().initialize()})}r.closeChatWindow=f,r.openChatWindow=b,r.toggleChatWindow=h,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wineater-bot",
3
- "version": "1.5.13",
3
+ "version": "1.5.15",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "src/index.js",
package/src/index.js CHANGED
@@ -97,13 +97,13 @@ function toggleChatIconPosition(position) {
97
97
  if (typeof window !== 'undefined') {
98
98
  const position = window.wineaterData?.POSITION || 'bottom-right';
99
99
  window.addEventListener('DOMContentLoaded', async () => {
100
- const stores = ['climats', 'telckel', 'biobio', 'weinpoint'];
100
+ const stores = ['climats', 'telckel', 'biobio', 'weinpoint', 'vinigrandi'];
101
101
  const store = stores.find(value => window.location.href.includes(value)) || null;
102
102
  let capitalizeStore;
103
103
  if (store) {
104
104
  capitalizeStore = store.charAt(0).toUpperCase() + store.slice(1)
105
105
  }
106
- await translator.fetchConfig(capitalizeStore || null);
106
+ await translator.fetchConfig(capitalizeStore || 'Demo');
107
107
  createChatbotUI(); // Create the UI
108
108
  setupCloseButton();
109
109
  setupOutsideClick();
@@ -31,7 +31,7 @@ function setCookie(name, value, days) {
31
31
  fetch(endpoint, {
32
32
  method: 'POST',
33
33
  headers: {
34
- 'access-control-allow-origin': '*'
34
+ 'content-type': 'application/json'
35
35
  },
36
36
  body: JSON.stringify(data)
37
37
  }).then(response => {