@gengage/assistant-fe 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat/components/ChatDrawer.d.ts +6 -0
- package/dist/chat/components/actionClassifier.d.ts +3 -0
- package/dist/chat/runtime.d.ts +6 -4
- package/dist/chat/types.d.ts +1 -0
- package/dist/chat-runtime.js +1 -1
- package/dist/chat.iife.js +28 -28
- package/dist/chat.js +1 -1
- package/dist/{common-CW6814pZ.js → common-Cj__jCbX.js} +1 -1
- package/dist/common.js +4 -4
- package/dist/{fastIntent-CJGhUTpS.js → fastIntent-C21cLrmq.js} +1 -1
- package/dist/index.js +9 -9
- package/dist/native.iife.js +21 -21
- package/dist/qna-runtime.js +1 -1
- package/dist/qna.iife.js +1 -1
- package/dist/qna.js +1 -1
- package/dist/{request-response-cache-DItrp4fO.js → request-response-cache-C5-hD9gP.js} +1 -1
- package/dist/{runtime-CZ363BP8.js → runtime-B88-kKyR.js} +2 -2
- package/dist/{runtime-DKkw_dca.js → runtime-BPopt4o6.js} +2 -2
- package/dist/{runtime-B9m0kyTB.js → runtime-CI2s7Smp.js} +1765 -1782
- package/dist/{simbut-D_j8YgHS.js → simbut-DxMcL26M.js} +1 -1
- package/dist/simbut.iife.js +1 -1
- package/dist/simbut.js +1 -1
- package/dist/{simrel-BkAtQjNa.js → simrel-Cfutw5KG.js} +1 -1
- package/dist/simrel-runtime.js +1 -1
- package/dist/simrel.iife.js +1 -1
- package/dist/simrel.js +2 -2
- package/dist/{widget-base-BnUjuCt7.js → widget-base-eopkp_p9.js} +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { L as m, P as h, R as u, T as f, w as p } from "./global-error-toast-DvaKvPNA.js";
|
|
2
|
-
import { t as b } from "./widget-base-
|
|
2
|
+
import { t as b } from "./widget-base-eopkp_p9.js";
|
|
3
3
|
import { t as y } from "./locale-uQ5XZ2yS.js";
|
|
4
4
|
var g = { findSimilarLabel: "Benzerlerini Bul" }, _ = { findSimilarLabel: "Find Similar" };
|
|
5
5
|
function S(t, n) {
|
package/dist/simbut.iife.js
CHANGED
|
@@ -44,4 +44,4 @@
|
|
|
44
44
|
transform: translateY(0);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
`,document.head.appendChild(e)}var f=null;function Y(){if(f!==null)return f;try{f=localStorage.getItem("gengage:debug")==="1"}catch{f=!1}return f}function S(e,t,i){if(!Y())return;const n=[`[gengage:${e}]`,t];i!==void 0&&n.push(i),console.debug(...n)}var j=("0.7.
|
|
47
|
+
`,document.head.appendChild(e)}var f=null;function Y(){if(f!==null)return f;try{f=localStorage.getItem("gengage:debug")==="1"}catch{f=!1}return f}function S(e,t,i){if(!Y())return;const n=[`[gengage:${e}]`,t];i!==void 0&&n.push(i),console.debug(...n)}var j=("0.7.2".trim(),"0.7.2".trim()),J=("iife-build".trim(),"iife-build".trim());function K(){typeof window>"u"||(window.gengage||(window.gengage={}),window.gengage.__internal||(window.gengage.__internal={}),!window.gengage.__internal.sdkRuntimeInfoLogged&&(window.gengage.__internal.sdkRuntimeInfoLogged=!0,console.info(`[gengage] @gengage/assistant-fe v${j} (${J})`)))}var Q=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=U(e.theme);K(),this.config={...e,theme:t,session:N(e.session)},this.root=this._resolveMount(e.mountTarget),this._applyTheme(t),O();const i=w("gengage:context:update",n=>this.update(n));this._cleanups.push(i),S("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,S("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._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)}emit(e,...t){this._handlers.get(e)?.forEach(i=>i(...t))}addCleanup(e){this._cleanups.push(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-${X(t)}`;this.root.style.setProperty(n,i)}}}};function X(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function Z(e){const t=e?.trim();return t||"tr"}var C={findSimilarLabel:"Benzerlerini Bul"},ee={findSimilarLabel:"Find Similar"};function te(e,t){return t?.findSimilarLabel?t.findSimilarLabel:(e??"tr").toLowerCase().startsWith("en")?ee.findSimilarLabel:C.findSimilarLabel}function h(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 E=class extends Q{constructor(...e){super(...e),this._button=null,this._inlineFrame=null,this._label=C.findSimilarLabel}async onInit(e){this._label=te(e.locale,e.i18n);const t=e.layout??"overlay";this.root.classList.add("gengage-simbut-root"),this.root.classList.toggle("gengage-simbut-root--overlay",t==="overlay"),this.root.classList.toggle("gengage-simbut-root--inline-card",t==="inline-card"),t==="overlay"&&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.lang=Z(e.locale),i.textContent=this._label,this._button=i;const n=()=>{i.disabled=!(h(this.config)&&(this.config.onFindSimilar||this.config.chat))};if(i.addEventListener("click",r=>{r.stopPropagation();const s=h(this.config);if(!s)return;const o=this.config.imageUrl,g=typeof o=="string"&&L(o)?o:void 0;if(F(this._label,"findSimilar"),R(s),this.config.onFindSimilar){this.config.onFindSimilar(g?{sku:s,imageUrl:g}:{sku:s});return}const u=this.config.chat;if(!u)return;const a={title:this._label,type:"findSimilar",payload:{sku:s}};u.openWithAction(a,{sku:s})}),t==="inline-card"){const r=this._createInlineCard(e,i);this._inlineFrame=r,this.root.appendChild(r)}else this.root.appendChild(i);n(),k("simbut")}_createInlineCard(e,t){const i=e.inlineCard,n=typeof i?.title=="string"?i.title.trim():"",r=typeof i?.description=="string"?i.description.trim():"",s=typeof i?.imageUrl=="string"?i.imageUrl.trim():"",o=document.createElement("section");o.className="gengage-simbut-inline-card",o.dataset.gengagePart="simbut-inline-card";const g=document.createElement("div");if(g.className="gengage-simbut-inline-copy",g.dataset.gengagePart="simbut-inline-copy",n){const a=document.createElement("h4");a.className="gengage-simbut-inline-title",a.dataset.gengagePart="simbut-inline-title",a.textContent=n,g.appendChild(a)}if(r){const a=document.createElement("p");a.className="gengage-simbut-inline-description",a.dataset.gengagePart="simbut-inline-description",a.textContent=r,g.appendChild(a)}g.children.length>0&&o.appendChild(g);const u=document.createElement("div");if(u.className="gengage-simbut-inline-action",u.dataset.gengagePart="simbut-inline-action",u.appendChild(t),o.appendChild(u),s&&I(s)){const a=document.createElement("img");a.className="gengage-simbut-inline-image",a.dataset.gengagePart="simbut-inline-image",a.src=s,a.alt=typeof i?.imageAlt=="string"?i.imageAlt:"",a.loading="lazy",a.addEventListener("error",()=>{a.style.display="none"},{once:!0}),o.appendChild(a)}return o}onUpdate(e){if(!this._button)return;const t=!!h(this.config)&&(!!this.config.onFindSimilar||!!this.config.chat);this._button.disabled=!t}hide(){this.isVisible&&(this.isVisible=!1,this._inlineFrame&&(this._inlineFrame.style.display="none"),this._button&&(this._button.style.display="none"),this.onHide(),this.emit("hide"))}show(){this.isVisible||(this.isVisible=!0,this._inlineFrame&&(this._inlineFrame.style.display=""),this._button&&(this._button.style.display=""),this.onShow(),this.emit("show"))}_cleanupRoot(){}onShow(){}onHide(){}onDestroy(){this._inlineFrame?.remove(),this._inlineFrame=null,this._button?.remove(),this._button=null}setChat(e){if(this.config.chat=e,this._button){const t=!!h(this.config)&&(!!this.config.onFindSimilar||!!this.config.chat);this._button.disabled=!t}}};function ie(){return new E}m.GengageSimBut=E,m.createSimButWidget=ie})(this.Gengage=this.Gengage||{});
|
package/dist/simbut.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { L as A, R as S } from "./global-error-toast-DvaKvPNA.js";
|
|
2
2
|
import { n as $, t as _ } from "./price-formatter-Q3wUKrl1.js";
|
|
3
3
|
import { a as C, c as f, n as q, o as h, t as k, u as H } from "./schemas-BnYUhYSy.js";
|
|
4
|
-
import { o as V } from "./runtime-
|
|
4
|
+
import { o as V } from "./runtime-B88-kKyR.js";
|
|
5
5
|
var j = {
|
|
6
6
|
images: [
|
|
7
7
|
"images",
|
package/dist/simrel-runtime.js
CHANGED
package/dist/simrel.iife.js
CHANGED
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
transform: translateY(0);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
`,document.head.appendChild(e)}var ce=null;function Mn(){if(ce!==null)return ce;try{ce=localStorage.getItem("gengage:debug")==="1"}catch{ce=!1}return ce}function Ge(e,t,r){if(!Mn())return;const n=[`[gengage:${e}]`,t];r!==void 0&&n.push(r),console.debug(...n)}var Fn=("0.7.
|
|
47
|
+
`,document.head.appendChild(e)}var ce=null;function Mn(){if(ce!==null)return ce;try{ce=localStorage.getItem("gengage:debug")==="1"}catch{ce=!1}return ce}function Ge(e,t,r){if(!Mn())return;const n=[`[gengage:${e}]`,t];r!==void 0&&n.push(r),console.debug(...n)}var Fn=("0.7.2".trim(),"0.7.2".trim()),Bn=("iife-build".trim(),"iife-build".trim());function Gn(){typeof window>"u"||(window.gengage||(window.gengage={}),window.gengage.__internal||(window.gengage.__internal={}),!window.gengage.__internal.sdkRuntimeInfoLogged&&(window.gengage.__internal.sdkRuntimeInfoLogged=!0,console.info(`[gengage] @gengage/assistant-fe v${Fn} (${Bn})`)))}var qn=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=xn(e.theme);Gn(),this.config={...e,theme:t,session:Tn(e.session)},this.root=this._resolveMount(e.mountTarget),this._applyTheme(t),Ln();const r=bt("gengage:context:update",n=>this.update(n));this._cleanups.push(r),Ge("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,Ge("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._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)}emit(e,...t){this._handlers.get(e)?.forEach(r=>r(...t))}addCleanup(e){this._cleanups.push(e)}_resolveMount(e){if(e instanceof HTMLElement)return e;if(typeof e=="string"){const r=document.querySelector(e);if(!r)throw new Error(`[gengage] Mount target not found: "${e}"`);return r}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,r]of Object.entries(e))if(r!==void 0){const n=t.startsWith("--")?t:`--gengage-${Jn(t)}`;this.root.style.setProperty(n,r)}}}};function Jn(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function Vn(e){const t=e?.trim();return t||"tr"}var Wn=8e3,Hn=5e3,Kn="https://www.google.com/favicon.ico",F=new Map,Tt=!1,ne=null,ue=null,X=!1;function Yn(e){return typeof e=="string"&&e.toLowerCase().startsWith("tr")}function xt(e){return Yn(e)?"İnternet bağlantısında sorun var gibi görünüyor. İstek sürerken yeniden deneyeceğiz.":"Your internet connection looks unstable. We'll keep retrying while this request is active."}function At(){let e;for(const t of F.values())e=t;return e}function qe(){ne&&(clearTimeout(ne),ne=null)}function Xn(){ue&&(clearInterval(ue),ue=null)}async function zt(){try{if(typeof navigator<"u"&&navigator.onLine===!1)return!1;if(typeof window<"u"){const r=window.location.hostname;if(r==="localhost"||r==="127.0.0.1")return typeof navigator<"u"?navigator.onLine:!0}const e=new AbortController,t=setTimeout(()=>e.abort(),3e3);try{return await fetch(Kn,{method:"HEAD",mode:"no-cors",cache:"no-cache",signal:e.signal}),!0}catch{return navigator.onLine}finally{clearTimeout(t)}}catch{return typeof navigator>"u"?!0:navigator.onLine}}function ke(){X=!1,Xn(),Ct()}function Se(){ne||X||F.size===0||(ne=setTimeout(async()=>{ne=null,!(X||F.size===0)&&!await zt()&&F.size>0&&(X=!0,Be({source:"sdk",message:xt(At()),sticky:!0}),ue||(ue=setInterval(async()=>{if(F.size===0){ke();return}await zt()&&(ke(),Se())},Hn)))},Wn))}function Qn(){ke(),Se()}function eo(){F.size===0||X||(X=!0,qe(),Be({source:"sdk",message:xt(At()),sticky:!0}))}function to(){Tt||typeof window>"u"||(Tt=!0,window.addEventListener("online",Qn),window.addEventListener("offline",eo))}function ro(e){to();const t=Symbol(e.source);F.set(t,e.locale),Se();let r=!1;return()=>{if(!r){if(r=!0,F.delete(t),F.size===0){qe(),ke();return}X||(qe(),Se())}}}var no={process_action:"/process_action",launcher_action:"/launcher_action",similar_products:"/similar_products",product_groupings:"/product_groupings"};function oo(e){if(e===void 0)throw new Error("[gengage] middlewareUrl is required. Pass your Gengage backend URL in widget config.");const t=e.trim();return t===""?"":t.replace(/\/+$/,"")}function It(e,t){return`${oo(t?.middlewareUrl)}/chat${no[e]}`}function Pt(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function io(e){const t=[];let r=0,n=!1,o=!1,i=0;for(let s=0;s<e.length;s++){const a=e[s];if(o){o=!1;continue}if(a==="\\"&&n){o=!0;continue}if(a==='"'){n=!n;continue}n||(a==="{"&&r++,a==="}"&&(r--,r===0&&(t.push(e.slice(i,s+1)),i=s+1)))}return t.length>0?t:[e]}function $t(e,t){const r=e.trim();if(!r||r.startsWith(":"))return!1;const n=r.startsWith("data: ")?r.slice(6):r;if(n==="[DONE]")return t.onDone?.(),!0;try{const o=JSON.parse(n);return Pt(o)?(Ge("stream",`event: ${o.type}`,o),t.onEvent(o),o.type==="done"?(t.onDone?.(),!0):!1):!1}catch{const o=io(n);if(o.length>=1){let i=!1;for(const s of o)try{const a=JSON.parse(s);if(!Pt(a))continue;if(i=!0,t.onEvent(a),a.type==="done")return t.onDone?.(),!0}catch{o.length>1}if(i)return!1}return!1}}async function Nt(e,t){if(!e.ok){t.onError?.(new Error(`HTTP ${e.status}: ${e.statusText}`));return}if(!e.body){t.onError?.(new Error("Response body is null — streaming not supported"));return}const r=e.body.getReader(),n=new TextDecoder("utf-8");let o="";const i=t.idleTimeoutMs??12e4,s=Symbol("idle-timeout");let a=!1;try{for(;;){const c=r.read();let u;const l=await(i>0?Promise.race([c.finally(()=>clearTimeout(u)),new Promise(y=>{u=setTimeout(()=>y(s),i)})]):c);if(l===s){a=!0,await r.cancel();break}const{done:f,value:d}=l;if(f)break;o+=n.decode(d,{stream:!0});const m=o.split(`
|
|
48
48
|
`);o=m.pop()??"";for(const y of m)if($t(y,t))return}if(o+=n.decode(),o.trim()&&$t(o,t))return}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;t.onError?.(c instanceof Error?c:new Error(String(c)))}finally{a||r.releaseLock()}t.onDone?.()}var so=7200*1e3,Ot=200,ao=5*1024*1024,co="gengage_request_response_cache",uo=1,U="responses",lo=new Set(["addToCart","like"]),j=new Map,Lt=null;async function Rt(e,t={},r={}){const n=fo(e,t);if(!n)return fetch(e,t);const o=Date.now(),i=await ho(n,o);if(i)return vo(i);const s=await fetch(e,t);return s.ok&&yo(n,s.clone(),o,{ttlMs:r.ttlMs??so,maxEntries:r.maxEntries??Ot,maxBodyBytes:r.maxBodyBytes??ao}),s}function fo(e,t={}){if(typeof Request<"u"&&e instanceof Request)return null;const r=String(t.method||"GET").toUpperCase();if(r!=="POST"||typeof t.body!="string")return null;const n=po(t.body);if(go(n))return null;const o=mo(n);if(o){const i=le(n?.action);return`rr:${jt(Ut({url:String(e),method:r,headers:Zt(t.headers),type:n?.type??i?.type??"",account_id:n?.account_id??n?.accountId??"",locale:n?.locale??"",outputLanguage:le(n?.meta)?.outputLanguage??"",cache_key:o}))}`}return`rr:${jt(Ut({url:String(e),method:r,headers:Zt(t.headers),body:t.body}))}`}function po(e){try{const t=JSON.parse(e);return!t||typeof t!="object"||Array.isArray(t)?null:t}catch{return null}}function go(e){const t=e?.type;return typeof t=="string"&&lo.has(t)}function mo(e){const t=(le(e?.payload)??le(le(e?.action)?.payload))?.cache_key;return typeof t=="string"&&t.trim().length>0?t.trim():null}async function ho(e,t){const r=j.get(e);if(r)if(r.expiresAt<=t)j.delete(e);else return r.lastAccessedAt=t,j.delete(e),j.set(e,r),Je(r),r;const n=await wo(e);return n?n.expiresAt<=t?(j.delete(e),ko(e),null):(n.lastAccessedAt=t,j.set(e,n),Je(n),Dt(Ot),n):null}async function yo(e,t,r,n){try{const o=await t.text();if(Eo(o)>n.maxBodyBytes||_o(o))return;const i={key:e,status:t.status,statusText:t.statusText,headers:bo(t.headers),body:o,createdAt:r,expiresAt:r+n.ttlMs,lastAccessedAt:r};j.set(e,i),Dt(n.maxEntries),await Je(i),await So(n.maxEntries,r)}catch{}}function _o(e){return/"_error"\s*:/u.test(e)||/"type"\s*:\s*"error"/u.test(e)}function vo(e){return new Response(e.body,{status:e.status,statusText:e.statusText,headers:new Headers(e.headers)})}function Zt(e){const t=new Headers(e),r=[];return t.forEach((n,o)=>{const i=o.toLowerCase();i!=="authorization"&&i!=="cookie"&&r.push([i,n])}),r.sort(([n],[o])=>n.localeCompare(o))}function bo(e){const t=[];return e.forEach((r,n)=>{const o=n.toLowerCase();o!=="set-cookie"&&t.push([o,r])}),t.sort(([r],[n])=>r.localeCompare(n))}function Dt(e){for(;j.size>e;){const t=[...j.values()].sort((r,n)=>r.lastAccessedAt-n.lastAccessedAt)[0];if(!t)break;j.delete(t.key)}}async function Ee(){return typeof indexedDB>"u"?null:(Lt??=new Promise(e=>{const t=indexedDB.open(co,uo);t.onupgradeneeded=()=>{const r=t.result;r.objectStoreNames.contains(U)||r.createObjectStore(U,{keyPath:"key"}).createIndex("lastAccessedAt","lastAccessedAt",{unique:!1})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null),t.onblocked=()=>e(null)}),Lt)}async function wo(e){const t=await Ee();return t?new Promise(r=>{const n=t.transaction(U,"readonly"),o=n.objectStore(U).get(e);o.onsuccess=()=>r(o.result??null),o.onerror=()=>r(null),n.onerror=()=>r(null)}):null}async function Je(e){const t=await Ee();t&&await new Promise(r=>{const n=t.transaction(U,"readwrite");n.objectStore(U).put(e),n.oncomplete=()=>r(),n.onerror=()=>r(),n.onabort=()=>r()})}async function ko(e){const t=await Ee();t&&await new Promise(r=>{const n=t.transaction(U,"readwrite");n.objectStore(U).delete(e),n.oncomplete=()=>r(),n.onerror=()=>r(),n.onabort=()=>r()})}async function So(e,t){const r=await Ee();r&&await new Promise(n=>{const o=r.transaction(U,"readwrite"),i=o.objectStore(U),s=[],a=i.openCursor();a.onsuccess=()=>{const c=a.result;if(!c){const u=s.filter(f=>f.expiresAt<=t),l=s.filter(f=>f.expiresAt>t).sort((f,d)=>f.lastAccessedAt-d.lastAccessedAt).slice(0,Math.max(0,s.length-u.length-e));for(const f of[...u,...l])i.delete(f.key);return}s.push(c.value),c.continue()},a.onerror=()=>n(),o.oncomplete=()=>n(),o.onerror=()=>n(),o.onabort=()=>n()})}function Ut(e){return JSON.stringify(Ve(e))}function le(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Ve(e){return Array.isArray(e)?e.map(Ve):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>[t,Ve(r)]))}function jt(e){let t=14695981039346656037n;const r=1099511628211n;for(let n=0;n<e.length;n+=1)t^=BigInt(e.charCodeAt(n)),t=BigInt.asUintN(64,t*r);return t.toString(16).padStart(16,"0")}function Eo(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e).byteLength:e.length}var Mt=3,Co=(e,t)=>{const r=e.replace(/\s+/g," ").trim().replace(/^[,.;:!?•-]+|[,.;:!?•-]+$/g,"");if(!r)return"";const n=t?.stripLeadingStopWords?r.replace(/^(?:daha|için)\s+/i,"").trim():r;return n?n.split(/\s+/).slice(0,3).join(" ").trim():""},We=(e,t)=>e?e.split(/[•,;:/()]|(?:\sve\s)|(?:\sand\s)|(?:\sile\s)|(?:\sfor\s)|(?:\swith\s)/i).map(r=>Co(r,t)).filter(Boolean):[];function To(e){const t=(e.display_keywords??[]).flatMap(o=>We(o,{stripLeadingStopWords:!0})),r=t.filter((o,i)=>t.indexOf(o)===i);if(r.length>0)return r.slice(0,Mt);const n=[...We(e.chosen_attribute,{stripLeadingStopWords:!0}),...We(e.short_name)];return n.filter((o,i)=>n.indexOf(o)===i).slice(0,Mt)}function xo(e){return To(e).join(" • ")}function Ao(e){return e==="beauty_consulting"||e==="account_expert"}function de(...e){for(const t of e){if(typeof t!="string")continue;const r=t.trim();if(r.length>0)return r}}function fe(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0).map(t=>t.trim()):[]}function Ce(e){const t={...e},r=de(t.sku),n=fe(t.group_skus);if(r?t.sku=r:delete t.sku,n.length>0?t.group_skus=n:delete t.group_skus,r||n.length>0)delete t.image_url;else{const o=de(t.image_url);o?t.image_url=o:delete t.image_url}return t}function Ft(e){if(typeof e.type!="string")return null;if(e.payload==null&&(e.payload={}),zo(e))return e;const t=e;switch(t.type){case"outputText":return Io(t);case"suggestedActions":return Po(t);case"productList":return $o(t);case"productDetails":return No(t);case"productDetailsSimilars":return Oo(t);case"comparisonTable":return Lo(t);case"context":return Uo(t);case"chatStreamEnd":return jo();case"loading":return Mo(t);case"panelLoading":return Fo(t);case"similarLoading":return Bo(t);case"redirect":return Go(t);case"error":return qo(t);case"dummy":return Jo(t);case"launcherAction":return Vo(t);case"text":return He(t);case"productItem":return Wo(t);case"text_image":return Bt(t);case"quick_qna":return Gt(t);case"reviewHighlights":return Ho(t);case"aiProductSuggestions":return Ko(t);case"aiProductGroupings":return Yo(t);case"aiSuggestedSearches":return ei(t);case"getGroundingReview":return ti(t);case"voice":return ri(t);case"uiSpec":return fi(t);default:return null}}function zo(e){const t=e.type;if(typeof t!="string")return!1;switch(t){case"metadata":return typeof e.sessionId=="string"&&typeof e.model=="string";case"text_chunk":return typeof e.content=="string";case"ui_spec":{const r=e.widget;if(r!=="chat"&&r!=="qna"&&r!=="simrel")return!1;const n=E(e.spec);return n?typeof n.root=="string"&&E(n.elements)!==null:!1}case"action":{const r=E(e.action);return r!==null&&typeof r.kind=="string"}case"error":return typeof e.code=="string"&&typeof e.message=="string";case"done":return!0;default:return!1}}function Io(e){const t=k(e.payload.text,e.payload.plain_text)??"",r=k(e.payload.plain_text,e.payload.text)??t;if(e.payload.is_error)return{type:"error",code:"BACKEND_ERROR",message:r||"Backend returned an error"};const n={type:"text_chunk",content:t,final:!0},o=e.payload.sku_to_product_item;o&&typeof o=="object"&&!Array.isArray(o)&&(n.skuToProductItem=o);const i=e.payload.product_mentions;Array.isArray(i)&&i.length>0&&(n.productMentions=i.map(c=>{if(typeof c!="object"||c===null||typeof c.sku!="string")return null;const u=typeof c.short_name=="string"?c.short_name:"";if(!u)return null;const l=(typeof c.url=="string"&&c.url.trim()?c.url.trim():void 0)??(()=>{const f=n.skuToProductItem?.[c.sku];return typeof f?.url=="string"&&f.url.trim()?f.url.trim():void 0})();return l?{sku:c.sku,short_name:u,url:l}:{sku:c.sku,short_name:u}}).filter(c=>c!==null));const s=e.payload.conversation_mode;typeof s=="string"&&s&&(n.conversationMode=s);const a=e.payload.render_hint;return typeof a=="string"&&a&&(n.renderHint=a),e.payload.kvkk===!0&&(n.kvkk=!0),n}function Po(e){return qt((e.payload.actions??[]).map(t=>{if(!E(t))return null;const r=k(t.title)??"",n=Z(t.requestDetails,r),o=n?{label:r,action:n}:null;return o?(typeof t.icon=="string"&&(o.icon=t.icon),typeof t.image=="string"&&(o.image=t.image),o):null}).filter(Q),"chat")}function $o(e){const t=Array.isArray(e.payload.grouped_assignment)?e.payload.grouped_assignment:[],r=(Array.isArray(e.payload.style_variations)?e.payload.style_variations:[]).map(a=>{if(!E(a))return null;const c=k(a.style_label);if(!c)return null;const u=k(a.style_mood),l=k(a.image_url??void 0),f=(Array.isArray(a.product_list)?a.product_list:[]).map(m=>{const y=E(m);return y?Xe(E(y.product_detail)??E(y.product)??y):null}).filter(Q),d=Array.isArray(a.recommendation_groups)?a.recommendation_groups.map(m=>E(m)?{label:k(m.label)??"",reason:k(m.reason)??"",skus:Array.isArray(m.skus)?m.skus.filter(y=>typeof y=="string"&&y.trim().length>0):[]}:null).filter(Q):[];return{style_label:c,style_mood:u??"",...l?{image_url:l}:{},...typeof a.status=="string"?{status:a.status}:{},product_list:f,recommendation_groups:d}}).filter(Q),n=e.payload.product_list??[],o=Ao(e.payload.source)&&r.length>0?r[0].product_list:null,i=o?oi(o,"chat"):t.length>0?ni(t,n,"chat")??Ye(n,"chat"):Ye(n,"chat");i.panelHint="panel";const s=i.spec.elements[i.spec.root];if(s){const a={};typeof e.payload.offset=="number"&&(a.offset=e.payload.offset),typeof e.payload.end_of_list=="boolean"&&(a.endOfList=e.payload.end_of_list),typeof e.payload.title=="string"&&(a.panelTitle=e.payload.title),typeof e.payload.source=="string"&&(a.source=e.payload.source),r.length>0&&(a.styleVariations=r),e.payload.replace_panel===!0&&(a.replacePanel=!0),(e.payload.ranking_state==="pending"||e.payload.ranking_state==="final")&&(a.rankingState=e.payload.ranking_state);const c=e.payload.sequence_id??e.payload.search_id;typeof c=="string"&&c.length>0&&(a.sequenceId=c),Object.keys(a).length>0&&(s.props={...s.props,...a})}return i}function No(e){const t=e.payload.productDetails;if(!t)return si("chat");const r=J(t);return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:{...t,...r}}}}},panelHint:"panel"}}function Oo(e){const t=Ye(e.payload.similarProducts??[],"chat"),r=t.spec.elements[t.spec.root];return r&&(r.props={...r.props,similarsAppend:!0}),{...t,panelHint:"panel"}}function Lo(e){const t=e.payload.multiple_product_details??[],r=e.payload,n={key_differences:r.key_differences,recommended_choice:r.recommended_choice,recommended_choice_sku:r.recommended_choice_sku,special_considerations:r.special_considerations,criteria_view:r.criteria_view,criteria_view_short:r.criteria_view_short,compared_field_names:r.compared_field_names,winner_product:r.winner_product,winner_hits:r.winner_hits,...e.payload.product_comparison_framework??{}},o=e.payload.table,i=e.payload.features_list,s=[];for(const h of t){const b=J(h);s.push(b)}const a=Ro(o,s,n,i);let c;n?.recommended_choice_sku?c=n.recommended_choice_sku:n?.winner_product&&n.winner_product.length>0&&(c=n.winner_product[0]?.product_detail?.sku??n.winner_product[0]?.sku);const u=c?s.find(h=>h.sku===c)??s[0]:s[0],l=[];if(Array.isArray(n?.key_differences))for(const h of n.key_differences)typeof h=="string"&&l.push(h);const f=Jt(n?.special_considerations),d=n?.recommended_choice,m=n?.winner_hits,y={};for(const h of s){const b=h.sku;b&&(y[b]={title:h.name??b,type:"launchSingleProduct",payload:{sku:b}})}const g={products:s,attributes:a,highlights:l,productActions:y};return u&&(g.recommended=u),f.length>0&&(g.specialCases=f),d&&(g.recommendedText=d),m&&(g.winnerHits=m),typeof n?.key_differences=="string"&&(g.keyDifferencesHtml=n.key_differences),n?.special_considerations&&(g.specialConsiderations=n.special_considerations),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ComparisonTable",props:g}}},panelHint:"panel"}}function Ro(e,t,r,n){if(!e)return[];const o=Object.entries(e);if(o.length===0)return[];const i=o[0]?.[1];if(Array.isArray(i)){const d=E(r.criteria_view)??E(r.criteria_view_short)??{},m=(Array.isArray(r.compared_field_names)?r.compared_field_names:[]).filter(h=>typeof h=="string"),y=m.length>0?m:Object.keys(e),g=[];for(const h of y){const b=e[h];if(!b||!Array.isArray(b))continue;const A=d[h],S=typeof A=="string"&&A?A:h;g.push({label:S,values:b.map(v=>typeof v=="string"?v:String(v??""))})}return g}const s=e,a=t.map(d=>String(d.sku??"")).filter(d=>d.length>0),c=E(r.criteria_view)??E(r.criteria_view_short)??{},u=(Array.isArray(r.compared_field_names)?r.compared_field_names:[]).filter(d=>typeof d=="string"),l=(n&&n.length>0?n:u.length>0?u:Zo(s)).filter(d=>d!=="name"&&d!=="name_short"&&!d.endsWith("_short")),f=[];for(const d of l){const m=a.map(h=>{const b=s[h];if(!b||typeof b!="object")return"";const A=b[`${d}_short`],S=b[d];return Do(A??S)});if(m.every(h=>h.length===0))continue;const y=c[d],g=typeof y=="string"&&y?y:d;f.push({label:g,values:m})}return f}function Zo(e){const t=[],r=new Set;for(const n of Object.values(e))if(!(!n||typeof n!="object"))for(const o of Object.keys(n))r.has(o)||(r.add(o),t.push(o));return t}function Do(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function Uo(e){return{type:"metadata",sessionId:"",model:"",meta:{panel:e.payload.panel,messages:e.payload.messages,message_id:e.payload.message_id}}}function jo(){return{type:"done"}}function Mo(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,loadingText:e.payload.text,thinkingMessages:e.payload.thinking_messages,dynamicLoading:e.payload.is_dynamic===!0}}}function Fo(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,panelLoading:!0,panelPendingType:e.payload?.pending_type,loadingText:e.payload?.text}}}function Bo(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,similarPanelLoading:!0,panelPendingType:e.payload?.pending_type,loadingText:e.payload?.text}}}function Go(e){const t=k(e.payload.url);return t?{type:"action",action:{kind:"navigate",url:t,newTab:e.payload.new_tab===!0}}:{type:"metadata",sessionId:"",model:"",meta:{redirect:e.payload,redirectTarget:k(e.payload.to)}}}function qo(e){return{type:"error",code:"BACKEND_ERROR",message:k(e.payload?.text,e.payload?.message,e.payload?.error)??"Backend returned an error"}}function Jo(e){return{type:"metadata",sessionId:"",model:"",meta:{noop:!0}}}function Vo(e){const t=e.payload??{};if(Array.isArray(t.action_list)){const o={action_list:t.action_list},i=typeof t.type=="string"?t.type:void 0,s=typeof t.theme=="string"?t.theme:void 0;return i!==void 0&&(o.type=i),s!==void 0&&(o.theme=s),Gt({type:"quick_qna",payload:o})}const r=E(t.action);if(r){const o={action:r},i=typeof t.text=="string"?t.text:void 0,s=typeof t.image_url=="string"?t.image_url:void 0,a=typeof t.theme=="string"?t.theme:void 0;return i!==void 0&&(o.text=i),s!==void 0&&(o.image_url=s),a!==void 0&&(o.theme=a),Bt({type:"text_image",payload:o})}const n=typeof t.text=="string"?t.text:"";if(n){const o={text:n},i=typeof t.type=="string"?t.type:void 0,s=typeof t.theme=="string"?t.theme:void 0,a=E(t.payload)??void 0;return i!==void 0&&(o.type=i),a!==void 0&&(o.payload=a),s!==void 0&&(o.theme=s),He({type:"text",payload:o})}return{type:"metadata",sessionId:"",model:"",meta:{launcherAction:t}}}function He(e){const t={text:k(e.payload.text)??""};return typeof e.payload.theme=="string"&&(t.theme=e.payload.theme),e.payload.payload!==void 0&&(t.payload=e.payload.payload),{type:"ui_spec",widget:"qna",spec:{root:"root",elements:{root:{type:"QuestionHeading",props:t}}}}}function Wo(e){return ii(e.payload,"qna")}function Bt(e){const t=k(e.payload.text)??"",r=Z(e.payload.action,t);if(r){const o={label:t||r.title,action:r};return typeof e.payload.image_url=="string"&&(o.image=e.payload.image_url),typeof e.payload.theme=="string"&&(o.theme=e.payload.theme),{type:"ui_spec",widget:"qna",spec:{root:"root",elements:{root:{type:"ActionButton",props:o}}}}}const n={text:t};return typeof e.payload.theme=="string"&&(n.theme=e.payload.theme),He({type:"text",payload:n})}function Gt(e){return qt((e.payload.action_list??[]).map(t=>{if(!E(t))return null;const r=k(t.title)??"",n=Z(t.requestDetails,r),o=n?{label:r,action:n}:null;return o?(typeof t.icon=="string"&&(o.icon=t.icon),typeof t.image=="string"&&(o.image=t.image),o):null}).filter(Q),"qna")}function Ho(e){const t={reviews:(e.payload.reviews??[]).map(r=>{if(!E(r))return null;const n={};return typeof r.review_class=="string"&&(n.review_class=r.review_class),typeof r.review_text=="string"&&(n.review_text=r.review_text),(typeof r.review_rating=="string"||typeof r.review_rating=="number")&&(n.review_rating=r.review_rating),typeof r.review_tag=="string"&&(n.review_tag=r.review_tag),n}).filter(Q)};return typeof e.payload.sku=="string"&&(t.sku=e.payload.sku),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ReviewHighlights",props:t}}}}}function Ko(e){const t=e.payload.product_suggestions??[],r=[];for(let n=0;n<t.length;n++){const o=t[n];if(!o)continue;const i=ai(o);if(!i)continue;const s={product:i},a=Z(o.requestDetails,i.name);a&&(s.action=a),typeof o.role=="string"&&(s.role=o.role),typeof o.reason=="string"&&(s.reason=o.reason),typeof o.review_highlight=="string"&&(s.reviewHighlight=o.review_highlight),Array.isArray(o.labels)&&(s.labels=o.labels),typeof o.expert_quality_score=="number"&&(s.expertQualityScore=o.expert_quality_score),r.push(s)}return r.length===0?{type:"metadata",sessionId:"",model:"",meta:{aiProductSuggestions:e.payload.product_suggestions??[]}}:{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"AITopPicks",props:{suggestions:r}}}}}}function Yo(e){const t=e.payload.product_groupings??[],r=[],n=[];for(let o=0;o<t.length;o++){const i=t[o];if(!i)continue;const s=k(i.name)??"",a=k(i.description),c=k(i.highlight),u=Array.isArray(i.labels)?Jt(i.labels):[],l=k(i.sku,i.repr_sku),f=k(i.image,i.repr_image),d=Xo(i,s,l),m=(Array.isArray(i.group_products)?i.group_products:[]).map(h=>{const b=E(h);return b?Xe(b):null}).filter(Q),y=f??k(...m.map(h=>h.imageUrl));if(s&&m.length>0){const h={groupName:s,products:m};y&&(h.image=y),a&&(h.description=a),c&&(h.highlight=c),u.length>0&&(h.labels=u),r.push(h)}if(!d)continue;const g={name:s,action:d};u.length>0&&(g.labels=u),f!==void 0&&(g.image=f),n.push(g)}return r.length>0?{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"CategoriesContainer",props:{groups:r}}}},panelHint:"panel"}:n.length===0?{type:"metadata",sessionId:"",model:"",meta:{aiProductGroupings:e.payload.product_groupings??[]}}:{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"AIGroupingCards",props:{entries:n}}}}}}function Xo(e,t,r){const n=E(e.requestDetails);if(n){if(n.type!=="findSimilar")return Z(n,t);const s={...E(n.payload)??{}};r&&!de(s.sku)&&(s.sku=r);const a=fe(e.group_skus);return a.length>0&&(s.group_skus=a),Z({...n,payload:Ce(s)},t)}const o={};r&&(o.sku=r);const i=fe(e.group_skus);return i.length>0&&(o.group_skus=i),Object.keys(o).length===0?null:Z({type:"findSimilar",payload:Ce(o)},t)}function Qo(e,t){const r=E(e.requestDetails),n=E(r?.payload),o=k(e.detailed_user_message),i=e.group_skus&&Array.isArray(e.group_skus)?fe(e.group_skus):fe(n?.group_skus),s=k(e.sku,e.representative_product_sku,n?.sku);if(r?.type==="findSimilar"){const c={...n??{}};return s&&(c.sku=s),i.length>0&&(c.group_skus=i),o&&(c.input=o,de(c.text)||(c.text=o)),c.is_search_suggestion=1,Z({...r,payload:Ce(c)},t)}if(s){const c={sku:s,is_search_suggestion:1};return i.length>0&&(c.group_skus=i),o&&(c.input=o,c.text=o),Z({type:"findSimilar",payload:Ce(c)},t)}const a={...n??{},is_suggested_text:1,is_search_suggestion:1};return o&&!de(a.text)&&(a.text=o),i.length>0&&(a.group_skus=i),Z(r?.type==="inputText"?{...r,payload:a}:{type:"inputText",payload:a},t)}function ei(e){const t=e.payload.suggested_searches??[],r=[];for(let n=0;n<t.length;n++){const o=t[n];if(!o)continue;const i=k(o.short_name,o.chosen_attribute,o.detailed_user_message)??`Search ${n+1}`,s=Qo(o,i);if(!s)continue;const a={shortName:i,action:s},c=k(o.detailed_user_message);c&&c!==i&&(a.detailedMessage=c);const u=xo(o);u&&u!==i&&u!==(c??"")&&(a.whyDifferent=u),typeof o.image=="string"&&(a.image=o.image),r.push(a)}return r.length===0?{type:"metadata",sessionId:"",model:"",meta:{aiSuggestedSearches:e.payload.suggested_searches??[]}}:{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"AISuggestedSearchCards",props:{entries:r}}}}}}function ti(e){const t=e.payload,r=Z(t.requestDetails??t.request_details,k(t.review_count,t.reviewCount,t.text,t.title)??"Show product reviews");if(!r)return{type:"metadata",sessionId:"",model:"",meta:{groundingReview:t}};const n={action:r};return t.title&&(n.title=t.title),t.text&&(n.text=t.text),t.review_count?n.reviewCount=t.review_count:typeof t.reviewCount=="string"&&t.reviewCount.trim()&&(n.reviewCount=t.reviewCount),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"GroundingReviewCard",props:n}}}}}function ri(e){return{type:"metadata",sessionId:"",model:"",meta:{voice:e.payload}}}function Ke(e,t){const r={product:e,index:t},n=e,o=typeof n.sku=="string"?n.sku:void 0;return o&&(r.action={title:typeof n.name=="string"?n.name:"",type:"launchSingleProduct",payload:{sku:o}}),{type:"ProductCard",props:r}}function qt(e,t){const r={},n=[];for(let o=0;o<e.length;o++){const i=e[o];if(!i)continue;const s=`action-${o}`;n.push(s);const a={label:i.label,action:i.action};i.icon!==void 0&&(a.icon=i.icon),i.image!==void 0&&(a.image=i.image),i.description!==void 0&&(a.description=i.description),r[s]={type:"ActionButton",props:a}}return r.root={type:"ActionButtons",props:{buttons:e.map(o=>{const i={label:o.label,action:o.action};return o.image!==void 0&&(i.image=o.image),o.description!==void 0&&(i.description=o.description),o.icon!==void 0&&(i.icon=o.icon),i})},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:r}}}function Ye(e,t){const r={},n=[];for(let o=0;o<e.length;o++){const i=e[o];if(!i)continue;const s=J(i),a=`product-${o}`;n.push(a),r[a]=Ke(s,o)}return r.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:r}}}function ni(e,t,r){const n=new Map;for(const u of t)u?.sku&&n.set(u.sku,u);if(n.size===0)return null;const o=new Set,i={},s=[],a=[];let c=0;for(let u=0;u<e.length;u++){const l=e[u],f=k(l?.title)??"",d=Array.isArray(l?.skus)?l.skus:[],m=[];for(let y=0;y<d.length;y++){const g=typeof d[y]=="string"?d[y].trim():"";if(!g||o.has(g))continue;const h=n.get(g);if(!h)continue;o.add(g);const b=`product-${u}-${y}`,A=J(h);s.push(b),m.push(b),i[b]=Ke(A,c),c+=1}m.length>0&&a.push({title:f,children:m})}return a.length===0||o.size<n.size?null:(i.root={type:"ProductGrid",props:{layout:"grouped",productSections:a},children:s},{type:"ui_spec",widget:r,spec:{root:"root",elements:i}})}function oi(e,t){const r={},n=[];for(let o=0;o<e.length;o++){const i=e[o];if(!i)continue;const s=`product-${o}`;n.push(s),r[s]=Ke(i,o)}return r.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:r}}}function ii(e,t){return{type:"ui_spec",widget:t,spec:{root:"root",elements:{root:{type:"ProductCard",props:{product:J(e),index:0}}}}}}function si(e){return{type:"ui_spec",widget:e,spec:{root:"root",elements:{root:{type:"ActionButtons",props:{buttons:[]},children:[]}}}}}function ai(e){const t=k(e.sku),r=k(e.short_name),n={...E(e.product_item)??e},o=k(e.discount_reason,e.discountReason);return o&&!k(n.discount_reason,n.discountReason)&&(n.discount_reason=o),Xe(n,t,r)}function Xe(e,t,r){const n=k(e.sku,t),o=k(e.name,r);if(!n||!o)return null;const i={sku:n,name:o},s=k(e.brand);s&&(i.brand=s);const a=k(e.url);a&&(i.url=a);const c=ci(e.images);if(c.length>0)i.images=c;else{const g=k(e.image,e.image_url,e.imageUrl);g&&(i.images=[g])}const u=pe(e.price_discounted);u!==void 0&&(i.price_discounted=u);const l=pe(e.price);l!==void 0&&(i.price=l);const f=pe(e.rating);f!==void 0&&(i.rating=f);const d=pe(e.review_count)??pe(e.reviewCount);d!==void 0&&(i.review_count=d);const m=k(e.cart_code,e.cartCode);m&&(i.cart_code=m),typeof e.in_stock=="boolean"&&(i.in_stock=e.in_stock),typeof e.inStock=="boolean"&&(i.in_stock=e.inStock);const y=k(e.discount_reason,e.discountReason);return y&&(i.discount_reason=y),J(i)}function Z(e,t){const r=E(e);if(!r)return null;const n=r.type;if(typeof n!="string"||n.length===0)return null;const o={title:t||n,type:n};return r.payload!==void 0&&(o.payload=r.payload),o}function E(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function k(...e){for(const t of e)if(typeof t=="string"){const r=t.trim();if(r.length>0)return r}}function ci(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Jt(e){if(typeof e=="string"){const t=e.trim();return t?[t]:[]}return Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(t=>t.length>0):[]}function pe(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){if(!e.trim())return;let t;e.includes(".")&&e.includes(",")?t=e.replace(/\./g,"").replace(",","."):t=e.replace(",",".");const r=Number(t);if(Number.isFinite(r))return r}}function Q(e){return e!=null}var ui=new Set(["sku","name","brand","images","price","price_discounted","price_discount_rate","price_currency","discount_reason","url","rating","review_count","cart_code","in_stock","description","description_html","features","specifications","short_name","category_ids","category_names","variants","facet_hits","promotions"]);function J(e){const t=e.price_discounted!=null&&e.price_discounted>0,r=t?e.price_discounted:e.price,n=t&&e.price!=null?e.price:void 0;let o;n!=null&&r!=null&&n>0?o=Math.round((n-r)/n*100):e.price_discount_rate!=null&&e.price_discount_rate>0&&(o=e.price_discount_rate);const i=k(e.brand),s=k(e.name)??e.sku,a=i&&!s.toLowerCase().startsWith(i.toLowerCase())?`${i} ${s}`:s,c={sku:e.sku,name:a,url:k(e.url)??""},u=e.images?.[0];u&&(c.imageUrl=u),e.images&&e.images.length>1&&(c.images=e.images),r!=null&&r>0&&(c.price=String(r)),o!==void 0&&o>0&&(c.discountPercent=o,n!=null&&n>0&&(c.originalPrice=String(n))),i!==void 0&&(c.brand=i),e.rating!==void 0&&(c.rating=e.rating),e.review_count!==void 0&&(c.reviewCount=e.review_count),e.cart_code!==void 0&&(c.cartCode=e.cart_code),e.in_stock!==void 0&&(c.inStock=e.in_stock),e.variants&&e.variants.length>0&&(c.variants=e.variants),e.discount_reason!==void 0&&(c.discountReason=e.discount_reason),e.promotions&&e.promotions.length>0&&(c.promotions=e.promotions),e.description!==void 0&&(c.description=e.description),e.description_html!==void 0&&(c.descriptionHtml=e.description_html),e.features&&e.features.length>0&&(c.features=e.features),e.specifications!==void 0&&(c.specifications=e.specifications),e.facet_hits&&(c.facetHits=e.facet_hits),e.category_names&&e.category_names.length>0&&(c.categoryNames=e.category_names),e.short_name!==void 0&&(c.shortName=e.short_name);const l=e,f={};let d=!1;for(const m of Object.keys(l))ui.has(m)||(f[m]=l[m],d=!0);return d&&(c.extras=f),c}function li(e){return(Array.isArray(e?.results)?e.results:[]).filter(t=>E(t)!==null).map(J)}function di(e){return(Array.isArray(e?.product_groupings)?e.product_groupings:[]).filter(t=>E(t)!==null).map(t=>{const r=Array.isArray(t.group_products)?t.group_products:[],n={name:t.name,products:r.filter(o=>E(o)!==null).map(J)};return t.highlight!==void 0&&(n.highlight=t.highlight),n})}function fi(e){const t=E(e.payload)??{},r=typeof t.type=="string"?t.type:"",{type:n,...o}=t;return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:r,props:o}}}}}function Vt(e){const t=[];for(const r of Object.values(e))if(r.type==="ProductCard"&&r.props){const n=r.props.product??r.props;typeof n.sku=="string"&&typeof n.name=="string"&&t.push(n)}return t}function Wt(e){const t=e.headers.get("Content-Type")??"";return t.includes("application/x-ndjson")||t.includes("text/event-stream")}async function pi(e,t){const r=[],n={onEvent:o=>{const i=Ft(o);!i||i.type!=="ui_spec"||r.push(...Vt(i.spec.elements))}};return t!==void 0&&(n.signal=t),await Nt(e,n),r}async function gi(e,t,r){const n=It("similar_products",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};r!==void 0&&(o.signal=r);const i=await Rt(n,o);if(!i.ok)throw new Error(`HTTP ${i.status}: ${i.statusText}`);if(Wt(i))return pi(i,r);const s=await i.text();if(!s)throw new Error("Empty response body from similar_products endpoint");try{return li(JSON.parse(s))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function mi(e,t){const r=[];let n=null;const o={onEvent:i=>{const s=Ft(i);if(s){if(s.type==="metadata"&&s.meta){const a=s.meta.group_name;if(typeof a=="string"){n={name:a,products:[]};const c=s.meta.highlight;typeof c=="string"&&(n.highlight=c),r.push(n)}}s.type==="ui_spec"&&n&&n.products.push(...Vt(s.spec.elements))}}};return t!==void 0&&(o.signal=t),await Nt(e,o),r}async function hi(e,t,r){const n=It("product_groupings",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};r!==void 0&&(o.signal=r);const i=await Rt(n,o);if(!i.ok)throw new Error(`HTTP ${i.status}: ${i.statusText}`);if(Wt(i))return mi(i,r);const s=await i.text();if(!s)return[];try{return di(JSON.parse(s))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}var yi={currencyCode:"TRY",currencySymbol:"TL",currencyPosition:"suffix",thousandsSeparator:".",decimalSeparator:",",alwaysShowDecimals:!1};function ge(e,t){if(typeof e!="string"||e.trim()==="")return e;const r=Number(e);if(!Number.isFinite(r)||r<0||r>=1e15)return e;const n={...yi,...t},o=Math.abs(r%1)<Number.EPSILON,i=n.alwaysShowDecimals||!o?r.toFixed(2):r.toFixed(0),s=i.indexOf("."),a=s===-1?i:i.slice(0,s),c=s===-1?void 0:i.slice(s+1),u=a.replace(/\B(?=(\d{3})+(?!\d))/g,n.thousandsSeparator);let l;return c!==void 0?l=`${u}${n.decimalSeparator}${c}`:l=u,n.currencySymbol?n.currencyPosition==="prefix"?`${n.currencySymbol}${l}`:`${l} ${n.currencySymbol}`:l}function _i(e){return Number.isFinite(e)?Math.max(0,Math.min(5,e)):0}function vi(e){return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function bi(e){const t=_i(e),r=Math.floor(t),n=t-r>=.5,o=5-r-(n?1:0),i=document.createElement("span");if(i.className="gengage-star-rating",i.setAttribute("role","img"),i.setAttribute("aria-label",`${t.toFixed(1)} out of 5 stars`),r>0&&i.appendChild(document.createTextNode("★".repeat(r))),n){const s=document.createElement("span");s.className="gengage-star-half",s.textContent="☆";const a=document.createElement("span");a.textContent="★",s.appendChild(a),i.appendChild(s)}return o>0&&i.appendChild(document.createTextNode("☆".repeat(o))),i}function Ht(e){e.addEventListener("error",()=>{e.style.display="none"},{once:!0})}function Kt(e){const{product:t,index:r,discountType:n,onClick:o,onAddToCart:i,renderCard:s}=e,a=e.i18n,c=e.pricing;if(e.renderCardElement){const g=e.renderCardElement(t,r);if(g)return g}if(s){const g=document.createElement("div");return g.className="gengage-simrel-card gengage-simrel-card--custom gds-card gds-product-card gds-card-interactive",g.dataset.gengagePart="simrel-product-card",g.innerHTML=wn(s(t,r)),g.addEventListener("click",h=>{h.target.closest(".gengage-simrel-atc")||h.target.closest(".gengage-chat-product-card-atc")||o(t)}),g}const u=document.createElement("article");u.className="gengage-simrel-card gengage-chat-product-card gds-card gds-product-card gds-card-interactive",u.dataset.gengagePart="simrel-product-card",t.inStock===!1&&u.classList.add("gengage-simrel-card--out-of-stock"),u.setAttribute("role","listitem"),u.dataset.sku=t.sku;const l=document.createElement("div");if(l.className="gengage-simrel-card-image gengage-chat-product-card-img-wrapper",l.dataset.gengagePart="simrel-product-card-image",t.imageUrl&&we(t.imageUrl)){const g=document.createElement("img");g.className="gengage-chat-product-card-img",g.src=t.imageUrl,g.alt=t.name,g.loading="lazy",Ht(g),l.appendChild(g)}if(n==="badge"&&t.discountPercent&&t.discountPercent>0){const g=document.createElement("span");g.className="gengage-simrel-badge gengage-chat-product-card-discount-badge",g.textContent=`%${vi(t.discountPercent)}`,l.appendChild(g)}u.appendChild(l);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 g=document.createElement("div");g.className="gengage-simrel-card-brand gengage-chat-product-card-brand",g.textContent=t.brand,f.appendChild(g)}const d=document.createElement("div");if(d.className="gengage-simrel-card-name gengage-chat-product-card-name",d.textContent=t.name,d.title=t.name,f.appendChild(d),t.rating!=null&&t.rating>0){const g=document.createElement("div");if(g.className="gengage-simrel-card-rating gengage-chat-product-card-rating",g.appendChild(bi(t.rating)),t.reviewCount!=null){const h=document.createElement("span");h.className="gengage-simrel-card-review-count gengage-chat-product-card-review-count",h.textContent=` (${t.reviewCount})`,g.appendChild(h)}f.appendChild(g)}const m=document.createElement("div");if(m.className="gengage-simrel-card-price gengage-chat-product-card-price",t.originalPrice&&t.originalPrice!==t.price&&(n==="strike-through"||n==="inline"||!n)){const g=document.createElement("span");g.className=["gengage-simrel-card-price-original","gengage-chat-product-card-original-price"].join(" "),n==="inline"&&g.classList.add("gengage-simrel-card-price-original--inline"),g.textContent=ge(t.originalPrice,c),m.appendChild(g)}if(t.price&&parseFloat(t.price)>0){const g=document.createElement("span");g.className="gengage-simrel-card-price-current gengage-chat-product-card-price-current",g.textContent=ge(t.price,c),m.appendChild(g)}f.appendChild(m),u.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=a?.ctaLabel??"View",y.addEventListener("click",g=>{g.preventDefault(),g.stopPropagation(),o(t)}),u.appendChild(y),t.inStock===!1){const g=document.createElement("div");g.className="gengage-simrel-card-oos",g.textContent=a?.outOfStockLabel??"Out of Stock",u.appendChild(g)}else if(t.cartCode){const g=document.createElement("button");g.className="gengage-simrel-atc gengage-simrel-atc-button gds-btn gds-btn-secondary",g.type="button",g.textContent=a?.addToCartButton??"Add to Cart",g.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),i({sku:t.sku,quantity:1,cartCode:t.cartCode})}),u.appendChild(g)}return u.addEventListener("click",g=>{g.target.closest(".gengage-simrel-atc")||g.target.closest(".gengage-chat-product-card-atc")||g.target.closest(".gengage-chat-product-card-cta")||o(t)}),u}function Yt(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 r=0;r<e.products.length;r++){const n={product:e.products[r],index:r,onClick:e.onClick,onAddToCart:e.onAddToCart};e.i18n!==void 0&&(n.i18n=e.i18n),e.discountType!==void 0&&(n.discountType=e.discountType),e.renderCard!==void 0&&(n.renderCard=e.renderCard),e.renderCardElement!==void 0&&(n.renderCardElement=e.renderCardElement);const o=Kt(n);t.appendChild(o)}return e.products.length===0&&(t.style.display="none",t.dataset.empty="true"),t}var wi=0,Qe=new WeakMap;function ki(e){const t=Qe.get(e);t&&(t.disconnect(),Qe.delete(e))}function Xt(e){const t=wi++,r=document.createElement("div");if(r.className="gengage-simrel-groups",r.dataset.gengagePart="simrel-groups",e.groups.length===0)return r.style.display="none",r.dataset.empty="true",r;const n=document.createElement("div");n.className="gengage-simrel-tabs gds-toolbar",n.dataset.gengagePart="simrel-tab-bar",n.setAttribute("role","tablist");const o=[],i=[];let s=0;const a=h=>{const b={products:h.products,onClick:e.onClick,onAddToCart:e.onAddToCart};return e.i18n!==void 0&&(b.i18n=e.i18n),e.discountType!==void 0&&(b.discountType=e.discountType),e.renderCard!==void 0&&(b.renderCard=e.renderCard),e.renderCardElement!==void 0&&(b.renderCardElement=e.renderCardElement),e.columns!==void 0&&(b.columns=e.columns),b},c=(h,b=!1)=>{if(b&&h!==s&&e.onGroupingActivate){const w=e.groups[h];e.onGroupingActivate({grouping_label:w.name,grouping_index:h})}s=h;for(let w=0;w<o.length;w++){const $=w===h;o[w].classList.toggle("gengage-simrel-tab--active",$),o[w].setAttribute("aria-selected",String($)),o[w].tabIndex=$?0:-1}const A=e.groups[h],S=i[h];S.innerHTML="";const v=Yt(a(A));S.appendChild(v);for(let w=0;w<i.length;w++){const $=w===h;i[w].style.display=$?"":"none",i[w].tabIndex=$?0:-1}};for(let h=0;h<e.groups.length;h++){const b=e.groups[h],A=`gengage-simrel-tab-${t}-${h}`,S=`gengage-simrel-panel-${t}-${h}`,v=document.createElement("button");v.className="gengage-simrel-tab gds-tab",v.type="button",v.dataset.gengagePart="simrel-tab",v.id=A,v.textContent=b.name,v.setAttribute("role","tab"),v.setAttribute("aria-controls",S),v.setAttribute("aria-selected",String(h===0)),v.tabIndex=h===0?0:-1,h===0&&v.classList.add("gengage-simrel-tab--active"),v.addEventListener("click",()=>c(h,!0)),v.addEventListener("keydown",$=>{let M=-1;$.key==="ArrowRight"||$.key==="ArrowDown"?M=(h+1)%e.groups.length:$.key==="ArrowLeft"||$.key==="ArrowUp"?M=(h-1+e.groups.length)%e.groups.length:$.key==="Home"?M=0:$.key==="End"&&(M=e.groups.length-1),M>=0&&($.preventDefault(),c(M,!0),o[M].focus())}),o.push(v),n.appendChild(v);const w=document.createElement("div");w.className="gengage-simrel-tab-panel",w.dataset.gengagePart="simrel-tab-panel",w.id=S,w.setAttribute("role","tabpanel"),w.setAttribute("aria-labelledby",A),w.tabIndex=h===0?0:-1,h!==0&&(w.style.display="none"),i.push(w)}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 l=document.createElement("button");l.type="button",l.className="gengage-simrel-tabs-arrow gengage-simrel-tabs-arrow--right",l.setAttribute("aria-label",e.i18n?.scrollTabsRight??"Scroll tabs right"),l.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 f=200;u.addEventListener("click",()=>{n.scrollBy({left:-200,behavior:"smooth"})}),l.addEventListener("click",()=>{n.scrollBy({left:f,behavior:"smooth"})});const d=()=>{const h=n.scrollLeft<=4,b=n.scrollLeft+n.clientWidth>=n.scrollWidth-4;u.style.display=h?"none":"",l.style.display=b?"none":"",n.classList.toggle("gengage-simrel-tabs--peek-right",!b),n.classList.toggle("gengage-simrel-tabs--peek-left",!h)};if(n.addEventListener("scroll",d,{passive:!0}),typeof ResizeObserver<"u"){const h=new ResizeObserver(d);h.observe(n),Qe.set(r,h)}u.style.display="none",l.style.display="none",requestAnimationFrame(d);const m=document.createElement("div");m.className="gengage-simrel-tabs-wrapper",m.appendChild(u),m.appendChild(n),m.appendChild(l),r.appendChild(m);const y=i[0],g=Yt(a(e.groups[0]));y.appendChild(g);for(const h of i)r.appendChild(h);return r}function Qt(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 r={sku:t.sku,name:t.name,url:t.url},n=t.imageUrl;typeof n=="string"&&(r.imageUrl=n);const o=t.price;typeof o=="string"&&(r.price=o);const i=t.originalPrice;typeof i=="string"&&(r.originalPrice=i);const s=t.discountPercent;typeof s=="number"&&(r.discountPercent=s);const a=t.brand;typeof a=="string"&&(r.brand=a);const c=t.rating;typeof c=="number"&&(r.rating=c);const u=t.reviewCount;typeof u=="number"&&(r.reviewCount=u);const l=t.cartCode;typeof l=="string"&&(r.cartCode=l);const f=t.inStock;typeof f=="boolean"&&(r.inStock=f);const d=t.extras;return d!=null&&typeof d=="object"&&(r.extras=d),r}function Si(e){if(!e||typeof e!="object")return null;const t=e,r=t.title,n=t.type;if(typeof r!="string"||typeof n!="string")return null;const o={title:r,type:n};return t.payload!==void 0&&(o.payload=t.payload),o}var er={ProductGrid:({element:e,renderElement:t,context:r})=>{const n=document.createElement("div");n.className="gengage-simrel-grid",n.setAttribute("role","list");const o=e.props?.columns;let i;typeof o=="number"&&Number.isFinite(o)&&o>0?i=Math.floor(o):typeof r.gridColumns=="number"&&Number.isFinite(r.gridColumns)&&r.gridColumns>0&&(i=Math.floor(r.gridColumns)),i!==void 0&&n.style.setProperty("--gengage-simrel-columns",String(i));for(const s of e.children??[]){const a=t(s);a&&n.appendChild(a)}if(n.children.length===0){const s=document.createElement("div");s.className="gengage-simrel-empty",s.textContent=r.i18n.emptyStateMessage,n.appendChild(s)}return n},ProductCard:({element:e,context:t})=>{const r=Qt(e.props?.product??e.props);if(!r)return null;const n=e.props?.index,o=typeof n=="number"&&Number.isFinite(n)?n:0,i=e.props?.discountType,s=i==="strike-through"||i==="badge"||i==="inline"?i:t.discountType,a={product:r,index:o,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n};return s!==void 0&&(a.discountType=s),t.renderCard!==void 0&&(a.renderCard=t.renderCard),t.renderCardElement!==void 0&&(a.renderCardElement=t.renderCardElement),t.pricing!==void 0&&(a.pricing=t.pricing),Kt(a)},GroupTabs:({element:e,context:t})=>{const r=e.props?.groups;if(!Array.isArray(r))return null;const n=[];for(const s of r){if(!s||typeof s!="object")continue;const a=s;if(typeof a.name!="string")continue;const c=[];if(Array.isArray(a.products))for(const l of a.products){const f=Qt(l);f&&c.push(f)}const u={name:a.name,products:c};typeof a.highlight=="string"&&(u.highlight=a.highlight),n.push(u)}const o={groups:n,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n},i=e.props?.columns;return typeof i=="number"&&Number.isFinite(i)&&i>0?o.columns=Math.floor(i):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),t.onGroupingActivate!==void 0&&(o.onGroupingActivate=t.onGroupingActivate),Xt(o)},EmptyState:({element:e,context:t})=>{const r=document.createElement("div");r.className="gengage-simrel-empty";const n=e.props?.message;return r.textContent=typeof n=="string"?n:t.i18n.emptyStateMessage,r},AddToCartButton:({element:e,context:t})=>{const r=e.props?.sku,n=e.props?.cartCode;if(typeof r!="string"||typeof n!="string")return null;const o=document.createElement("button");o.className="gengage-simrel-atc gengage-chat-product-card-cta",o.type="button";const i=e.props?.label;return o.textContent=typeof i=="string"?i:t.i18n.addToCartButton,o.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),t.onAddToCart({sku:r,quantity:1,cartCode:n})}),o},QuickActions:({element:e,context:t})=>{const r=document.createElement("div");r.className="gengage-simrel-quick-actions";const n=e.props?.actions;if(!Array.isArray(n)||!t.onAction)return r;for(const o of n){if(!o||typeof o!="object")continue;const i=o,s=i.label,a=Si(i.action);if(typeof s!="string"||!a)continue;const c=document.createElement("button");c.className="gengage-simrel-quick-action",c.type="button",c.textContent=s,c.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation(),t.onAction?.(a)}),r.appendChild(c)}return r}},et=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const r=document.createElement("div");for(const n of e.children){const o=t(n);o&&r.appendChild(o)}return r};function tr(){return{...er}}function rr(e,t,r=er,n=et){return fn({spec:e,context:t,registry:r,containerClassName:"gengage-simrel-uispec",unknownRenderer:n})}var nr={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"},Ei={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 Ci(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function Ti(e){return Ci(e)==="en"?Ei:nr}var xi=12e4;function Ai(e){return e instanceof DOMException&&e.name==="AbortError"}var or=class extends qn{constructor(...e){super(...e),this._abortController=null,this._contentEl=null,this._lastResultCount=-1,this._i18n=nr,this._pendingAddToCartKeys=new Set}async init(e){if(!this.isInitialised&&(e.mountTarget===void 0||e.mountTarget===null))throw new Error("[gengage] SimRel mountTarget is required. Provide a merchant-owned mount before initializing.");await super.init(e)}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",this._contentEl.lang=Vn(e.locale);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),Sn("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._disposeRenderedGroupTabs(),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;const r=this.config.session?.sessionId??null;ae("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:r,productName:e.name}),this.config.onProductNavigate?.(e.url,e.sku,r)}async _handleAddToCart(e){const t=`${e.sku}\0${e.cartCode}\0${e.quantity}`;if(!this._pendingAddToCartKeys.has(t)){this._pendingAddToCartKeys.add(t);try{if(this.config.onAddToCart===void 0)return;try{await Promise.resolve(this.config.onAddToCart(e))}catch(r){console.error("[gengage] simrel onAddToCart",r);return}En(e.sku,e.quantity),ae("gengage:similar:add-to-cart",e)}finally{this._pendingAddToCartKeys.delete(t)}}}_abort(){this._abortController?.abort(),this._abortController=null}_disposeRenderedGroupTabs(){this._contentEl&&this._contentEl.querySelectorAll('[data-gengage-part="simrel-groups"]').forEach(e=>ki(e))}_isSuperseded(e){return this._abortController?.signal!==e}_emitSimilarProductsImpression(e,t){const r=this.config.session?.sessionId??null;ae("gengage:similar:products-impression",{source_sku:this._lastSku??this.config.sku,product_count:e,grouped:t,sessionId:r})}_resolveRequestTimeoutMs(){const e=this.config.requestTimeoutMs;return typeof e!="number"||!Number.isFinite(e)||e<=0?xi:Math.floor(e)}async _fetchAndRender(e){this._abort();const t=new AbortController;this._abortController=t;const r=t.signal;let n=!1;const o=setTimeout(()=>{n=!0,t.abort()},this._resolveRequestTimeoutMs());if(r.addEventListener("abort",()=>clearTimeout(o),{once:!0}),!this._contentEl)return;this._disposeRenderedGroupTabs(),this._contentEl.innerHTML="",this._contentEl.style.display="";const i=document.createElement("div");i.className="gengage-simrel-loading",i.dataset.gengagePart="simrel-loading";const s=document.createElement("div");s.className="gengage-simrel-spinner",s.dataset.gengagePart="simrel-loading-spinner",i.appendChild(s),this._contentEl.appendChild(i);const a={middlewareUrl:this.config.middlewareUrl},c=ro({source:"simrel",locale:this.config.locale});try{const u={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:e};this.config.domain!==void 0&&(u.domain=this.config.domain);const l=await gi(u,a,r);if(this._isSuperseded(r)||(this._lastResultCount=l.length,!this._contentEl))return;if(this._disposeRenderedGroupTabs(),this._contentEl.innerHTML="",l.length>0&&this.config.enableProductGroupings!==!1)try{const f=l.map(y=>y.sku),d=new Map(l.map(y=>[y.sku,y])),m=(await hi({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:f},a,r)).map(y=>({...y,products:y.products.map(g=>({...d.get(g.sku),...g})).filter(g=>typeof g.sku=="string"&&typeof g.name=="string"&&typeof g.url=="string")})).filter(y=>y.products.length>0);if(this._isSuperseded(r))return;if(m.length>0&&this._contentEl){const y=this._buildGroupsSpec(m),g=this._renderUISpec(y);this._contentEl.appendChild(g),vt("simrel"),this._emitSimilarProductsImpression(m.reduce((h,b)=>h+b.products.length,0),!0);return}}catch{}if(this._isSuperseded(r))return;if(this._contentEl){const f=this._buildProductsSpec(l),d=this._renderUISpec(f);this._contentEl.appendChild(d)}l.length>0&&vt("simrel"),this._emitSimilarProductsImpression(l.length,!1)}catch(u){const l=Ai(u);if(l&&this._isSuperseded(r))return;if(ae("gengage:global:error",{source:"simrel",code:l&&n?"REQUEST_TIMEOUT":"FETCH_ERROR",message:On(this.config.locale,u)}),this._contentEl){this._disposeRenderedGroupTabs(),this._contentEl.innerHTML="";const f=document.createElement("div");f.className="gengage-simrel-error";const d=document.createElement("span");d.textContent=this._i18n.errorLoadingMessage,f.appendChild(d);const m=document.createElement("button");m.className="gengage-simrel-retry",m.textContent=this._i18n.retryButtonText,m.addEventListener("click",()=>{this._fetchAndRender(this._lastSku??this.config.sku)}),f.appendChild(m),this._contentEl.appendChild(f)}}finally{clearTimeout(o),c()}}_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{...Ti(e.locale),...e.i18n}}_resolveUISpecRegistry(){return pn(tr(),this.config.renderer?.registry)}_buildRenderContext(){const e=this.config.renderCard,t={onClick:n=>this._handleProductClick(n),onAddToCart:n=>{this._handleAddToCart(n)},onGroupingActivate:n=>{ae("gengage:similar:grouping-click",{grouping_label:n.grouping_label,grouping_index:n.grouping_index,sessionId:this.config.session?.sessionId??null})},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 r=this._clampGridColumns(this.config.gridColumns);return r!==void 0&&(t.gridColumns=r),t}_renderUISpec(e){const t=this._resolveUISpecRegistry(),r=this._buildRenderContext(),n=this.config.renderer?.unknownRenderer??et,o=(s,a)=>rr(s,a,t,n),i=this.config.renderer?.renderUISpec;return i?i(e,r,{registry:t,unknownRenderer:n,defaultRender:o}):o(e,r)}_buildProductsSpec(e){const t={},r=[];for(let i=0;i<e.length;i++){const s=e[i],a=`product-${i}`;r.push(a),t[a]={type:"ProductCard",props:{product:s,index:i,discountType:this.config.discountType}}}const n={layout:"grid"},o=this._clampGridColumns(this.config.gridColumns);return o!==void 0&&(n.columns=o),t.root={type:"ProductGrid",props:n,children:r},{root:"root",elements:t}}_buildGroupsSpec(e){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:e}}}}}};function zi(){return new or}var Ii={images:["images","extras.images","imageUrl"],subtitle:["categoryNames","category_names","extras.categoryNames","extras.category_names","description"],promotions:["promotions","extras.promotions"],warranties:["warranties","extras.warranties"],productInfoUrl:["productInfoFormUrl","extras.productInfoFormUrl","documents.0.url","extras.documents.0.url"],discountReason:["discountReason","discount_reason","extras.discountReason","extras.discount_reason"],specialPrice:["isSpecialPrice","extras.isSpecialPrice"],customBadgeFacets:["customBadgeFacets","custom_badge_facets","extras.customBadgeFacets","extras.custom_badge_facets","facetHits","facet_hits","extras.facetHits","extras.facet_hits"],customBadgeText:["customBadgeText","custom_badge_text","customBadge","custom_badge","customLabel","custom_label","bottomLabel","bottom_label","cornerBadge","corner_badge","extras.customBadgeText","extras.custom_badge_text","extras.customBadge","extras.custom_badge","extras.customLabel","extras.custom_label","extras.bottomLabel","extras.bottom_label","extras.cornerBadge","extras.corner_badge"],customBadgeImageUrl:["customBadgeImageUrl","custom_badge_image_url","customLabelImageUrl","custom_label_image_url","bottomLabelImageUrl","bottom_label_image_url","cornerBadgeImageUrl","corner_badge_image_url","extras.customBadgeImageUrl","extras.custom_badge_image_url","extras.customLabelImageUrl","extras.custom_label_image_url","extras.bottomLabelImageUrl","extras.bottom_label_image_url","extras.cornerBadgeImageUrl","extras.corner_badge_image_url"]};function Te(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function B(e){if(typeof e!="string")return;const t=e.trim();return t.length>0?t:void 0}function ir(e){if(Array.isArray(e))return e.map(r=>B(r)).filter(r=>!!r);const t=B(e);return t?[t]:[]}function sr(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){const t=Number.parseFloat(e);if(Number.isFinite(t))return t}}function Pi(e){if(typeof e=="boolean")return e;if(typeof e=="number"&&Number.isFinite(e)){if(e===1)return!0;if(e===0)return!1}if(typeof e=="string"){const t=e.trim().toLowerCase();if(t==="true")return!0;if(t==="false")return!1;if(t==="1")return!0;if(t==="0")return!1}}function ar(...e){for(const t of e){const r=B(t);if(r)return r}}function cr(e){const t=Te(e);if(!t)return null;const r=B(t.sku),n=B(t.name),o=B(t.url);if(!r||!n||!o)return null;const i={sku:r,name:n,url:o};for(const[s,a]of Object.entries(t))a!==void 0&&(i[s]=a);return i}function $i(e){const t=Te(e);if(!t)return null;const r=B(t.name);if(!r)return null;const n=[];if(Array.isArray(t.products))for(const s of t.products){const a=cr(s);a&&n.push(a)}const o={name:r,products:n},i=B(t.highlight);return i&&(o.highlight=i),o}function xe(e,t){const r=typeof t=="string"?t.split("."):[...t];let n=e;for(const o of r){if(n==null)return;if(Array.isArray(n)){const s=Number.parseInt(o,10);if(!Number.isInteger(s))return;n=n[s];continue}const i=Te(n);if(!i)return;n=i[o]}return n}function Ni(e,t){for(const r of t){const n=xe(e,r);if(n!=null)return n}}function tt(e,t){for(const r of t){const n=ir(xe(e,r));if(n.length>0)return n}return[]}function me(e,t){for(const r of t){const n=xe(e,r),o=B(n);if(o)return o;const i=ir(n);if(i.length>0)return i[0]}}function Oi(e,t){for(const r of t){const n=Te(xe(e,r));if(n)return n}return null}function ur(e,t){return{labels:{customBadgeAlt:e.labels?.customBadgeAlt??"Product badge",imageDot:e.labels?.imageDot??(r=>`Show product image ${r+1}`),previousPromotion:e.labels?.previousPromotion??"Previous promotion",nextPromotion:e.labels?.nextPromotion??"Next promotion"},ctaLabel:e.labels?.cta??t.i18n.ctaLabel,productInfoLabel:e.labels?.productInfo,reviewLabel:e.labels?.review??(r=>`${r} reviews`),specialPriceBadgeAlt:e.labels?.specialPriceBadgeAlt??"",fields:{...Ii,...e.fields},media:e.media??{},warrantyPromotionPattern:e.warrantyPromotionPattern??/warranty/i,specialPricePattern:e.specialPricePattern??/special/i,pricing:e.pricing??t.pricing}}function Li(e,t,r){return r.media.imageUrlTransform?.(e,t)??e}function Ri(e,t){const r=e.trim(),n=t.trim();if(!r||!n)return r;const o=r.toLocaleLowerCase().indexOf(n.toLocaleLowerCase());return o===-1?r:`${r.slice(0,o).trim()} ${r.slice(o+n.length).trim()}`.replace(/\s{2,}/g," ").replace(/(\s[-|/,:]){2,}/g,"$1").replace(/^\s*[-|/,:]\s*/,"").replace(/\s*[-|/,:]\s*$/,"").trim()||r}function Zi(e,t){const r=me(e,t.fields.customBadgeImageUrl);if(r)return{imageUrl:r,labelText:null};const n=me(e,t.fields.customBadgeText);if(n)return{imageUrl:t.media.customBadgeImageUrl?.(e,n)??null,labelText:n};const o=Oi(e,t.fields.customBadgeFacets);if(!o)return{imageUrl:null,labelText:null};const i=ar(o["Custom Badge Image"],o["Custom Label Image"],o["Bottom Label Image"],o["Corner Badge Image"],o.custom_badge_image,o.custom_label_image,o.bottom_label_image,o.corner_badge_image,o.customBadgeImage,o.customLabelImage,o.bottomLabelImage,o.cornerBadgeImage);if(i)return{imageUrl:i,labelText:null};const s=ar(o["Custom Badge"],o["Custom Label"],o["Bottom Label"],o["Corner Badge"],o.custom_badge,o.custom_label,o.bottom_label,o.corner_badge,o.customBadge,o.customLabel,o.bottomLabel,o.cornerBadge);return s?{imageUrl:t.media.customBadgeImageUrl?.(e,s)??null,labelText:s}:{imageUrl:null,labelText:null}}function V(e,t,r){const n=document.createElement(e);return n.className=t,n.textContent=r,n}function Di(e,t,r){const n=document.createElement("div");n.className="gengage-simrel-default-card-image";let o=null;return r.length>0&&(o=document.createElement("img"),o.src=r[0],o.alt=t,o.loading="lazy",Ht(o),n.appendChild(o)),r.length>1&&o&&(n.addEventListener("mousemove",i=>{const s=n.getBoundingClientRect(),a=Math.max(0,Math.min(Math.floor((i.clientX-s.left)/s.width*r.length),r.length-1));o?.dataset.hoverIdx!==String(a)&&(o.dataset.hoverIdx=String(a),o.src=r[a],e.querySelectorAll(".gengage-simrel-default-card-image-dot").forEach((c,u)=>c.classList.toggle("is-active",u===a)))}),n.addEventListener("mouseleave",()=>{o&&(delete o.dataset.hoverIdx,o.src=r[0],e.querySelectorAll(".gengage-simrel-default-card-image-dot").forEach((i,s)=>i.classList.toggle("is-active",s===0)))})),n}function Ui(e,t){if(!e.imageUrl&&!e.labelText)return null;const r=document.createElement("div");if(r.className="gengage-simrel-default-card-custom-badge",e.imageUrl&&we(e.imageUrl)){const n=document.createElement("img");return n.src=e.imageUrl,n.className="gengage-simrel-default-card-custom-badge-icon",n.alt=t,e.labelText&&n.addEventListener("error",()=>{r.innerHTML="",r.appendChild(V("span","gengage-simrel-default-card-custom-badge-text",e.labelText))},{once:!0}),r.appendChild(n),r}return e.labelText&&r.appendChild(V("span","gengage-simrel-default-card-custom-badge-text",e.labelText)),r}function ji(e,t,r){if(e.length<=1||!t)return null;const n=document.createElement("div");return n.className="gengage-simrel-default-card-image-dots",e.forEach((o,i)=>{const s=document.createElement("button");s.className=`gengage-simrel-default-card-image-dot${i===0?" is-active":""}`,s.type="button",s.setAttribute("aria-label",r.labels.imageDot(i)),s.addEventListener("click",a=>{a.preventDefault(),a.stopPropagation(),t.dataset.hoverIdx=String(i),t.style.opacity="0",window.setTimeout(()=>{t.src=o,t.style.opacity="1"},50),n.querySelectorAll(".gengage-simrel-default-card-image-dot").forEach((c,u)=>c.classList.toggle("is-active",u===i))}),n.appendChild(s)}),n}function Mi(e,t,r,n){const o=e.reviewCount??0,i=e.rating??0,s=document.createElement("div");s.className="gengage-simrel-default-card-rating",o<=0&&!r.productInfoLabel&&s.classList.add("is-placeholder");const a=document.createElement("div");a.className="gengage-simrel-default-card-rating-left";const c=document.createElement("div");c.className="gengage-simrel-default-card-stars";const u=Math.max(0,Math.min(5,Math.round(i)));for(let f=1;f<=5;f+=1){const d=document.createElement("span");d.className=`gengage-simrel-default-card-star${f<=u?" is-filled":""}`,d.textContent="★",c.appendChild(d)}a.appendChild(c);const l=document.createElement("button");if(l.className="gengage-simrel-default-card-review-link",l.type="button",l.textContent=r.reviewLabel(o),l.addEventListener("click",f=>{f.preventDefault(),f.stopPropagation(),n(e)}),a.appendChild(l),s.appendChild(a),r.productInfoLabel){const f=document.createElement(t&&_t(t)?"a":"span");f.className="gengage-simrel-default-card-product-info-link",f.textContent=r.productInfoLabel,f instanceof HTMLAnchorElement&&(f.href=t,f.target="_blank",f.rel="noopener noreferrer",f.addEventListener("click",d=>d.stopPropagation())),s.appendChild(f)}return s}function Fi(e){const t=document.createElement("div");t.className="gengage-simrel-default-card-warranty-row";const r=e.length>0?e:[""];for(const n of r){const o=document.createElement("div");o.className=`gengage-simrel-default-card-warranty-badge${n?"":" is-placeholder"}`,n||o.setAttribute("aria-hidden","true"),o.textContent=n,t.appendChild(o)}return t}function Bi(e,t){const r=document.createElement("div");r.className="gengage-simrel-default-card-feature-slot";const n=document.createElement("div");if(n.className="gengage-simrel-default-card-feature-swiper",e.length===0&&n.classList.add("is-placeholder"),n.dataset.current="0",e.length>0){if(t.media.promotionIconUrl&&_t(t.media.promotionIconUrl)){const s=document.createElement("img");s.src=t.media.promotionIconUrl,s.className="gengage-simrel-default-card-feature-icon",s.alt="",n.appendChild(s)}const o=document.createElement("div");o.className="gengage-simrel-default-card-feature-content";const i=V("span","gengage-simrel-default-card-feature-text",e[0]);if(o.appendChild(i),n.appendChild(o),e.length>1){const s=document.createElement("div");s.className="gengage-simrel-default-card-feature-arrows";const a=(l,f)=>{const d=f==="next"?"slide-out-left":"slide-out-right",m=f==="next"?"prepare-from-right":"prepare-from-left";i.classList.add(d),window.setTimeout(()=>{i.classList.remove(d),i.classList.add(m),i.textContent=e[l]??"",n.dataset.current=String(l),requestAnimationFrame(()=>requestAnimationFrame(()=>i.classList.remove(m)))},250)},c=document.createElement("button");c.className="gengage-simrel-default-card-feature-prev",c.type="button",c.textContent="‹",c.setAttribute("aria-label",t.labels.previousPromotion),c.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation(),a((Number.parseInt(n.dataset.current??"0",10)-1+e.length)%e.length,"prev")});const u=document.createElement("button");u.className="gengage-simrel-default-card-feature-next",u.type="button",u.textContent="›",u.setAttribute("aria-label",t.labels.nextPromotion),u.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation(),a((Number.parseInt(n.dataset.current??"0",10)+1)%e.length,"next")}),s.appendChild(c),s.appendChild(u),n.appendChild(s)}}return r.appendChild(n),r}function Gi(e,t,r,n,o){const i=sr(e.originalPrice),s=sr(e.price),a=s!==void 0&&i!==void 0&&s>0&&i>0&&s<i,c=document.createElement("div");c.className="gengage-simrel-default-card-price-action";const u=document.createElement("div");if(u.className="gengage-simrel-default-card-price",a){const l=o==="inline"?"gengage-simrel-default-card-price-old gengage-simrel-default-card-price-old--inline":"gengage-simrel-default-card-price-old";u.appendChild(V("span",l,ge(String(i),r.pricing)));const f=document.createElement("div");if(f.className="gengage-simrel-default-card-price-current-row",f.appendChild(V("span","gengage-simrel-default-card-price-current",ge(String(s),r.pricing))),t&&r.media.specialPriceBadgeUrl&&we(r.media.specialPriceBadgeUrl)){const d=document.createElement("img");d.src=r.media.specialPriceBadgeUrl,d.className="gengage-simrel-default-card-special-price-badge",d.alt=r.specialPriceBadgeAlt,f.appendChild(d)}u.appendChild(f)}else{const l=i??s;u.appendChild(V("span","gengage-simrel-default-card-price-current",l!==void 0?ge(String(l),r.pricing):""))}if(c.appendChild(u),r.ctaLabel){const l=document.createElement("button");l.className="gengage-simrel-default-card-cta",l.dataset.gengagePart="simrel-product-card-cta",l.type="button",l.dataset.sku=e.sku,l.textContent=r.ctaLabel,l.addEventListener("click",f=>{f.preventDefault(),f.stopPropagation(),n(e)}),c.appendChild(l)}return c}function qi(e,t){return e==="strike-through"||e==="badge"||e==="inline"?e:t.discountType}function lr(e){const{product:t,config:r}=e,n=tt(t,r.fields.images).map(S=>Li(S,t,r)).filter(we),o=tt(t,r.fields.promotions),i=o.filter(S=>r.warrantyPromotionPattern.test(S)),s=o.filter(S=>!r.warrantyPromotionPattern.test(S)),a=me(t,r.fields.subtitle)??"",c=me(t,r.fields.discountReason)??"",u=Pi(Ni(t,r.fields.specialPrice))===!0||r.specialPricePattern.test(c),l=t.brand??"",f=Ri(l&&t.name.startsWith(`${l} `)?t.name.slice(l.length+1):t.name,a),d=document.createElement("article");d.className="gengage-simrel-default-card gengage-simrel-default-scope gengage-simrel-card gds-card gds-product-card gds-card-interactive",d.dataset.gengagePart="simrel-product-card",d.setAttribute("role","listitem"),d.setAttribute("tabindex","0"),d.setAttribute("aria-label",f),d.dataset.sku=t.sku,d.dataset.index=String(e.index);const m=Di(d,f,n);d.appendChild(m);const y=m.querySelector("img"),g=document.createElement("div");g.className="gengage-simrel-default-card-meta-row";const h=Ui(Zi(t,r),r.labels.customBadgeAlt);h&&g.appendChild(h);const b=ji(n,y,r);b&&g.appendChild(b),d.appendChild(g);const A=document.createElement("div");return A.className="gengage-simrel-default-card-info",A.dataset.gengagePart="simrel-product-card-body",A.appendChild(V("h3","gengage-simrel-default-card-title",f)),a&&A.appendChild(V("p","gengage-simrel-default-card-subtitle",a)),A.appendChild(Mi(t,me(t,r.fields.productInfoUrl),r,e.context.onClick)),A.appendChild(Fi([...tt(t,r.fields.warranties),...i])),A.appendChild(Bi(s,r)),d.appendChild(A),d.appendChild(Gi(t,u,r,e.context.onClick,e.context.discountType)),d.addEventListener("click",S=>{(S.target instanceof HTMLElement?S.target:null)?.closest("button, a")||e.context.onClick(t)}),d.addEventListener("keydown",S=>{if(S.key!=="Enter"&&S.key!==" ")return;const v=S.target instanceof HTMLElement?S.target:null;v&&v!==d||(S.preventDefault(),e.context.onClick(t))}),d}function Ji(e,t){const r=cr(e.element.props?.product??e.element.props);if(!r)return null;const n=e.element.props?.index,o=typeof n=="number"&&Number.isFinite(n)?n:0,i=qi(e.element.props?.discountType,e.context);return lr({product:r,index:o,context:i===e.context.discountType?e.context:{...e.context,...i!==void 0?{discountType:i}:{}},config:ur(t,e.context)})}function Vi(e){const t=document.createElement("div");t.className="gengage-simrel-grid gengage-simrel-default-grid gengage-simrel-default-scope",t.setAttribute("role","list");const r=e.element.props?.columns;let n;typeof r=="number"&&Number.isFinite(r)&&r>0?n=Math.floor(r):typeof e.context.gridColumns=="number"&&Number.isFinite(e.context.gridColumns)&&e.context.gridColumns>0&&(n=Math.floor(e.context.gridColumns)),n!==void 0&&t.style.setProperty("--gengage-simrel-columns",String(n));for(const o of e.element.children??[]){const i=e.renderElement(o);i&&t.appendChild(i)}if(t.children.length===0){const o=document.createElement("div");o.className="gengage-simrel-empty",o.textContent=e.context.i18n.emptyStateMessage,t.appendChild(o)}return t}function Wi(e,t){const r=e.element.props?.groups;if(!Array.isArray(r))return null;const n=r.map($i).filter(c=>!!c),o=e.element.props?.columns,i=ur(t,e.context),s=(c,u)=>lr({product:c,index:u,context:e.context,config:i}),a=Xt({groups:n,onClick:e.context.onClick,onAddToCart:e.context.onAddToCart,renderCardElement:s,i18n:e.context.i18n,...e.context.discountType!==void 0?{discountType:e.context.discountType}:{},...e.context.onGroupingActivate!==void 0?{onGroupingActivate:e.context.onGroupingActivate}:{},...typeof o=="number"&&Number.isFinite(o)&&o>0?{columns:Math.floor(o)}:e.context.gridColumns!==void 0?{columns:e.context.gridColumns}:{}});return a.classList.add("gengage-simrel-default-groups","gengage-simrel-default-scope"),a}function Hi(e={}){return{registry:{ProductGrid:t=>Vi(t),ProductCard:t=>Ji(t,e),GroupTabs:t=>Wi(t,e)}}}var dr;function p(e,t,r){function n(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:s,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,c);const u=s.prototype,l=Object.keys(u);for(let f=0;f<l.length;f++){const d=l[f];d in a||(a[d]=u[d].bind(a))}}const o=r?.Parent??Object;class i extends o{}Object.defineProperty(i,"name",{value:e});function s(a){var c;const u=r?.Parent?new i:this;n(u,a),(c=u._zod).deferred??(c.deferred=[]);for(const l of u._zod.deferred)l();return u}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}var oe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},fr=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(dr=globalThis).__zod_globalConfig??(dr.__zod_globalConfig={});var Ae=globalThis.__zod_globalConfig;function ee(e){return e&&Object.assign(Ae,e),Ae}function pr(e){const t=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,n])=>t.indexOf(+r)===-1).map(([r,n])=>n)}function rt(e,t){return typeof t=="bigint"?t.toString():t}function nt(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}throw new Error("cached value already set")}}}function ot(e){return e==null}function it(e){const t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function Ki(e,t){const r=e/t,n=Math.round(r),o=Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<o?0:r-n}var gr=Symbol("evaluating");function C(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==gr)return n===void 0&&(n=gr,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function te(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function W(...e){const t={};for(const r of e)Object.assign(t,Object.getOwnPropertyDescriptors(r));return Object.defineProperties({},t)}function mr(e){return JSON.stringify(e)}function Yi(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var hr="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Xi=nt(()=>{if(Ae.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch{return!1}});function he(e){if(ze(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const r=t.prototype;return!(ze(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function yr(e){return he(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Qi=new Set(["string","number","symbol"]);function Ie(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function H(e,t,r){const n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function _(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function es(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var ts={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function rs(e,t){const r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return H(e,W(e._zod.def,{get shape(){const o={};for(const i in t){if(!(i in r.shape))throw new Error(`Unrecognized key: "${i}"`);t[i]&&(o[i]=r.shape[i])}return te(this,"shape",o),o},checks:[]}))}function ns(e,t){const r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");return H(e,W(e._zod.def,{get shape(){const o={...e._zod.def.shape};for(const i in t){if(!(i in r.shape))throw new Error(`Unrecognized key: "${i}"`);t[i]&&delete o[i]}return te(this,"shape",o),o},checks:[]}))}function os(e,t){if(!he(t))throw new Error("Invalid input to extend: expected a plain object");const r=e._zod.def.checks;if(r&&r.length>0){const n=e._zod.def.shape;for(const o in t)if(Object.getOwnPropertyDescriptor(n,o)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return H(e,W(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return te(this,"shape",n),n}}))}function is(e,t){if(!he(t))throw new Error("Invalid input to safeExtend: expected a plain object");return H(e,W(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t};return te(this,"shape",r),r}}))}function ss(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");return H(e,W(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t._zod.def.shape};return te(this,"shape",r),r},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function as(e,t,r){const n=t._zod.def.checks;if(n&&n.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");return H(t,W(t._zod.def,{get shape(){const o=t._zod.def.shape,i={...o};if(r)for(const s in r){if(!(s in o))throw new Error(`Unrecognized key: "${s}"`);r[s]&&(i[s]=e?new e({type:"optional",innerType:o[s]}):o[s])}else for(const s in o)i[s]=e?new e({type:"optional",innerType:o[s]}):o[s];return te(this,"shape",i),i},checks:[]}))}function cs(e,t,r){return H(t,W(t._zod.def,{get shape(){const n=t._zod.def.shape,o={...n};if(r)for(const i in r){if(!(i in o))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(o[i]=new e({type:"nonoptional",innerType:n[i]}))}else for(const i in n)o[i]=new e({type:"nonoptional",innerType:n[i]});return te(this,"shape",o),o}}))}function ie(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function us(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function _r(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function Pe(e){return typeof e=="string"?e:e?.message}function re(e,t,r){const n=e.message?e.message:Pe(e.inst?._zod.def?.error?.(e))??Pe(t?.error?.(e))??Pe(r.customError?.(e))??Pe(r.localeError?.(e))??"Invalid input",{inst:o,continue:i,input:s,...a}=e;return a.path??(a.path=[]),a.message=n,t?.reportInput&&(a.input=s),a}function st(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function ye(...e){const[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}var vr=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,rt,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},br=p("$ZodError",vr),wr=p("$ZodError",vr,{Parent:Error});function ls(e,t=r=>r.message){const r={},n=[];for(const o of e.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(t(o))):n.push(t(o));return{formErrors:n,fieldErrors:r}}function ds(e,t=r=>r.message){const r={_errors:[]},n=(o,i=[])=>{for(const s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(a=>n({issues:a},[...i,...s.path]));else if(s.code==="invalid_key")n({issues:s.issues},[...i,...s.path]);else if(s.code==="invalid_element")n({issues:s.issues},[...i,...s.path]);else{const a=[...i,...s.path];if(a.length===0)r._errors.push(t(s));else{let c=r,u=0;for(;u<a.length;){const l=a[u];u!==a.length-1?c[l]=c[l]||{_errors:[]}:(c[l]=c[l]||{_errors:[]},c[l]._errors.push(t(s))),c=c[l],u++}}}};return n(e),r}var at=e=>(t,r,n,o)=>{const i=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise)throw new oe;if(s.issues.length){const a=new(o?.Err??e)(s.issues.map(c=>re(c,i,ee())));throw hr(a,o?.callee),a}return s.value},ct=e=>async(t,r,n,o)=>{const i=n?{...n,async:!0}:{async:!0};let s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){const a=new(o?.Err??e)(s.issues.map(c=>re(c,i,ee())));throw hr(a,o?.callee),a}return s.value},$e=e=>(t,r,n)=>{const o=n?{...n,async:!1}:{async:!1},i=t._zod.run({value:r,issues:[]},o);if(i instanceof Promise)throw new oe;return i.issues.length?{success:!1,error:new(e??br)(i.issues.map(s=>re(s,o,ee())))}:{success:!0,data:i.value}},fs=$e(wr),Ne=e=>async(t,r,n)=>{const o=n?{...n,async:!0}:{async:!0};let i=t._zod.run({value:r,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(s=>re(s,o,ee())))}:{success:!0,data:i.value}},ps=Ne(wr),gs=e=>(t,r,n)=>{const o=n?{...n,direction:"backward"}:{direction:"backward"};return at(e)(t,r,o)},ms=e=>(t,r,n)=>at(e)(t,r,n),hs=e=>async(t,r,n)=>{const o=n?{...n,direction:"backward"}:{direction:"backward"};return ct(e)(t,r,o)},ys=e=>async(t,r,n)=>ct(e)(t,r,n),_s=e=>(t,r,n)=>{const o=n?{...n,direction:"backward"}:{direction:"backward"};return $e(e)(t,r,o)},vs=e=>(t,r,n)=>$e(e)(t,r,n),bs=e=>async(t,r,n)=>{const o=n?{...n,direction:"backward"}:{direction:"backward"};return Ne(e)(t,r,o)},ws=e=>async(t,r,n)=>Ne(e)(t,r,n),ks=/^[cC][0-9a-z]{6,}$/,Ss=/^[0-9a-z]+$/,Es=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Cs=/^[0-9a-vA-V]{20}$/,Ts=/^[A-Za-z0-9]{27}$/,xs=/^[a-zA-Z0-9_-]{21}$/,As=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,zs=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,kr=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Is=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Ps="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function $s(){return new RegExp(Ps,"u")}var Ns=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Os=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Ls=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Rs=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Zs=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Sr=/^[A-Za-z0-9_-]*$/,Ds=/^https?$/,Us=/^\+[1-9]\d{6,14}$/,Er="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",js=new RegExp(`^${Er}$`);function Cr(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Ms(e){return new RegExp(`^${Cr(e)}$`)}function Fs(e){const t=Cr({precision:e.precision}),r=["Z"];e.local&&r.push(""),e.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const n=`${t}(?:${r.join("|")})`;return new RegExp(`^${Er}T(?:${n})$`)}var Bs=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Gs=/^-?\d+$/,qs=/^-?\d+(?:\.\d+)?$/,Js=/^[^A-Z]*$/,Vs=/^[^a-z]*$/,O=p("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),Tr={number:"number",bigint:"bigint",object:"date"},xr=p("$ZodCheckLessThan",(e,t)=>{O.init(e,t);const r=Tr[typeof t.value];e._zod.onattach.push(n=>{const o=n._zod.bag,i=(t.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<i&&(t.inclusive?o.maximum=t.value:o.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Ar=p("$ZodCheckGreaterThan",(e,t)=>{O.init(e,t);const r=Tr[typeof t.value];e._zod.onattach.push(n=>{const o=n._zod.bag,i=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>i&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Ws=p("$ZodCheckMultipleOf",(e,t)=>{O.init(e,t),e._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%t.value===BigInt(0):Ki(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),Hs=p("$ZodCheckNumberFormat",(e,t)=>{O.init(e,t),t.format=t.format||"float64";const r=t.format?.includes("int"),n=r?"int":"number",[o,i]=ts[t.format];e._zod.onattach.push(s=>{const a=s._zod.bag;a.format=t.format,a.minimum=o,a.maximum=i,r&&(a.pattern=Gs)}),e._zod.check=s=>{const a=s.value;if(r){if(!Number.isInteger(a)){s.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),Ks=p("$ZodCheckMaxLength",(e,t)=>{var r;O.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!ot(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{const o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{const o=n.value;if(o.length<=t.maximum)return;const i=st(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),Ys=p("$ZodCheckMinLength",(e,t)=>{var r;O.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!ot(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{const o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{const o=n.value;if(o.length>=t.minimum)return;const i=st(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),Xs=p("$ZodCheckLengthEquals",(e,t)=>{var r;O.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!ot(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{const o=n._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=n=>{const o=n.value,i=o.length;if(i===t.length)return;const s=st(o),a=i>t.length;n.issues.push({origin:s,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Oe=p("$ZodCheckStringFormat",(e,t)=>{var r,n;O.init(e,t),e._zod.onattach.push(o=>{const i=o._zod.bag;i.format=t.format,t.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),Qs=p("$ZodCheckRegex",(e,t)=>{Oe.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),ea=p("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Js),Oe.init(e,t)}),ta=p("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Vs),Oe.init(e,t)}),ra=p("$ZodCheckIncludes",(e,t)=>{O.init(e,t);const r=Ie(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push(o=>{const i=o._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(n)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),na=p("$ZodCheckStartsWith",(e,t)=>{O.init(e,t);const r=new RegExp(`^${Ie(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{const o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),oa=p("$ZodCheckEndsWith",(e,t)=>{O.init(e,t);const r=new RegExp(`.*${Ie(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{const o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),ia=p("$ZodCheckOverwrite",(e,t)=>{O.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}}),sa=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}const t=e.split(`
|
|
49
49
|
`).filter(o=>o),r=Math.min(...t.map(o=>o.length-o.trimStart().length)),n=t.map(o=>o.slice(r)).map(o=>" ".repeat(this.indent*2)+o);for(const o of n)this.content.push(o)}compile(){const e=Function,t=this?.args,r=[...(this?.content??[""]).map(n=>` ${n}`)];return new e(...t,r.join(`
|
|
50
50
|
`))}},aa={major:4,minor:4,patch:3},z=p("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=aa;const n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(const o of n)for(const i of o._zod.onattach)i(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const o=(s,a,c)=>{let u=ie(s),l;for(const f of a){if(f._zod.def.when){if(us(s)||!f._zod.def.when(s))continue}else if(u)continue;const d=s.issues.length,m=f._zod.check(s);if(m instanceof Promise&&c?.async===!1)throw new oe;if(l||m instanceof Promise)l=(l??Promise.resolve()).then(async()=>{await m,s.issues.length!==d&&(u||(u=ie(s,d)))});else{if(s.issues.length===d)continue;u||(u=ie(s,d))}}return l?l.then(()=>s):s},i=(s,a,c)=>{if(ie(s))return s.aborted=!0,s;const u=o(a,n,c);if(u instanceof Promise){if(c.async===!1)throw new oe;return u.then(l=>e._zod.parse(l,c))}return e._zod.parse(u,c)};e._zod.run=(s,a)=>{if(a.skipChecks)return e._zod.parse(s,a);if(a.direction==="backward"){const u=e._zod.parse({value:s.value,issues:[]},{...a,skipChecks:!0});return u instanceof Promise?u.then(l=>i(l,s,a)):i(u,s,a)}const c=e._zod.parse(s,a);if(c instanceof Promise){if(a.async===!1)throw new oe;return c.then(u=>o(u,n,a))}return o(c,n,a)}}C(e,"~standard",()=>({validate:o=>{try{const i=fs(e,o);return i.success?{value:i.data}:{issues:i.error?.issues}}catch{return ps(e,o).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}))}),ut=p("$ZodString",(e,t)=>{z.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Bs(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),T=p("$ZodStringFormat",(e,t)=>{Oe.init(e,t),ut.init(e,t)}),ca=p("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=zs),T.init(e,t)}),ua=p("$ZodUUID",(e,t)=>{if(t.version){const r={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(r===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=kr(r))}else t.pattern??(t.pattern=kr());T.init(e,t)}),la=p("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Is),T.init(e,t)}),da=p("$ZodURL",(e,t)=>{T.init(e,t),e._zod.check=r=>{try{const n=r.value.trim();if(!t.normalize&&t.protocol?.source===Ds.source&&!/^https?:\/\//i.test(n)){r.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:r.value,inst:e,continue:!t.abort});return}const o=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})),t.normalize?r.value=o.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),fa=p("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=$s()),T.init(e,t)}),pa=p("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=xs),T.init(e,t)}),ga=p("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=ks),T.init(e,t)}),ma=p("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Ss),T.init(e,t)}),ha=p("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Es),T.init(e,t)}),ya=p("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Cs),T.init(e,t)}),_a=p("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Ts),T.init(e,t)}),va=p("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Fs(t)),T.init(e,t)}),ba=p("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=js),T.init(e,t)}),wa=p("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Ms(t)),T.init(e,t)}),ka=p("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=As),T.init(e,t)}),Sa=p("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Ns),T.init(e,t),e._zod.bag.format="ipv4"}),Ea=p("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Os),T.init(e,t),e._zod.bag.format="ipv6",e._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}}}),Ca=p("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Ls),T.init(e,t)}),Ta=p("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Rs),T.init(e,t),e._zod.check=r=>{const n=r.value.split("/");try{if(n.length!==2)throw new Error;const[o,i]=n;if(!i)throw new Error;const s=Number(i);if(`${s}`!==i)throw new Error;if(s<0||s>128)throw new Error;new URL(`http://[${o}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}}});function zr(e){if(e==="")return!0;if(/\s/.test(e)||e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var xa=p("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Zs),T.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=r=>{zr(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function Aa(e){if(!Sr.test(e))return!1;const t=e.replace(/[-_]/g,r=>r==="-"?"+":"/");return zr(t.padEnd(Math.ceil(t.length/4)*4,"="))}var za=p("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Sr),T.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=r=>{Aa(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),Ia=p("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Us),T.init(e,t)});function Pa(e,t=null){try{const r=e.split(".");if(r.length!==3)return!1;const[n]=r;if(!n)return!1;const o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var $a=p("$ZodJWT",(e,t)=>{T.init(e,t),e._zod.check=r=>{Pa(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),Ir=p("$ZodNumber",(e,t)=>{z.init(e,t),e._zod.pattern=e._zod.bag.pattern??qs,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}const o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;const i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...i?{received:i}:{}}),r}}),Na=p("$ZodNumberFormat",(e,t)=>{Hs.init(e,t),Ir.init(e,t)}),Oa=p("$ZodUnknown",(e,t)=>{z.init(e,t),e._zod.parse=r=>r}),La=p("$ZodNever",(e,t)=>{z.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)});function Pr(e,t,r){e.issues.length&&t.issues.push(..._r(r,e.issues)),t.value[r]=e.value}var Ra=p("$ZodArray",(e,t)=>{z.init(e,t),e._zod.parse=(r,n)=>{const o=r.value;if(!Array.isArray(o))return r.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),r;r.value=Array(o.length);const i=[];for(let s=0;s<o.length;s++){const a=o[s],c=t.element._zod.run({value:a,issues:[]},n);c instanceof Promise?i.push(c.then(u=>Pr(u,r,s))):Pr(c,r,s)}return i.length?Promise.all(i).then(()=>r):r}});function Le(e,t,r,n,o,i){const s=r in n;if(e.issues.length){if(o&&i&&!s)return;t.issues.push(..._r(r,e.issues))}if(!s&&!o){e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[r]});return}e.value===void 0?s&&(t.value[r]=void 0):t.value[r]=e.value}function $r(e){const t=Object.keys(e.shape);for(const n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);const r=es(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Nr(e,t,r,n,o,i){const s=[],a=o.keySet,c=o.catchall._zod,u=c.def.type,l=c.optin==="optional",f=c.optout==="optional";for(const d in t){if(d==="__proto__"||a.has(d))continue;if(u==="never"){s.push(d);continue}const m=c.run({value:t[d],issues:[]},n);m instanceof Promise?e.push(m.then(y=>Le(y,r,d,t,l,f))):Le(m,r,d,t,l,f)}return s.length&&r.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>r):r}var Za=p("$ZodObject",(e,t)=>{if(z.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const s=t.shape;Object.defineProperty(t,"shape",{get:()=>{const a={...s};return Object.defineProperty(t,"shape",{value:a}),a}})}const r=nt(()=>$r(t));C(e._zod,"propValues",()=>{const s=t.shape,a={};for(const c in s){const u=s[c]._zod;if(u.values){a[c]??(a[c]=new Set);for(const l of u.values)a[c].add(l)}}return a});const n=ze,o=t.catchall;let i;e._zod.parse=(s,a)=>{i??(i=r.value);const c=s.value;if(!n(c))return s.issues.push({expected:"object",code:"invalid_type",input:c,inst:e}),s;s.value={};const u=[],l=i.shape;for(const f of i.keys){const d=l[f],m=d._zod.optin==="optional",y=d._zod.optout==="optional",g=d._zod.run({value:c[f],issues:[]},a);g instanceof Promise?u.push(g.then(h=>Le(h,s,f,c,m,y))):Le(g,s,f,c,m,y)}return o?Nr(u,c,s,a,r.value,e):u.length?Promise.all(u).then(()=>s):s}}),Da=p("$ZodObjectJIT",(e,t)=>{Za.init(e,t);const r=e._zod.parse,n=nt(()=>$r(t)),o=d=>{const m=new sa(["shape","payload","ctx"]),y=n.value,g=S=>{const v=mr(S);return`shape[${v}]._zod.run({ value: input[${v}], issues: [] }, ctx)`};m.write("const input = payload.value;");const h=Object.create(null);let b=0;for(const S of y.keys)h[S]=`key_${b++}`;m.write("const newResult = {};");for(const S of y.keys){const v=h[S],w=mr(S),$=d[S],M=$?._zod?.optin==="optional",Pl=$?._zod?.optout==="optional";m.write(`const ${v} = ${g(S)};`),M&&Pl?m.write(`
|
package/dist/simrel.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a, i as r, n as t, r as i, t as m } from "./runtime-
|
|
2
|
-
import { n as R, t as n } from "./simrel-
|
|
1
|
+
import { a, i as r, n as t, r as i, t as m } from "./runtime-B88-kKyR.js";
|
|
2
|
+
import { n as R, t as n } from "./simrel-Cfutw5KG.js";
|
|
3
3
|
export {
|
|
4
4
|
m as GengageSimRel,
|
|
5
5
|
i as createDefaultSimRelUISpecRegistry,
|
|
@@ -45,7 +45,7 @@ function r(e, t, i) {
|
|
|
45
45
|
const n = [`[gengage:${e}]`, t];
|
|
46
46
|
i !== void 0 && n.push(i), console.debug(...n);
|
|
47
47
|
}
|
|
48
|
-
var u = ("0.7.
|
|
48
|
+
var u = ("0.7.2".trim(), "0.7.2".trim()), c = ("package-build".trim(), "package-build".trim());
|
|
49
49
|
function f() {
|
|
50
50
|
typeof window > "u" || (window.gengage || (window.gengage = {}), window.gengage.__internal || (window.gengage.__internal = {}), !window.gengage.__internal.sdkRuntimeInfoLogged && (window.gengage.__internal.sdkRuntimeInfoLogged = !0, console.info(`[gengage] @gengage/assistant-fe v${u} (${c})`)));
|
|
51
51
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gengage/assistant-fe",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"description": "Source-available frontend widgets for Gengage AI Assistant — chat, Q&A, and similar-products. Backend is SaaS (gengage.ai).",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|