@gengage/assistant-fe 0.3.21 → 0.3.22

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.
Files changed (47) hide show
  1. package/README.md +18 -6
  2. package/dist/{chat-CuPO9t-Z.cjs → chat-BF5pt6iX.cjs} +5 -5
  3. package/dist/{chat-yAf9OADM.js → chat-CHAi6Xej.js} +476 -480
  4. package/dist/chat.cjs +1 -1
  5. package/dist/chat.iife.js +17 -17
  6. package/dist/chat.js +1 -1
  7. package/dist/common/client.d.ts +4 -0
  8. package/dist/common/config-schema.d.ts +4 -0
  9. package/dist/common/overlay.d.ts +4 -0
  10. package/dist/common/widget-base.d.ts +6 -0
  11. package/dist/{common-C8NRcP7O.js → common-Ct6r0F2s.js} +35 -26
  12. package/dist/common-DXdLT4e0.cjs +1 -0
  13. package/dist/common.cjs +1 -1
  14. package/dist/common.js +6 -6
  15. package/dist/{connection-warning-CVZzlGJt.js → connection-warning-CHHi3BAf.js} +1 -1
  16. package/dist/{connection-warning-CL1CReZo.cjs → connection-warning-YQiIRXrz.cjs} +1 -1
  17. package/dist/{ga-datalayer-DkfsAHf9.cjs → ga-datalayer-BVppFxqk.cjs} +1 -1
  18. package/dist/{ga-datalayer-CgI6Kb_i.js → ga-datalayer-BwxWX-cr.js} +35 -32
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.js +9 -9
  21. package/dist/native-webview-BaW1H_nZ.cjs +1 -0
  22. package/dist/{native-webview-B8vOoxns.js → native-webview-Cf5WtlIH.js} +72 -69
  23. package/dist/native.cjs +1 -1
  24. package/dist/native.iife.js +11 -11
  25. package/dist/native.js +1 -1
  26. package/dist/{qna-YSaIDxjs.js → qna-DXCQtwLq.js} +3 -3
  27. package/dist/{qna-KizG_W1J.cjs → qna-DwG8AJJf.cjs} +1 -1
  28. package/dist/qna.cjs +1 -1
  29. package/dist/qna.iife.js +1 -1
  30. package/dist/qna.js +1 -1
  31. package/dist/{schemas-B6RjqKrg.cjs → schemas-B7jnyzQI.cjs} +1 -1
  32. package/dist/{schemas-PkedCk_-.js → schemas-CTbgsvNJ.js} +1 -1
  33. package/dist/simbut/index.d.ts +3 -0
  34. package/dist/{simbut-BI054QK0.js → simbut-BBXTlzOg.js} +28 -20
  35. package/dist/simbut-D_ycY_MQ.cjs +1 -0
  36. package/dist/simbut.cjs +1 -1
  37. package/dist/simbut.iife.js +8 -8
  38. package/dist/simbut.js +1 -1
  39. package/dist/{simrel-C-DKpfVB.js → simrel-DP2EMyua.js} +3 -3
  40. package/dist/{simrel-vL0woDkE.cjs → simrel-DdP4lur9.cjs} +1 -1
  41. package/dist/simrel.cjs +1 -1
  42. package/dist/simrel.iife.js +1 -1
  43. package/dist/simrel.js +1 -1
  44. package/package.json +1 -1
  45. package/dist/common-BzegEdJs.cjs +0 -1
  46. package/dist/native-webview-D2lDXTh3.cjs +0 -1
  47. package/dist/simbut-B2jXtckF.cjs +0 -1
@@ -1,13 +1,13 @@
1
- import { c as u, g as d, s as f, y as g, z as m } from "./ga-datalayer-CgI6Kb_i.js";
2
- var l = { findSimilarLabel: "Benzerlerini Bul" }, b = { findSimilarLabel: "Find Similar" };
1
+ import { c as u, g as d, s as f, y as b, z as g } from "./ga-datalayer-BwxWX-cr.js";
2
+ var l = { findSimilarLabel: "Benzerlerini Bul" }, m = { findSimilarLabel: "Find Similar" };
3
3
  function S(t, i) {
4
- return i?.findSimilarLabel ? i.findSimilarLabel : (t ?? "tr").toLowerCase().startsWith("en") ? b.findSimilarLabel : l.findSimilarLabel;
4
+ return i?.findSimilarLabel ? i.findSimilarLabel : (t ?? "tr").toLowerCase().startsWith("en") ? m.findSimilarLabel : l.findSimilarLabel;
5
5
  }
6
- function s(t) {
6
+ function e(t) {
7
7
  const i = typeof t.sku == "string" && t.sku.length > 0 ? t.sku : void 0, o = typeof t.pageContext?.sku == "string" && t.pageContext.sku.length > 0 ? t.pageContext.sku : void 0;
8
8
  return i ?? o;
9
9
  }
10
- var p = class extends g {
10
+ var p = class extends b {
11
11
  constructor(...t) {
12
12
  super(...t), this._button = null, this._label = l.findSimilarLabel;
13
13
  }
@@ -16,38 +16,46 @@ var p = class extends g {
16
16
  const i = document.createElement("button");
17
17
  i.type = "button", i.className = "gengage-chat-find-similar-pill", i.textContent = this._label, this._button = i;
18
18
  const o = () => {
19
- i.disabled = !(s(this.config) && (this.config.onFindSimilar || this.config.chat));
19
+ i.disabled = !(e(this.config) && (this.config.onFindSimilar || this.config.chat));
20
20
  };
21
- i.addEventListener("click", (c) => {
22
- c.stopPropagation();
23
- const n = s(this.config);
21
+ i.addEventListener("click", (h) => {
22
+ h.stopPropagation();
23
+ const n = e(this.config);
24
24
  if (!n) return;
25
- const a = this.config.imageUrl, e = typeof a == "string" && m(a) ? a : void 0;
25
+ const a = this.config.imageUrl, s = typeof a == "string" && g(a) ? a : void 0;
26
26
  if (d(this._label, "findSimilar"), f(n), this.config.onFindSimilar) {
27
- this.config.onFindSimilar(e ? {
27
+ this.config.onFindSimilar(s ? {
28
28
  sku: n,
29
- imageUrl: e
29
+ imageUrl: s
30
30
  } : { sku: n });
31
31
  return;
32
32
  }
33
33
  const r = this.config.chat;
34
34
  if (!r) return;
35
- const h = {
35
+ const c = {
36
36
  title: this._label,
37
37
  type: "findSimilar",
38
- payload: e ? {
38
+ payload: s ? {
39
39
  sku: n,
40
- image_url: e
40
+ image_url: s
41
41
  } : { sku: n }
42
42
  };
43
- r.openWithAction(h, { sku: n });
43
+ r.openWithAction(c, { sku: n });
44
44
  }), this.root.appendChild(i), o(), u("simbut");
45
45
  }
46
46
  onUpdate(t) {
47
47
  if (!this._button) return;
48
- const i = !!s(this.config) && (!!this.config.onFindSimilar || !!this.config.chat);
48
+ const i = !!e(this.config) && (!!this.config.onFindSimilar || !!this.config.chat);
49
49
  this._button.disabled = !i;
50
50
  }
51
+ hide() {
52
+ this.isVisible && (this.isVisible = !1, this._button && (this._button.style.display = "none"), this.onHide(), this.emit("hide"));
53
+ }
54
+ show() {
55
+ this.isVisible || (this.isVisible = !0, this._button && (this._button.style.display = ""), this.onShow(), this.emit("show"));
56
+ }
57
+ _cleanupRoot() {
58
+ }
51
59
  onShow() {
52
60
  }
53
61
  onHide() {
@@ -57,15 +65,15 @@ var p = class extends g {
57
65
  }
58
66
  setChat(t) {
59
67
  if (this.config.chat = t, this._button) {
60
- const i = !!s(this.config) && (!!this.config.onFindSimilar || !!this.config.chat);
68
+ const i = !!e(this.config) && (!!this.config.onFindSimilar || !!this.config.chat);
61
69
  this._button.disabled = !i;
62
70
  }
63
71
  }
64
72
  };
65
- function k() {
73
+ function y() {
66
74
  return new p();
67
75
  }
68
76
  export {
69
- k as n,
77
+ y as n,
70
78
  p as t
71
79
  };
@@ -0,0 +1 @@
1
+ const n=require("./ga-datalayer-BVppFxqk.cjs");var h={findSimilarLabel:"Benzerlerini Bul"},f={findSimilarLabel:"Find Similar"};function b(t,i){return i?.findSimilarLabel?i.findSimilarLabel:(t??"tr").toLowerCase().startsWith("en")?f.findSimilarLabel:h.findSimilarLabel}function o(t){const i=typeof t.sku=="string"&&t.sku.length>0?t.sku:void 0,r=typeof t.pageContext?.sku=="string"&&t.pageContext.sku.length>0?t.pageContext.sku:void 0;return i??r}var u=class extends n.BaseWidget{constructor(...t){super(...t),this._button=null,this._label=h.findSimilarLabel}async onInit(t){this._label=b(t.locale,t.i18n),this.root.classList.add("gengage-simbut-root"),window.getComputedStyle(this.root).position==="static"&&(this.root.style.position="relative");const i=document.createElement("button");i.type="button",i.className="gengage-chat-find-similar-pill",i.textContent=this._label,this._button=i;const r=()=>{i.disabled=!(o(this.config)&&(this.config.onFindSimilar||this.config.chat))};i.addEventListener("click",c=>{c.stopPropagation();const e=o(this.config);if(!e)return;const a=this.config.imageUrl,s=typeof a=="string"&&n.isSafeUrl(a)?a:void 0;if(n.trackSuggestedQuestion(this._label,"findSimilar"),n.trackFindSimilars(e),this.config.onFindSimilar){this.config.onFindSimilar(s?{sku:e,imageUrl:s}:{sku:e});return}const l=this.config.chat;if(!l)return;const d={title:this._label,type:"findSimilar",payload:s?{sku:e,image_url:s}:{sku:e}};l.openWithAction(d,{sku:e})}),this.root.appendChild(i),r(),n.trackInit("simbut")}onUpdate(t){if(!this._button)return;const i=!!o(this.config)&&(!!this.config.onFindSimilar||!!this.config.chat);this._button.disabled=!i}hide(){this.isVisible&&(this.isVisible=!1,this._button&&(this._button.style.display="none"),this.onHide(),this.emit("hide"))}show(){this.isVisible||(this.isVisible=!0,this._button&&(this._button.style.display=""),this.onShow(),this.emit("show"))}_cleanupRoot(){}onShow(){}onHide(){}onDestroy(){this._button?.remove(),this._button=null}setChat(t){if(this.config.chat=t,this._button){const i=!!o(this.config)&&(!!this.config.onFindSimilar||!!this.config.chat);this._button.disabled=!i}}};function g(){return new u}Object.defineProperty(exports,"GengageSimBut",{enumerable:!0,get:function(){return u}});Object.defineProperty(exports,"createSimButWidget",{enumerable:!0,get:function(){return g}});
package/dist/simbut.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./simbut-B2jXtckF.cjs");exports.GengageSimBut=e.GengageSimBut;exports.createSimButWidget=e.createSimButWidget;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./simbut-D_ycY_MQ.cjs");exports.GengageSimBut=e.GengageSimBut;exports.createSimButWidget=e.createSimButWidget;
@@ -1,4 +1,4 @@
1
- (function(f){Object.defineProperty(f,Symbol.toStringTag,{value:"Module"});function S(e,t){const i={event_name:"metering.summary",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{meter_key:t.meter_key,quantity:t.quantity,unit:t.unit}};return e.view_id!==void 0&&(i.view_id=e.view_id),e.user_id!==void 0&&(i.user_id=e.user_id),e.page_type!==void 0&&(i.page_type=e.page_type),e.sku!==void 0&&(i.sku=e.sku),i}function C(e,t){const i={event_name:"checkout.start",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items}};return e.view_id!==void 0&&(i.view_id=e.view_id),e.user_id!==void 0&&(i.user_id=e.user_id),e.page_type!==void 0&&(i.page_type=e.page_type),e.sku!==void 0&&(i.sku=e.sku),i}function k(e,t){const i={event_name:"checkout.complete",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items}};return e.view_id!==void 0&&(i.view_id=e.view_id),e.user_id!==void 0&&(i.user_id=e.user_id),e.page_type!==void 0&&(i.page_type=e.page_type),e.sku!==void 0&&(i.sku=e.sku),i}var I=["http:","https:"];function T(e){if(e.startsWith("/")&&!e.startsWith("//"))return!0;try{const t=new URL(e);return I.includes(t.protocol)}catch{return!1}}function m(e,t){const i=n=>{t(n.detail)};return window.addEventListener(e,i),()=>window.removeEventListener(e,i)}function E(){const e=window.__gengageSessionId??sessionStorage.getItem("gengage_session_id")??null??crypto.randomUUID();return window.__gengageSessionId=e,sessionStorage.setItem("gengage_session_id",e),window.gengage||(window.gengage={}),window.gengage.sessionId=e,e}function L(e){return{sessionId:e?.sessionId??E(),...e}}var _={"--gengage-chat-offset":"20px","--gengage-chat-launcher-size":"56px","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"1rem","--gengage-chat-header-height":"72px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"1200px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"12px","--gengage-simrel-card-radius":"0.75rem","--radius-control":"12px","--radius-card":"16px","--radius-panel":"24px","--radius-pill":"999px","--surface-card-muted":"#f8fafc","--text-secondary":"#4b5563","--text-muted":"#6b7280","--border-default":"rgba(17, 24, 39, 0.10)"};function M(e){return e?{..._,...e}:{..._}}var s={primaryColor:"#b7102a",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#111827",borderRadius:"0.75rem",fontFamily:'"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"14px",zIndex:"1000","--glov-chatbot-width":"420px","--glov-left-spacing":"260px","--chatbot-padding":"16px","--root-wrapper-background-color":"#f8f9fa","--root-wrapper-border-color":"#edeeef","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"1rem","--gengage-chat-header-height":"72px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"1200px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"0.75rem","--gengage-simrel-card-radius":"0.75rem","--client-primary":"#b7102a","--client-primary-hover":"color-mix(in srgb, #b7102a 88%, black 12%)","--client-primary-active":"color-mix(in srgb, #b7102a 78%, black 22%)","--client-primary-subtle":"color-mix(in srgb, #b7102a 12%, white)","--client-primary-soft":"color-mix(in srgb, #b7102a 20%, white)","--client-on-primary":"#ffffff","--client-focus-ring":"color-mix(in srgb, #b7102a 32%, transparent)","--surface-page":"#f6f7fb","--surface-shell":"#10131a","--surface-card":"#ffffff","--surface-card-muted":"#f8fafc","--surface-card-soft":"#f8fafc","--surface-elevated":"#ffffff","--surface-input":"#ffffff","--surface-overlay":"rgba(16, 19, 26, 0.52)","--text-primary":"#111827","--text-secondary":"#4b5563","--text-muted":"#6b7280","--text-inverse":"#f9fafb","--border-subtle":"rgba(17, 24, 39, 0.06)","--border-default":"rgba(17, 24, 39, 0.10)","--border-strong":"rgba(17, 24, 39, 0.18)","--shadow-1":"0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.06)","--shadow-2":"0 4px 12px rgba(16, 24, 40, 0.08)","--shadow-3":"0 10px 24px rgba(16, 24, 40, 0.12)","--radius-control":"12px","--radius-card":"16px","--radius-panel":"24px","--radius-pill":"999px","--success":"#16a34a","--warning":"#d97706","--error":"#dc2626","--info":"#2563eb","--rating":"#f5b301","--ai-accent-start":"#0b24d6","--ai-accent-end":"#f768f2","--ai-accent-soft":"linear-gradient(135deg, rgba(11, 36, 214, 0.08), rgba(247, 104, 242, 0.08))"},a="gengage-global-toast-root",b="gengage-global-toast-style",h="gengage-global-toast-root--visible",$=4200,A=1500,U=15e3,F=["--gengage-font-family","--surface-card","--text-primary","--text-muted","--border-default","--radius-card","--shadow-3","--error","--ds-toast-error-bg","--ds-toast-error-border","--ds-toast-error-accent","--ds-toast-error-fg","--ds-toast-error-shadow"],y=!1,g=null;function R(){y||typeof window>"u"||typeof document>"u"||(y=!0,m("gengage:global:error",e=>{B(e)}))}function B(e){if(typeof document>"u")return;const t=e.message.trim();if(!t)return;V();const i=O();W(i),i.innerHTML="";const n=document.createElement("section");n.className="gengage-global-toast gengage-global-toast--error",n.setAttribute("role","status"),n.setAttribute("aria-live","polite");const r=document.createElement("div");r.className="gengage-global-toast-title",r.textContent=N(e.source);const o=document.createElement("div");o.className="gengage-global-toast-message",o.textContent=t,n.appendChild(r),n.appendChild(o),i.appendChild(n),i.classList.add(h),g&&(clearTimeout(g),g=null),e.sticky!==!0&&(g=setTimeout(()=>{D()},q(e.durationMs)))}function D(){if(typeof document>"u")return;const e=document.getElementById(a);e&&(e.classList.remove(h),e.innerHTML="",g&&(clearTimeout(g),g=null))}function N(e){switch(e){case"chat":return"Chat warning";case"qna":return"QnA warning";case"simrel":return"Widget warning";default:return"Connection warning"}}function O(){const e=document.getElementById(a);if(e instanceof HTMLElement)return e;const t=document.createElement("div");return t.id=a,t.className="gengage-global-toast-root",document.body.appendChild(t),t}function W(e){if(typeof document>"u"||typeof window>"u")return;const t=document.querySelector(".gengage-chat-root, .gengage-qna-container, .gengage-simrel-container, .gengage-simbut-root");if(!t)return;const i=window.getComputedStyle(t);for(const n of F){const r=i.getPropertyValue(n).trim();r?e.style.setProperty(n,r):e.style.removeProperty(n)}}function q(e){return typeof e!="number"||!Number.isFinite(e)?$:Math.min(U,Math.max(A,Math.round(e)))}function V(){if(document.getElementById(b))return;const e=document.createElement("style");e.id=b;const t=s["--surface-card"]??s.backgroundColor??"#ffffff",i=s["--text-primary"]??s.foregroundColor??"#111827",n=s["--border-default"]??"rgba(17, 24, 39, 0.10)",r=s["--error"]??"#dc2626",o=s["--shadow-3"]??"0 10px 24px rgba(16, 24, 40, 0.12)",d=s["--radius-card"]??"16px",l=s["--text-muted"]??"#6b7280";e.textContent=`
1
+ (function(f){Object.defineProperty(f,Symbol.toStringTag,{value:"Module"});function S(e,t){const i={event_name:"metering.summary",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{meter_key:t.meter_key,quantity:t.quantity,unit:t.unit}};return e.view_id!==void 0&&(i.view_id=e.view_id),e.user_id!==void 0&&(i.user_id=e.user_id),e.page_type!==void 0&&(i.page_type=e.page_type),e.sku!==void 0&&(i.sku=e.sku),i}function C(e,t){const i={event_name:"checkout.start",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items}};return e.view_id!==void 0&&(i.view_id=e.view_id),e.user_id!==void 0&&(i.user_id=e.user_id),e.page_type!==void 0&&(i.page_type=e.page_type),e.sku!==void 0&&(i.sku=e.sku),i}function k(e,t){const i={event_name:"checkout.complete",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items}};return e.view_id!==void 0&&(i.view_id=e.view_id),e.user_id!==void 0&&(i.user_id=e.user_id),e.page_type!==void 0&&(i.page_type=e.page_type),e.sku!==void 0&&(i.sku=e.sku),i}var I=["http:","https:"];function T(e){if(e.startsWith("/")&&!e.startsWith("//"))return!0;try{const t=new URL(e);return I.includes(t.protocol)}catch{return!1}}function m(e,t){const i=n=>{t(n.detail)};return window.addEventListener(e,i),()=>window.removeEventListener(e,i)}function E(){const e=window.__gengageSessionId??sessionStorage.getItem("gengage_session_id")??null??crypto.randomUUID();return window.__gengageSessionId=e,sessionStorage.setItem("gengage_session_id",e),window.gengage||(window.gengage={}),window.gengage.sessionId=e,e}function L(e){return{sessionId:e?.sessionId??E(),...e}}var b={"--gengage-chat-offset":"20px","--gengage-chat-launcher-size":"56px","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"1rem","--gengage-chat-header-height":"72px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"1200px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"12px","--gengage-simrel-card-radius":"0.75rem","--radius-control":"12px","--radius-card":"16px","--radius-panel":"24px","--radius-pill":"999px","--surface-card-muted":"#f8fafc","--text-secondary":"#4b5563","--text-muted":"#6b7280","--border-default":"rgba(17, 24, 39, 0.10)"};function M(e){return e?{...b,...e}:{...b}}var r={primaryColor:"#b7102a",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#111827",borderRadius:"0.75rem",fontFamily:'"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"14px",zIndex:"1000","--glov-chatbot-width":"420px","--glov-left-spacing":"260px","--chatbot-padding":"16px","--root-wrapper-background-color":"#f8f9fa","--root-wrapper-border-color":"#edeeef","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"1rem","--gengage-chat-header-height":"72px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"1200px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"0.75rem","--gengage-simrel-card-radius":"0.75rem","--client-primary":"#b7102a","--client-primary-hover":"color-mix(in srgb, #b7102a 88%, black 12%)","--client-primary-active":"color-mix(in srgb, #b7102a 78%, black 22%)","--client-primary-subtle":"color-mix(in srgb, #b7102a 12%, white)","--client-primary-soft":"color-mix(in srgb, #b7102a 20%, white)","--client-on-primary":"#ffffff","--client-focus-ring":"color-mix(in srgb, #b7102a 32%, transparent)","--surface-page":"#f6f7fb","--surface-shell":"#10131a","--surface-card":"#ffffff","--surface-card-muted":"#f8fafc","--surface-card-soft":"#f8fafc","--surface-elevated":"#ffffff","--surface-input":"#ffffff","--surface-overlay":"rgba(16, 19, 26, 0.52)","--text-primary":"#111827","--text-secondary":"#4b5563","--text-muted":"#6b7280","--text-inverse":"#f9fafb","--border-subtle":"rgba(17, 24, 39, 0.06)","--border-default":"rgba(17, 24, 39, 0.10)","--border-strong":"rgba(17, 24, 39, 0.18)","--shadow-1":"0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.06)","--shadow-2":"0 4px 12px rgba(16, 24, 40, 0.08)","--shadow-3":"0 10px 24px rgba(16, 24, 40, 0.12)","--radius-control":"12px","--radius-card":"16px","--radius-panel":"24px","--radius-pill":"999px","--success":"#16a34a","--warning":"#d97706","--error":"#dc2626","--info":"#2563eb","--rating":"#f5b301","--ai-accent-start":"#0b24d6","--ai-accent-end":"#f768f2","--ai-accent-soft":"linear-gradient(135deg, rgba(11, 36, 214, 0.08), rgba(247, 104, 242, 0.08))"},a="gengage-global-toast-root",_="gengage-global-toast-style",h="gengage-global-toast-root--visible",$=4200,R=1500,A=15e3,U=["--gengage-font-family","--surface-card","--text-primary","--text-muted","--border-default","--radius-card","--shadow-3","--error","--ds-toast-error-bg","--ds-toast-error-border","--ds-toast-error-accent","--ds-toast-error-fg","--ds-toast-error-shadow"],y=!1,d=null;function F(){y||typeof window>"u"||typeof document>"u"||(y=!0,m("gengage:global:error",e=>{B(e)}))}function B(e){if(typeof document>"u")return;const t=e.message.trim();if(!t)return;q();const i=V();O(i),i.innerHTML="";const n=document.createElement("section");n.className="gengage-global-toast gengage-global-toast--error",n.setAttribute("role","status"),n.setAttribute("aria-live","polite");const s=document.createElement("div");s.className="gengage-global-toast-title",s.textContent=N(e.source);const o=document.createElement("div");o.className="gengage-global-toast-message",o.textContent=t,n.appendChild(s),n.appendChild(o),i.appendChild(n),i.classList.add(h),d&&(clearTimeout(d),d=null),e.sticky!==!0&&(d=setTimeout(()=>{D()},W(e.durationMs)))}function D(){if(typeof document>"u")return;const e=document.getElementById(a);e&&(e.classList.remove(h),e.innerHTML="",d&&(clearTimeout(d),d=null))}function N(e){switch(e){case"chat":return"Chat warning";case"qna":return"QnA warning";case"simrel":return"Widget warning";default:return"Connection warning"}}function V(){const e=document.getElementById(a);if(e instanceof HTMLElement)return e;const t=document.createElement("div");return t.id=a,t.className="gengage-global-toast-root",document.body.appendChild(t),t}function O(e){if(typeof document>"u"||typeof window>"u")return;const t=document.querySelector(".gengage-chat-root, .gengage-qna-container, .gengage-simrel-container, .gengage-simbut-root");if(!t)return;const i=window.getComputedStyle(t);for(const n of U){const s=i.getPropertyValue(n).trim();s?e.style.setProperty(n,s):e.style.removeProperty(n)}}function W(e){return typeof e!="number"||!Number.isFinite(e)?$:Math.min(A,Math.max(R,Math.round(e)))}function q(){if(document.getElementById(_))return;const e=document.createElement("style");e.id=_;const t=r["--surface-card"]??r.backgroundColor??"#ffffff",i=r["--text-primary"]??r.foregroundColor??"#111827",n=r["--border-default"]??"rgba(17, 24, 39, 0.10)",s=r["--error"]??"#dc2626",o=r["--shadow-3"]??"0 10px 24px rgba(16, 24, 40, 0.12)",g=r["--radius-card"]??"16px",l=r["--text-muted"]??"#6b7280";e.textContent=`
2
2
  #${a} {
3
3
  position: fixed;
4
4
  top: 16px;
@@ -12,14 +12,14 @@
12
12
  #${a} .gengage-global-toast {
13
13
  min-width: 260px;
14
14
  max-width: min(92vw, 420px);
15
- border-radius: var(--radius-card, ${d});
16
- border: 1px solid var(--ds-toast-error-border, color-mix(in srgb, var(--error, ${r}) 18%, var(--border-default, ${n})));
17
- border-left: 4px solid var(--ds-toast-error-accent, var(--error, ${r}));
18
- background: var(--ds-toast-error-bg, color-mix(in srgb, var(--error, ${r}) 5%, var(--surface-card, ${t})));
19
- color: var(--ds-toast-error-fg, color-mix(in srgb, var(--error, ${r}) 22%, var(--text-primary, ${i})));
15
+ border-radius: var(--radius-card, ${g});
16
+ border: 1px solid var(--ds-toast-error-border, color-mix(in srgb, var(--error, ${s}) 18%, var(--border-default, ${n})));
17
+ border-left: 4px solid var(--ds-toast-error-accent, var(--error, ${s}));
18
+ background: var(--ds-toast-error-bg, color-mix(in srgb, var(--error, ${s}) 5%, var(--surface-card, ${t})));
19
+ color: var(--ds-toast-error-fg, color-mix(in srgb, var(--error, ${s}) 22%, var(--text-primary, ${i})));
20
20
  box-shadow: var(--ds-toast-error-shadow, var(--shadow-3, ${o}));
21
21
  padding: 10px 12px;
22
- font-family: var(--gengage-font-family, ${JSON.stringify(s.fontFamily??'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif')});
22
+ font-family: var(--gengage-font-family, ${JSON.stringify(r.fontFamily??'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif')});
23
23
  font-size: 13px;
24
24
  line-height: 1.4;
25
25
  animation: gengage-global-toast-in 180ms ease-out forwards;
@@ -44,4 +44,4 @@
44
44
  transform: translateY(0);
45
45
  }
46
46
  }
47
- `,document.head.appendChild(e)}var c=null;function G(){if(c!==null)return c;try{c=localStorage.getItem("gengage:debug")==="1"}catch{c=!1}return c}function v(e,t,i){if(!G())return;const n=[`[gengage:${e}]`,t];i!==void 0&&n.push(i),console.debug(...n)}var H=class{constructor(){this.isVisible=!1,this.isInitialised=!1,this._handlers=new Map,this._cleanups=[],this._ownsRoot=!1,this._destroying=!1}async init(e){if(this.isInitialised){console.warn("[gengage] Widget already initialised. Call update() instead.");return}const t=M(e.theme);this.config={...e,theme:t,session:L(e.session)},this.root=this._resolveMount(e.mountTarget),this._applyTheme(t),R();const i=m("gengage:context:update",n=>this.update(n));this._cleanups.push(i),v("lifecycle",`${this.constructor.name}.init`,{accountId:e.accountId,sku:e.pageContext?.sku});try{await this.onInit(this.config)}catch(n){throw this.destroy(),n}this._destroying||(this.isInitialised=!0,v("lifecycle",`${this.constructor.name} ready`),this.emit("ready"))}update(e){this.isInitialised&&(this.config.pageContext?this.config={...this.config,pageContext:{...this.config.pageContext,...e}}:e.pageType!==void 0&&(this.config={...this.config,pageContext:e}),this.onUpdate(e),this.emit("context-update",this.config.pageContext))}show(){this.isVisible||(this.isVisible=!0,this.root.style.display="",this.onShow(),this.emit("show"))}hide(){this.isVisible&&(this.isVisible=!1,this.root.style.display="none",this.onHide(),this.emit("hide"))}destroy(){this._destroying||(this._destroying=!0,this.emit("destroy"),this._cleanups.forEach(e=>e()),this._cleanups.length=0,this._handlers.clear(),this.onDestroy(),this.config.analyticsClient?.destroy(),this._ownsRoot?this.root.remove():this.root.innerHTML="",this.isInitialised=!1)}on(e,t){return this._handlers.has(e)||this._handlers.set(e,new Set),this._handlers.get(e).add(t),()=>this._handlers.get(e)?.delete(t)}trackCheckout(e,t){const i=e==="start"?C:k;this.track(i(this.analyticsContext(),t))}flushMeteringSummary(e){this.track(S(this.analyticsContext(),e))}emit(e,...t){this._handlers.get(e)?.forEach(i=>i(...t))}addCleanup(e){this._cleanups.push(e)}track(e){this.config.analyticsClient?.track(e)}analyticsContext(){const e={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??""};return this.config.session?.viewId!==void 0&&(e.view_id=this.config.session.viewId),this.config.session?.userId!==void 0&&(e.user_id=this.config.session.userId),this.config.pageContext?.pageType!==void 0&&(e.page_type=this.config.pageContext.pageType),this.config.pageContext?.sku!==void 0&&(e.sku=this.config.pageContext.sku),this.config.session?.abTestVariant!==void 0&&(e.ab_test_variant=this.config.session.abTestVariant),this.config.session?.abTestExperimentId!==void 0&&(e.ab_test_experiment_id=this.config.session.abTestExperimentId),e}_resolveMount(e){if(e instanceof HTMLElement)return e;if(typeof e=="string"){const i=document.querySelector(e);if(!i)throw new Error(`[gengage] Mount target not found: "${e}"`);return i}const t=document.createElement("div");return t.dataset.gengageWidget=this.constructor.name.toLowerCase(),document.body.insertBefore(t,document.body.firstChild),this._ownsRoot=!0,t}_applyTheme(e){if(e){for(const[t,i]of Object.entries(e))if(i!==void 0){const n=t.startsWith("--")?t:`--gengage-${P(t)}`;this.root.style.setProperty(n,i)}}}};function P(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function z(){return typeof window<"u"&&Array.isArray(window.dataLayer)}function p(e,t){const i={event:e,...t};z()&&window.dataLayer.push(i)}function Y(e){p("gengage-on-init",{gengage_widget:e})}function j(e,t){p("gengage-suggested-question",{gengage_question_title:e,gengage_action_type:t})}function J(e){p("gengage-find-similars",{gengage_sku:e})}var w={findSimilarLabel:"Benzerlerini Bul"},K={findSimilarLabel:"Find Similar"};function Q(e,t){return t?.findSimilarLabel?t.findSimilarLabel:(e??"tr").toLowerCase().startsWith("en")?K.findSimilarLabel:w.findSimilarLabel}function u(e){const t=typeof e.sku=="string"&&e.sku.length>0?e.sku:void 0,i=typeof e.pageContext?.sku=="string"&&e.pageContext.sku.length>0?e.pageContext.sku:void 0;return t??i}var x=class extends H{constructor(...e){super(...e),this._button=null,this._label=w.findSimilarLabel}async onInit(e){this._label=Q(e.locale,e.i18n),this.root.classList.add("gengage-simbut-root"),window.getComputedStyle(this.root).position==="static"&&(this.root.style.position="relative");const t=document.createElement("button");t.type="button",t.className="gengage-chat-find-similar-pill",t.textContent=this._label,this._button=t;const i=()=>{t.disabled=!(u(this.config)&&(this.config.onFindSimilar||this.config.chat))};t.addEventListener("click",n=>{n.stopPropagation();const r=u(this.config);if(!r)return;const o=this.config.imageUrl,d=typeof o=="string"&&T(o)?o:void 0;if(j(this._label,"findSimilar"),J(r),this.config.onFindSimilar){this.config.onFindSimilar(d?{sku:r,imageUrl:d}:{sku:r});return}const l=this.config.chat;if(!l)return;const Z={title:this._label,type:"findSimilar",payload:d?{sku:r,image_url:d}:{sku:r}};l.openWithAction(Z,{sku:r})}),this.root.appendChild(t),i(),Y("simbut")}onUpdate(e){if(!this._button)return;const t=!!u(this.config)&&(!!this.config.onFindSimilar||!!this.config.chat);this._button.disabled=!t}onShow(){}onHide(){}onDestroy(){this._button?.remove(),this._button=null}setChat(e){if(this.config.chat=e,this._button){const t=!!u(this.config)&&(!!this.config.onFindSimilar||!!this.config.chat);this._button.disabled=!t}}};function X(){return new x}f.GengageSimBut=x,f.createSimButWidget=X})(this.Gengage=this.Gengage||{});
47
+ `,document.head.appendChild(e)}var c=null;function H(){if(c!==null)return c;try{c=localStorage.getItem("gengage:debug")==="1"}catch{c=!1}return c}function v(e,t,i){if(!H())return;const n=[`[gengage:${e}]`,t];i!==void 0&&n.push(i),console.debug(...n)}var G=class{constructor(){this.isVisible=!1,this.isInitialised=!1,this._handlers=new Map,this._cleanups=[],this._ownsRoot=!1,this._destroying=!1}async init(e){if(this.isInitialised){console.warn("[gengage] Widget already initialised. Call update() instead.");return}const t=M(e.theme);this.config={...e,theme:t,session:L(e.session)},this.root=this._resolveMount(e.mountTarget),this._applyTheme(t),F();const i=m("gengage:context:update",n=>this.update(n));this._cleanups.push(i),v("lifecycle",`${this.constructor.name}.init`,{accountId:e.accountId,sku:e.pageContext?.sku});try{await this.onInit(this.config)}catch(n){throw this.destroy(),n}this._destroying||(this.isInitialised=!0,v("lifecycle",`${this.constructor.name} ready`),this.emit("ready"))}update(e){this.isInitialised&&(this.config.pageContext?this.config={...this.config,pageContext:{...this.config.pageContext,...e}}:e.pageType!==void 0&&(this.config={...this.config,pageContext:e}),this.onUpdate(e),this.emit("context-update",this.config.pageContext))}show(){this.isVisible||(this.isVisible=!0,this.root.style.display="",this.onShow(),this.emit("show"))}hide(){this.isVisible&&(this.isVisible=!1,this.root.style.display="none",this.onHide(),this.emit("hide"))}destroy(){this._destroying||(this._destroying=!0,this.emit("destroy"),this._cleanups.forEach(e=>e()),this._cleanups.length=0,this._handlers.clear(),this.onDestroy(),this.config.analyticsClient?.destroy(),this._cleanupRoot(),this.isInitialised=!1)}_cleanupRoot(){this._ownsRoot?this.root.remove():this.root.innerHTML=""}on(e,t){return this._handlers.has(e)||this._handlers.set(e,new Set),this._handlers.get(e).add(t),()=>this._handlers.get(e)?.delete(t)}trackCheckout(e,t){const i=e==="start"?C:k;this.track(i(this.analyticsContext(),t))}flushMeteringSummary(e){this.track(S(this.analyticsContext(),e))}emit(e,...t){this._handlers.get(e)?.forEach(i=>i(...t))}addCleanup(e){this._cleanups.push(e)}track(e){this.config.analyticsClient?.track(e)}analyticsContext(){const e={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??""};return this.config.session?.viewId!==void 0&&(e.view_id=this.config.session.viewId),this.config.session?.userId!==void 0&&(e.user_id=this.config.session.userId),this.config.pageContext?.pageType!==void 0&&(e.page_type=this.config.pageContext.pageType),this.config.pageContext?.sku!==void 0&&(e.sku=this.config.pageContext.sku),this.config.session?.abTestVariant!==void 0&&(e.ab_test_variant=this.config.session.abTestVariant),this.config.session?.abTestExperimentId!==void 0&&(e.ab_test_experiment_id=this.config.session.abTestExperimentId),e}_resolveMount(e){if(e instanceof HTMLElement)return e;if(typeof e=="string"){const i=document.querySelector(e);if(!i)throw new Error(`[gengage] Mount target not found: "${e}"`);return i}const t=document.createElement("div");return t.dataset.gengageWidget=this.constructor.name.toLowerCase(),document.body.insertBefore(t,document.body.firstChild),this._ownsRoot=!0,t}_applyTheme(e){if(e){for(const[t,i]of Object.entries(e))if(i!==void 0){const n=t.startsWith("--")?t:`--gengage-${P(t)}`;this.root.style.setProperty(n,i)}}}};function P(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function z(){return typeof window<"u"&&Array.isArray(window.dataLayer)}function p(e,t){const i={event:e,...t};z()&&window.dataLayer.push(i)}function Y(e){p("gengage-on-init",{gengage_widget:e})}function j(e,t){p("gengage-suggested-question",{gengage_question_title:e,gengage_action_type:t})}function J(e){p("gengage-find-similars",{gengage_sku:e})}var w={findSimilarLabel:"Benzerlerini Bul"},K={findSimilarLabel:"Find Similar"};function Q(e,t){return t?.findSimilarLabel?t.findSimilarLabel:(e??"tr").toLowerCase().startsWith("en")?K.findSimilarLabel:w.findSimilarLabel}function u(e){const t=typeof e.sku=="string"&&e.sku.length>0?e.sku:void 0,i=typeof e.pageContext?.sku=="string"&&e.pageContext.sku.length>0?e.pageContext.sku:void 0;return t??i}var x=class extends G{constructor(...e){super(...e),this._button=null,this._label=w.findSimilarLabel}async onInit(e){this._label=Q(e.locale,e.i18n),this.root.classList.add("gengage-simbut-root"),window.getComputedStyle(this.root).position==="static"&&(this.root.style.position="relative");const t=document.createElement("button");t.type="button",t.className="gengage-chat-find-similar-pill",t.textContent=this._label,this._button=t;const i=()=>{t.disabled=!(u(this.config)&&(this.config.onFindSimilar||this.config.chat))};t.addEventListener("click",n=>{n.stopPropagation();const s=u(this.config);if(!s)return;const o=this.config.imageUrl,g=typeof o=="string"&&T(o)?o:void 0;if(j(this._label,"findSimilar"),J(s),this.config.onFindSimilar){this.config.onFindSimilar(g?{sku:s,imageUrl:g}:{sku:s});return}const l=this.config.chat;if(!l)return;const Z={title:this._label,type:"findSimilar",payload:g?{sku:s,image_url:g}:{sku:s}};l.openWithAction(Z,{sku:s})}),this.root.appendChild(t),i(),Y("simbut")}onUpdate(e){if(!this._button)return;const t=!!u(this.config)&&(!!this.config.onFindSimilar||!!this.config.chat);this._button.disabled=!t}hide(){this.isVisible&&(this.isVisible=!1,this._button&&(this._button.style.display="none"),this.onHide(),this.emit("hide"))}show(){this.isVisible||(this.isVisible=!0,this._button&&(this._button.style.display=""),this.onShow(),this.emit("show"))}_cleanupRoot(){}onShow(){}onHide(){}onDestroy(){this._button?.remove(),this._button=null}setChat(e){if(this.config.chat=e,this._button){const t=!!u(this.config)&&(!!this.config.onFindSimilar||!!this.config.chat);this._button.disabled=!t}}};function X(){return new x}f.GengageSimBut=x,f.createSimButWidget=X})(this.Gengage=this.Gengage||{});
package/dist/simbut.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as e, t as a } from "./simbut-BI054QK0.js";
1
+ import { n as e, t as a } from "./simbut-BBXTlzOg.js";
2
2
  export {
3
3
  a as GengageSimBut,
4
4
  e as createSimButWidget
@@ -1,7 +1,7 @@
1
- import { S as F, a as S, b as U, c as C, d as x, h as z, m as $, n as W, o as E, p as M, t as G, u as J, w as Q } from "./schemas-PkedCk_-.js";
2
- import { H as V, P as T, Q as Y, R as X, S as Z, V as K, X as P, Z as ee, c as te, et as A, h as L, p as ne, t as re, y as ie } from "./ga-datalayer-CgI6Kb_i.js";
1
+ import { S as F, a as S, b as U, c as C, d as x, h as z, m as $, n as W, o as E, p as M, t as G, u as J, w as Q } from "./schemas-CTbgsvNJ.js";
2
+ import { H as V, P as T, Q as Y, R as X, S as Z, V as K, X as P, Z as ee, c as te, et as A, h as L, p as ne, t as re, y as ie } from "./ga-datalayer-BwxWX-cr.js";
3
3
  import { a as R, i as ae, n as se, t as oe } from "./product-utils-Bm3aiAlJ.js";
4
- import { n as ce } from "./connection-warning-CVZzlGJt.js";
4
+ import { n as ce } from "./connection-warning-CHHi3BAf.js";
5
5
  function O(e) {
6
6
  const t = [];
7
7
  for (const n of Object.values(e)) if (n.type === "ProductCard" && n.props) {
@@ -1 +1 @@
1
- const c=require("./schemas-B6RjqKrg.cjs"),b=require("./ga-datalayer-DkfsAHf9.cjs"),S=require("./product-utils-DLXQQJbh.cjs"),G=require("./connection-warning-CL1CReZo.cjs");function R(e){const t=[];for(const n of Object.values(e))if(n.type==="ProductCard"&&n.props){const r=n.props.product??n.props;typeof r.sku=="string"&&typeof r.name=="string"&&t.push(r)}return t}function L(e){const t=e.headers.get("Content-Type")??"";return t.includes("application/x-ndjson")||t.includes("text/event-stream")}async function M(e,t){const n=[],r={onEvent:o=>{const a=c.adaptBackendEvent(o);!a||a.type!=="ui_spec"||n.push(...R(a.spec.elements))}};return t!==void 0&&(r.signal=t),await c.consumeStream(e,r),n}async function B(e,t,n){const r=c.buildChatEndpointUrl("similar_products",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(o.signal=n);const a=await fetch(r,o);if(!a.ok)throw new Error(`HTTP ${a.status}: ${a.statusText}`);if(L(a))return M(a,n);const s=await a.text();if(!s)throw new Error("Empty response body from similar_products endpoint");try{return c.normalizeSimilarProductsResponse(JSON.parse(s))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function q(e,t){const n=[];let r=null;const o={onEvent:a=>{const s=c.adaptBackendEvent(a);if(s){if(s.type==="metadata"&&s.meta){const l=s.meta.group_name;if(typeof l=="string"){r={name:l,products:[]};const u=s.meta.highlight;typeof u=="string"&&(r.highlight=u),n.push(r)}}s.type==="ui_spec"&&r&&r.products.push(...R(s.spec.elements))}}};return t!==void 0&&(o.signal=t),await c.consumeStream(e,o),n}async function D(e,t,n){const r=c.buildChatEndpointUrl("product_groupings",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(o.signal=n);const a=await fetch(r,o);if(!a.ok)throw new Error(`HTTP ${a.status}: ${a.statusText}`);if(L(a))return q(a,n);const s=await a.text();if(!s)return[];try{return c.normalizeProductGroupingsResponse(JSON.parse(s))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}function N(e){const{product:t,index:n,discountType:r,onClick:o,onAddToCart:a,renderCard:s}=e,l=e.i18n,u=e.pricing;if(e.renderCardElement){const i=e.renderCardElement(t,n);if(i)return i}if(s){const i=document.createElement("div");return i.className="gengage-simrel-card gengage-simrel-card--custom gds-card gds-product-card gds-card-interactive",i.dataset.gengagePart="simrel-product-card",i.innerHTML=b.sanitizeHtml(s(t,n)),i.addEventListener("click",p=>{p.target.closest(".gengage-simrel-atc")||p.target.closest(".gengage-chat-product-card-atc")||o(t)}),i}const d=document.createElement("article");d.className="gengage-simrel-card gengage-chat-product-card gds-card gds-product-card gds-card-interactive",d.dataset.gengagePart="simrel-product-card",t.inStock===!1&&d.classList.add("gengage-simrel-card--out-of-stock"),d.setAttribute("role","listitem"),d.dataset.sku=t.sku;const g=document.createElement("div");if(g.className="gengage-simrel-card-image gengage-chat-product-card-img-wrapper",g.dataset.gengagePart="simrel-product-card-image",t.imageUrl&&b.isSafeImageUrl(t.imageUrl)){const i=document.createElement("img");i.className="gengage-chat-product-card-img",i.src=t.imageUrl,i.alt=t.name,i.loading="lazy",S.addImageErrorHandler(i),g.appendChild(i)}if(r==="badge"&&t.discountPercent&&t.discountPercent>0){const i=document.createElement("span");i.className="gengage-simrel-badge gengage-chat-product-card-discount-badge",i.textContent=`%${S.clampDiscount(t.discountPercent)}`,g.appendChild(i)}d.appendChild(g);const f=document.createElement("div");if(f.className="gengage-simrel-card-info gengage-chat-product-card-body",f.dataset.gengagePart="simrel-product-card-body",t.brand){const i=document.createElement("div");i.className="gengage-simrel-card-brand gengage-chat-product-card-brand",i.textContent=t.brand,f.appendChild(i)}const h=document.createElement("div");if(h.className="gengage-simrel-card-name gengage-chat-product-card-name",h.textContent=t.name,h.title=t.name,f.appendChild(h),t.rating!=null&&t.rating>0){const i=document.createElement("div");if(i.className="gengage-simrel-card-rating gengage-chat-product-card-rating",i.appendChild(S.createStarRatingElement(t.rating)),t.reviewCount!=null){const p=document.createElement("span");p.className="gengage-simrel-card-review-count gengage-chat-product-card-review-count",p.textContent=` (${t.reviewCount})`,i.appendChild(p)}f.appendChild(i)}const v=document.createElement("div");if(v.className="gengage-simrel-card-price gengage-chat-product-card-price",t.originalPrice&&t.originalPrice!==t.price&&(r==="strike-through"||!r)){const i=document.createElement("span");i.className="gengage-simrel-card-price-original gengage-chat-product-card-original-price",i.textContent=S.formatPrice(t.originalPrice,u),v.appendChild(i)}if(t.price&&parseFloat(t.price)>0){const i=document.createElement("span");i.className="gengage-simrel-card-price-current gengage-chat-product-card-price-current",i.textContent=S.formatPrice(t.price,u),v.appendChild(i)}f.appendChild(v),d.appendChild(f);const y=document.createElement("button");if(y.className="gengage-simrel-card-cta gengage-chat-product-card-cta gds-btn gds-btn-secondary",y.type="button",y.dataset.gengagePart="simrel-product-card-cta",y.textContent=l?.ctaLabel??"View",y.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),o(t)}),d.appendChild(y),t.inStock===!1){const i=document.createElement("div");i.className="gengage-simrel-card-oos",i.textContent=l?.outOfStockLabel??"Out of Stock",d.appendChild(i)}else if(t.cartCode){const i=document.createElement("button");i.className="gengage-simrel-atc gengage-simrel-atc-button gds-btn gds-btn-secondary",i.type="button",i.textContent=l?.addToCartButton??"Add to Cart",i.addEventListener("click",p=>{p.preventDefault(),p.stopPropagation(),a({sku:t.sku,quantity:1,cartCode:t.cartCode})}),d.appendChild(i)}return d.addEventListener("click",i=>{i.target.closest(".gengage-simrel-atc")||i.target.closest(".gengage-chat-product-card-atc")||i.target.closest(".gengage-chat-product-card-cta")||o(t)}),d}function P(e){const t=document.createElement("div");t.className="gengage-simrel-grid",t.setAttribute("role","list"),t.setAttribute("aria-label",e.i18n?.similarProductsAriaLabel??"Similar products"),e.columns&&t.style.setProperty("--gengage-simrel-columns",String(e.columns));for(let n=0;n<e.products.length;n++){const r={product:e.products[n],index:n,onClick:e.onClick,onAddToCart:e.onAddToCart};e.i18n!==void 0&&(r.i18n=e.i18n),e.discountType!==void 0&&(r.discountType=e.discountType),e.renderCard!==void 0&&(r.renderCard=e.renderCard),e.renderCardElement!==void 0&&(r.renderCardElement=e.renderCardElement);const o=N(r);t.appendChild(o)}return e.products.length===0&&(t.style.display="none",t.dataset.empty="true"),t}var H=0;function F(e){const t=H++,n=document.createElement("div");if(n.className="gengage-simrel-groups",n.dataset.gengagePart="simrel-groups",e.groups.length===0)return n.style.display="none",n.dataset.empty="true",n;const r=document.createElement("div");r.className="gengage-simrel-tabs gds-toolbar",r.dataset.gengagePart="simrel-tab-bar",r.setAttribute("role","tablist");const o=[],a=[],s=i=>{const p={products:i.products,onClick:e.onClick,onAddToCart:e.onAddToCart};return e.i18n!==void 0&&(p.i18n=e.i18n),e.discountType!==void 0&&(p.discountType=e.discountType),e.renderCard!==void 0&&(p.renderCard=e.renderCard),e.renderCardElement!==void 0&&(p.renderCardElement=e.renderCardElement),e.columns!==void 0&&(p.columns=e.columns),p},l=i=>{for(let m=0;m<o.length;m++){const C=m===i;o[m].classList.toggle("gengage-simrel-tab--active",C),o[m].setAttribute("aria-selected",String(C)),o[m].tabIndex=C?0:-1}const p=e.groups[i],E=a[i];E.innerHTML="";const w=P(s(p));E.appendChild(w);for(let m=0;m<a.length;m++){const C=m===i;a[m].style.display=C?"":"none",a[m].tabIndex=C?0:-1}};for(let i=0;i<e.groups.length;i++){const p=e.groups[i],E=`gengage-simrel-tab-${t}-${i}`,w=`gengage-simrel-panel-${t}-${i}`,m=document.createElement("button");m.className="gengage-simrel-tab gds-tab",m.type="button",m.dataset.gengagePart="simrel-tab",m.id=E,m.textContent=p.name,m.setAttribute("role","tab"),m.setAttribute("aria-controls",w),m.setAttribute("aria-selected",String(i===0)),m.tabIndex=i===0?0:-1,i===0&&m.classList.add("gengage-simrel-tab--active"),m.addEventListener("click",()=>l(i)),m.addEventListener("keydown",_=>{let k=-1;_.key==="ArrowRight"||_.key==="ArrowDown"?k=(i+1)%e.groups.length:_.key==="ArrowLeft"||_.key==="ArrowUp"?k=(i-1+e.groups.length)%e.groups.length:_.key==="Home"?k=0:_.key==="End"&&(k=e.groups.length-1),k>=0&&(_.preventDefault(),l(k),o[k].focus())}),o.push(m),r.appendChild(m);const C=document.createElement("div");C.className="gengage-simrel-tab-panel",C.dataset.gengagePart="simrel-tab-panel",C.id=w,C.setAttribute("role","tabpanel"),C.setAttribute("aria-labelledby",E),C.tabIndex=i===0?0:-1,i!==0&&(C.style.display="none"),a.push(C)}const u=document.createElement("button");u.type="button",u.className="gengage-simrel-tabs-arrow gengage-simrel-tabs-arrow--left",u.setAttribute("aria-label",e.i18n?.scrollTabsLeft??"Scroll tabs left"),u.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"/></svg>';const d=document.createElement("button");d.type="button",d.className="gengage-simrel-tabs-arrow gengage-simrel-tabs-arrow--right",d.setAttribute("aria-label",e.i18n?.scrollTabsRight??"Scroll tabs right"),d.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"/></svg>';const g=200;u.addEventListener("click",()=>{r.scrollBy({left:-g,behavior:"smooth"})}),d.addEventListener("click",()=>{r.scrollBy({left:g,behavior:"smooth"})});const f=()=>{const i=r.scrollLeft<=4,p=r.scrollLeft+r.clientWidth>=r.scrollWidth-4;u.style.display=i?"none":"",d.style.display=p?"none":"",r.classList.toggle("gengage-simrel-tabs--peek-right",!p),r.classList.toggle("gengage-simrel-tabs--peek-left",!i)};r.addEventListener("scroll",f,{passive:!0}),typeof ResizeObserver<"u"&&new ResizeObserver(f).observe(r),u.style.display="none",d.style.display="none",requestAnimationFrame(f);const h=document.createElement("div");h.className="gengage-simrel-tabs-wrapper",h.appendChild(u),h.appendChild(r),h.appendChild(d),n.appendChild(h);const v=a[0],y=P(s(e.groups[0]));v.appendChild(y);for(const i of a)n.appendChild(i);return n}function A(e){if(!e||typeof e!="object")return null;const t=e;if(typeof t.sku!="string"||typeof t.name!="string"||typeof t.url!="string")return null;const n={sku:t.sku,name:t.name,url:t.url},r=t.imageUrl;typeof r=="string"&&(n.imageUrl=r);const o=t.price;typeof o=="string"&&(n.price=o);const a=t.originalPrice;typeof a=="string"&&(n.originalPrice=a);const s=t.discountPercent;typeof s=="number"&&(n.discountPercent=s);const l=t.brand;typeof l=="string"&&(n.brand=l);const u=t.rating;typeof u=="number"&&(n.rating=u);const d=t.reviewCount;typeof d=="number"&&(n.reviewCount=d);const g=t.cartCode;typeof g=="string"&&(n.cartCode=g);const f=t.inStock;typeof f=="boolean"&&(n.inStock=f);const h=t.extras;return h!=null&&typeof h=="object"&&(n.extras=h),n}function z(e){if(!e||typeof e!="object")return null;const t=e,n=t.title,r=t.type;if(typeof n!="string"||typeof r!="string")return null;const o={title:n,type:r};return t.payload!==void 0&&(o.payload=t.payload),o}var I={ProductGrid:({element:e,renderElement:t,context:n})=>{const r=document.createElement("div");r.className="gengage-simrel-grid",r.setAttribute("role","list");const o=e.props?.columns;let a;typeof o=="number"&&Number.isFinite(o)&&o>0?a=Math.floor(o):typeof n.gridColumns=="number"&&Number.isFinite(n.gridColumns)&&n.gridColumns>0&&(a=Math.floor(n.gridColumns)),a!==void 0&&r.style.setProperty("--gengage-simrel-columns",String(a));for(const s of e.children??[]){const l=t(s);l&&r.appendChild(l)}if(r.children.length===0){const s=document.createElement("div");s.className="gengage-simrel-empty",s.textContent=n.i18n.emptyStateMessage,r.appendChild(s)}return r},ProductCard:({element:e,context:t})=>{const n=A(e.props?.product??e.props);if(!n)return null;const r=e.props?.index,o=typeof r=="number"&&Number.isFinite(r)?r:0,a=e.props?.discountType,s=a==="strike-through"||a==="badge"?a:t.discountType,l={product:n,index:o,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n};return s!==void 0&&(l.discountType=s),t.renderCard!==void 0&&(l.renderCard=t.renderCard),t.renderCardElement!==void 0&&(l.renderCardElement=t.renderCardElement),t.pricing!==void 0&&(l.pricing=t.pricing),N(l)},GroupTabs:({element:e,context:t})=>{const n=e.props?.groups;if(!Array.isArray(n))return null;const r=[];for(const s of n){if(!s||typeof s!="object")continue;const l=s;if(typeof l.name!="string")continue;const u=[];if(Array.isArray(l.products))for(const g of l.products){const f=A(g);f&&u.push(f)}const d={name:l.name,products:u};typeof l.highlight=="string"&&(d.highlight=l.highlight),r.push(d)}const o={groups:r,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n},a=e.props?.columns;return typeof a=="number"&&Number.isFinite(a)&&a>0?o.columns=Math.floor(a):typeof t.gridColumns=="number"&&Number.isFinite(t.gridColumns)&&t.gridColumns>0&&(o.columns=Math.floor(t.gridColumns)),t.discountType!==void 0&&(o.discountType=t.discountType),t.renderCard!==void 0&&(o.renderCard=t.renderCard),t.renderCardElement!==void 0&&(o.renderCardElement=t.renderCardElement),F(o)},EmptyState:({element:e,context:t})=>{const n=document.createElement("div");n.className="gengage-simrel-empty";const r=e.props?.message;return n.textContent=typeof r=="string"?r:t.i18n.emptyStateMessage,n},AddToCartButton:({element:e,context:t})=>{const n=e.props?.sku,r=e.props?.cartCode;if(typeof n!="string"||typeof r!="string")return null;const o=document.createElement("button");o.className="gengage-simrel-atc gengage-chat-product-card-cta",o.type="button";const a=e.props?.label;return o.textContent=typeof a=="string"?a:t.i18n.addToCartButton,o.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),t.onAddToCart({sku:n,quantity:1,cartCode:r})}),o},QuickActions:({element:e,context:t})=>{const n=document.createElement("div");n.className="gengage-simrel-quick-actions";const r=e.props?.actions;if(!Array.isArray(r)||!t.onAction)return n;for(const o of r){if(!o||typeof o!="object")continue;const a=o,s=a.label,l=z(a.action);if(typeof s!="string"||!l)continue;const u=document.createElement("button");u.className="gengage-simrel-quick-action",u.type="button",u.textContent=s,u.addEventListener("click",d=>{d.preventDefault(),d.stopPropagation(),t.onAction?.(l)}),n.appendChild(u)}return n}},T=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const n=document.createElement("div");for(const r of e.children){const o=t(r);o&&n.appendChild(o)}return n};function U(){return{...I}}function O(e,t,n=I,r=T){return c.renderUISpecWithRegistry({spec:e,context:t,registry:n,containerClassName:"gengage-simrel-uispec",unknownRenderer:r})}var x={similarProductsAriaLabel:"Benzer ürünler",emptyStateMessage:"Benzer ürün bulunamadı.",addToCartButton:"Sepete Ekle",ctaLabel:"İncele",outOfStockLabel:"Stokta Yok",decreaseLabel:"Azalt",increaseLabel:"Artır",errorLoadingMessage:"Benzer ürünler yüklenemedi.",retryButtonText:"Tekrar dene",priceSuffix:" TL",scrollTabsLeft:"Sola kaydır",scrollTabsRight:"Sağa kaydır"},$={similarProductsAriaLabel:"Similar products",emptyStateMessage:"No similar products found.",addToCartButton:"Add to cart",ctaLabel:"View",outOfStockLabel:"Out of Stock",decreaseLabel:"Decrease",increaseLabel:"Increase",errorLoadingMessage:"Could not load similar products.",retryButtonText:"Try again",priceSuffix:"",scrollTabsLeft:"Scroll tabs left",scrollTabsRight:"Scroll tabs right"};function W(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function J(e){return W(e)==="en"?$:x}var Q=c.object({sku:c.string(),name:c.string(),imageUrl:c.string().url().optional(),price:c.string().optional(),originalPrice:c.string().optional(),discountPercent:c.number().optional(),url:c.string().url(),brand:c.string().optional(),rating:c.number().min(0).max(5).optional(),reviewCount:c.number().int().nonnegative().optional()}),Y=c.object({layout:c._enum(["grid","carousel"]).optional(),columns:c.number().int().positive().optional()}),V=c.object({product:Q,index:c.number().int().nonnegative(),discountType:c._enum(["strike-through","badge"]).optional()}),K=c.object({sku:c.string(),label:c.string().optional(),cartCode:c.string()}),X=c.object({actions:c.array(c.object({label:c.string(),action:c.object({title:c.string(),type:c.string(),payload:c.unknown().optional()})}))}),Z=c.object({message:c.string().optional()}),ee={components:{ProductGrid:{schema:Y,description:"Outer grid or carousel container for similar products."},ProductCard:{schema:V,description:"A single product card with image, title, price, and actions."},AddToCartButton:{schema:K,description:"Add-to-cart CTA rendered inside or below a product card."},QuickActions:{schema:X,description:"A row of quick-action buttons below product info."},EmptyState:{schema:Z,description:"Empty state shown when no similar products are available."}}},j=class extends b.BaseWidget{constructor(...e){super(...e),this._abortController=null,this._contentEl=null,this._lastResultCount=-1,this._i18n=x}async onInit(e){this._i18n=this._resolveI18n(e),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this._contentEl.dataset.gengagePart="simrel-container";const t=this._clampGridColumns(e.gridColumns);t!==void 0&&this._contentEl.style.setProperty("--gengage-simrel-columns",String(t)),this.root.appendChild(this._contentEl),this._lastSku=e.sku,await this._fetchAndRender(e.sku),b.trackInit("simrel")}onUpdate(e){const t=e.sku;!t||t===this._lastSku&&this._lastResultCount!==0||(this._lastSku=t,this._fetchAndRender(t))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.3s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._contentEl&&(this._contentEl.remove(),this._contentEl=null)}_handleProductClick(e){const t={sku:e.sku,name:e.name,url:e.url};if(e.imageUrl!==void 0&&(t.imageUrl=e.imageUrl),e.price!==void 0&&(t.price=e.price),e.originalPrice!==void 0&&(t.originalPrice=e.originalPrice),e.discountPercent!==void 0&&(t.discountPercent=e.discountPercent),e.brand!==void 0&&(t.brand=e.brand),e.rating!==void 0&&(t.rating=e.rating),e.reviewCount!==void 0&&(t.reviewCount=e.reviewCount),e.cartCode!==void 0&&(t.cartCode=e.cartCode),e.inStock!==void 0&&(t.inStock=e.inStock),this.config.onProductClick?.(t)===!1)return;b.trackProductDetail(e.sku,e.name);const n=this.config.session?.sessionId??null;b.dispatch("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:n}),this.config.onProductNavigate?.(e.url,e.sku,n)}_handleAddToCart(e){b.trackCartAdd(e.sku,e.quantity),this.config.onAddToCart?.(e),b.dispatch("gengage:similar:add-to-cart",e),this.track(b.basketAddEvent(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:this.config.pricing?.currencyCode??"TRY",line_items:e.quantity,sku:e.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}_isSuperseded(e){return this._abortController?.signal!==e}async _fetchAndRender(e){this._abort(),this._abortController=new AbortController;const t=this._abortController.signal,n=setTimeout(()=>this._abortController?.abort(),1e4);if(t.addEventListener("abort",()=>clearTimeout(n)),!this._contentEl)return;this._contentEl.innerHTML="",this._contentEl.style.display="";const r=document.createElement("div");r.className="gengage-simrel-loading",r.dataset.gengagePart="simrel-loading";const o=document.createElement("div");o.className="gengage-simrel-spinner",o.dataset.gengagePart="simrel-loading-spinner",r.appendChild(o),this._contentEl.appendChild(r);const a={middlewareUrl:this.config.middlewareUrl},s=crypto.randomUUID(),l=Date.now(),u=G.trackConnectionWarningRequest({source:"simrel",locale:this.config.locale});this.track(b.streamStartEvent(this.analyticsContext(),{endpoint:"similar_products",request_id:s,widget:"simrel"}));try{const d={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:e};this.config.domain!==void 0&&(d.domain=this.config.domain);const g=await B(d,a,t);if(this._lastResultCount=g.length,!this._contentEl)return;if(this._contentEl.innerHTML="",g.length>0)try{const f=g.map(y=>y.sku),h=new Map(g.map(y=>[y.sku,y])),v=(await D({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:f},a,t)).map(y=>({...y,products:y.products.map(i=>({...h.get(i.sku),...i})).filter(i=>typeof i.sku=="string"&&typeof i.name=="string"&&typeof i.url=="string")})).filter(y=>y.products.length>0);if(v.length>0&&this._contentEl){const y=this._buildGroupsSpec(v),i=this._renderUISpec(y);this._contentEl.appendChild(i),b.trackShow("simrel"),this.track(b.streamDoneEvent(this.analyticsContext(),{request_id:s,latency_ms:Date.now()-l,chunk_count:v.reduce((p,E)=>p+E.products.length,0),widget:"simrel"})),this.track(b.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:v.reduce((p,E)=>p+E.products.length,0),history_ref:s,redaction_level:"none",widget:"simrel"}));return}}catch{}if(this._isSuperseded(t))return;if(this._contentEl){const f=this._buildProductsSpec(g),h=this._renderUISpec(f);this._contentEl.appendChild(h)}g.length>0&&b.trackShow("simrel"),this.track(b.streamDoneEvent(this.analyticsContext(),{request_id:s,latency_ms:Date.now()-l,chunk_count:g.length,widget:"simrel"})),this.track(b.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:g.length,history_ref:s,redaction_level:"none",widget:"simrel"}))}catch(d){if(d instanceof DOMException&&d.name==="AbortError"&&this._isSuperseded(t))return;if(b.dispatch("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:b.getGlobalErrorMessage(this.config.locale,d)}),this.track(b.streamErrorEvent(this.analyticsContext(),{request_id:s,error_code:"FETCH_ERROR",error_message:d instanceof Error?d.message:String(d),widget:"simrel"})),this._contentEl){this._contentEl.innerHTML="";const g=document.createElement("div");g.className="gengage-simrel-error";const f=document.createElement("span");f.textContent=this._i18n.errorLoadingMessage,g.appendChild(f);const h=document.createElement("button");h.className="gengage-simrel-retry",h.textContent=this._i18n.retryButtonText,h.addEventListener("click",()=>{this._fetchAndRender(this.config.sku)}),g.appendChild(h),this._contentEl.appendChild(g)}}finally{u()}}_clampGridColumns(e){if(!(e===void 0||typeof e!="number"||!Number.isFinite(e)))return Math.max(1,Math.min(12,Math.floor(e)))}_resolveI18n(e){return{...J(e.locale),...e.i18n}}_resolveUISpecRegistry(){return c.mergeUISpecRegistry(U(),this.config.renderer?.registry)}_buildRenderContext(){const e=this.config.renderCard,t={onClick:r=>this._handleProductClick(r),onAddToCart:r=>this._handleAddToCart(r),i18n:this._i18n};this.config.discountType!==void 0&&(t.discountType=this.config.discountType),e!==void 0&&(t.renderCard=e),this.config.renderCardElement!==void 0&&(t.renderCardElement=this.config.renderCardElement),this.config.pricing!==void 0&&(t.pricing=this.config.pricing);const n=this._clampGridColumns(this.config.gridColumns);return n!==void 0&&(t.gridColumns=n),t}_renderUISpec(e){const t=this._resolveUISpecRegistry(),n=this._buildRenderContext(),r=this.config.renderer?.unknownRenderer??T,o=(s,l)=>O(s,l,t,r),a=this.config.renderer?.renderUISpec;return a?a(e,n,{registry:t,unknownRenderer:r,defaultRender:o}):o(e,n)}_buildProductsSpec(e){const t={},n=[];for(let a=0;a<e.length;a++){const s=e[a],l=`product-${a}`;n.push(l),t[l]={type:"ProductCard",props:{product:s,index:a,discountType:this.config.discountType}}}const r={layout:"grid"},o=this._clampGridColumns(this.config.gridColumns);return o!==void 0&&(r.columns=o),t.root={type:"ProductGrid",props:r,children:n},{root:"root",elements:t}}_buildGroupsSpec(e){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:e}}}}}};function te(){return new j}Object.defineProperty(exports,"GengageSimRel",{enumerable:!0,get:function(){return j}});Object.defineProperty(exports,"createDefaultSimRelUISpecRegistry",{enumerable:!0,get:function(){return U}});Object.defineProperty(exports,"createSimRelWidget",{enumerable:!0,get:function(){return te}});Object.defineProperty(exports,"defaultSimRelUnknownUISpecRenderer",{enumerable:!0,get:function(){return T}});Object.defineProperty(exports,"renderSimRelUISpec",{enumerable:!0,get:function(){return O}});Object.defineProperty(exports,"simRelCatalog",{enumerable:!0,get:function(){return ee}});
1
+ const c=require("./schemas-B7jnyzQI.cjs"),b=require("./ga-datalayer-BVppFxqk.cjs"),S=require("./product-utils-DLXQQJbh.cjs"),G=require("./connection-warning-YQiIRXrz.cjs");function R(e){const t=[];for(const n of Object.values(e))if(n.type==="ProductCard"&&n.props){const r=n.props.product??n.props;typeof r.sku=="string"&&typeof r.name=="string"&&t.push(r)}return t}function L(e){const t=e.headers.get("Content-Type")??"";return t.includes("application/x-ndjson")||t.includes("text/event-stream")}async function M(e,t){const n=[],r={onEvent:o=>{const a=c.adaptBackendEvent(o);!a||a.type!=="ui_spec"||n.push(...R(a.spec.elements))}};return t!==void 0&&(r.signal=t),await c.consumeStream(e,r),n}async function B(e,t,n){const r=c.buildChatEndpointUrl("similar_products",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(o.signal=n);const a=await fetch(r,o);if(!a.ok)throw new Error(`HTTP ${a.status}: ${a.statusText}`);if(L(a))return M(a,n);const s=await a.text();if(!s)throw new Error("Empty response body from similar_products endpoint");try{return c.normalizeSimilarProductsResponse(JSON.parse(s))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function q(e,t){const n=[];let r=null;const o={onEvent:a=>{const s=c.adaptBackendEvent(a);if(s){if(s.type==="metadata"&&s.meta){const l=s.meta.group_name;if(typeof l=="string"){r={name:l,products:[]};const u=s.meta.highlight;typeof u=="string"&&(r.highlight=u),n.push(r)}}s.type==="ui_spec"&&r&&r.products.push(...R(s.spec.elements))}}};return t!==void 0&&(o.signal=t),await c.consumeStream(e,o),n}async function D(e,t,n){const r=c.buildChatEndpointUrl("product_groupings",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(o.signal=n);const a=await fetch(r,o);if(!a.ok)throw new Error(`HTTP ${a.status}: ${a.statusText}`);if(L(a))return q(a,n);const s=await a.text();if(!s)return[];try{return c.normalizeProductGroupingsResponse(JSON.parse(s))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}function N(e){const{product:t,index:n,discountType:r,onClick:o,onAddToCart:a,renderCard:s}=e,l=e.i18n,u=e.pricing;if(e.renderCardElement){const i=e.renderCardElement(t,n);if(i)return i}if(s){const i=document.createElement("div");return i.className="gengage-simrel-card gengage-simrel-card--custom gds-card gds-product-card gds-card-interactive",i.dataset.gengagePart="simrel-product-card",i.innerHTML=b.sanitizeHtml(s(t,n)),i.addEventListener("click",p=>{p.target.closest(".gengage-simrel-atc")||p.target.closest(".gengage-chat-product-card-atc")||o(t)}),i}const d=document.createElement("article");d.className="gengage-simrel-card gengage-chat-product-card gds-card gds-product-card gds-card-interactive",d.dataset.gengagePart="simrel-product-card",t.inStock===!1&&d.classList.add("gengage-simrel-card--out-of-stock"),d.setAttribute("role","listitem"),d.dataset.sku=t.sku;const g=document.createElement("div");if(g.className="gengage-simrel-card-image gengage-chat-product-card-img-wrapper",g.dataset.gengagePart="simrel-product-card-image",t.imageUrl&&b.isSafeImageUrl(t.imageUrl)){const i=document.createElement("img");i.className="gengage-chat-product-card-img",i.src=t.imageUrl,i.alt=t.name,i.loading="lazy",S.addImageErrorHandler(i),g.appendChild(i)}if(r==="badge"&&t.discountPercent&&t.discountPercent>0){const i=document.createElement("span");i.className="gengage-simrel-badge gengage-chat-product-card-discount-badge",i.textContent=`%${S.clampDiscount(t.discountPercent)}`,g.appendChild(i)}d.appendChild(g);const f=document.createElement("div");if(f.className="gengage-simrel-card-info gengage-chat-product-card-body",f.dataset.gengagePart="simrel-product-card-body",t.brand){const i=document.createElement("div");i.className="gengage-simrel-card-brand gengage-chat-product-card-brand",i.textContent=t.brand,f.appendChild(i)}const h=document.createElement("div");if(h.className="gengage-simrel-card-name gengage-chat-product-card-name",h.textContent=t.name,h.title=t.name,f.appendChild(h),t.rating!=null&&t.rating>0){const i=document.createElement("div");if(i.className="gengage-simrel-card-rating gengage-chat-product-card-rating",i.appendChild(S.createStarRatingElement(t.rating)),t.reviewCount!=null){const p=document.createElement("span");p.className="gengage-simrel-card-review-count gengage-chat-product-card-review-count",p.textContent=` (${t.reviewCount})`,i.appendChild(p)}f.appendChild(i)}const v=document.createElement("div");if(v.className="gengage-simrel-card-price gengage-chat-product-card-price",t.originalPrice&&t.originalPrice!==t.price&&(r==="strike-through"||!r)){const i=document.createElement("span");i.className="gengage-simrel-card-price-original gengage-chat-product-card-original-price",i.textContent=S.formatPrice(t.originalPrice,u),v.appendChild(i)}if(t.price&&parseFloat(t.price)>0){const i=document.createElement("span");i.className="gengage-simrel-card-price-current gengage-chat-product-card-price-current",i.textContent=S.formatPrice(t.price,u),v.appendChild(i)}f.appendChild(v),d.appendChild(f);const y=document.createElement("button");if(y.className="gengage-simrel-card-cta gengage-chat-product-card-cta gds-btn gds-btn-secondary",y.type="button",y.dataset.gengagePart="simrel-product-card-cta",y.textContent=l?.ctaLabel??"View",y.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),o(t)}),d.appendChild(y),t.inStock===!1){const i=document.createElement("div");i.className="gengage-simrel-card-oos",i.textContent=l?.outOfStockLabel??"Out of Stock",d.appendChild(i)}else if(t.cartCode){const i=document.createElement("button");i.className="gengage-simrel-atc gengage-simrel-atc-button gds-btn gds-btn-secondary",i.type="button",i.textContent=l?.addToCartButton??"Add to Cart",i.addEventListener("click",p=>{p.preventDefault(),p.stopPropagation(),a({sku:t.sku,quantity:1,cartCode:t.cartCode})}),d.appendChild(i)}return d.addEventListener("click",i=>{i.target.closest(".gengage-simrel-atc")||i.target.closest(".gengage-chat-product-card-atc")||i.target.closest(".gengage-chat-product-card-cta")||o(t)}),d}function P(e){const t=document.createElement("div");t.className="gengage-simrel-grid",t.setAttribute("role","list"),t.setAttribute("aria-label",e.i18n?.similarProductsAriaLabel??"Similar products"),e.columns&&t.style.setProperty("--gengage-simrel-columns",String(e.columns));for(let n=0;n<e.products.length;n++){const r={product:e.products[n],index:n,onClick:e.onClick,onAddToCart:e.onAddToCart};e.i18n!==void 0&&(r.i18n=e.i18n),e.discountType!==void 0&&(r.discountType=e.discountType),e.renderCard!==void 0&&(r.renderCard=e.renderCard),e.renderCardElement!==void 0&&(r.renderCardElement=e.renderCardElement);const o=N(r);t.appendChild(o)}return e.products.length===0&&(t.style.display="none",t.dataset.empty="true"),t}var H=0;function F(e){const t=H++,n=document.createElement("div");if(n.className="gengage-simrel-groups",n.dataset.gengagePart="simrel-groups",e.groups.length===0)return n.style.display="none",n.dataset.empty="true",n;const r=document.createElement("div");r.className="gengage-simrel-tabs gds-toolbar",r.dataset.gengagePart="simrel-tab-bar",r.setAttribute("role","tablist");const o=[],a=[],s=i=>{const p={products:i.products,onClick:e.onClick,onAddToCart:e.onAddToCart};return e.i18n!==void 0&&(p.i18n=e.i18n),e.discountType!==void 0&&(p.discountType=e.discountType),e.renderCard!==void 0&&(p.renderCard=e.renderCard),e.renderCardElement!==void 0&&(p.renderCardElement=e.renderCardElement),e.columns!==void 0&&(p.columns=e.columns),p},l=i=>{for(let m=0;m<o.length;m++){const C=m===i;o[m].classList.toggle("gengage-simrel-tab--active",C),o[m].setAttribute("aria-selected",String(C)),o[m].tabIndex=C?0:-1}const p=e.groups[i],E=a[i];E.innerHTML="";const w=P(s(p));E.appendChild(w);for(let m=0;m<a.length;m++){const C=m===i;a[m].style.display=C?"":"none",a[m].tabIndex=C?0:-1}};for(let i=0;i<e.groups.length;i++){const p=e.groups[i],E=`gengage-simrel-tab-${t}-${i}`,w=`gengage-simrel-panel-${t}-${i}`,m=document.createElement("button");m.className="gengage-simrel-tab gds-tab",m.type="button",m.dataset.gengagePart="simrel-tab",m.id=E,m.textContent=p.name,m.setAttribute("role","tab"),m.setAttribute("aria-controls",w),m.setAttribute("aria-selected",String(i===0)),m.tabIndex=i===0?0:-1,i===0&&m.classList.add("gengage-simrel-tab--active"),m.addEventListener("click",()=>l(i)),m.addEventListener("keydown",_=>{let k=-1;_.key==="ArrowRight"||_.key==="ArrowDown"?k=(i+1)%e.groups.length:_.key==="ArrowLeft"||_.key==="ArrowUp"?k=(i-1+e.groups.length)%e.groups.length:_.key==="Home"?k=0:_.key==="End"&&(k=e.groups.length-1),k>=0&&(_.preventDefault(),l(k),o[k].focus())}),o.push(m),r.appendChild(m);const C=document.createElement("div");C.className="gengage-simrel-tab-panel",C.dataset.gengagePart="simrel-tab-panel",C.id=w,C.setAttribute("role","tabpanel"),C.setAttribute("aria-labelledby",E),C.tabIndex=i===0?0:-1,i!==0&&(C.style.display="none"),a.push(C)}const u=document.createElement("button");u.type="button",u.className="gengage-simrel-tabs-arrow gengage-simrel-tabs-arrow--left",u.setAttribute("aria-label",e.i18n?.scrollTabsLeft??"Scroll tabs left"),u.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"/></svg>';const d=document.createElement("button");d.type="button",d.className="gengage-simrel-tabs-arrow gengage-simrel-tabs-arrow--right",d.setAttribute("aria-label",e.i18n?.scrollTabsRight??"Scroll tabs right"),d.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"/></svg>';const g=200;u.addEventListener("click",()=>{r.scrollBy({left:-g,behavior:"smooth"})}),d.addEventListener("click",()=>{r.scrollBy({left:g,behavior:"smooth"})});const f=()=>{const i=r.scrollLeft<=4,p=r.scrollLeft+r.clientWidth>=r.scrollWidth-4;u.style.display=i?"none":"",d.style.display=p?"none":"",r.classList.toggle("gengage-simrel-tabs--peek-right",!p),r.classList.toggle("gengage-simrel-tabs--peek-left",!i)};r.addEventListener("scroll",f,{passive:!0}),typeof ResizeObserver<"u"&&new ResizeObserver(f).observe(r),u.style.display="none",d.style.display="none",requestAnimationFrame(f);const h=document.createElement("div");h.className="gengage-simrel-tabs-wrapper",h.appendChild(u),h.appendChild(r),h.appendChild(d),n.appendChild(h);const v=a[0],y=P(s(e.groups[0]));v.appendChild(y);for(const i of a)n.appendChild(i);return n}function A(e){if(!e||typeof e!="object")return null;const t=e;if(typeof t.sku!="string"||typeof t.name!="string"||typeof t.url!="string")return null;const n={sku:t.sku,name:t.name,url:t.url},r=t.imageUrl;typeof r=="string"&&(n.imageUrl=r);const o=t.price;typeof o=="string"&&(n.price=o);const a=t.originalPrice;typeof a=="string"&&(n.originalPrice=a);const s=t.discountPercent;typeof s=="number"&&(n.discountPercent=s);const l=t.brand;typeof l=="string"&&(n.brand=l);const u=t.rating;typeof u=="number"&&(n.rating=u);const d=t.reviewCount;typeof d=="number"&&(n.reviewCount=d);const g=t.cartCode;typeof g=="string"&&(n.cartCode=g);const f=t.inStock;typeof f=="boolean"&&(n.inStock=f);const h=t.extras;return h!=null&&typeof h=="object"&&(n.extras=h),n}function z(e){if(!e||typeof e!="object")return null;const t=e,n=t.title,r=t.type;if(typeof n!="string"||typeof r!="string")return null;const o={title:n,type:r};return t.payload!==void 0&&(o.payload=t.payload),o}var I={ProductGrid:({element:e,renderElement:t,context:n})=>{const r=document.createElement("div");r.className="gengage-simrel-grid",r.setAttribute("role","list");const o=e.props?.columns;let a;typeof o=="number"&&Number.isFinite(o)&&o>0?a=Math.floor(o):typeof n.gridColumns=="number"&&Number.isFinite(n.gridColumns)&&n.gridColumns>0&&(a=Math.floor(n.gridColumns)),a!==void 0&&r.style.setProperty("--gengage-simrel-columns",String(a));for(const s of e.children??[]){const l=t(s);l&&r.appendChild(l)}if(r.children.length===0){const s=document.createElement("div");s.className="gengage-simrel-empty",s.textContent=n.i18n.emptyStateMessage,r.appendChild(s)}return r},ProductCard:({element:e,context:t})=>{const n=A(e.props?.product??e.props);if(!n)return null;const r=e.props?.index,o=typeof r=="number"&&Number.isFinite(r)?r:0,a=e.props?.discountType,s=a==="strike-through"||a==="badge"?a:t.discountType,l={product:n,index:o,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n};return s!==void 0&&(l.discountType=s),t.renderCard!==void 0&&(l.renderCard=t.renderCard),t.renderCardElement!==void 0&&(l.renderCardElement=t.renderCardElement),t.pricing!==void 0&&(l.pricing=t.pricing),N(l)},GroupTabs:({element:e,context:t})=>{const n=e.props?.groups;if(!Array.isArray(n))return null;const r=[];for(const s of n){if(!s||typeof s!="object")continue;const l=s;if(typeof l.name!="string")continue;const u=[];if(Array.isArray(l.products))for(const g of l.products){const f=A(g);f&&u.push(f)}const d={name:l.name,products:u};typeof l.highlight=="string"&&(d.highlight=l.highlight),r.push(d)}const o={groups:r,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n},a=e.props?.columns;return typeof a=="number"&&Number.isFinite(a)&&a>0?o.columns=Math.floor(a):typeof t.gridColumns=="number"&&Number.isFinite(t.gridColumns)&&t.gridColumns>0&&(o.columns=Math.floor(t.gridColumns)),t.discountType!==void 0&&(o.discountType=t.discountType),t.renderCard!==void 0&&(o.renderCard=t.renderCard),t.renderCardElement!==void 0&&(o.renderCardElement=t.renderCardElement),F(o)},EmptyState:({element:e,context:t})=>{const n=document.createElement("div");n.className="gengage-simrel-empty";const r=e.props?.message;return n.textContent=typeof r=="string"?r:t.i18n.emptyStateMessage,n},AddToCartButton:({element:e,context:t})=>{const n=e.props?.sku,r=e.props?.cartCode;if(typeof n!="string"||typeof r!="string")return null;const o=document.createElement("button");o.className="gengage-simrel-atc gengage-chat-product-card-cta",o.type="button";const a=e.props?.label;return o.textContent=typeof a=="string"?a:t.i18n.addToCartButton,o.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),t.onAddToCart({sku:n,quantity:1,cartCode:r})}),o},QuickActions:({element:e,context:t})=>{const n=document.createElement("div");n.className="gengage-simrel-quick-actions";const r=e.props?.actions;if(!Array.isArray(r)||!t.onAction)return n;for(const o of r){if(!o||typeof o!="object")continue;const a=o,s=a.label,l=z(a.action);if(typeof s!="string"||!l)continue;const u=document.createElement("button");u.className="gengage-simrel-quick-action",u.type="button",u.textContent=s,u.addEventListener("click",d=>{d.preventDefault(),d.stopPropagation(),t.onAction?.(l)}),n.appendChild(u)}return n}},T=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const n=document.createElement("div");for(const r of e.children){const o=t(r);o&&n.appendChild(o)}return n};function U(){return{...I}}function O(e,t,n=I,r=T){return c.renderUISpecWithRegistry({spec:e,context:t,registry:n,containerClassName:"gengage-simrel-uispec",unknownRenderer:r})}var x={similarProductsAriaLabel:"Benzer ürünler",emptyStateMessage:"Benzer ürün bulunamadı.",addToCartButton:"Sepete Ekle",ctaLabel:"İncele",outOfStockLabel:"Stokta Yok",decreaseLabel:"Azalt",increaseLabel:"Artır",errorLoadingMessage:"Benzer ürünler yüklenemedi.",retryButtonText:"Tekrar dene",priceSuffix:" TL",scrollTabsLeft:"Sola kaydır",scrollTabsRight:"Sağa kaydır"},$={similarProductsAriaLabel:"Similar products",emptyStateMessage:"No similar products found.",addToCartButton:"Add to cart",ctaLabel:"View",outOfStockLabel:"Out of Stock",decreaseLabel:"Decrease",increaseLabel:"Increase",errorLoadingMessage:"Could not load similar products.",retryButtonText:"Try again",priceSuffix:"",scrollTabsLeft:"Scroll tabs left",scrollTabsRight:"Scroll tabs right"};function W(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function J(e){return W(e)==="en"?$:x}var Q=c.object({sku:c.string(),name:c.string(),imageUrl:c.string().url().optional(),price:c.string().optional(),originalPrice:c.string().optional(),discountPercent:c.number().optional(),url:c.string().url(),brand:c.string().optional(),rating:c.number().min(0).max(5).optional(),reviewCount:c.number().int().nonnegative().optional()}),Y=c.object({layout:c._enum(["grid","carousel"]).optional(),columns:c.number().int().positive().optional()}),V=c.object({product:Q,index:c.number().int().nonnegative(),discountType:c._enum(["strike-through","badge"]).optional()}),K=c.object({sku:c.string(),label:c.string().optional(),cartCode:c.string()}),X=c.object({actions:c.array(c.object({label:c.string(),action:c.object({title:c.string(),type:c.string(),payload:c.unknown().optional()})}))}),Z=c.object({message:c.string().optional()}),ee={components:{ProductGrid:{schema:Y,description:"Outer grid or carousel container for similar products."},ProductCard:{schema:V,description:"A single product card with image, title, price, and actions."},AddToCartButton:{schema:K,description:"Add-to-cart CTA rendered inside or below a product card."},QuickActions:{schema:X,description:"A row of quick-action buttons below product info."},EmptyState:{schema:Z,description:"Empty state shown when no similar products are available."}}},j=class extends b.BaseWidget{constructor(...e){super(...e),this._abortController=null,this._contentEl=null,this._lastResultCount=-1,this._i18n=x}async onInit(e){this._i18n=this._resolveI18n(e),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this._contentEl.dataset.gengagePart="simrel-container";const t=this._clampGridColumns(e.gridColumns);t!==void 0&&this._contentEl.style.setProperty("--gengage-simrel-columns",String(t)),this.root.appendChild(this._contentEl),this._lastSku=e.sku,await this._fetchAndRender(e.sku),b.trackInit("simrel")}onUpdate(e){const t=e.sku;!t||t===this._lastSku&&this._lastResultCount!==0||(this._lastSku=t,this._fetchAndRender(t))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.3s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._contentEl&&(this._contentEl.remove(),this._contentEl=null)}_handleProductClick(e){const t={sku:e.sku,name:e.name,url:e.url};if(e.imageUrl!==void 0&&(t.imageUrl=e.imageUrl),e.price!==void 0&&(t.price=e.price),e.originalPrice!==void 0&&(t.originalPrice=e.originalPrice),e.discountPercent!==void 0&&(t.discountPercent=e.discountPercent),e.brand!==void 0&&(t.brand=e.brand),e.rating!==void 0&&(t.rating=e.rating),e.reviewCount!==void 0&&(t.reviewCount=e.reviewCount),e.cartCode!==void 0&&(t.cartCode=e.cartCode),e.inStock!==void 0&&(t.inStock=e.inStock),this.config.onProductClick?.(t)===!1)return;b.trackProductDetail(e.sku,e.name);const n=this.config.session?.sessionId??null;b.dispatch("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:n}),this.config.onProductNavigate?.(e.url,e.sku,n)}_handleAddToCart(e){b.trackCartAdd(e.sku,e.quantity),this.config.onAddToCart?.(e),b.dispatch("gengage:similar:add-to-cart",e),this.track(b.basketAddEvent(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:this.config.pricing?.currencyCode??"TRY",line_items:e.quantity,sku:e.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}_isSuperseded(e){return this._abortController?.signal!==e}async _fetchAndRender(e){this._abort(),this._abortController=new AbortController;const t=this._abortController.signal,n=setTimeout(()=>this._abortController?.abort(),1e4);if(t.addEventListener("abort",()=>clearTimeout(n)),!this._contentEl)return;this._contentEl.innerHTML="",this._contentEl.style.display="";const r=document.createElement("div");r.className="gengage-simrel-loading",r.dataset.gengagePart="simrel-loading";const o=document.createElement("div");o.className="gengage-simrel-spinner",o.dataset.gengagePart="simrel-loading-spinner",r.appendChild(o),this._contentEl.appendChild(r);const a={middlewareUrl:this.config.middlewareUrl},s=crypto.randomUUID(),l=Date.now(),u=G.trackConnectionWarningRequest({source:"simrel",locale:this.config.locale});this.track(b.streamStartEvent(this.analyticsContext(),{endpoint:"similar_products",request_id:s,widget:"simrel"}));try{const d={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:e};this.config.domain!==void 0&&(d.domain=this.config.domain);const g=await B(d,a,t);if(this._lastResultCount=g.length,!this._contentEl)return;if(this._contentEl.innerHTML="",g.length>0)try{const f=g.map(y=>y.sku),h=new Map(g.map(y=>[y.sku,y])),v=(await D({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:f},a,t)).map(y=>({...y,products:y.products.map(i=>({...h.get(i.sku),...i})).filter(i=>typeof i.sku=="string"&&typeof i.name=="string"&&typeof i.url=="string")})).filter(y=>y.products.length>0);if(v.length>0&&this._contentEl){const y=this._buildGroupsSpec(v),i=this._renderUISpec(y);this._contentEl.appendChild(i),b.trackShow("simrel"),this.track(b.streamDoneEvent(this.analyticsContext(),{request_id:s,latency_ms:Date.now()-l,chunk_count:v.reduce((p,E)=>p+E.products.length,0),widget:"simrel"})),this.track(b.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:v.reduce((p,E)=>p+E.products.length,0),history_ref:s,redaction_level:"none",widget:"simrel"}));return}}catch{}if(this._isSuperseded(t))return;if(this._contentEl){const f=this._buildProductsSpec(g),h=this._renderUISpec(f);this._contentEl.appendChild(h)}g.length>0&&b.trackShow("simrel"),this.track(b.streamDoneEvent(this.analyticsContext(),{request_id:s,latency_ms:Date.now()-l,chunk_count:g.length,widget:"simrel"})),this.track(b.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:g.length,history_ref:s,redaction_level:"none",widget:"simrel"}))}catch(d){if(d instanceof DOMException&&d.name==="AbortError"&&this._isSuperseded(t))return;if(b.dispatch("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:b.getGlobalErrorMessage(this.config.locale,d)}),this.track(b.streamErrorEvent(this.analyticsContext(),{request_id:s,error_code:"FETCH_ERROR",error_message:d instanceof Error?d.message:String(d),widget:"simrel"})),this._contentEl){this._contentEl.innerHTML="";const g=document.createElement("div");g.className="gengage-simrel-error";const f=document.createElement("span");f.textContent=this._i18n.errorLoadingMessage,g.appendChild(f);const h=document.createElement("button");h.className="gengage-simrel-retry",h.textContent=this._i18n.retryButtonText,h.addEventListener("click",()=>{this._fetchAndRender(this.config.sku)}),g.appendChild(h),this._contentEl.appendChild(g)}}finally{u()}}_clampGridColumns(e){if(!(e===void 0||typeof e!="number"||!Number.isFinite(e)))return Math.max(1,Math.min(12,Math.floor(e)))}_resolveI18n(e){return{...J(e.locale),...e.i18n}}_resolveUISpecRegistry(){return c.mergeUISpecRegistry(U(),this.config.renderer?.registry)}_buildRenderContext(){const e=this.config.renderCard,t={onClick:r=>this._handleProductClick(r),onAddToCart:r=>this._handleAddToCart(r),i18n:this._i18n};this.config.discountType!==void 0&&(t.discountType=this.config.discountType),e!==void 0&&(t.renderCard=e),this.config.renderCardElement!==void 0&&(t.renderCardElement=this.config.renderCardElement),this.config.pricing!==void 0&&(t.pricing=this.config.pricing);const n=this._clampGridColumns(this.config.gridColumns);return n!==void 0&&(t.gridColumns=n),t}_renderUISpec(e){const t=this._resolveUISpecRegistry(),n=this._buildRenderContext(),r=this.config.renderer?.unknownRenderer??T,o=(s,l)=>O(s,l,t,r),a=this.config.renderer?.renderUISpec;return a?a(e,n,{registry:t,unknownRenderer:r,defaultRender:o}):o(e,n)}_buildProductsSpec(e){const t={},n=[];for(let a=0;a<e.length;a++){const s=e[a],l=`product-${a}`;n.push(l),t[l]={type:"ProductCard",props:{product:s,index:a,discountType:this.config.discountType}}}const r={layout:"grid"},o=this._clampGridColumns(this.config.gridColumns);return o!==void 0&&(r.columns=o),t.root={type:"ProductGrid",props:r,children:n},{root:"root",elements:t}}_buildGroupsSpec(e){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:e}}}}}};function te(){return new j}Object.defineProperty(exports,"GengageSimRel",{enumerable:!0,get:function(){return j}});Object.defineProperty(exports,"createDefaultSimRelUISpecRegistry",{enumerable:!0,get:function(){return U}});Object.defineProperty(exports,"createSimRelWidget",{enumerable:!0,get:function(){return te}});Object.defineProperty(exports,"defaultSimRelUnknownUISpecRenderer",{enumerable:!0,get:function(){return T}});Object.defineProperty(exports,"renderSimRelUISpec",{enumerable:!0,get:function(){return O}});Object.defineProperty(exports,"simRelCatalog",{enumerable:!0,get:function(){return ee}});
package/dist/simrel.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./simrel-vL0woDkE.cjs");exports.GengageSimRel=e.GengageSimRel;exports.createDefaultSimRelUISpecRegistry=e.createDefaultSimRelUISpecRegistry;exports.createSimRelWidget=e.createSimRelWidget;exports.defaultSimRelUnknownUISpecRenderer=e.defaultSimRelUnknownUISpecRenderer;exports.renderSimRelUISpec=e.renderSimRelUISpec;exports.simRelCatalog=e.simRelCatalog;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./simrel-DdP4lur9.cjs");exports.GengageSimRel=e.GengageSimRel;exports.createDefaultSimRelUISpecRegistry=e.createDefaultSimRelUISpecRegistry;exports.createSimRelWidget=e.createSimRelWidget;exports.defaultSimRelUnknownUISpecRenderer=e.defaultSimRelUnknownUISpecRenderer;exports.renderSimRelUISpec=e.renderSimRelUISpec;exports.simRelCatalog=e.simRelCatalog;