@gengage/assistant-fe 0.3.31 → 0.3.34

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.
@@ -45,7 +45,7 @@
45
45
  }
46
46
  }
47
47
  `,document.head.appendChild(e)}var te=null;function cn(){if(te!==null)return te;try{te=localStorage.getItem("gengage:debug")==="1"}catch{te=!1}return te}function Te(e,t,r){if(!cn())return;const n=[`[gengage:${e}]`,t];r!==void 0&&n.push(r),console.debug(...n)}var un=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=Vr(e.theme);this.config={...e,theme:t,session:Br(e.session)},this.root=this._resolveMount(e.mountTarget),this._applyTheme(t),tn();const r=Ke("gengage:context:update",n=>this.update(n));this._cleanups.push(r),Te("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,Te("lifecycle",`${this.constructor.name} ready`),this.emit("ready"))}update(e){this.isInitialised&&(this.config.pageContext?this.config={...this.config,pageContext:{...this.config.pageContext,...e}}:e.pageType!==void 0&&(this.config={...this.config,pageContext:e}),this.onUpdate(e),this.emit("context-update",this.config.pageContext))}show(){this.isVisible||(this.isVisible=!0,this.root.style.display="",this.onShow(),this.emit("show"))}hide(){this.isVisible&&(this.isVisible=!1,this.root.style.display="none",this.onHide(),this.emit("hide"))}destroy(){this._destroying||(this._destroying=!0,this.emit("destroy"),this._cleanups.forEach(e=>e()),this._cleanups.length=0,this._handlers.clear(),this.onDestroy(),this.config.analyticsClient?.destroy(),this._cleanupRoot(),this.isInitialised=!1)}_cleanupRoot(){this._ownsRoot?this.root.remove():this.root.innerHTML=""}on(e,t){return this._handlers.has(e)||this._handlers.set(e,new Set),this._handlers.get(e).add(t),()=>this._handlers.get(e)?.delete(t)}trackCheckout(e,t){const r=e==="start"?Zr:Rr;this.track(r(this.analyticsContext(),t))}flushMeteringSummary(e){this.track(Or(this.analyticsContext(),e))}emit(e,...t){this._handlers.get(e)?.forEach(r=>r(...t))}addCleanup(e){this._cleanups.push(e)}track(e){this.config.analyticsClient?.track(e)}analyticsContext(){const e={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??""};return this.config.session?.viewId!==void 0&&(e.view_id=this.config.session.viewId),this.config.session?.userId!==void 0&&(e.user_id=this.config.session.userId),this.config.pageContext?.pageType!==void 0&&(e.page_type=this.config.pageContext.pageType),this.config.pageContext?.sku!==void 0&&(e.sku=this.config.pageContext.sku),this.config.session?.abTestVariant!==void 0&&(e.ab_test_variant=this.config.session.abTestVariant),this.config.session?.abTestExperimentId!==void 0&&(e.ab_test_experiment_id=this.config.session.abTestExperimentId),e}_resolveMount(e){if(e instanceof HTMLElement)return e;if(typeof e=="string"){const 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-${dn(t)}`;this.root.style.setProperty(n,r)}}}};function dn(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}var ln=8e3,fn=5e3,pn="https://www.google.com/favicon.ico",L=new Map,rt=!1,K=null,re=null,B=!1;function gn(e){return typeof e=="string"&&e.toLowerCase().startsWith("tr")}function nt(e){return gn(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 ot(){let e;for(const t of L.values())e=t;return e}function $e(){K&&(clearTimeout(K),K=null)}function mn(){re&&(clearInterval(re),re=null)}async function it(){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 navigator.onLine}const e=new AbortController,t=setTimeout(()=>e.abort(),3e3);try{return await fetch(pn,{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 ce(){B=!1,mn(),tt()}function ue(){K||B||L.size===0||(K=setTimeout(async()=>{K=null,!(B||L.size===0)&&!await it()&&L.size>0&&(B=!0,ze({source:"sdk",message:nt(ot()),sticky:!0}),re||(re=setInterval(async()=>{if(L.size===0){ce();return}await it()&&(ce(),ue())},fn)))},ln))}function hn(){rt||typeof window>"u"||(rt=!0,window.addEventListener("online",()=>{ce(),ue()}),window.addEventListener("offline",()=>{L.size===0||B||(B=!0,$e(),ze({source:"sdk",message:nt(ot()),sticky:!0}))}))}function _n(e){hn();const t=Symbol(e.source);L.set(t,e.locale),ue();let r=!1;return()=>{if(!r){if(r=!0,L.delete(t),L.size===0){$e(),ce();return}B||($e(),ue())}}}var yn={process_action:"/process_action",launcher_action:"/launcher_action",similar_products:"/similar_products",product_groupings:"/product_groupings"};function vn(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 at(e,t){return`${vn(t?.middlewareUrl)}/chat${yn[e]}`}function st(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function bn(e){const t=[];let r=0,n=!1,o=!1,i=0;for(let a=0;a<e.length;a++){const s=e[a];if(o){o=!1;continue}if(s==="\\"&&n){o=!0;continue}if(s==='"'){n=!n;continue}n||(s==="{"&&r++,s==="}"&&(r--,r===0&&(t.push(e.slice(i,a+1)),i=a+1)))}return t.length>0?t:[e]}function ct(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 st(o)?(Te("stream",`event: ${o.type}`,o),t.onEvent(o),o.type==="done"?(t.onDone?.(),!0):!1):!1}catch{const o=bn(n);if(o.length>1){for(const i of o)try{const a=JSON.parse(i);if(!st(a))continue;if(t.onEvent(a),a.type==="done")return t.onDone?.(),!0}catch{}return!1}return!1}}async function ut(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??6e4,a=Symbol("idle-timeout");let s=!1;try{for(;;){const c=r.read();let u;const f=await(i>0?Promise.race([c.then(h=>(clearTimeout(u),h)),new Promise(h=>{u=setTimeout(()=>h(a),i)})]):c);if(f===a){s=!0,await r.cancel();break}const{done:g,value:p}=f;if(g)break;o+=n.decode(p,{stream:!0});const m=o.split(`
48
- `);o=m.pop()??"";for(const h of m)if(ct(h,t))return}if(o.trim()&&ct(o,t))return}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;t.onError?.(c instanceof Error?c:new Error(String(c)))}finally{s||r.releaseLock()}t.onDone?.()}var dt=3,wn=(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():""},Ae=(e,t)=>e?e.split(/[•,;:/()]|(?:\sve\s)|(?:\sand\s)|(?:\sile\s)|(?:\sfor\s)|(?:\swith\s)/i).map(r=>wn(r,t)).filter(Boolean):[];function kn(e){const t=(e.display_keywords??[]).flatMap(o=>Ae(o,{stripLeadingStopWords:!0})),r=t.filter((o,i)=>t.indexOf(o)===i);if(r.length>0)return r.slice(0,dt);const n=[...Ae(e.chosen_attribute,{stripLeadingStopWords:!0}),...Ae(e.short_name)];return n.filter((o,i)=>n.indexOf(o)===i).slice(0,dt)}function Sn(e){return kn(e).join(" • ")}var Cn=["beauty_consulting","watch_expert"];function En(e){return typeof e=="string"&&Cn.includes(e)}function lt(e){if(typeof e.type!="string")return null;if(zn(e))return e;const t=e;switch(t.type){case"outputText":return Tn(t);case"suggestedActions":return $n(t);case"productList":return An(t);case"productDetails":return In(t);case"productDetailsSimilars":return Pn(t);case"comparisonTable":return On(t);case"context":return xn(t);case"chatStreamEnd":return Ln();case"loading":return Dn(t);case"panelLoading":return jn(t);case"similarLoading":return Un(t);case"redirect":return Mn(t);case"error":return Fn(t);case"dummy":return qn(t);case"launcherAction":return Gn(t);case"text":return Ie(t);case"productItem":return Jn(t);case"text_image":return ft(t);case"quick_qna":return pt(t);case"reviewHighlights":return Bn(t);case"aiProductSuggestions":return Hn(t);case"aiProductGroupings":return Kn(t);case"aiSuggestedSearches":return Yn(t);case"prosAndCons":return Vn(t);case"getGroundingReview":return Xn(t);case"voice":return eo(t);case"visitorDataResponse":return Wn(t);case"productListPreview":return Qn();case"groupList":return to(t);case"formGetInfo":case"formTestDrive":case"formServiceRequest":case"launchFormPage":return ro(t);case"launcherContent":return oo(t);case"handoff":return no(t);case"uiSpec":return mo(t);default:return null}}function zn(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=N(e.spec);return n?typeof n.root=="string"&&N(n.elements)!==null:!1}case"action":{const r=N(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 Tn(e){const t=b(e.payload.text,e.payload.plain_text)??"",r=b(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.product_mentions;Array.isArray(o)&&o.length>0&&(n.productMentions=o.filter(c=>typeof c=="object"&&c!==null&&typeof c.sku=="string"&&typeof c.short_name=="string"));const i=e.payload.sku_to_product_item;i&&typeof i=="object"&&!Array.isArray(i)&&(n.skuToProductItem=i);const a=e.payload.conversation_mode;typeof a=="string"&&a&&(n.conversationMode=a);const s=e.payload.render_hint;return typeof s=="string"&&s&&(n.renderHint=s),e.payload.kvkk===!0&&(n.kvkk=!0),n}function $n(e){return gt((e.payload.actions??[]).map(t=>{const r=b(t.title)??"",n=x(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(de),"chat")}function An(e){const t=(Array.isArray(e.payload.style_variations)?e.payload.style_variations:[]).map(a=>{const s=b(a.style_label);if(!s)return null;const c=b(a.style_mood),u=b(a.image_url??void 0),f=(Array.isArray(a.product_list)?a.product_list:[]).map(p=>{const m=N(p);return m?ht(N(m.product_detail)??N(m.product)??m):null}).filter(de),g=Array.isArray(a.recommendation_groups)?a.recommendation_groups.map(p=>({label:b(p.label)??"",reason:b(p.reason)??"",skus:Array.isArray(p.skus)?p.skus.filter(m=>typeof m=="string"&&m.trim().length>0):[]})):[];return{style_label:s,style_mood:c??"",...u?{image_url:u}:{},...typeof a.status=="string"?{status:a.status}:{},product_list:f,recommendation_groups:g}}).filter(de),r=e.payload.product_list??[],n=En(e.payload.source)&&t.length>0?t[0].product_list:null,o=n?io(n,"chat"):mt(r,"chat");o.panelHint="panel";const i=o.spec.elements[o.spec.root];if(i){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),t.length>0&&(a.styleVariations=t),e.payload.replace_panel===!0&&(a.replacePanel=!0),Object.keys(a).length>0&&(i.props={...i.props,...a})}return o}function In(e){const t=e.payload.productDetails;if(!t)return so("chat");const r=U(t);return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:{...t,...r}}}}},panelHint:"panel"}}function Pn(e){const t=mt(e.payload.similarProducts??[],"chat"),r=t.spec.elements[t.spec.root];return r&&(r.props={...r.props,similarsAppend:!0}),{...t,panelHint:"panel"}}function On(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,a=[];for(const y of t){const S=U(y);a.push(S)}const s=Nn(o,a,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?a.find(y=>y.sku===c)??a[0]:a[0],f=[];if(Array.isArray(n?.key_differences))for(const y of n.key_differences)typeof y=="string"&&f.push(y);const g=lo(n?.special_considerations),p=n?.recommended_choice,m=n?.winner_hits,h={};for(const y of a){const S=y.sku;S&&(h[S]={title:y.name??S,type:"launchSingleProduct",payload:{sku:S}})}const d={products:a,attributes:s,highlights:f,productActions:h};return u&&(d.recommended=u),g.length>0&&(d.specialCases=g),p&&(d.recommendedText=p),m&&(d.winnerHits=m),typeof n?.key_differences=="string"&&(d.keyDifferencesHtml=n.key_differences),n?.special_considerations&&(d.specialConsiderations=n.special_considerations),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ComparisonTable",props:d}}},panelHint:"panel"}}function Nn(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 g=r.criteria_view??r.criteria_view_short??{},p=r.compared_field_names??Object.keys(e),m=[];for(const h of p){const d=e[h];if(!d||!Array.isArray(d))continue;const y=g[h]??h;m.push({label:y,values:d.map(S=>typeof S=="string"?S:String(S??""))})}return m}const a=e,s=t.map(g=>String(g.sku??"")).filter(g=>g.length>0),c=r.criteria_view??r.criteria_view_short??{},u=(n&&n.length>0?n:r.compared_field_names&&r.compared_field_names.length>0?r.compared_field_names:Zn(a)).filter(g=>g!=="name"&&g!=="name_short"&&!g.endsWith("_short")),f=[];for(const g of u){const p=s.map(h=>{const d=a[h];if(!d||typeof d!="object")return"";const y=d[`${g}_short`],S=d[g];return Rn(y??S)});if(p.every(h=>h.length===0))continue;const m=c[g]??g;f.push({label:m,values:p})}return f}function Zn(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 Rn(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function xn(e){return{type:"metadata",sessionId:"",model:"",meta:{panel:e.payload.panel,messages:e.payload.messages,message_id:e.payload.message_id}}}function Ln(){return{type:"done"}}function Dn(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 jn(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,panelLoading:!0,panelPendingType:e.payload?.pending_type,loadingText:e.payload?.text}}}function Un(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,similarPanelLoading:!0,panelPendingType:e.payload?.pending_type,loadingText:e.payload?.text}}}function Mn(e){const t=b(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:b(e.payload.to)}}}function Fn(e){return{type:"error",code:"BACKEND_ERROR",message:b(e.payload?.text,e.payload?.message,e.payload?.error)??"Backend returned an error"}}function qn(e){return{type:"metadata",sessionId:"",model:"",meta:{noop:!0}}}function Gn(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,a=typeof t.theme=="string"?t.theme:void 0;return i!==void 0&&(o.type=i),a!==void 0&&(o.theme=a),pt({type:"quick_qna",payload:o})}const r=N(t.action);if(r){const o={action:r},i=typeof t.text=="string"?t.text:void 0,a=typeof t.image_url=="string"?t.image_url:void 0,s=typeof t.theme=="string"?t.theme:void 0;return i!==void 0&&(o.text=i),a!==void 0&&(o.image_url=a),s!==void 0&&(o.theme=s),ft({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,a=typeof t.theme=="string"?t.theme:void 0,s=N(t.payload)??void 0;return i!==void 0&&(o.type=i),s!==void 0&&(o.payload=s),a!==void 0&&(o.theme=a),Ie({type:"text",payload:o})}return{type:"metadata",sessionId:"",model:"",meta:{launcherAction:t}}}function Ie(e){const t={text:b(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 Jn(e){return ao(e.payload,"qna")}function ft(e){const t=b(e.payload.text)??"",r=x(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),Ie({type:"text",payload:n})}function pt(e){return gt((e.payload.action_list??[]).map(t=>{const r=b(t.title)??"",n=x(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(de),"qna")}function Bn(e){const t={reviews:(e.payload.reviews??[]).map(r=>{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})};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 Vn(e){const t={};return Array.isArray(e.payload.pros)&&(t.pros=e.payload.pros),Array.isArray(e.payload.cons)&&(t.cons=e.payload.cons),typeof e.payload.product_name=="string"&&(t.productName=e.payload.product_name),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ProsAndCons",props:t}}}}}function Wn(e){return{type:"metadata",sessionId:"",model:"",meta:{visitorDataResponse:e.payload}}}function Hn(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=co(o);if(!i)continue;const a={product:i},s=x(o.requestDetails,i.name);s&&(a.action=s),typeof o.role=="string"&&(a.role=o.role),typeof o.reason=="string"&&(a.reason=o.reason),typeof o.review_highlight=="string"&&(a.reviewHighlight=o.review_highlight),Array.isArray(o.labels)&&(a.labels=o.labels),typeof o.expert_quality_score=="number"&&(a.expertQualityScore=o.expert_quality_score),r.push(a)}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 Kn(e){const t=e.payload.product_groupings??[],r=[];for(let n=0;n<t.length;n++){const o=t[n];if(!o)continue;const i=b(o.name)??"",a=o.sku&&o.sku.length>0?{type:"findSimilar",payload:{sku:o.sku}}:void 0,s=x(o.requestDetails??a,i);if(!s)continue;const c={name:i,action:s};if(Array.isArray(o.labels)){const u=o.labels.filter(f=>typeof f=="string");u.length>0&&(c.labels=u)}typeof o.image=="string"&&(c.image=o.image),r.push(c)}return r.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:r}}}}}}function Yn(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=b(o.short_name,o.chosen_attribute,o.detailed_user_message)??`Search ${n+1}`,a={},s=b(o.detailed_user_message);s&&(a.text=s);const c=N(N(o.requestDetails)?.payload),u=c?.group_skus;o.group_skus&&Array.isArray(o.group_skus)?a.group_skus=o.group_skus:Array.isArray(u)&&(a.group_skus=u.filter(S=>typeof S=="string"));const f=b(o.sku,o.representative_product_sku,c?.sku);f&&(a.sku=f),a.is_suggested_text=1;const g={type:"inputText",payload:a},p=x(o.requestDetails,i),m=p?.type==="findSimilar"&&typeof a.text=="string"?x(g,i):p??x(g,i);if(!m)continue;const h={shortName:i,action:m},d=b(o.detailed_user_message);d&&d!==i&&(h.detailedMessage=d);const y=Sn(o);y&&y!==i&&y!==(d??"")&&(h.whyDifferent=y),typeof o.image=="string"&&(h.image=o.image),r.push(h)}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 Xn(e){const t=e.payload,r=x(t.requestDetails??t.request_details,b(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 Qn(){return{type:"metadata",sessionId:"",model:"",meta:{analyzeAnimation:!0}}}function eo(e){return{type:"metadata",sessionId:"",model:"",meta:{voice:e.payload}}}function to(e){const t=e.payload.group_list??[],r=[];for(const o of t){const i=o.group_name??"",a=(o.product_list??[]).map(U);r.push({groupName:i,products:a})}const n=[];for(const o of e.payload.filter_tags??[]){const i=o.title??"";if(!i)continue;const a=x(o.requestDetails,i),s={title:i};a&&(s.action=a),n.push(s)}return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"CategoriesContainer",props:{groups:r,filterTags:n}}}},panelHint:"panel"}}function ro(e){return{type:"metadata",sessionId:"",model:"",meta:{formType:e.type,formPayload:e.payload??{}}}}function no(e){const t={};return typeof e.payload?.summary=="string"&&(t.summary=e.payload.summary),Array.isArray(e.payload?.products_discussed)&&(t.products_discussed=e.payload.products_discussed),typeof e.payload?.user_sentiment=="string"&&(t.user_sentiment=e.payload.user_sentiment),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"HandoffNotice",props:t}}}}}function oo(e){return{type:"metadata",sessionId:"",model:"",meta:{launcherContent:e.payload??{}}}}function gt(e,t){const r={},n=[];for(let o=0;o<e.length;o++){const i=e[o];if(!i)continue;const a=`action-${o}`;n.push(a);const s={label:i.label,action:i.action};i.icon!==void 0&&(s.icon=i.icon),i.image!==void 0&&(s.image=i.image),i.description!==void 0&&(s.description=i.description),r[a]={type:"ActionButton",props:s}}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 mt(e,t){const r={},n=[];for(let o=0;o<e.length;o++){const i=e[o];if(!i)continue;const a=U(i),s=`product-${o}`;n.push(s);const c={product:a,index:o};a.sku&&(c.action={title:a.name,type:"launchSingleProduct",payload:{sku:a.sku}}),r[s]={type:"ProductCard",props:c}}return r.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:r}}}function io(e,t){const r={},n=[];for(let o=0;o<e.length;o++){const i=e[o];if(!i)continue;const a=`product-${o}`;n.push(a);const s={product:i,index:o},c=i.sku;c&&(s.action={title:i.name??"",type:"launchSingleProduct",payload:{sku:c}}),r[a]={type:"ProductCard",props:s}}return r.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:r}}}function ao(e,t){return{type:"ui_spec",widget:t,spec:{root:"root",elements:{root:{type:"ProductCard",props:{product:U(e),index:0}}}}}}function so(e){return{type:"ui_spec",widget:e,spec:{root:"root",elements:{root:{type:"ActionButtons",props:{buttons:[]},children:[]}}}}}function co(e){const t=b(e.sku),r=b(e.short_name),n={...N(e.product_item)??e},o=b(e.discount_reason,e.discountReason);return o&&!b(n.discount_reason,n.discountReason)&&(n.discount_reason=o),ht(n,t,r)}function ht(e,t,r){const n=b(e.sku,t),o=b(e.name,r);if(!n||!o)return null;const i={sku:n,name:o},a=b(e.brand);a&&(i.brand=a);const s=b(e.url);s&&(i.url=s);const c=uo(e.images);if(c.length>0)i.images=c;else{const d=b(e.image,e.image_url,e.imageUrl);d&&(i.images=[d])}const u=ne(e.price_discounted);u!==void 0&&(i.price_discounted=u);const f=ne(e.price);f!==void 0&&(i.price=f);const g=ne(e.rating);g!==void 0&&(i.rating=g);const p=ne(e.review_count)??ne(e.reviewCount);p!==void 0&&(i.review_count=p);const m=b(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 h=b(e.discount_reason,e.discountReason);return h&&(i.discount_reason=h),U(i)}function x(e,t){const r=N(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 N(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function b(...e){for(const t of e)if(typeof t=="string"){const r=t.trim();if(r.length>0)return r}}function uo(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function lo(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 ne(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){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 de(e){return e!=null}var fo=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","facet_tags","short_name","category_ids","category_names","variants","facet_hits","promotions"]);function U(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=b(e.brand),a=b(e.name)??e.sku,s=i&&!a.toLowerCase().startsWith(i.toLowerCase())?`${i} ${a}`:a,c={sku:e.sku,name:s,url:b(e.url)??""},u=e.images?.[0];u&&(c.imageUrl=u),e.images&&e.images.length>1&&(c.images=e.images),r!=null&&(c.price=String(r)),n!=null&&(c.originalPrice=String(n)),o!==void 0&&(c.discountPercent=o),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.short_name!==void 0&&(c.shortName=e.short_name);const f=e,g={};let p=!1;for(const m of Object.keys(f))fo.has(m)||(g[m]=f[m],p=!0);return p&&(c.extras=g),c}function po(e){return e.results.map(U)}function go(e){return e.product_groupings.map(t=>{const r={name:t.name,products:(t.group_products??[]).map(U)};return t.highlight!==void 0&&(r.highlight=t.highlight),r})}function mo(e){const t=e.payload.type,{type:r,...n}=e.payload;return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:t,props:n}}}}}function _t(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 yt(e){const t=e.headers.get("Content-Type")??"";return t.includes("application/x-ndjson")||t.includes("text/event-stream")}async function ho(e,t){const r=[],n={onEvent:o=>{const i=lt(o);!i||i.type!=="ui_spec"||r.push(..._t(i.spec.elements))}};return t!==void 0&&(n.signal=t),await ut(e,n),r}async function _o(e,t,r){const n=at("similar_products",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};r!==void 0&&(o.signal=r);const i=await fetch(n,o);if(!i.ok)throw new Error(`HTTP ${i.status}: ${i.statusText}`);if(yt(i))return ho(i,r);const a=await i.text();if(!a)throw new Error("Empty response body from similar_products endpoint");try{return po(JSON.parse(a))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function yo(e,t){const r=[];let n=null;const o={onEvent:i=>{const a=lt(i);if(a){if(a.type==="metadata"&&a.meta){const s=a.meta.group_name;if(typeof s=="string"){n={name:s,products:[]};const c=a.meta.highlight;typeof c=="string"&&(n.highlight=c),r.push(n)}}a.type==="ui_spec"&&n&&n.products.push(..._t(a.spec.elements))}}};return t!==void 0&&(o.signal=t),await ut(e,o),r}async function vo(e,t,r){const n=at("product_groupings",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};r!==void 0&&(o.signal=r);const i=await fetch(n,o);if(!i.ok)throw new Error(`HTTP ${i.status}: ${i.statusText}`);if(yt(i))return yo(i,r);const a=await i.text();if(!a)return[];try{return go(JSON.parse(a))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}var bo={currencyCode:"TRY",currencySymbol:"TL",currencyPosition:"suffix",thousandsSeparator:".",decimalSeparator:",",alwaysShowDecimals:!1};function vt(e,t){const r=Number(e);if(!Number.isFinite(r)||r<0)return e;const n={...bo,...t},o=Math.abs(r%1)<Number.EPSILON,i=n.alwaysShowDecimals||!o?r.toFixed(2):r.toFixed(0),a=i.indexOf("."),s=a===-1?i:i.slice(0,a),c=a===-1?void 0:i.slice(a+1),u=s.replace(/\B(?=(\d{3})+(?!\d))/g,n.thousandsSeparator);let f;return c!==void 0?f=`${u}${n.decimalSeparator}${c}`:f=u,n.currencySymbol?n.currencyPosition==="prefix"?`${n.currencySymbol}${f}`:`${f} ${n.currencySymbol}`:f}function wo(e){return Number.isFinite(e)?Math.max(0,Math.min(5,e)):0}function ko(e){return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function So(e){const t=wo(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 a=document.createElement("span");a.className="gengage-star-half",a.textContent="☆";const s=document.createElement("span");s.textContent="★",a.appendChild(s),i.appendChild(a)}return o>0&&i.appendChild(document.createTextNode("☆".repeat(o))),i}function Co(e){e.addEventListener("error",()=>{e.style.display="none"},{once:!0})}function bt(e){const{product:t,index:r,discountType:n,onClick:o,onAddToCart:i,renderCard:a}=e,s=e.i18n,c=e.pricing;if(e.renderCardElement){const d=e.renderCardElement(t,r);if(d)return d}if(a){const d=document.createElement("div");return d.className="gengage-simrel-card gengage-simrel-card--custom gds-card gds-product-card gds-card-interactive",d.dataset.gengagePart="simrel-product-card",d.innerHTML=Gr(a(t,r)),d.addEventListener("click",y=>{y.target.closest(".gengage-simrel-atc")||y.target.closest(".gengage-chat-product-card-atc")||o(t)}),d}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 f=document.createElement("div");if(f.className="gengage-simrel-card-image gengage-chat-product-card-img-wrapper",f.dataset.gengagePart="simrel-product-card-image",t.imageUrl&&qr(t.imageUrl)){const d=document.createElement("img");d.className="gengage-chat-product-card-img",d.src=t.imageUrl,d.alt=t.name,d.loading="lazy",Co(d),f.appendChild(d)}if(n==="badge"&&t.discountPercent&&t.discountPercent>0){const d=document.createElement("span");d.className="gengage-simrel-badge gengage-chat-product-card-discount-badge",d.textContent=`%${ko(t.discountPercent)}`,f.appendChild(d)}u.appendChild(f);const g=document.createElement("div");if(g.className="gengage-simrel-card-info gengage-chat-product-card-body",g.dataset.gengagePart="simrel-product-card-body",t.brand){const d=document.createElement("div");d.className="gengage-simrel-card-brand gengage-chat-product-card-brand",d.textContent=t.brand,g.appendChild(d)}const p=document.createElement("div");if(p.className="gengage-simrel-card-name gengage-chat-product-card-name",p.textContent=t.name,p.title=t.name,g.appendChild(p),t.rating!=null&&t.rating>0){const d=document.createElement("div");if(d.className="gengage-simrel-card-rating gengage-chat-product-card-rating",d.appendChild(So(t.rating)),t.reviewCount!=null){const y=document.createElement("span");y.className="gengage-simrel-card-review-count gengage-chat-product-card-review-count",y.textContent=` (${t.reviewCount})`,d.appendChild(y)}g.appendChild(d)}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)){const d=document.createElement("span");d.className="gengage-simrel-card-price-original gengage-chat-product-card-original-price",d.textContent=vt(t.originalPrice,c),m.appendChild(d)}if(t.price&&parseFloat(t.price)>0){const d=document.createElement("span");d.className="gengage-simrel-card-price-current gengage-chat-product-card-price-current",d.textContent=vt(t.price,c),m.appendChild(d)}g.appendChild(m),u.appendChild(g);const h=document.createElement("button");if(h.className="gengage-simrel-card-cta gengage-chat-product-card-cta gds-btn gds-btn-secondary",h.type="button",h.dataset.gengagePart="simrel-product-card-cta",h.textContent=s?.ctaLabel??"View",h.addEventListener("click",d=>{d.preventDefault(),d.stopPropagation(),o(t)}),u.appendChild(h),t.inStock===!1){const d=document.createElement("div");d.className="gengage-simrel-card-oos",d.textContent=s?.outOfStockLabel??"Out of Stock",u.appendChild(d)}else if(t.cartCode){const d=document.createElement("button");d.className="gengage-simrel-atc gengage-simrel-atc-button gds-btn gds-btn-secondary",d.type="button",d.textContent=s?.addToCartButton??"Add to Cart",d.addEventListener("click",y=>{y.preventDefault(),y.stopPropagation(),i({sku:t.sku,quantity:1,cartCode:t.cartCode})}),u.appendChild(d)}return u.addEventListener("click",d=>{d.target.closest(".gengage-simrel-atc")||d.target.closest(".gengage-chat-product-card-atc")||d.target.closest(".gengage-chat-product-card-cta")||o(t)}),u}function wt(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=bt(n);t.appendChild(o)}return e.products.length===0&&(t.style.display="none",t.dataset.empty="true"),t}var Eo=0;function zo(e){const t=Eo++,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=[],a=d=>{const y={products:d.products,onClick:e.onClick,onAddToCart:e.onAddToCart};return e.i18n!==void 0&&(y.i18n=e.i18n),e.discountType!==void 0&&(y.discountType=e.discountType),e.renderCard!==void 0&&(y.renderCard=e.renderCard),e.renderCardElement!==void 0&&(y.renderCardElement=e.renderCardElement),e.columns!==void 0&&(y.columns=e.columns),y},s=d=>{for(let v=0;v<o.length;v++){const w=v===d;o[v].classList.toggle("gengage-simrel-tab--active",w),o[v].setAttribute("aria-selected",String(w)),o[v].tabIndex=w?0:-1}const y=e.groups[d],S=i[d];S.innerHTML="";const ee=wt(a(y));S.appendChild(ee);for(let v=0;v<i.length;v++){const w=v===d;i[v].style.display=w?"":"none",i[v].tabIndex=w?0:-1}};for(let d=0;d<e.groups.length;d++){const y=e.groups[d],S=`gengage-simrel-tab-${t}-${d}`,ee=`gengage-simrel-panel-${t}-${d}`,v=document.createElement("button");v.className="gengage-simrel-tab gds-tab",v.type="button",v.dataset.gengagePart="simrel-tab",v.id=S,v.textContent=y.name,v.setAttribute("role","tab"),v.setAttribute("aria-controls",ee),v.setAttribute("aria-selected",String(d===0)),v.tabIndex=d===0?0:-1,d===0&&v.classList.add("gengage-simrel-tab--active"),v.addEventListener("click",()=>s(d)),v.addEventListener("keydown",$=>{let D=-1;$.key==="ArrowRight"||$.key==="ArrowDown"?D=(d+1)%e.groups.length:$.key==="ArrowLeft"||$.key==="ArrowUp"?D=(d-1+e.groups.length)%e.groups.length:$.key==="Home"?D=0:$.key==="End"&&(D=e.groups.length-1),D>=0&&($.preventDefault(),s(D),o[D].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=ee,w.setAttribute("role","tabpanel"),w.setAttribute("aria-labelledby",S),w.tabIndex=d===0?0:-1,d!==0&&(w.style.display="none"),i.push(w)}const c=document.createElement("button");c.type="button",c.className="gengage-simrel-tabs-arrow gengage-simrel-tabs-arrow--left",c.setAttribute("aria-label",e.i18n?.scrollTabsLeft??"Scroll tabs left"),c.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 u=document.createElement("button");u.type="button",u.className="gengage-simrel-tabs-arrow gengage-simrel-tabs-arrow--right",u.setAttribute("aria-label",e.i18n?.scrollTabsRight??"Scroll tabs right"),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="9 18 15 12 9 6"/></svg>';const f=200;c.addEventListener("click",()=>{n.scrollBy({left:-f,behavior:"smooth"})}),u.addEventListener("click",()=>{n.scrollBy({left:f,behavior:"smooth"})});const g=()=>{const d=n.scrollLeft<=4,y=n.scrollLeft+n.clientWidth>=n.scrollWidth-4;c.style.display=d?"none":"",u.style.display=y?"none":"",n.classList.toggle("gengage-simrel-tabs--peek-right",!y),n.classList.toggle("gengage-simrel-tabs--peek-left",!d)};n.addEventListener("scroll",g,{passive:!0}),typeof ResizeObserver<"u"&&new ResizeObserver(g).observe(n),c.style.display="none",u.style.display="none",requestAnimationFrame(g);const p=document.createElement("div");p.className="gengage-simrel-tabs-wrapper",p.appendChild(c),p.appendChild(n),p.appendChild(u),r.appendChild(p);const m=i[0],h=wt(a(e.groups[0]));m.appendChild(h);for(const d of i)r.appendChild(d);return r}function kt(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 a=t.discountPercent;typeof a=="number"&&(r.discountPercent=a);const s=t.brand;typeof s=="string"&&(r.brand=s);const c=t.rating;typeof c=="number"&&(r.rating=c);const u=t.reviewCount;typeof u=="number"&&(r.reviewCount=u);const f=t.cartCode;typeof f=="string"&&(r.cartCode=f);const g=t.inStock;typeof g=="boolean"&&(r.inStock=g);const p=t.extras;return p!=null&&typeof p=="object"&&(r.extras=p),r}function To(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 St={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 a of e.children??[]){const s=t(a);s&&n.appendChild(s)}if(n.children.length===0){const a=document.createElement("div");a.className="gengage-simrel-empty",a.textContent=r.i18n.emptyStateMessage,n.appendChild(a)}return n},ProductCard:({element:e,context:t})=>{const r=kt(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,a=i==="strike-through"||i==="badge"?i:t.discountType,s={product:r,index:o,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n};return a!==void 0&&(s.discountType=a),t.renderCard!==void 0&&(s.renderCard=t.renderCard),t.renderCardElement!==void 0&&(s.renderCardElement=t.renderCardElement),t.pricing!==void 0&&(s.pricing=t.pricing),bt(s)},GroupTabs:({element:e,context:t})=>{const r=e.props?.groups;if(!Array.isArray(r))return null;const n=[];for(const a of r){if(!a||typeof a!="object")continue;const s=a;if(typeof s.name!="string")continue;const c=[];if(Array.isArray(s.products))for(const f of s.products){const g=kt(f);g&&c.push(g)}const u={name:s.name,products:c};typeof s.highlight=="string"&&(u.highlight=s.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),zo(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",a=>{a.preventDefault(),a.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,a=i.label,s=To(i.action);if(typeof a!="string"||!s)continue;const c=document.createElement("button");c.className="gengage-simrel-quick-action",c.type="button",c.textContent=a,c.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation(),t.onAction?.(s)}),r.appendChild(c)}return r}},Pe=({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 Ct(){return{...St}}function Et(e,t,r=St,n=Pe){return $r({spec:e,context:t,registry:r,containerClassName:"gengage-simrel-uispec",unknownRenderer:n})}var zt={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"},$o={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 Ao(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function Io(e){return Ao(e)==="en"?$o:zt}function Po(){return typeof window<"u"&&Array.isArray(window.dataLayer)}function le(e,t){const r={event:e,...t};Po()&&window.dataLayer.push(r)}function Oo(e){le("gengage-on-init",{gengage_widget:e})}function Tt(e){le("gengage-show",{gengage_widget:e})}function No(e,t){le("gengage-product-detail",{gengage_sku:e,gengage_product_name:t})}function Zo(e,t){le("gengage-cart-add",{gengage_sku:e,gengage_quantity:t})}var gu=Object.freeze({status:"aborted"});function l(e,t,r){function n(s,c){if(s._zod||Object.defineProperty(s,"_zod",{value:{def:c,constr:a,traits:new Set},enumerable:!1}),s._zod.traits.has(e))return;s._zod.traits.add(e),t(s,c);const u=a.prototype,f=Object.keys(u);for(let g=0;g<f.length;g++){const p=f[g];p in s||(s[p]=u[p].bind(s))}}const o=r?.Parent??Object;class i extends o{}Object.defineProperty(i,"name",{value:e});function a(s){var c;const u=r?.Parent?new i:this;n(u,s),(c=u._zod).deferred??(c.deferred=[]);for(const f of u._zod.deferred)f();return u}return Object.defineProperty(a,"init",{value:n}),Object.defineProperty(a,Symbol.hasInstance,{value:s=>r?.Parent&&s instanceof r.Parent?!0:s?._zod?.traits?.has(e)}),Object.defineProperty(a,"name",{value:e}),a}var Y=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},$t=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}},Oe={};function V(e){return e&&Object.assign(Oe,e),Oe}function At(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 Ne(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}throw new Error("cached value already set")}}}function Re(e){return e==null}function xe(e){const t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function Ro(e,t){const r=(e.toString().split(".")[1]||"").length,n=t.toString();let o=(n.split(".")[1]||"").length;if(o===0&&/\d?e-\d?/.test(n)){const a=n.match(/\d?e-(\d?)/);a?.[1]&&(o=Number.parseInt(a[1]))}const i=r>o?r:o;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}var It=Symbol("evaluating");function k(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==It)return n===void 0&&(n=It,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function W(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function M(...e){const t={};for(const r of e)Object.assign(t,Object.getOwnPropertyDescriptors(r));return Object.defineProperties({},t)}function Pt(e){return JSON.stringify(e)}function xo(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Ot="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Lo=Ze(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch{return!1}});function oe(e){if(fe(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const r=t.prototype;return!(fe(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function Nt(e){return oe(e)?{...e}:Array.isArray(e)?[...e]:e}var Do=new Set(["string","number","symbol"]);function pe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function F(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 jo(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var Uo={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 Mo(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 F(e,M(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 W(this,"shape",o),o},checks:[]}))}function Fo(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 F(e,M(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 W(this,"shape",o),o},checks:[]}))}function qo(e,t){if(!oe(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 F(e,M(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return W(this,"shape",n),n}}))}function Go(e,t){if(!oe(t))throw new Error("Invalid input to safeExtend: expected a plain object");return F(e,M(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t};return W(this,"shape",r),r}}))}function Jo(e,t){return F(e,M(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t._zod.def.shape};return W(this,"shape",r),r},get catchall(){return t._zod.def.catchall},checks:[]}))}function Bo(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 F(t,M(t._zod.def,{get shape(){const o=t._zod.def.shape,i={...o};if(r)for(const a in r){if(!(a in o))throw new Error(`Unrecognized key: "${a}"`);r[a]&&(i[a]=e?new e({type:"optional",innerType:o[a]}):o[a])}else for(const a in o)i[a]=e?new e({type:"optional",innerType:o[a]}):o[a];return W(this,"shape",i),i},checks:[]}))}function Vo(e,t,r){return F(t,M(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 W(this,"shape",o),o}}))}function X(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 Zt(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function ge(e){return typeof e=="string"?e:e?.message}function H(e,t,r){const n={...e,path:e.path??[]};return e.message||(n.message=ge(e.inst?._zod.def?.error?.(e))??ge(t?.error?.(e))??ge(r.customError?.(e))??ge(r.localeError?.(e))??"Invalid input"),delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function Le(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function ie(...e){const[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}var Rt=(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,Ne,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},xt=l("$ZodError",Rt),Lt=l("$ZodError",Rt,{Parent:Error});function Wo(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 Ho(e,t=r=>r.message){const r={_errors:[]},n=o=>{for(const i of o.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(a=>n({issues:a}));else if(i.code==="invalid_key")n({issues:i.issues});else if(i.code==="invalid_element")n({issues:i.issues});else if(i.path.length===0)r._errors.push(t(i));else{let a=r,s=0;for(;s<i.path.length;){const c=i.path[s];s!==i.path.length-1?a[c]=a[c]||{_errors:[]}:(a[c]=a[c]||{_errors:[]},a[c]._errors.push(t(i))),a=a[c],s++}}};return n(e),r}var De=e=>(t,r,n,o)=>{const i=n?Object.assign(n,{async:!1}):{async:!1},a=t._zod.run({value:r,issues:[]},i);if(a instanceof Promise)throw new Y;if(a.issues.length){const s=new(o?.Err??e)(a.issues.map(c=>H(c,i,V())));throw Ot(s,o?.callee),s}return a.value},je=e=>async(t,r,n,o)=>{const i=n?Object.assign(n,{async:!0}):{async:!0};let a=t._zod.run({value:r,issues:[]},i);if(a instanceof Promise&&(a=await a),a.issues.length){const s=new(o?.Err??e)(a.issues.map(c=>H(c,i,V())));throw Ot(s,o?.callee),s}return a.value},me=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 Y;return i.issues.length?{success:!1,error:new(e??xt)(i.issues.map(a=>H(a,o,V())))}:{success:!0,data:i.value}},Ko=me(Lt),he=e=>async(t,r,n)=>{const o=n?Object.assign(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(a=>H(a,o,V())))}:{success:!0,data:i.value}},Yo=he(Lt),Xo=e=>(t,r,n)=>{const o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return De(e)(t,r,o)},Qo=e=>(t,r,n)=>De(e)(t,r,n),ei=e=>async(t,r,n)=>{const o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return je(e)(t,r,o)},ti=e=>async(t,r,n)=>je(e)(t,r,n),ri=e=>(t,r,n)=>{const o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return me(e)(t,r,o)},ni=e=>(t,r,n)=>me(e)(t,r,n),oi=e=>async(t,r,n)=>{const o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return he(e)(t,r,o)},ii=e=>async(t,r,n)=>he(e)(t,r,n),ai=/^[cC][^\s-]{8,}$/,si=/^[0-9a-z]+$/,ci=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,ui=/^[0-9a-vA-V]{20}$/,di=/^[A-Za-z0-9]{27}$/,li=/^[a-zA-Z0-9_-]{21}$/,fi=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,pi=/^([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})$/,Dt=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)$/,gi=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,mi="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function hi(){return new RegExp(mi,"u")}var _i=/^(?:(?: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])$/,yi=/^(([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}|:))$/,vi=/^((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])$/,bi=/^(([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])$/,wi=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,jt=/^[A-Za-z0-9_-]*$/,ki=/^\+[1-9]\d{6,14}$/,Ut="(?:(?:\\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])))",Si=new RegExp(`^${Ut}$`);function Mt(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 Ci(e){return new RegExp(`^${Mt(e)}$`)}function Ei(e){const t=Mt({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(`^${Ut}T(?:${n})$`)}var zi=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Ti=/^-?\d+$/,$i=/^-?\d+(?:\.\d+)?$/,Ai=/^[^A-Z]*$/,Ii=/^[^a-z]*$/,P=l("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),Ft={number:"number",bigint:"bigint",object:"date"},qt=l("$ZodCheckLessThan",(e,t)=>{P.init(e,t);const r=Ft[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})}}),Gt=l("$ZodCheckGreaterThan",(e,t)=>{P.init(e,t);const r=Ft[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})}}),Pi=l("$ZodCheckMultipleOf",(e,t)=>{P.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):Ro(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})}}),Oi=l("$ZodCheckNumberFormat",(e,t)=>{P.init(e,t),t.format=t.format||"float64";const r=t.format?.includes("int"),n=r?"int":"number",[o,i]=Uo[t.format];e._zod.onattach.push(a=>{const s=a._zod.bag;s.format=t.format,s.minimum=o,s.maximum=i,r&&(s.pattern=Ti)}),e._zod.check=a=>{const s=a.value;if(r){if(!Number.isInteger(s)){a.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?a.issues.push({input:s,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}):a.issues.push({input:s,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}}s<o&&a.issues.push({origin:"number",input:s,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),s>i&&a.issues.push({origin:"number",input:s,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),Ni=l("$ZodCheckMaxLength",(e,t)=>{var r;P.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!Re(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=Le(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),Zi=l("$ZodCheckMinLength",(e,t)=>{var r;P.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!Re(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=Le(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),Ri=l("$ZodCheckLengthEquals",(e,t)=>{var r;P.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!Re(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 a=Le(o),s=i>t.length;n.issues.push({origin:a,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),_e=l("$ZodCheckStringFormat",(e,t)=>{var r,n;P.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=()=>{})}),xi=l("$ZodCheckRegex",(e,t)=>{_e.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})}}),Li=l("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Ai),_e.init(e,t)}),Di=l("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Ii),_e.init(e,t)}),ji=l("$ZodCheckIncludes",(e,t)=>{P.init(e,t);const r=pe(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})}}),Ui=l("$ZodCheckStartsWith",(e,t)=>{P.init(e,t);const r=new RegExp(`^${pe(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})}}),Mi=l("$ZodCheckEndsWith",(e,t)=>{P.init(e,t);const r=new RegExp(`.*${pe(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})}}),Fi=l("$ZodCheckOverwrite",(e,t)=>{P.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}}),qi=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(`
48
+ `);o=m.pop()??"";for(const h of m)if(ct(h,t))return}if(o.trim()&&ct(o,t))return}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;t.onError?.(c instanceof Error?c:new Error(String(c)))}finally{s||r.releaseLock()}t.onDone?.()}var dt=3,wn=(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():""},Ae=(e,t)=>e?e.split(/[•,;:/()]|(?:\sve\s)|(?:\sand\s)|(?:\sile\s)|(?:\sfor\s)|(?:\swith\s)/i).map(r=>wn(r,t)).filter(Boolean):[];function kn(e){const t=(e.display_keywords??[]).flatMap(o=>Ae(o,{stripLeadingStopWords:!0})),r=t.filter((o,i)=>t.indexOf(o)===i);if(r.length>0)return r.slice(0,dt);const n=[...Ae(e.chosen_attribute,{stripLeadingStopWords:!0}),...Ae(e.short_name)];return n.filter((o,i)=>n.indexOf(o)===i).slice(0,dt)}function Sn(e){return kn(e).join(" • ")}var Cn=["beauty_consulting","watch_expert"];function En(e){return typeof e=="string"&&Cn.includes(e)}function lt(e){if(typeof e.type!="string")return null;if(zn(e))return e;const t=e;switch(t.type){case"outputText":return Tn(t);case"suggestedActions":return $n(t);case"productList":return An(t);case"productDetails":return In(t);case"productDetailsSimilars":return Pn(t);case"comparisonTable":return On(t);case"context":return xn(t);case"chatStreamEnd":return Ln();case"loading":return Dn(t);case"panelLoading":return jn(t);case"similarLoading":return Un(t);case"redirect":return Mn(t);case"error":return Fn(t);case"dummy":return qn(t);case"launcherAction":return Gn(t);case"text":return Ie(t);case"productItem":return Jn(t);case"text_image":return ft(t);case"quick_qna":return pt(t);case"reviewHighlights":return Bn(t);case"aiProductSuggestions":return Hn(t);case"aiProductGroupings":return Kn(t);case"aiSuggestedSearches":return Yn(t);case"prosAndCons":return Vn(t);case"getGroundingReview":return Xn(t);case"voice":return eo(t);case"visitorDataResponse":return Wn(t);case"productListPreview":return Qn();case"groupList":return to(t);case"formGetInfo":case"formTestDrive":case"formServiceRequest":case"launchFormPage":return ro(t);case"launcherContent":return oo(t);case"handoff":return no(t);case"uiSpec":return mo(t);default:return null}}function zn(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=N(e.spec);return n?typeof n.root=="string"&&N(n.elements)!==null:!1}case"action":{const r=N(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 Tn(e){const t=b(e.payload.text,e.payload.plain_text)??"",r=b(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.product_mentions;Array.isArray(o)&&o.length>0&&(n.productMentions=o.filter(c=>typeof c=="object"&&c!==null&&typeof c.sku=="string"&&typeof c.short_name=="string"));const i=e.payload.sku_to_product_item;i&&typeof i=="object"&&!Array.isArray(i)&&(n.skuToProductItem=i);const a=e.payload.conversation_mode;typeof a=="string"&&a&&(n.conversationMode=a);const s=e.payload.render_hint;return typeof s=="string"&&s&&(n.renderHint=s),e.payload.kvkk===!0&&(n.kvkk=!0),n}function $n(e){return gt((e.payload.actions??[]).map(t=>{const r=b(t.title)??"",n=x(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(de),"chat")}function An(e){const t=(Array.isArray(e.payload.style_variations)?e.payload.style_variations:[]).map(a=>{const s=b(a.style_label);if(!s)return null;const c=b(a.style_mood),u=b(a.image_url??void 0),f=(Array.isArray(a.product_list)?a.product_list:[]).map(p=>{const m=N(p);return m?ht(N(m.product_detail)??N(m.product)??m):null}).filter(de),g=Array.isArray(a.recommendation_groups)?a.recommendation_groups.map(p=>({label:b(p.label)??"",reason:b(p.reason)??"",skus:Array.isArray(p.skus)?p.skus.filter(m=>typeof m=="string"&&m.trim().length>0):[]})):[];return{style_label:s,style_mood:c??"",...u?{image_url:u}:{},...typeof a.status=="string"?{status:a.status}:{},product_list:f,recommendation_groups:g}}).filter(de),r=e.payload.product_list??[],n=En(e.payload.source)&&t.length>0?t[0].product_list:null,o=n?io(n,"chat"):mt(r,"chat");o.panelHint="panel";const i=o.spec.elements[o.spec.root];if(i){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),t.length>0&&(a.styleVariations=t),e.payload.replace_panel===!0&&(a.replacePanel=!0),Object.keys(a).length>0&&(i.props={...i.props,...a})}return o}function In(e){const t=e.payload.productDetails;if(!t)return so("chat");const r=U(t);return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:{...t,...r}}}}},panelHint:"panel"}}function Pn(e){const t=mt(e.payload.similarProducts??[],"chat"),r=t.spec.elements[t.spec.root];return r&&(r.props={...r.props,similarsAppend:!0}),{...t,panelHint:"panel"}}function On(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,a=[];for(const y of t){const S=U(y);a.push(S)}const s=Nn(o,a,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?a.find(y=>y.sku===c)??a[0]:a[0],f=[];if(Array.isArray(n?.key_differences))for(const y of n.key_differences)typeof y=="string"&&f.push(y);const g=lo(n?.special_considerations),p=n?.recommended_choice,m=n?.winner_hits,h={};for(const y of a){const S=y.sku;S&&(h[S]={title:y.name??S,type:"launchSingleProduct",payload:{sku:S}})}const d={products:a,attributes:s,highlights:f,productActions:h};return u&&(d.recommended=u),g.length>0&&(d.specialCases=g),p&&(d.recommendedText=p),m&&(d.winnerHits=m),typeof n?.key_differences=="string"&&(d.keyDifferencesHtml=n.key_differences),n?.special_considerations&&(d.specialConsiderations=n.special_considerations),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ComparisonTable",props:d}}},panelHint:"panel"}}function Nn(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 g=r.criteria_view??r.criteria_view_short??{},p=r.compared_field_names??Object.keys(e),m=[];for(const h of p){const d=e[h];if(!d||!Array.isArray(d))continue;const y=g[h]??h;m.push({label:y,values:d.map(S=>typeof S=="string"?S:String(S??""))})}return m}const a=e,s=t.map(g=>String(g.sku??"")).filter(g=>g.length>0),c=r.criteria_view??r.criteria_view_short??{},u=(n&&n.length>0?n:r.compared_field_names&&r.compared_field_names.length>0?r.compared_field_names:Zn(a)).filter(g=>g!=="name"&&g!=="name_short"&&!g.endsWith("_short")),f=[];for(const g of u){const p=s.map(h=>{const d=a[h];if(!d||typeof d!="object")return"";const y=d[`${g}_short`],S=d[g];return Rn(y??S)});if(p.every(h=>h.length===0))continue;const m=c[g]??g;f.push({label:m,values:p})}return f}function Zn(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 Rn(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function xn(e){return{type:"metadata",sessionId:"",model:"",meta:{panel:e.payload.panel,messages:e.payload.messages,message_id:e.payload.message_id}}}function Ln(){return{type:"done"}}function Dn(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 jn(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,panelLoading:!0,panelPendingType:e.payload?.pending_type,loadingText:e.payload?.text}}}function Un(e){return{type:"metadata",sessionId:"",model:"",meta:{loading:!0,similarPanelLoading:!0,panelPendingType:e.payload?.pending_type,loadingText:e.payload?.text}}}function Mn(e){const t=b(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:b(e.payload.to)}}}function Fn(e){return{type:"error",code:"BACKEND_ERROR",message:b(e.payload?.text,e.payload?.message,e.payload?.error)??"Backend returned an error"}}function qn(e){return{type:"metadata",sessionId:"",model:"",meta:{noop:!0}}}function Gn(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,a=typeof t.theme=="string"?t.theme:void 0;return i!==void 0&&(o.type=i),a!==void 0&&(o.theme=a),pt({type:"quick_qna",payload:o})}const r=N(t.action);if(r){const o={action:r},i=typeof t.text=="string"?t.text:void 0,a=typeof t.image_url=="string"?t.image_url:void 0,s=typeof t.theme=="string"?t.theme:void 0;return i!==void 0&&(o.text=i),a!==void 0&&(o.image_url=a),s!==void 0&&(o.theme=s),ft({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,a=typeof t.theme=="string"?t.theme:void 0,s=N(t.payload)??void 0;return i!==void 0&&(o.type=i),s!==void 0&&(o.payload=s),a!==void 0&&(o.theme=a),Ie({type:"text",payload:o})}return{type:"metadata",sessionId:"",model:"",meta:{launcherAction:t}}}function Ie(e){const t={text:b(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 Jn(e){return ao(e.payload,"qna")}function ft(e){const t=b(e.payload.text)??"",r=x(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),Ie({type:"text",payload:n})}function pt(e){return gt((e.payload.action_list??[]).map(t=>{const r=b(t.title)??"",n=x(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(de),"qna")}function Bn(e){const t={reviews:(e.payload.reviews??[]).map(r=>{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})};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 Vn(e){const t={};return Array.isArray(e.payload.pros)&&(t.pros=e.payload.pros),Array.isArray(e.payload.cons)&&(t.cons=e.payload.cons),typeof e.payload.product_name=="string"&&(t.productName=e.payload.product_name),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"ProsAndCons",props:t}}}}}function Wn(e){return{type:"metadata",sessionId:"",model:"",meta:{visitorDataResponse:e.payload}}}function Hn(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=co(o);if(!i)continue;const a={product:i},s=x(o.requestDetails,i.name);s&&(a.action=s),typeof o.role=="string"&&(a.role=o.role),typeof o.reason=="string"&&(a.reason=o.reason),typeof o.review_highlight=="string"&&(a.reviewHighlight=o.review_highlight),Array.isArray(o.labels)&&(a.labels=o.labels),typeof o.expert_quality_score=="number"&&(a.expertQualityScore=o.expert_quality_score),r.push(a)}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 Kn(e){const t=e.payload.product_groupings??[],r=[];for(let n=0;n<t.length;n++){const o=t[n];if(!o)continue;const i=b(o.name)??"",a=o.sku&&o.sku.length>0?{type:"findSimilar",payload:{sku:o.sku}}:void 0,s=x(o.requestDetails??a,i);if(!s)continue;const c={name:i,action:s};if(Array.isArray(o.labels)){const u=o.labels.filter(f=>typeof f=="string");u.length>0&&(c.labels=u)}typeof o.image=="string"&&(c.image=o.image),r.push(c)}return r.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:r}}}}}}function Yn(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=b(o.short_name,o.chosen_attribute,o.detailed_user_message)??`Search ${n+1}`,a={},s=b(o.detailed_user_message);s&&(a.text=s);const c=N(N(o.requestDetails)?.payload),u=c?.group_skus;o.group_skus&&Array.isArray(o.group_skus)?a.group_skus=o.group_skus:Array.isArray(u)&&(a.group_skus=u.filter(S=>typeof S=="string"));const f=b(o.sku,o.representative_product_sku,c?.sku);f&&(a.sku=f),a.is_suggested_text=1;const g={type:"inputText",payload:a},p=x(o.requestDetails,i),m=p?.type==="findSimilar"&&typeof a.text=="string"?x(g,i):p??x(g,i);if(!m)continue;const h={shortName:i,action:m},d=b(o.detailed_user_message);d&&d!==i&&(h.detailedMessage=d);const y=Sn(o);y&&y!==i&&y!==(d??"")&&(h.whyDifferent=y),typeof o.image=="string"&&(h.image=o.image),r.push(h)}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 Xn(e){const t=e.payload,r=x(t.requestDetails??t.request_details,b(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 Qn(){return{type:"metadata",sessionId:"",model:"",meta:{analyzeAnimation:!0}}}function eo(e){return{type:"metadata",sessionId:"",model:"",meta:{voice:e.payload}}}function to(e){const t=e.payload.group_list??[],r=[];for(const o of t){const i=o.group_name??"",a=(o.product_list??[]).map(U);r.push({groupName:i,products:a})}const n=[];for(const o of e.payload.filter_tags??[]){const i=o.title??"";if(!i)continue;const a=x(o.requestDetails,i),s={title:i};a&&(s.action=a),n.push(s)}return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"CategoriesContainer",props:{groups:r,filterTags:n}}}},panelHint:"panel"}}function ro(e){return{type:"metadata",sessionId:"",model:"",meta:{formType:e.type,formPayload:e.payload??{}}}}function no(e){const t={};return typeof e.payload?.summary=="string"&&(t.summary=e.payload.summary),Array.isArray(e.payload?.products_discussed)&&(t.products_discussed=e.payload.products_discussed),typeof e.payload?.user_sentiment=="string"&&(t.user_sentiment=e.payload.user_sentiment),{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:"HandoffNotice",props:t}}}}}function oo(e){return{type:"metadata",sessionId:"",model:"",meta:{launcherContent:e.payload??{}}}}function gt(e,t){const r={},n=[];for(let o=0;o<e.length;o++){const i=e[o];if(!i)continue;const a=`action-${o}`;n.push(a);const s={label:i.label,action:i.action};i.icon!==void 0&&(s.icon=i.icon),i.image!==void 0&&(s.image=i.image),i.description!==void 0&&(s.description=i.description),r[a]={type:"ActionButton",props:s}}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 mt(e,t){const r={},n=[];for(let o=0;o<e.length;o++){const i=e[o];if(!i)continue;const a=U(i),s=`product-${o}`;n.push(s);const c={product:a,index:o};a.sku&&(c.action={title:a.name,type:"launchSingleProduct",payload:{sku:a.sku}}),r[s]={type:"ProductCard",props:c}}return r.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:r}}}function io(e,t){const r={},n=[];for(let o=0;o<e.length;o++){const i=e[o];if(!i)continue;const a=`product-${o}`;n.push(a);const s={product:i,index:o},c=i.sku;c&&(s.action={title:i.name??"",type:"launchSingleProduct",payload:{sku:c}}),r[a]={type:"ProductCard",props:s}}return r.root={type:"ProductGrid",props:{layout:"grid"},children:n},{type:"ui_spec",widget:t,spec:{root:"root",elements:r}}}function ao(e,t){return{type:"ui_spec",widget:t,spec:{root:"root",elements:{root:{type:"ProductCard",props:{product:U(e),index:0}}}}}}function so(e){return{type:"ui_spec",widget:e,spec:{root:"root",elements:{root:{type:"ActionButtons",props:{buttons:[]},children:[]}}}}}function co(e){const t=b(e.sku),r=b(e.short_name),n={...N(e.product_item)??e},o=b(e.discount_reason,e.discountReason);return o&&!b(n.discount_reason,n.discountReason)&&(n.discount_reason=o),ht(n,t,r)}function ht(e,t,r){const n=b(e.sku,t),o=b(e.name,r);if(!n||!o)return null;const i={sku:n,name:o},a=b(e.brand);a&&(i.brand=a);const s=b(e.url);s&&(i.url=s);const c=uo(e.images);if(c.length>0)i.images=c;else{const d=b(e.image,e.image_url,e.imageUrl);d&&(i.images=[d])}const u=ne(e.price_discounted);u!==void 0&&(i.price_discounted=u);const f=ne(e.price);f!==void 0&&(i.price=f);const g=ne(e.rating);g!==void 0&&(i.rating=g);const p=ne(e.review_count)??ne(e.reviewCount);p!==void 0&&(i.review_count=p);const m=b(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 h=b(e.discount_reason,e.discountReason);return h&&(i.discount_reason=h),U(i)}function x(e,t){const r=N(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 N(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function b(...e){for(const t of e)if(typeof t=="string"){const r=t.trim();if(r.length>0)return r}}function uo(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function lo(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 ne(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){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 de(e){return e!=null}var fo=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","facet_tags","short_name","category_ids","category_names","variants","facet_hits","promotions"]);function U(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=b(e.brand),a=b(e.name)??e.sku,s=i&&!a.toLowerCase().startsWith(i.toLowerCase())?`${i} ${a}`:a,c={sku:e.sku,name:s,url:b(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)),n!=null&&n>0&&(c.originalPrice=String(n)),o!==void 0&&(c.discountPercent=o),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.short_name!==void 0&&(c.shortName=e.short_name);const f=e,g={};let p=!1;for(const m of Object.keys(f))fo.has(m)||(g[m]=f[m],p=!0);return p&&(c.extras=g),c}function po(e){return e.results.map(U)}function go(e){return e.product_groupings.map(t=>{const r={name:t.name,products:(t.group_products??[]).map(U)};return t.highlight!==void 0&&(r.highlight=t.highlight),r})}function mo(e){const t=e.payload.type,{type:r,...n}=e.payload;return{type:"ui_spec",widget:"chat",spec:{root:"root",elements:{root:{type:t,props:n}}}}}function _t(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 yt(e){const t=e.headers.get("Content-Type")??"";return t.includes("application/x-ndjson")||t.includes("text/event-stream")}async function ho(e,t){const r=[],n={onEvent:o=>{const i=lt(o);!i||i.type!=="ui_spec"||r.push(..._t(i.spec.elements))}};return t!==void 0&&(n.signal=t),await ut(e,n),r}async function _o(e,t,r){const n=at("similar_products",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};r!==void 0&&(o.signal=r);const i=await fetch(n,o);if(!i.ok)throw new Error(`HTTP ${i.status}: ${i.statusText}`);if(yt(i))return ho(i,r);const a=await i.text();if(!a)throw new Error("Empty response body from similar_products endpoint");try{return po(JSON.parse(a))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function yo(e,t){const r=[];let n=null;const o={onEvent:i=>{const a=lt(i);if(a){if(a.type==="metadata"&&a.meta){const s=a.meta.group_name;if(typeof s=="string"){n={name:s,products:[]};const c=a.meta.highlight;typeof c=="string"&&(n.highlight=c),r.push(n)}}a.type==="ui_spec"&&n&&n.products.push(..._t(a.spec.elements))}}};return t!==void 0&&(o.signal=t),await ut(e,o),r}async function vo(e,t,r){const n=at("product_groupings",t),o={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};r!==void 0&&(o.signal=r);const i=await fetch(n,o);if(!i.ok)throw new Error(`HTTP ${i.status}: ${i.statusText}`);if(yt(i))return yo(i,r);const a=await i.text();if(!a)return[];try{return go(JSON.parse(a))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}var bo={currencyCode:"TRY",currencySymbol:"TL",currencyPosition:"suffix",thousandsSeparator:".",decimalSeparator:",",alwaysShowDecimals:!1};function vt(e,t){const r=Number(e);if(!Number.isFinite(r)||r<0)return e;const n={...bo,...t},o=Math.abs(r%1)<Number.EPSILON,i=n.alwaysShowDecimals||!o?r.toFixed(2):r.toFixed(0),a=i.indexOf("."),s=a===-1?i:i.slice(0,a),c=a===-1?void 0:i.slice(a+1),u=s.replace(/\B(?=(\d{3})+(?!\d))/g,n.thousandsSeparator);let f;return c!==void 0?f=`${u}${n.decimalSeparator}${c}`:f=u,n.currencySymbol?n.currencyPosition==="prefix"?`${n.currencySymbol}${f}`:`${f} ${n.currencySymbol}`:f}function wo(e){return Number.isFinite(e)?Math.max(0,Math.min(5,e)):0}function ko(e){return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function So(e){const t=wo(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 a=document.createElement("span");a.className="gengage-star-half",a.textContent="☆";const s=document.createElement("span");s.textContent="★",a.appendChild(s),i.appendChild(a)}return o>0&&i.appendChild(document.createTextNode("☆".repeat(o))),i}function Co(e){e.addEventListener("error",()=>{e.style.display="none"},{once:!0})}function bt(e){const{product:t,index:r,discountType:n,onClick:o,onAddToCart:i,renderCard:a}=e,s=e.i18n,c=e.pricing;if(e.renderCardElement){const d=e.renderCardElement(t,r);if(d)return d}if(a){const d=document.createElement("div");return d.className="gengage-simrel-card gengage-simrel-card--custom gds-card gds-product-card gds-card-interactive",d.dataset.gengagePart="simrel-product-card",d.innerHTML=Gr(a(t,r)),d.addEventListener("click",y=>{y.target.closest(".gengage-simrel-atc")||y.target.closest(".gengage-chat-product-card-atc")||o(t)}),d}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 f=document.createElement("div");if(f.className="gengage-simrel-card-image gengage-chat-product-card-img-wrapper",f.dataset.gengagePart="simrel-product-card-image",t.imageUrl&&qr(t.imageUrl)){const d=document.createElement("img");d.className="gengage-chat-product-card-img",d.src=t.imageUrl,d.alt=t.name,d.loading="lazy",Co(d),f.appendChild(d)}if(n==="badge"&&t.discountPercent&&t.discountPercent>0){const d=document.createElement("span");d.className="gengage-simrel-badge gengage-chat-product-card-discount-badge",d.textContent=`%${ko(t.discountPercent)}`,f.appendChild(d)}u.appendChild(f);const g=document.createElement("div");if(g.className="gengage-simrel-card-info gengage-chat-product-card-body",g.dataset.gengagePart="simrel-product-card-body",t.brand){const d=document.createElement("div");d.className="gengage-simrel-card-brand gengage-chat-product-card-brand",d.textContent=t.brand,g.appendChild(d)}const p=document.createElement("div");if(p.className="gengage-simrel-card-name gengage-chat-product-card-name",p.textContent=t.name,p.title=t.name,g.appendChild(p),t.rating!=null&&t.rating>0){const d=document.createElement("div");if(d.className="gengage-simrel-card-rating gengage-chat-product-card-rating",d.appendChild(So(t.rating)),t.reviewCount!=null){const y=document.createElement("span");y.className="gengage-simrel-card-review-count gengage-chat-product-card-review-count",y.textContent=` (${t.reviewCount})`,d.appendChild(y)}g.appendChild(d)}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)){const d=document.createElement("span");d.className="gengage-simrel-card-price-original gengage-chat-product-card-original-price",d.textContent=vt(t.originalPrice,c),m.appendChild(d)}if(t.price&&parseFloat(t.price)>0){const d=document.createElement("span");d.className="gengage-simrel-card-price-current gengage-chat-product-card-price-current",d.textContent=vt(t.price,c),m.appendChild(d)}g.appendChild(m),u.appendChild(g);const h=document.createElement("button");if(h.className="gengage-simrel-card-cta gengage-chat-product-card-cta gds-btn gds-btn-secondary",h.type="button",h.dataset.gengagePart="simrel-product-card-cta",h.textContent=s?.ctaLabel??"View",h.addEventListener("click",d=>{d.preventDefault(),d.stopPropagation(),o(t)}),u.appendChild(h),t.inStock===!1){const d=document.createElement("div");d.className="gengage-simrel-card-oos",d.textContent=s?.outOfStockLabel??"Out of Stock",u.appendChild(d)}else if(t.cartCode){const d=document.createElement("button");d.className="gengage-simrel-atc gengage-simrel-atc-button gds-btn gds-btn-secondary",d.type="button",d.textContent=s?.addToCartButton??"Add to Cart",d.addEventListener("click",y=>{y.preventDefault(),y.stopPropagation(),i({sku:t.sku,quantity:1,cartCode:t.cartCode})}),u.appendChild(d)}return u.addEventListener("click",d=>{d.target.closest(".gengage-simrel-atc")||d.target.closest(".gengage-chat-product-card-atc")||d.target.closest(".gengage-chat-product-card-cta")||o(t)}),u}function wt(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=bt(n);t.appendChild(o)}return e.products.length===0&&(t.style.display="none",t.dataset.empty="true"),t}var Eo=0;function zo(e){const t=Eo++,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=[],a=d=>{const y={products:d.products,onClick:e.onClick,onAddToCart:e.onAddToCart};return e.i18n!==void 0&&(y.i18n=e.i18n),e.discountType!==void 0&&(y.discountType=e.discountType),e.renderCard!==void 0&&(y.renderCard=e.renderCard),e.renderCardElement!==void 0&&(y.renderCardElement=e.renderCardElement),e.columns!==void 0&&(y.columns=e.columns),y},s=d=>{for(let v=0;v<o.length;v++){const w=v===d;o[v].classList.toggle("gengage-simrel-tab--active",w),o[v].setAttribute("aria-selected",String(w)),o[v].tabIndex=w?0:-1}const y=e.groups[d],S=i[d];S.innerHTML="";const ee=wt(a(y));S.appendChild(ee);for(let v=0;v<i.length;v++){const w=v===d;i[v].style.display=w?"":"none",i[v].tabIndex=w?0:-1}};for(let d=0;d<e.groups.length;d++){const y=e.groups[d],S=`gengage-simrel-tab-${t}-${d}`,ee=`gengage-simrel-panel-${t}-${d}`,v=document.createElement("button");v.className="gengage-simrel-tab gds-tab",v.type="button",v.dataset.gengagePart="simrel-tab",v.id=S,v.textContent=y.name,v.setAttribute("role","tab"),v.setAttribute("aria-controls",ee),v.setAttribute("aria-selected",String(d===0)),v.tabIndex=d===0?0:-1,d===0&&v.classList.add("gengage-simrel-tab--active"),v.addEventListener("click",()=>s(d)),v.addEventListener("keydown",$=>{let D=-1;$.key==="ArrowRight"||$.key==="ArrowDown"?D=(d+1)%e.groups.length:$.key==="ArrowLeft"||$.key==="ArrowUp"?D=(d-1+e.groups.length)%e.groups.length:$.key==="Home"?D=0:$.key==="End"&&(D=e.groups.length-1),D>=0&&($.preventDefault(),s(D),o[D].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=ee,w.setAttribute("role","tabpanel"),w.setAttribute("aria-labelledby",S),w.tabIndex=d===0?0:-1,d!==0&&(w.style.display="none"),i.push(w)}const c=document.createElement("button");c.type="button",c.className="gengage-simrel-tabs-arrow gengage-simrel-tabs-arrow--left",c.setAttribute("aria-label",e.i18n?.scrollTabsLeft??"Scroll tabs left"),c.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 u=document.createElement("button");u.type="button",u.className="gengage-simrel-tabs-arrow gengage-simrel-tabs-arrow--right",u.setAttribute("aria-label",e.i18n?.scrollTabsRight??"Scroll tabs right"),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="9 18 15 12 9 6"/></svg>';const f=200;c.addEventListener("click",()=>{n.scrollBy({left:-f,behavior:"smooth"})}),u.addEventListener("click",()=>{n.scrollBy({left:f,behavior:"smooth"})});const g=()=>{const d=n.scrollLeft<=4,y=n.scrollLeft+n.clientWidth>=n.scrollWidth-4;c.style.display=d?"none":"",u.style.display=y?"none":"",n.classList.toggle("gengage-simrel-tabs--peek-right",!y),n.classList.toggle("gengage-simrel-tabs--peek-left",!d)};n.addEventListener("scroll",g,{passive:!0}),typeof ResizeObserver<"u"&&new ResizeObserver(g).observe(n),c.style.display="none",u.style.display="none",requestAnimationFrame(g);const p=document.createElement("div");p.className="gengage-simrel-tabs-wrapper",p.appendChild(c),p.appendChild(n),p.appendChild(u),r.appendChild(p);const m=i[0],h=wt(a(e.groups[0]));m.appendChild(h);for(const d of i)r.appendChild(d);return r}function kt(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 a=t.discountPercent;typeof a=="number"&&(r.discountPercent=a);const s=t.brand;typeof s=="string"&&(r.brand=s);const c=t.rating;typeof c=="number"&&(r.rating=c);const u=t.reviewCount;typeof u=="number"&&(r.reviewCount=u);const f=t.cartCode;typeof f=="string"&&(r.cartCode=f);const g=t.inStock;typeof g=="boolean"&&(r.inStock=g);const p=t.extras;return p!=null&&typeof p=="object"&&(r.extras=p),r}function To(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 St={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 a of e.children??[]){const s=t(a);s&&n.appendChild(s)}if(n.children.length===0){const a=document.createElement("div");a.className="gengage-simrel-empty",a.textContent=r.i18n.emptyStateMessage,n.appendChild(a)}return n},ProductCard:({element:e,context:t})=>{const r=kt(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,a=i==="strike-through"||i==="badge"?i:t.discountType,s={product:r,index:o,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n};return a!==void 0&&(s.discountType=a),t.renderCard!==void 0&&(s.renderCard=t.renderCard),t.renderCardElement!==void 0&&(s.renderCardElement=t.renderCardElement),t.pricing!==void 0&&(s.pricing=t.pricing),bt(s)},GroupTabs:({element:e,context:t})=>{const r=e.props?.groups;if(!Array.isArray(r))return null;const n=[];for(const a of r){if(!a||typeof a!="object")continue;const s=a;if(typeof s.name!="string")continue;const c=[];if(Array.isArray(s.products))for(const f of s.products){const g=kt(f);g&&c.push(g)}const u={name:s.name,products:c};typeof s.highlight=="string"&&(u.highlight=s.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),zo(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",a=>{a.preventDefault(),a.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,a=i.label,s=To(i.action);if(typeof a!="string"||!s)continue;const c=document.createElement("button");c.className="gengage-simrel-quick-action",c.type="button",c.textContent=a,c.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation(),t.onAction?.(s)}),r.appendChild(c)}return r}},Pe=({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 Ct(){return{...St}}function Et(e,t,r=St,n=Pe){return $r({spec:e,context:t,registry:r,containerClassName:"gengage-simrel-uispec",unknownRenderer:n})}var zt={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"},$o={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 Ao(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function Io(e){return Ao(e)==="en"?$o:zt}function Po(){return typeof window<"u"&&Array.isArray(window.dataLayer)}function le(e,t){const r={event:e,...t};Po()&&window.dataLayer.push(r)}function Oo(e){le("gengage-on-init",{gengage_widget:e})}function Tt(e){le("gengage-show",{gengage_widget:e})}function No(e,t){le("gengage-product-detail",{gengage_sku:e,gengage_product_name:t})}function Zo(e,t){le("gengage-cart-add",{gengage_sku:e,gengage_quantity:t})}var gu=Object.freeze({status:"aborted"});function l(e,t,r){function n(s,c){if(s._zod||Object.defineProperty(s,"_zod",{value:{def:c,constr:a,traits:new Set},enumerable:!1}),s._zod.traits.has(e))return;s._zod.traits.add(e),t(s,c);const u=a.prototype,f=Object.keys(u);for(let g=0;g<f.length;g++){const p=f[g];p in s||(s[p]=u[p].bind(s))}}const o=r?.Parent??Object;class i extends o{}Object.defineProperty(i,"name",{value:e});function a(s){var c;const u=r?.Parent?new i:this;n(u,s),(c=u._zod).deferred??(c.deferred=[]);for(const f of u._zod.deferred)f();return u}return Object.defineProperty(a,"init",{value:n}),Object.defineProperty(a,Symbol.hasInstance,{value:s=>r?.Parent&&s instanceof r.Parent?!0:s?._zod?.traits?.has(e)}),Object.defineProperty(a,"name",{value:e}),a}var Y=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},$t=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}},Oe={};function V(e){return e&&Object.assign(Oe,e),Oe}function At(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 Ne(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}throw new Error("cached value already set")}}}function Re(e){return e==null}function xe(e){const t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function Ro(e,t){const r=(e.toString().split(".")[1]||"").length,n=t.toString();let o=(n.split(".")[1]||"").length;if(o===0&&/\d?e-\d?/.test(n)){const a=n.match(/\d?e-(\d?)/);a?.[1]&&(o=Number.parseInt(a[1]))}const i=r>o?r:o;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}var It=Symbol("evaluating");function k(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==It)return n===void 0&&(n=It,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function W(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function M(...e){const t={};for(const r of e)Object.assign(t,Object.getOwnPropertyDescriptors(r));return Object.defineProperties({},t)}function Pt(e){return JSON.stringify(e)}function xo(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Ot="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Lo=Ze(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch{return!1}});function oe(e){if(fe(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const r=t.prototype;return!(fe(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function Nt(e){return oe(e)?{...e}:Array.isArray(e)?[...e]:e}var Do=new Set(["string","number","symbol"]);function pe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function F(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 jo(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var Uo={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 Mo(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 F(e,M(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 W(this,"shape",o),o},checks:[]}))}function Fo(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 F(e,M(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 W(this,"shape",o),o},checks:[]}))}function qo(e,t){if(!oe(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 F(e,M(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return W(this,"shape",n),n}}))}function Go(e,t){if(!oe(t))throw new Error("Invalid input to safeExtend: expected a plain object");return F(e,M(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t};return W(this,"shape",r),r}}))}function Jo(e,t){return F(e,M(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t._zod.def.shape};return W(this,"shape",r),r},get catchall(){return t._zod.def.catchall},checks:[]}))}function Bo(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 F(t,M(t._zod.def,{get shape(){const o=t._zod.def.shape,i={...o};if(r)for(const a in r){if(!(a in o))throw new Error(`Unrecognized key: "${a}"`);r[a]&&(i[a]=e?new e({type:"optional",innerType:o[a]}):o[a])}else for(const a in o)i[a]=e?new e({type:"optional",innerType:o[a]}):o[a];return W(this,"shape",i),i},checks:[]}))}function Vo(e,t,r){return F(t,M(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 W(this,"shape",o),o}}))}function X(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 Zt(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function ge(e){return typeof e=="string"?e:e?.message}function H(e,t,r){const n={...e,path:e.path??[]};return e.message||(n.message=ge(e.inst?._zod.def?.error?.(e))??ge(t?.error?.(e))??ge(r.customError?.(e))??ge(r.localeError?.(e))??"Invalid input"),delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function Le(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function ie(...e){const[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}var Rt=(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,Ne,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},xt=l("$ZodError",Rt),Lt=l("$ZodError",Rt,{Parent:Error});function Wo(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 Ho(e,t=r=>r.message){const r={_errors:[]},n=o=>{for(const i of o.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(a=>n({issues:a}));else if(i.code==="invalid_key")n({issues:i.issues});else if(i.code==="invalid_element")n({issues:i.issues});else if(i.path.length===0)r._errors.push(t(i));else{let a=r,s=0;for(;s<i.path.length;){const c=i.path[s];s!==i.path.length-1?a[c]=a[c]||{_errors:[]}:(a[c]=a[c]||{_errors:[]},a[c]._errors.push(t(i))),a=a[c],s++}}};return n(e),r}var De=e=>(t,r,n,o)=>{const i=n?Object.assign(n,{async:!1}):{async:!1},a=t._zod.run({value:r,issues:[]},i);if(a instanceof Promise)throw new Y;if(a.issues.length){const s=new(o?.Err??e)(a.issues.map(c=>H(c,i,V())));throw Ot(s,o?.callee),s}return a.value},je=e=>async(t,r,n,o)=>{const i=n?Object.assign(n,{async:!0}):{async:!0};let a=t._zod.run({value:r,issues:[]},i);if(a instanceof Promise&&(a=await a),a.issues.length){const s=new(o?.Err??e)(a.issues.map(c=>H(c,i,V())));throw Ot(s,o?.callee),s}return a.value},me=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 Y;return i.issues.length?{success:!1,error:new(e??xt)(i.issues.map(a=>H(a,o,V())))}:{success:!0,data:i.value}},Ko=me(Lt),he=e=>async(t,r,n)=>{const o=n?Object.assign(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(a=>H(a,o,V())))}:{success:!0,data:i.value}},Yo=he(Lt),Xo=e=>(t,r,n)=>{const o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return De(e)(t,r,o)},Qo=e=>(t,r,n)=>De(e)(t,r,n),ei=e=>async(t,r,n)=>{const o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return je(e)(t,r,o)},ti=e=>async(t,r,n)=>je(e)(t,r,n),ri=e=>(t,r,n)=>{const o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return me(e)(t,r,o)},ni=e=>(t,r,n)=>me(e)(t,r,n),oi=e=>async(t,r,n)=>{const o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return he(e)(t,r,o)},ii=e=>async(t,r,n)=>he(e)(t,r,n),ai=/^[cC][^\s-]{8,}$/,si=/^[0-9a-z]+$/,ci=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,ui=/^[0-9a-vA-V]{20}$/,di=/^[A-Za-z0-9]{27}$/,li=/^[a-zA-Z0-9_-]{21}$/,fi=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,pi=/^([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})$/,Dt=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)$/,gi=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,mi="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function hi(){return new RegExp(mi,"u")}var _i=/^(?:(?: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])$/,yi=/^(([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}|:))$/,vi=/^((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])$/,bi=/^(([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])$/,wi=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,jt=/^[A-Za-z0-9_-]*$/,ki=/^\+[1-9]\d{6,14}$/,Ut="(?:(?:\\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])))",Si=new RegExp(`^${Ut}$`);function Mt(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 Ci(e){return new RegExp(`^${Mt(e)}$`)}function Ei(e){const t=Mt({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(`^${Ut}T(?:${n})$`)}var zi=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Ti=/^-?\d+$/,$i=/^-?\d+(?:\.\d+)?$/,Ai=/^[^A-Z]*$/,Ii=/^[^a-z]*$/,P=l("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),Ft={number:"number",bigint:"bigint",object:"date"},qt=l("$ZodCheckLessThan",(e,t)=>{P.init(e,t);const r=Ft[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})}}),Gt=l("$ZodCheckGreaterThan",(e,t)=>{P.init(e,t);const r=Ft[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})}}),Pi=l("$ZodCheckMultipleOf",(e,t)=>{P.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):Ro(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})}}),Oi=l("$ZodCheckNumberFormat",(e,t)=>{P.init(e,t),t.format=t.format||"float64";const r=t.format?.includes("int"),n=r?"int":"number",[o,i]=Uo[t.format];e._zod.onattach.push(a=>{const s=a._zod.bag;s.format=t.format,s.minimum=o,s.maximum=i,r&&(s.pattern=Ti)}),e._zod.check=a=>{const s=a.value;if(r){if(!Number.isInteger(s)){a.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?a.issues.push({input:s,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}):a.issues.push({input:s,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}}s<o&&a.issues.push({origin:"number",input:s,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),s>i&&a.issues.push({origin:"number",input:s,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),Ni=l("$ZodCheckMaxLength",(e,t)=>{var r;P.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!Re(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=Le(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),Zi=l("$ZodCheckMinLength",(e,t)=>{var r;P.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!Re(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=Le(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),Ri=l("$ZodCheckLengthEquals",(e,t)=>{var r;P.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!Re(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 a=Le(o),s=i>t.length;n.issues.push({origin:a,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),_e=l("$ZodCheckStringFormat",(e,t)=>{var r,n;P.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=()=>{})}),xi=l("$ZodCheckRegex",(e,t)=>{_e.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})}}),Li=l("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Ai),_e.init(e,t)}),Di=l("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Ii),_e.init(e,t)}),ji=l("$ZodCheckIncludes",(e,t)=>{P.init(e,t);const r=pe(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})}}),Ui=l("$ZodCheckStartsWith",(e,t)=>{P.init(e,t);const r=new RegExp(`^${pe(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})}}),Mi=l("$ZodCheckEndsWith",(e,t)=>{P.init(e,t);const r=new RegExp(`.*${pe(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})}}),Fi=l("$ZodCheckOverwrite",(e,t)=>{P.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}}),qi=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
  `))}},Gi={major:4,minor:3,patch:6},z=l("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Gi;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=(a,s,c)=>{let u=X(a),f;for(const g of s){if(g._zod.def.when){if(!g._zod.def.when(a))continue}else if(u)continue;const p=a.issues.length,m=g._zod.check(a);if(m instanceof Promise&&c?.async===!1)throw new Y;if(f||m instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await m,a.issues.length!==p&&(u||(u=X(a,p)))});else{if(a.issues.length===p)continue;u||(u=X(a,p))}}return f?f.then(()=>a):a},i=(a,s,c)=>{if(X(a))return a.aborted=!0,a;const u=o(s,n,c);if(u instanceof Promise){if(c.async===!1)throw new Y;return u.then(f=>e._zod.parse(f,c))}return e._zod.parse(u,c)};e._zod.run=(a,s)=>{if(s.skipChecks)return e._zod.parse(a,s);if(s.direction==="backward"){const u=e._zod.parse({value:a.value,issues:[]},{...s,skipChecks:!0});return u instanceof Promise?u.then(f=>i(f,a,s)):i(u,a,s)}const c=e._zod.parse(a,s);if(c instanceof Promise){if(s.async===!1)throw new Y;return c.then(u=>o(u,n,s))}return o(c,n,s)}}k(e,"~standard",()=>({validate:o=>{try{const i=Ko(e,o);return i.success?{value:i.data}:{issues:i.error?.issues}}catch{return Yo(e,o).then(a=>a.success?{value:a.data}:{issues:a.error?.issues})}},vendor:"zod",version:1}))}),Ue=l("$ZodString",(e,t)=>{z.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??zi(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}}),C=l("$ZodStringFormat",(e,t)=>{_e.init(e,t),Ue.init(e,t)}),Ji=l("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=pi),C.init(e,t)}),Bi=l("$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=Dt(r))}else t.pattern??(t.pattern=Dt());C.init(e,t)}),Vi=l("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=gi),C.init(e,t)}),Wi=l("$ZodURL",(e,t)=>{C.init(e,t),e._zod.check=r=>{try{const n=r.value.trim(),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})}}}),Hi=l("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=hi()),C.init(e,t)}),Ki=l("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=li),C.init(e,t)}),Yi=l("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=ai),C.init(e,t)}),Xi=l("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=si),C.init(e,t)}),Qi=l("$ZodULID",(e,t)=>{t.pattern??(t.pattern=ci),C.init(e,t)}),ea=l("$ZodXID",(e,t)=>{t.pattern??(t.pattern=ui),C.init(e,t)}),ta=l("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=di),C.init(e,t)}),ra=l("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Ei(t)),C.init(e,t)}),na=l("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Si),C.init(e,t)}),oa=l("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Ci(t)),C.init(e,t)}),ia=l("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=fi),C.init(e,t)}),aa=l("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=_i),C.init(e,t),e._zod.bag.format="ipv4"}),sa=l("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=yi),C.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=l("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=vi),C.init(e,t)}),ua=l("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=bi),C.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 a=Number(i);if(`${a}`!==i)throw new Error;if(a<0||a>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 Jt(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var da=l("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=wi),C.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=r=>{Jt(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function la(e){if(!jt.test(e))return!1;const t=e.replace(/[-_]/g,r=>r==="-"?"+":"/");return Jt(t.padEnd(Math.ceil(t.length/4)*4,"="))}var fa=l("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=jt),C.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=r=>{la(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),pa=l("$ZodE164",(e,t)=>{t.pattern??(t.pattern=ki),C.init(e,t)});function ga(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 ma=l("$ZodJWT",(e,t)=>{C.init(e,t),e._zod.check=r=>{ga(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),Bt=l("$ZodNumber",(e,t)=>{z.init(e,t),e._zod.pattern=e._zod.bag.pattern??$i,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}}),ha=l("$ZodNumberFormat",(e,t)=>{Oi.init(e,t),Bt.init(e,t)}),_a=l("$ZodUnknown",(e,t)=>{z.init(e,t),e._zod.parse=r=>r}),ya=l("$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 Vt(e,t,r){e.issues.length&&t.issues.push(...Zt(r,e.issues)),t.value[r]=e.value}var va=l("$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 a=0;a<o.length;a++){const s=o[a],c=t.element._zod.run({value:s,issues:[]},n);c instanceof Promise?i.push(c.then(u=>Vt(u,r,a))):Vt(c,r,a)}return i.length?Promise.all(i).then(()=>r):r}});function ye(e,t,r,n,o){if(e.issues.length){if(o&&!(r in n))return;t.issues.push(...Zt(r,e.issues))}e.value===void 0?r in n&&(t.value[r]=void 0):t.value[r]=e.value}function Wt(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=jo(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Ht(e,t,r,n,o,i){const a=[],s=o.keySet,c=o.catchall._zod,u=c.def.type,f=c.optout==="optional";for(const g in t){if(s.has(g))continue;if(u==="never"){a.push(g);continue}const p=c.run({value:t[g],issues:[]},n);p instanceof Promise?e.push(p.then(m=>ye(m,r,g,t,f))):ye(p,r,g,t,f)}return a.length&&r.issues.push({code:"unrecognized_keys",keys:a,input:t,inst:i}),e.length?Promise.all(e).then(()=>r):r}var ba=l("$ZodObject",(e,t)=>{if(z.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const a=t.shape;Object.defineProperty(t,"shape",{get:()=>{const s={...a};return Object.defineProperty(t,"shape",{value:s}),s}})}const r=Ze(()=>Wt(t));k(e._zod,"propValues",()=>{const a=t.shape,s={};for(const c in a){const u=a[c]._zod;if(u.values){s[c]??(s[c]=new Set);for(const f of u.values)s[c].add(f)}}return s});const n=fe,o=t.catchall;let i;e._zod.parse=(a,s)=>{i??(i=r.value);const c=a.value;if(!n(c))return a.issues.push({expected:"object",code:"invalid_type",input:c,inst:e}),a;a.value={};const u=[],f=i.shape;for(const g of i.keys){const p=f[g],m=p._zod.optout==="optional",h=p._zod.run({value:c[g],issues:[]},s);h instanceof Promise?u.push(h.then(d=>ye(d,a,g,c,m))):ye(h,a,g,c,m)}return o?Ht(u,c,a,s,r.value,e):u.length?Promise.all(u).then(()=>a):a}}),wa=l("$ZodObjectJIT",(e,t)=>{ba.init(e,t);const r=e._zod.parse,n=Ze(()=>Wt(t)),o=p=>{const m=new qi(["shape","payload","ctx"]),h=n.value,d=v=>{const w=Pt(v);return`shape[${w}]._zod.run({ value: input[${w}], issues: [] }, ctx)`};m.write("const input = payload.value;");const y=Object.create(null);let S=0;for(const v of h.keys)y[v]=`key_${S++}`;m.write("const newResult = {};");for(const v of h.keys){const w=y[v],$=Pt(v),D=p[v]?._zod?.optout==="optional";m.write(`const ${w} = ${d(v)};`),D?m.write(`
51
51
  if (${w}.issues.length) {
package/dist/simrel.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a, i as r, n as i, o as t, r as l, t as m } from "./simrel-BREHamN-.js";
1
+ import { a, i as r, n as i, o as t, r as l, t as m } from "./simrel-BRh5eB2K.js";
2
2
  export {
3
3
  m as GengageSimRel,
4
4
  r as createDefaultSimRelUISpecRegistry,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gengage/assistant-fe",
3
- "version": "0.3.31",
3
+ "version": "0.3.34",
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",