@gengage/assistant-fe 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/assistant-fe.css +1 -1
  2. package/dist/chat.cjs +1 -1
  3. package/dist/chat.iife.js +2 -2
  4. package/dist/chat.iife.js.map +1 -1
  5. package/dist/chat.js +2 -2
  6. package/dist/common/theme-utils.d.ts.map +1 -1
  7. package/dist/common.cjs +1 -1
  8. package/dist/common.cjs.map +1 -1
  9. package/dist/common.js +30 -28
  10. package/dist/common.js.map +1 -1
  11. package/dist/index-6hAto23F.cjs +13 -0
  12. package/dist/{index-BwBJkYGY.cjs.map → index-6hAto23F.cjs.map} +1 -1
  13. package/dist/{index-BLq9Phmq.js → index-BXXXyQzR.js} +3 -3
  14. package/dist/{index-BLq9Phmq.js.map → index-BXXXyQzR.js.map} +1 -1
  15. package/dist/{index-BeP3ETm1.cjs → index-CjQUfIYI.cjs} +2 -2
  16. package/dist/{index-BeP3ETm1.cjs.map → index-CjQUfIYI.cjs.map} +1 -1
  17. package/dist/{index-ZO_kMfUR.js → index-DJUtLUPL.js} +3 -3
  18. package/dist/{index-ZO_kMfUR.js.map → index-DJUtLUPL.js.map} +1 -1
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.js +3 -3
  21. package/dist/native.cjs +1 -1
  22. package/dist/native.iife.js +2 -2
  23. package/dist/native.iife.js.map +1 -1
  24. package/dist/native.js +1 -1
  25. package/dist/qna.cjs +1 -1
  26. package/dist/qna.css +1 -1
  27. package/dist/qna.iife.js +1 -1
  28. package/dist/qna.iife.js.map +1 -1
  29. package/dist/qna.js +1 -1
  30. package/dist/{schemas-DR_GaPQj.js → schemas-5lXjLjwW.js} +4 -4
  31. package/dist/schemas-5lXjLjwW.js.map +1 -0
  32. package/dist/{schemas-CaaT5BuE.cjs → schemas-DqUVzVDf.cjs} +2 -2
  33. package/dist/schemas-DqUVzVDf.cjs.map +1 -0
  34. package/dist/simrel.cjs +1 -1
  35. package/dist/simrel.css +1 -1
  36. package/dist/simrel.iife.js +1 -1
  37. package/dist/simrel.iife.js.map +1 -1
  38. package/dist/simrel.js +1 -1
  39. package/package.json +2 -2
  40. package/dist/index-BwBJkYGY.cjs +0 -13
  41. package/dist/schemas-CaaT5BuE.cjs.map +0 -1
  42. package/dist/schemas-DR_GaPQj.js.map +0 -1
package/dist/simrel.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./schemas-CaaT5BuE.cjs"),b=require("./quantity-stepper-CQWgexMO.cjs");function _(n){const e=[];for(const t of Object.values(n))if(t.type==="ProductCard"&&t.props){const r=t.props.product??t.props;typeof r.sku=="string"&&typeof r.name=="string"&&e.push(r)}return e}function S(n){const e=n.headers.get("Content-Type")??"";return e.includes("application/x-ndjson")||e.includes("text/event-stream")}async function L(n,e){const t=[],r={onEvent:i=>{const a=s.adaptBackendEvent(i);!a||a.type!=="ui_spec"||t.push(..._(a.spec.elements))}};return e!==void 0&&(r.signal=e),await s.consumeStream(n,r),t}async function N(n,e,t){const r=s.buildChatEndpointUrl("similar_products",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const a=await fetch(r,i);if(!a.ok)throw new Error(`HTTP ${a.status}: ${a.statusText}`);if(S(a))return L(a,t);const c=await a.text();if(!c)return[];try{return s.normalizeSimilarProductsResponse(JSON.parse(c))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function U(n,e){const t=[];let r=null;const i={onEvent:a=>{const c=s.adaptBackendEvent(a);if(c){if(c.type==="metadata"&&c.meta){const g=c.meta.group_name;if(typeof g=="string"){r={name:g,products:[]};const p=c.meta.highlight;typeof p=="string"&&(r.highlight=p),t.push(r)}}c.type==="ui_spec"&&r&&r.products.push(..._(c.spec.elements))}}};return e!==void 0&&(i.signal=e),await s.consumeStream(n,i),t}async function x(n,e,t){const r=s.buildChatEndpointUrl("product_groupings",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const a=await fetch(r,i);if(!a.ok)throw new Error(`HTTP ${a.status}: ${a.statusText}`);if(S(a))return U(a,t);const c=await a.text();if(!c)return[];try{return s.normalizeProductGroupingsResponse(JSON.parse(c))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}function T(n){const{product:e,index:t,discountType:r,onClick:i,onAddToCart:a,renderCard:c}=n,g=n.i18n,p=n.pricing;if(n.renderCardElement){const o=n.renderCardElement(e,t);if(o)return o}if(c){const o=document.createElement("div");return o.className="gengage-simrel-card gengage-simrel-card--custom",o.innerHTML=s.sanitizeHtml(c(e,t)),o.addEventListener("click",h=>{h.target.closest(".gengage-simrel-atc")||h.target.closest(".gengage-chat-product-card-atc")||i(e)}),o}const u=document.createElement("article");u.className="gengage-simrel-card gengage-chat-product-card",e.inStock===!1&&u.classList.add("gengage-simrel-card--out-of-stock"),u.setAttribute("role","listitem"),u.dataset.sku=e.sku;const d=document.createElement("div");if(d.className="gengage-simrel-card-image gengage-chat-product-card-img-wrapper",e.imageUrl&&s.isSafeImageUrl(e.imageUrl)){const o=document.createElement("img");o.className="gengage-chat-product-card-img",o.src=e.imageUrl,o.alt=e.name,o.loading="lazy",b.addImageErrorHandler(o),d.appendChild(o)}if(r==="badge"&&e.discountPercent&&e.discountPercent>0){const o=document.createElement("span");o.className="gengage-simrel-badge gengage-chat-product-card-discount-badge",o.textContent=`%${b.clampDiscount(e.discountPercent)}`,d.appendChild(o)}u.appendChild(d);const m=document.createElement("div");if(m.className="gengage-simrel-card-info gengage-chat-product-card-body",e.brand){const o=document.createElement("div");o.className="gengage-simrel-card-brand gengage-chat-product-card-brand",o.textContent=e.brand,m.appendChild(o)}const f=document.createElement("div");if(f.className="gengage-simrel-card-name gengage-chat-product-card-name",f.textContent=e.name,f.title=e.name,m.appendChild(f),e.rating!=null&&e.rating>0){const o=document.createElement("div");if(o.className="gengage-simrel-card-rating gengage-chat-product-card-rating",o.appendChild(b.createStarRatingElement(e.rating)),e.reviewCount!=null){const h=document.createElement("span");h.className="gengage-simrel-card-review-count gengage-chat-product-card-review-count",h.textContent=` (${e.reviewCount})`,o.appendChild(h)}m.appendChild(o)}const y=document.createElement("div");if(y.className="gengage-simrel-card-price gengage-chat-product-card-price",e.originalPrice&&e.originalPrice!==e.price&&(r==="strike-through"||!r)){const o=document.createElement("span");o.className="gengage-simrel-card-price-original gengage-chat-product-card-original-price",o.textContent=b.formatPrice(e.originalPrice,p),y.appendChild(o)}if(e.price&&parseFloat(e.price)>0){const o=document.createElement("span");o.className="gengage-simrel-card-price-current gengage-chat-product-card-price-current",o.textContent=b.formatPrice(e.price,p),y.appendChild(o)}m.appendChild(y),u.appendChild(m);const l=document.createElement("button");if(l.className="gengage-simrel-card-cta gengage-chat-product-card-cta",l.type="button",l.textContent=g?.ctaLabel??"View",l.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),i(e)}),u.appendChild(l),e.inStock===!1){const o=document.createElement("div");o.className="gengage-simrel-card-oos",o.textContent=g?.outOfStockLabel??"Out of Stock",u.appendChild(o)}else if(e.cartCode){const o=e.cartCode,h=b.createQuantityStepper({compact:!0,label:g?.addToCartButton??"Add to Cart",decreaseLabel:g?.decreaseLabel,increaseLabel:g?.increaseLabel,onSubmit:C=>{a({sku:e.sku,quantity:C,cartCode:o})}});h.classList.add("gengage-simrel-atc"),u.appendChild(h)}return u.addEventListener("click",o=>{o.target.closest(".gengage-simrel-atc")||o.target.closest(".gengage-chat-product-card-atc")||o.target.closest(".gengage-chat-product-card-cta")||i(e)}),u}function v(n){const e=document.createElement("div");e.className="gengage-simrel-grid",e.setAttribute("role","list"),e.setAttribute("aria-label",n.i18n?.similarProductsAriaLabel??"Similar products"),n.columns&&e.style.setProperty("--gengage-simrel-columns",String(n.columns));for(let t=0;t<n.products.length;t++){const i={product:n.products[t],index:t,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(i.i18n=n.i18n),n.discountType!==void 0&&(i.discountType=n.discountType),n.renderCard!==void 0&&(i.renderCard=n.renderCard),n.renderCardElement!==void 0&&(i.renderCardElement=n.renderCardElement);const a=T(i);e.appendChild(a)}return n.products.length===0&&(e.style.display="none",e.dataset.empty="true"),e}let j=0;function O(n){const e=j++,t=document.createElement("div");if(t.className="gengage-simrel-groups",n.groups.length===0)return t.style.display="none",t.dataset.empty="true",t;const r=document.createElement("div");r.className="gengage-simrel-tabs",r.setAttribute("role","tablist");const i=[],a=[],c=d=>{const m={products:d.products,onClick:n.onClick,onAddToCart:n.onAddToCart};return n.i18n!==void 0&&(m.i18n=n.i18n),n.discountType!==void 0&&(m.discountType=n.discountType),n.renderCard!==void 0&&(m.renderCard=n.renderCard),n.renderCardElement!==void 0&&(m.renderCardElement=n.renderCardElement),m},g=d=>{for(let l=0;l<i.length;l++){const o=l===d;i[l].classList.toggle("gengage-simrel-tab--active",o),i[l].setAttribute("aria-selected",String(o)),i[l].tabIndex=o?0:-1}const m=n.groups[d],f=a[d];f.innerHTML="";const y=v(c(m));f.appendChild(y);for(let l=0;l<a.length;l++){const o=l===d;a[l].style.display=o?"":"none",a[l].tabIndex=o?0:-1}};for(let d=0;d<n.groups.length;d++){const m=n.groups[d],f=`gengage-simrel-tab-${e}-${d}`,y=`gengage-simrel-panel-${e}-${d}`,l=document.createElement("button");l.className="gengage-simrel-tab",l.type="button",l.id=f,l.textContent=m.name,l.setAttribute("role","tab"),l.setAttribute("aria-controls",y),l.setAttribute("aria-selected",String(d===0)),l.tabIndex=d===0?0:-1,d===0&&l.classList.add("gengage-simrel-tab--active"),l.addEventListener("click",()=>g(d)),l.addEventListener("keydown",h=>{let C=-1;h.key==="ArrowRight"||h.key==="ArrowDown"?C=(d+1)%n.groups.length:h.key==="ArrowLeft"||h.key==="ArrowUp"?C=(d-1+n.groups.length)%n.groups.length:h.key==="Home"?C=0:h.key==="End"&&(C=n.groups.length-1),C>=0&&(h.preventDefault(),g(C),i[C].focus())}),i.push(l),r.appendChild(l);const o=document.createElement("div");o.className="gengage-simrel-tab-panel",o.id=y,o.setAttribute("role","tabpanel"),o.setAttribute("aria-labelledby",f),o.tabIndex=d===0?0:-1,d!==0&&(o.style.display="none"),a.push(o)}t.appendChild(r);const p=a[0],u=v(c(n.groups[0]));p.appendChild(u);for(const d of a)t.appendChild(d);return t}function k(n){if(!n||typeof n!="object")return null;const e=n;if(typeof e.sku!="string"||typeof e.name!="string"||typeof e.url!="string")return null;const t={sku:e.sku,name:e.name,url:e.url},r=e.imageUrl;typeof r=="string"&&(t.imageUrl=r);const i=e.price;typeof i=="string"&&(t.price=i);const a=e.originalPrice;typeof a=="string"&&(t.originalPrice=a);const c=e.discountPercent;typeof c=="number"&&(t.discountPercent=c);const g=e.brand;typeof g=="string"&&(t.brand=g);const p=e.rating;typeof p=="number"&&(t.rating=p);const u=e.reviewCount;typeof u=="number"&&(t.reviewCount=u);const d=e.cartCode;typeof d=="string"&&(t.cartCode=d);const m=e.inStock;typeof m=="boolean"&&(t.inStock=m);const f=e.extras;return f!=null&&typeof f=="object"&&(t.extras=f),t}function G(n){if(!n||typeof n!="object")return null;const e=n,t=e.title,r=e.type;if(typeof t!="string"||typeof r!="string")return null;const i={title:t,type:r};return e.payload!==void 0&&(i.payload=e.payload),i}const w={ProductGrid:({element:n,renderElement:e,context:t})=>{const r=document.createElement("div");r.className="gengage-simrel-grid",r.setAttribute("role","list");const i=n.props?.columns;typeof i=="number"&&Number.isFinite(i)&&i>0&&r.style.setProperty("--gengage-simrel-columns",String(i));for(const a of n.children??[]){const c=e(a);c&&r.appendChild(c)}if(r.children.length===0){const a=document.createElement("div");a.className="gengage-simrel-empty",a.textContent=t.i18n.emptyStateMessage,r.appendChild(a)}return r},ProductCard:({element:n,context:e})=>{const t=n.props?.product??n.props,r=k(t);if(!r)return null;const i=n.props?.index,a=typeof i=="number"&&Number.isFinite(i)?i:0,c=n.props?.discountType,g=c==="strike-through"||c==="badge"?c:e.discountType,p={product:r,index:a,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return g!==void 0&&(p.discountType=g),e.renderCard!==void 0&&(p.renderCard=e.renderCard),e.renderCardElement!==void 0&&(p.renderCardElement=e.renderCardElement),e.pricing!==void 0&&(p.pricing=e.pricing),T(p)},GroupTabs:({element:n,context:e})=>{const t=n.props?.groups;if(!Array.isArray(t))return null;const r=[];for(const a of t){if(!a||typeof a!="object")continue;const c=a;if(typeof c.name!="string")continue;const g=[];if(Array.isArray(c.products))for(const u of c.products){const d=k(u);d&&g.push(d)}const p={name:c.name,products:g};typeof c.highlight=="string"&&(p.highlight=c.highlight),r.push(p)}const i={groups:r,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return e.discountType!==void 0&&(i.discountType=e.discountType),e.renderCard!==void 0&&(i.renderCard=e.renderCard),e.renderCardElement!==void 0&&(i.renderCardElement=e.renderCardElement),O(i)},EmptyState:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-empty";const r=n.props?.message;return t.textContent=typeof r=="string"?r:e.i18n.emptyStateMessage,t},AddToCartButton:({element:n,context:e})=>{const t=n.props?.sku,r=n.props?.cartCode;if(typeof t!="string"||typeof r!="string")return null;const i=document.createElement("button");i.className="gengage-simrel-atc gengage-chat-product-card-cta",i.type="button";const a=n.props?.label;return i.textContent=typeof a=="string"?a:e.i18n.addToCartButton,i.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation(),e.onAddToCart({sku:t,quantity:1,cartCode:r})}),i},QuickActions:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-quick-actions";const r=n.props?.actions;if(!Array.isArray(r)||!e.onAction)return t;for(const i of r){if(!i||typeof i!="object")continue;const a=i,c=a.label,g=G(a.action);if(typeof c!="string"||!g)continue;const p=document.createElement("button");p.className="gengage-simrel-quick-action",p.type="button",p.textContent=c,p.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation(),e.onAction?.(g)}),t.appendChild(p)}return t}},E=({element:n,renderElement:e})=>{if(!n.children||n.children.length===0)return null;const t=document.createElement("div");for(const r of n.children){const i=e(r);i&&t.appendChild(i)}return t};function A(){return{...w}}function P(n,e,t=w,r=E){return s.renderUISpecWithRegistry({spec:n,context:e,registry:t,containerClassName:"gengage-simrel-uispec",unknownRenderer:r})}const R={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"},D={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:""};function B(n){return n?n.toLowerCase().split("-")[0]??"tr":"tr"}function M(n){return B(n)==="en"?D:R}const q=s.object({sku:s.string(),name:s.string(),imageUrl:s.string().url().optional(),price:s.string().optional(),originalPrice:s.string().optional(),discountPercent:s.number().optional(),url:s.string().url(),brand:s.string().optional(),rating:s.number().min(0).max(5).optional(),reviewCount:s.number().int().nonnegative().optional()}),H=s.object({layout:s._enum(["grid","carousel"]).optional(),columns:s.number().int().positive().optional()}),z=s.object({product:q,index:s.number().int().nonnegative(),discountType:s._enum(["strike-through","badge"]).optional()}),$=s.object({sku:s.string(),label:s.string().optional(),cartCode:s.string()}),F=s.object({actions:s.array(s.object({label:s.string(),action:s.object({title:s.string(),type:s.string(),payload:s.unknown().optional()})}))}),J=s.object({message:s.string().optional()}),W={components:{ProductGrid:{schema:H,description:"Outer grid or carousel container for similar products."},ProductCard:{schema:z,description:"A single product card with image, title, price, and actions."},AddToCartButton:{schema:$,description:"Add-to-cart CTA rendered inside or below a product card."},QuickActions:{schema:F,description:"A row of quick-action buttons below product info."},EmptyState:{schema:J,description:"Empty state shown when no similar products are available."}}};class I extends s.BaseWidget{constructor(){super(...arguments),this._abortController=null,this._contentEl=null,this._i18n=R}async onInit(e){this._i18n=this._resolveI18n(e),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this.root.appendChild(this._contentEl),this._lastSku=e.sku,await this._fetchAndRender(e.sku),s.trackInit("simrel")}onUpdate(e){const t=e.sku;!t||t===this._lastSku||(this._lastSku=t,this._fetchAndRender(t))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.3s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._contentEl&&(this._contentEl.remove(),this._contentEl=null)}_handleProductClick(e){const t={sku:e.sku,name:e.name,url:e.url};if(e.imageUrl!==void 0&&(t.imageUrl=e.imageUrl),e.price!==void 0&&(t.price=e.price),e.originalPrice!==void 0&&(t.originalPrice=e.originalPrice),e.discountPercent!==void 0&&(t.discountPercent=e.discountPercent),e.brand!==void 0&&(t.brand=e.brand),e.rating!==void 0&&(t.rating=e.rating),e.reviewCount!==void 0&&(t.reviewCount=e.reviewCount),e.cartCode!==void 0&&(t.cartCode=e.cartCode),e.inStock!==void 0&&(t.inStock=e.inStock),this.config.onProductClick?.(t)===!1)return;s.trackProductDetail(e.sku,e.name);const r=this.config.session?.sessionId??null;s.dispatch("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:r}),this.config.onProductNavigate?.(e.url,e.sku,r)}_handleAddToCart(e){s.trackCartAdd(e.sku,e.quantity),this.config.onAddToCart?.(e),s.dispatch("gengage:similar:add-to-cart",e),this.track(s.basketAddEvent(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:"TRY",line_items:e.quantity,sku:e.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}async _fetchAndRender(e){this._abort(),this._abortController=new AbortController;const t=this._abortController.signal,r=setTimeout(()=>this._abortController?.abort(),1e4);if(t.addEventListener("abort",()=>clearTimeout(r)),!this._contentEl)return;this._contentEl.innerHTML="",this._contentEl.style.display="";const i=document.createElement("div");i.className="gengage-simrel-loading";const a=document.createElement("div");a.className="gengage-simrel-spinner",i.appendChild(a),this._contentEl.appendChild(i);const c={middlewareUrl:this.config.middlewareUrl},g=crypto.randomUUID(),p=Date.now();this.track(s.streamStartEvent(this.analyticsContext(),{endpoint:"similar_products",request_id:g,widget:"simrel"}));try{const u={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:e};this.config.domain!==void 0&&(u.domain=this.config.domain);const d=await N(u,c,t);if(!this._contentEl)return;if(this._contentEl.innerHTML="",d.length>0)try{const m=d.map(y=>y.sku),f=await x({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:m},c,t);if(f.length>0&&this._contentEl){const y=this._buildGroupsSpec(f),l=this._renderUISpec(y);this._contentEl.appendChild(l),s.trackShow("simrel"),this.track(s.streamDoneEvent(this.analyticsContext(),{request_id:g,latency_ms:Date.now()-p,chunk_count:f.reduce((o,h)=>o+h.products.length,0),widget:"simrel"})),this.track(s.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:f.reduce((o,h)=>o+h.products.length,0),history_ref:g,redaction_level:"none",widget:"simrel"}));return}}catch{}if(t.aborted)return;if(this._contentEl){const m=this._buildProductsSpec(d),f=this._renderUISpec(m);this._contentEl.appendChild(f)}d.length>0&&s.trackShow("simrel"),this.track(s.streamDoneEvent(this.analyticsContext(),{request_id:g,latency_ms:Date.now()-p,chunk_count:d.length,widget:"simrel"})),this.track(s.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:d.length,history_ref:g,redaction_level:"none",widget:"simrel"}))}catch(u){if(u instanceof DOMException&&u.name==="AbortError")return;if(s.dispatch("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:s.getGlobalErrorMessage(this.config.locale)}),this.track(s.streamErrorEvent(this.analyticsContext(),{request_id:g,error_code:"FETCH_ERROR",error_message:u instanceof Error?u.message:String(u),widget:"simrel"})),this._contentEl){this._contentEl.innerHTML="";const d=document.createElement("div");d.className="gengage-simrel-error";const m=document.createElement("span");m.textContent=this._i18n.errorLoadingMessage,d.appendChild(m);const f=document.createElement("button");f.className="gengage-simrel-retry",f.textContent=this._i18n.retryButtonText,f.addEventListener("click",()=>{this._fetchAndRender(this.config.sku)}),d.appendChild(f),this._contentEl.appendChild(d)}}}_resolveI18n(e){return{...M(e.locale),...e.i18n}}_resolveUISpecRegistry(){const e=A();return s.mergeUISpecRegistry(e,this.config.renderer?.registry)}_buildRenderContext(){const e=this.config.renderCard,t={onClick:r=>this._handleProductClick(r),onAddToCart:r=>this._handleAddToCart(r),i18n:this._i18n};return this.config.discountType!==void 0&&(t.discountType=this.config.discountType),e!==void 0&&(t.renderCard=e),this.config.renderCardElement!==void 0&&(t.renderCardElement=this.config.renderCardElement),this.config.pricing!==void 0&&(t.pricing=this.config.pricing),t}_renderUISpec(e){const t=this._resolveUISpecRegistry(),r=this._buildRenderContext(),i=this.config.renderer?.unknownRenderer??E,a=(p,u)=>P(p,u,t,i),c=this.config.renderer?.renderUISpec;return c?c(e,r,{registry:t,unknownRenderer:i,defaultRender:a}):a(e,r)}_buildProductsSpec(e){const t={},r=[];for(let i=0;i<e.length;i++){const a=e[i],c=`product-${i}`;r.push(c),t[c]={type:"ProductCard",props:{product:a,index:i,discountType:this.config.discountType}}}return t.root={type:"ProductGrid",props:{layout:"grid"},children:r},{root:"root",elements:t}}_buildGroupsSpec(e){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:e}}}}}}function Q(){return new I}exports.GengageSimRel=I;exports.createDefaultSimRelUISpecRegistry=A;exports.createSimRelWidget=Q;exports.defaultSimRelUnknownUISpecRenderer=E;exports.renderSimRelUISpec=P;exports.simRelCatalog=W;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./schemas-DqUVzVDf.cjs"),b=require("./quantity-stepper-CQWgexMO.cjs");function _(n){const e=[];for(const t of Object.values(n))if(t.type==="ProductCard"&&t.props){const r=t.props.product??t.props;typeof r.sku=="string"&&typeof r.name=="string"&&e.push(r)}return e}function S(n){const e=n.headers.get("Content-Type")??"";return e.includes("application/x-ndjson")||e.includes("text/event-stream")}async function L(n,e){const t=[],r={onEvent:i=>{const a=s.adaptBackendEvent(i);!a||a.type!=="ui_spec"||t.push(..._(a.spec.elements))}};return e!==void 0&&(r.signal=e),await s.consumeStream(n,r),t}async function N(n,e,t){const r=s.buildChatEndpointUrl("similar_products",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const a=await fetch(r,i);if(!a.ok)throw new Error(`HTTP ${a.status}: ${a.statusText}`);if(S(a))return L(a,t);const c=await a.text();if(!c)return[];try{return s.normalizeSimilarProductsResponse(JSON.parse(c))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function U(n,e){const t=[];let r=null;const i={onEvent:a=>{const c=s.adaptBackendEvent(a);if(c){if(c.type==="metadata"&&c.meta){const g=c.meta.group_name;if(typeof g=="string"){r={name:g,products:[]};const p=c.meta.highlight;typeof p=="string"&&(r.highlight=p),t.push(r)}}c.type==="ui_spec"&&r&&r.products.push(..._(c.spec.elements))}}};return e!==void 0&&(i.signal=e),await s.consumeStream(n,i),t}async function x(n,e,t){const r=s.buildChatEndpointUrl("product_groupings",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const a=await fetch(r,i);if(!a.ok)throw new Error(`HTTP ${a.status}: ${a.statusText}`);if(S(a))return U(a,t);const c=await a.text();if(!c)return[];try{return s.normalizeProductGroupingsResponse(JSON.parse(c))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}function T(n){const{product:e,index:t,discountType:r,onClick:i,onAddToCart:a,renderCard:c}=n,g=n.i18n,p=n.pricing;if(n.renderCardElement){const o=n.renderCardElement(e,t);if(o)return o}if(c){const o=document.createElement("div");return o.className="gengage-simrel-card gengage-simrel-card--custom",o.innerHTML=s.sanitizeHtml(c(e,t)),o.addEventListener("click",h=>{h.target.closest(".gengage-simrel-atc")||h.target.closest(".gengage-chat-product-card-atc")||i(e)}),o}const u=document.createElement("article");u.className="gengage-simrel-card gengage-chat-product-card",e.inStock===!1&&u.classList.add("gengage-simrel-card--out-of-stock"),u.setAttribute("role","listitem"),u.dataset.sku=e.sku;const d=document.createElement("div");if(d.className="gengage-simrel-card-image gengage-chat-product-card-img-wrapper",e.imageUrl&&s.isSafeImageUrl(e.imageUrl)){const o=document.createElement("img");o.className="gengage-chat-product-card-img",o.src=e.imageUrl,o.alt=e.name,o.loading="lazy",b.addImageErrorHandler(o),d.appendChild(o)}if(r==="badge"&&e.discountPercent&&e.discountPercent>0){const o=document.createElement("span");o.className="gengage-simrel-badge gengage-chat-product-card-discount-badge",o.textContent=`%${b.clampDiscount(e.discountPercent)}`,d.appendChild(o)}u.appendChild(d);const m=document.createElement("div");if(m.className="gengage-simrel-card-info gengage-chat-product-card-body",e.brand){const o=document.createElement("div");o.className="gengage-simrel-card-brand gengage-chat-product-card-brand",o.textContent=e.brand,m.appendChild(o)}const f=document.createElement("div");if(f.className="gengage-simrel-card-name gengage-chat-product-card-name",f.textContent=e.name,f.title=e.name,m.appendChild(f),e.rating!=null&&e.rating>0){const o=document.createElement("div");if(o.className="gengage-simrel-card-rating gengage-chat-product-card-rating",o.appendChild(b.createStarRatingElement(e.rating)),e.reviewCount!=null){const h=document.createElement("span");h.className="gengage-simrel-card-review-count gengage-chat-product-card-review-count",h.textContent=` (${e.reviewCount})`,o.appendChild(h)}m.appendChild(o)}const y=document.createElement("div");if(y.className="gengage-simrel-card-price gengage-chat-product-card-price",e.originalPrice&&e.originalPrice!==e.price&&(r==="strike-through"||!r)){const o=document.createElement("span");o.className="gengage-simrel-card-price-original gengage-chat-product-card-original-price",o.textContent=b.formatPrice(e.originalPrice,p),y.appendChild(o)}if(e.price&&parseFloat(e.price)>0){const o=document.createElement("span");o.className="gengage-simrel-card-price-current gengage-chat-product-card-price-current",o.textContent=b.formatPrice(e.price,p),y.appendChild(o)}m.appendChild(y),u.appendChild(m);const l=document.createElement("button");if(l.className="gengage-simrel-card-cta gengage-chat-product-card-cta",l.type="button",l.textContent=g?.ctaLabel??"View",l.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),i(e)}),u.appendChild(l),e.inStock===!1){const o=document.createElement("div");o.className="gengage-simrel-card-oos",o.textContent=g?.outOfStockLabel??"Out of Stock",u.appendChild(o)}else if(e.cartCode){const o=e.cartCode,h=b.createQuantityStepper({compact:!0,label:g?.addToCartButton??"Add to Cart",decreaseLabel:g?.decreaseLabel,increaseLabel:g?.increaseLabel,onSubmit:C=>{a({sku:e.sku,quantity:C,cartCode:o})}});h.classList.add("gengage-simrel-atc"),u.appendChild(h)}return u.addEventListener("click",o=>{o.target.closest(".gengage-simrel-atc")||o.target.closest(".gengage-chat-product-card-atc")||o.target.closest(".gengage-chat-product-card-cta")||i(e)}),u}function v(n){const e=document.createElement("div");e.className="gengage-simrel-grid",e.setAttribute("role","list"),e.setAttribute("aria-label",n.i18n?.similarProductsAriaLabel??"Similar products"),n.columns&&e.style.setProperty("--gengage-simrel-columns",String(n.columns));for(let t=0;t<n.products.length;t++){const i={product:n.products[t],index:t,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(i.i18n=n.i18n),n.discountType!==void 0&&(i.discountType=n.discountType),n.renderCard!==void 0&&(i.renderCard=n.renderCard),n.renderCardElement!==void 0&&(i.renderCardElement=n.renderCardElement);const a=T(i);e.appendChild(a)}return n.products.length===0&&(e.style.display="none",e.dataset.empty="true"),e}let j=0;function O(n){const e=j++,t=document.createElement("div");if(t.className="gengage-simrel-groups",n.groups.length===0)return t.style.display="none",t.dataset.empty="true",t;const r=document.createElement("div");r.className="gengage-simrel-tabs",r.setAttribute("role","tablist");const i=[],a=[],c=d=>{const m={products:d.products,onClick:n.onClick,onAddToCart:n.onAddToCart};return n.i18n!==void 0&&(m.i18n=n.i18n),n.discountType!==void 0&&(m.discountType=n.discountType),n.renderCard!==void 0&&(m.renderCard=n.renderCard),n.renderCardElement!==void 0&&(m.renderCardElement=n.renderCardElement),m},g=d=>{for(let l=0;l<i.length;l++){const o=l===d;i[l].classList.toggle("gengage-simrel-tab--active",o),i[l].setAttribute("aria-selected",String(o)),i[l].tabIndex=o?0:-1}const m=n.groups[d],f=a[d];f.innerHTML="";const y=v(c(m));f.appendChild(y);for(let l=0;l<a.length;l++){const o=l===d;a[l].style.display=o?"":"none",a[l].tabIndex=o?0:-1}};for(let d=0;d<n.groups.length;d++){const m=n.groups[d],f=`gengage-simrel-tab-${e}-${d}`,y=`gengage-simrel-panel-${e}-${d}`,l=document.createElement("button");l.className="gengage-simrel-tab",l.type="button",l.id=f,l.textContent=m.name,l.setAttribute("role","tab"),l.setAttribute("aria-controls",y),l.setAttribute("aria-selected",String(d===0)),l.tabIndex=d===0?0:-1,d===0&&l.classList.add("gengage-simrel-tab--active"),l.addEventListener("click",()=>g(d)),l.addEventListener("keydown",h=>{let C=-1;h.key==="ArrowRight"||h.key==="ArrowDown"?C=(d+1)%n.groups.length:h.key==="ArrowLeft"||h.key==="ArrowUp"?C=(d-1+n.groups.length)%n.groups.length:h.key==="Home"?C=0:h.key==="End"&&(C=n.groups.length-1),C>=0&&(h.preventDefault(),g(C),i[C].focus())}),i.push(l),r.appendChild(l);const o=document.createElement("div");o.className="gengage-simrel-tab-panel",o.id=y,o.setAttribute("role","tabpanel"),o.setAttribute("aria-labelledby",f),o.tabIndex=d===0?0:-1,d!==0&&(o.style.display="none"),a.push(o)}t.appendChild(r);const p=a[0],u=v(c(n.groups[0]));p.appendChild(u);for(const d of a)t.appendChild(d);return t}function k(n){if(!n||typeof n!="object")return null;const e=n;if(typeof e.sku!="string"||typeof e.name!="string"||typeof e.url!="string")return null;const t={sku:e.sku,name:e.name,url:e.url},r=e.imageUrl;typeof r=="string"&&(t.imageUrl=r);const i=e.price;typeof i=="string"&&(t.price=i);const a=e.originalPrice;typeof a=="string"&&(t.originalPrice=a);const c=e.discountPercent;typeof c=="number"&&(t.discountPercent=c);const g=e.brand;typeof g=="string"&&(t.brand=g);const p=e.rating;typeof p=="number"&&(t.rating=p);const u=e.reviewCount;typeof u=="number"&&(t.reviewCount=u);const d=e.cartCode;typeof d=="string"&&(t.cartCode=d);const m=e.inStock;typeof m=="boolean"&&(t.inStock=m);const f=e.extras;return f!=null&&typeof f=="object"&&(t.extras=f),t}function G(n){if(!n||typeof n!="object")return null;const e=n,t=e.title,r=e.type;if(typeof t!="string"||typeof r!="string")return null;const i={title:t,type:r};return e.payload!==void 0&&(i.payload=e.payload),i}const w={ProductGrid:({element:n,renderElement:e,context:t})=>{const r=document.createElement("div");r.className="gengage-simrel-grid",r.setAttribute("role","list");const i=n.props?.columns;typeof i=="number"&&Number.isFinite(i)&&i>0&&r.style.setProperty("--gengage-simrel-columns",String(i));for(const a of n.children??[]){const c=e(a);c&&r.appendChild(c)}if(r.children.length===0){const a=document.createElement("div");a.className="gengage-simrel-empty",a.textContent=t.i18n.emptyStateMessage,r.appendChild(a)}return r},ProductCard:({element:n,context:e})=>{const t=n.props?.product??n.props,r=k(t);if(!r)return null;const i=n.props?.index,a=typeof i=="number"&&Number.isFinite(i)?i:0,c=n.props?.discountType,g=c==="strike-through"||c==="badge"?c:e.discountType,p={product:r,index:a,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return g!==void 0&&(p.discountType=g),e.renderCard!==void 0&&(p.renderCard=e.renderCard),e.renderCardElement!==void 0&&(p.renderCardElement=e.renderCardElement),e.pricing!==void 0&&(p.pricing=e.pricing),T(p)},GroupTabs:({element:n,context:e})=>{const t=n.props?.groups;if(!Array.isArray(t))return null;const r=[];for(const a of t){if(!a||typeof a!="object")continue;const c=a;if(typeof c.name!="string")continue;const g=[];if(Array.isArray(c.products))for(const u of c.products){const d=k(u);d&&g.push(d)}const p={name:c.name,products:g};typeof c.highlight=="string"&&(p.highlight=c.highlight),r.push(p)}const i={groups:r,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return e.discountType!==void 0&&(i.discountType=e.discountType),e.renderCard!==void 0&&(i.renderCard=e.renderCard),e.renderCardElement!==void 0&&(i.renderCardElement=e.renderCardElement),O(i)},EmptyState:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-empty";const r=n.props?.message;return t.textContent=typeof r=="string"?r:e.i18n.emptyStateMessage,t},AddToCartButton:({element:n,context:e})=>{const t=n.props?.sku,r=n.props?.cartCode;if(typeof t!="string"||typeof r!="string")return null;const i=document.createElement("button");i.className="gengage-simrel-atc gengage-chat-product-card-cta",i.type="button";const a=n.props?.label;return i.textContent=typeof a=="string"?a:e.i18n.addToCartButton,i.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation(),e.onAddToCart({sku:t,quantity:1,cartCode:r})}),i},QuickActions:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-quick-actions";const r=n.props?.actions;if(!Array.isArray(r)||!e.onAction)return t;for(const i of r){if(!i||typeof i!="object")continue;const a=i,c=a.label,g=G(a.action);if(typeof c!="string"||!g)continue;const p=document.createElement("button");p.className="gengage-simrel-quick-action",p.type="button",p.textContent=c,p.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation(),e.onAction?.(g)}),t.appendChild(p)}return t}},E=({element:n,renderElement:e})=>{if(!n.children||n.children.length===0)return null;const t=document.createElement("div");for(const r of n.children){const i=e(r);i&&t.appendChild(i)}return t};function A(){return{...w}}function P(n,e,t=w,r=E){return s.renderUISpecWithRegistry({spec:n,context:e,registry:t,containerClassName:"gengage-simrel-uispec",unknownRenderer:r})}const R={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"},D={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:""};function B(n){return n?n.toLowerCase().split("-")[0]??"tr":"tr"}function M(n){return B(n)==="en"?D:R}const q=s.object({sku:s.string(),name:s.string(),imageUrl:s.string().url().optional(),price:s.string().optional(),originalPrice:s.string().optional(),discountPercent:s.number().optional(),url:s.string().url(),brand:s.string().optional(),rating:s.number().min(0).max(5).optional(),reviewCount:s.number().int().nonnegative().optional()}),H=s.object({layout:s._enum(["grid","carousel"]).optional(),columns:s.number().int().positive().optional()}),z=s.object({product:q,index:s.number().int().nonnegative(),discountType:s._enum(["strike-through","badge"]).optional()}),$=s.object({sku:s.string(),label:s.string().optional(),cartCode:s.string()}),F=s.object({actions:s.array(s.object({label:s.string(),action:s.object({title:s.string(),type:s.string(),payload:s.unknown().optional()})}))}),J=s.object({message:s.string().optional()}),W={components:{ProductGrid:{schema:H,description:"Outer grid or carousel container for similar products."},ProductCard:{schema:z,description:"A single product card with image, title, price, and actions."},AddToCartButton:{schema:$,description:"Add-to-cart CTA rendered inside or below a product card."},QuickActions:{schema:F,description:"A row of quick-action buttons below product info."},EmptyState:{schema:J,description:"Empty state shown when no similar products are available."}}};class I extends s.BaseWidget{constructor(){super(...arguments),this._abortController=null,this._contentEl=null,this._i18n=R}async onInit(e){this._i18n=this._resolveI18n(e),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this.root.appendChild(this._contentEl),this._lastSku=e.sku,await this._fetchAndRender(e.sku),s.trackInit("simrel")}onUpdate(e){const t=e.sku;!t||t===this._lastSku||(this._lastSku=t,this._fetchAndRender(t))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.3s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._contentEl&&(this._contentEl.remove(),this._contentEl=null)}_handleProductClick(e){const t={sku:e.sku,name:e.name,url:e.url};if(e.imageUrl!==void 0&&(t.imageUrl=e.imageUrl),e.price!==void 0&&(t.price=e.price),e.originalPrice!==void 0&&(t.originalPrice=e.originalPrice),e.discountPercent!==void 0&&(t.discountPercent=e.discountPercent),e.brand!==void 0&&(t.brand=e.brand),e.rating!==void 0&&(t.rating=e.rating),e.reviewCount!==void 0&&(t.reviewCount=e.reviewCount),e.cartCode!==void 0&&(t.cartCode=e.cartCode),e.inStock!==void 0&&(t.inStock=e.inStock),this.config.onProductClick?.(t)===!1)return;s.trackProductDetail(e.sku,e.name);const r=this.config.session?.sessionId??null;s.dispatch("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:r}),this.config.onProductNavigate?.(e.url,e.sku,r)}_handleAddToCart(e){s.trackCartAdd(e.sku,e.quantity),this.config.onAddToCart?.(e),s.dispatch("gengage:similar:add-to-cart",e),this.track(s.basketAddEvent(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:"TRY",line_items:e.quantity,sku:e.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}async _fetchAndRender(e){this._abort(),this._abortController=new AbortController;const t=this._abortController.signal,r=setTimeout(()=>this._abortController?.abort(),1e4);if(t.addEventListener("abort",()=>clearTimeout(r)),!this._contentEl)return;this._contentEl.innerHTML="",this._contentEl.style.display="";const i=document.createElement("div");i.className="gengage-simrel-loading";const a=document.createElement("div");a.className="gengage-simrel-spinner",i.appendChild(a),this._contentEl.appendChild(i);const c={middlewareUrl:this.config.middlewareUrl},g=crypto.randomUUID(),p=Date.now();this.track(s.streamStartEvent(this.analyticsContext(),{endpoint:"similar_products",request_id:g,widget:"simrel"}));try{const u={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:e};this.config.domain!==void 0&&(u.domain=this.config.domain);const d=await N(u,c,t);if(!this._contentEl)return;if(this._contentEl.innerHTML="",d.length>0)try{const m=d.map(y=>y.sku),f=await x({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:m},c,t);if(f.length>0&&this._contentEl){const y=this._buildGroupsSpec(f),l=this._renderUISpec(y);this._contentEl.appendChild(l),s.trackShow("simrel"),this.track(s.streamDoneEvent(this.analyticsContext(),{request_id:g,latency_ms:Date.now()-p,chunk_count:f.reduce((o,h)=>o+h.products.length,0),widget:"simrel"})),this.track(s.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:f.reduce((o,h)=>o+h.products.length,0),history_ref:g,redaction_level:"none",widget:"simrel"}));return}}catch{}if(t.aborted)return;if(this._contentEl){const m=this._buildProductsSpec(d),f=this._renderUISpec(m);this._contentEl.appendChild(f)}d.length>0&&s.trackShow("simrel"),this.track(s.streamDoneEvent(this.analyticsContext(),{request_id:g,latency_ms:Date.now()-p,chunk_count:d.length,widget:"simrel"})),this.track(s.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:d.length,history_ref:g,redaction_level:"none",widget:"simrel"}))}catch(u){if(u instanceof DOMException&&u.name==="AbortError")return;if(s.dispatch("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:s.getGlobalErrorMessage(this.config.locale)}),this.track(s.streamErrorEvent(this.analyticsContext(),{request_id:g,error_code:"FETCH_ERROR",error_message:u instanceof Error?u.message:String(u),widget:"simrel"})),this._contentEl){this._contentEl.innerHTML="";const d=document.createElement("div");d.className="gengage-simrel-error";const m=document.createElement("span");m.textContent=this._i18n.errorLoadingMessage,d.appendChild(m);const f=document.createElement("button");f.className="gengage-simrel-retry",f.textContent=this._i18n.retryButtonText,f.addEventListener("click",()=>{this._fetchAndRender(this.config.sku)}),d.appendChild(f),this._contentEl.appendChild(d)}}}_resolveI18n(e){return{...M(e.locale),...e.i18n}}_resolveUISpecRegistry(){const e=A();return s.mergeUISpecRegistry(e,this.config.renderer?.registry)}_buildRenderContext(){const e=this.config.renderCard,t={onClick:r=>this._handleProductClick(r),onAddToCart:r=>this._handleAddToCart(r),i18n:this._i18n};return this.config.discountType!==void 0&&(t.discountType=this.config.discountType),e!==void 0&&(t.renderCard=e),this.config.renderCardElement!==void 0&&(t.renderCardElement=this.config.renderCardElement),this.config.pricing!==void 0&&(t.pricing=this.config.pricing),t}_renderUISpec(e){const t=this._resolveUISpecRegistry(),r=this._buildRenderContext(),i=this.config.renderer?.unknownRenderer??E,a=(p,u)=>P(p,u,t,i),c=this.config.renderer?.renderUISpec;return c?c(e,r,{registry:t,unknownRenderer:i,defaultRender:a}):a(e,r)}_buildProductsSpec(e){const t={},r=[];for(let i=0;i<e.length;i++){const a=e[i],c=`product-${i}`;r.push(c),t[c]={type:"ProductCard",props:{product:a,index:i,discountType:this.config.discountType}}}return t.root={type:"ProductGrid",props:{layout:"grid"},children:r},{root:"root",elements:t}}_buildGroupsSpec(e){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:e}}}}}}function Q(){return new I}exports.GengageSimRel=I;exports.createDefaultSimRelUISpecRegistry=A;exports.createSimRelWidget=Q;exports.defaultSimRelUnknownUISpecRenderer=E;exports.renderSimRelUISpec=P;exports.simRelCatalog=W;
2
2
  //# sourceMappingURL=simrel.cjs.map
package/dist/simrel.css CHANGED
@@ -1 +1 @@
1
- .gengage-simrel-container{font-family:var(--gengage-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size, 14px);color:var(--gengage-foreground-color, #333);--_gengage-border-color: var(--gengage-border-color, #e5e7eb);--_gengage-discount-color: var(--gengage-discount-color, #ef4444);--_gengage-text-primary: var(--gengage-text-primary, #1f2937);--_gengage-text-secondary: var(--gengage-text-secondary, #6b7280);--_gengage-surface-muted: var(--gengage-surface-muted, #f8fafc);--_gengage-surface-secondary: var(--gengage-surface-secondary, #f3f4f6);--_gengage-rating-color: var(--gengage-rating-color, #d97706)}.gengage-simrel-uispec>*{animation:gengage-simrel-enter .2s cubic-bezier(.2,.72,.2,1) both}@keyframes gengage-simrel-enter{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.gengage-simrel-grid{display:flex;gap:12px;overflow-x:auto;padding:8px 0 72px;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity}.gengage-simrel-grid::-webkit-scrollbar{display:none}.gengage-simrel-grid>*{scroll-snap-align:start;flex:0 0 auto}.gengage-simrel-card{display:flex;flex-direction:column;position:relative;border:1px solid var(--_gengage-border-color);border-radius:var(--gengage-simrel-card-radius, 16px);overflow:hidden;background:var(--gengage-background-color, #fff);cursor:pointer;transition:box-shadow .2s ease,transform .1s ease;box-shadow:0 2px 8px #0000000f;width:160px;min-width:160px;max-width:160px}.gengage-simrel-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001f}.gengage-simrel-card-image{position:relative;overflow:hidden;background:#fff}.gengage-simrel-card-image img{width:100%;height:120px;object-fit:contain;display:block;padding:8px;box-sizing:border-box}.gengage-simrel-badge{position:absolute;top:8px;left:8px;padding:2px 8px;border-radius:4px;background:var(--_gengage-discount-color);color:#fff;font-size:12px;font-weight:600}.gengage-simrel-card-info{padding:8px 10px 10px;display:flex;flex-direction:column;gap:4px;text-align:center}.gengage-simrel-card-brand{font-size:10px;color:var(--_gengage-text-secondary)}.gengage-simrel-card-name{font-size:13px;font-weight:600;color:var(--_gengage-text-primary);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;min-height:2.7em}.gengage-simrel-card-rating{font-size:12px;color:var(--_gengage-rating-color)}.gengage-simrel-card-rating .gengage-star-half{display:inline-block;position:relative}.gengage-simrel-card-rating .gengage-star-half>span{position:absolute;left:0;top:0;overflow:hidden;width:.5em}.gengage-simrel-card-review-count{color:var(--_gengage-text-secondary)}.gengage-simrel-card-price{padding-top:4px;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:2px 4px}.gengage-simrel-card-price-original{text-decoration:line-through;color:var(--_gengage-text-secondary);font-weight:400;font-size:12px}.gengage-simrel-card-price-current{font-size:16px;font-weight:800;color:var(--_gengage-text-primary)}.gengage-simrel-card-cta{display:block;margin-top:auto;width:100%;padding:8px 10px;text-align:center;border:none;border-top:1px solid var(--_gengage-surface-muted);border-radius:0;background:transparent;color:var(--gengage-primary-color, #3b82f6);font-family:inherit;font-size:12px;font-weight:700;letter-spacing:.01em;cursor:pointer;transition:color .15s ease,background .15s ease}.gengage-simrel-card-cta:hover{color:var(--gengage-primary-color, #0b24d6);background:var(--_gengage-surface-muted)}.gengage-simrel-atc{border:1px solid var(--_gengage-border-color, #e5e7eb);border-radius:8px}.gengage-simrel-card .gengage-simrel-atc{display:flex;width:100%;border-top:1px solid var(--_gengage-border-color);border-left:none;border-right:none;border-bottom:none;border-radius:0;background:transparent}.gengage-simrel-card .gengage-simrel-atc.gengage-qty-stepper{gap:0;overflow:hidden;border-radius:0;border-top:1px solid var(--_gengage-surface-muted);border-left:none;border-right:none;border-bottom:none}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-btn{width:32px;height:36px;color:var(--_gengage-text-secondary);font-size:14px}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-btn:hover:not(:disabled){background:var(--_gengage-surface-muted)}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-value{min-width:24px;font-size:13px;color:var(--_gengage-text-primary)}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-submit{flex:1;border-left:1px solid var(--_gengage-border-color);background:transparent;color:var(--gengage-primary-color, #3b82f6);font-weight:700;font-size:12px;font-family:inherit;letter-spacing:.01em;padding:8px 10px;border-radius:0;transition:color .15s ease,background .15s ease}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-submit:hover{color:var(--gengage-primary-color, #0b24d6);background:var(--_gengage-surface-muted)}.gengage-simrel-card-oos{width:100%;padding:8px 10px;text-align:center;border-top:1px solid var(--_gengage-surface-muted);color:var(--_gengage-text-secondary);font-size:12px;font-weight:600;letter-spacing:.01em}.gengage-simrel-card--out-of-stock{opacity:.55}.gengage-simrel-card--out-of-stock .gengage-simrel-card-image img{filter:grayscale(40%)}.gengage-simrel-quick-actions{display:flex;flex-wrap:wrap;gap:8px;padding:6px 12px 12px}.gengage-simrel-quick-action{border:1px solid var(--_gengage-border-color);background:var(--_gengage-surface-muted);color:var(--_gengage-text-primary);border-radius:999px;min-height:40px;padding:8px 10px;font-size:12px;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.gengage-simrel-quick-action:hover{border-color:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-color, #3b82f6);box-shadow:0 6px 14px #0f172a1f;transform:translateY(-1px)}.gengage-simrel-empty{width:100%;flex:1 0 100%;text-align:center;padding:40px 20px;color:var(--_gengage-text-secondary)}.gengage-simrel-error{text-align:center;padding:24px 16px;color:var(--_gengage-text-secondary, #6b7280);font-size:13px;line-height:1.5}.gengage-simrel-retry{display:inline-block;margin-top:8px;border:1px solid var(--_gengage-border-color, #d1d5db);background:#fff;border-radius:6px;padding:6px 16px;cursor:pointer;font-size:13px;color:var(--_gengage-text-primary, #374151);transition:background .15s}.gengage-simrel-retry:hover{background:var(--_gengage-surface-secondary, #f3f4f6)}.gengage-simrel-tabs{display:flex;gap:8px;border-bottom:2px solid var(--_gengage-border-color);margin-bottom:16px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.gengage-simrel-tabs::-webkit-scrollbar{display:none}.gengage-simrel-tab{min-height:40px;padding:10px 14px;border:none;background:transparent;color:var(--_gengage-text-primary, #374151);opacity:.7;font-size:inherit;font-family:inherit;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s,opacity .2s}.gengage-simrel-tab:hover{color:var(--gengage-primary-color, #3b82f6)}.gengage-simrel-tab--active{color:var(--gengage-primary-color, #3b82f6);border-bottom-color:var(--gengage-primary-color, #3b82f6);font-weight:600;opacity:1}.gengage-simrel-loading{display:flex;justify-content:center;padding:40px}.gengage-simrel-spinner{width:32px;height:32px;border:3px solid var(--_gengage-border-color);border-top-color:var(--gengage-primary-color, #3b82f6);border-radius:50%;animation:gengage-simrel-spin .7s linear infinite}@keyframes gengage-simrel-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.gengage-simrel-grid{gap:10px;padding-top:8px;scroll-snap-type:x mandatory}.gengage-simrel-card{width:200px;min-width:200px;max-width:200px;scroll-snap-align:center}.gengage-simrel-card-image img{height:140px}.gengage-simrel-card-cta,.gengage-simrel-quick-action,.gengage-simrel-tab{min-height:44px}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-btn{width:44px;height:44px;font-size:16px}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-submit{min-height:44px;flex-basis:auto;border-left:1px solid var(--_gengage-border-color);border-top:none}.gengage-simrel-card{border:1px solid var(--_gengage-border-color)}.gengage-simrel-card-price-current{font-size:14px}}.gengage-simrel-card:focus-visible,.gengage-simrel-tab:focus-visible,.gengage-simrel-quick-action:focus-visible,.gengage-simrel-atc .gengage-qty-btn:focus-visible,.gengage-simrel-atc .gengage-qty-submit:focus-visible{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:2px}@media(prefers-reduced-motion:reduce){.gengage-simrel-uispec>*,.gengage-simrel-card,.gengage-simrel-card-image img,.gengage-simrel-quick-action,.gengage-simrel-spinner{animation:none!important;transition:none!important;transform:none!important}}
1
+ .gengage-simrel-container{font-family:var( --gengage-font-family, "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif );font-size:var(--gengage-font-size, 14px);color:var(--gengage-foreground-color, #191c1d);--_gengage-border-color: var(--gengage-border-color, #edeeef);--_gengage-discount-color: var(--gengage-discount-color, #a03d40);--_gengage-text-primary: var(--gengage-text-primary, #191c1d);--_gengage-text-secondary: var(--gengage-text-secondary, #6b7280);--_gengage-surface-muted: var(--gengage-surface-muted, #f8f9fa);--_gengage-surface-secondary: var(--gengage-surface-secondary, #f3f4f5);--_gengage-rating-color: var(--gengage-rating-color, #d97706)}.gengage-simrel-uispec>*{animation:gengage-simrel-enter .2s cubic-bezier(.2,.72,.2,1) both}@keyframes gengage-simrel-enter{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.gengage-simrel-grid{display:flex;gap:12px;overflow-x:auto;padding:8px 0 72px;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity}.gengage-simrel-grid::-webkit-scrollbar{display:none}.gengage-simrel-grid>*{scroll-snap-align:start;flex:0 0 auto}.gengage-simrel-card{display:flex;flex-direction:column;position:relative;border:1px solid var(--_gengage-border-color);border-radius:var(--gengage-simrel-card-radius, 16px);overflow:hidden;background:var(--gengage-background-color, #fff);cursor:pointer;transition:box-shadow .2s ease,transform .1s ease;box-shadow:0 2px 8px #0000000f;width:160px;min-width:160px;max-width:160px}.gengage-simrel-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001f}.gengage-simrel-card-image{position:relative;overflow:hidden;background:#fff}.gengage-simrel-card-image img{width:100%;height:120px;object-fit:contain;display:block;padding:8px;box-sizing:border-box}.gengage-simrel-badge{position:absolute;top:8px;left:8px;padding:2px 8px;border-radius:4px;background:var(--_gengage-discount-color);color:#fff;font-size:12px;font-weight:600}.gengage-simrel-card-info{padding:8px 10px 10px;display:flex;flex-direction:column;gap:4px;text-align:center}.gengage-simrel-card-brand{font-size:10px;color:var(--_gengage-text-secondary)}.gengage-simrel-card-name{font-size:13px;font-weight:600;color:var(--_gengage-text-primary);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;min-height:2.7em}.gengage-simrel-card-rating{font-size:12px;color:var(--_gengage-rating-color)}.gengage-simrel-card-rating .gengage-star-half{display:inline-block;position:relative}.gengage-simrel-card-rating .gengage-star-half>span{position:absolute;left:0;top:0;overflow:hidden;width:.5em}.gengage-simrel-card-review-count{color:var(--_gengage-text-secondary)}.gengage-simrel-card-price{padding-top:4px;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:2px 4px}.gengage-simrel-card-price-original{text-decoration:line-through;color:var(--_gengage-text-secondary);font-weight:400;font-size:12px}.gengage-simrel-card-price-current{font-size:16px;font-weight:800;color:var(--_gengage-text-primary)}.gengage-simrel-card-cta{display:block;margin-top:auto;width:100%;padding:8px 10px;text-align:center;border:none;border-top:1px solid var(--_gengage-surface-muted);border-radius:0;background:transparent;color:var(--gengage-primary-color, #b7102a);font-family:inherit;font-size:12px;font-weight:700;letter-spacing:.01em;cursor:pointer;transition:color .15s ease,background .15s ease}.gengage-simrel-card-cta:hover{color:var(--gengage-primary-color, #9a0d23);background:var(--_gengage-surface-muted)}.gengage-simrel-atc{border:1px solid var(--_gengage-border-color, #e5e7eb);border-radius:8px}.gengage-simrel-card .gengage-simrel-atc{display:flex;width:100%;border-top:1px solid var(--_gengage-border-color);border-left:none;border-right:none;border-bottom:none;border-radius:0;background:transparent}.gengage-simrel-card .gengage-simrel-atc.gengage-qty-stepper{gap:0;overflow:hidden;border-radius:0;border-top:1px solid var(--_gengage-surface-muted);border-left:none;border-right:none;border-bottom:none}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-btn{width:32px;height:36px;color:var(--_gengage-text-secondary);font-size:14px}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-btn:hover:not(:disabled){background:var(--_gengage-surface-muted)}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-value{min-width:24px;font-size:13px;color:var(--_gengage-text-primary)}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-submit{flex:1;border-left:1px solid var(--_gengage-border-color);background:transparent;color:var(--gengage-primary-color, #b7102a);font-weight:700;font-size:12px;font-family:inherit;letter-spacing:.01em;padding:8px 10px;border-radius:0;transition:color .15s ease,background .15s ease}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-submit:hover{color:var(--gengage-primary-color, #9a0d23);background:var(--_gengage-surface-muted)}.gengage-simrel-card-oos{width:100%;padding:8px 10px;text-align:center;border-top:1px solid var(--_gengage-surface-muted);color:var(--_gengage-text-secondary);font-size:12px;font-weight:600;letter-spacing:.01em}.gengage-simrel-card--out-of-stock{opacity:.55}.gengage-simrel-card--out-of-stock .gengage-simrel-card-image img{filter:grayscale(40%)}.gengage-simrel-quick-actions{display:flex;flex-wrap:wrap;gap:8px;padding:6px 12px 12px}.gengage-simrel-quick-action{border:1px solid var(--_gengage-border-color);background:var(--_gengage-surface-muted);color:var(--_gengage-text-primary);border-radius:999px;min-height:40px;padding:8px 10px;font-size:12px;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.gengage-simrel-quick-action:hover{border-color:var(--gengage-primary-color, #b7102a);color:var(--gengage-primary-color, #b7102a);box-shadow:0 6px 14px #0f172a1f;transform:translateY(-1px)}.gengage-simrel-empty{width:100%;flex:1 0 100%;text-align:center;padding:40px 20px;color:var(--_gengage-text-secondary)}.gengage-simrel-error{text-align:center;padding:24px 16px;color:var(--_gengage-text-secondary, #6b7280);font-size:13px;line-height:1.5}.gengage-simrel-retry{display:inline-block;margin-top:8px;border:1px solid var(--_gengage-border-color, #d1d5db);background:#fff;border-radius:6px;padding:6px 16px;cursor:pointer;font-size:13px;color:var(--_gengage-text-primary, #374151);transition:background .15s}.gengage-simrel-retry:hover{background:var(--_gengage-surface-secondary, #f3f4f6)}.gengage-simrel-tabs{display:flex;gap:8px;border-bottom:2px solid var(--_gengage-border-color);margin-bottom:16px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.gengage-simrel-tabs::-webkit-scrollbar{display:none}.gengage-simrel-tab{min-height:40px;padding:10px 14px;border:none;background:transparent;color:var(--_gengage-text-primary, #374151);opacity:.7;font-size:inherit;font-family:inherit;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s,opacity .2s}.gengage-simrel-tab:hover{color:var(--gengage-primary-color, #b7102a)}.gengage-simrel-tab--active{color:var(--gengage-primary-color, #b7102a);border-bottom-color:var(--gengage-primary-color, #b7102a);font-weight:600;opacity:1}.gengage-simrel-loading{display:flex;justify-content:center;padding:40px}.gengage-simrel-spinner{width:32px;height:32px;border:3px solid var(--_gengage-border-color);border-top-color:var(--gengage-primary-color, #b7102a);border-radius:50%;animation:gengage-simrel-spin .7s linear infinite}@keyframes gengage-simrel-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.gengage-simrel-grid{gap:10px;padding-top:8px;scroll-snap-type:x mandatory}.gengage-simrel-card{width:200px;min-width:200px;max-width:200px;scroll-snap-align:center}.gengage-simrel-card-image img{height:140px}.gengage-simrel-card-cta,.gengage-simrel-quick-action,.gengage-simrel-tab{min-height:44px}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-btn{width:44px;height:44px;font-size:16px}.gengage-simrel-card .gengage-simrel-atc .gengage-qty-submit{min-height:44px;flex-basis:auto;border-left:1px solid var(--_gengage-border-color);border-top:none}.gengage-simrel-card{border:1px solid var(--_gengage-border-color)}.gengage-simrel-card-price-current{font-size:14px}}.gengage-simrel-card:focus-visible,.gengage-simrel-tab:focus-visible,.gengage-simrel-quick-action:focus-visible,.gengage-simrel-atc .gengage-qty-btn:focus-visible,.gengage-simrel-atc .gengage-qty-submit:focus-visible{outline:2px solid var(--gengage-primary-color, #b7102a);outline-offset:2px}@media(prefers-reduced-motion:reduce){.gengage-simrel-uispec>*,.gengage-simrel-card,.gengage-simrel-card-image img,.gengage-simrel-quick-action,.gengage-simrel-spinner{animation:none!important;transition:none!important;transform:none!important}}
@@ -1,4 +1,4 @@
1
- (function(F){"use strict";const dn=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const n=document.createElement("div");for(const r of e.children){const o=t(r);o&&n.appendChild(o)}return n};function ln(e){const t=document.createElement("div");if(t.className=e.containerClassName,!e.spec.elements[e.spec.root])return t;const r=e.unknownRenderer??dn,o=s=>{const a=e.spec.elements[s];if(!a)return null;const c=e.registry[a.type];return c?c({elementId:s,element:a,spec:e.spec,context:e.context,renderElement:o}):r({elementId:s,element:a,spec:e.spec,context:e.context,renderElement:o})},i=o(e.spec.root);return i&&t.appendChild(i),t}function pn(e,t){if(!t)return e;const n={...e};for(const[r,o]of Object.entries(t))o&&(n[r]=o);return n}function fn(e,t){const n={event_name:"stream.start",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{endpoint:t.endpoint,request_id:t.request_id}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),t.widget!==void 0&&(n.widget=t.widget),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function Re(e,t){const n={event_name:"stream.done",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{request_id:t.request_id,latency_ms:t.latency_ms,chunk_count:t.chunk_count}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),t.widget!==void 0&&(n.widget=t.widget),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function gn(e,t){const n={event_name:"stream.error",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{request_id:t.request_id,error_code:t.error_code,error_message:t.error_message}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),t.widget!==void 0&&(n.widget=t.widget),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function mn(e,t){const n={event_name:"metering.summary",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{meter_key:t.meter_key,quantity:t.quantity,unit:t.unit}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function xe(e,t){const n={event_name:"widget.history.snapshot",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.widget,payload:{message_count:t.message_count,history_ref:t.history_ref,redaction_level:t.redaction_level}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function hn(e,t){const n={event_name:"basket.add",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items,sku:t.sku}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function _n(e,t){const n={event_name:"checkout.start",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function yn(e,t){const n={event_name:"checkout.complete",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}const vn=new Set(["p","br","a","strong","b","em","i","u","ul","ol","li","h1","h2","h3","h4","h5","h6","span","div","table","thead","tbody","tr","th","td","hr","code","pre","blockquote","img","sup","sub"]),bn=new Set(["script","iframe","object","embed","form","input","textarea","select","button","style","link","meta","template","noscript"]),Le={"*":new Set(["class"]),a:new Set(["href","target","rel"]),img:new Set(["src","alt","width","height"]),div:new Set(["style"]),span:new Set(["style"]),p:new Set(["style"])};function wn(e){return/^\s*javascript\s*:/i.test(e)}const kn=new Set(["color","background-color","font-size","font-weight","font-style","font-family","text-align","text-decoration","line-height","letter-spacing","margin","margin-top","margin-right","margin-bottom","margin-left","padding","padding-top","padding-right","padding-bottom","padding-left","border","border-top","border-right","border-bottom","border-left","border-radius","border-color","border-width","border-style","width","max-width","min-width","height","max-height","min-height","display","vertical-align","white-space","word-break","overflow","opacity","visibility","list-style","list-style-type","text-transform","text-indent","text-overflow","box-sizing","flex","flex-direction","flex-wrap","justify-content","align-items","gap"]),Sn=/url\s*\(|expression\s*\(|javascript\s*:|\bimport\b|-moz-binding|behavior\s*:/i;function En(e){const t=[];for(const n of e.split(";")){const r=n.trim();if(!r)continue;const o=r.indexOf(":");if(o===-1)continue;const i=r.slice(0,o).trim().toLowerCase(),s=r.slice(o+1).trim();kn.has(i)&&(Sn.test(s)||t.push(r))}return t.join("; ")}function ge(e,t){if(e.nodeType===Node.TEXT_NODE)return;if(e.nodeType!==Node.ELEMENT_NODE){e.parentNode?.removeChild(e);return}const n=e,r=n.tagName.toLowerCase();if(bn.has(r)){n.parentNode?.removeChild(n);return}if(!vn.has(r)){const c=Array.from(n.childNodes);for(const u of c)t.insertBefore(u,n);t.removeChild(n);for(const u of c)ge(u,t);return}const o=Le["*"]??new Set,i=Le[r]??new Set,s=Array.from(n.attributes);for(const c of s){const u=c.name.toLowerCase();if(!o.has(u)&&!i.has(u)){n.removeAttribute(c.name);continue}if(wn(c.value)){n.removeAttribute(c.name);continue}if(u==="style"){const d=En(c.value);d?n.setAttribute("style",d):n.removeAttribute("style");continue}}if(r==="a"){const c=n.getAttribute("href");if(c!==null){const u=c.trim().toLowerCase();!u.startsWith("http://")&&!u.startsWith("https://")&&!u.startsWith("mailto:")&&n.removeAttribute("href")}n.setAttribute("target","_blank"),n.setAttribute("rel","noopener noreferrer")}if(r==="img"){const c=n.getAttribute("src");c!==null&&(c.trim().toLowerCase().startsWith("https://")||n.removeAttribute("src"))}const a=Array.from(n.childNodes);for(const c of a)ge(c,n)}const zn=["http:","https:"];function Cn(e){try{return zn.includes(new URL(e).protocol)}catch{return!1}}function Tn(e){if(!e)return"";const n=new DOMParser().parseFromString(e,"text/html").body,r=Array.from(n.childNodes);for(const o of r)ge(o,n);return n.innerHTML}function me(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!1}))}function De(e,t){const n=r=>{t(r.detail)};return window.addEventListener(e,n),()=>window.removeEventListener(e,n)}function $n(){const t=window.__gengageSessionId??sessionStorage.getItem("gengage_session_id")??null??crypto.randomUUID();return window.__gengageSessionId=t,sessionStorage.setItem("gengage_session_id",t),window.gengage||(window.gengage={}),window.gengage.sessionId=t,t}function In(e){return{sessionId:e?.sessionId??$n(),...e}}const je={"--gengage-chat-offset":"20px","--gengage-chat-launcher-size":"56px","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"12px","--gengage-chat-header-height":"60px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"860px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"14px","--gengage-simrel-card-radius":"14px"};function An(e){return e?{...je,...e}:{...je}}const L="gengage-global-toast-root",Ue="gengage-global-toast-style",he="gengage-global-toast-root--visible",Pn=4200,On=1500,Nn=15e3;let Me=!1,q=null;function Zn(e){return typeof e=="string"&&e.toLowerCase().startsWith("tr")?"Bağlantı sorunu oluştu. Lütfen tekrar deneyin.":"Connection issue. Please try again."}function Rn(){Me||typeof window>"u"||typeof document>"u"||(Me=!0,De("gengage:global:error",e=>{xn(e)}))}function xn(e){if(typeof document>"u")return;const t=e.message.trim();if(!t)return;Mn();const n=jn();n.innerHTML="";const r=document.createElement("section");r.className="gengage-global-toast gengage-global-toast--error",r.setAttribute("role","status"),r.setAttribute("aria-live","polite");const o=document.createElement("div");o.className="gengage-global-toast-title",o.textContent=Dn(e.source);const i=document.createElement("div");i.className="gengage-global-toast-message",i.textContent=t,r.appendChild(o),r.appendChild(i),n.appendChild(r),n.classList.add(he),q&&(clearTimeout(q),q=null),q=setTimeout(()=>{Ln()},Un(e.durationMs))}function Ln(){if(typeof document>"u")return;const e=document.getElementById(L);e&&(e.classList.remove(he),e.innerHTML="",q&&(clearTimeout(q),q=null))}function Dn(e){switch(e){case"chat":return"Chat warning";case"qna":return"QnA warning";case"simrel":return"Widget warning";default:return"Connection warning"}}function jn(){const e=document.getElementById(L);if(e instanceof HTMLElement)return e;const t=document.createElement("div");return t.id=L,t.className="gengage-global-toast-root",document.body.appendChild(t),t}function Un(e){return typeof e!="number"||!Number.isFinite(e)?Pn:Math.min(Nn,Math.max(On,Math.round(e)))}function Mn(){if(document.getElementById(Ue))return;const e=document.createElement("style");e.id=Ue,e.textContent=`
1
+ (function(F){"use strict";const dn=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const n=document.createElement("div");for(const r of e.children){const o=t(r);o&&n.appendChild(o)}return n};function ln(e){const t=document.createElement("div");if(t.className=e.containerClassName,!e.spec.elements[e.spec.root])return t;const r=e.unknownRenderer??dn,o=s=>{const a=e.spec.elements[s];if(!a)return null;const c=e.registry[a.type];return c?c({elementId:s,element:a,spec:e.spec,context:e.context,renderElement:o}):r({elementId:s,element:a,spec:e.spec,context:e.context,renderElement:o})},i=o(e.spec.root);return i&&t.appendChild(i),t}function pn(e,t){if(!t)return e;const n={...e};for(const[r,o]of Object.entries(t))o&&(n[r]=o);return n}function fn(e,t){const n={event_name:"stream.start",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{endpoint:t.endpoint,request_id:t.request_id}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),t.widget!==void 0&&(n.widget=t.widget),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function Re(e,t){const n={event_name:"stream.done",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{request_id:t.request_id,latency_ms:t.latency_ms,chunk_count:t.chunk_count}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),t.widget!==void 0&&(n.widget=t.widget),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function gn(e,t){const n={event_name:"stream.error",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{request_id:t.request_id,error_code:t.error_code,error_message:t.error_message}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),t.widget!==void 0&&(n.widget=t.widget),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function mn(e,t){const n={event_name:"metering.summary",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:{meter_key:t.meter_key,quantity:t.quantity,unit:t.unit}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function xe(e,t){const n={event_name:"widget.history.snapshot",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.widget,payload:{message_count:t.message_count,history_ref:t.history_ref,redaction_level:t.redaction_level}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function hn(e,t){const n={event_name:"basket.add",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items,sku:t.sku}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function _n(e,t){const n={event_name:"checkout.start",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}function yn(e,t){const n={event_name:"checkout.complete",account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,widget:t.attribution_source,payload:{attribution_source:t.attribution_source,attribution_action_id:t.attribution_action_id,cart_value:t.cart_value,currency:t.currency,line_items:t.line_items}};return e.view_id!==void 0&&(n.view_id=e.view_id),e.user_id!==void 0&&(n.user_id=e.user_id),e.page_type!==void 0&&(n.page_type=e.page_type),e.sku!==void 0&&(n.sku=e.sku),n}const vn=new Set(["p","br","a","strong","b","em","i","u","ul","ol","li","h1","h2","h3","h4","h5","h6","span","div","table","thead","tbody","tr","th","td","hr","code","pre","blockquote","img","sup","sub"]),bn=new Set(["script","iframe","object","embed","form","input","textarea","select","button","style","link","meta","template","noscript"]),Le={"*":new Set(["class"]),a:new Set(["href","target","rel"]),img:new Set(["src","alt","width","height"]),div:new Set(["style"]),span:new Set(["style"]),p:new Set(["style"])};function wn(e){return/^\s*javascript\s*:/i.test(e)}const kn=new Set(["color","background-color","font-size","font-weight","font-style","font-family","text-align","text-decoration","line-height","letter-spacing","margin","margin-top","margin-right","margin-bottom","margin-left","padding","padding-top","padding-right","padding-bottom","padding-left","border","border-top","border-right","border-bottom","border-left","border-radius","border-color","border-width","border-style","width","max-width","min-width","height","max-height","min-height","display","vertical-align","white-space","word-break","overflow","opacity","visibility","list-style","list-style-type","text-transform","text-indent","text-overflow","box-sizing","flex","flex-direction","flex-wrap","justify-content","align-items","gap"]),Sn=/url\s*\(|expression\s*\(|javascript\s*:|\bimport\b|-moz-binding|behavior\s*:/i;function En(e){const t=[];for(const n of e.split(";")){const r=n.trim();if(!r)continue;const o=r.indexOf(":");if(o===-1)continue;const i=r.slice(0,o).trim().toLowerCase(),s=r.slice(o+1).trim();kn.has(i)&&(Sn.test(s)||t.push(r))}return t.join("; ")}function ge(e,t){if(e.nodeType===Node.TEXT_NODE)return;if(e.nodeType!==Node.ELEMENT_NODE){e.parentNode?.removeChild(e);return}const n=e,r=n.tagName.toLowerCase();if(bn.has(r)){n.parentNode?.removeChild(n);return}if(!vn.has(r)){const c=Array.from(n.childNodes);for(const u of c)t.insertBefore(u,n);t.removeChild(n);for(const u of c)ge(u,t);return}const o=Le["*"]??new Set,i=Le[r]??new Set,s=Array.from(n.attributes);for(const c of s){const u=c.name.toLowerCase();if(!o.has(u)&&!i.has(u)){n.removeAttribute(c.name);continue}if(wn(c.value)){n.removeAttribute(c.name);continue}if(u==="style"){const d=En(c.value);d?n.setAttribute("style",d):n.removeAttribute("style");continue}}if(r==="a"){const c=n.getAttribute("href");if(c!==null){const u=c.trim().toLowerCase();!u.startsWith("http://")&&!u.startsWith("https://")&&!u.startsWith("mailto:")&&n.removeAttribute("href")}n.setAttribute("target","_blank"),n.setAttribute("rel","noopener noreferrer")}if(r==="img"){const c=n.getAttribute("src");c!==null&&(c.trim().toLowerCase().startsWith("https://")||n.removeAttribute("src"))}const a=Array.from(n.childNodes);for(const c of a)ge(c,n)}const zn=["http:","https:"];function Cn(e){try{return zn.includes(new URL(e).protocol)}catch{return!1}}function Tn(e){if(!e)return"";const n=new DOMParser().parseFromString(e,"text/html").body,r=Array.from(n.childNodes);for(const o of r)ge(o,n);return n.innerHTML}function me(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!1}))}function De(e,t){const n=r=>{t(r.detail)};return window.addEventListener(e,n),()=>window.removeEventListener(e,n)}function $n(){const t=window.__gengageSessionId??sessionStorage.getItem("gengage_session_id")??null??crypto.randomUUID();return window.__gengageSessionId=t,sessionStorage.setItem("gengage_session_id",t),window.gengage||(window.gengage={}),window.gengage.sessionId=t,t}function In(e){return{sessionId:e?.sessionId??$n(),...e}}const je={"--gengage-chat-offset":"20px","--gengage-chat-launcher-size":"56px","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"1rem","--gengage-chat-header-height":"60px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"860px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"0.75rem","--gengage-simrel-card-radius":"0.75rem"};function An(e){return e?{...je,...e}:{...je}}const L="gengage-global-toast-root",Ue="gengage-global-toast-style",he="gengage-global-toast-root--visible",Pn=4200,On=1500,Nn=15e3;let Me=!1,q=null;function Zn(e){return typeof e=="string"&&e.toLowerCase().startsWith("tr")?"Bağlantı sorunu oluştu. Lütfen tekrar deneyin.":"Connection issue. Please try again."}function Rn(){Me||typeof window>"u"||typeof document>"u"||(Me=!0,De("gengage:global:error",e=>{xn(e)}))}function xn(e){if(typeof document>"u")return;const t=e.message.trim();if(!t)return;Mn();const n=jn();n.innerHTML="";const r=document.createElement("section");r.className="gengage-global-toast gengage-global-toast--error",r.setAttribute("role","status"),r.setAttribute("aria-live","polite");const o=document.createElement("div");o.className="gengage-global-toast-title",o.textContent=Dn(e.source);const i=document.createElement("div");i.className="gengage-global-toast-message",i.textContent=t,r.appendChild(o),r.appendChild(i),n.appendChild(r),n.classList.add(he),q&&(clearTimeout(q),q=null),q=setTimeout(()=>{Ln()},Un(e.durationMs))}function Ln(){if(typeof document>"u")return;const e=document.getElementById(L);e&&(e.classList.remove(he),e.innerHTML="",q&&(clearTimeout(q),q=null))}function Dn(e){switch(e){case"chat":return"Chat warning";case"qna":return"QnA warning";case"simrel":return"Widget warning";default:return"Connection warning"}}function jn(){const e=document.getElementById(L);if(e instanceof HTMLElement)return e;const t=document.createElement("div");return t.id=L,t.className="gengage-global-toast-root",document.body.appendChild(t),t}function Un(e){return typeof e!="number"||!Number.isFinite(e)?Pn:Math.min(Nn,Math.max(On,Math.round(e)))}function Mn(){if(document.getElementById(Ue))return;const e=document.createElement("style");e.id=Ue,e.textContent=`
2
2
  #${L} {
3
3
  position: fixed;
4
4
  top: 16px;