@gengage/assistant-fe 0.2.2 → 0.2.3

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.
@@ -93,5 +93,5 @@
93
93
 
94
94
  `)}u.write("payload.value = newResult;"),u.write("return payload;");const k=u.compile();return(E,w)=>k(p,E,w)};let r;const o=He,s=!yn.jitless,l=s&&ls.value,d=t.catchall;let g;e._zod.parse=(p,u)=>{g??(g=a.value);const f=p.value;return o(f)?s&&l&&u?.async===!1&&u.jitless!==!0?(r||(r=i(t.shape)),p=r(p,u),d?qn([],f,p,u,g,e):p):n(p,u):(p.issues.push({expected:"object",code:"invalid_type",input:f,inst:e}),p)}});function Fn(e,t,n,a){for(const r of e)if(r.issues.length===0)return t.value=r.value,t;const i=e.filter(r=>!Se(r));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(r=>r.issues.map(o=>ve(o,a,be())))}),t)}const Kc=v("$ZodUnion",(e,t)=>{F.init(e,t),O(e._zod,"optin",()=>t.options.some(i=>i._zod.optin==="optional")?"optional":void 0),O(e._zod,"optout",()=>t.options.some(i=>i._zod.optout==="optional")?"optional":void 0),O(e._zod,"values",()=>{if(t.options.every(i=>i._zod.values))return new Set(t.options.flatMap(i=>Array.from(i._zod.values)))}),O(e._zod,"pattern",()=>{if(t.options.every(i=>i._zod.pattern)){const i=t.options.map(r=>r._zod.pattern);return new RegExp(`^(${i.map(r=>wt(r.source)).join("|")})$`)}});const n=t.options.length===1,a=t.options[0]._zod.run;e._zod.parse=(i,r)=>{if(n)return a(i,r);let o=!1;const s=[];for(const c of t.options){const l=c._zod.run({value:i.value,issues:[]},r);if(l instanceof Promise)s.push(l),o=!0;else{if(l.issues.length===0)return l;s.push(l)}}return o?Promise.all(s).then(c=>Fn(c,i,e,r)):Fn(s,i,e,r)}}),Yc=v("$ZodIntersection",(e,t)=>{F.init(e,t),e._zod.parse=(n,a)=>{const i=n.value,r=t.left._zod.run({value:i,issues:[]},a),o=t.right._zod.run({value:i,issues:[]},a);return r instanceof Promise||o instanceof Promise?Promise.all([r,o]).then(([c,l])=>jn(n,c,l)):jn(n,r,o)}});function St(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Pe(e)&&Pe(t)){const n=Object.keys(t),a=Object.keys(e).filter(r=>n.indexOf(r)!==-1),i={...e,...t};for(const r of a){const o=St(e[r],t[r]);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};i[r]=o.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let a=0;a<e.length;a++){const i=e[a],r=t[a],o=St(i,r);if(!o.valid)return{valid:!1,mergeErrorPath:[a,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function jn(e,t,n){const a=new Map;let i;for(const s of t.issues)if(s.code==="unrecognized_keys"){i??(i=s);for(const c of s.keys)a.has(c)||a.set(c,{}),a.get(c).l=!0}else e.issues.push(s);for(const s of n.issues)if(s.code==="unrecognized_keys")for(const c of s.keys)a.has(c)||a.set(c,{}),a.get(c).r=!0;else e.issues.push(s);const r=[...a].filter(([,s])=>s.l&&s.r).map(([s])=>s);if(r.length&&i&&e.issues.push({...i,keys:r}),Se(e))return e;const o=St(t.value,n.value);if(!o.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}const Qc=v("$ZodEnum",(e,t)=>{F.init(e,t);const n=wn(t.entries),a=new Set(n);e._zod.values=a,e._zod.pattern=new RegExp(`^(${n.filter(i=>ds.has(typeof i)).map(i=>typeof i=="string"?Ee(i):i.toString()).join("|")})$`),e._zod.parse=(i,r)=>{const o=i.value;return a.has(o)||i.issues.push({code:"invalid_value",values:n,input:o,inst:e}),i}}),Xc=v("$ZodLiteral",(e,t)=>{if(F.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");const n=new Set(t.values);e._zod.values=n,e._zod.pattern=new RegExp(`^(${t.values.map(a=>typeof a=="string"?Ee(a):a?Ee(a.toString()):String(a)).join("|")})$`),e._zod.parse=(a,i)=>{const r=a.value;return n.has(r)||a.issues.push({code:"invalid_value",values:t.values,input:r,inst:e}),a}}),el=v("$ZodTransform",(e,t)=>{F.init(e,t),e._zod.parse=(n,a)=>{if(a.direction==="backward")throw new vn(e.constructor.name);const i=t.transform(n.value,n);if(a.async)return(i instanceof Promise?i:Promise.resolve(i)).then(o=>(n.value=o,n));if(i instanceof Promise)throw new Ce;return n.value=i,n}});function Zn(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const Hn=v("$ZodOptional",(e,t)=>{F.init(e,t),e._zod.optin="optional",e._zod.optout="optional",O(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),O(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${wt(n.source)})?$`):void 0}),e._zod.parse=(n,a)=>{if(t.innerType._zod.optin==="optional"){const i=t.innerType._zod.run(n,a);return i instanceof Promise?i.then(r=>Zn(r,n.value)):Zn(i,n.value)}return n.value===void 0?n:t.innerType._zod.run(n,a)}}),tl=v("$ZodExactOptional",(e,t)=>{Hn.init(e,t),O(e._zod,"values",()=>t.innerType._zod.values),O(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(n,a)=>t.innerType._zod.run(n,a)}),nl=v("$ZodNullable",(e,t)=>{F.init(e,t),O(e._zod,"optin",()=>t.innerType._zod.optin),O(e._zod,"optout",()=>t.innerType._zod.optout),O(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${wt(n.source)}|null)$`):void 0}),O(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(n,a)=>n.value===null?n:t.innerType._zod.run(n,a)}),al=v("$ZodDefault",(e,t)=>{F.init(e,t),e._zod.optin="optional",O(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,a)=>{if(a.direction==="backward")return t.innerType._zod.run(n,a);if(n.value===void 0)return n.value=t.defaultValue,n;const i=t.innerType._zod.run(n,a);return i instanceof Promise?i.then(r=>Vn(r,t)):Vn(i,t)}});function Vn(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const il=v("$ZodPrefault",(e,t)=>{F.init(e,t),e._zod.optin="optional",O(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,a)=>(a.direction==="backward"||n.value===void 0&&(n.value=t.defaultValue),t.innerType._zod.run(n,a))}),rl=v("$ZodNonOptional",(e,t)=>{F.init(e,t),O(e._zod,"values",()=>{const n=t.innerType._zod.values;return n?new Set([...n].filter(a=>a!==void 0)):void 0}),e._zod.parse=(n,a)=>{const i=t.innerType._zod.run(n,a);return i instanceof Promise?i.then(r=>Wn(r,e)):Wn(i,e)}});function Wn(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}const ol=v("$ZodCatch",(e,t)=>{F.init(e,t),O(e._zod,"optin",()=>t.innerType._zod.optin),O(e._zod,"optout",()=>t.innerType._zod.optout),O(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,a)=>{if(a.direction==="backward")return t.innerType._zod.run(n,a);const i=t.innerType._zod.run(n,a);return i instanceof Promise?i.then(r=>(n.value=r.value,r.issues.length&&(n.value=t.catchValue({...n,error:{issues:r.issues.map(o=>ve(o,a,be()))},input:n.value}),n.issues=[]),n)):(n.value=i.value,i.issues.length&&(n.value=t.catchValue({...n,error:{issues:i.issues.map(r=>ve(r,a,be()))},input:n.value}),n.issues=[]),n)}}),sl=v("$ZodPipe",(e,t)=>{F.init(e,t),O(e._zod,"values",()=>t.in._zod.values),O(e._zod,"optin",()=>t.in._zod.optin),O(e._zod,"optout",()=>t.out._zod.optout),O(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(n,a)=>{if(a.direction==="backward"){const r=t.out._zod.run(n,a);return r instanceof Promise?r.then(o=>Ye(o,t.in,a)):Ye(r,t.in,a)}const i=t.in._zod.run(n,a);return i instanceof Promise?i.then(r=>Ye(r,t.out,a)):Ye(i,t.out,a)}});function Ye(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const cl=v("$ZodReadonly",(e,t)=>{F.init(e,t),O(e._zod,"propValues",()=>t.innerType._zod.propValues),O(e._zod,"values",()=>t.innerType._zod.values),O(e._zod,"optin",()=>t.innerType?._zod?.optin),O(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(n,a)=>{if(a.direction==="backward")return t.innerType._zod.run(n,a);const i=t.innerType._zod.run(n,a);return i instanceof Promise?i.then(Gn):Gn(i)}});function Gn(e){return e.value=Object.freeze(e.value),e}const ll=v("$ZodCustom",(e,t)=>{Q.init(e,t),F.init(e,t),e._zod.parse=(n,a)=>n,e._zod.check=n=>{const a=n.value,i=t.fn(a);if(i instanceof Promise)return i.then(r=>Jn(r,n,a,e));Jn(i,n,a,e)}});function Jn(e,t,n,a){if(!e){const i={code:"custom",input:n,inst:a,path:[...a._zod.def.path??[]],continue:!a._zod.def.abort};a._zod.def.params&&(i.params=a._zod.def.params),t.issues.push(ze(i))}}var Kn;class dl{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...n){const a=n[0];return this._map.set(t,a),a&&typeof a=="object"&&"id"in a&&this._idmap.set(a.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){const n=this._map.get(t);return n&&typeof n=="object"&&"id"in n&&this._idmap.delete(n.id),this._map.delete(t),this}get(t){const n=t._zod.parent;if(n){const a={...this.get(n)??{}};delete a.id;const i={...a,...this._map.get(t)};return Object.keys(i).length?i:void 0}return this._map.get(t)}has(t){return this._map.has(t)}}function gl(){return new dl}(Kn=globalThis).__zod_globalRegistry??(Kn.__zod_globalRegistry=gl());const Me=globalThis.__zod_globalRegistry;function pl(e,t){return new e({type:"string",...I(t)})}function ul(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...I(t)})}function Yn(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...I(t)})}function hl(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...I(t)})}function fl(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...I(t)})}function ml(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...I(t)})}function bl(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...I(t)})}function _l(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...I(t)})}function vl(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...I(t)})}function yl(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...I(t)})}function wl(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...I(t)})}function xl(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...I(t)})}function kl(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...I(t)})}function Cl(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...I(t)})}function El(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...I(t)})}function Sl(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...I(t)})}function Tl(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...I(t)})}function Il(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...I(t)})}function Al(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...I(t)})}function Nl(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...I(t)})}function Ll(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...I(t)})}function Pl(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...I(t)})}function zl(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...I(t)})}function Ml(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...I(t)})}function Rl(e,t){return new e({type:"string",format:"date",check:"string_format",...I(t)})}function Ol(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...I(t)})}function $l(e,t){return new e({type:"string",format:"duration",check:"string_format",...I(t)})}function Bl(e,t){return new e({type:"number",checks:[],...I(t)})}function Dl(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...I(t)})}function Ul(e,t){return new e({type:"boolean",...I(t)})}function ql(e){return new e({type:"unknown"})}function Fl(e,t){return new e({type:"never",...I(t)})}function Qn(e,t){return new Rn({check:"less_than",...I(t),value:e,inclusive:!1})}function Tt(e,t){return new Rn({check:"less_than",...I(t),value:e,inclusive:!0})}function Xn(e,t){return new On({check:"greater_than",...I(t),value:e,inclusive:!1})}function It(e,t){return new On({check:"greater_than",...I(t),value:e,inclusive:!0})}function ea(e,t){return new ic({check:"multiple_of",...I(t),value:e})}function ta(e,t){return new oc({check:"max_length",...I(t),maximum:e})}function Qe(e,t){return new sc({check:"min_length",...I(t),minimum:e})}function na(e,t){return new cc({check:"length_equals",...I(t),length:e})}function jl(e,t){return new lc({check:"string_format",format:"regex",...I(t),pattern:e})}function Zl(e){return new dc({check:"string_format",format:"lowercase",...I(e)})}function Hl(e){return new gc({check:"string_format",format:"uppercase",...I(e)})}function Vl(e,t){return new pc({check:"string_format",format:"includes",...I(t),includes:e})}function Wl(e,t){return new uc({check:"string_format",format:"starts_with",...I(t),prefix:e})}function Gl(e,t){return new hc({check:"string_format",format:"ends_with",...I(t),suffix:e})}function Te(e){return new fc({check:"overwrite",tx:e})}function Jl(e){return Te(t=>t.normalize(e))}function Kl(){return Te(e=>e.trim())}function Yl(){return Te(e=>e.toLowerCase())}function Ql(){return Te(e=>e.toUpperCase())}function Xl(){return Te(e=>cs(e))}function ed(e,t,n){return new e({type:"array",element:t,...I(n)})}function td(e,t,n){return new e({type:"custom",check:"custom",fn:t,...I(n)})}function nd(e){const t=ad(n=>(n.addIssue=a=>{if(typeof a=="string")n.issues.push(ze(a,n.value,t._zod.def));else{const i=a;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=n.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),n.issues.push(ze(i))}},e(n.value,n)));return t}function ad(e,t){const n=new Q({check:"custom",...I(t)});return n._zod.check=e,n}function aa(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Me,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function G(e,t,n={path:[],schemaPath:[]}){var a;const i=e._zod.def,r=t.seen.get(e);if(r)return r.count++,n.schemaPath.includes(e)&&(r.cycle=n.path),r.schema;const o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);const s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{const d={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,d);else{const p=o.schema,u=t.processors[i.type];if(!u)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);u(e,t,p,d)}const g=e._zod.parent;g&&(o.ref||(o.ref=g),G(g,t,d),t.seen.get(g).isParent=!0)}const c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io==="input"&&K(e)&&(delete o.schema.examples,delete o.schema.default),t.io==="input"&&o.schema._prefault&&((a=o.schema).default??(a.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function ia(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const a=new Map;for(const o of e.seen.entries()){const s=e.metadataRegistry.get(o[0])?.id;if(s){const c=a.get(s);if(c&&c!==o[0])throw new Error(`Duplicate schema id "${s}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);a.set(s,o[0])}}const i=o=>{const s=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const g=e.external.registry.get(o[0])?.id,p=e.external.uri??(f=>f);if(g)return{ref:p(g)};const u=o[1].defId??o[1].schema.id??`schema${e.counter++}`;return o[1].defId=u,{defId:u,ref:`${p("__shared")}#/${s}/${u}`}}if(o[1]===n)return{ref:"#"};const l=`#/${s}/`,d=o[1].schema.id??`__schema${e.counter++}`;return{defId:d,ref:l+d}},r=o=>{if(o[1].schema.$ref)return;const s=o[1],{ref:c,defId:l}=i(o);s.def={...s.schema},l&&(s.defId=l);const d=s.schema;for(const g in d)delete d[g];d.$ref=c};if(e.cycles==="throw")for(const o of e.seen.entries()){const s=o[1];if(s.cycle)throw new Error(`Cycle detected: #/${s.cycle?.join("/")}/<root>
95
95
 
96
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const o of e.seen.entries()){const s=o[1];if(t===o[0]){r(o);continue}if(e.external){const l=e.external.registry.get(o[0])?.id;if(t!==o[0]&&l){r(o);continue}}if(e.metadataRegistry.get(o[0])?.id){r(o);continue}if(s.cycle){r(o);continue}if(s.count>1&&e.reused==="ref"){r(o);continue}}}function ra(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const a=o=>{const s=e.seen.get(o);if(s.ref===null)return;const c=s.def??s.schema,l={...c},d=s.ref;if(s.ref=null,d){a(d);const p=e.seen.get(d),u=p.schema;if(u.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(u)):Object.assign(c,u),Object.assign(c,l),o._zod.parent===d)for(const h in c)h==="$ref"||h==="allOf"||h in l||delete c[h];if(u.$ref&&p.def)for(const h in c)h==="$ref"||h==="allOf"||h in p.def&&JSON.stringify(c[h])===JSON.stringify(p.def[h])&&delete c[h]}const g=o._zod.parent;if(g&&g!==d){a(g);const p=e.seen.get(g);if(p?.schema.$ref&&(c.$ref=p.schema.$ref,p.def))for(const u in c)u==="$ref"||u==="allOf"||u in p.def&&JSON.stringify(c[u])===JSON.stringify(p.def[u])&&delete c[u]}e.override({zodSchema:o,jsonSchema:c,path:s.path??[]})};for(const o of[...e.seen.entries()].reverse())a(o[0]);const i={};if(e.target==="draft-2020-12"?i.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?i.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?i.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const o=e.external.registry.get(t)?.id;if(!o)throw new Error("Schema is missing an `id` property");i.$id=e.external.uri(o)}Object.assign(i,n.def??n.schema);const r=e.external?.defs??{};for(const o of e.seen.entries()){const s=o[1];s.def&&s.defId&&(r[s.defId]=s.def)}e.external||Object.keys(r).length>0&&(e.target==="draft-2020-12"?i.$defs=r:i.definitions=r);try{const o=JSON.parse(JSON.stringify(i));return Object.defineProperty(o,"~standard",{value:{...t["~standard"],jsonSchema:{input:Xe(t,"input",e.processors),output:Xe(t,"output",e.processors)}},enumerable:!1,writable:!1}),o}catch{throw new Error("Error converting schema to JSON.")}}function K(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const a=e._zod.def;if(a.type==="transform")return!0;if(a.type==="array")return K(a.element,n);if(a.type==="set")return K(a.valueType,n);if(a.type==="lazy")return K(a.getter(),n);if(a.type==="promise"||a.type==="optional"||a.type==="nonoptional"||a.type==="nullable"||a.type==="readonly"||a.type==="default"||a.type==="prefault")return K(a.innerType,n);if(a.type==="intersection")return K(a.left,n)||K(a.right,n);if(a.type==="record"||a.type==="map")return K(a.keyType,n)||K(a.valueType,n);if(a.type==="pipe")return K(a.in,n)||K(a.out,n);if(a.type==="object"){for(const i in a.shape)if(K(a.shape[i],n))return!0;return!1}if(a.type==="union"){for(const i of a.options)if(K(i,n))return!0;return!1}if(a.type==="tuple"){for(const i of a.items)if(K(i,n))return!0;return!!(a.rest&&K(a.rest,n))}return!1}const id=(e,t={})=>n=>{const a=aa({...n,processors:t});return G(e,a),ia(a,e),ra(a,e)},Xe=(e,t,n={})=>a=>{const{libraryOptions:i,target:r}=a??{},o=aa({...i??{},target:r,io:t,processors:n});return G(e,o),ia(o,e),ra(o,e)},rd={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},od=(e,t,n,a)=>{const i=n;i.type="string";const{minimum:r,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof r=="number"&&(i.minLength=r),typeof o=="number"&&(i.maxLength=o),s&&(i.format=rd[s]??s,i.format===""&&delete i.format,s==="time"&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){const d=[...c];d.length===1?i.pattern=d[0].source:d.length>1&&(i.allOf=[...d.map(g=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:g.source}))])}},sd=(e,t,n,a)=>{const i=n,{minimum:r,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:d}=e._zod.bag;typeof s=="string"&&s.includes("int")?i.type="integer":i.type="number",typeof d=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(i.minimum=d,i.exclusiveMinimum=!0):i.exclusiveMinimum=d),typeof r=="number"&&(i.minimum=r,typeof d=="number"&&t.target!=="draft-04"&&(d>=r?delete i.minimum:delete i.exclusiveMinimum)),typeof l=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l),typeof o=="number"&&(i.maximum=o,typeof l=="number"&&t.target!=="draft-04"&&(l<=o?delete i.maximum:delete i.exclusiveMaximum)),typeof c=="number"&&(i.multipleOf=c)},cd=(e,t,n,a)=>{n.type="boolean"},ld=(e,t,n,a)=>{n.not={}},dd=(e,t,n,a)=>{},gd=(e,t,n,a)=>{const i=e._zod.def,r=wn(i.entries);r.every(o=>typeof o=="number")&&(n.type="number"),r.every(o=>typeof o=="string")&&(n.type="string"),n.enum=r},pd=(e,t,n,a)=>{const i=e._zod.def,r=[];for(const o of i.values)if(o===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof o=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");r.push(Number(o))}else r.push(o);if(r.length!==0)if(r.length===1){const o=r[0];n.type=o===null?"null":typeof o,t.target==="draft-04"||t.target==="openapi-3.0"?n.enum=[o]:n.const=o}else r.every(o=>typeof o=="number")&&(n.type="number"),r.every(o=>typeof o=="string")&&(n.type="string"),r.every(o=>typeof o=="boolean")&&(n.type="boolean"),r.every(o=>o===null)&&(n.type="null"),n.enum=r},ud=(e,t,n,a)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},hd=(e,t,n,a)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},fd=(e,t,n,a)=>{const i=n,r=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o=="number"&&(i.minItems=o),typeof s=="number"&&(i.maxItems=s),i.type="array",i.items=G(r.element,t,{...a,path:[...a.path,"items"]})},md=(e,t,n,a)=>{const i=n,r=e._zod.def;i.type="object",i.properties={};const o=r.shape;for(const l in o)i.properties[l]=G(o[l],t,{...a,path:[...a.path,"properties",l]});const s=new Set(Object.keys(o)),c=new Set([...s].filter(l=>{const d=r.shape[l]._zod;return t.io==="input"?d.optin===void 0:d.optout===void 0}));c.size>0&&(i.required=Array.from(c)),r.catchall?._zod.def.type==="never"?i.additionalProperties=!1:r.catchall?r.catchall&&(i.additionalProperties=G(r.catchall,t,{...a,path:[...a.path,"additionalProperties"]})):t.io==="output"&&(i.additionalProperties=!1)},bd=(e,t,n,a)=>{const i=e._zod.def,r=i.inclusive===!1,o=i.options.map((s,c)=>G(s,t,{...a,path:[...a.path,r?"oneOf":"anyOf",c]}));r?n.oneOf=o:n.anyOf=o},_d=(e,t,n,a)=>{const i=e._zod.def,r=G(i.left,t,{...a,path:[...a.path,"allOf",0]}),o=G(i.right,t,{...a,path:[...a.path,"allOf",1]}),s=l=>"allOf"in l&&Object.keys(l).length===1,c=[...s(r)?r.allOf:[r],...s(o)?o.allOf:[o]];n.allOf=c},vd=(e,t,n,a)=>{const i=e._zod.def,r=G(i.innerType,t,a),o=t.seen.get(e);t.target==="openapi-3.0"?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[r,{type:"null"}]},yd=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType},wd=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},xd=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType,t.io==="input"&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},kd=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=o},Cd=(e,t,n,a)=>{const i=e._zod.def,r=t.io==="input"?i.in._zod.def.type==="transform"?i.out:i.in:i.out;G(r,t,a);const o=t.seen.get(e);o.ref=r},Ed=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType,n.readOnly=!0},oa=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType},Sd=v("ZodISODateTime",(e,t)=>{Ac.init(e,t),U.init(e,t)});function Td(e){return Ml(Sd,e)}const Id=v("ZodISODate",(e,t)=>{Nc.init(e,t),U.init(e,t)});function Ad(e){return Rl(Id,e)}const Nd=v("ZodISOTime",(e,t)=>{Lc.init(e,t),U.init(e,t)});function Ld(e){return Ol(Nd,e)}const Pd=v("ZodISODuration",(e,t)=>{Pc.init(e,t),U.init(e,t)});function zd(e){return $l(Pd,e)}const X=v("ZodError",(e,t)=>{In.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:n=>ws(e,n)},flatten:{value:n=>ys(e,n)},addIssue:{value:n=>{e.issues.push(n),e.message=JSON.stringify(e.issues,_t,2)}},addIssues:{value:n=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,_t,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),Md=kt(X),Rd=Ct(X),Od=We(X),$d=Ge(X),Bd=Cs(X),Dd=Es(X),Ud=Ss(X),qd=Ts(X),Fd=Is(X),jd=As(X),Zd=Ns(X),Hd=Ls(X),j=v("ZodType",(e,t)=>(F.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:Xe(e,"input"),output:Xe(e,"output")}}),e.toJSONSchema=id(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(he(t,{checks:[...t.checks??[],...n.map(a=>typeof a=="function"?{_zod:{check:a,def:{check:"custom"},onattach:[]}}:a)]}),{parent:!0}),e.with=e.check,e.clone=(n,a)=>fe(e,n,a),e.brand=()=>e,e.register=((n,a)=>(n.add(e,a),e)),e.parse=(n,a)=>Md(e,n,a,{callee:e.parse}),e.safeParse=(n,a)=>Od(e,n,a),e.parseAsync=async(n,a)=>Rd(e,n,a,{callee:e.parseAsync}),e.safeParseAsync=async(n,a)=>$d(e,n,a),e.spa=e.safeParseAsync,e.encode=(n,a)=>Bd(e,n,a),e.decode=(n,a)=>Dd(e,n,a),e.encodeAsync=async(n,a)=>Ud(e,n,a),e.decodeAsync=async(n,a)=>qd(e,n,a),e.safeEncode=(n,a)=>Fd(e,n,a),e.safeDecode=(n,a)=>jd(e,n,a),e.safeEncodeAsync=async(n,a)=>Zd(e,n,a),e.safeDecodeAsync=async(n,a)=>Hd(e,n,a),e.refine=(n,a)=>e.check(Ug(n,a)),e.superRefine=n=>e.check(qg(n)),e.overwrite=n=>e.check(Te(n)),e.optional=()=>ha(e),e.exactOptional=()=>Tg(e),e.nullable=()=>fa(e),e.nullish=()=>ha(fa(e)),e.nonoptional=n=>zg(e,n),e.array=()=>mg(e),e.or=n=>vg([e,n]),e.and=n=>wg(e,n),e.transform=n=>ba(e,Eg(n)),e.default=n=>Ng(e,n),e.prefault=n=>Pg(e,n),e.catch=n=>Rg(e,n),e.pipe=n=>ba(e,n),e.readonly=()=>Bg(e),e.describe=n=>{const a=e.clone();return Me.add(a,{description:n}),a},Object.defineProperty(e,"description",{get(){return Me.get(e)?.description},configurable:!0}),e.meta=(...n)=>{if(n.length===0)return Me.get(e);const a=e.clone();return Me.add(a,n[0]),a},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=n=>n(e),e)),sa=v("_ZodString",(e,t)=>{Et.init(e,t),j.init(e,t),e._zod.processJSONSchema=(a,i,r)=>od(e,a,i);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...a)=>e.check(jl(...a)),e.includes=(...a)=>e.check(Vl(...a)),e.startsWith=(...a)=>e.check(Wl(...a)),e.endsWith=(...a)=>e.check(Gl(...a)),e.min=(...a)=>e.check(Qe(...a)),e.max=(...a)=>e.check(ta(...a)),e.length=(...a)=>e.check(na(...a)),e.nonempty=(...a)=>e.check(Qe(1,...a)),e.lowercase=a=>e.check(Zl(a)),e.uppercase=a=>e.check(Hl(a)),e.trim=()=>e.check(Kl()),e.normalize=(...a)=>e.check(Jl(...a)),e.toLowerCase=()=>e.check(Yl()),e.toUpperCase=()=>e.check(Ql()),e.slugify=()=>e.check(Xl())}),Vd=v("ZodString",(e,t)=>{Et.init(e,t),sa.init(e,t),e.email=n=>e.check(ul(Wd,n)),e.url=n=>e.check(_l(Gd,n)),e.jwt=n=>e.check(zl(lg,n)),e.emoji=n=>e.check(vl(Jd,n)),e.guid=n=>e.check(Yn(ca,n)),e.uuid=n=>e.check(hl(et,n)),e.uuidv4=n=>e.check(fl(et,n)),e.uuidv6=n=>e.check(ml(et,n)),e.uuidv7=n=>e.check(bl(et,n)),e.nanoid=n=>e.check(yl(Kd,n)),e.guid=n=>e.check(Yn(ca,n)),e.cuid=n=>e.check(wl(Yd,n)),e.cuid2=n=>e.check(xl(Qd,n)),e.ulid=n=>e.check(kl(Xd,n)),e.base64=n=>e.check(Nl(og,n)),e.base64url=n=>e.check(Ll(sg,n)),e.xid=n=>e.check(Cl(eg,n)),e.ksuid=n=>e.check(El(tg,n)),e.ipv4=n=>e.check(Sl(ng,n)),e.ipv6=n=>e.check(Tl(ag,n)),e.cidrv4=n=>e.check(Il(ig,n)),e.cidrv6=n=>e.check(Al(rg,n)),e.e164=n=>e.check(Pl(cg,n)),e.datetime=n=>e.check(Td(n)),e.date=n=>e.check(Ad(n)),e.time=n=>e.check(Ld(n)),e.duration=n=>e.check(zd(n))});function ae(e){return pl(Vd,e)}const U=v("ZodStringFormat",(e,t)=>{D.init(e,t),sa.init(e,t)}),Wd=v("ZodEmail",(e,t)=>{yc.init(e,t),U.init(e,t)}),ca=v("ZodGUID",(e,t)=>{_c.init(e,t),U.init(e,t)}),et=v("ZodUUID",(e,t)=>{vc.init(e,t),U.init(e,t)}),Gd=v("ZodURL",(e,t)=>{wc.init(e,t),U.init(e,t)}),Jd=v("ZodEmoji",(e,t)=>{xc.init(e,t),U.init(e,t)}),Kd=v("ZodNanoID",(e,t)=>{kc.init(e,t),U.init(e,t)}),Yd=v("ZodCUID",(e,t)=>{Cc.init(e,t),U.init(e,t)}),Qd=v("ZodCUID2",(e,t)=>{Ec.init(e,t),U.init(e,t)}),Xd=v("ZodULID",(e,t)=>{Sc.init(e,t),U.init(e,t)}),eg=v("ZodXID",(e,t)=>{Tc.init(e,t),U.init(e,t)}),tg=v("ZodKSUID",(e,t)=>{Ic.init(e,t),U.init(e,t)}),ng=v("ZodIPv4",(e,t)=>{zc.init(e,t),U.init(e,t)}),ag=v("ZodIPv6",(e,t)=>{Mc.init(e,t),U.init(e,t)}),ig=v("ZodCIDRv4",(e,t)=>{Rc.init(e,t),U.init(e,t)}),rg=v("ZodCIDRv6",(e,t)=>{Oc.init(e,t),U.init(e,t)}),og=v("ZodBase64",(e,t)=>{$c.init(e,t),U.init(e,t)}),sg=v("ZodBase64URL",(e,t)=>{Dc.init(e,t),U.init(e,t)}),cg=v("ZodE164",(e,t)=>{Uc.init(e,t),U.init(e,t)}),lg=v("ZodJWT",(e,t)=>{Fc.init(e,t),U.init(e,t)}),la=v("ZodNumber",(e,t)=>{Bn.init(e,t),j.init(e,t),e._zod.processJSONSchema=(a,i,r)=>sd(e,a,i),e.gt=(a,i)=>e.check(Xn(a,i)),e.gte=(a,i)=>e.check(It(a,i)),e.min=(a,i)=>e.check(It(a,i)),e.lt=(a,i)=>e.check(Qn(a,i)),e.lte=(a,i)=>e.check(Tt(a,i)),e.max=(a,i)=>e.check(Tt(a,i)),e.int=a=>e.check(ga(a)),e.safe=a=>e.check(ga(a)),e.positive=a=>e.check(Xn(0,a)),e.nonnegative=a=>e.check(It(0,a)),e.negative=a=>e.check(Qn(0,a)),e.nonpositive=a=>e.check(Tt(0,a)),e.multipleOf=(a,i)=>e.check(ea(a,i)),e.step=(a,i)=>e.check(ea(a,i)),e.finite=()=>e;const n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function da(e){return Bl(la,e)}const dg=v("ZodNumberFormat",(e,t)=>{jc.init(e,t),la.init(e,t)});function ga(e){return Dl(dg,e)}const gg=v("ZodBoolean",(e,t)=>{Zc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>cd(e,n,a)});function ye(e){return Ul(gg,e)}const pg=v("ZodUnknown",(e,t)=>{Hc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>dd()});function pa(){return ql(pg)}const ug=v("ZodNever",(e,t)=>{Vc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>ld(e,n,a)});function hg(e){return Fl(ug,e)}const fg=v("ZodArray",(e,t)=>{Wc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>fd(e,n,a,i),e.element=t.element,e.min=(n,a)=>e.check(Qe(n,a)),e.nonempty=n=>e.check(Qe(1,n)),e.max=(n,a)=>e.check(ta(n,a)),e.length=(n,a)=>e.check(na(n,a)),e.unwrap=()=>e.element});function mg(e,t){return ed(fg,e,t)}const bg=v("ZodObject",(e,t)=>{Jc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>md(e,n,a,i),O(e,"shape",()=>t.shape),e.keyof=()=>Nt(Object.keys(e._zod.def.shape)),e.catchall=n=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:pa()}),e.loose=()=>e.clone({...e._zod.def,catchall:pa()}),e.strict=()=>e.clone({...e._zod.def,catchall:hg()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=n=>fs(e,n),e.safeExtend=n=>ms(e,n),e.merge=n=>bs(e,n),e.pick=n=>us(e,n),e.omit=n=>hs(e,n),e.partial=(...n)=>_s(ua,e,n[0]),e.required=(...n)=>vs(ma,e,n[0])});function le(e,t){const n={type:"object",shape:e??{},...I(t)};return new bg(n)}const _g=v("ZodUnion",(e,t)=>{Kc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>bd(e,n,a,i),e.options=t.options});function vg(e,t){return new _g({type:"union",options:e,...I(t)})}const yg=v("ZodIntersection",(e,t)=>{Yc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>_d(e,n,a,i)});function wg(e,t){return new yg({type:"intersection",left:e,right:t})}const At=v("ZodEnum",(e,t)=>{Qc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(a,i,r)=>gd(e,a,i),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(a,i)=>{const r={};for(const o of a)if(n.has(o))r[o]=t.entries[o];else throw new Error(`Key ${o} not found in enum`);return new At({...t,checks:[],...I(i),entries:r})},e.exclude=(a,i)=>{const r={...t.entries};for(const o of a)if(n.has(o))delete r[o];else throw new Error(`Key ${o} not found in enum`);return new At({...t,checks:[],...I(i),entries:r})}});function Nt(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(a=>[a,a])):e;return new At({type:"enum",entries:n,...I(t)})}const xg=v("ZodLiteral",(e,t)=>{Xc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>pd(e,n,a),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function kg(e,t){return new xg({type:"literal",values:Array.isArray(e)?e:[e],...I(t)})}const Cg=v("ZodTransform",(e,t)=>{el.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>hd(e,n),e._zod.parse=(n,a)=>{if(a.direction==="backward")throw new vn(e.constructor.name);n.addIssue=r=>{if(typeof r=="string")n.issues.push(ze(r,n.value,t));else{const o=r;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=n.value),o.inst??(o.inst=e),n.issues.push(ze(o))}};const i=t.transform(n.value,n);return i instanceof Promise?i.then(r=>(n.value=r,n)):(n.value=i,n)}});function Eg(e){return new Cg({type:"transform",transform:e})}const ua=v("ZodOptional",(e,t)=>{Hn.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>oa(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function ha(e){return new ua({type:"optional",innerType:e})}const Sg=v("ZodExactOptional",(e,t)=>{tl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>oa(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function Tg(e){return new Sg({type:"optional",innerType:e})}const Ig=v("ZodNullable",(e,t)=>{nl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>vd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function fa(e){return new Ig({type:"nullable",innerType:e})}const Ag=v("ZodDefault",(e,t)=>{al.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>wd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Ng(e,t){return new Ag({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():En(t)}})}const Lg=v("ZodPrefault",(e,t)=>{il.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>xd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function Pg(e,t){return new Lg({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():En(t)}})}const ma=v("ZodNonOptional",(e,t)=>{rl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>yd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function zg(e,t){return new ma({type:"nonoptional",innerType:e,...I(t)})}const Mg=v("ZodCatch",(e,t)=>{ol.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>kd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Rg(e,t){return new Mg({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const Og=v("ZodPipe",(e,t)=>{sl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>Cd(e,n,a,i),e.in=t.in,e.out=t.out});function ba(e,t){return new Og({type:"pipe",in:e,out:t})}const $g=v("ZodReadonly",(e,t)=>{cl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>Ed(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function Bg(e){return new $g({type:"readonly",innerType:e})}const Dg=v("ZodCustom",(e,t)=>{ll.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>ud(e,n)});function Ug(e,t={}){return td(Dg,e,t)}function qg(e){return nd(e)}function Fg(e){return e.length>120?!1:/^[a-zA-Z0-9#(),.\s%/\-]+$/.test(e)}function Lt(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}class jg extends dt{constructor(){super(...arguments),this._shadow=null,this._rootEl=null,this._launcher=null,this._drawer=null,this._bridge=null,this._drawerVisible=!1,this._messages=[],this._currentMessageId=0,this._abortControllers=new Set,this._currentThreadId=null,this._lastThreadId=null,this._chatCreatedAt="",this._lastBackendContext=null,this._productSort={type:"related"},this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._thumbnailEntries=[],this._choicePrompterEl=null,this._openState="full",this._mobileBreakpoint=768,this._isMobileViewport=!1,this._pdpLaunched=!1,this._pdpPrimingInFlight=!1,this._queuedUserMessages=[],this._productContextUnavailableSku=null,this._i18n=pt,this._extendedModeManager=null,this._activeTypewriter=null,this._activeTtsHandle=null,this._activeRequestThreadId=null,this._skuToProductItem={},this._conversationMode=null,this._initComplete=!1,this._pendingActions=[],this._bridgeContext=null,this._cartQuantity=null,this._threadsWithFirstBot=new Set,this._panel=null,this._session=null,this._eventCallbacks=new Map,this._lastSentAction=null}async onInit(t){this._i18n=this._resolveI18n(t),this._chatCreatedAt=new Date().toISOString(),this._shadow=this.root.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=Jo,this._shadow.appendChild(n);const a=document.createElement("div");a.className="gengage-chat-root",this._rootEl=a,this._shadow.appendChild(a);const i=t.variant??"floating";if(i==="floating"){const g={onClick:()=>this.open(),ariaLabel:this._i18n.openButton};t.launcherImageUrl!==void 0?g.imageUrl=t.launcherImageUrl:t.launcherSvg!==void 0&&(g.svgMarkup=t.launcherSvg),t.hideMobileLauncher!==void 0&&(g.hideMobile=t.hideMobileLauncher),t.mobileBreakpoint!==void 0&&(g.mobileBreakpoint=t.mobileBreakpoint),t.launcherTooltip!==void 0&&(g.tooltip=t.launcherTooltip),this._launcher=qr(g),a.appendChild(this._launcher.container)}i==="overlay"&&a.classList.add("gengage-chat--overlay");const r=document.createElement("div");a.appendChild(r),this._drawer=new Dr(r,{i18n:this._i18n,onSend:(g,p)=>this._sendMessage(g,p),onClose:()=>this.close(),onAttachment:g=>this._handleAttachment(g),onPanelToggle:()=>{this._drawer?.persistPanelState(t.accountId)},onRollback:g=>this._handleRollback(g),onPanelBack:()=>this._panel?.navigateBack(),onPanelForward:()=>this._panel?.navigateForward(),headerTitle:t.headerTitle,headerAvatarUrl:t.headerAvatarUrl,headerBadge:t.headerBadge,headerCartUrl:t.headerCartUrl,headerFavoritesToggle:t.headerFavoritesToggle,onFavoritesClick:()=>{ns(),t.onFavoritesClick?.()},onThumbnailClick:g=>this._rollbackToThread(g),onLinkClick:g=>{this._saveSessionAndOpenURL(g)},voiceEnabled:t.voiceEnabled,voiceLang:t.locale?`${t.locale.split("-")[0]??"tr"}-${(t.locale.split("-")[1]??t.locale.split("-")[0]??"TR").toUpperCase()}`:void 0}),this._extendedModeManager=new Do({onChange:g=>this._panel?.notifyExtension(g),productDetailsInPanel:t.isDemoWebsite??!1}),this._panel=new Uo({drawer:()=>this._drawer,shadow:()=>this._shadow,currentThreadId:()=>this._currentThreadId,bridge:()=>this._bridge,extendedModeManager:()=>this._extendedModeManager,i18n:()=>this._i18n,rollbackToThread:g=>this._rollbackToThread(g)}),i!=="inline"&&this._drawer.getElement().classList.add("gengage-chat-drawer--hidden"),this._drawer.restorePanelState(t.accountId);const o=t.panelMode??"auto";o==="collapsed"?this._drawer.setPanelCollapsed(!0):o==="expanded"&&this._drawer.setForceExpanded();const s=sessionStorage.getItem("gengage_restore_session_id"),c=sessionStorage.getItem("gengage_restore_sku"),l=!!(s&&c);l&&(sessionStorage.removeItem("gengage_restore_session_id"),sessionStorage.removeItem("gengage_restore_sku"));try{const g=new $o;await g.open(),this._session=new gn(g),await this._restoreFromIndexedDB(l)}catch{this._session=new gn(null)}this._registerPublicAPI(),t.mobileInitialState!==void 0&&(this._openState=t.mobileInitialState),this._mobileBreakpoint=t.mobileBreakpoint??768,this._syncViewportState();const d=()=>this._syncViewportState();if(window.addEventListener("resize",d,{passive:!0}),this.addCleanup(()=>window.removeEventListener("resize",d)),window.visualViewport){const g=()=>{if(!this._drawerVisible||!this._isMobileViewport)return;const p=this._drawer?.getElement();if(!p)return;const u=window.innerHeight-(window.visualViewport?.height??window.innerHeight);p.style.setProperty("--gengage-keyboard-offset",`${Math.max(0,u)}px`)};window.visualViewport.addEventListener("resize",g),this.addCleanup(()=>window.visualViewport?.removeEventListener("resize",g))}i==="inline"&&(this._drawerVisible=!0,this.isVisible=!0,this._applyOpenStateClasses()),this._bridge=new Ei({namespace:"chat",onMessage:g=>this._handleBridgeMessage(g)}),this._lastSku=this.config.pageContext?.sku,this._initComplete=!0;for(const g of this._pendingActions)this._sendAction(g.action,g.options);this._pendingActions=[],J("gengage:chat:ready",{}),bt("chat"),t.onReady?.()}onUpdate(t){t.sku!==void 0&&t.sku!==this._lastSku&&(this._lastSku=t.sku,this._resetForNewPage())}onShow(){this._showDrawer(),this.emit("open"),J("gengage:chat:open",{state:this._openState}),Ze("chat"),this.config.onOpen?.(),!this._pdpLaunched&&this.config.pageContext?.sku&&(this._pdpLaunched=!0,this._pdpPrimingInFlight=!0,this._sendAction({title:"",type:"launchSingleProduct",payload:{sku:this.config.pageContext.sku}},{silent:!0,isPdpPrime:!0}))}onHide(){(this.config.variant??"floating")==="floating"&&(this.root.style.display=""),this._hideDrawer(),this.emit("close"),J("gengage:chat:close",{}),this.config.onClose?.()}onDestroy(){this._abortControllers.forEach(t=>t.abort()),this._abortControllers.clear(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._drawer?.destroy(),this._drawer=null,this._bridge?.destroy(),this._bridge=null,this._extendedModeManager=null,this._panel?.destroy(),this._panel=null,this._session?.close(),this._session=null,window.gengage&&delete window.gengage.chat,this._shadow&&(this._shadow.innerHTML="",this._shadow=null),this._rootEl=null}open(t){t?.state!==void 0&&(this._openState=t.state,this._drawerVisible&&this._applyOpenStateClasses()),this.show(),t?.initialMessage!==void 0&&this._sendMessage(t.initialMessage)}openWithAction(t,n){n?.sku!==void 0&&this.update({sku:n.sku}),this._pdpLaunched=!0,n?.state!==void 0?this._openState=n.state:this._isMobileViewport&&(this._openState="half"),this.show(),this._drawerVisible&&this._applyOpenStateClasses(),this._sendAction(t)}sendMessage(t){this._sendMessage(t)}sendAction(t,n){this._sendAction(t,n)}close(){this.hide()}saveSession(t,n){sessionStorage.setItem("gengage_restore_session_id",t),sessionStorage.setItem("gengage_restore_sku",n)}get isOpen(){return this._drawerVisible}addCallback(t,n){let a=this._eventCallbacks.get(t);return a||(a=new Set,this._eventCallbacks.set(t,a)),a.add(n),()=>{a.delete(n),a.size===0&&this._eventCallbacks.delete(t)}}_resetForNewPage(){this._activeRequestThreadId=null,this._abortControllers.forEach(t=>t.abort()),this._abortControllers.clear(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._messages.length=0,this._drawer?.clearMessages(),this._drawer?.clearPanel(),this._panel.snapshots.clear(),this._panel.threads=[],this._thumbnailEntries=[],this._drawer?.setThumbnails([]),this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._currentThreadId=null,this._lastThreadId=null,this._lastBackendContext=null,this._chatCreatedAt=new Date().toISOString(),this._pdpLaunched=!1,this._pdpPrimingInFlight=!1,this._queuedUserMessages=[],this._productContextUnavailableSku=null}_handleBridgeMessage(t){switch(t.type){case"openChat":this.open();break;case"closeChat":this.close();break;case"startNewChatWithLauncherAction":{const n=t.payload,a=n?.action,i=Lt(a)?a:Lt(n)?n:null;i&&this._sendAction(i,{silent:!0}),this.open();break}case"startNewChatWithDetailContext":{const n=t.payload;if(n&&typeof n=="object"){this._bridgeContext=n;const a=n.sku;if(a&&this.update({sku:a}),Lt(n.action)){this._pdpLaunched=!0,this.open(),this._sendAction(n.action);break}}this.open();break}case"launcherAction":{const a=t.payload?.action;a&&typeof a=="object"&&"type"in a&&this._sendAction(a);break}case"scrollToBottom":this._drawer?.scrollToBottomIfNeeded();break;case"addToCardHandler":{this._bridge?.send("addToCardResult",t.payload);break}case"cartQuantityHandler":{const n=t.payload;n&&"quantity"in n&&typeof n.quantity=="number"&&(this._cartQuantity=n.quantity);break}case"minimizeRequestedByUser":this._extendedModeManager?.setHiddenByUser(!0);break;case"bgColorChange":{const a=t.payload?.color;typeof a=="string"&&Fg(a)&&this._shadow&&this._shadow.host.style.setProperty("--gengage-chat-bg",a);break}}}_registerPublicAPI(){window.gengage||(window.gengage={}),window.gengage.chat={open:t=>this.open(t),openWithAction:(t,n)=>this.openWithAction(t,n),sendMessage:t=>this.sendMessage(t),sendAction:(t,n)=>this.sendAction(t,n),close:()=>this.close(),saveSession:(t,n)=>this.saveSession(t,n),get isOpen(){return!1},on:(t,n)=>this.on(t,n),trackCheckout:(t,n)=>this.trackCheckout(t,n),flushMeteringSummary:t=>this.flushMeteringSummary(t),addCallback:(t,n)=>this.addCallback(t,n)},Object.defineProperty(window.gengage.chat,"isOpen",{get:()=>this._drawerVisible})}_showDrawer(){if(this._drawerVisible)return;this._drawerVisible=!0;const t=this._drawer?.getElement();t&&t.classList.remove("gengage-chat-drawer--hidden"),this._applyOpenStateClasses(),this._drawer?.trapFocus(),this._isMobileViewport&&this._openState==="half"||this._drawer?.focusInput(),this._extendedModeManager?.setChatShown(!0)}_hideDrawer(){if(!this._drawerVisible)return;this._drawer?.releaseFocus(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._drawerVisible=!1,this._openState="full";const t=this._drawer?.getElement();t&&t.classList.add("gengage-chat-drawer--hidden"),this._applyOpenStateClasses(),this._extendedModeManager?.setChatShown(!1)}_syncViewportState(){if(this._rootEl){if(this._isMobileViewport=window.innerWidth<=this._mobileBreakpoint,this._rootEl.classList.toggle("gengage-chat-root--mobile",this._isMobileViewport),this._launcher){const t=this._isMobileViewport&&this.config.hideMobileLauncher===!0;this._launcher.container.classList.toggle("gengage-chat-launcher--hidden-mobile",t)}this._applyOpenStateClasses()}}_applyOpenStateClasses(){if(!this._rootEl)return;const t=this._drawerVisible&&this._isMobileViewport&&this._openState==="half",n=this._drawerVisible&&this._isMobileViewport&&this._openState==="full";this._rootEl.classList.toggle("gengage-chat-root--open",this._drawerVisible),this._rootEl.classList.toggle("gengage-chat-root--mobile-half",t),this._rootEl.classList.toggle("gengage-chat-root--mobile-full",n)}_handleAttachment(t){const n=zi(t);if(!n.ok){const a=n.reason==="invalid_type"?this._i18n.invalidFileType:this._i18n.fileTooLarge;J("gengage:global:error",{message:a,source:"chat"});return}this._drawer?.stageAttachment(t)}_sendMessage(t,n){if(this._pdpPrimingInFlight){this._queuedUserMessages.push(n!==void 0?{text:t,attachment:n}:{text:t});return}is(),this._messages.some(r=>r.role==="user")||rs();const i={title:t,type:"user_message",payload:t};n!==void 0?this._sendAction(i,{attachment:n}):this._sendAction(i)}_flushQueuedUserMessages(){if(this._pdpPrimingInFlight||this._queuedUserMessages.length===0)return;const t=[...this._queuedUserMessages];this._queuedUserMessages=[];for(const n of t)this._sendMessage(n.text,n.attachment)}_sendAction(t,n){if(this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._lastSentAction={action:t,options:n},!this._initComplete){this._pendingActions.length<10&&this._pendingActions.push({action:t,options:n});return}if(this._choicePrompterEl?.remove(),this._choicePrompterEl=null,!n?.preservePanel&&this._comparisonSelectMode&&(this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[]),this._currentThreadId&&this._lastThreadId&&this._lastThreadId>this._currentThreadId){const m=this._currentThreadId,C=this._messages.filter(S=>S.threadId!==void 0&&S.threadId>m);this._messages=this._messages.filter(S=>!S.threadId||S.threadId<=m);for(const S of C)this._shadow?.querySelector(`[data-message-id="${CSS.escape(S.id)}"]`)?.remove(),this._panel.snapshots.delete(S.id),this._panel.snapshotTypes.delete(S.id);this._shadow?.querySelectorAll("[data-thread-id]")?.forEach(S=>{S instanceof HTMLElement&&S.dataset.threadId&&S.dataset.threadId>m&&S.remove()})}this._drawer?.setPills([]),this._drawer?.clearInputAreaChips(),this._bridge?.send("isResponding",!0);const a=Ci();this._currentThreadId=a,this._lastThreadId=a,this._panel&&t.type!=="launchSingleProduct"&&(this._panel.lastActionType=t.type);const i=n?.preservePanel===!0,r=t.type==="launchSingleProduct"&&n?.silent===!0&&n?.isPdpPrime===!0;if(i||(this._activeRequestThreadId=a),!n?.silent){const m=this._createMessage("user",typeof t.payload=="string"?t.payload:t.title);m.threadId=a,n?.attachment!==void 0&&(m.attachment=n.attachment),this._drawer?.addMessage(m),this._messages.push(m)}if(!n?.silent&&this._hasUnavailableProductContext()&&(t.type==="user_message"||t.type==="inputText")){const m=this._i18n.productNotFoundMessage,C=this._createMessage("assistant",m);C.threadId=a,C.status="done",this._messages.push(C),this._ensureAssistantMessageRendered(C),this._drawer?.updateBotMessage(C.id,m),this._bridge?.send("isResponding",!1),this.emit("message",C),this._persistToIndexedDB().catch(()=>{});return}let s=null;const c=()=>{if(s||n?.preservePanel)return;const m=this._drawer?.getPanelContentElement();m&&(s=m.cloneNode(!0))},l=()=>{this._drawer?.isPanelLoading()&&(s?this._drawer.setPanelContent(s):this._drawer.clearPanel(),s=null)};this._drawer?.showTypingIndicator();let d="";const g=this._createMessage("assistant","");g.threadId=a,g.status="streaming",n?.silent&&(g.silent=!0),this._messages.push(g),n?.preservePanel||(this._abortControllers.forEach(m=>m.abort()),this._abortControllers.clear());const p={middlewareUrl:this.config.middlewareUrl,...this.config.accountId?{accountId:this.config.accountId}:{}};n?.attachment!==void 0&&(p.attachment=n.attachment);const f=this._getVisibleMessages().filter(m=>m.content).slice(-50).map(m=>({role:m.role==="user"?"user":"model",content:m.content??""})),h={outputLanguage:Go(this.config.locale),parentUrl:window.location.href,windowWidth:String(window.innerWidth),windowHeight:String(window.innerHeight),selfUrl:"",id:this.config.session?.sessionId??"",userId:this.config.session?.userId??"",appId:this.config.accountId,threads:[],createdAt:this._chatCreatedAt,kvkkApproved:un(this.config.accountId),voiceEnabled:this.config.voiceEnabled??!1,threadId:a,isControlGroup:this.config.session?.abTestVariant==="control",isMobile:this._isMobileViewport};this.config.session?.viewId!==void 0&&(h.viewId=this.config.session.viewId);const b=Er(t,{pageContext:this.config.pageContext,backendContext:this._lastBackendContext,isMobile:this._isMobileViewport}),_={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",type:b.type,locale:this.config.locale??"tr",meta:h,context:{...this._lastBackendContext??{},messages:f,session_id:this.config.session?.sessionId??""}};this.config.session?.userId!==void 0&&(_.user_id=this.config.session.userId),this.config.session?.viewId!==void 0&&(_.view_id=this.config.session.viewId),b.payload!==void 0&&(_.payload=b.payload),this.config.pageContext?.sku!==void 0&&(_.sku=this.config.pageContext.sku),this.config.pageContext?.pageType!==void 0&&(_.page_type=this.config.pageContext.pageType);const k=crypto.randomUUID(),E=Date.now();let w=0,T=!1,$=!1;this.track(rt(this.analyticsContext(),{endpoint:"process_action",request_id:k,widget:"chat"}));let Z=null;if(Z=Ir(_,{onTextChunk:(m,C,x)=>{if(!i&&a!==this._activeRequestThreadId||(d+=m,this._drawer?.removeTypingIndicator(),x?.skuToProductItem&&(this._skuToProductItem={...this._skuToProductItem,...x.skuToProductItem}),x?.conversationMode&&(this._conversationMode=x.conversationMode),this.track(Wa(this.analyticsContext(),{request_id:k,chunk_index:w++,widget:"chat"})),!this._drawer))return;let S=d;if(C&&mt(S)){const N=this.config.accountId;if(!un(N)){const R=Vo(S);R&&this._drawer?.showKvkkBanner(R,()=>{this._drawer?.hideKvkkBanner()}),Zo(N)}S=Ho(S)}const A=this._shadow?.querySelector(`[data-message-id="${g.id}"] .gengage-chat-bubble-text`);if(A?A.innerHTML=ee(S):(g.content=S,g.role==="assistant"&&g.threadId&&!this._threadsWithFirstBot.has(g.threadId)&&(this._threadsWithFirstBot.add(g.threadId),this._drawer.markFirstBotMessage(g.id)),this._drawer.addMessage(g)),C){g.content=S,g.status="done",_n();const N=this._shadow?.querySelector(`[data-message-id="${g.id}"] .gengage-chat-bubble-text`);if(N){this._activeTypewriter?.cancel();const R=x?.productMentions;this._activeTypewriter=Io({container:N,html:ee(S),onTick:()=>this._drawer?.scrollToBottomIfNeeded(),onComplete:()=>{this._activeTypewriter=null,R&&R.length>0&&N&&Ao({container:N,mentions:R,onProductClick:q=>{this._sendAction({title:R.find(z=>z.sku===q)?.short_name??q,type:"launchSingleProduct",payload:{sku:q}})}})}})}}},onUISpec:(m,C,x)=>{if(!i&&a!==this._activeRequestThreadId||C!=="chat")return;const S=m.elements[m.root],A=S?.type??"unknown";this.track(Ga(this.analyticsContext(),{request_id:k,chunk_index:w,component_type:A,widget:"chat"}));const N=this._buildRenderContext();if(A==="ComparisonTable"){const z=S?.props?.products;es(Array.isArray(z)?z.length:0)}if(A==="ProductGrid"){const z=S?.children?.length??0;as(void 0,z)}const R=x==="panel"&&this._panel?this._panel.toPanelSpec(m):m,q=!g.silent&&(x!=="panel"||A==="ProductCard")&&A!=="ActionButtons";if(x==="panel"&&this._panel){const z=!$;$=!0;const L=qo({componentType:A,similarsAppend:S?.props?.similarsAppend===!0,currentPanelType:this._panel.currentType,hasPanelContent:this._drawer?.hasPanelContent()??!1,isPanelLoading:this._drawer?.isPanelLoading()??!1,isFirstPanelContentInStream:z});L==="appendSimilars"?this._appendSimilarsToPanel(R,N):L==="append"?this._drawer?.appendPanelContent(this._renderUISpec(R,N)):(this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._drawer?.setPanelContent(this._renderUISpec(R,N)),this._panel.currentType=A),A==="ProductDetailsPanel"&&t.type==="launchSingleProduct"&&this._clearUnavailableProductContext(),g.threadId&&!this._panel.threads.includes(g.threadId)&&this._panel.threads.push(g.threadId);const M=this._panel.currentType??A,y=S?.props?.panelTitle;this._panel.updateTopBar(M,y),this._panel.updateExtendedMode(A)}if(A==="ProductDetailsPanel"&&!g.silent&&x==="panel"){const z=S?.props?.product;if(z){const L={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:z}}}},M=this._shadow?.querySelector(".gengage-chat-messages");if(M){const y=this._renderUISpec(L,N);g.threadId&&(y.dataset.threadId=g.threadId),M.appendChild(y),y.scrollIntoView({behavior:"auto",block:"end"})}}}if(q){const z=this._shadow?.querySelector(".gengage-chat-messages");if(z){const L=this._renderUISpec(m,N);g.threadId&&(L.dataset.threadId=g.threadId),z.appendChild(L),L.scrollIntoView({behavior:"auto",block:"end"})}}if((A==="ProductGrid"||A==="ProductCard")&&g.threadId){const z=S?.children??[],L=A==="ProductGrid"?z.map(M=>m.elements[M]?.props?.product).filter(Boolean):[S?.props?.product].filter(Boolean);for(const M of L){const y=M.sku,P=M.imageUrl;y&&P&&this._thumbnailEntries.push({sku:y,imageUrl:P,threadId:g.threadId})}this._drawer?.setThumbnails(this._thumbnailEntries)}if(A==="ProductGrid"||A==="ProductDetailsPanel"){const L=(A==="ProductGrid"?(S?.children??[]).map(M=>m.elements[M]?.props?.product).filter(Boolean):[S?.props?.product??S?.props].filter(Boolean)).map(M=>M.imageUrl).filter(M=>typeof M=="string").slice(0,5);L.length>0&&this._bridge?.send("previewImages",{images:L})}if(A==="ProductGrid"&&x==="panel"&&!this._comparisonSelectMode&&!Mo()){this._choicePrompterEl?.remove(),this._shadow?.querySelectorAll(".gengage-chat-choice-prompter").forEach(y=>y.remove()),this._choicePrompterEl=zo({heading:this._i18n.choicePrompterHeading,suggestion:this._i18n.choicePrompterSuggestion,ctaLabel:this._i18n.choicePrompterCta,dismissAriaLabel:this._i18n.dismissAriaLabel,onCtaClick:()=>{this._comparisonSelectMode=!0,this._choicePrompterEl=null,this._refreshComparisonUI()},onDismiss:()=>{this._choicePrompterEl=null}});const L=this._isMobileViewport||this._drawer?.isPanelCollapsed()?".gengage-chat-conversation":".gengage-chat-panel",M=this._shadow?.querySelector(L);M?M.appendChild(this._choicePrompterEl):this._choicePrompterEl=null}if(A==="ActionButtons"){const z=S?.props?.buttons;if(z&&z.length>0){const L=[],M=[];for(const y of z)if(Po(y)){const P={label:y.label,action:y.action};y.icon&&(P.icon=y.icon),L.push(P)}else M.push(y);L.length>0&&this._drawer?.setInputAreaChips(L.map(y=>({label:y.label,onAction:()=>this._sendAction(y.action),...y.icon?{icon:y.icon}:{}}))),M.length>0&&this._drawer?.setPills(M.map(y=>{const P={label:y.label,onAction:()=>this._sendAction(y.action)};return y.icon&&(P.icon=y.icon),y.image&&(P.image=y.image),y.description&&(P.description=y.description),P}))}}g.uiSpec=m},onAction:m=>{if(!(!i&&a!==this._activeRequestThreadId)&&m.type==="action"){const C={};this.config.actionHandling?.unknownActionPolicy!==void 0&&(C.unknownActionPolicy=this.config.actionHandling.unknownActionPolicy),this.config.actionHandling?.allowScriptCall!==void 0&&(C.allowScriptCall=this.config.actionHandling.allowScriptCall),Ii(m,{openChat:()=>this.open(),navigate:x=>{Y(x.url)&&(this._bridge?.send("navigate",x),x.newTab?window.open(x.url,"_blank","noopener,noreferrer"):window.location.href=x.url)},saveSession:x=>this.saveSession(x.sessionId,x.sku),addToCart:x=>{J("gengage:similar:add-to-cart",x)},scriptCall:x=>{J("gengage:chat:script-call",x),this.config.onScriptCall?.(x)}},C)}},onMetadata:m=>{if(!(!i&&a!==this._activeRequestThreadId)&&m.type==="metadata"&&m.meta){if((m.meta.panel!==void 0||m.meta.messages!==void 0||m.meta.message_id!==void 0)&&(this._lastBackendContext=m.meta),m.meta.panelLoading){T=!0,$=!1,c();const x=typeof m.meta.panelPendingType=="string"?m.meta.panelPendingType:void 0;this._panel&&(this._panel.currentType=null),this._drawer?.showPanelLoading(x),x&&this._panel?.updateTopBarForLoading(x)}if(m.meta.voice){const x=new CustomEvent("gengage:chat:voice",{detail:{payload:m.meta.voice},bubbles:!1,cancelable:!0}),S=window.dispatchEvent(x);if(os(),S){const A=m.meta.voice;A.audio_base64&&(this._activeTtsHandle?.stop(),this._activeTtsHandle=jr(A.audio_base64,A.content_type??"audio/ogg"))}}(m.meta.redirectTarget||m.meta.redirect)&&J("gengage:chat:redirect",{target:m.meta.redirectTarget??null,payload:m.meta.redirect??null}),m.meta.analyzeAnimation&&(T=!0,$=!1,c(),this._panel&&(this._panel.currentType=null),this._drawer?.showPanelLoading(),this._panel?.updateTopBarForLoading("productDetails")),m.meta.loading&&typeof m.meta.loadingText=="string"&&(this._drawer?.addThinkingStep(m.meta.loadingText),this._bridge?.send("loadingMessage",{text:m.meta.loadingText})),m.meta.visitorDataResponse&&this._bridge?.send("engagingMessage",m.meta.visitorDataResponse),m.meta.formType&&this._bridge?.send("glovOtokoc",{type:m.meta.formType,data:m.meta.formPayload}),m.meta.launcherContent&&this._bridge?.send("launcherContent",m.meta.launcherContent),J("gengage:chat:metadata",{payload:m.meta});const C=m.meta;typeof C.prompt_tokens=="number"&&typeof C.completion_tokens=="number"&&this.track(Ja(this.analyticsContext(),{model:m.model??"unknown",prompt_tokens:C.prompt_tokens,completion_tokens:C.completion_tokens,total_tokens:C.total_tokens??C.prompt_tokens+C.completion_tokens}))}},onError:m=>{if(Z&&this._abortControllers.delete(Z),!i&&a!==this._activeRequestThreadId)return;this._bridge?.send("isResponding",!1),this._bridge?.send("loadingMessage",{text:null}),this._drawer?.removeTypingIndicator();const C=$;if(T&&!$&&l(),T=!1,$=!1,!(g.silent||g.content!=null&&g.content.length>0||d.length>0||C))if(r||this._hasUnavailableProductContext()){const S=this._i18n.productNotFoundMessage;g.content=S,g.status="done",this._ensureAssistantMessageRendered(g),this._drawer?.updateBotMessage(g.id,S),this._markUnavailableProductContext()}else this.emit("error",m),this._drawer?.showError(this._i18n.errorMessage,()=>{this._lastSentAction&&this._sendAction(this._lastSentAction.action,this._lastSentAction.options)});r&&(this._pdpPrimingInFlight=!1,this._flushQueuedUserMessages()),g.status==="streaming"&&(g.status="error"),this.track(ot(this.analyticsContext(),{request_id:k,error_code:"STREAM_ERROR",error_message:m.message,widget:"chat"}))},onDone:()=>{if(Z&&this._abortControllers.delete(Z),!(!i&&a!==this._activeRequestThreadId)){if(this._activeRequestThreadId=null,this._bridge?.send("isResponding",!1),this._bridge?.send("loadingMessage",{text:null}),this._drawer?.removeTypingIndicator(),T&&!$&&l(),T=!1,$=!1,r&&!d&&!$){const m=this._i18n.productNotFoundMessage;g.content=m,this._ensureAssistantMessageRendered(g),this._drawer?.updateBotMessage(g.id,m),this._markUnavailableProductContext()}r&&(this._pdpPrimingInFlight=!1,this._flushQueuedUserMessages()),g.status==="streaming"&&(g.status="done",_n()),this.emit("message",g),this._panel?.snapshotForMessage(g.id),this._panel?.attachClickHandler(g.id),this.track($e(this.analyticsContext(),{request_id:k,latency_ms:Date.now()-E,chunk_count:w,widget:"chat"})),this.track(Ka(this.analyticsContext(),{meter_key:"chat_request",quantity:1,unit:"request"})),this.track(Qa(this.analyticsContext(),{message_count:this._messages.length,history_ref:this.config.session?.sessionId??"",redaction_level:"none"})),this._persistToIndexedDB().catch(()=>{})}}},p),this._abortControllers.add(Z),!n?.silent&&!i){const m=Z;this._drawer?.showStopButton(()=>{m.abort(),this._abortControllers.delete(m),this._drawer?.removeTypingIndicator(),this._bridge?.send("isResponding",!1),this._bridge?.send("loadingMessage",{text:null}),g.status==="streaming"&&(g.status="done")})}}_getVisibleMessages(){const t=this._messages.filter(a=>!a.silent);if(!this._currentThreadId)return t;const n=this._currentThreadId;return t.filter(a=>!a.threadId||a.threadId<=n)}_appendSimilarsToPanel(t,n){if(!this._drawer)return;const a=this._drawer.getPanelContentElement();if(!a)return;const i=document.createElement("h3");i.className="gengage-chat-product-details-similars-heading",i.textContent=this._i18n.similarProductsLabel??"Similar Products",a.appendChild(i);const r=this._renderUISpec(t,n);r.classList.add("gengage-chat-product-details-similars"),a.appendChild(r)}_handleRollback(t){const n=this._messages.find(a=>a.id===t);n?.threadId&&this._rollbackToThread(n.threadId)}_rollbackToThread(t){this._currentThreadId=t,this._extendedModeManager?.setHiddenByUser(!1);for(const r of this._messages){const o=this._shadow?.querySelector(`[data-message-id="${CSS.escape(r.id)}"]`);o&&(r.threadId&&r.threadId>t?o.classList.add("gengage-chat-bubble--hidden"):o.classList.remove("gengage-chat-bubble--hidden"))}this._shadow?.querySelectorAll("[data-thread-id]").forEach(r=>{r instanceof HTMLElement&&r.dataset.threadId&&r.dataset.threadId>t?r.classList.add("gengage-chat-bubble--hidden"):r instanceof HTMLElement&&r.classList.remove("gengage-chat-bubble--hidden")});const n=this._messages.find(r=>r.role==="assistant"&&r.threadId===t);n&&this._panel?.restoreForMessage(n.id)||this._drawer?.clearPanel();const i=this._panel.currentType??"";this._panel?.updateTopBar(i),this._drawer?.setPills([]),this._session?.db&&this.config.session?.sessionId&&this._session?.db.loadContext(this.config.session.sessionId,t).then(r=>{r&&(this._lastBackendContext=r.context)}).catch(()=>{}),this._session?.db&&this.config.session?.sessionId&&this._session?.db.deleteContextsAfterThread(this.config.session.sessionId,t).catch(()=>{})}async _persistToIndexedDB(){!this._session||!this.config.session?.sessionId||await this._session.persist({userId:this.config.session.userId??"",appId:this.config.accountId,sessionId:this.config.session.sessionId,messages:this._messages,currentThreadId:this._currentThreadId,lastThreadId:this._lastThreadId,chatCreatedAt:this._chatCreatedAt,panelSnapshots:this._panel?.snapshots??new Map,panelThreads:this._panel?.threads??[],thumbnailEntries:this._thumbnailEntries,lastBackendContext:this._lastBackendContext,sku:this.config.pageContext?.sku})}_isSameOriginUrl(t){try{return t.trim()?new URL(t,window.location.href).origin===window.location.origin:!1}catch{return!1}}_markUnavailableProductContext(){this._productContextUnavailableSku=this.config.pageContext?.sku??null}_clearUnavailableProductContext(){this._productContextUnavailableSku=null}_hasUnavailableProductContext(){const t=this.config.pageContext?.sku;return t!==void 0&&t.length>0&&this._productContextUnavailableSku===t}_ensureAssistantMessageRendered(t){if(!(this._shadow?.querySelector(`[data-message-id="${CSS.escape(t.id)}"]`)||!this._drawer)){if(t.role==="assistant"&&t.threadId&&!this._threadsWithFirstBot.has(t.threadId)){this._threadsWithFirstBot.add(t.threadId),this._drawer.addMessage(t),this._drawer.markFirstBotMessage(t.id);return}this._drawer.addMessage(t)}}async _saveSessionAndOpenURL(t){this._session&&await this._session.saveAndOpenURL(t,()=>this._persistToIndexedDB(),this._bridge)}async _loadPayload(t,n){return this._session?this._session.loadPayload(t,n):null}async _restoreFromIndexedDB(t){if(!this._session?.db)return;const n=this.config.session?.sessionId;if(!n)return;const a=this.config.session?.userId??"",i=this.config.accountId;if(await this._session.loadFavorites(a,i),!t)return;const r=await this._session.db?.loadSession(a,i,n);if(!r||r.messages.length===0)return;const o=this.config.pageContext?.sku;if(o&&r.sku&&r.sku!==o)return;if(this._pdpLaunched=!0,this._drawer?.lockScrollForRestore(),this._currentThreadId=r.currentThreadId,this._lastThreadId=r.lastThreadId,this._chatCreatedAt=r.createdAt,r.panelThreads&&(this._panel.threads=r.panelThreads),r.thumbnailEntries&&(this._thumbnailEntries=r.thumbnailEntries,this._drawer?.setThumbnails(this._thumbnailEntries)),r.panelSnapshotHtml)for(const[c,l]of Object.entries(r.panelSnapshotHtml)){const d=document.createElement("div");d.innerHTML=ee(l),this._panel.snapshots.set(c,d)}let s=0;for(const c of r.messages){const l={id:c.id,role:c.role,timestamp:c.timestamp,status:c.status};if(c.threadId!==void 0&&(l.threadId=c.threadId),c.content!==void 0&&(l.content=c.content),c.silent&&(l.silent=!0),this._messages.push(l),l.silent)continue;l.role==="assistant"&&l.threadId&&!this._threadsWithFirstBot.has(l.threadId)&&(this._threadsWithFirstBot.add(l.threadId),this._drawer?.markFirstBotMessage(l.id)),this._drawer?.addMessage(l);const d=parseInt(c.id.replace("msg-",""),10);if(!isNaN(d)&&d>s&&(s=d),l.role==="assistant"&&l.threadId){const g=await this._loadPayload(l.threadId,l.id);g&&(l.uiSpec=g,this._restoreInlineUISpec(l),this._panel?.attachClickHandler(l.id),delete l.uiSpec)}}if(s>this._currentMessageId&&(this._currentMessageId=s),this._currentThreadId){let c=await this._session.db?.loadContext(n,this._currentThreadId);c||(c=await this._session.db?.loadLatestContext(n)),c&&(this._lastBackendContext=c.context)}if(this._currentThreadId){const c=[...this._messages].reverse().find(l=>l.role==="assistant"&&l.threadId===this._currentThreadId&&!l.silent);c&&this._panel.snapshots.has(c.id)&&this._panel?.restoreForMessage(c.id)}if(this._currentThreadId){const c=this._currentThreadId;for(const l of this._messages)l.threadId&&l.threadId>c&&this._shadow?.querySelector(`[data-message-id="${CSS.escape(l.id)}"]`)?.classList.add("gengage-chat-bubble--hidden");this._shadow?.querySelectorAll("[data-thread-id]").forEach(l=>{l instanceof HTMLElement&&l.dataset.threadId&&l.dataset.threadId>c&&l.classList.add("gengage-chat-bubble--hidden")})}if(this._panel.threads.length>0&&this._currentThreadId){const c=this._panel.threads[this._panel.threads.length-1];if(c){const l=[...this._messages].reverse().find(d=>d.role==="assistant"&&d.threadId===c);if(l?.threadId){const d=await this._loadPayload(l.threadId,l.id);if(d){const g=d.elements[d.root];g&&this._panel?.updateTopBar(g.type)}}}}setTimeout(()=>{this._drawer?.scrollToLastThread()},550)}_toggleComparisonSku(t){t===""?(this._comparisonSelectMode=!this._comparisonSelectMode,this._comparisonSelectMode||(this._comparisonSelectedSkus=[],Xo())):this._comparisonSelectedSkus.indexOf(t)>=0?this._comparisonSelectedSkus=this._comparisonSelectedSkus.filter(a=>a!==t):(this._comparisonSelectedSkus=[...this._comparisonSelectedSkus,t],Qo(t)),this._refreshComparisonUI()}_refreshComparisonUI(){const t=this._shadow?.querySelector(".gengage-chat-panel");if(!t)return;const n=t.querySelector(".gengage-chat-product-grid-wrapper");if(!n)return;const a=n.querySelector(".gengage-chat-product-grid");if(!a)return;const i=n.querySelector(".gengage-chat-comparison-toggle-btn");if(i&&i.classList.toggle("gengage-chat-comparison-toggle-btn--active",this._comparisonSelectMode),this._comparisonSelectMode){const o=a.querySelectorAll(".gengage-chat-product-card[data-sku]");for(const s of o){if(s.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")){const g=s.parentElement.querySelector(".gengage-chat-comparison-checkbox");g&&(g.checked=this._comparisonSelectedSkus.includes(s.dataset.sku));continue}const c=s.dataset.sku,l=document.createElement("div");l.className="gengage-chat-comparison-select-wrapper";const d=document.createElement("input");d.type="checkbox",d.className="gengage-chat-comparison-checkbox",d.checked=this._comparisonSelectedSkus.includes(c),d.addEventListener("change",()=>{this._toggleComparisonSku(c)}),s.parentNode.insertBefore(l,s),l.appendChild(d),l.appendChild(s),l.style.cursor="pointer",l.addEventListener("click",g=>{g.target!==d&&(d.checked=!d.checked,this._toggleComparisonSku(c))})}}else{const o=a.querySelectorAll(".gengage-chat-comparison-select-wrapper");for(const s of o){const c=s.querySelector(".gengage-chat-product-card");c&&s.parentNode&&(s.parentNode.insertBefore(c,s),s.remove())}}const r=n.querySelector(".gengage-chat-comparison-floating-btn");if(this._comparisonSelectMode){const o=this._comparisonSelectedSkus.length,s=o>=2,c=this._i18n.compareSelected??"Compare",l=s?`${c} (${o})`:this._i18n.compareMinHint??"Select at least 2 products";if(r)r.textContent=l,r.disabled=!s,r.classList.toggle("gengage-chat-comparison-floating-btn--disabled",!s);else{const d=document.createElement("button");d.className="gengage-chat-comparison-floating-btn",d.type="button",d.textContent=l,d.disabled=!s,s||d.classList.add("gengage-chat-comparison-floating-btn--disabled"),d.addEventListener("click",()=>{this._comparisonSelectedSkus.length<2||(fn(this._comparisonSelectedSkus),this._sendAction({title:c,type:"getComparisonTable",payload:{sku_list:[...this._comparisonSelectedSkus]}}))}),n.appendChild(d)}}else r?.remove()}_buildRenderContext(){const t={onAction:n=>{if(hn(n.title,n.type),n.type==="findSimilar"){const i=typeof n.payload=="object"&&n.payload!==null&&"sku"in n.payload?String(n.payload.sku):"";Yo(i)}n.type==="getComparisonTable"&&fn(this._comparisonSelectedSkus);const a=n.type==="addToCart"||n.type==="like";this._sendAction(n,a?{preservePanel:!0}:void 0)},onProductClick:n=>{mn(n.sku),this.config.isDemoWebsite!==!0&&this._isSameOriginUrl(n.url)?(J("gengage:similar:product-click",{sku:n.sku,url:n.url,sessionId:this.config.session?.sessionId??null}),this._saveSessionAndOpenURL(n.url)):this._sendAction({title:n.sku,type:"launchSingleProduct",payload:{sku:n.sku}})},onAddToCart:n=>{bn(n.sku,n.quantity);const a={...n,sessionId:this.config.session?.sessionId??null};J("gengage:chat:add-to-cart",a),this._bridge?.send("addToCart",n),this._runEventCallbacks("gengage-cart-add",a),this._sendAction({title:this._i18n.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:n.sku,cart_code:n.cartCode,quantity:n.quantity}},{preservePanel:!0})},onProductSelect:n=>{const a={root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:n}}}};this._drawer?.setPanelContent(this._renderUISpec(a,t))},i18n:this._i18n,pricing:this.config.pricing,productSort:this._productSort,onSortChange:n=>{this._productSort=n},comparisonSelectMode:this._comparisonSelectMode,comparisonSelectedSkus:this._comparisonSelectedSkus,onToggleComparisonSku:n=>{this._toggleComparisonSku(n)},favoritedSkus:this._session?.favoritedSkus??new Set,onFavoriteToggle:(n,a)=>{ts(n),this._toggleFavorite(n,a);const i=a.name??n;this._sendAction({title:i,type:"like",payload:{sku:n}},{preservePanel:!0})}};return t}async _toggleFavorite(t,n){if(!this._session)return;const a=this.config.session?.userId??"",i=this.config.accountId;await this._session.toggleFavorite(a,i,t,n)}async _runEventCallbacks(t,n){const a=this._eventCallbacks.get(t);if(!(!a||a.size===0))for(const i of a)try{const r=i(n);if((r instanceof Promise?await r:r)===!1){this._handleCallbackFailure(t,n);return}}catch{this._handleCallbackFailure(t,n);return}}_handleCallbackFailure(t,n){if(t==="gengage-cart-add"){const a=this._i18n.cartAddErrorMessage,i=this._createMessage("assistant",a);this._currentThreadId&&(i.threadId=this._currentThreadId),this._messages.push(i),this._drawer?.addMessage(i)}}_restoreInlineUISpec(t){if(!t.uiSpec||!this._drawer)return;const n=t.uiSpec,a=n.elements[n.root];if(!a)return;const i=a.type;if(i==="ActionButtons"||i==="ComparisonTable"||i==="ProductGrid"&&a.props?.similarsAppend===!0)return;const r=this._buildRenderContext(),o=this._shadow?.querySelector(".gengage-chat-messages");if(!o)return;if(i==="ProductDetailsPanel"){const c=a.props?.product;if(!c)return;const l={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:c}}}},d=this._renderUISpec(l,r);t.threadId&&(d.dataset.threadId=t.threadId),o.appendChild(d);return}const s=this._renderUISpec(n,r);t.threadId&&(s.dataset.threadId=t.threadId),o.appendChild(s)}_createMessage(t,n){return this._currentMessageId++,{id:`msg-${this._currentMessageId}`,role:t,content:n,timestamp:Date.now(),status:"done"}}_resolveI18n(t){return{...Lr(t.locale),...t.i18n}}_resolveUISpecRegistry(){const t=uo();return it(t,this.config.renderer?.registry)}_renderUISpec(t,n){const a=this._resolveUISpecRegistry(),i=this.config.renderer?.unknownRenderer??rn,r=(c,l)=>ho(c,l,a,i),o=this.config.renderer?.renderUISpec;return o?o(t,n,{registry:a,unknownRenderer:i,defaultRender:r}):r(t,n)}}async function Zg(e,t,n){const a=Fe("launcher_action",t),i={uiSpecs:[],actions:[]},r={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(r.signal=n);const o=await fetch(a,r);if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);const s={onEvent:c=>{const l=qe(c);if(l&&(l.type==="ui_spec"&&i.uiSpecs.push(l.spec),l.type==="ui_spec"&&l.spec.elements)){for(const d of Object.values(l.spec.elements))if(d.type==="ActionButton"&&d.props?.action){const g=d.props.action;i.actions.push(g)}}}};return n!==void 0&&(s.signal=n),await Ue(o,s),i}function _a(e){const t=document.createElement("div");t.className="gengage-qna-buttons",t.setAttribute("role","group"),t.setAttribute("aria-label",e.quickQuestionsAriaLabel??"Quick questions"),e.orientation==="vertical"&&(t.style.flexDirection="column");for(const n of e.actions){const a=document.createElement("button");a.className="gengage-qna-button",a.textContent=n.title,a.type="button",a.addEventListener("click",()=>{const i={title:n.title,type:n.type};n.payload!==void 0&&(i.payload=n.payload),e.onAction(i)}),t.appendChild(a)}if(e.ctaText||e.onOpenChat){const n=document.createElement("button");n.className="gengage-qna-cta",n.textContent=e.ctaText??e.defaultCtaText??"Ask something else",n.type="button",n.addEventListener("click",()=>{e.onOpenChat?.()}),t.appendChild(n)}return t}function Hg(e){const t=document.createElement("div");t.className="gengage-qna-input-wrapper";const n=document.createElement("input");n.type="text",n.className="gengage-qna-input",n.setAttribute("aria-label",e.askQuestionAriaLabel??"Ask a question");const a=Array.isArray(e.placeholders)?e.placeholders:e.placeholders?[e.placeholders]:[e.defaultInputPlaceholder??"Ask a question..."];let i=0;n.placeholder=a[0]??"";let r=null,o=null;a.length>1&&(r=setInterval(()=>{n.classList.add("gengage-qna-input--fade"),o=setTimeout(()=>{i=(i+1)%a.length,n.placeholder=a[i]??"",n.classList.remove("gengage-qna-input--fade")},180)},3e3));const s=document.createElement("button");s.className="gengage-qna-send",s.type="button",s.textContent=e.ctaLabel??e.sendButtonText??"Ask",s.setAttribute("aria-label",e.sendQuestionAriaLabel??"Send question");const c=()=>{const l=n.value.trim();l&&(e.onSubmit({title:l,type:"user_message",payload:l}),n.value="")};return s.addEventListener("click",c),n.addEventListener("keydown",l=>{l.key==="Enter"&&(l.preventDefault(),c())}),t.appendChild(n),t.appendChild(s),t._cleanup=()=>{r&&clearInterval(r),o&&clearTimeout(o)},t}function tt(e,t){if(!e||typeof e!="object")return null;const n=e,a=n.type;if(typeof a!="string"||a.length===0)return null;const i=n.title,r=n.payload,o=typeof i=="string"&&i.length>0?i:t;if(!o)return null;const s={title:o,type:a};return r!==void 0&&(s.payload=r),s}function va(e){const t={title:e.title,type:e.type};return e.payload!==void 0&&(t.payload=e.payload),t}function ya(e,t){const n=[],a=e.props?.actions;if(Array.isArray(a))for(const o of a){const s=tt(o);s&&n.push(s)}const i=e.props?.buttons;if(Array.isArray(i))for(const o of i){if(!o||typeof o!="object")continue;const s=o,c=typeof s.label=="string"?s.label:void 0,l=tt(s.action,c);l&&n.push(l)}if(e.children)for(const o of e.children){const s=t.elements[o];if(!s||s.type!=="ActionButton")continue;const c=typeof s.props?.label=="string"?s.props.label:void 0,l=tt(s.props?.action,c);l&&n.push(l)}const r=new Set;return n.filter(o=>r.has(o.title)?!1:(r.add(o.title),!0))}const wa={ButtonRow:({element:e,spec:t,context:n})=>{const a=ya(e,t).map(va),i=e.props?.orientation,r={actions:a,onAction:n.onAction,defaultCtaText:n.i18n.defaultCtaText,quickQuestionsAriaLabel:n.i18n.quickQuestionsAriaLabel};return n.onOpenChat!==void 0&&(r.onOpenChat=n.onOpenChat),n.ctaText!==void 0&&(r.ctaText=n.ctaText),(i==="horizontal"||i==="vertical")&&(r.orientation=i),_a(r)},ActionButtons:({element:e,spec:t,context:n})=>{const i={actions:ya(e,t).map(va),onAction:n.onAction,defaultCtaText:n.i18n.defaultCtaText,quickQuestionsAriaLabel:n.i18n.quickQuestionsAriaLabel};return n.onOpenChat!==void 0&&(i.onOpenChat=n.onOpenChat),n.ctaText!==void 0&&(i.ctaText=n.ctaText),_a(i)},ActionButton:({element:e,context:t})=>{const n=document.createElement("button");n.className="gengage-qna-button",n.type="button";const a=e.props?.label;typeof a=="string"?n.textContent=a:n.textContent=t.i18n.defaultCtaText;const i=tt(e.props?.action,typeof a=="string"?a:void 0);return i&&n.addEventListener("click",()=>t.onAction(i)),n},TextInput:({element:e,context:t})=>{const n=e.props?.placeholder,a=typeof n=="string"||Array.isArray(n)?n:t.inputPlaceholder,i=typeof e.props?.ctaLabel=="string"?e.props.ctaLabel:void 0,r={onSubmit:t.onAction,askQuestionAriaLabel:t.i18n.askQuestionAriaLabel,defaultInputPlaceholder:t.i18n.defaultInputPlaceholder,sendButtonText:t.i18n.sendButton,sendQuestionAriaLabel:t.i18n.sendQuestionAriaLabel};return a!==void 0&&(r.placeholders=a),i!==void 0&&(r.ctaLabel=i),Hg(r)},QuestionHeading:({element:e})=>{const t=document.createElement("h3");t.className="gengage-qna-heading";const n=e.props?.text;return t.textContent=typeof n=="string"?n:"",t},ProductCard:()=>null},xa=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const n=document.createElement("div");for(const a of e.children){const i=t(a);i&&n.appendChild(i)}return n};function Vg(){return{...wa}}function Wg(e,t,n=wa,a=xa){return at({spec:e,context:t,registry:n,containerClassName:"gengage-qna-uispec",unknownRenderer:a})}const ka={quickQuestionsAriaLabel:"Hızlı sorular",askQuestionAriaLabel:"Soru sorun",defaultInputPlaceholder:"Bir soru sorun...",sendButton:"Sor",sendQuestionAriaLabel:"Soruyu gönder",defaultCtaText:"Başka bir şey sor"},Gg={quickQuestionsAriaLabel:"Quick questions",askQuestionAriaLabel:"Ask a question",defaultInputPlaceholder:"Ask a question...",sendButton:"Ask",sendQuestionAriaLabel:"Send question",defaultCtaText:"Ask something else"};function Jg(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function Kg(e){return Jg(e)==="en"?Gg:ka}class Yg extends dt{constructor(){super(...arguments),this._abortController=null,this._debounceTimer=null,this._contentEl=null,this._i18n=ka,this._actionHandler=this._handleAction.bind(this),this._openChatHandler=this._handleOpenChat.bind(this)}async onInit(t){this._i18n=this._resolveI18n(t),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-qna-container",this.root.appendChild(this._contentEl);const n=t.pageContext?.sku;n&&(this._lastSku=n,await this._fetchAndRender(n)),this.isVisible=!0,bt("qna")}onUpdate(t){const n=t.sku;!n||n===this._lastSku||(this._debounceTimer&&clearTimeout(this._debounceTimer),this._debounceTimer=setTimeout(()=>{this._debounceTimer=null,this._lastSku=n,this._fetchAndRender(n)},50))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.2s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._debounceTimer&&(clearTimeout(this._debounceTimer),this._debounceTimer=null),this._contentEl&&(this._cleanupTextInputTimers(),this._contentEl.remove(),this._contentEl=null)}_abort(){this._abortController?.abort(),this._abortController=null}_cleanupTextInputTimers(){if(!this._contentEl)return;const t=this._contentEl.querySelectorAll(".gengage-qna-input-wrapper");for(const n of t)n._cleanup?.()}async _fetchAndRender(t){if(this._abort(),this._abortController=new AbortController,!this._contentEl)return;this._cleanupTextInputTimers(),this._contentEl.innerHTML="";const n=this._createLoadingIndicator();this._contentEl.appendChild(n);const a={middlewareUrl:this.config.middlewareUrl},i=crypto.randomUUID(),r=Date.now();this.track(rt(this.analyticsContext(),{endpoint:"launcher_action",request_id:i,widget:"qna"}));try{const o={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:t,locale:this.config.locale??"tr"},s=this.config.pageContext?.pageType;s!==void 0&&(o.page_type=s);const c=await Zg(o,a,this._abortController.signal);if(this.track($e(this.analyticsContext(),{request_id:i,latency_ms:Date.now()-r,chunk_count:c.actions.length,widget:"qna"})),this.track(st(this.analyticsContext(),{message_count:c.actions.length,history_ref:i,redaction_level:"none",widget:"qna"})),!this._contentEl)return;if(this._contentEl.innerHTML="",!this._specIncludesType(c.uiSpecs,"QuestionHeading")&&this.config.showStaticQuestion&&this.config.staticQuestionText){const _=document.createElement("h3");_.className="gengage-qna-heading",_.textContent=this.config.staticQuestionText,this._contentEl.appendChild(_)}const d=this.config.inputPlaceholder,g=c.actions.length>0&&d===!0?c.actions.map(_=>_.title):d===!0?this._i18n.defaultInputPlaceholder:d??this._i18n.defaultInputPlaceholder,p={onAction:this._actionHandler,i18n:this._i18n};this.config.hideButtonRowCta||(p.onOpenChat=this._openChatHandler,this.config.ctaText!==void 0&&(p.ctaText=this.config.ctaText)),g!==void 0&&(p.inputPlaceholder=g);const u=this._buildFallbackActionsSpec(c.actions),h=(c.uiSpecs.length>0?c.uiSpecs:[u]).filter(_=>Object.keys(_.elements).length>0);for(const _ of h){const k=this._renderUISpec(_,p);this._contentEl.appendChild(k)}h.length>0&&Ze("qna"),!this._specIncludesType(h,"TextInput")&&this._appendStandaloneInput(p,g)}catch(o){if(o instanceof DOMException&&o.name==="AbortError")return;if(J("gengage:global:error",{source:"qna",code:"FETCH_ERROR",message:qt(this.config.locale)}),this.track(ot(this.analyticsContext(),{request_id:i,error_code:"FETCH_ERROR",error_message:o instanceof Error?o.message:String(o),widget:"qna"})),this._contentEl){this._cleanupTextInputTimers(),this._contentEl.innerHTML="";const s=this.config.inputPlaceholder===!0?this._i18n.defaultInputPlaceholder:this.config.inputPlaceholder??this._i18n.defaultInputPlaceholder,c={onAction:this._actionHandler,i18n:this._i18n,onOpenChat:this._openChatHandler};this.config.ctaText!==void 0&&(c.ctaText=this.config.ctaText),this._appendStandaloneInput(c,s)}}}_createLoadingIndicator(){const t=document.createElement("div");t.className="gengage-qna-loading";for(let n=0;n<3;n++){const a=document.createElement("div");a.className="gengage-qna-loading-dot",t.appendChild(a)}return t}_resolveI18n(t){return{...Kg(t.locale),...t.i18n}}_resolveUISpecRegistry(){const t=Vg();return it(t,this.config.renderer?.registry)}_renderUISpec(t,n){const a=this._resolveUISpecRegistry(),i=this.config.renderer?.unknownRenderer??xa,r=(c,l)=>Wg(c,l,a,i),o=this.config.renderer?.renderUISpec;return o?o(t,n,{registry:a,unknownRenderer:i,defaultRender:r}):r(t,n)}_specIncludesType(t,n){for(const a of t)for(const i of Object.values(a.elements))if(i.type===n)return!0;return!1}_buildFallbackActionsSpec(t){if(t.length===0)return{root:"root",elements:{}};const n={},a=[];for(let i=0;i<t.length;i++){const r=t[i],o=`action-${i}`;a.push(o),n[o]={type:"ActionButton",props:{label:r.title,action:{title:r.title,type:r.type,payload:r.payload}}}}return n.root={type:"ButtonRow",children:a},{root:"root",elements:n}}_appendStandaloneInput(t,n){if(!this._contentEl)return;const a={root:"root",elements:{root:{type:"TextInput",props:{placeholder:n}}}},i=this._renderUISpec(a,t);this._contentEl.appendChild(i)}_handleAction(t){hn(t.title,t.type),this.config.onActionSelected?.(t),J("gengage:qna:action",t)}_handleOpenChat(){const t=this._contentEl?.querySelector(".gengage-qna-input");t&&t.focus(),this.config.onOpenChat?.(),J("gengage:qna:open-chat",{})}}function Ca(e){const t=[];for(const n of Object.values(e))if(n.type==="ProductCard"&&n.props){const a=n.props.product??n.props;typeof a.sku=="string"&&typeof a.name=="string"&&t.push(a)}return t}function Ea(e){const t=e.headers.get("Content-Type")??"";return t.includes("application/x-ndjson")||t.includes("text/event-stream")}async function Qg(e,t){const n=[],a={onEvent:i=>{const r=qe(i);!r||r.type!=="ui_spec"||n.push(...Ca(r.spec.elements))}};return t!==void 0&&(a.signal=t),await Ue(e,a),n}async function Xg(e,t,n){const a=Fe("similar_products",t),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(i.signal=n);const r=await fetch(a,i);if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);if(Ea(r))return Qg(r,n);const o=await r.text();if(!o)return[];try{return wr(JSON.parse(o))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function ep(e,t){const n=[];let a=null;const i={onEvent:r=>{const o=qe(r);if(o){if(o.type==="metadata"&&o.meta){const s=o.meta.group_name;if(typeof s=="string"){a={name:s,products:[]};const c=o.meta.highlight;typeof c=="string"&&(a.highlight=c),n.push(a)}}o.type==="ui_spec"&&a&&a.products.push(...Ca(o.spec.elements))}}};return t!==void 0&&(i.signal=t),await Ue(e,i),n}async function tp(e,t,n){const a=Fe("product_groupings",t),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(i.signal=n);const r=await fetch(a,i);if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);if(Ea(r))return ep(r,n);const o=await r.text();if(!o)return[];try{return xr(JSON.parse(o))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}function Sa(e){const{product:t,index:n,discountType:a,onClick:i,onAddToCart:r,renderCard:o}=e,s=e.i18n,c=e.pricing;if(e.renderCardElement){const h=e.renderCardElement(t,n);if(h)return h}if(o){const h=document.createElement("div");return h.className="gengage-simrel-card gengage-simrel-card--custom",h.innerHTML=ee(o(t,n)),h.addEventListener("click",b=>{b.target.closest(".gengage-simrel-atc")||b.target.closest(".gengage-chat-product-card-atc")||i(t)}),h}const l=document.createElement("article");l.className="gengage-simrel-card gengage-chat-product-card",l.setAttribute("role","listitem"),l.dataset.sku=t.sku;const d=document.createElement("div");if(d.className="gengage-simrel-card-image gengage-chat-product-card-img-wrapper",t.imageUrl&&ie(t.imageUrl)){const h=document.createElement("img");h.className="gengage-chat-product-card-img",h.src=t.imageUrl,h.alt=t.name,h.loading="lazy",ce(h),d.appendChild(h)}if(a==="badge"&&t.discountPercent&&t.discountPercent>0){const h=document.createElement("span");h.className="gengage-simrel-badge gengage-chat-product-card-discount-badge",h.textContent=`%${je(t.discountPercent)}`,d.appendChild(h)}l.appendChild(d);const g=document.createElement("div");if(g.className="gengage-simrel-card-info gengage-chat-product-card-body",t.brand){const h=document.createElement("div");h.className="gengage-simrel-card-brand gengage-chat-product-card-brand",h.textContent=t.brand,g.appendChild(h)}const p=document.createElement("div");if(p.className="gengage-simrel-card-name gengage-chat-product-card-name",p.textContent=t.name,g.appendChild(p),t.rating!=null&&t.rating>0){const h=document.createElement("div");if(h.className="gengage-simrel-card-rating gengage-chat-product-card-rating",h.appendChild(ht(t.rating)),t.reviewCount!=null){const b=document.createElement("span");b.className="gengage-simrel-card-review-count gengage-chat-product-card-review-count",b.textContent=` (${t.reviewCount})`,h.appendChild(b)}g.appendChild(h)}const u=document.createElement("div");if(u.className="gengage-simrel-card-price gengage-chat-product-card-price",t.originalPrice&&t.originalPrice!==t.price&&(a==="strike-through"||!a)){const h=document.createElement("span");h.className="gengage-simrel-card-price-original gengage-chat-product-card-original-price",h.textContent=V(t.originalPrice,c),u.appendChild(h)}if(t.price){const h=document.createElement("span");h.className="gengage-simrel-card-price-current gengage-chat-product-card-price-current",h.textContent=V(t.price,c),u.appendChild(h)}g.appendChild(u),l.appendChild(g);const f=document.createElement("button");if(f.className="gengage-simrel-card-cta gengage-chat-product-card-cta",f.type="button",f.textContent=s?.ctaLabel??"View",f.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),i(t)}),l.appendChild(f),t.inStock===!1){const h=document.createElement("div");h.className="gengage-simrel-card-oos",h.textContent=s?.outOfStockLabel??"Out of Stock",l.appendChild(h)}else if(t.cartCode){const h=t.cartCode,b=ft({compact:!0,label:s?.addToCartButton??"Add to Cart",onSubmit:_=>{r({sku:t.sku,quantity:_,cartCode:h})}});b.classList.add("gengage-simrel-atc"),l.appendChild(b)}return l.addEventListener("click",h=>{h.target.closest(".gengage-simrel-atc")||h.target.closest(".gengage-chat-product-card-atc")||h.target.closest(".gengage-chat-product-card-cta")||i(t)}),l}function Ta(e){const t=document.createElement("div");t.className="gengage-simrel-grid",t.setAttribute("role","list"),t.setAttribute("aria-label",e.i18n?.similarProductsAriaLabel??"Similar products"),e.columns&&t.style.setProperty("--gengage-simrel-columns",String(e.columns));for(let n=0;n<e.products.length;n++){const i={product:e.products[n],index:n,onClick:e.onClick,onAddToCart:e.onAddToCart};e.i18n!==void 0&&(i.i18n=e.i18n),e.discountType!==void 0&&(i.discountType=e.discountType),e.renderCard!==void 0&&(i.renderCard=e.renderCard),e.renderCardElement!==void 0&&(i.renderCardElement=e.renderCardElement);const r=Sa(i);t.appendChild(r)}if(e.products.length===0){const n=document.createElement("div");n.className="gengage-simrel-empty",n.textContent=e.i18n?.emptyStateMessage??"No similar products found.",t.appendChild(n)}return t}let np=0;function ap(e){const t=np++,n=document.createElement("div");if(n.className="gengage-simrel-groups",e.groups.length===0){const d=document.createElement("div");return d.className="gengage-simrel-empty",d.textContent=e.i18n?.emptyStateMessage??"No similar products found.",n.appendChild(d),n}const a=document.createElement("div");a.className="gengage-simrel-tabs",a.setAttribute("role","tablist");const i=[],r=[],o=d=>{const g={products:d.products,onClick:e.onClick,onAddToCart:e.onAddToCart};return e.i18n!==void 0&&(g.i18n=e.i18n),e.discountType!==void 0&&(g.discountType=e.discountType),e.renderCard!==void 0&&(g.renderCard=e.renderCard),e.renderCardElement!==void 0&&(g.renderCardElement=e.renderCardElement),g},s=d=>{for(let f=0;f<i.length;f++){const h=f===d;i[f].classList.toggle("gengage-simrel-tab--active",h),i[f].setAttribute("aria-selected",String(h)),i[f].tabIndex=h?0:-1}const g=e.groups[d],p=r[d];p.innerHTML="";const u=Ta(o(g));p.appendChild(u);for(let f=0;f<r.length;f++){const h=f===d;r[f].style.display=h?"":"none",r[f].tabIndex=h?0:-1}};for(let d=0;d<e.groups.length;d++){const g=e.groups[d],p=`gengage-simrel-tab-${t}-${d}`,u=`gengage-simrel-panel-${t}-${d}`,f=document.createElement("button");f.className="gengage-simrel-tab",f.type="button",f.id=p,f.textContent=g.name,f.setAttribute("role","tab"),f.setAttribute("aria-controls",u),f.setAttribute("aria-selected",String(d===0)),f.tabIndex=d===0?0:-1,d===0&&f.classList.add("gengage-simrel-tab--active"),f.addEventListener("click",()=>s(d)),f.addEventListener("keydown",b=>{let _=-1;b.key==="ArrowRight"||b.key==="ArrowDown"?_=(d+1)%e.groups.length:b.key==="ArrowLeft"||b.key==="ArrowUp"?_=(d-1+e.groups.length)%e.groups.length:b.key==="Home"?_=0:b.key==="End"&&(_=e.groups.length-1),_>=0&&(b.preventDefault(),s(_),i[_].focus())}),i.push(f),a.appendChild(f);const h=document.createElement("div");h.className="gengage-simrel-tab-panel",h.id=u,h.setAttribute("role","tabpanel"),h.setAttribute("aria-labelledby",p),h.tabIndex=d===0?0:-1,d!==0&&(h.style.display="none"),r.push(h)}n.appendChild(a);const c=r[0],l=Ta(o(e.groups[0]));c.appendChild(l);for(const d of r)n.appendChild(d);return n}function Ia(e){if(!e||typeof e!="object")return null;const t=e;if(typeof t.sku!="string"||typeof t.name!="string"||typeof t.url!="string")return null;const n={sku:t.sku,name:t.name,url:t.url},a=t.imageUrl;typeof a=="string"&&(n.imageUrl=a);const i=t.price;typeof i=="string"&&(n.price=i);const r=t.originalPrice;typeof r=="string"&&(n.originalPrice=r);const o=t.discountPercent;typeof o=="number"&&(n.discountPercent=o);const s=t.brand;typeof s=="string"&&(n.brand=s);const c=t.rating;typeof c=="number"&&(n.rating=c);const l=t.reviewCount;typeof l=="number"&&(n.reviewCount=l);const d=t.cartCode;typeof d=="string"&&(n.cartCode=d);const g=t.inStock;typeof g=="boolean"&&(n.inStock=g);const p=t.extras;return p!=null&&typeof p=="object"&&(n.extras=p),n}function ip(e){if(!e||typeof e!="object")return null;const t=e,n=t.title,a=t.type;if(typeof n!="string"||typeof a!="string")return null;const i={title:n,type:a};return t.payload!==void 0&&(i.payload=t.payload),i}const Aa={ProductGrid:({element:e,renderElement:t,context:n})=>{const a=document.createElement("div");a.className="gengage-simrel-grid",a.setAttribute("role","list");const i=e.props?.columns;typeof i=="number"&&Number.isFinite(i)&&i>0&&a.style.setProperty("--gengage-simrel-columns",String(i));for(const r of e.children??[]){const o=t(r);o&&a.appendChild(o)}if(a.children.length===0){const r=document.createElement("div");r.className="gengage-simrel-empty",r.textContent=n.i18n.emptyStateMessage,a.appendChild(r)}return a},ProductCard:({element:e,context:t})=>{const n=e.props?.product??e.props,a=Ia(n);if(!a)return null;const i=e.props?.index,r=typeof i=="number"&&Number.isFinite(i)?i:0,o=e.props?.discountType,s=o==="strike-through"||o==="badge"?o:t.discountType,c={product:a,index:r,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n};return s!==void 0&&(c.discountType=s),t.renderCard!==void 0&&(c.renderCard=t.renderCard),t.renderCardElement!==void 0&&(c.renderCardElement=t.renderCardElement),t.pricing!==void 0&&(c.pricing=t.pricing),Sa(c)},GroupTabs:({element:e,context:t})=>{const n=e.props?.groups;if(!Array.isArray(n))return null;const a=[];for(const r of n){if(!r||typeof r!="object")continue;const o=r;if(typeof o.name!="string")continue;const s=[];if(Array.isArray(o.products))for(const l of o.products){const d=Ia(l);d&&s.push(d)}const c={name:o.name,products:s};typeof o.highlight=="string"&&(c.highlight=o.highlight),a.push(c)}const i={groups:a,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n};return t.discountType!==void 0&&(i.discountType=t.discountType),t.renderCard!==void 0&&(i.renderCard=t.renderCard),t.renderCardElement!==void 0&&(i.renderCardElement=t.renderCardElement),ap(i)},EmptyState:({element:e,context:t})=>{const n=document.createElement("div");n.className="gengage-simrel-empty";const a=e.props?.message;return n.textContent=typeof a=="string"?a:t.i18n.emptyStateMessage,n},AddToCartButton:({element:e,context:t})=>{const n=e.props?.sku,a=e.props?.cartCode;if(typeof n!="string"||typeof a!="string")return null;const i=document.createElement("button");i.className="gengage-simrel-atc gengage-chat-product-card-cta",i.type="button";const r=e.props?.label;return i.textContent=typeof r=="string"?r:t.i18n.addToCartButton,i.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),t.onAddToCart({sku:n,quantity:1,cartCode:a})}),i},QuickActions:({element:e,context:t})=>{const n=document.createElement("div");n.className="gengage-simrel-quick-actions";const a=e.props?.actions;if(!Array.isArray(a)||!t.onAction)return n;for(const i of a){if(!i||typeof i!="object")continue;const r=i,o=r.label,s=ip(r.action);if(typeof o!="string"||!s)continue;const c=document.createElement("button");c.className="gengage-simrel-quick-action",c.type="button",c.textContent=o,c.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation(),t.onAction?.(s)}),n.appendChild(c)}return n}},Na=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const n=document.createElement("div");for(const a of e.children){const i=t(a);i&&n.appendChild(i)}return n};function rp(){return{...Aa}}function op(e,t,n=Aa,a=Na){return at({spec:e,context:t,registry:n,containerClassName:"gengage-simrel-uispec",unknownRenderer:a})}const La={similarProductsAriaLabel:"Benzer ürünler",emptyStateMessage:"Benzer ürün bulunamadı.",addToCartButton:"Sepete Ekle",ctaLabel:"İncele",outOfStockLabel:"Stokta Yok",priceSuffix:" TL"},sp={similarProductsAriaLabel:"Similar products",emptyStateMessage:"No similar products found.",addToCartButton:"Add to cart",ctaLabel:"View",outOfStockLabel:"Out of Stock",priceSuffix:""};function cp(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function lp(e){return cp(e)==="en"?sp:La}class dp extends dt{constructor(){super(...arguments),this._abortController=null,this._contentEl=null,this._i18n=La}async onInit(t){this._i18n=this._resolveI18n(t),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this.root.appendChild(this._contentEl),this._lastSku=t.sku,await this._fetchAndRender(t.sku),this.isVisible=!0,bt("simrel")}onUpdate(t){const n=t.sku;!n||n===this._lastSku||(this._lastSku=n,this._fetchAndRender(n))}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(t){const n={sku:t.sku,name:t.name,url:t.url};if(t.imageUrl!==void 0&&(n.imageUrl=t.imageUrl),t.price!==void 0&&(n.price=t.price),t.originalPrice!==void 0&&(n.originalPrice=t.originalPrice),t.discountPercent!==void 0&&(n.discountPercent=t.discountPercent),t.brand!==void 0&&(n.brand=t.brand),t.rating!==void 0&&(n.rating=t.rating),t.reviewCount!==void 0&&(n.reviewCount=t.reviewCount),t.cartCode!==void 0&&(n.cartCode=t.cartCode),t.inStock!==void 0&&(n.inStock=t.inStock),this.config.onProductClick?.(n)===!1)return;mn(t.sku,t.name);const a=this.config.session?.sessionId??null;J("gengage:similar:product-click",{sku:t.sku,url:t.url,sessionId:a}),this.config.onProductNavigate?.(t.url,t.sku,a)}_handleAddToCart(t){bn(t.sku,t.quantity),this.config.onAddToCart?.(t),J("gengage:similar:add-to-cart",t),this.track(Xa(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:"TRY",line_items:t.quantity,sku:t.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}async _fetchAndRender(t){this._abort(),this._abortController=new AbortController;const n=this._abortController.signal;if(!this._contentEl)return;this._contentEl.innerHTML="",this._contentEl.style.display="";const a=document.createElement("div");a.className="gengage-simrel-loading";const i=document.createElement("div");i.className="gengage-simrel-spinner",a.appendChild(i),this._contentEl.appendChild(a);const r={middlewareUrl:this.config.middlewareUrl},o=crypto.randomUUID(),s=Date.now();this.track(rt(this.analyticsContext(),{endpoint:"similar_products",request_id:o,widget:"simrel"}));try{const c={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:t};this.config.domain!==void 0&&(c.domain=this.config.domain);const l=await Xg(c,r,n);if(!this._contentEl)return;if(this._contentEl.innerHTML="",l.length>0)try{const d=l.map(p=>p.sku),g=await tp({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:d},r,n);if(g.length>0&&this._contentEl){const p=this._buildGroupsSpec(g),u=this._renderUISpec(p);this._contentEl.appendChild(u),Ze("simrel"),this.track($e(this.analyticsContext(),{request_id:o,latency_ms:Date.now()-s,chunk_count:g.reduce((f,h)=>f+h.products.length,0),widget:"simrel"})),this.track(st(this.analyticsContext(),{message_count:g.reduce((f,h)=>f+h.products.length,0),history_ref:o,redaction_level:"none",widget:"simrel"}));return}}catch{}if(this._contentEl){const d=this._buildProductsSpec(l),g=this._renderUISpec(d);this._contentEl.appendChild(g)}l.length>0&&Ze("simrel"),this.track($e(this.analyticsContext(),{request_id:o,latency_ms:Date.now()-s,chunk_count:l.length,widget:"simrel"})),this.track(st(this.analyticsContext(),{message_count:l.length,history_ref:o,redaction_level:"none",widget:"simrel"}))}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;if(J("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:qt(this.config.locale)}),this.track(ot(this.analyticsContext(),{request_id:o,error_code:"FETCH_ERROR",error_message:c instanceof Error?c.message:String(c),widget:"simrel"})),this._contentEl){this._contentEl.innerHTML="";const l=document.createElement("div");l.className="gengage-simrel-error",l.style.cssText="text-align:center;padding:16px;color:#6b7280;font-size:13px;";const d=document.createElement("span");d.textContent=this.config.locale?.startsWith("tr")?"Benzer ürünler yüklenemedi.":"Could not load similar products.",l.appendChild(d);const g=document.createElement("button");g.textContent=this.config.locale?.startsWith("tr")?"Tekrar dene":"Try again",g.style.cssText="margin-left:8px;border:1px solid #d1d5db;background:#fff;border-radius:6px;padding:4px 12px;cursor:pointer;font-size:13px;color:#374151;",g.addEventListener("click",()=>{this._fetchAndRender(this.config.sku)}),l.appendChild(g),this._contentEl.appendChild(l)}}}_resolveI18n(t){return{...lp(t.locale),...t.i18n}}_resolveUISpecRegistry(){const t=rp();return it(t,this.config.renderer?.registry)}_buildRenderContext(){const t=this.config.renderCard,n={onClick:a=>this._handleProductClick(a),onAddToCart:a=>this._handleAddToCart(a),i18n:this._i18n};return this.config.discountType!==void 0&&(n.discountType=this.config.discountType),t!==void 0&&(n.renderCard=t),this.config.renderCardElement!==void 0&&(n.renderCardElement=this.config.renderCardElement),this.config.pricing!==void 0&&(n.pricing=this.config.pricing),n}_renderUISpec(t){const n=this._resolveUISpecRegistry(),a=this._buildRenderContext(),i=this.config.renderer?.unknownRenderer??Na,r=(c,l)=>op(c,l,n,i),o=this.config.renderer?.renderUISpec;return o?o(t,a,{registry:n,unknownRenderer:i,defaultRender:r}):r(t,a)}_buildProductsSpec(t){const n={},a=[];for(let i=0;i<t.length;i++){const r=t[i],o=`product-${i}`;a.push(o),n[o]={type:"ProductCard",props:{product:r,index:i,discountType:this.config.discountType}}}return n.root={type:"ProductGrid",props:{layout:"grid"},children:a},{root:"root",elements:n}}_buildGroupsSpec(t){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:t}}}}}}const Pt=le({enabled:ye().default(!0)}),gp=le({chat:ae().optional(),qna:ae().optional(),simrel:ae().optional()}),pp=le({}),up=Nt(["none","x-api-key-header","bearer-header","body-api-key"]),hp=le({mode:up.default("none"),key:ae().optional(),headerName:ae().optional(),bodyField:ae().default("api_key")}),fp=le({enabled:ye().default(!0),endpoint:ae().default("/analytics"),auth:hp.default({mode:"none",bodyField:"api_key"}),fireAndForget:ye().default(!0),useBeacon:ye().default(!0),keepaliveFetch:ye().default(!0),timeoutMs:da().int().positive().default(4e3),maxRetries:da().int().min(0).max(5).default(1)}),Pa="__gengageWidgetsInit",mp=le({idempotencyKey:ae().default(Pa),requireDomReady:ye().default(!0)}),bp=Nt(["log-and-ignore","throw","delegate"]),_p=le({unknownActionPolicy:bp.default("log-and-ignore"),allowScriptCall:ye().default(!1)});le({version:kg("1",{error:'version must be "1"'}),accountId:ae({error:"accountId must be a non-empty string"}).min(1,{error:"accountId must be a non-empty string"}),middlewareUrl:ae({error:'middlewareUrl must be a valid URL (e.g. "https://your-backend.example.com")'}).url({error:'middlewareUrl must be a valid URL (e.g. "https://your-backend.example.com")'}),locale:ae().optional(),widgets:le({chat:Pt.default({enabled:!0}),qna:Pt.default({enabled:!0}),simrel:Pt.default({enabled:!0})}),mounts:gp.default({}),transport:pp.default({}),analytics:fp.default({enabled:!0,endpoint:"/analytics",auth:{mode:"none",bodyField:"api_key"},fireAndForget:!0,useBeacon:!0,keepaliveFetch:!0,timeoutMs:4e3,maxRetries:1}),gtm:mp.default({idempotencyKey:"__gengageWidgetsInit",requireDomReady:!0}),actionHandling:_p.default({unknownActionPolicy:"log-and-ignore",allowScriptCall:!1})});const vp=`${Pa}_overlay_`,yp="#gengage-qna",wp="#gengage-simrel";function za(){const e=window;return e.__gengageOverlayRegistry||(e.__gengageOverlayRegistry={instances:{},pending:{}}),e.__gengageOverlayRegistry}function xp(e){const t={pageType:e.pageContext?.pageType??(e.sku!==void 0?"pdp":"other")},n=e.pageContext;return n?.sku!==void 0&&(t.sku=n.sku),n?.price!==void 0&&(t.price=n.price),n?.categoryTree!==void 0&&(t.categoryTree=n.categoryTree),n?.url!==void 0&&(t.url=n.url),n?.extra!==void 0&&(t.extra=n.extra),e.sku!==void 0&&(t.sku=e.sku),t}function kp(e,t){const n={...e,...t,pageType:t.pageType??e.pageType};return t.sku===void 0&&e.sku!==void 0&&(n.sku=e.sku),n}function Ma(e){return e instanceof HTMLElement||document.querySelector(e)?e:null}function Ra(e){return e.idempotencyKey??`${vp}${e.accountId}`}class Cp{constructor(t,n){this.options=t,this.onDestroy=n,this._chat=null,this._qna=null,this._simrel=null,this._analyticsClient=null,this._offQnaWire=null,this._destroyed=!1,this._queue=Promise.resolve(),this._warnedQnaMountMissing=!1,this._warnedSimRelMountMissing=!1,this.idempotencyKey=Ra(t),this.session=$t(t.session),this._pageContext=xp(t)}get chat(){return this._chat}get qna(){return this._qna}get simrel(){return this._simrel}get analyticsClient(){return this._analyticsClient}async init(){window.gengage||(window.gengage={}),window.gengage.sessionId=this.session.sessionId,window.gengage.pageContext=this._pageContext,await this._initChat(),this.options.wireQnaToChat!==!1&&(this._offQnaWire=li()),await this._syncPdpWidgets(),window.gengage.overlay=this}openChat(t){this._chat?.open(t)}closeChat(){this._chat?.close()}async updateContext(t){this._destroyed||await this._enqueue(async()=>{this._pageContext=kp(this._pageContext,t),window.gengage||(window.gengage={}),window.gengage.pageContext=this._pageContext,this._chat?.update(t),this._qna?.update(t),this._simrel?.update(t),await this._syncPdpWidgets()})}async updateSku(t,n="pdp"){await this.updateContext({sku:t,pageType:n})}destroy(){this._destroyed||(this._destroyed=!0,this._offQnaWire?.(),this._offQnaWire=null,this._chat?.destroy(),this._qna?.destroy(),this._simrel?.destroy(),this._chat=null,this._qna=null,this._simrel=null,window.gengage?.overlay===this&&delete window.gengage.overlay,this.onDestroy())}async _initChat(){if(this.options.chat?.enabled===!1)return;const t=this.options.middlewareUrl,n={accountId:this.options.accountId,middlewareUrl:t,session:this.session,pageContext:this._pageContext,variant:this.options.chat?.variant??"floating"};this.options.theme!==void 0&&(n.theme=this.options.theme),this.options.locale!==void 0&&(n.locale=this.options.locale),this.options.pricing!==void 0&&(n.pricing=this.options.pricing),this.options.chat?.mountTarget!==void 0&&(n.mountTarget=this.options.chat.mountTarget),this.options.chat?.launcherImageUrl!==void 0?n.launcherImageUrl=this.options.chat.launcherImageUrl:this.options.chat?.launcherSvg!==void 0&&(n.launcherSvg=this.options.chat.launcherSvg),this.options.chat?.headerTitle!==void 0&&(n.headerTitle=this.options.chat.headerTitle),this.options.chat?.headerAvatarUrl!==void 0&&(n.headerAvatarUrl=this.options.chat.headerAvatarUrl),this.options.chat?.headerBadge!==void 0&&(n.headerBadge=this.options.chat.headerBadge),this.options.chat?.headerCartUrl!==void 0&&(n.headerCartUrl=this.options.chat.headerCartUrl),this.options.chat?.headerFavoritesToggle!==void 0&&(n.headerFavoritesToggle=this.options.chat.headerFavoritesToggle),this.options.chat?.hideMobileLauncher!==void 0&&(n.hideMobileLauncher=this.options.chat.hideMobileLauncher),this.options.chat?.mobileBreakpoint!==void 0&&(n.mobileBreakpoint=this.options.chat.mobileBreakpoint),this.options.chat?.mobileInitialState!==void 0&&(n.mobileInitialState=this.options.chat.mobileInitialState),this.options.chat?.i18n!==void 0&&(n.i18n=this.options.chat.i18n),this.options.chat?.actionHandling!==void 0&&(n.actionHandling=this.options.chat.actionHandling),this.options.chat?.renderer!==void 0&&(n.renderer=this.options.chat.renderer),this.options.onScriptCall!==void 0&&(n.onScriptCall=this.options.onScriptCall),this._chat=new jg,await this._chat.init(n)}async _syncPdpWidgets(){if(this._destroyed)return;const t=this._pageContext.sku;if(!(this._pageContext.pageType==="pdp"&&t!==void 0&&t.length>0)){this._destroyPdpWidgets();return}const a=this.options.middlewareUrl;if(this.options.qna?.enabled!==!1){const i=this.options.qna?.mountTarget??yp,r=Ma(i);if(r)if(this._warnedQnaMountMissing=!1,this._qna)this._qna.show(),this._qna.update({pageType:"pdp",sku:t});else{const o=new Yg,s={accountId:this.options.accountId,middlewareUrl:a,session:this.session,pageContext:{pageType:"pdp",sku:t},mountTarget:r};this.options.theme!==void 0&&(s.theme=this.options.theme),this.options.qna?.ctaText!==void 0&&(s.ctaText=this.options.qna.ctaText),this.options.qna?.hideButtonRowCta!==void 0&&(s.hideButtonRowCta=this.options.qna.hideButtonRowCta),this.options.qna?.inputPlaceholder!==void 0&&(s.inputPlaceholder=this.options.qna.inputPlaceholder),this.options.qna?.i18n!==void 0&&(s.i18n=this.options.qna.i18n),this.options.qna?.renderer!==void 0&&(s.renderer=this.options.qna.renderer),await o.init(s),this._qna=o}else this._qna?.destroy(),this._qna=null,this._warnedQnaMountMissing||(console.warn(`[gengage] QNA mount target not found: ${i}`),this._warnedQnaMountMissing=!0)}else this._qna?.destroy(),this._qna=null;if(this.options.simrel?.enabled!==!1){const i=this.options.simrel?.mountTarget??wp,r=Ma(i);if(r)if(this._warnedSimRelMountMissing=!1,this._simrel)this._simrel.show(),this._simrel.update({pageType:"pdp",sku:t});else{const o=new dp,s={accountId:this.options.accountId,middlewareUrl:a,session:this.session,sku:t,mountTarget:r};this.options.theme!==void 0&&(s.theme=this.options.theme),this.options.pricing!==void 0&&(s.pricing=this.options.pricing),this.options.simrel?.discountType!==void 0&&(s.discountType=this.options.simrel.discountType),this.options.simrel?.renderCardElement!==void 0&&(s.renderCardElement=this.options.simrel.renderCardElement),this.options.simrel?.renderer!==void 0&&(s.renderer=this.options.simrel.renderer),this.options.onAddToCart!==void 0&&(s.onAddToCart=this.options.onAddToCart),this.options.onProductNavigate!==void 0?s.onProductNavigate=this.options.onProductNavigate:s.onProductNavigate=(c,l,d)=>{Y(c)&&(this._chat?.saveSession(d??this.session.sessionId,l),window.location.href=c)},await o.init(s),this._simrel=o}else this._simrel?.destroy(),this._simrel=null,this._warnedSimRelMountMissing||(console.warn(`[gengage] SimRel mount target not found: ${i}`),this._warnedSimRelMountMissing=!0)}else this._simrel?.destroy(),this._simrel=null}_destroyPdpWidgets(){this._qna?.destroy(),this._simrel?.destroy(),this._qna=null,this._simrel=null}_enqueue(t){const n=this._queue.then(t);return this._queue=n.catch(a=>{}),n}}async function Ep(e){const t=Ra(e),n=za(),a=n.instances[t];if(a)return a;const i=n.pending[t];if(i)return i;const r=new Cp(e,()=>{const s=za();delete s.instances[t],delete s.pending[t]}),o=r.init().then(()=>(n.instances[t]=r,delete n.pending[t],r)).catch(s=>{throw delete n.pending[t],s});return n.pending[t]=o,o}const Oa=["gengage:chat:open","gengage:chat:close","gengage:chat:ready","gengage:chat:add-to-cart","gengage:qna:action","gengage:qna:open-chat","gengage:similar:product-click","gengage:similar:add-to-cart","gengage:global:error","gengage:context:update"],Sp=32,$a="#gengage-qna",Ba="#gengage-simrel";function Lp(e){return e}function Tp(e){let t=e;if(typeof e=="string"){const r=e.trim();if(r.length===0)return null;if(!r.startsWith("{")&&!r.startsWith("["))return{type:r};try{t=JSON.parse(r)}catch{return null}}if(!t||typeof t!="object")return null;const n=t,a=[n.type,n.command,n.action,n.event].find(r=>typeof r=="string"&&r.length>0);if(!a)return null;let i=n.payload;if(i===void 0&&"data"in n&&(i=n.data),a==="setSession"&&i===void 0){const r={};typeof n.sessionId=="string"&&(r.sessionId=n.sessionId),typeof n.userId=="string"&&(r.userId=n.userId),(r.sessionId!==void 0||r.userId!==void 0)&&(i=r)}return i===void 0?{type:a}:{type:a,payload:i}}function Ip(e){if(typeof e=="string"&&e.length>0)return{sku:e};if(e&&typeof e=="object"&&"sku"in e){const t=e.sku;if(typeof t=="string"&&t.length>0){const n=e.pageType;return n!==void 0?{sku:t,pageType:n}:{sku:t}}}return null}function zt(e,t){return t instanceof HTMLElement?!0:typeof t!="string"?!1:e.document.querySelector(t)!==null}function Da(e,t,n){if(t instanceof HTMLElement||zt(e,t)||typeof t!="string")return t;if(t.startsWith("#")){const r=t.slice(1);if(r.length>0){const o=e.document.getElementById(r);if(o)return o;const s=e.document.createElement("div");return s.id=r,e.document.body.appendChild(s),s}}const a=e.document.getElementById(n);if(a)return a;const i=e.document.createElement("div");return i.id=n,e.document.body.appendChild(i),i}function Ua(e,t){const n=e.webkit?.messageHandlers?.[t];return n&&typeof n.postMessage=="function"?n.postMessage.bind(n):null}function nt(e,t){const n=e[t];return n&&typeof n=="object"&&typeof n.postMessage=="function"?n:null}function qa(e={}){const t=e.win??window,n=e.iosHandlerName??"gengage",a=e.androidInterfaceName??"GengageNative",i=e.reactNativeInterfaceName??"ReactNativeWebView";return Ua(t,n)?"ios":nt(t,a)?"android":nt(t,i)?"react-native":"browser"}function Fa(e,t={}){const n=t.win??window;if(e.sessionId!==void 0){n.__gengageSessionId=e.sessionId,n.gengage||(n.gengage={}),n.gengage.sessionId=e.sessionId;try{n.sessionStorage.setItem("gengage_session_id",e.sessionId)}catch{}}if(e.userId!==void 0){n.gengage||(n.gengage={});const a=n.gengage,i=a.session??{};i.userId=e.userId,a.session=i}}function ja(e={}){const t=e.win??window,n=t;if(n.gengageNative)return n.gengageNative;const a=e.iosHandlerName??"gengage",i=e.androidInterfaceName??"GengageNative",r=e.reactNativeInterfaceName??"ReactNativeWebView",o=e.trackedEvents??[...Oa],s=qa({win:t,iosHandlerName:a,androidInterfaceName:i,reactNativeInterfaceName:r});let c=t.gengage?.overlay??null;const l=[],d=(_,k)=>{const E=k===void 0?{type:_}:{type:_,payload:k};if(s==="ios"){Ua(t,a)?.(E);return}if(s==="android"){nt(t,i)?.postMessage(JSON.stringify(E));return}if(s==="react-native"){nt(t,r)?.postMessage(JSON.stringify(E));return}},g=_=>{const k=_.detail;!k||typeof k.namespace!="string"||typeof k.type!="string"||d("bridge_message",{namespace:k.namespace,type:k.type,payload:k.payload})};t.addEventListener("gengage:bridge:message",g);const p=o.map(_=>{const k=E=>{const w=E.detail;d("widget_event",{event:_,detail:w})};return t.addEventListener(_,k),{event:_,handler:k}}),u=_=>{l.length>=Sp&&l.shift(),l.push(_)},f=()=>{if(!c||l.length===0)return;const _=l.splice(0,l.length);for(const k of _)h(k)},h=_=>{const k=Tp(_);if(!k||typeof k.type!="string"){console.warn("[gengage:native-bridge] Invalid message:",_);return}const E=k.type,w=k.payload;switch(E){case"openChat":{c?c.openChat(w&&typeof w=="object"?w:w==="half"||w==="full"?{state:w}:void 0):u(k);return}case"closeChat":{c?c.closeChat():u(k);return}case"updateContext":{c&&w&&typeof w=="object"?c.updateContext(w):c?console.warn("[gengage:native-bridge] updateContext: missing payload"):u(k);return}case"updateSku":{const T=Ip(w);if(c&&T){c.updateSku(T.sku,T.pageType);return}c?console.warn("[gengage:native-bridge] updateSku: missing sku"):u(k);return}case"setSession":{w&&typeof w=="object"&&Fa(w,{win:t});return}case"destroy":{c?.destroy();return}default:t.postMessage({gengage:"native",type:E,payload:w},t.location.origin),e.logUnhandled&&console.warn("[gengage:native-bridge] Unhandled inbound type forwarded:",E)}},b={env:s,sendToNative:d,receive:h,setController(_){c=_,f()},destroy(){t.removeEventListener("gengage:bridge:message",g);for(const _ of p)t.removeEventListener(_.event,_.handler);l.splice(0,l.length),t.gengageNative===b&&delete t.gengageNative}};return n.gengageNative=b,b}async function Ap(e){const{nativeBridge:t,emitReadyEvent:n=!0,...a}=e,i=ja(t),r={...a};r.onAddToCart||(r.onAddToCart=l=>{i.sendToNative("addToCart",{sku:l.sku,quantity:l.quantity,cartCode:l.cartCode})}),r.onProductNavigate||(r.onProductNavigate=(l,d,g)=>{i.sendToNative("productNavigate",{url:l,sku:d,sessionId:g})});const o=r.qna?.enabled===!0||r.qna?.mountTarget!==void 0;if(r.qna?.enabled!==!1)if(o){const l=Da(window,r.qna?.mountTarget??$a,"gengage-qna");r.qna={...r.qna,enabled:!0,mountTarget:l}}else zt(window,$a)||(r.qna={enabled:!1});const s=r.simrel?.enabled===!0||r.simrel?.mountTarget!==void 0;if(r.simrel?.enabled!==!1)if(s){const l=Da(window,r.simrel?.mountTarget??Ba,"gengage-simrel");r.simrel={...r.simrel,enabled:!0,mountTarget:l}}else zt(window,Ba)||(r.simrel={enabled:!1});const c=await Ep(r);return i.setController(c),n&&i.sendToNative("ready",{sessionId:c.session.sessionId,widgets:{chat:c.chat!==null,qna:c.qna!==null,simrel:c.simrel!==null}}),{controller:c,bridge:i,destroy(){c.destroy(),i.destroy()}}}we.DEFAULT_NATIVE_TRACKED_EVENTS=Oa,we.applyNativeSession=Fa,we.createNativeWebViewBridge=ja,we.detectNativeEnvironment=qa,we.initNativeOverlayWidgets=Ap,Object.defineProperty(we,Symbol.toStringTag,{value:"Module"})})(this.Gengage=this.Gengage||{});
96
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const o of e.seen.entries()){const s=o[1];if(t===o[0]){r(o);continue}if(e.external){const l=e.external.registry.get(o[0])?.id;if(t!==o[0]&&l){r(o);continue}}if(e.metadataRegistry.get(o[0])?.id){r(o);continue}if(s.cycle){r(o);continue}if(s.count>1&&e.reused==="ref"){r(o);continue}}}function ra(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const a=o=>{const s=e.seen.get(o);if(s.ref===null)return;const c=s.def??s.schema,l={...c},d=s.ref;if(s.ref=null,d){a(d);const p=e.seen.get(d),u=p.schema;if(u.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(u)):Object.assign(c,u),Object.assign(c,l),o._zod.parent===d)for(const h in c)h==="$ref"||h==="allOf"||h in l||delete c[h];if(u.$ref&&p.def)for(const h in c)h==="$ref"||h==="allOf"||h in p.def&&JSON.stringify(c[h])===JSON.stringify(p.def[h])&&delete c[h]}const g=o._zod.parent;if(g&&g!==d){a(g);const p=e.seen.get(g);if(p?.schema.$ref&&(c.$ref=p.schema.$ref,p.def))for(const u in c)u==="$ref"||u==="allOf"||u in p.def&&JSON.stringify(c[u])===JSON.stringify(p.def[u])&&delete c[u]}e.override({zodSchema:o,jsonSchema:c,path:s.path??[]})};for(const o of[...e.seen.entries()].reverse())a(o[0]);const i={};if(e.target==="draft-2020-12"?i.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?i.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?i.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const o=e.external.registry.get(t)?.id;if(!o)throw new Error("Schema is missing an `id` property");i.$id=e.external.uri(o)}Object.assign(i,n.def??n.schema);const r=e.external?.defs??{};for(const o of e.seen.entries()){const s=o[1];s.def&&s.defId&&(r[s.defId]=s.def)}e.external||Object.keys(r).length>0&&(e.target==="draft-2020-12"?i.$defs=r:i.definitions=r);try{const o=JSON.parse(JSON.stringify(i));return Object.defineProperty(o,"~standard",{value:{...t["~standard"],jsonSchema:{input:Xe(t,"input",e.processors),output:Xe(t,"output",e.processors)}},enumerable:!1,writable:!1}),o}catch{throw new Error("Error converting schema to JSON.")}}function K(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const a=e._zod.def;if(a.type==="transform")return!0;if(a.type==="array")return K(a.element,n);if(a.type==="set")return K(a.valueType,n);if(a.type==="lazy")return K(a.getter(),n);if(a.type==="promise"||a.type==="optional"||a.type==="nonoptional"||a.type==="nullable"||a.type==="readonly"||a.type==="default"||a.type==="prefault")return K(a.innerType,n);if(a.type==="intersection")return K(a.left,n)||K(a.right,n);if(a.type==="record"||a.type==="map")return K(a.keyType,n)||K(a.valueType,n);if(a.type==="pipe")return K(a.in,n)||K(a.out,n);if(a.type==="object"){for(const i in a.shape)if(K(a.shape[i],n))return!0;return!1}if(a.type==="union"){for(const i of a.options)if(K(i,n))return!0;return!1}if(a.type==="tuple"){for(const i of a.items)if(K(i,n))return!0;return!!(a.rest&&K(a.rest,n))}return!1}const id=(e,t={})=>n=>{const a=aa({...n,processors:t});return G(e,a),ia(a,e),ra(a,e)},Xe=(e,t,n={})=>a=>{const{libraryOptions:i,target:r}=a??{},o=aa({...i??{},target:r,io:t,processors:n});return G(e,o),ia(o,e),ra(o,e)},rd={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},od=(e,t,n,a)=>{const i=n;i.type="string";const{minimum:r,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof r=="number"&&(i.minLength=r),typeof o=="number"&&(i.maxLength=o),s&&(i.format=rd[s]??s,i.format===""&&delete i.format,s==="time"&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){const d=[...c];d.length===1?i.pattern=d[0].source:d.length>1&&(i.allOf=[...d.map(g=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:g.source}))])}},sd=(e,t,n,a)=>{const i=n,{minimum:r,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:d}=e._zod.bag;typeof s=="string"&&s.includes("int")?i.type="integer":i.type="number",typeof d=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(i.minimum=d,i.exclusiveMinimum=!0):i.exclusiveMinimum=d),typeof r=="number"&&(i.minimum=r,typeof d=="number"&&t.target!=="draft-04"&&(d>=r?delete i.minimum:delete i.exclusiveMinimum)),typeof l=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l),typeof o=="number"&&(i.maximum=o,typeof l=="number"&&t.target!=="draft-04"&&(l<=o?delete i.maximum:delete i.exclusiveMaximum)),typeof c=="number"&&(i.multipleOf=c)},cd=(e,t,n,a)=>{n.type="boolean"},ld=(e,t,n,a)=>{n.not={}},dd=(e,t,n,a)=>{},gd=(e,t,n,a)=>{const i=e._zod.def,r=wn(i.entries);r.every(o=>typeof o=="number")&&(n.type="number"),r.every(o=>typeof o=="string")&&(n.type="string"),n.enum=r},pd=(e,t,n,a)=>{const i=e._zod.def,r=[];for(const o of i.values)if(o===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof o=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");r.push(Number(o))}else r.push(o);if(r.length!==0)if(r.length===1){const o=r[0];n.type=o===null?"null":typeof o,t.target==="draft-04"||t.target==="openapi-3.0"?n.enum=[o]:n.const=o}else r.every(o=>typeof o=="number")&&(n.type="number"),r.every(o=>typeof o=="string")&&(n.type="string"),r.every(o=>typeof o=="boolean")&&(n.type="boolean"),r.every(o=>o===null)&&(n.type="null"),n.enum=r},ud=(e,t,n,a)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},hd=(e,t,n,a)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},fd=(e,t,n,a)=>{const i=n,r=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o=="number"&&(i.minItems=o),typeof s=="number"&&(i.maxItems=s),i.type="array",i.items=G(r.element,t,{...a,path:[...a.path,"items"]})},md=(e,t,n,a)=>{const i=n,r=e._zod.def;i.type="object",i.properties={};const o=r.shape;for(const l in o)i.properties[l]=G(o[l],t,{...a,path:[...a.path,"properties",l]});const s=new Set(Object.keys(o)),c=new Set([...s].filter(l=>{const d=r.shape[l]._zod;return t.io==="input"?d.optin===void 0:d.optout===void 0}));c.size>0&&(i.required=Array.from(c)),r.catchall?._zod.def.type==="never"?i.additionalProperties=!1:r.catchall?r.catchall&&(i.additionalProperties=G(r.catchall,t,{...a,path:[...a.path,"additionalProperties"]})):t.io==="output"&&(i.additionalProperties=!1)},bd=(e,t,n,a)=>{const i=e._zod.def,r=i.inclusive===!1,o=i.options.map((s,c)=>G(s,t,{...a,path:[...a.path,r?"oneOf":"anyOf",c]}));r?n.oneOf=o:n.anyOf=o},_d=(e,t,n,a)=>{const i=e._zod.def,r=G(i.left,t,{...a,path:[...a.path,"allOf",0]}),o=G(i.right,t,{...a,path:[...a.path,"allOf",1]}),s=l=>"allOf"in l&&Object.keys(l).length===1,c=[...s(r)?r.allOf:[r],...s(o)?o.allOf:[o]];n.allOf=c},vd=(e,t,n,a)=>{const i=e._zod.def,r=G(i.innerType,t,a),o=t.seen.get(e);t.target==="openapi-3.0"?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[r,{type:"null"}]},yd=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType},wd=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},xd=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType,t.io==="input"&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},kd=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=o},Cd=(e,t,n,a)=>{const i=e._zod.def,r=t.io==="input"?i.in._zod.def.type==="transform"?i.out:i.in:i.out;G(r,t,a);const o=t.seen.get(e);o.ref=r},Ed=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType,n.readOnly=!0},oa=(e,t,n,a)=>{const i=e._zod.def;G(i.innerType,t,a);const r=t.seen.get(e);r.ref=i.innerType},Sd=v("ZodISODateTime",(e,t)=>{Ac.init(e,t),U.init(e,t)});function Td(e){return Ml(Sd,e)}const Id=v("ZodISODate",(e,t)=>{Nc.init(e,t),U.init(e,t)});function Ad(e){return Rl(Id,e)}const Nd=v("ZodISOTime",(e,t)=>{Lc.init(e,t),U.init(e,t)});function Ld(e){return Ol(Nd,e)}const Pd=v("ZodISODuration",(e,t)=>{Pc.init(e,t),U.init(e,t)});function zd(e){return $l(Pd,e)}const X=v("ZodError",(e,t)=>{In.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:n=>ws(e,n)},flatten:{value:n=>ys(e,n)},addIssue:{value:n=>{e.issues.push(n),e.message=JSON.stringify(e.issues,_t,2)}},addIssues:{value:n=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,_t,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),Md=kt(X),Rd=Ct(X),Od=We(X),$d=Ge(X),Bd=Cs(X),Dd=Es(X),Ud=Ss(X),qd=Ts(X),Fd=Is(X),jd=As(X),Zd=Ns(X),Hd=Ls(X),j=v("ZodType",(e,t)=>(F.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:Xe(e,"input"),output:Xe(e,"output")}}),e.toJSONSchema=id(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(he(t,{checks:[...t.checks??[],...n.map(a=>typeof a=="function"?{_zod:{check:a,def:{check:"custom"},onattach:[]}}:a)]}),{parent:!0}),e.with=e.check,e.clone=(n,a)=>fe(e,n,a),e.brand=()=>e,e.register=((n,a)=>(n.add(e,a),e)),e.parse=(n,a)=>Md(e,n,a,{callee:e.parse}),e.safeParse=(n,a)=>Od(e,n,a),e.parseAsync=async(n,a)=>Rd(e,n,a,{callee:e.parseAsync}),e.safeParseAsync=async(n,a)=>$d(e,n,a),e.spa=e.safeParseAsync,e.encode=(n,a)=>Bd(e,n,a),e.decode=(n,a)=>Dd(e,n,a),e.encodeAsync=async(n,a)=>Ud(e,n,a),e.decodeAsync=async(n,a)=>qd(e,n,a),e.safeEncode=(n,a)=>Fd(e,n,a),e.safeDecode=(n,a)=>jd(e,n,a),e.safeEncodeAsync=async(n,a)=>Zd(e,n,a),e.safeDecodeAsync=async(n,a)=>Hd(e,n,a),e.refine=(n,a)=>e.check(Ug(n,a)),e.superRefine=n=>e.check(qg(n)),e.overwrite=n=>e.check(Te(n)),e.optional=()=>ha(e),e.exactOptional=()=>Tg(e),e.nullable=()=>fa(e),e.nullish=()=>ha(fa(e)),e.nonoptional=n=>zg(e,n),e.array=()=>mg(e),e.or=n=>vg([e,n]),e.and=n=>wg(e,n),e.transform=n=>ba(e,Eg(n)),e.default=n=>Ng(e,n),e.prefault=n=>Pg(e,n),e.catch=n=>Rg(e,n),e.pipe=n=>ba(e,n),e.readonly=()=>Bg(e),e.describe=n=>{const a=e.clone();return Me.add(a,{description:n}),a},Object.defineProperty(e,"description",{get(){return Me.get(e)?.description},configurable:!0}),e.meta=(...n)=>{if(n.length===0)return Me.get(e);const a=e.clone();return Me.add(a,n[0]),a},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=n=>n(e),e)),sa=v("_ZodString",(e,t)=>{Et.init(e,t),j.init(e,t),e._zod.processJSONSchema=(a,i,r)=>od(e,a,i);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...a)=>e.check(jl(...a)),e.includes=(...a)=>e.check(Vl(...a)),e.startsWith=(...a)=>e.check(Wl(...a)),e.endsWith=(...a)=>e.check(Gl(...a)),e.min=(...a)=>e.check(Qe(...a)),e.max=(...a)=>e.check(ta(...a)),e.length=(...a)=>e.check(na(...a)),e.nonempty=(...a)=>e.check(Qe(1,...a)),e.lowercase=a=>e.check(Zl(a)),e.uppercase=a=>e.check(Hl(a)),e.trim=()=>e.check(Kl()),e.normalize=(...a)=>e.check(Jl(...a)),e.toLowerCase=()=>e.check(Yl()),e.toUpperCase=()=>e.check(Ql()),e.slugify=()=>e.check(Xl())}),Vd=v("ZodString",(e,t)=>{Et.init(e,t),sa.init(e,t),e.email=n=>e.check(ul(Wd,n)),e.url=n=>e.check(_l(Gd,n)),e.jwt=n=>e.check(zl(lg,n)),e.emoji=n=>e.check(vl(Jd,n)),e.guid=n=>e.check(Yn(ca,n)),e.uuid=n=>e.check(hl(et,n)),e.uuidv4=n=>e.check(fl(et,n)),e.uuidv6=n=>e.check(ml(et,n)),e.uuidv7=n=>e.check(bl(et,n)),e.nanoid=n=>e.check(yl(Kd,n)),e.guid=n=>e.check(Yn(ca,n)),e.cuid=n=>e.check(wl(Yd,n)),e.cuid2=n=>e.check(xl(Qd,n)),e.ulid=n=>e.check(kl(Xd,n)),e.base64=n=>e.check(Nl(og,n)),e.base64url=n=>e.check(Ll(sg,n)),e.xid=n=>e.check(Cl(eg,n)),e.ksuid=n=>e.check(El(tg,n)),e.ipv4=n=>e.check(Sl(ng,n)),e.ipv6=n=>e.check(Tl(ag,n)),e.cidrv4=n=>e.check(Il(ig,n)),e.cidrv6=n=>e.check(Al(rg,n)),e.e164=n=>e.check(Pl(cg,n)),e.datetime=n=>e.check(Td(n)),e.date=n=>e.check(Ad(n)),e.time=n=>e.check(Ld(n)),e.duration=n=>e.check(zd(n))});function ae(e){return pl(Vd,e)}const U=v("ZodStringFormat",(e,t)=>{D.init(e,t),sa.init(e,t)}),Wd=v("ZodEmail",(e,t)=>{yc.init(e,t),U.init(e,t)}),ca=v("ZodGUID",(e,t)=>{_c.init(e,t),U.init(e,t)}),et=v("ZodUUID",(e,t)=>{vc.init(e,t),U.init(e,t)}),Gd=v("ZodURL",(e,t)=>{wc.init(e,t),U.init(e,t)}),Jd=v("ZodEmoji",(e,t)=>{xc.init(e,t),U.init(e,t)}),Kd=v("ZodNanoID",(e,t)=>{kc.init(e,t),U.init(e,t)}),Yd=v("ZodCUID",(e,t)=>{Cc.init(e,t),U.init(e,t)}),Qd=v("ZodCUID2",(e,t)=>{Ec.init(e,t),U.init(e,t)}),Xd=v("ZodULID",(e,t)=>{Sc.init(e,t),U.init(e,t)}),eg=v("ZodXID",(e,t)=>{Tc.init(e,t),U.init(e,t)}),tg=v("ZodKSUID",(e,t)=>{Ic.init(e,t),U.init(e,t)}),ng=v("ZodIPv4",(e,t)=>{zc.init(e,t),U.init(e,t)}),ag=v("ZodIPv6",(e,t)=>{Mc.init(e,t),U.init(e,t)}),ig=v("ZodCIDRv4",(e,t)=>{Rc.init(e,t),U.init(e,t)}),rg=v("ZodCIDRv6",(e,t)=>{Oc.init(e,t),U.init(e,t)}),og=v("ZodBase64",(e,t)=>{$c.init(e,t),U.init(e,t)}),sg=v("ZodBase64URL",(e,t)=>{Dc.init(e,t),U.init(e,t)}),cg=v("ZodE164",(e,t)=>{Uc.init(e,t),U.init(e,t)}),lg=v("ZodJWT",(e,t)=>{Fc.init(e,t),U.init(e,t)}),la=v("ZodNumber",(e,t)=>{Bn.init(e,t),j.init(e,t),e._zod.processJSONSchema=(a,i,r)=>sd(e,a,i),e.gt=(a,i)=>e.check(Xn(a,i)),e.gte=(a,i)=>e.check(It(a,i)),e.min=(a,i)=>e.check(It(a,i)),e.lt=(a,i)=>e.check(Qn(a,i)),e.lte=(a,i)=>e.check(Tt(a,i)),e.max=(a,i)=>e.check(Tt(a,i)),e.int=a=>e.check(ga(a)),e.safe=a=>e.check(ga(a)),e.positive=a=>e.check(Xn(0,a)),e.nonnegative=a=>e.check(It(0,a)),e.negative=a=>e.check(Qn(0,a)),e.nonpositive=a=>e.check(Tt(0,a)),e.multipleOf=(a,i)=>e.check(ea(a,i)),e.step=(a,i)=>e.check(ea(a,i)),e.finite=()=>e;const n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function da(e){return Bl(la,e)}const dg=v("ZodNumberFormat",(e,t)=>{jc.init(e,t),la.init(e,t)});function ga(e){return Dl(dg,e)}const gg=v("ZodBoolean",(e,t)=>{Zc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>cd(e,n,a)});function ye(e){return Ul(gg,e)}const pg=v("ZodUnknown",(e,t)=>{Hc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>dd()});function pa(){return ql(pg)}const ug=v("ZodNever",(e,t)=>{Vc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>ld(e,n,a)});function hg(e){return Fl(ug,e)}const fg=v("ZodArray",(e,t)=>{Wc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>fd(e,n,a,i),e.element=t.element,e.min=(n,a)=>e.check(Qe(n,a)),e.nonempty=n=>e.check(Qe(1,n)),e.max=(n,a)=>e.check(ta(n,a)),e.length=(n,a)=>e.check(na(n,a)),e.unwrap=()=>e.element});function mg(e,t){return ed(fg,e,t)}const bg=v("ZodObject",(e,t)=>{Jc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>md(e,n,a,i),O(e,"shape",()=>t.shape),e.keyof=()=>Nt(Object.keys(e._zod.def.shape)),e.catchall=n=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:pa()}),e.loose=()=>e.clone({...e._zod.def,catchall:pa()}),e.strict=()=>e.clone({...e._zod.def,catchall:hg()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=n=>fs(e,n),e.safeExtend=n=>ms(e,n),e.merge=n=>bs(e,n),e.pick=n=>us(e,n),e.omit=n=>hs(e,n),e.partial=(...n)=>_s(ua,e,n[0]),e.required=(...n)=>vs(ma,e,n[0])});function le(e,t){const n={type:"object",shape:e??{},...I(t)};return new bg(n)}const _g=v("ZodUnion",(e,t)=>{Kc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>bd(e,n,a,i),e.options=t.options});function vg(e,t){return new _g({type:"union",options:e,...I(t)})}const yg=v("ZodIntersection",(e,t)=>{Yc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>_d(e,n,a,i)});function wg(e,t){return new yg({type:"intersection",left:e,right:t})}const At=v("ZodEnum",(e,t)=>{Qc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(a,i,r)=>gd(e,a,i),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(a,i)=>{const r={};for(const o of a)if(n.has(o))r[o]=t.entries[o];else throw new Error(`Key ${o} not found in enum`);return new At({...t,checks:[],...I(i),entries:r})},e.exclude=(a,i)=>{const r={...t.entries};for(const o of a)if(n.has(o))delete r[o];else throw new Error(`Key ${o} not found in enum`);return new At({...t,checks:[],...I(i),entries:r})}});function Nt(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(a=>[a,a])):e;return new At({type:"enum",entries:n,...I(t)})}const xg=v("ZodLiteral",(e,t)=>{Xc.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>pd(e,n,a),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function kg(e,t){return new xg({type:"literal",values:Array.isArray(e)?e:[e],...I(t)})}const Cg=v("ZodTransform",(e,t)=>{el.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>hd(e,n),e._zod.parse=(n,a)=>{if(a.direction==="backward")throw new vn(e.constructor.name);n.addIssue=r=>{if(typeof r=="string")n.issues.push(ze(r,n.value,t));else{const o=r;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=n.value),o.inst??(o.inst=e),n.issues.push(ze(o))}};const i=t.transform(n.value,n);return i instanceof Promise?i.then(r=>(n.value=r,n)):(n.value=i,n)}});function Eg(e){return new Cg({type:"transform",transform:e})}const ua=v("ZodOptional",(e,t)=>{Hn.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>oa(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function ha(e){return new ua({type:"optional",innerType:e})}const Sg=v("ZodExactOptional",(e,t)=>{tl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>oa(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function Tg(e){return new Sg({type:"optional",innerType:e})}const Ig=v("ZodNullable",(e,t)=>{nl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>vd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function fa(e){return new Ig({type:"nullable",innerType:e})}const Ag=v("ZodDefault",(e,t)=>{al.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>wd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Ng(e,t){return new Ag({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():En(t)}})}const Lg=v("ZodPrefault",(e,t)=>{il.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>xd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function Pg(e,t){return new Lg({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():En(t)}})}const ma=v("ZodNonOptional",(e,t)=>{rl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>yd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function zg(e,t){return new ma({type:"nonoptional",innerType:e,...I(t)})}const Mg=v("ZodCatch",(e,t)=>{ol.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>kd(e,n,a,i),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Rg(e,t){return new Mg({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const Og=v("ZodPipe",(e,t)=>{sl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>Cd(e,n,a,i),e.in=t.in,e.out=t.out});function ba(e,t){return new Og({type:"pipe",in:e,out:t})}const $g=v("ZodReadonly",(e,t)=>{cl.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>Ed(e,n,a,i),e.unwrap=()=>e._zod.def.innerType});function Bg(e){return new $g({type:"readonly",innerType:e})}const Dg=v("ZodCustom",(e,t)=>{ll.init(e,t),j.init(e,t),e._zod.processJSONSchema=(n,a,i)=>ud(e,n)});function Ug(e,t={}){return td(Dg,e,t)}function qg(e){return nd(e)}function Fg(e){return e.length>120?!1:/^[a-zA-Z0-9#(),.\s%/\-]+$/.test(e)}function Lt(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}class jg extends dt{constructor(){super(...arguments),this._shadow=null,this._rootEl=null,this._launcher=null,this._drawer=null,this._bridge=null,this._drawerVisible=!1,this._messages=[],this._currentMessageId=0,this._abortControllers=new Set,this._currentThreadId=null,this._lastThreadId=null,this._chatCreatedAt="",this._lastBackendContext=null,this._productSort={type:"related"},this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._thumbnailEntries=[],this._choicePrompterEl=null,this._openState="full",this._mobileBreakpoint=768,this._isMobileViewport=!1,this._pdpLaunched=!1,this._pdpPrimingInFlight=!1,this._queuedUserMessages=[],this._productContextUnavailableSku=null,this._i18n=pt,this._extendedModeManager=null,this._activeTypewriter=null,this._activeTtsHandle=null,this._activeRequestThreadId=null,this._skuToProductItem={},this._conversationMode=null,this._initComplete=!1,this._pendingActions=[],this._bridgeContext=null,this._cartQuantity=null,this._threadsWithFirstBot=new Set,this._panel=null,this._session=null,this._eventCallbacks=new Map,this._lastSentAction=null}async onInit(t){this._i18n=this._resolveI18n(t),this._chatCreatedAt=new Date().toISOString(),this._shadow=this.root.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=Jo,this._shadow.appendChild(n);const a=document.createElement("div");a.className="gengage-chat-root",this._rootEl=a,this._shadow.appendChild(a);const i=t.variant??"floating";if(i==="floating"){const g={onClick:()=>this.open(),ariaLabel:this._i18n.openButton};t.launcherImageUrl!==void 0?g.imageUrl=t.launcherImageUrl:t.launcherSvg!==void 0&&(g.svgMarkup=t.launcherSvg),t.hideMobileLauncher!==void 0&&(g.hideMobile=t.hideMobileLauncher),t.mobileBreakpoint!==void 0&&(g.mobileBreakpoint=t.mobileBreakpoint),t.launcherTooltip!==void 0&&(g.tooltip=t.launcherTooltip),this._launcher=qr(g),a.appendChild(this._launcher.container)}i==="overlay"&&a.classList.add("gengage-chat--overlay");const r=document.createElement("div");a.appendChild(r),this._drawer=new Dr(r,{i18n:this._i18n,onSend:(g,p)=>this._sendMessage(g,p),onClose:()=>this.close(),onAttachment:g=>this._handleAttachment(g),onPanelToggle:()=>{this._drawer?.persistPanelState(t.accountId)},onRollback:g=>this._handleRollback(g),onPanelBack:()=>this._panel?.navigateBack(),onPanelForward:()=>this._panel?.navigateForward(),headerTitle:t.headerTitle,headerAvatarUrl:t.headerAvatarUrl,headerBadge:t.headerBadge,headerCartUrl:t.headerCartUrl,headerFavoritesToggle:t.headerFavoritesToggle,onFavoritesClick:()=>{ns(),t.onFavoritesClick?.()},onThumbnailClick:g=>this._rollbackToThread(g),onLinkClick:g=>{this._saveSessionAndOpenURL(g)},voiceEnabled:t.voiceEnabled,voiceLang:t.locale?`${t.locale.split("-")[0]??"tr"}-${(t.locale.split("-")[1]??t.locale.split("-")[0]??"TR").toUpperCase()}`:void 0}),this._extendedModeManager=new Do({onChange:g=>this._panel?.notifyExtension(g),productDetailsInPanel:t.isDemoWebsite??!1}),this._panel=new Uo({drawer:()=>this._drawer,shadow:()=>this._shadow,currentThreadId:()=>this._currentThreadId,bridge:()=>this._bridge,extendedModeManager:()=>this._extendedModeManager,i18n:()=>this._i18n,rollbackToThread:g=>this._rollbackToThread(g)}),i!=="inline"&&this._drawer.getElement().classList.add("gengage-chat-drawer--hidden"),this._drawer.restorePanelState(t.accountId);const o=t.panelMode??"auto";o==="collapsed"?this._drawer.setPanelCollapsed(!0):o==="expanded"&&this._drawer.setForceExpanded();const s=sessionStorage.getItem("gengage_restore_session_id"),c=sessionStorage.getItem("gengage_restore_sku"),l=!!(s&&c);l&&(sessionStorage.removeItem("gengage_restore_session_id"),sessionStorage.removeItem("gengage_restore_sku"));try{const g=new $o;await g.open(),this._session=new gn(g),await this._restoreFromIndexedDB(l)}catch{this._session=new gn(null)}this._registerPublicAPI(),t.mobileInitialState!==void 0&&(this._openState=t.mobileInitialState),this._mobileBreakpoint=t.mobileBreakpoint??768,this._syncViewportState();const d=()=>this._syncViewportState();if(window.addEventListener("resize",d,{passive:!0}),this.addCleanup(()=>window.removeEventListener("resize",d)),window.visualViewport){const g=()=>{if(!this._drawerVisible||!this._isMobileViewport)return;const p=this._drawer?.getElement();if(!p)return;const u=window.innerHeight-(window.visualViewport?.height??window.innerHeight);p.style.setProperty("--gengage-keyboard-offset",`${Math.max(0,u)}px`)};window.visualViewport.addEventListener("resize",g),this.addCleanup(()=>window.visualViewport?.removeEventListener("resize",g))}i==="inline"&&(this._drawerVisible=!0,this.isVisible=!0,this._applyOpenStateClasses()),this._bridge=new Ei({namespace:"chat",onMessage:g=>this._handleBridgeMessage(g)}),this._lastSku=this.config.pageContext?.sku,this._initComplete=!0;for(const g of this._pendingActions)this._sendAction(g.action,g.options);this._pendingActions=[],J("gengage:chat:ready",{}),bt("chat"),t.onReady?.()}onUpdate(t){t.sku!==void 0&&t.sku!==this._lastSku&&(this._lastSku=t.sku,this._resetForNewPage())}onShow(){this._showDrawer(),this.emit("open"),J("gengage:chat:open",{state:this._openState}),Ze("chat"),this.config.onOpen?.(),!this._pdpLaunched&&this.config.pageContext?.sku&&(this._pdpLaunched=!0,this._pdpPrimingInFlight=!0,this._sendAction({title:"",type:"launchSingleProduct",payload:{sku:this.config.pageContext.sku}},{silent:!0,isPdpPrime:!0}))}onHide(){(this.config.variant??"floating")==="floating"&&(this.root.style.display=""),this._hideDrawer(),this.emit("close"),J("gengage:chat:close",{}),this.config.onClose?.()}onDestroy(){this._abortControllers.forEach(t=>t.abort()),this._abortControllers.clear(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._drawer?.destroy(),this._drawer=null,this._bridge?.destroy(),this._bridge=null,this._extendedModeManager=null,this._panel?.destroy(),this._panel=null,this._session?.close(),this._session=null,window.gengage&&delete window.gengage.chat,this._shadow&&(this._shadow.innerHTML="",this._shadow=null),this._rootEl=null}open(t){t?.state!==void 0&&(this._openState=t.state,this._drawerVisible&&this._applyOpenStateClasses()),this.show(),t?.initialMessage!==void 0&&this._sendMessage(t.initialMessage)}openWithAction(t,n){n?.sku!==void 0&&this.update({sku:n.sku}),this._pdpLaunched=!0,n?.state!==void 0?this._openState=n.state:this._isMobileViewport&&(this._openState="half"),this.show(),this._drawerVisible&&this._applyOpenStateClasses(),this._sendAction(t)}sendMessage(t){this._sendMessage(t)}sendAction(t,n){this._sendAction(t,n)}close(){this.hide()}saveSession(t,n){sessionStorage.setItem("gengage_restore_session_id",t),sessionStorage.setItem("gengage_restore_sku",n)}get isOpen(){return this._drawerVisible}addCallback(t,n){let a=this._eventCallbacks.get(t);return a||(a=new Set,this._eventCallbacks.set(t,a)),a.add(n),()=>{a.delete(n),a.size===0&&this._eventCallbacks.delete(t)}}_resetForNewPage(){this._activeRequestThreadId=null,this._abortControllers.forEach(t=>t.abort()),this._abortControllers.clear(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._messages.length=0,this._drawer?.clearMessages(),this._drawer?.clearPanel(),this._panel.snapshots.clear(),this._panel.threads=[],this._thumbnailEntries=[],this._drawer?.setThumbnails([]),this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._currentThreadId=null,this._lastThreadId=null,this._lastBackendContext=null,this._chatCreatedAt=new Date().toISOString(),this._pdpLaunched=!1,this._pdpPrimingInFlight=!1,this._queuedUserMessages=[],this._productContextUnavailableSku=null}_handleBridgeMessage(t){switch(t.type){case"openChat":this.open();break;case"closeChat":this.close();break;case"startNewChatWithLauncherAction":{const n=t.payload,a=n?.action,i=Lt(a)?a:Lt(n)?n:null;i&&this._sendAction(i,{silent:!0}),this.open();break}case"startNewChatWithDetailContext":{const n=t.payload;if(n&&typeof n=="object"){this._bridgeContext=n;const a=n.sku;if(a&&this.update({sku:a}),Lt(n.action)){this._pdpLaunched=!0,this.open(),this._sendAction(n.action);break}}this.open();break}case"launcherAction":{const a=t.payload?.action;a&&typeof a=="object"&&"type"in a&&this._sendAction(a);break}case"scrollToBottom":this._drawer?.scrollToBottomIfNeeded();break;case"addToCardHandler":{this._bridge?.send("addToCardResult",t.payload);break}case"cartQuantityHandler":{const n=t.payload;n&&"quantity"in n&&typeof n.quantity=="number"&&(this._cartQuantity=n.quantity);break}case"minimizeRequestedByUser":this._extendedModeManager?.setHiddenByUser(!0);break;case"bgColorChange":{const a=t.payload?.color;typeof a=="string"&&Fg(a)&&this._shadow&&this._shadow.host.style.setProperty("--gengage-chat-bg",a);break}}}_registerPublicAPI(){window.gengage||(window.gengage={}),window.gengage.chat={open:t=>this.open(t),openWithAction:(t,n)=>this.openWithAction(t,n),sendMessage:t=>this.sendMessage(t),sendAction:(t,n)=>this.sendAction(t,n),close:()=>this.close(),saveSession:(t,n)=>this.saveSession(t,n),get isOpen(){return!1},on:(t,n)=>this.on(t,n),trackCheckout:(t,n)=>this.trackCheckout(t,n),flushMeteringSummary:t=>this.flushMeteringSummary(t),addCallback:(t,n)=>this.addCallback(t,n)},Object.defineProperty(window.gengage.chat,"isOpen",{get:()=>this._drawerVisible})}_showDrawer(){if(this._drawerVisible)return;this._drawerVisible=!0;const t=this._drawer?.getElement();t&&t.classList.remove("gengage-chat-drawer--hidden"),this._applyOpenStateClasses(),this._drawer?.trapFocus(),this._isMobileViewport&&this._openState==="half"||this._drawer?.focusInput(),this._extendedModeManager?.setChatShown(!0)}_hideDrawer(){if(!this._drawerVisible)return;this._drawer?.releaseFocus(),this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._drawerVisible=!1,this._openState="full";const t=this._drawer?.getElement();t&&t.classList.add("gengage-chat-drawer--hidden"),this._applyOpenStateClasses(),this._extendedModeManager?.setChatShown(!1)}_syncViewportState(){if(this._rootEl){if(this._isMobileViewport=window.innerWidth<=this._mobileBreakpoint,this._rootEl.classList.toggle("gengage-chat-root--mobile",this._isMobileViewport),this._launcher){const t=this._isMobileViewport&&this.config.hideMobileLauncher===!0;this._launcher.container.classList.toggle("gengage-chat-launcher--hidden-mobile",t)}this._applyOpenStateClasses()}}_applyOpenStateClasses(){if(!this._rootEl)return;const t=this._drawerVisible&&this._isMobileViewport&&this._openState==="half",n=this._drawerVisible&&this._isMobileViewport&&this._openState==="full";this._rootEl.classList.toggle("gengage-chat-root--open",this._drawerVisible),this._rootEl.classList.toggle("gengage-chat-root--mobile-half",t),this._rootEl.classList.toggle("gengage-chat-root--mobile-full",n)}_handleAttachment(t){const n=zi(t);if(!n.ok){const a=n.reason==="invalid_type"?this._i18n.invalidFileType:this._i18n.fileTooLarge;J("gengage:global:error",{message:a,source:"chat"});return}this._drawer?.stageAttachment(t)}_sendMessage(t,n){if(this._pdpPrimingInFlight){this._queuedUserMessages.push(n!==void 0?{text:t,attachment:n}:{text:t});return}is(),this._messages.some(r=>r.role==="user")||rs();const i={title:t,type:"user_message",payload:t};n!==void 0?this._sendAction(i,{attachment:n}):this._sendAction(i)}_flushQueuedUserMessages(){if(this._pdpPrimingInFlight||this._queuedUserMessages.length===0)return;const t=[...this._queuedUserMessages];this._queuedUserMessages=[];for(const n of t)this._sendMessage(n.text,n.attachment)}_sendAction(t,n){if(this._activeTypewriter?.cancel(),this._activeTypewriter=null,this._activeTtsHandle?.stop(),this._activeTtsHandle=null,this._lastSentAction={action:t,options:n},!this._initComplete){this._pendingActions.length<10&&this._pendingActions.push({action:t,options:n});return}if(this._choicePrompterEl?.remove(),this._choicePrompterEl=null,!n?.preservePanel&&this._comparisonSelectMode&&(this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[]),this._currentThreadId&&this._lastThreadId&&this._lastThreadId>this._currentThreadId){const m=this._currentThreadId,C=this._messages.filter(S=>S.threadId!==void 0&&S.threadId>m);this._messages=this._messages.filter(S=>!S.threadId||S.threadId<=m);for(const S of C)this._shadow?.querySelector(`[data-message-id="${CSS.escape(S.id)}"]`)?.remove(),this._panel.snapshots.delete(S.id),this._panel.snapshotTypes.delete(S.id);this._shadow?.querySelectorAll("[data-thread-id]")?.forEach(S=>{S instanceof HTMLElement&&S.dataset.threadId&&S.dataset.threadId>m&&S.remove()})}this._drawer?.setPills([]),this._drawer?.clearInputAreaChips(),this._bridge?.send("isResponding",!0);const a=Ci();this._currentThreadId=a,this._lastThreadId=a,this._panel&&t.type!=="launchSingleProduct"&&(this._panel.lastActionType=t.type);const i=n?.preservePanel===!0,r=t.type==="launchSingleProduct"&&n?.silent===!0&&n?.isPdpPrime===!0;if(i||(this._activeRequestThreadId=a),!n?.silent){const m=this._createMessage("user",typeof t.payload=="string"?t.payload:t.title);m.threadId=a,n?.attachment!==void 0&&(m.attachment=n.attachment),this._drawer?.addMessage(m),this._messages.push(m)}if(!n?.silent&&this._hasUnavailableProductContext()&&(t.type==="user_message"||t.type==="inputText")){const m=this._i18n.productNotFoundMessage,C=this._createMessage("assistant",m);C.threadId=a,C.status="done",this._messages.push(C),this._ensureAssistantMessageRendered(C),this._drawer?.updateBotMessage(C.id,m),this._bridge?.send("isResponding",!1),this.emit("message",C),this._persistToIndexedDB().catch(()=>{});return}let s=null;const c=()=>{if(s||n?.preservePanel)return;const m=this._drawer?.getPanelContentElement();m&&(s=m.cloneNode(!0))},l=()=>{this._drawer?.isPanelLoading()&&(s?this._drawer.setPanelContent(s):this._drawer.clearPanel(),s=null)};this._drawer?.showTypingIndicator();let d="";const g=this._createMessage("assistant","");g.threadId=a,g.status="streaming",n?.silent&&(g.silent=!0),this._messages.push(g),n?.preservePanel||(this._abortControllers.forEach(m=>m.abort()),this._abortControllers.clear());const p={middlewareUrl:this.config.middlewareUrl,...this.config.accountId?{accountId:this.config.accountId}:{}};n?.attachment!==void 0&&(p.attachment=n.attachment);const f=this._getVisibleMessages().filter(m=>m!==g&&(m.content||m.role==="assistant")).slice(-50).map(m=>({role:m.role==="user"?"user":"model",content:m.content??""})),h={outputLanguage:Go(this.config.locale),parentUrl:window.location.href,windowWidth:String(window.innerWidth),windowHeight:String(window.innerHeight),selfUrl:"",id:this.config.session?.sessionId??"",userId:this.config.session?.userId??"",appId:this.config.accountId,threads:[],createdAt:this._chatCreatedAt,kvkkApproved:un(this.config.accountId),voiceEnabled:this.config.voiceEnabled??!1,threadId:a,isControlGroup:this.config.session?.abTestVariant==="control",isMobile:this._isMobileViewport};this.config.session?.viewId!==void 0&&(h.viewId=this.config.session.viewId);const b=Er(t,{pageContext:this.config.pageContext,backendContext:this._lastBackendContext,isMobile:this._isMobileViewport}),_={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",type:b.type,locale:this.config.locale??"tr",meta:h,context:{...this._lastBackendContext??{},messages:f,session_id:this.config.session?.sessionId??""}};this.config.session?.userId!==void 0&&(_.user_id=this.config.session.userId),this.config.session?.viewId!==void 0&&(_.view_id=this.config.session.viewId),b.payload!==void 0&&(_.payload=b.payload),this.config.pageContext?.sku!==void 0&&(_.sku=this.config.pageContext.sku),this.config.pageContext?.pageType!==void 0&&(_.page_type=this.config.pageContext.pageType);const k=crypto.randomUUID(),E=Date.now();let w=0,T=!1,$=!1;this.track(rt(this.analyticsContext(),{endpoint:"process_action",request_id:k,widget:"chat"}));let Z=null;if(Z=Ir(_,{onTextChunk:(m,C,x)=>{if(!i&&a!==this._activeRequestThreadId||(d+=m,this._drawer?.removeTypingIndicator(),x?.skuToProductItem&&(this._skuToProductItem={...this._skuToProductItem,...x.skuToProductItem}),x?.conversationMode&&(this._conversationMode=x.conversationMode),this.track(Wa(this.analyticsContext(),{request_id:k,chunk_index:w++,widget:"chat"})),!this._drawer))return;let S=d;if(C&&mt(S)){const N=this.config.accountId;if(!un(N)){const R=Vo(S);R&&this._drawer?.showKvkkBanner(R,()=>{this._drawer?.hideKvkkBanner()}),Zo(N)}S=Ho(S)}const A=this._shadow?.querySelector(`[data-message-id="${g.id}"] .gengage-chat-bubble-text`);if(A?A.innerHTML=ee(S):(g.content=S,g.role==="assistant"&&g.threadId&&!this._threadsWithFirstBot.has(g.threadId)&&(this._threadsWithFirstBot.add(g.threadId),this._drawer.markFirstBotMessage(g.id)),this._drawer.addMessage(g)),C){g.content=S,g.status="done",_n();const N=this._shadow?.querySelector(`[data-message-id="${g.id}"] .gengage-chat-bubble-text`);if(N){this._activeTypewriter?.cancel();const R=x?.productMentions;this._activeTypewriter=Io({container:N,html:ee(S),onTick:()=>this._drawer?.scrollToBottomIfNeeded(),onComplete:()=>{this._activeTypewriter=null,R&&R.length>0&&N&&Ao({container:N,mentions:R,onProductClick:q=>{this._sendAction({title:R.find(z=>z.sku===q)?.short_name??q,type:"launchSingleProduct",payload:{sku:q}})}})}})}}},onUISpec:(m,C,x)=>{if(!i&&a!==this._activeRequestThreadId||C!=="chat")return;const S=m.elements[m.root],A=S?.type??"unknown";this.track(Ga(this.analyticsContext(),{request_id:k,chunk_index:w,component_type:A,widget:"chat"}));const N=this._buildRenderContext();if(A==="ComparisonTable"){const z=S?.props?.products;es(Array.isArray(z)?z.length:0)}if(A==="ProductGrid"){const z=S?.children?.length??0;as(void 0,z)}const R=x==="panel"&&this._panel?this._panel.toPanelSpec(m):m,q=!g.silent&&(x!=="panel"||A==="ProductCard")&&A!=="ActionButtons";if(x==="panel"&&this._panel){const z=!$;$=!0;const L=qo({componentType:A,similarsAppend:S?.props?.similarsAppend===!0,currentPanelType:this._panel.currentType,hasPanelContent:this._drawer?.hasPanelContent()??!1,isPanelLoading:this._drawer?.isPanelLoading()??!1,isFirstPanelContentInStream:z});L==="appendSimilars"?this._appendSimilarsToPanel(R,N):L==="append"?this._drawer?.appendPanelContent(this._renderUISpec(R,N)):(this._comparisonSelectMode=!1,this._comparisonSelectedSkus=[],this._drawer?.setPanelContent(this._renderUISpec(R,N)),this._panel.currentType=A),A==="ProductDetailsPanel"&&t.type==="launchSingleProduct"&&this._clearUnavailableProductContext(),g.threadId&&!this._panel.threads.includes(g.threadId)&&this._panel.threads.push(g.threadId);const M=this._panel.currentType??A,y=S?.props?.panelTitle;this._panel.updateTopBar(M,y),this._panel.updateExtendedMode(A)}if(A==="ProductDetailsPanel"&&!g.silent&&x==="panel"){const z=S?.props?.product;if(z){const L={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:z}}}},M=this._shadow?.querySelector(".gengage-chat-messages");if(M){const y=this._renderUISpec(L,N);g.threadId&&(y.dataset.threadId=g.threadId),M.appendChild(y),y.scrollIntoView({behavior:"auto",block:"end"})}}}if(q){const z=this._shadow?.querySelector(".gengage-chat-messages");if(z){const L=this._renderUISpec(m,N);g.threadId&&(L.dataset.threadId=g.threadId),z.appendChild(L),L.scrollIntoView({behavior:"auto",block:"end"})}}if((A==="ProductGrid"||A==="ProductCard")&&g.threadId){const z=S?.children??[],L=A==="ProductGrid"?z.map(M=>m.elements[M]?.props?.product).filter(Boolean):[S?.props?.product].filter(Boolean);for(const M of L){const y=M.sku,P=M.imageUrl;y&&P&&this._thumbnailEntries.push({sku:y,imageUrl:P,threadId:g.threadId})}this._drawer?.setThumbnails(this._thumbnailEntries)}if(A==="ProductGrid"||A==="ProductDetailsPanel"){const L=(A==="ProductGrid"?(S?.children??[]).map(M=>m.elements[M]?.props?.product).filter(Boolean):[S?.props?.product??S?.props].filter(Boolean)).map(M=>M.imageUrl).filter(M=>typeof M=="string").slice(0,5);L.length>0&&this._bridge?.send("previewImages",{images:L})}if(A==="ProductGrid"&&x==="panel"&&!this._comparisonSelectMode&&!Mo()){this._choicePrompterEl?.remove(),this._shadow?.querySelectorAll(".gengage-chat-choice-prompter").forEach(y=>y.remove()),this._choicePrompterEl=zo({heading:this._i18n.choicePrompterHeading,suggestion:this._i18n.choicePrompterSuggestion,ctaLabel:this._i18n.choicePrompterCta,dismissAriaLabel:this._i18n.dismissAriaLabel,onCtaClick:()=>{this._comparisonSelectMode=!0,this._choicePrompterEl=null,this._refreshComparisonUI()},onDismiss:()=>{this._choicePrompterEl=null}});const L=this._isMobileViewport||this._drawer?.isPanelCollapsed()?".gengage-chat-conversation":".gengage-chat-panel",M=this._shadow?.querySelector(L);M?M.appendChild(this._choicePrompterEl):this._choicePrompterEl=null}if(A==="ActionButtons"){const z=S?.props?.buttons;if(z&&z.length>0){const L=[],M=[];for(const y of z)if(Po(y)){const P={label:y.label,action:y.action};y.icon&&(P.icon=y.icon),L.push(P)}else M.push(y);L.length>0&&this._drawer?.setInputAreaChips(L.map(y=>({label:y.label,onAction:()=>this._sendAction(y.action),...y.icon?{icon:y.icon}:{}}))),M.length>0&&this._drawer?.setPills(M.map(y=>{const P={label:y.label,onAction:()=>this._sendAction(y.action)};return y.icon&&(P.icon=y.icon),y.image&&(P.image=y.image),y.description&&(P.description=y.description),P}))}}g.uiSpec=m},onAction:m=>{if(!(!i&&a!==this._activeRequestThreadId)&&m.type==="action"){const C={};this.config.actionHandling?.unknownActionPolicy!==void 0&&(C.unknownActionPolicy=this.config.actionHandling.unknownActionPolicy),this.config.actionHandling?.allowScriptCall!==void 0&&(C.allowScriptCall=this.config.actionHandling.allowScriptCall),Ii(m,{openChat:()=>this.open(),navigate:x=>{Y(x.url)&&(this._bridge?.send("navigate",x),x.newTab?window.open(x.url,"_blank","noopener,noreferrer"):window.location.href=x.url)},saveSession:x=>this.saveSession(x.sessionId,x.sku),addToCart:x=>{J("gengage:similar:add-to-cart",x)},scriptCall:x=>{J("gengage:chat:script-call",x),this.config.onScriptCall?.(x)}},C)}},onMetadata:m=>{if(!(!i&&a!==this._activeRequestThreadId)&&m.type==="metadata"&&m.meta){if((m.meta.panel!==void 0||m.meta.messages!==void 0||m.meta.message_id!==void 0)&&(this._lastBackendContext=m.meta),m.meta.panelLoading){T=!0,$=!1,c();const x=typeof m.meta.panelPendingType=="string"?m.meta.panelPendingType:void 0;this._panel&&(this._panel.currentType=null),this._drawer?.showPanelLoading(x),x&&this._panel?.updateTopBarForLoading(x)}if(m.meta.voice){const x=new CustomEvent("gengage:chat:voice",{detail:{payload:m.meta.voice},bubbles:!1,cancelable:!0}),S=window.dispatchEvent(x);if(os(),S){const A=m.meta.voice;A.audio_base64&&(this._activeTtsHandle?.stop(),this._activeTtsHandle=jr(A.audio_base64,A.content_type??"audio/ogg"))}}(m.meta.redirectTarget||m.meta.redirect)&&J("gengage:chat:redirect",{target:m.meta.redirectTarget??null,payload:m.meta.redirect??null}),m.meta.analyzeAnimation&&(T=!0,$=!1,c(),this._panel&&(this._panel.currentType=null),this._drawer?.showPanelLoading(),this._panel?.updateTopBarForLoading("productDetails")),m.meta.loading&&typeof m.meta.loadingText=="string"&&(this._drawer?.addThinkingStep(m.meta.loadingText),this._bridge?.send("loadingMessage",{text:m.meta.loadingText})),m.meta.visitorDataResponse&&this._bridge?.send("engagingMessage",m.meta.visitorDataResponse),m.meta.formType&&this._bridge?.send("glovOtokoc",{type:m.meta.formType,data:m.meta.formPayload}),m.meta.launcherContent&&this._bridge?.send("launcherContent",m.meta.launcherContent),J("gengage:chat:metadata",{payload:m.meta});const C=m.meta;typeof C.prompt_tokens=="number"&&typeof C.completion_tokens=="number"&&this.track(Ja(this.analyticsContext(),{model:m.model??"unknown",prompt_tokens:C.prompt_tokens,completion_tokens:C.completion_tokens,total_tokens:C.total_tokens??C.prompt_tokens+C.completion_tokens}))}},onError:m=>{if(Z&&this._abortControllers.delete(Z),!i&&a!==this._activeRequestThreadId)return;this._bridge?.send("isResponding",!1),this._bridge?.send("loadingMessage",{text:null}),this._drawer?.removeTypingIndicator();const C=$;if(T&&!$&&l(),T=!1,$=!1,!(g.silent||g.content!=null&&g.content.length>0||d.length>0||C))if(r||this._hasUnavailableProductContext()){const S=this._i18n.productNotFoundMessage;g.content=S,g.status="done",this._ensureAssistantMessageRendered(g),this._drawer?.updateBotMessage(g.id,S),this._markUnavailableProductContext()}else this.emit("error",m),this._drawer?.showError(this._i18n.errorMessage,()=>{this._lastSentAction&&this._sendAction(this._lastSentAction.action,this._lastSentAction.options)});r&&(this._pdpPrimingInFlight=!1,this._flushQueuedUserMessages()),g.status==="streaming"&&(g.status="error"),this.track(ot(this.analyticsContext(),{request_id:k,error_code:"STREAM_ERROR",error_message:m.message,widget:"chat"}))},onDone:()=>{if(Z&&this._abortControllers.delete(Z),!(!i&&a!==this._activeRequestThreadId)){if(this._activeRequestThreadId=null,this._bridge?.send("isResponding",!1),this._bridge?.send("loadingMessage",{text:null}),this._drawer?.removeTypingIndicator(),T&&!$&&l(),T=!1,$=!1,r&&!d&&!$){const m=this._i18n.productNotFoundMessage;g.content=m,this._ensureAssistantMessageRendered(g),this._drawer?.updateBotMessage(g.id,m),this._markUnavailableProductContext()}r&&(this._pdpPrimingInFlight=!1,this._flushQueuedUserMessages()),g.status==="streaming"&&(g.status="done",_n()),this.emit("message",g),this._panel?.snapshotForMessage(g.id),this._panel?.attachClickHandler(g.id),this.track($e(this.analyticsContext(),{request_id:k,latency_ms:Date.now()-E,chunk_count:w,widget:"chat"})),this.track(Ka(this.analyticsContext(),{meter_key:"chat_request",quantity:1,unit:"request"})),this.track(Qa(this.analyticsContext(),{message_count:this._messages.length,history_ref:this.config.session?.sessionId??"",redaction_level:"none"})),this._persistToIndexedDB().catch(()=>{})}}},p),this._abortControllers.add(Z),!n?.silent&&!i){const m=Z;this._drawer?.showStopButton(()=>{m.abort(),this._abortControllers.delete(m),this._drawer?.removeTypingIndicator(),this._bridge?.send("isResponding",!1),this._bridge?.send("loadingMessage",{text:null}),g.status==="streaming"&&(g.status="done")})}}_getVisibleMessages(){const t=this._messages.filter(a=>!a.silent);if(!this._currentThreadId)return t;const n=this._currentThreadId;return t.filter(a=>!a.threadId||a.threadId<=n)}_appendSimilarsToPanel(t,n){if(!this._drawer)return;const a=this._drawer.getPanelContentElement();if(!a)return;const i=document.createElement("h3");i.className="gengage-chat-product-details-similars-heading",i.textContent=this._i18n.similarProductsLabel??"Similar Products",a.appendChild(i);const r=this._renderUISpec(t,n);r.classList.add("gengage-chat-product-details-similars"),a.appendChild(r)}_handleRollback(t){const n=this._messages.find(a=>a.id===t);n?.threadId&&this._rollbackToThread(n.threadId)}_rollbackToThread(t){this._currentThreadId=t,this._extendedModeManager?.setHiddenByUser(!1);for(const r of this._messages){const o=this._shadow?.querySelector(`[data-message-id="${CSS.escape(r.id)}"]`);o&&(r.threadId&&r.threadId>t?o.classList.add("gengage-chat-bubble--hidden"):o.classList.remove("gengage-chat-bubble--hidden"))}this._shadow?.querySelectorAll("[data-thread-id]").forEach(r=>{r instanceof HTMLElement&&r.dataset.threadId&&r.dataset.threadId>t?r.classList.add("gengage-chat-bubble--hidden"):r instanceof HTMLElement&&r.classList.remove("gengage-chat-bubble--hidden")});const n=this._messages.find(r=>r.role==="assistant"&&r.threadId===t);n&&this._panel?.restoreForMessage(n.id)||this._drawer?.clearPanel();const i=this._panel.currentType??"";this._panel?.updateTopBar(i),this._drawer?.setPills([]),this._session?.db&&this.config.session?.sessionId&&this._session?.db.loadContext(this.config.session.sessionId,t).then(r=>{r&&(this._lastBackendContext=r.context)}).catch(()=>{}),this._session?.db&&this.config.session?.sessionId&&this._session?.db.deleteContextsAfterThread(this.config.session.sessionId,t).catch(()=>{})}async _persistToIndexedDB(){!this._session||!this.config.session?.sessionId||await this._session.persist({userId:this.config.session.userId??"",appId:this.config.accountId,sessionId:this.config.session.sessionId,messages:this._messages,currentThreadId:this._currentThreadId,lastThreadId:this._lastThreadId,chatCreatedAt:this._chatCreatedAt,panelSnapshots:this._panel?.snapshots??new Map,panelThreads:this._panel?.threads??[],thumbnailEntries:this._thumbnailEntries,lastBackendContext:this._lastBackendContext,sku:this.config.pageContext?.sku})}_isSameOriginUrl(t){try{return t.trim()?new URL(t,window.location.href).origin===window.location.origin:!1}catch{return!1}}_markUnavailableProductContext(){this._productContextUnavailableSku=this.config.pageContext?.sku??null}_clearUnavailableProductContext(){this._productContextUnavailableSku=null}_hasUnavailableProductContext(){const t=this.config.pageContext?.sku;return t!==void 0&&t.length>0&&this._productContextUnavailableSku===t}_ensureAssistantMessageRendered(t){if(!(this._shadow?.querySelector(`[data-message-id="${CSS.escape(t.id)}"]`)||!this._drawer)){if(t.role==="assistant"&&t.threadId&&!this._threadsWithFirstBot.has(t.threadId)){this._threadsWithFirstBot.add(t.threadId),this._drawer.addMessage(t),this._drawer.markFirstBotMessage(t.id);return}this._drawer.addMessage(t)}}async _saveSessionAndOpenURL(t){this._session&&await this._session.saveAndOpenURL(t,()=>this._persistToIndexedDB(),this._bridge)}async _loadPayload(t,n){return this._session?this._session.loadPayload(t,n):null}async _restoreFromIndexedDB(t){if(!this._session?.db)return;const n=this.config.session?.sessionId;if(!n)return;const a=this.config.session?.userId??"",i=this.config.accountId;if(await this._session.loadFavorites(a,i),!t)return;const r=await this._session.db?.loadSession(a,i,n);if(!r||r.messages.length===0)return;const o=this.config.pageContext?.sku;if(o&&r.sku&&r.sku!==o)return;if(this._pdpLaunched=!0,this._drawer?.lockScrollForRestore(),this._currentThreadId=r.currentThreadId,this._lastThreadId=r.lastThreadId,this._chatCreatedAt=r.createdAt,r.panelThreads&&(this._panel.threads=r.panelThreads),r.thumbnailEntries&&(this._thumbnailEntries=r.thumbnailEntries,this._drawer?.setThumbnails(this._thumbnailEntries)),r.panelSnapshotHtml)for(const[c,l]of Object.entries(r.panelSnapshotHtml)){const d=document.createElement("div");d.innerHTML=ee(l),this._panel.snapshots.set(c,d)}let s=0;for(const c of r.messages){const l={id:c.id,role:c.role,timestamp:c.timestamp,status:c.status};if(c.threadId!==void 0&&(l.threadId=c.threadId),c.content!==void 0&&(l.content=c.content),c.silent&&(l.silent=!0),this._messages.push(l),l.silent)continue;l.role==="assistant"&&l.threadId&&!this._threadsWithFirstBot.has(l.threadId)&&(this._threadsWithFirstBot.add(l.threadId),this._drawer?.markFirstBotMessage(l.id)),this._drawer?.addMessage(l);const d=parseInt(c.id.replace("msg-",""),10);if(!isNaN(d)&&d>s&&(s=d),l.role==="assistant"&&l.threadId){const g=await this._loadPayload(l.threadId,l.id);g&&(l.uiSpec=g,this._restoreInlineUISpec(l),this._panel?.attachClickHandler(l.id),delete l.uiSpec)}}if(s>this._currentMessageId&&(this._currentMessageId=s),this._currentThreadId){let c=await this._session.db?.loadContext(n,this._currentThreadId);c||(c=await this._session.db?.loadLatestContext(n)),c&&(this._lastBackendContext=c.context)}if(this._currentThreadId){const c=[...this._messages].reverse().find(l=>l.role==="assistant"&&l.threadId===this._currentThreadId&&!l.silent);c&&this._panel.snapshots.has(c.id)&&this._panel?.restoreForMessage(c.id)}if(this._currentThreadId){const c=this._currentThreadId;for(const l of this._messages)l.threadId&&l.threadId>c&&this._shadow?.querySelector(`[data-message-id="${CSS.escape(l.id)}"]`)?.classList.add("gengage-chat-bubble--hidden");this._shadow?.querySelectorAll("[data-thread-id]").forEach(l=>{l instanceof HTMLElement&&l.dataset.threadId&&l.dataset.threadId>c&&l.classList.add("gengage-chat-bubble--hidden")})}if(this._panel.threads.length>0&&this._currentThreadId){const c=this._panel.threads[this._panel.threads.length-1];if(c){const l=[...this._messages].reverse().find(d=>d.role==="assistant"&&d.threadId===c);if(l?.threadId){const d=await this._loadPayload(l.threadId,l.id);if(d){const g=d.elements[d.root];g&&this._panel?.updateTopBar(g.type)}}}}setTimeout(()=>{this._drawer?.scrollToLastThread()},550)}_toggleComparisonSku(t){t===""?(this._comparisonSelectMode=!this._comparisonSelectMode,this._comparisonSelectMode||(this._comparisonSelectedSkus=[],Xo())):this._comparisonSelectedSkus.indexOf(t)>=0?this._comparisonSelectedSkus=this._comparisonSelectedSkus.filter(a=>a!==t):(this._comparisonSelectedSkus=[...this._comparisonSelectedSkus,t],Qo(t)),this._refreshComparisonUI()}_refreshComparisonUI(){const t=this._shadow?.querySelector(".gengage-chat-panel");if(!t)return;const n=t.querySelector(".gengage-chat-product-grid-wrapper");if(!n)return;const a=n.querySelector(".gengage-chat-product-grid");if(!a)return;const i=n.querySelector(".gengage-chat-comparison-toggle-btn");if(i&&i.classList.toggle("gengage-chat-comparison-toggle-btn--active",this._comparisonSelectMode),this._comparisonSelectMode){const o=a.querySelectorAll(".gengage-chat-product-card[data-sku]");for(const s of o){if(s.parentElement?.classList.contains("gengage-chat-comparison-select-wrapper")){const g=s.parentElement.querySelector(".gengage-chat-comparison-checkbox");g&&(g.checked=this._comparisonSelectedSkus.includes(s.dataset.sku));continue}const c=s.dataset.sku,l=document.createElement("div");l.className="gengage-chat-comparison-select-wrapper";const d=document.createElement("input");d.type="checkbox",d.className="gengage-chat-comparison-checkbox",d.checked=this._comparisonSelectedSkus.includes(c),d.addEventListener("change",()=>{this._toggleComparisonSku(c)}),s.parentNode.insertBefore(l,s),l.appendChild(d),l.appendChild(s),l.style.cursor="pointer",l.addEventListener("click",g=>{g.target!==d&&(d.checked=!d.checked,this._toggleComparisonSku(c))})}}else{const o=a.querySelectorAll(".gengage-chat-comparison-select-wrapper");for(const s of o){const c=s.querySelector(".gengage-chat-product-card");c&&s.parentNode&&(s.parentNode.insertBefore(c,s),s.remove())}}const r=n.querySelector(".gengage-chat-comparison-floating-btn");if(this._comparisonSelectMode){const o=this._comparisonSelectedSkus.length,s=o>=2,c=this._i18n.compareSelected??"Compare",l=s?`${c} (${o})`:this._i18n.compareMinHint??"Select at least 2 products";if(r)r.textContent=l,r.disabled=!s,r.classList.toggle("gengage-chat-comparison-floating-btn--disabled",!s);else{const d=document.createElement("button");d.className="gengage-chat-comparison-floating-btn",d.type="button",d.textContent=l,d.disabled=!s,s||d.classList.add("gengage-chat-comparison-floating-btn--disabled"),d.addEventListener("click",()=>{this._comparisonSelectedSkus.length<2||(fn(this._comparisonSelectedSkus),this._sendAction({title:c,type:"getComparisonTable",payload:{sku_list:[...this._comparisonSelectedSkus]}}))}),n.appendChild(d)}}else r?.remove()}_buildRenderContext(){const t={onAction:n=>{if(hn(n.title,n.type),n.type==="findSimilar"){const i=typeof n.payload=="object"&&n.payload!==null&&"sku"in n.payload?String(n.payload.sku):"";Yo(i)}n.type==="getComparisonTable"&&fn(this._comparisonSelectedSkus);const a=n.type==="addToCart"||n.type==="like";this._sendAction(n,a?{preservePanel:!0}:void 0)},onProductClick:n=>{mn(n.sku),this.config.isDemoWebsite!==!0&&this._isSameOriginUrl(n.url)?(J("gengage:similar:product-click",{sku:n.sku,url:n.url,sessionId:this.config.session?.sessionId??null}),this._saveSessionAndOpenURL(n.url)):this._sendAction({title:n.sku,type:"launchSingleProduct",payload:{sku:n.sku}})},onAddToCart:n=>{bn(n.sku,n.quantity);const a={...n,sessionId:this.config.session?.sessionId??null};J("gengage:chat:add-to-cart",a),this._bridge?.send("addToCart",n),this._runEventCallbacks("gengage-cart-add",a),this._sendAction({title:this._i18n.addToCartButton??"Add to Cart",type:"addToCart",payload:{sku:n.sku,cart_code:n.cartCode,quantity:n.quantity}},{preservePanel:!0})},onProductSelect:n=>{const a={root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:n}}}};this._drawer?.setPanelContent(this._renderUISpec(a,t))},i18n:this._i18n,pricing:this.config.pricing,productSort:this._productSort,onSortChange:n=>{this._productSort=n},comparisonSelectMode:this._comparisonSelectMode,comparisonSelectedSkus:this._comparisonSelectedSkus,onToggleComparisonSku:n=>{this._toggleComparisonSku(n)},favoritedSkus:this._session?.favoritedSkus??new Set,onFavoriteToggle:(n,a)=>{ts(n),this._toggleFavorite(n,a);const i=a.name??n;this._sendAction({title:i,type:"like",payload:{sku:n}},{preservePanel:!0})}};return t}async _toggleFavorite(t,n){if(!this._session)return;const a=this.config.session?.userId??"",i=this.config.accountId;await this._session.toggleFavorite(a,i,t,n)}async _runEventCallbacks(t,n){const a=this._eventCallbacks.get(t);if(!(!a||a.size===0))for(const i of a)try{const r=i(n);if((r instanceof Promise?await r:r)===!1){this._handleCallbackFailure(t,n);return}}catch{this._handleCallbackFailure(t,n);return}}_handleCallbackFailure(t,n){if(t==="gengage-cart-add"){const a=this._i18n.cartAddErrorMessage,i=this._createMessage("assistant",a);this._currentThreadId&&(i.threadId=this._currentThreadId),this._messages.push(i),this._drawer?.addMessage(i)}}_restoreInlineUISpec(t){if(!t.uiSpec||!this._drawer)return;const n=t.uiSpec,a=n.elements[n.root];if(!a)return;const i=a.type;if(i==="ActionButtons"||i==="ComparisonTable"||i==="ProductGrid"&&a.props?.similarsAppend===!0)return;const r=this._buildRenderContext(),o=this._shadow?.querySelector(".gengage-chat-messages");if(!o)return;if(i==="ProductDetailsPanel"){const c=a.props?.product;if(!c)return;const l={root:"root",elements:{root:{type:"ProductSummaryCard",props:{product:c}}}},d=this._renderUISpec(l,r);t.threadId&&(d.dataset.threadId=t.threadId),o.appendChild(d);return}const s=this._renderUISpec(n,r);t.threadId&&(s.dataset.threadId=t.threadId),o.appendChild(s)}_createMessage(t,n){return this._currentMessageId++,{id:`msg-${this._currentMessageId}`,role:t,content:n,timestamp:Date.now(),status:"done"}}_resolveI18n(t){return{...Lr(t.locale),...t.i18n}}_resolveUISpecRegistry(){const t=uo();return it(t,this.config.renderer?.registry)}_renderUISpec(t,n){const a=this._resolveUISpecRegistry(),i=this.config.renderer?.unknownRenderer??rn,r=(c,l)=>ho(c,l,a,i),o=this.config.renderer?.renderUISpec;return o?o(t,n,{registry:a,unknownRenderer:i,defaultRender:r}):r(t,n)}}async function Zg(e,t,n){const a=Fe("launcher_action",t),i={uiSpecs:[],actions:[]},r={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(r.signal=n);const o=await fetch(a,r);if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);const s={onEvent:c=>{const l=qe(c);if(l&&(l.type==="ui_spec"&&i.uiSpecs.push(l.spec),l.type==="ui_spec"&&l.spec.elements)){for(const d of Object.values(l.spec.elements))if(d.type==="ActionButton"&&d.props?.action){const g=d.props.action;i.actions.push(g)}}}};return n!==void 0&&(s.signal=n),await Ue(o,s),i}function _a(e){const t=document.createElement("div");t.className="gengage-qna-buttons",t.setAttribute("role","group"),t.setAttribute("aria-label",e.quickQuestionsAriaLabel??"Quick questions"),e.orientation==="vertical"&&(t.style.flexDirection="column");for(const n of e.actions){const a=document.createElement("button");a.className="gengage-qna-button",a.textContent=n.title,a.type="button",a.addEventListener("click",()=>{const i={title:n.title,type:n.type};n.payload!==void 0&&(i.payload=n.payload),e.onAction(i)}),t.appendChild(a)}if(e.ctaText||e.onOpenChat){const n=document.createElement("button");n.className="gengage-qna-cta",n.textContent=e.ctaText??e.defaultCtaText??"Ask something else",n.type="button",n.addEventListener("click",()=>{e.onOpenChat?.()}),t.appendChild(n)}return t}function Hg(e){const t=document.createElement("div");t.className="gengage-qna-input-wrapper";const n=document.createElement("input");n.type="text",n.className="gengage-qna-input",n.setAttribute("aria-label",e.askQuestionAriaLabel??"Ask a question");const a=Array.isArray(e.placeholders)?e.placeholders:e.placeholders?[e.placeholders]:[e.defaultInputPlaceholder??"Ask a question..."];let i=0;n.placeholder=a[0]??"";let r=null,o=null;a.length>1&&(r=setInterval(()=>{n.classList.add("gengage-qna-input--fade"),o=setTimeout(()=>{i=(i+1)%a.length,n.placeholder=a[i]??"",n.classList.remove("gengage-qna-input--fade")},180)},3e3));const s=document.createElement("button");s.className="gengage-qna-send",s.type="button",s.textContent=e.ctaLabel??e.sendButtonText??"Ask",s.setAttribute("aria-label",e.sendQuestionAriaLabel??"Send question");const c=()=>{const l=n.value.trim();l&&(e.onSubmit({title:l,type:"user_message",payload:l}),n.value="")};return s.addEventListener("click",c),n.addEventListener("keydown",l=>{l.key==="Enter"&&(l.preventDefault(),c())}),t.appendChild(n),t.appendChild(s),t._cleanup=()=>{r&&clearInterval(r),o&&clearTimeout(o)},t}function tt(e,t){if(!e||typeof e!="object")return null;const n=e,a=n.type;if(typeof a!="string"||a.length===0)return null;const i=n.title,r=n.payload,o=typeof i=="string"&&i.length>0?i:t;if(!o)return null;const s={title:o,type:a};return r!==void 0&&(s.payload=r),s}function va(e){const t={title:e.title,type:e.type};return e.payload!==void 0&&(t.payload=e.payload),t}function ya(e,t){const n=[],a=e.props?.actions;if(Array.isArray(a))for(const o of a){const s=tt(o);s&&n.push(s)}const i=e.props?.buttons;if(Array.isArray(i))for(const o of i){if(!o||typeof o!="object")continue;const s=o,c=typeof s.label=="string"?s.label:void 0,l=tt(s.action,c);l&&n.push(l)}if(e.children)for(const o of e.children){const s=t.elements[o];if(!s||s.type!=="ActionButton")continue;const c=typeof s.props?.label=="string"?s.props.label:void 0,l=tt(s.props?.action,c);l&&n.push(l)}const r=new Set;return n.filter(o=>r.has(o.title)?!1:(r.add(o.title),!0))}const wa={ButtonRow:({element:e,spec:t,context:n})=>{const a=ya(e,t).map(va),i=e.props?.orientation,r={actions:a,onAction:n.onAction,defaultCtaText:n.i18n.defaultCtaText,quickQuestionsAriaLabel:n.i18n.quickQuestionsAriaLabel};return n.onOpenChat!==void 0&&(r.onOpenChat=n.onOpenChat),n.ctaText!==void 0&&(r.ctaText=n.ctaText),(i==="horizontal"||i==="vertical")&&(r.orientation=i),_a(r)},ActionButtons:({element:e,spec:t,context:n})=>{const i={actions:ya(e,t).map(va),onAction:n.onAction,defaultCtaText:n.i18n.defaultCtaText,quickQuestionsAriaLabel:n.i18n.quickQuestionsAriaLabel};return n.onOpenChat!==void 0&&(i.onOpenChat=n.onOpenChat),n.ctaText!==void 0&&(i.ctaText=n.ctaText),_a(i)},ActionButton:({element:e,context:t})=>{const n=document.createElement("button");n.className="gengage-qna-button",n.type="button";const a=e.props?.label;typeof a=="string"?n.textContent=a:n.textContent=t.i18n.defaultCtaText;const i=tt(e.props?.action,typeof a=="string"?a:void 0);return i&&n.addEventListener("click",()=>t.onAction(i)),n},TextInput:({element:e,context:t})=>{const n=e.props?.placeholder,a=typeof n=="string"||Array.isArray(n)?n:t.inputPlaceholder,i=typeof e.props?.ctaLabel=="string"?e.props.ctaLabel:void 0,r={onSubmit:t.onAction,askQuestionAriaLabel:t.i18n.askQuestionAriaLabel,defaultInputPlaceholder:t.i18n.defaultInputPlaceholder,sendButtonText:t.i18n.sendButton,sendQuestionAriaLabel:t.i18n.sendQuestionAriaLabel};return a!==void 0&&(r.placeholders=a),i!==void 0&&(r.ctaLabel=i),Hg(r)},QuestionHeading:({element:e})=>{const t=document.createElement("h3");t.className="gengage-qna-heading";const n=e.props?.text;return t.textContent=typeof n=="string"?n:"",t},ProductCard:()=>null},xa=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const n=document.createElement("div");for(const a of e.children){const i=t(a);i&&n.appendChild(i)}return n};function Vg(){return{...wa}}function Wg(e,t,n=wa,a=xa){return at({spec:e,context:t,registry:n,containerClassName:"gengage-qna-uispec",unknownRenderer:a})}const ka={quickQuestionsAriaLabel:"Hızlı sorular",askQuestionAriaLabel:"Soru sorun",defaultInputPlaceholder:"Bir soru sorun...",sendButton:"Sor",sendQuestionAriaLabel:"Soruyu gönder",defaultCtaText:"Başka bir şey sor"},Gg={quickQuestionsAriaLabel:"Quick questions",askQuestionAriaLabel:"Ask a question",defaultInputPlaceholder:"Ask a question...",sendButton:"Ask",sendQuestionAriaLabel:"Send question",defaultCtaText:"Ask something else"};function Jg(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function Kg(e){return Jg(e)==="en"?Gg:ka}class Yg extends dt{constructor(){super(...arguments),this._abortController=null,this._debounceTimer=null,this._contentEl=null,this._i18n=ka,this._actionHandler=this._handleAction.bind(this),this._openChatHandler=this._handleOpenChat.bind(this)}async onInit(t){this._i18n=this._resolveI18n(t),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-qna-container",this.root.appendChild(this._contentEl);const n=t.pageContext?.sku;n&&(this._lastSku=n,await this._fetchAndRender(n)),this.isVisible=!0,bt("qna")}onUpdate(t){const n=t.sku;!n||n===this._lastSku||(this._debounceTimer&&clearTimeout(this._debounceTimer),this._debounceTimer=setTimeout(()=>{this._debounceTimer=null,this._lastSku=n,this._fetchAndRender(n)},50))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.2s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._debounceTimer&&(clearTimeout(this._debounceTimer),this._debounceTimer=null),this._contentEl&&(this._cleanupTextInputTimers(),this._contentEl.remove(),this._contentEl=null)}_abort(){this._abortController?.abort(),this._abortController=null}_cleanupTextInputTimers(){if(!this._contentEl)return;const t=this._contentEl.querySelectorAll(".gengage-qna-input-wrapper");for(const n of t)n._cleanup?.()}async _fetchAndRender(t){if(this._abort(),this._abortController=new AbortController,!this._contentEl)return;this._cleanupTextInputTimers(),this._contentEl.innerHTML="";const n=this._createLoadingIndicator();this._contentEl.appendChild(n);const a={middlewareUrl:this.config.middlewareUrl},i=crypto.randomUUID(),r=Date.now();this.track(rt(this.analyticsContext(),{endpoint:"launcher_action",request_id:i,widget:"qna"}));try{const o={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:t,locale:this.config.locale??"tr"},s=this.config.pageContext?.pageType;s!==void 0&&(o.page_type=s);const c=await Zg(o,a,this._abortController.signal);if(this.track($e(this.analyticsContext(),{request_id:i,latency_ms:Date.now()-r,chunk_count:c.actions.length,widget:"qna"})),this.track(st(this.analyticsContext(),{message_count:c.actions.length,history_ref:i,redaction_level:"none",widget:"qna"})),!this._contentEl)return;if(this._contentEl.innerHTML="",!this._specIncludesType(c.uiSpecs,"QuestionHeading")&&this.config.showStaticQuestion&&this.config.staticQuestionText){const _=document.createElement("h3");_.className="gengage-qna-heading",_.textContent=this.config.staticQuestionText,this._contentEl.appendChild(_)}const d=this.config.inputPlaceholder,g=c.actions.length>0&&d===!0?c.actions.map(_=>_.title):d===!0?this._i18n.defaultInputPlaceholder:d??this._i18n.defaultInputPlaceholder,p={onAction:this._actionHandler,i18n:this._i18n};this.config.hideButtonRowCta||(p.onOpenChat=this._openChatHandler,this.config.ctaText!==void 0&&(p.ctaText=this.config.ctaText)),g!==void 0&&(p.inputPlaceholder=g);const u=this._buildFallbackActionsSpec(c.actions),h=(c.uiSpecs.length>0?c.uiSpecs:[u]).filter(_=>Object.keys(_.elements).length>0);for(const _ of h){const k=this._renderUISpec(_,p);this._contentEl.appendChild(k)}h.length>0&&Ze("qna"),!this._specIncludesType(h,"TextInput")&&this._appendStandaloneInput(p,g)}catch(o){if(o instanceof DOMException&&o.name==="AbortError")return;if(J("gengage:global:error",{source:"qna",code:"FETCH_ERROR",message:qt(this.config.locale)}),this.track(ot(this.analyticsContext(),{request_id:i,error_code:"FETCH_ERROR",error_message:o instanceof Error?o.message:String(o),widget:"qna"})),this._contentEl){this._cleanupTextInputTimers(),this._contentEl.innerHTML="";const s=this.config.inputPlaceholder===!0?this._i18n.defaultInputPlaceholder:this.config.inputPlaceholder??this._i18n.defaultInputPlaceholder,c={onAction:this._actionHandler,i18n:this._i18n,onOpenChat:this._openChatHandler};this.config.ctaText!==void 0&&(c.ctaText=this.config.ctaText),this._appendStandaloneInput(c,s)}}}_createLoadingIndicator(){const t=document.createElement("div");t.className="gengage-qna-loading";for(let n=0;n<3;n++){const a=document.createElement("div");a.className="gengage-qna-loading-dot",t.appendChild(a)}return t}_resolveI18n(t){return{...Kg(t.locale),...t.i18n}}_resolveUISpecRegistry(){const t=Vg();return it(t,this.config.renderer?.registry)}_renderUISpec(t,n){const a=this._resolveUISpecRegistry(),i=this.config.renderer?.unknownRenderer??xa,r=(c,l)=>Wg(c,l,a,i),o=this.config.renderer?.renderUISpec;return o?o(t,n,{registry:a,unknownRenderer:i,defaultRender:r}):r(t,n)}_specIncludesType(t,n){for(const a of t)for(const i of Object.values(a.elements))if(i.type===n)return!0;return!1}_buildFallbackActionsSpec(t){if(t.length===0)return{root:"root",elements:{}};const n={},a=[];for(let i=0;i<t.length;i++){const r=t[i],o=`action-${i}`;a.push(o),n[o]={type:"ActionButton",props:{label:r.title,action:{title:r.title,type:r.type,payload:r.payload}}}}return n.root={type:"ButtonRow",children:a},{root:"root",elements:n}}_appendStandaloneInput(t,n){if(!this._contentEl)return;const a={root:"root",elements:{root:{type:"TextInput",props:{placeholder:n}}}},i=this._renderUISpec(a,t);this._contentEl.appendChild(i)}_handleAction(t){hn(t.title,t.type),this.config.onActionSelected?.(t),J("gengage:qna:action",t)}_handleOpenChat(){const t=this._contentEl?.querySelector(".gengage-qna-input");t&&t.focus(),this.config.onOpenChat?.(),J("gengage:qna:open-chat",{})}}function Ca(e){const t=[];for(const n of Object.values(e))if(n.type==="ProductCard"&&n.props){const a=n.props.product??n.props;typeof a.sku=="string"&&typeof a.name=="string"&&t.push(a)}return t}function Ea(e){const t=e.headers.get("Content-Type")??"";return t.includes("application/x-ndjson")||t.includes("text/event-stream")}async function Qg(e,t){const n=[],a={onEvent:i=>{const r=qe(i);!r||r.type!=="ui_spec"||n.push(...Ca(r.spec.elements))}};return t!==void 0&&(a.signal=t),await Ue(e,a),n}async function Xg(e,t,n){const a=Fe("similar_products",t),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(i.signal=n);const r=await fetch(a,i);if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);if(Ea(r))return Qg(r,n);const o=await r.text();if(!o)return[];try{return wr(JSON.parse(o))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function ep(e,t){const n=[];let a=null;const i={onEvent:r=>{const o=qe(r);if(o){if(o.type==="metadata"&&o.meta){const s=o.meta.group_name;if(typeof s=="string"){a={name:s,products:[]};const c=o.meta.highlight;typeof c=="string"&&(a.highlight=c),n.push(a)}}o.type==="ui_spec"&&a&&a.products.push(...Ca(o.spec.elements))}}};return t!==void 0&&(i.signal=t),await Ue(e,i),n}async function tp(e,t,n){const a=Fe("product_groupings",t),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)};n!==void 0&&(i.signal=n);const r=await fetch(a,i);if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);if(Ea(r))return ep(r,n);const o=await r.text();if(!o)return[];try{return xr(JSON.parse(o))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}function Sa(e){const{product:t,index:n,discountType:a,onClick:i,onAddToCart:r,renderCard:o}=e,s=e.i18n,c=e.pricing;if(e.renderCardElement){const h=e.renderCardElement(t,n);if(h)return h}if(o){const h=document.createElement("div");return h.className="gengage-simrel-card gengage-simrel-card--custom",h.innerHTML=ee(o(t,n)),h.addEventListener("click",b=>{b.target.closest(".gengage-simrel-atc")||b.target.closest(".gengage-chat-product-card-atc")||i(t)}),h}const l=document.createElement("article");l.className="gengage-simrel-card gengage-chat-product-card",l.setAttribute("role","listitem"),l.dataset.sku=t.sku;const d=document.createElement("div");if(d.className="gengage-simrel-card-image gengage-chat-product-card-img-wrapper",t.imageUrl&&ie(t.imageUrl)){const h=document.createElement("img");h.className="gengage-chat-product-card-img",h.src=t.imageUrl,h.alt=t.name,h.loading="lazy",ce(h),d.appendChild(h)}if(a==="badge"&&t.discountPercent&&t.discountPercent>0){const h=document.createElement("span");h.className="gengage-simrel-badge gengage-chat-product-card-discount-badge",h.textContent=`%${je(t.discountPercent)}`,d.appendChild(h)}l.appendChild(d);const g=document.createElement("div");if(g.className="gengage-simrel-card-info gengage-chat-product-card-body",t.brand){const h=document.createElement("div");h.className="gengage-simrel-card-brand gengage-chat-product-card-brand",h.textContent=t.brand,g.appendChild(h)}const p=document.createElement("div");if(p.className="gengage-simrel-card-name gengage-chat-product-card-name",p.textContent=t.name,g.appendChild(p),t.rating!=null&&t.rating>0){const h=document.createElement("div");if(h.className="gengage-simrel-card-rating gengage-chat-product-card-rating",h.appendChild(ht(t.rating)),t.reviewCount!=null){const b=document.createElement("span");b.className="gengage-simrel-card-review-count gengage-chat-product-card-review-count",b.textContent=` (${t.reviewCount})`,h.appendChild(b)}g.appendChild(h)}const u=document.createElement("div");if(u.className="gengage-simrel-card-price gengage-chat-product-card-price",t.originalPrice&&t.originalPrice!==t.price&&(a==="strike-through"||!a)){const h=document.createElement("span");h.className="gengage-simrel-card-price-original gengage-chat-product-card-original-price",h.textContent=V(t.originalPrice,c),u.appendChild(h)}if(t.price){const h=document.createElement("span");h.className="gengage-simrel-card-price-current gengage-chat-product-card-price-current",h.textContent=V(t.price,c),u.appendChild(h)}g.appendChild(u),l.appendChild(g);const f=document.createElement("button");if(f.className="gengage-simrel-card-cta gengage-chat-product-card-cta",f.type="button",f.textContent=s?.ctaLabel??"View",f.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),i(t)}),l.appendChild(f),t.inStock===!1){const h=document.createElement("div");h.className="gengage-simrel-card-oos",h.textContent=s?.outOfStockLabel??"Out of Stock",l.appendChild(h)}else if(t.cartCode){const h=t.cartCode,b=ft({compact:!0,label:s?.addToCartButton??"Add to Cart",onSubmit:_=>{r({sku:t.sku,quantity:_,cartCode:h})}});b.classList.add("gengage-simrel-atc"),l.appendChild(b)}return l.addEventListener("click",h=>{h.target.closest(".gengage-simrel-atc")||h.target.closest(".gengage-chat-product-card-atc")||h.target.closest(".gengage-chat-product-card-cta")||i(t)}),l}function Ta(e){const t=document.createElement("div");t.className="gengage-simrel-grid",t.setAttribute("role","list"),t.setAttribute("aria-label",e.i18n?.similarProductsAriaLabel??"Similar products"),e.columns&&t.style.setProperty("--gengage-simrel-columns",String(e.columns));for(let n=0;n<e.products.length;n++){const i={product:e.products[n],index:n,onClick:e.onClick,onAddToCart:e.onAddToCart};e.i18n!==void 0&&(i.i18n=e.i18n),e.discountType!==void 0&&(i.discountType=e.discountType),e.renderCard!==void 0&&(i.renderCard=e.renderCard),e.renderCardElement!==void 0&&(i.renderCardElement=e.renderCardElement);const r=Sa(i);t.appendChild(r)}if(e.products.length===0){const n=document.createElement("div");n.className="gengage-simrel-empty",n.textContent=e.i18n?.emptyStateMessage??"No similar products found.",t.appendChild(n)}return t}let np=0;function ap(e){const t=np++,n=document.createElement("div");if(n.className="gengage-simrel-groups",e.groups.length===0){const d=document.createElement("div");return d.className="gengage-simrel-empty",d.textContent=e.i18n?.emptyStateMessage??"No similar products found.",n.appendChild(d),n}const a=document.createElement("div");a.className="gengage-simrel-tabs",a.setAttribute("role","tablist");const i=[],r=[],o=d=>{const g={products:d.products,onClick:e.onClick,onAddToCart:e.onAddToCart};return e.i18n!==void 0&&(g.i18n=e.i18n),e.discountType!==void 0&&(g.discountType=e.discountType),e.renderCard!==void 0&&(g.renderCard=e.renderCard),e.renderCardElement!==void 0&&(g.renderCardElement=e.renderCardElement),g},s=d=>{for(let f=0;f<i.length;f++){const h=f===d;i[f].classList.toggle("gengage-simrel-tab--active",h),i[f].setAttribute("aria-selected",String(h)),i[f].tabIndex=h?0:-1}const g=e.groups[d],p=r[d];p.innerHTML="";const u=Ta(o(g));p.appendChild(u);for(let f=0;f<r.length;f++){const h=f===d;r[f].style.display=h?"":"none",r[f].tabIndex=h?0:-1}};for(let d=0;d<e.groups.length;d++){const g=e.groups[d],p=`gengage-simrel-tab-${t}-${d}`,u=`gengage-simrel-panel-${t}-${d}`,f=document.createElement("button");f.className="gengage-simrel-tab",f.type="button",f.id=p,f.textContent=g.name,f.setAttribute("role","tab"),f.setAttribute("aria-controls",u),f.setAttribute("aria-selected",String(d===0)),f.tabIndex=d===0?0:-1,d===0&&f.classList.add("gengage-simrel-tab--active"),f.addEventListener("click",()=>s(d)),f.addEventListener("keydown",b=>{let _=-1;b.key==="ArrowRight"||b.key==="ArrowDown"?_=(d+1)%e.groups.length:b.key==="ArrowLeft"||b.key==="ArrowUp"?_=(d-1+e.groups.length)%e.groups.length:b.key==="Home"?_=0:b.key==="End"&&(_=e.groups.length-1),_>=0&&(b.preventDefault(),s(_),i[_].focus())}),i.push(f),a.appendChild(f);const h=document.createElement("div");h.className="gengage-simrel-tab-panel",h.id=u,h.setAttribute("role","tabpanel"),h.setAttribute("aria-labelledby",p),h.tabIndex=d===0?0:-1,d!==0&&(h.style.display="none"),r.push(h)}n.appendChild(a);const c=r[0],l=Ta(o(e.groups[0]));c.appendChild(l);for(const d of r)n.appendChild(d);return n}function Ia(e){if(!e||typeof e!="object")return null;const t=e;if(typeof t.sku!="string"||typeof t.name!="string"||typeof t.url!="string")return null;const n={sku:t.sku,name:t.name,url:t.url},a=t.imageUrl;typeof a=="string"&&(n.imageUrl=a);const i=t.price;typeof i=="string"&&(n.price=i);const r=t.originalPrice;typeof r=="string"&&(n.originalPrice=r);const o=t.discountPercent;typeof o=="number"&&(n.discountPercent=o);const s=t.brand;typeof s=="string"&&(n.brand=s);const c=t.rating;typeof c=="number"&&(n.rating=c);const l=t.reviewCount;typeof l=="number"&&(n.reviewCount=l);const d=t.cartCode;typeof d=="string"&&(n.cartCode=d);const g=t.inStock;typeof g=="boolean"&&(n.inStock=g);const p=t.extras;return p!=null&&typeof p=="object"&&(n.extras=p),n}function ip(e){if(!e||typeof e!="object")return null;const t=e,n=t.title,a=t.type;if(typeof n!="string"||typeof a!="string")return null;const i={title:n,type:a};return t.payload!==void 0&&(i.payload=t.payload),i}const Aa={ProductGrid:({element:e,renderElement:t,context:n})=>{const a=document.createElement("div");a.className="gengage-simrel-grid",a.setAttribute("role","list");const i=e.props?.columns;typeof i=="number"&&Number.isFinite(i)&&i>0&&a.style.setProperty("--gengage-simrel-columns",String(i));for(const r of e.children??[]){const o=t(r);o&&a.appendChild(o)}if(a.children.length===0){const r=document.createElement("div");r.className="gengage-simrel-empty",r.textContent=n.i18n.emptyStateMessage,a.appendChild(r)}return a},ProductCard:({element:e,context:t})=>{const n=e.props?.product??e.props,a=Ia(n);if(!a)return null;const i=e.props?.index,r=typeof i=="number"&&Number.isFinite(i)?i:0,o=e.props?.discountType,s=o==="strike-through"||o==="badge"?o:t.discountType,c={product:a,index:r,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n};return s!==void 0&&(c.discountType=s),t.renderCard!==void 0&&(c.renderCard=t.renderCard),t.renderCardElement!==void 0&&(c.renderCardElement=t.renderCardElement),t.pricing!==void 0&&(c.pricing=t.pricing),Sa(c)},GroupTabs:({element:e,context:t})=>{const n=e.props?.groups;if(!Array.isArray(n))return null;const a=[];for(const r of n){if(!r||typeof r!="object")continue;const o=r;if(typeof o.name!="string")continue;const s=[];if(Array.isArray(o.products))for(const l of o.products){const d=Ia(l);d&&s.push(d)}const c={name:o.name,products:s};typeof o.highlight=="string"&&(c.highlight=o.highlight),a.push(c)}const i={groups:a,onClick:t.onClick,onAddToCart:t.onAddToCart,i18n:t.i18n};return t.discountType!==void 0&&(i.discountType=t.discountType),t.renderCard!==void 0&&(i.renderCard=t.renderCard),t.renderCardElement!==void 0&&(i.renderCardElement=t.renderCardElement),ap(i)},EmptyState:({element:e,context:t})=>{const n=document.createElement("div");n.className="gengage-simrel-empty";const a=e.props?.message;return n.textContent=typeof a=="string"?a:t.i18n.emptyStateMessage,n},AddToCartButton:({element:e,context:t})=>{const n=e.props?.sku,a=e.props?.cartCode;if(typeof n!="string"||typeof a!="string")return null;const i=document.createElement("button");i.className="gengage-simrel-atc gengage-chat-product-card-cta",i.type="button";const r=e.props?.label;return i.textContent=typeof r=="string"?r:t.i18n.addToCartButton,i.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),t.onAddToCart({sku:n,quantity:1,cartCode:a})}),i},QuickActions:({element:e,context:t})=>{const n=document.createElement("div");n.className="gengage-simrel-quick-actions";const a=e.props?.actions;if(!Array.isArray(a)||!t.onAction)return n;for(const i of a){if(!i||typeof i!="object")continue;const r=i,o=r.label,s=ip(r.action);if(typeof o!="string"||!s)continue;const c=document.createElement("button");c.className="gengage-simrel-quick-action",c.type="button",c.textContent=o,c.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation(),t.onAction?.(s)}),n.appendChild(c)}return n}},Na=({element:e,renderElement:t})=>{if(!e.children||e.children.length===0)return null;const n=document.createElement("div");for(const a of e.children){const i=t(a);i&&n.appendChild(i)}return n};function rp(){return{...Aa}}function op(e,t,n=Aa,a=Na){return at({spec:e,context:t,registry:n,containerClassName:"gengage-simrel-uispec",unknownRenderer:a})}const La={similarProductsAriaLabel:"Benzer ürünler",emptyStateMessage:"Benzer ürün bulunamadı.",addToCartButton:"Sepete Ekle",ctaLabel:"İncele",outOfStockLabel:"Stokta Yok",priceSuffix:" TL"},sp={similarProductsAriaLabel:"Similar products",emptyStateMessage:"No similar products found.",addToCartButton:"Add to cart",ctaLabel:"View",outOfStockLabel:"Out of Stock",priceSuffix:""};function cp(e){return e?e.toLowerCase().split("-")[0]??"tr":"tr"}function lp(e){return cp(e)==="en"?sp:La}class dp extends dt{constructor(){super(...arguments),this._abortController=null,this._contentEl=null,this._i18n=La}async onInit(t){this._i18n=this._resolveI18n(t),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this.root.appendChild(this._contentEl),this._lastSku=t.sku,await this._fetchAndRender(t.sku),this.isVisible=!0,bt("simrel")}onUpdate(t){const n=t.sku;!n||n===this._lastSku||(this._lastSku=n,this._fetchAndRender(n))}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(t){const n={sku:t.sku,name:t.name,url:t.url};if(t.imageUrl!==void 0&&(n.imageUrl=t.imageUrl),t.price!==void 0&&(n.price=t.price),t.originalPrice!==void 0&&(n.originalPrice=t.originalPrice),t.discountPercent!==void 0&&(n.discountPercent=t.discountPercent),t.brand!==void 0&&(n.brand=t.brand),t.rating!==void 0&&(n.rating=t.rating),t.reviewCount!==void 0&&(n.reviewCount=t.reviewCount),t.cartCode!==void 0&&(n.cartCode=t.cartCode),t.inStock!==void 0&&(n.inStock=t.inStock),this.config.onProductClick?.(n)===!1)return;mn(t.sku,t.name);const a=this.config.session?.sessionId??null;J("gengage:similar:product-click",{sku:t.sku,url:t.url,sessionId:a}),this.config.onProductNavigate?.(t.url,t.sku,a)}_handleAddToCart(t){bn(t.sku,t.quantity),this.config.onAddToCart?.(t),J("gengage:similar:add-to-cart",t),this.track(Xa(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:"TRY",line_items:t.quantity,sku:t.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}async _fetchAndRender(t){this._abort(),this._abortController=new AbortController;const n=this._abortController.signal;if(!this._contentEl)return;this._contentEl.innerHTML="",this._contentEl.style.display="";const a=document.createElement("div");a.className="gengage-simrel-loading";const i=document.createElement("div");i.className="gengage-simrel-spinner",a.appendChild(i),this._contentEl.appendChild(a);const r={middlewareUrl:this.config.middlewareUrl},o=crypto.randomUUID(),s=Date.now();this.track(rt(this.analyticsContext(),{endpoint:"similar_products",request_id:o,widget:"simrel"}));try{const c={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:t};this.config.domain!==void 0&&(c.domain=this.config.domain);const l=await Xg(c,r,n);if(!this._contentEl)return;if(this._contentEl.innerHTML="",l.length>0)try{const d=l.map(p=>p.sku),g=await tp({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:d},r,n);if(g.length>0&&this._contentEl){const p=this._buildGroupsSpec(g),u=this._renderUISpec(p);this._contentEl.appendChild(u),Ze("simrel"),this.track($e(this.analyticsContext(),{request_id:o,latency_ms:Date.now()-s,chunk_count:g.reduce((f,h)=>f+h.products.length,0),widget:"simrel"})),this.track(st(this.analyticsContext(),{message_count:g.reduce((f,h)=>f+h.products.length,0),history_ref:o,redaction_level:"none",widget:"simrel"}));return}}catch{}if(this._contentEl){const d=this._buildProductsSpec(l),g=this._renderUISpec(d);this._contentEl.appendChild(g)}l.length>0&&Ze("simrel"),this.track($e(this.analyticsContext(),{request_id:o,latency_ms:Date.now()-s,chunk_count:l.length,widget:"simrel"})),this.track(st(this.analyticsContext(),{message_count:l.length,history_ref:o,redaction_level:"none",widget:"simrel"}))}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;if(J("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:qt(this.config.locale)}),this.track(ot(this.analyticsContext(),{request_id:o,error_code:"FETCH_ERROR",error_message:c instanceof Error?c.message:String(c),widget:"simrel"})),this._contentEl){this._contentEl.innerHTML="";const l=document.createElement("div");l.className="gengage-simrel-error",l.style.cssText="text-align:center;padding:16px;color:#6b7280;font-size:13px;";const d=document.createElement("span");d.textContent=this.config.locale?.startsWith("tr")?"Benzer ürünler yüklenemedi.":"Could not load similar products.",l.appendChild(d);const g=document.createElement("button");g.textContent=this.config.locale?.startsWith("tr")?"Tekrar dene":"Try again",g.style.cssText="margin-left:8px;border:1px solid #d1d5db;background:#fff;border-radius:6px;padding:4px 12px;cursor:pointer;font-size:13px;color:#374151;",g.addEventListener("click",()=>{this._fetchAndRender(this.config.sku)}),l.appendChild(g),this._contentEl.appendChild(l)}}}_resolveI18n(t){return{...lp(t.locale),...t.i18n}}_resolveUISpecRegistry(){const t=rp();return it(t,this.config.renderer?.registry)}_buildRenderContext(){const t=this.config.renderCard,n={onClick:a=>this._handleProductClick(a),onAddToCart:a=>this._handleAddToCart(a),i18n:this._i18n};return this.config.discountType!==void 0&&(n.discountType=this.config.discountType),t!==void 0&&(n.renderCard=t),this.config.renderCardElement!==void 0&&(n.renderCardElement=this.config.renderCardElement),this.config.pricing!==void 0&&(n.pricing=this.config.pricing),n}_renderUISpec(t){const n=this._resolveUISpecRegistry(),a=this._buildRenderContext(),i=this.config.renderer?.unknownRenderer??Na,r=(c,l)=>op(c,l,n,i),o=this.config.renderer?.renderUISpec;return o?o(t,a,{registry:n,unknownRenderer:i,defaultRender:r}):r(t,a)}_buildProductsSpec(t){const n={},a=[];for(let i=0;i<t.length;i++){const r=t[i],o=`product-${i}`;a.push(o),n[o]={type:"ProductCard",props:{product:r,index:i,discountType:this.config.discountType}}}return n.root={type:"ProductGrid",props:{layout:"grid"},children:a},{root:"root",elements:n}}_buildGroupsSpec(t){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:t}}}}}}const Pt=le({enabled:ye().default(!0)}),gp=le({chat:ae().optional(),qna:ae().optional(),simrel:ae().optional()}),pp=le({}),up=Nt(["none","x-api-key-header","bearer-header","body-api-key"]),hp=le({mode:up.default("none"),key:ae().optional(),headerName:ae().optional(),bodyField:ae().default("api_key")}),fp=le({enabled:ye().default(!0),endpoint:ae().default("/analytics"),auth:hp.default({mode:"none",bodyField:"api_key"}),fireAndForget:ye().default(!0),useBeacon:ye().default(!0),keepaliveFetch:ye().default(!0),timeoutMs:da().int().positive().default(4e3),maxRetries:da().int().min(0).max(5).default(1)}),Pa="__gengageWidgetsInit",mp=le({idempotencyKey:ae().default(Pa),requireDomReady:ye().default(!0)}),bp=Nt(["log-and-ignore","throw","delegate"]),_p=le({unknownActionPolicy:bp.default("log-and-ignore"),allowScriptCall:ye().default(!1)});le({version:kg("1",{error:'version must be "1"'}),accountId:ae({error:"accountId must be a non-empty string"}).min(1,{error:"accountId must be a non-empty string"}),middlewareUrl:ae({error:'middlewareUrl must be a valid URL (e.g. "https://your-backend.example.com")'}).url({error:'middlewareUrl must be a valid URL (e.g. "https://your-backend.example.com")'}),locale:ae().optional(),widgets:le({chat:Pt.default({enabled:!0}),qna:Pt.default({enabled:!0}),simrel:Pt.default({enabled:!0})}),mounts:gp.default({}),transport:pp.default({}),analytics:fp.default({enabled:!0,endpoint:"/analytics",auth:{mode:"none",bodyField:"api_key"},fireAndForget:!0,useBeacon:!0,keepaliveFetch:!0,timeoutMs:4e3,maxRetries:1}),gtm:mp.default({idempotencyKey:"__gengageWidgetsInit",requireDomReady:!0}),actionHandling:_p.default({unknownActionPolicy:"log-and-ignore",allowScriptCall:!1})});const vp=`${Pa}_overlay_`,yp="#gengage-qna",wp="#gengage-simrel";function za(){const e=window;return e.__gengageOverlayRegistry||(e.__gengageOverlayRegistry={instances:{},pending:{}}),e.__gengageOverlayRegistry}function xp(e){const t={pageType:e.pageContext?.pageType??(e.sku!==void 0?"pdp":"other")},n=e.pageContext;return n?.sku!==void 0&&(t.sku=n.sku),n?.price!==void 0&&(t.price=n.price),n?.categoryTree!==void 0&&(t.categoryTree=n.categoryTree),n?.url!==void 0&&(t.url=n.url),n?.extra!==void 0&&(t.extra=n.extra),e.sku!==void 0&&(t.sku=e.sku),t}function kp(e,t){const n={...e,...t,pageType:t.pageType??e.pageType};return t.sku===void 0&&e.sku!==void 0&&(n.sku=e.sku),n}function Ma(e){return e instanceof HTMLElement||document.querySelector(e)?e:null}function Ra(e){return e.idempotencyKey??`${vp}${e.accountId}`}class Cp{constructor(t,n){this.options=t,this.onDestroy=n,this._chat=null,this._qna=null,this._simrel=null,this._analyticsClient=null,this._offQnaWire=null,this._destroyed=!1,this._queue=Promise.resolve(),this._warnedQnaMountMissing=!1,this._warnedSimRelMountMissing=!1,this.idempotencyKey=Ra(t),this.session=$t(t.session),this._pageContext=xp(t)}get chat(){return this._chat}get qna(){return this._qna}get simrel(){return this._simrel}get analyticsClient(){return this._analyticsClient}async init(){window.gengage||(window.gengage={}),window.gengage.sessionId=this.session.sessionId,window.gengage.pageContext=this._pageContext,await this._initChat(),this.options.wireQnaToChat!==!1&&(this._offQnaWire=li()),await this._syncPdpWidgets(),window.gengage.overlay=this}openChat(t){this._chat?.open(t)}closeChat(){this._chat?.close()}async updateContext(t){this._destroyed||await this._enqueue(async()=>{this._pageContext=kp(this._pageContext,t),window.gengage||(window.gengage={}),window.gengage.pageContext=this._pageContext,this._chat?.update(t),this._qna?.update(t),this._simrel?.update(t),await this._syncPdpWidgets()})}async updateSku(t,n="pdp"){await this.updateContext({sku:t,pageType:n})}destroy(){this._destroyed||(this._destroyed=!0,this._offQnaWire?.(),this._offQnaWire=null,this._chat?.destroy(),this._qna?.destroy(),this._simrel?.destroy(),this._chat=null,this._qna=null,this._simrel=null,window.gengage?.overlay===this&&delete window.gengage.overlay,this.onDestroy())}async _initChat(){if(this.options.chat?.enabled===!1)return;const t=this.options.middlewareUrl,n={accountId:this.options.accountId,middlewareUrl:t,session:this.session,pageContext:this._pageContext,variant:this.options.chat?.variant??"floating"};this.options.theme!==void 0&&(n.theme=this.options.theme),this.options.locale!==void 0&&(n.locale=this.options.locale),this.options.pricing!==void 0&&(n.pricing=this.options.pricing),this.options.chat?.mountTarget!==void 0&&(n.mountTarget=this.options.chat.mountTarget),this.options.chat?.launcherImageUrl!==void 0?n.launcherImageUrl=this.options.chat.launcherImageUrl:this.options.chat?.launcherSvg!==void 0&&(n.launcherSvg=this.options.chat.launcherSvg),this.options.chat?.headerTitle!==void 0&&(n.headerTitle=this.options.chat.headerTitle),this.options.chat?.headerAvatarUrl!==void 0&&(n.headerAvatarUrl=this.options.chat.headerAvatarUrl),this.options.chat?.headerBadge!==void 0&&(n.headerBadge=this.options.chat.headerBadge),this.options.chat?.headerCartUrl!==void 0&&(n.headerCartUrl=this.options.chat.headerCartUrl),this.options.chat?.headerFavoritesToggle!==void 0&&(n.headerFavoritesToggle=this.options.chat.headerFavoritesToggle),this.options.chat?.hideMobileLauncher!==void 0&&(n.hideMobileLauncher=this.options.chat.hideMobileLauncher),this.options.chat?.mobileBreakpoint!==void 0&&(n.mobileBreakpoint=this.options.chat.mobileBreakpoint),this.options.chat?.mobileInitialState!==void 0&&(n.mobileInitialState=this.options.chat.mobileInitialState),this.options.chat?.i18n!==void 0&&(n.i18n=this.options.chat.i18n),this.options.chat?.actionHandling!==void 0&&(n.actionHandling=this.options.chat.actionHandling),this.options.chat?.renderer!==void 0&&(n.renderer=this.options.chat.renderer),this.options.onScriptCall!==void 0&&(n.onScriptCall=this.options.onScriptCall),this._chat=new jg,await this._chat.init(n)}async _syncPdpWidgets(){if(this._destroyed)return;const t=this._pageContext.sku;if(!(this._pageContext.pageType==="pdp"&&t!==void 0&&t.length>0)){this._destroyPdpWidgets();return}const a=this.options.middlewareUrl;if(this.options.qna?.enabled!==!1){const i=this.options.qna?.mountTarget??yp,r=Ma(i);if(r)if(this._warnedQnaMountMissing=!1,this._qna)this._qna.show(),this._qna.update({pageType:"pdp",sku:t});else{const o=new Yg,s={accountId:this.options.accountId,middlewareUrl:a,session:this.session,pageContext:{pageType:"pdp",sku:t},mountTarget:r};this.options.theme!==void 0&&(s.theme=this.options.theme),this.options.qna?.ctaText!==void 0&&(s.ctaText=this.options.qna.ctaText),this.options.qna?.hideButtonRowCta!==void 0&&(s.hideButtonRowCta=this.options.qna.hideButtonRowCta),this.options.qna?.inputPlaceholder!==void 0&&(s.inputPlaceholder=this.options.qna.inputPlaceholder),this.options.qna?.i18n!==void 0&&(s.i18n=this.options.qna.i18n),this.options.qna?.renderer!==void 0&&(s.renderer=this.options.qna.renderer),await o.init(s),this._qna=o}else this._qna?.destroy(),this._qna=null,this._warnedQnaMountMissing||(console.warn(`[gengage] QNA mount target not found: ${i}`),this._warnedQnaMountMissing=!0)}else this._qna?.destroy(),this._qna=null;if(this.options.simrel?.enabled!==!1){const i=this.options.simrel?.mountTarget??wp,r=Ma(i);if(r)if(this._warnedSimRelMountMissing=!1,this._simrel)this._simrel.show(),this._simrel.update({pageType:"pdp",sku:t});else{const o=new dp,s={accountId:this.options.accountId,middlewareUrl:a,session:this.session,sku:t,mountTarget:r};this.options.theme!==void 0&&(s.theme=this.options.theme),this.options.pricing!==void 0&&(s.pricing=this.options.pricing),this.options.simrel?.discountType!==void 0&&(s.discountType=this.options.simrel.discountType),this.options.simrel?.renderCardElement!==void 0&&(s.renderCardElement=this.options.simrel.renderCardElement),this.options.simrel?.renderer!==void 0&&(s.renderer=this.options.simrel.renderer),this.options.onAddToCart!==void 0&&(s.onAddToCart=this.options.onAddToCart),this.options.onProductNavigate!==void 0?s.onProductNavigate=this.options.onProductNavigate:s.onProductNavigate=(c,l,d)=>{Y(c)&&(this._chat?.saveSession(d??this.session.sessionId,l),window.location.href=c)},await o.init(s),this._simrel=o}else this._simrel?.destroy(),this._simrel=null,this._warnedSimRelMountMissing||(console.warn(`[gengage] SimRel mount target not found: ${i}`),this._warnedSimRelMountMissing=!0)}else this._simrel?.destroy(),this._simrel=null}_destroyPdpWidgets(){this._qna?.destroy(),this._simrel?.destroy(),this._qna=null,this._simrel=null}_enqueue(t){const n=this._queue.then(t);return this._queue=n.catch(a=>{}),n}}async function Ep(e){const t=Ra(e),n=za(),a=n.instances[t];if(a)return a;const i=n.pending[t];if(i)return i;const r=new Cp(e,()=>{const s=za();delete s.instances[t],delete s.pending[t]}),o=r.init().then(()=>(n.instances[t]=r,delete n.pending[t],r)).catch(s=>{throw delete n.pending[t],s});return n.pending[t]=o,o}const Oa=["gengage:chat:open","gengage:chat:close","gengage:chat:ready","gengage:chat:add-to-cart","gengage:qna:action","gengage:qna:open-chat","gengage:similar:product-click","gengage:similar:add-to-cart","gengage:global:error","gengage:context:update"],Sp=32,$a="#gengage-qna",Ba="#gengage-simrel";function Lp(e){return e}function Tp(e){let t=e;if(typeof e=="string"){const r=e.trim();if(r.length===0)return null;if(!r.startsWith("{")&&!r.startsWith("["))return{type:r};try{t=JSON.parse(r)}catch{return null}}if(!t||typeof t!="object")return null;const n=t,a=[n.type,n.command,n.action,n.event].find(r=>typeof r=="string"&&r.length>0);if(!a)return null;let i=n.payload;if(i===void 0&&"data"in n&&(i=n.data),a==="setSession"&&i===void 0){const r={};typeof n.sessionId=="string"&&(r.sessionId=n.sessionId),typeof n.userId=="string"&&(r.userId=n.userId),(r.sessionId!==void 0||r.userId!==void 0)&&(i=r)}return i===void 0?{type:a}:{type:a,payload:i}}function Ip(e){if(typeof e=="string"&&e.length>0)return{sku:e};if(e&&typeof e=="object"&&"sku"in e){const t=e.sku;if(typeof t=="string"&&t.length>0){const n=e.pageType;return n!==void 0?{sku:t,pageType:n}:{sku:t}}}return null}function zt(e,t){return t instanceof HTMLElement?!0:typeof t!="string"?!1:e.document.querySelector(t)!==null}function Da(e,t,n){if(t instanceof HTMLElement||zt(e,t)||typeof t!="string")return t;if(t.startsWith("#")){const r=t.slice(1);if(r.length>0){const o=e.document.getElementById(r);if(o)return o;const s=e.document.createElement("div");return s.id=r,e.document.body.appendChild(s),s}}const a=e.document.getElementById(n);if(a)return a;const i=e.document.createElement("div");return i.id=n,e.document.body.appendChild(i),i}function Ua(e,t){const n=e.webkit?.messageHandlers?.[t];return n&&typeof n.postMessage=="function"?n.postMessage.bind(n):null}function nt(e,t){const n=e[t];return n&&typeof n=="object"&&typeof n.postMessage=="function"?n:null}function qa(e={}){const t=e.win??window,n=e.iosHandlerName??"gengage",a=e.androidInterfaceName??"GengageNative",i=e.reactNativeInterfaceName??"ReactNativeWebView";return Ua(t,n)?"ios":nt(t,a)?"android":nt(t,i)?"react-native":"browser"}function Fa(e,t={}){const n=t.win??window;if(e.sessionId!==void 0){n.__gengageSessionId=e.sessionId,n.gengage||(n.gengage={}),n.gengage.sessionId=e.sessionId;try{n.sessionStorage.setItem("gengage_session_id",e.sessionId)}catch{}}if(e.userId!==void 0){n.gengage||(n.gengage={});const a=n.gengage,i=a.session??{};i.userId=e.userId,a.session=i}}function ja(e={}){const t=e.win??window,n=t;if(n.gengageNative)return n.gengageNative;const a=e.iosHandlerName??"gengage",i=e.androidInterfaceName??"GengageNative",r=e.reactNativeInterfaceName??"ReactNativeWebView",o=e.trackedEvents??[...Oa],s=qa({win:t,iosHandlerName:a,androidInterfaceName:i,reactNativeInterfaceName:r});let c=t.gengage?.overlay??null;const l=[],d=(_,k)=>{const E=k===void 0?{type:_}:{type:_,payload:k};if(s==="ios"){Ua(t,a)?.(E);return}if(s==="android"){nt(t,i)?.postMessage(JSON.stringify(E));return}if(s==="react-native"){nt(t,r)?.postMessage(JSON.stringify(E));return}},g=_=>{const k=_.detail;!k||typeof k.namespace!="string"||typeof k.type!="string"||d("bridge_message",{namespace:k.namespace,type:k.type,payload:k.payload})};t.addEventListener("gengage:bridge:message",g);const p=o.map(_=>{const k=E=>{const w=E.detail;d("widget_event",{event:_,detail:w})};return t.addEventListener(_,k),{event:_,handler:k}}),u=_=>{l.length>=Sp&&l.shift(),l.push(_)},f=()=>{if(!c||l.length===0)return;const _=l.splice(0,l.length);for(const k of _)h(k)},h=_=>{const k=Tp(_);if(!k||typeof k.type!="string"){console.warn("[gengage:native-bridge] Invalid message:",_);return}const E=k.type,w=k.payload;switch(E){case"openChat":{c?c.openChat(w&&typeof w=="object"?w:w==="half"||w==="full"?{state:w}:void 0):u(k);return}case"closeChat":{c?c.closeChat():u(k);return}case"updateContext":{c&&w&&typeof w=="object"?c.updateContext(w):c?console.warn("[gengage:native-bridge] updateContext: missing payload"):u(k);return}case"updateSku":{const T=Ip(w);if(c&&T){c.updateSku(T.sku,T.pageType);return}c?console.warn("[gengage:native-bridge] updateSku: missing sku"):u(k);return}case"setSession":{w&&typeof w=="object"&&Fa(w,{win:t});return}case"destroy":{c?.destroy();return}default:t.postMessage({gengage:"native",type:E,payload:w},t.location.origin),e.logUnhandled&&console.warn("[gengage:native-bridge] Unhandled inbound type forwarded:",E)}},b={env:s,sendToNative:d,receive:h,setController(_){c=_,f()},destroy(){t.removeEventListener("gengage:bridge:message",g);for(const _ of p)t.removeEventListener(_.event,_.handler);l.splice(0,l.length),t.gengageNative===b&&delete t.gengageNative}};return n.gengageNative=b,b}async function Ap(e){const{nativeBridge:t,emitReadyEvent:n=!0,...a}=e,i=ja(t),r={...a};r.onAddToCart||(r.onAddToCart=l=>{i.sendToNative("addToCart",{sku:l.sku,quantity:l.quantity,cartCode:l.cartCode})}),r.onProductNavigate||(r.onProductNavigate=(l,d,g)=>{i.sendToNative("productNavigate",{url:l,sku:d,sessionId:g})});const o=r.qna?.enabled===!0||r.qna?.mountTarget!==void 0;if(r.qna?.enabled!==!1)if(o){const l=Da(window,r.qna?.mountTarget??$a,"gengage-qna");r.qna={...r.qna,enabled:!0,mountTarget:l}}else zt(window,$a)||(r.qna={enabled:!1});const s=r.simrel?.enabled===!0||r.simrel?.mountTarget!==void 0;if(r.simrel?.enabled!==!1)if(s){const l=Da(window,r.simrel?.mountTarget??Ba,"gengage-simrel");r.simrel={...r.simrel,enabled:!0,mountTarget:l}}else zt(window,Ba)||(r.simrel={enabled:!1});const c=await Ep(r);return i.setController(c),n&&i.sendToNative("ready",{sessionId:c.session.sessionId,widgets:{chat:c.chat!==null,qna:c.qna!==null,simrel:c.simrel!==null}}),{controller:c,bridge:i,destroy(){c.destroy(),i.destroy()}}}we.DEFAULT_NATIVE_TRACKED_EVENTS=Oa,we.applyNativeSession=Fa,we.createNativeWebViewBridge=ja,we.detectNativeEnvironment=qa,we.initNativeOverlayWidgets=Ap,Object.defineProperty(we,Symbol.toStringTag,{value:"Module"})})(this.Gengage=this.Gengage||{});
97
97
  //# sourceMappingURL=native.iife.js.map