@molin.ai/shop-ai 0.8.12 → 0.8.13
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.
|
@@ -515,7 +515,7 @@ var su=Object.defineProperty;var so=t=>{throw TypeError(t)};var ou=(t,e,r)=>e in
|
|
|
515
515
|
</button> -->
|
|
516
516
|
</div>
|
|
517
517
|
</div>
|
|
518
|
-
`}};P=new WeakSet,Ka=function(){if(!this.product?.url){this._isValidUrl=!1;return}try{let r=new URL(this.product.url);this._isValidUrl=r.protocol==="http:"||r.protocol==="https:"}catch{this._isValidUrl=!1}},Gn=function(r){r.preventDefault(),!(!this.product?.url||!this._isValidUrl)&&window.open(this.product.url,"_blank")},Ya=function(r){!this.product?.url||!this._isValidUrl||(window.open(this.product.url,"_blank"),this.dispatchEvent(new Kn.AddToCartEvent(this.product)))},Jn=function(r,n){l(this,P,Xn)&&As({from:r,to:n,duration:300,onUpdate:i=>{l(this,P,Xn)&&(l(this,P,Xn).style.transform=`translateX(${i}%)`)}})},Qa=function(){if(!this.product?.images?.length)return;let r=this._currentImageIndex,n=(r+1)%this.product.images.length,i=-(r*100),s=-(n*100);g(this,P,Jn).call(this,i,s),this._currentImageIndex=n},el=function(){if(!this.product?.images?.length)return;let r=this._currentImageIndex,n=(r-1+this.product.images.length)%this.product.images.length,i=-(r*100),s=-(n*100);g(this,P,Jn).call(this,i,s),this._currentImageIndex=n},tl=function(r){if(!this.product?.images?.length)return;let n=this._currentImageIndex,i=Math.max(0,Math.min(r,this.product.images.length-1)),s=-(n*100),o=-(i*100);g(this,P,Jn).call(this,s,o),this._currentImageIndex=i},Xn=function(){return this.renderRoot.querySelector(".image-slider")},w(Kn,"properties",{product:{type:Object},labels:{type:Object},_currentImageIndex:{type:Number,state:!0},_isValidUrl:{type:Boolean,state:!0}});var $r=Kn,Ms;$r.AddToCartEvent=(Ms=class extends CustomEvent{constructor(e,r={}){super($r.AddToCartEvent.type,{detail:{product:e},...r})}},w(Ms,"type","mw-product-card:add-to-cart"),Ms);customElements.get("mw-product-card")||customElements.define("mw-product-card",$r);var Er,ne,xe,Sr,Is,Yn=class{constructor(e,r){d(this,Sr);d(this,Er);d(this,ne);d(this,xe);if(!e)throw new Error("host is required");if(!r)throw new Error("config is required");m(this,Er,e),l(this,Er).addController(this),m(this,ne,r)}connect(e){m(this,ne,e),m(this,xe,g(this,Sr,Is).call(this))}hostConnected(){setTimeout(()=>{m(this,xe,g(this,Sr,Is).call(this))},0)}hostDisconnected(){l(this,xe)?.close(1e3,"lit_host_disconnected"),m(this,xe,void 0)}send(e){l(this,xe)?.send(e)}close(e,r){l(this,xe)?.close(e,r)}get isConnected(){return l(this,xe)?.readyState===WebSocket.OPEN}};Er=new WeakMap,ne=new WeakMap,xe=new WeakMap,Sr=new WeakSet,Is=function(){let e=new WebSocket(l(this,ne).url());return l(this,ne).onClose&&(e.onclose=l(this,ne).onClose),l(this,ne).onOpen&&(e.onopen=l(this,ne).onOpen),l(this,ne).onError&&(e.onerror=l(this,ne).onError),l(this,ne).onMessage&&(e.onmessage=l(this,ne).onMessage),e};var rl="664df22d-d461-42d6-801e-f70247e2cd7c",G,J,ge,Dt,Rt,X,Ve,nl,il,sl,ol,Qn=class{constructor(e,r){d(this,X);d(this,G);d(this,J);d(this,ge);w(this,"isStreaming",!1);w(this,"typingIndicator");w(this,"ranOutOfCredits",!1);w(this,"messages",[]);w(this,"conversationId","");d(this,Dt,0);d(this,Rt);w(this,"isLiveMode",!1);m(this,G,e),m(this,J,r),m(this,ge,this.initWS()),e.addController(this)}sendUserInput(e,{xUserData:r,xCustomInstructions:n,role:i="user",expectStreaming:s=!1}={}){return g(this,X,Ve).call(this,{type:"USER_INPUT",value:e,role:i,xUserData:r,xCustomInstructions:n},{expectStreaming:s})}sendUserCancel(){return g(this,X,Ve).call(this,{type:"USER_CANCEL"})}sendUserTypingStart(){return g(this,X,Ve).call(this,{type:"USER_TYPING_START"})}sendUserTypingStop(){return g(this,X,Ve).call(this,{type:"USER_TYPING_STOP"})}sendUserMeta(e){return g(this,X,Ve).call(this,{type:"USER_META",metadata:e})}reloadConfig(){g(this,X,Ve).call(this,{type:"RELOAD_CONFIG"})}close(){l(this,ge).close(1e3,"closed by user")}retry(){clearTimeout(l(this,Rt)),m(this,Rt,setTimeout(()=>{l(this,J).onReconnect?.(),m(this,ge,this.initWS())},1e3*l(this,Dt))),oo(this,Dt)._++}initWS(){return new Yn(l(this,G),{url:()=>l(this,J).url(this.conversationId,{}),onOpen:e=>g(this,X,nl).call(this,e),onMessage:e=>g(this,X,il).call(this,JSON.parse(e.data)),onError:e=>g(this,X,sl).call(this,e),onClose:e=>g(this,X,ol).call(this,e)})}hostConnected(){this.conversationId=l(this,J).restoreConversationState?.()?.conversationId||"",this.messages=l(this,J).restoreConversationState?.()?.messages||[]}reset(){g(this,X,Ve).call(this,{type:"NEW_CHAT"}),l(this,J).onReset?.(),this.isStreaming=!1,this.typingIndicator=void 0,this.ranOutOfCredits=!1,this.messages=[],this.conversationId="",this.isLiveMode=!1,l(this,G).requestUpdate()}hostDisconnected(){clearTimeout(l(this,Rt))}reconnectSocket(){l(this,ge).close(1e3,"destroy"),m(this,ge,this.initWS())}get lastMsg(){if(this.messages.length>0)return this.messages[this.messages.length-1]}};G=new WeakMap,J=new WeakMap,ge=new WeakMap,Dt=new WeakMap,Rt=new WeakMap,X=new WeakSet,Ve=function(e,{expectStreaming:r=!1}={}){return l(this,ge).isConnected?(r&&!this.isLiveMode&&(this.isStreaming=!0,l(this,G).requestUpdate()),l(this,ge).send(JSON.stringify(e)),!0):(console.warn("WebSocket is not connected, message not sent - reconnecting now",e),this.retry(),!1)},nl=function(e){m(this,Dt,0)},il=function(e){switch(e.type){case"NEW_MESSAGE":{this.messages=[...this.messages,{...e.message,streaming:!0}].filter((r,n,i)=>n===i.findIndex(s=>s.id===r.id)),this.typingIndicator=void 0,l(this,G).requestUpdate(),l(this,J).onNewMessage?.(e.message);break}case"APPEND_MESSAGE":{let r=this.messages.find(n=>n.id===e.message.id);if(r){switch(e.message.content_type){case"text":{let{part:n,delta:i,position:s}=e.message;r.content=r.content.slice(0,s)+i,r.parts||=[],r.parts[n]={text:r.parts[n]&&"text"in r.parts[n]?(r.parts[n].text||"").slice(0,s)+i:i};break}case"html":{let{part:n,delta:i,position:s}=e.message;r.parts||=[],r.parts[n]={html:r.parts[n]&&"html"in r.parts[n]?(r.parts[n].html||"").slice(0,s)+i:i};break}case"data":{let{part:n}=e.message;r.parts||=[],r.parts[n]={tag:e.message.tag,data:r.parts[n]&&"data"in r.parts[n]?Object.assign(r.parts[n].data||{},e.message.data):e.message.data};break}}e.metadata&&(r.metadata=e.metadata),l(this,J).onMessageAppend?.(e),l(this,G).requestUpdate()}else throw new Error(`Message with id ${e.message.id} not found`);break}case"MESSAGE_DONE":{let r=this.messages.find(n=>n.id===e.message.id);if(r)Object.assign(r,e.message),r.streaming=!1;else throw new Error(`Message with id ${e.message.id} not found`);this.isStreaming=!1,l(this,G).requestUpdate(),l(this,J).onMessageDone?.(e,r),l(this,J).persistConversationState?.(this.conversationId,this.messages);break}case"MESSAGE_CANCEL":{this.isStreaming=!1,this.typingIndicator=void 0,l(this,G).requestUpdate();break}case"ERROR":{l(this,J).onMessageError?.(e);break}case"CONNECTED":{this.conversationId=e.conversationId,this.messages=e.messages,l(this,J).onConnect?.(e.conversationId),l(this,J).persistConversationState?.(this.conversationId,this.messages),this.isLiveMode=e.metadata?.isLiveMode,l(this,G).requestUpdate();break}case"TYPING_START":{e.role==="assistant"&&(this.isStreaming=!0),this.typingIndicator={role:e.role,metadata:e.metadata},l(this,G).requestUpdate();break}case"TYPING_STOP":{this.typingIndicator=void 0,l(this,G).requestUpdate();break}case"RAN_OUT_OF_CREDITS":{this.messages.some(r=>r.id===rl)||this.messages.push({id:rl,role:"assistant",content:"Sorry, I've run out of credits. Please contact the shop directly.",timestamp:Date.now()}),this.ranOutOfCredits=!0,l(this,G).requestUpdate();break}case"RECONNECT":{this.reconnectSocket(),l(this,G).requestUpdate();break}default:console.warn(`Unknown message type: ${JSON.stringify(e)}`)}},sl=function(e){console.error("onError",e),l(this,J).onError?.(e)},ol=function(e){l(this,G).isConnected&&!l(this,ge).isConnected&&e.reason==="reconnect"&&this.retry(),this.isStreaming=!1,this.typingIndicator=void 0,l(this,G).requestUpdate(),l(this,J).onClose?.()};function Pt(t){return Array.isArray(t)?t:t?[t]:[]}function al(t,e){let r=new Map;for(let n of t){let i=e(n);r.has(i)||r.set(i,[]),(r.get(i)||[]).push(n)}return r}var _r=class extends Ct{constructor(e){if(super(e),this.it=E,e.type!==En.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===E||e==null)return this._t=void 0,this.it=e;if(e===he)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;let r=[e];return r.raw=r,this._t={_$litType$:this.constructor.resultType,strings:r,values:[]}}};_r.directiveName="unsafeHTML",_r.resultType=1;var ll=Sn(_r);var Ts;function Os(t){return{lang:t?.lang??Ts?.lang,message:t?.message,abortEarly:t?.abortEarly??Ts?.abortEarly,abortPipeEarly:t?.abortPipeEarly??Ts?.abortPipeEarly}}var zc;function Wc(t){return zc?.get(t)}var Zc;function Gc(t){return Zc?.get(t)}var Jc;function Xc(t,e){return Jc?.get(t)?.get(e)}function cl(t){let e=typeof t;return e==="string"?`"${t}"`:e==="number"||e==="bigint"||e==="boolean"?`${t}`:e==="object"||e==="function"?(t&&Object.getPrototypeOf(t)?.constructor?.name)??"null":e}function oe(t,e,r,n,i){let s=i&&"input"in i?i.input:r.value,o=i?.expected??t.expects??null,u=i?.received??cl(s),a={kind:t.kind,type:t.type,input:s,expected:o,received:u,message:`Invalid ${e}: ${o?`Expected ${o} but r`:"R"}eceived ${u}`,requirement:t.requirement,path:i?.path,issues:i?.issues,lang:n.lang,abortEarly:n.abortEarly,abortPipeEarly:n.abortPipeEarly},c=t.kind==="schema",f=i?.message??t.message??Xc(t.reference,a.lang)??(c?Gc(a.lang):null)??n.message??Wc(a.lang);f&&(a.message=typeof f=="function"?f(a):f),c&&(r.typed=!1),r.issues?r.issues.push(a):r.issues=[a]}function ae(t){return{version:1,vendor:"valibot",validate(e){return t["~run"]({value:e},Os())}}}function Kc(t,e){return Object.hasOwn(t,e)&&e!=="__proto__"&&e!=="prototype"&&e!=="constructor"}function pl(t,e){let r=[...new Set(t)];return r.length>1?`(${r.join(` ${e} `)})`:r[0]??"never"}var Yc=class extends Error{constructor(t){super(t[0].message),this.name="ValiError",this.issues=t}};function js(t,e){return{kind:"validation",type:"max_length",reference:js,async:!1,expects:`<=${t}`,requirement:t,message:e,"~run"(r,n){return r.typed&&r.value.length>this.requirement&&oe(this,"length",r,n,{received:`${r.value.length}`}),r}}}function Ls(t,e){return{kind:"validation",type:"min_length",reference:Ls,async:!1,expects:`>=${t}`,requirement:t,message:e,"~run"(r,n){return r.typed&&r.value.length<this.requirement&&oe(this,"length",r,n,{received:`${r.value.length}`}),r}}}function Qc(t,e,r){return typeof t.fallback=="function"?t.fallback(e,r):t.fallback}function fl(t,e,r){return typeof t.default=="function"?t.default(e,r):t.default}function Ds(){return{kind:"schema",type:"any",reference:Ds,expects:"any",async:!1,get"~standard"(){return ae(this)},"~run"(t){return t.typed=!0,t}}}function Ut(t,e){return{kind:"schema",type:"array",reference:Ut,expects:"Array",async:!1,item:t,message:e,get"~standard"(){return ae(this)},"~run"(r,n){let i=r.value;if(Array.isArray(i)){r.typed=!0,r.value=[];for(let s=0;s<i.length;s++){let o=i[s],u=this.item["~run"]({value:o},n);if(u.issues){let a={type:"array",origin:"value",input:i,key:s,value:o};for(let c of u.issues)c.path?c.path.unshift(a):c.path=[a],r.issues?.push(c);if(r.issues||(r.issues=u.issues),n.abortEarly){r.typed=!1;break}}u.typed||(r.typed=!1),r.value.push(u.value)}}else oe(this,"type",r,n);return r}}}function Rs(t){return{kind:"schema",type:"boolean",reference:Rs,expects:"boolean",async:!1,message:t,get"~standard"(){return ae(this)},"~run"(e,r){return typeof e.value=="boolean"?e.typed=!0:oe(this,"type",e,r),e}}}function Ps(t){return{kind:"schema",type:"null",reference:Ps,expects:"null",async:!1,message:t,get"~standard"(){return ae(this)},"~run"(e,r){return e.value===null?e.typed=!0:oe(this,"type",e,r),e}}}function Ar(t){return{kind:"schema",type:"number",reference:Ar,expects:"number",async:!1,message:t,get"~standard"(){return ae(this)},"~run"(e,r){return typeof e.value=="number"&&!isNaN(e.value)?e.typed=!0:oe(this,"type",e,r),e}}}function Ie(t,e){return{kind:"schema",type:"object",reference:Ie,expects:"Object",async:!1,entries:t,message:e,get"~standard"(){return ae(this)},"~run"(r,n){let i=r.value;if(i&&typeof i=="object"){r.typed=!0,r.value={};for(let s in this.entries){let o=this.entries[s];if(s in i||(o.type==="exact_optional"||o.type==="optional"||o.type==="nullish")&&o.default!==void 0){let u=s in i?i[s]:fl(o),a=o["~run"]({value:u},n);if(a.issues){let c={type:"object",origin:"value",input:i,key:s,value:u};for(let f of a.issues)f.path?f.path.unshift(c):f.path=[c],r.issues?.push(f);if(r.issues||(r.issues=a.issues),n.abortEarly){r.typed=!1;break}}a.typed||(r.typed=!1),r.value[s]=a.value}else if(o.fallback!==void 0)r.value[s]=Qc(o);else if(o.type!=="exact_optional"&&o.type!=="optional"&&o.type!=="nullish"&&(oe(this,"key",r,n,{input:void 0,expected:`"${s}"`,path:[{type:"object",origin:"key",input:i,key:s,value:i[s]}]}),n.abortEarly))break}}else oe(this,"type",r,n);return r}}}function Vt(t,e){return{kind:"schema",type:"optional",reference:Vt,expects:`(${t.expects} | undefined)`,async:!1,wrapped:t,default:e,get"~standard"(){return ae(this)},"~run"(r,n){return r.value===void 0&&(this.default!==void 0&&(r.value=fl(this,r,n)),r.value===void 0)?(r.typed=!0,r):this.wrapped["~run"](r,n)}}}function Us(t,e){return{kind:"schema",type:"picklist",reference:Us,expects:pl(t.map(cl),"|"),async:!1,options:t,message:e,get"~standard"(){return ae(this)},"~run"(r,n){return this.options.includes(r.value)?r.typed=!0:oe(this,"type",r,n),r}}}function Mr(t,e,r){return{kind:"schema",type:"record",reference:Mr,expects:"Object",async:!1,key:t,value:e,message:r,get"~standard"(){return ae(this)},"~run"(n,i){let s=n.value;if(s&&typeof s=="object"){n.typed=!0,n.value={};for(let o in s)if(Kc(s,o)){let u=s[o],a=this.key["~run"]({value:o},i);if(a.issues){let f={type:"object",origin:"key",input:s,key:o,value:u};for(let p of a.issues)p.path=[f],n.issues?.push(p);if(n.issues||(n.issues=a.issues),i.abortEarly){n.typed=!1;break}}let c=this.value["~run"]({value:u},i);if(c.issues){let f={type:"object",origin:"value",input:s,key:o,value:u};for(let p of c.issues)p.path?p.path.unshift(f):p.path=[f],n.issues?.push(p);if(n.issues||(n.issues=c.issues),i.abortEarly){n.typed=!1;break}}(!a.typed||!c.typed)&&(n.typed=!1),a.typed&&(n.value[a.value]=c.value)}}else oe(this,"type",n,i);return n}}}function q(t){return{kind:"schema",type:"string",reference:q,expects:"string",async:!1,message:t,get"~standard"(){return ae(this)},"~run"(e,r){return typeof e.value=="string"?e.typed=!0:oe(this,"type",e,r),e}}}function ul(t){let e;if(t)for(let r of t)e?e.push(...r.issues):e=r.issues;return e}function ot(t,e){return{kind:"schema",type:"union",reference:ot,expects:pl(t.map(r=>r.expects),"|"),async:!1,options:t,message:e,get"~standard"(){return ae(this)},"~run"(r,n){let i,s,o;for(let u of this.options){let a=u["~run"]({value:r.value},n);if(a.typed)if(a.issues)s?s.push(a):s=[a];else{i=a;break}else o?o.push(a):o=[a]}if(i)return i;if(s){if(s.length===1)return s[0];oe(this,"type",r,n,{issues:ul(s)}),r.typed=!0}else{if(o?.length===1)return o[0];oe(this,"type",r,n,{issues:ul(o)})}return r}}}function hl(t,e,r){let n=t["~run"]({value:e},Os(r));if(n.issues)throw new Yc(n.issues);return n.value}function dl(t,e){let r={};for(let n in t.entries)r[n]=!e||e.includes(n)?Vt(t.entries[n]):t.entries[n];return{...t,entries:r,get"~standard"(){return ae(this)}}}function ml(...t){return{...t[0],pipe:t,get"~standard"(){return ae(this)},"~run"(e,r){for(let n of t)if(n.kind!=="metadata"){if(e.issues&&(n.kind==="schema"||n.kind==="transformation")){e.typed=!1;break}(!e.issues||!r.abortEarly&&!r.abortPipeEarly)&&(e=n["~run"](e,r))}return e}}}function Ir(t,e,r){let n=t["~run"]({value:e},Os(r));return{typed:n.typed,success:!n.issues,output:n.value,issues:n.issues}}var gl=dl(Ie({name:q(),description:q(),price:q(),image_url:ot([q(),Ut(q())]),category:q(),url:q()}));function yl(t,e,r,{imagesByProductUrl:n,linksNewTab:i=!0,searchParams:s,messageIsStreaming:o=!1}){if(!t)return h``;let u=e>0&&r[e-1]&&"data"in r[e-1],a=e<r.length-1||!o;if("text"in t)return h`<p>${t.text}</p>`;if("html"in t)return h`${ll(t.html)}`;if("data"in t)switch(t.tag){case"product-card":case"product-card-v1":case"product-card-horizontal":{let c=Ir(gl,t.data);if(c.success){let f={...c.output,images:[]};return f.images=Pt(f.image_url),h`
|
|
518
|
+
`}};P=new WeakSet,Ka=function(){if(!this.product?.url){this._isValidUrl=!1;return}try{let r=new URL(this.product.url);this._isValidUrl=r.protocol==="http:"||r.protocol==="https:"}catch{this._isValidUrl=!1}},Gn=function(r){r.preventDefault(),!(!this.product?.url||!this._isValidUrl)&&window.open(this.product.url,"_blank")},Ya=function(r){!this.product?.url||!this._isValidUrl||(window.open(this.product.url,"_blank"),this.dispatchEvent(new Kn.AddToCartEvent(this.product)))},Jn=function(r,n){l(this,P,Xn)&&As({from:r,to:n,duration:300,onUpdate:i=>{l(this,P,Xn)&&(l(this,P,Xn).style.transform=`translateX(${i}%)`)}})},Qa=function(){if(!this.product?.images?.length)return;let r=this._currentImageIndex,n=(r+1)%this.product.images.length,i=-(r*100),s=-(n*100);g(this,P,Jn).call(this,i,s),this._currentImageIndex=n},el=function(){if(!this.product?.images?.length)return;let r=this._currentImageIndex,n=(r-1+this.product.images.length)%this.product.images.length,i=-(r*100),s=-(n*100);g(this,P,Jn).call(this,i,s),this._currentImageIndex=n},tl=function(r){if(!this.product?.images?.length)return;let n=this._currentImageIndex,i=Math.max(0,Math.min(r,this.product.images.length-1)),s=-(n*100),o=-(i*100);g(this,P,Jn).call(this,s,o),this._currentImageIndex=i},Xn=function(){return this.renderRoot.querySelector(".image-slider")},w(Kn,"properties",{product:{type:Object},labels:{type:Object},_currentImageIndex:{type:Number,state:!0},_isValidUrl:{type:Boolean,state:!0}});var $r=Kn,Ms;$r.AddToCartEvent=(Ms=class extends CustomEvent{constructor(e,r={}){super($r.AddToCartEvent.type,{detail:{product:e},...r})}},w(Ms,"type","mw-product-card:add-to-cart"),Ms);customElements.get("mw-product-card")||customElements.define("mw-product-card",$r);var Er,ne,xe,Sr,Is,Yn=class{constructor(e,r){d(this,Sr);d(this,Er);d(this,ne);d(this,xe);if(!e)throw new Error("host is required");if(!r)throw new Error("config is required");m(this,Er,e),l(this,Er).addController(this),m(this,ne,r)}connect(e){m(this,ne,e),m(this,xe,g(this,Sr,Is).call(this))}hostConnected(){setTimeout(()=>{m(this,xe,g(this,Sr,Is).call(this))},0)}hostDisconnected(){l(this,xe)?.close(1e3,"lit_host_disconnected"),m(this,xe,void 0)}send(e){l(this,xe)?.send(e)}close(e,r){l(this,xe)?.close(e,r)}get isConnected(){return l(this,xe)?.readyState===WebSocket.OPEN}};Er=new WeakMap,ne=new WeakMap,xe=new WeakMap,Sr=new WeakSet,Is=function(){let e=new WebSocket(l(this,ne).url());return l(this,ne).onClose&&(e.onclose=l(this,ne).onClose),l(this,ne).onOpen&&(e.onopen=l(this,ne).onOpen),l(this,ne).onError&&(e.onerror=l(this,ne).onError),l(this,ne).onMessage&&(e.onmessage=l(this,ne).onMessage),e};var rl="664df22d-d461-42d6-801e-f70247e2cd7c",G,J,ge,Dt,Rt,X,Ve,nl,il,sl,ol,Qn=class{constructor(e,r){d(this,X);d(this,G);d(this,J);d(this,ge);w(this,"isStreaming",!1);w(this,"typingIndicator");w(this,"ranOutOfCredits",!1);w(this,"messages",[]);w(this,"conversationId","");d(this,Dt,0);d(this,Rt);w(this,"isLiveMode",!1);m(this,G,e),m(this,J,r),m(this,ge,this.initWS()),e.addController(this)}sendUserInput(e,{xUserData:r,xCustomInstructions:n,role:i="user",expectStreaming:s=!1}={}){return g(this,X,Ve).call(this,{type:"USER_INPUT",value:e,role:i,xUserData:r,xCustomInstructions:n},{expectStreaming:s})}sendUserCancel(){return g(this,X,Ve).call(this,{type:"USER_CANCEL"})}sendUserTypingStart(){return g(this,X,Ve).call(this,{type:"USER_TYPING_START"})}sendUserTypingStop(){return g(this,X,Ve).call(this,{type:"USER_TYPING_STOP"})}sendUserMeta(e){return g(this,X,Ve).call(this,{type:"USER_META",metadata:e})}reloadConfig(){g(this,X,Ve).call(this,{type:"RELOAD_CONFIG"})}close(){l(this,ge).close(1e3,"closed by user")}retry(){clearTimeout(l(this,Rt)),m(this,Rt,setTimeout(()=>{l(this,J).onReconnect?.(),m(this,ge,this.initWS())},1e3*l(this,Dt))),oo(this,Dt)._++}initWS(){return new Yn(l(this,G),{url:()=>l(this,J).url(this.conversationId,{}),onOpen:e=>g(this,X,nl).call(this,e),onMessage:e=>g(this,X,il).call(this,JSON.parse(e.data)),onError:e=>g(this,X,sl).call(this,e),onClose:e=>g(this,X,ol).call(this,e)})}hostConnected(){this.conversationId=l(this,J).restoreConversationState?.()?.conversationId||"",this.messages=l(this,J).restoreConversationState?.()?.messages||[]}reset(){g(this,X,Ve).call(this,{type:"NEW_CHAT"}),l(this,J).onReset?.(),this.isStreaming=!1,this.typingIndicator=void 0,this.ranOutOfCredits=!1,this.messages=[],this.conversationId="",this.isLiveMode=!1,l(this,G).requestUpdate()}hostDisconnected(){clearTimeout(l(this,Rt))}reconnectSocket(){l(this,ge).close(1e3,"destroy"),m(this,ge,this.initWS())}get lastMsg(){if(this.messages.length>0)return this.messages[this.messages.length-1]}};G=new WeakMap,J=new WeakMap,ge=new WeakMap,Dt=new WeakMap,Rt=new WeakMap,X=new WeakSet,Ve=function(e,{expectStreaming:r=!1}={}){return l(this,ge).isConnected?(r&&!this.isLiveMode&&(this.isStreaming=!0,l(this,G).requestUpdate()),l(this,ge).send(JSON.stringify(e)),!0):(console.warn("WebSocket is not connected, message not sent - reconnecting now",e),this.retry(),!1)},nl=function(e){m(this,Dt,0)},il=function(e){switch(e.type){case"NEW_MESSAGE":{this.messages=[...this.messages,{...e.message,streaming:!0}].filter((r,n,i)=>n===i.findIndex(s=>s.id===r.id)),this.typingIndicator=void 0,l(this,G).requestUpdate(),l(this,J).onNewMessage?.(e.message);break}case"APPEND_MESSAGE":{let r=this.messages.find(n=>n.id===e.message.id);if(r){switch(e.message.content_type){case"text":{let{part:n,delta:i,position:s}=e.message;r.content=r.content.slice(0,s)+i,r.parts||=[],r.parts[n]={text:r.parts[n]&&"text"in r.parts[n]?(r.parts[n].text||"").slice(0,s)+i:i};break}case"html":{let{part:n,delta:i,position:s}=e.message;r.parts||=[],r.parts[n]={html:r.parts[n]&&"html"in r.parts[n]?(r.parts[n].html||"").slice(0,s)+i:i};break}case"data":{let{part:n}=e.message;r.parts||=[],r.parts[n]={tag:e.message.tag,data:r.parts[n]&&"data"in r.parts[n]?Object.assign(r.parts[n].data||{},e.message.data):e.message.data};break}}e.metadata&&(r.metadata=e.metadata),l(this,J).onMessageAppend?.(e),l(this,G).requestUpdate()}else throw new Error(`Message with id ${e.message.id} not found`);break}case"MESSAGE_DONE":{let r=this.messages.find(n=>n.id===e.message.id);if(r)Object.assign(r,e.message),r.streaming=!1;else throw new Error(`Message with id ${e.message.id} not found`);this.isStreaming=!1,l(this,G).requestUpdate(),l(this,J).onMessageDone?.(e,r),l(this,J).persistConversationState?.(this.conversationId,this.messages);break}case"MESSAGE_CANCEL":{this.isStreaming=!1,this.typingIndicator=void 0,l(this,G).requestUpdate();break}case"ERROR":{l(this,J).onMessageError?.(e);break}case"CONNECTED":{this.conversationId=e.conversationId,this.messages=e.messages,l(this,J).onConnect?.(e.conversationId),l(this,J).persistConversationState?.(this.conversationId,this.messages),this.isLiveMode=e.metadata?.isLiveMode,l(this,G).requestUpdate();break}case"TYPING_START":{e.role==="assistant"&&(this.isStreaming=!0),this.typingIndicator={role:e.role,metadata:e.metadata},l(this,G).requestUpdate();break}case"TYPING_STOP":{this.typingIndicator=void 0,l(this,G).requestUpdate();break}case"RAN_OUT_OF_CREDITS":{this.messages.some(r=>r.id===rl)||this.messages.push({id:rl,role:"assistant",content:"Sorry, I've run out of credits. Please contact the shop directly.",timestamp:Date.now()}),this.ranOutOfCredits=!0,l(this,G).requestUpdate();break}case"RECONNECT":{this.reconnectSocket(),l(this,G).requestUpdate();break}default:console.warn(`Unknown message type: ${JSON.stringify(e)}`)}},sl=function(e){console.error("onError",e),l(this,J).onError?.(e)},ol=function(e){l(this,G).isConnected&&!l(this,ge).isConnected&&e.reason==="reconnect"&&this.retry(),this.isStreaming=!1,this.typingIndicator=void 0,l(this,G).requestUpdate(),l(this,J).onClose?.()};function Pt(t){return Array.isArray(t)?t:t?[t]:[]}function al(t,e){let r=new Map;for(let n of t){let i=e(n);r.has(i)||r.set(i,[]),(r.get(i)||[]).push(n)}return r}var _r=class extends Ct{constructor(e){if(super(e),this.it=E,e.type!==En.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===E||e==null)return this._t=void 0,this.it=e;if(e===he)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;let r=[e];return r.raw=r,this._t={_$litType$:this.constructor.resultType,strings:r,values:[]}}};_r.directiveName="unsafeHTML",_r.resultType=1;var ll=Sn(_r);var Ts;function Os(t){return{lang:t?.lang??Ts?.lang,message:t?.message,abortEarly:t?.abortEarly??Ts?.abortEarly,abortPipeEarly:t?.abortPipeEarly??Ts?.abortPipeEarly}}var zc;function Wc(t){return zc?.get(t)}var Zc;function Gc(t){return Zc?.get(t)}var Jc;function Xc(t,e){return Jc?.get(t)?.get(e)}function cl(t){let e=typeof t;return e==="string"?`"${t}"`:e==="number"||e==="bigint"||e==="boolean"?`${t}`:e==="object"||e==="function"?(t&&Object.getPrototypeOf(t)?.constructor?.name)??"null":e}function oe(t,e,r,n,i){let s=i&&"input"in i?i.input:r.value,o=i?.expected??t.expects??null,u=i?.received??cl(s),a={kind:t.kind,type:t.type,input:s,expected:o,received:u,message:`Invalid ${e}: ${o?`Expected ${o} but r`:"R"}eceived ${u}`,requirement:t.requirement,path:i?.path,issues:i?.issues,lang:n.lang,abortEarly:n.abortEarly,abortPipeEarly:n.abortPipeEarly},c=t.kind==="schema",f=i?.message??t.message??Xc(t.reference,a.lang)??(c?Gc(a.lang):null)??n.message??Wc(a.lang);f!==void 0&&(a.message=typeof f=="function"?f(a):f),c&&(r.typed=!1),r.issues?r.issues.push(a):r.issues=[a]}function ae(t){return{version:1,vendor:"valibot",validate(e){return t["~run"]({value:e},Os())}}}function Kc(t,e){return Object.hasOwn(t,e)&&e!=="__proto__"&&e!=="prototype"&&e!=="constructor"}function pl(t,e){let r=[...new Set(t)];return r.length>1?`(${r.join(` ${e} `)})`:r[0]??"never"}var Yc=class extends Error{constructor(t){super(t[0].message),this.name="ValiError",this.issues=t}};function js(t,e){return{kind:"validation",type:"max_length",reference:js,async:!1,expects:`<=${t}`,requirement:t,message:e,"~run"(r,n){return r.typed&&r.value.length>this.requirement&&oe(this,"length",r,n,{received:`${r.value.length}`}),r}}}function Ls(t,e){return{kind:"validation",type:"min_length",reference:Ls,async:!1,expects:`>=${t}`,requirement:t,message:e,"~run"(r,n){return r.typed&&r.value.length<this.requirement&&oe(this,"length",r,n,{received:`${r.value.length}`}),r}}}function Qc(t,e,r){return typeof t.fallback=="function"?t.fallback(e,r):t.fallback}function fl(t,e,r){return typeof t.default=="function"?t.default(e,r):t.default}function Ds(){return{kind:"schema",type:"any",reference:Ds,expects:"any",async:!1,get"~standard"(){return ae(this)},"~run"(t){return t.typed=!0,t}}}function Ut(t,e){return{kind:"schema",type:"array",reference:Ut,expects:"Array",async:!1,item:t,message:e,get"~standard"(){return ae(this)},"~run"(r,n){let i=r.value;if(Array.isArray(i)){r.typed=!0,r.value=[];for(let s=0;s<i.length;s++){let o=i[s],u=this.item["~run"]({value:o},n);if(u.issues){let a={type:"array",origin:"value",input:i,key:s,value:o};for(let c of u.issues)c.path?c.path.unshift(a):c.path=[a],r.issues?.push(c);if(r.issues||(r.issues=u.issues),n.abortEarly){r.typed=!1;break}}u.typed||(r.typed=!1),r.value.push(u.value)}}else oe(this,"type",r,n);return r}}}function Rs(t){return{kind:"schema",type:"boolean",reference:Rs,expects:"boolean",async:!1,message:t,get"~standard"(){return ae(this)},"~run"(e,r){return typeof e.value=="boolean"?e.typed=!0:oe(this,"type",e,r),e}}}function Ps(t){return{kind:"schema",type:"null",reference:Ps,expects:"null",async:!1,message:t,get"~standard"(){return ae(this)},"~run"(e,r){return e.value===null?e.typed=!0:oe(this,"type",e,r),e}}}function Ar(t){return{kind:"schema",type:"number",reference:Ar,expects:"number",async:!1,message:t,get"~standard"(){return ae(this)},"~run"(e,r){return typeof e.value=="number"&&!isNaN(e.value)?e.typed=!0:oe(this,"type",e,r),e}}}function Ie(t,e){return{kind:"schema",type:"object",reference:Ie,expects:"Object",async:!1,entries:t,message:e,get"~standard"(){return ae(this)},"~run"(r,n){let i=r.value;if(i&&typeof i=="object"){r.typed=!0,r.value={};for(let s in this.entries){let o=this.entries[s];if(s in i||(o.type==="exact_optional"||o.type==="optional"||o.type==="nullish")&&o.default!==void 0){let u=s in i?i[s]:fl(o),a=o["~run"]({value:u},n);if(a.issues){let c={type:"object",origin:"value",input:i,key:s,value:u};for(let f of a.issues)f.path?f.path.unshift(c):f.path=[c],r.issues?.push(f);if(r.issues||(r.issues=a.issues),n.abortEarly){r.typed=!1;break}}a.typed||(r.typed=!1),r.value[s]=a.value}else if(o.fallback!==void 0)r.value[s]=Qc(o);else if(o.type!=="exact_optional"&&o.type!=="optional"&&o.type!=="nullish"&&(oe(this,"key",r,n,{input:void 0,expected:`"${s}"`,path:[{type:"object",origin:"key",input:i,key:s,value:i[s]}]}),n.abortEarly))break}}else oe(this,"type",r,n);return r}}}function Vt(t,e){return{kind:"schema",type:"optional",reference:Vt,expects:`(${t.expects} | undefined)`,async:!1,wrapped:t,default:e,get"~standard"(){return ae(this)},"~run"(r,n){return r.value===void 0&&(this.default!==void 0&&(r.value=fl(this,r,n)),r.value===void 0)?(r.typed=!0,r):this.wrapped["~run"](r,n)}}}function Us(t,e){return{kind:"schema",type:"picklist",reference:Us,expects:pl(t.map(cl),"|"),async:!1,options:t,message:e,get"~standard"(){return ae(this)},"~run"(r,n){return this.options.includes(r.value)?r.typed=!0:oe(this,"type",r,n),r}}}function Mr(t,e,r){return{kind:"schema",type:"record",reference:Mr,expects:"Object",async:!1,key:t,value:e,message:r,get"~standard"(){return ae(this)},"~run"(n,i){let s=n.value;if(s&&typeof s=="object"){n.typed=!0,n.value={};for(let o in s)if(Kc(s,o)){let u=s[o],a=this.key["~run"]({value:o},i);if(a.issues){let f={type:"object",origin:"key",input:s,key:o,value:u};for(let p of a.issues)p.path=[f],n.issues?.push(p);if(n.issues||(n.issues=a.issues),i.abortEarly){n.typed=!1;break}}let c=this.value["~run"]({value:u},i);if(c.issues){let f={type:"object",origin:"value",input:s,key:o,value:u};for(let p of c.issues)p.path?p.path.unshift(f):p.path=[f],n.issues?.push(p);if(n.issues||(n.issues=c.issues),i.abortEarly){n.typed=!1;break}}(!a.typed||!c.typed)&&(n.typed=!1),a.typed&&(n.value[a.value]=c.value)}}else oe(this,"type",n,i);return n}}}function q(t){return{kind:"schema",type:"string",reference:q,expects:"string",async:!1,message:t,get"~standard"(){return ae(this)},"~run"(e,r){return typeof e.value=="string"?e.typed=!0:oe(this,"type",e,r),e}}}function ul(t){let e;if(t)for(let r of t)e?e.push(...r.issues):e=r.issues;return e}function ot(t,e){return{kind:"schema",type:"union",reference:ot,expects:pl(t.map(r=>r.expects),"|"),async:!1,options:t,message:e,get"~standard"(){return ae(this)},"~run"(r,n){let i,s,o;for(let u of this.options){let a=u["~run"]({value:r.value},n);if(a.typed)if(a.issues)s?s.push(a):s=[a];else{i=a;break}else o?o.push(a):o=[a]}if(i)return i;if(s){if(s.length===1)return s[0];oe(this,"type",r,n,{issues:ul(s)}),r.typed=!0}else{if(o?.length===1)return o[0];oe(this,"type",r,n,{issues:ul(o)})}return r}}}function hl(t,e,r){let n=t["~run"]({value:e},Os(r));if(n.issues)throw new Yc(n.issues);return n.value}function dl(t,e){let r={};for(let n in t.entries)r[n]=!e||e.includes(n)?Vt(t.entries[n]):t.entries[n];return{...t,entries:r,get"~standard"(){return ae(this)}}}function ml(...t){return{...t[0],pipe:t,get"~standard"(){return ae(this)},"~run"(e,r){for(let n of t)if(n.kind!=="metadata"){if(e.issues&&(n.kind==="schema"||n.kind==="transformation")){e.typed=!1;break}(!e.issues||!r.abortEarly&&!r.abortPipeEarly)&&(e=n["~run"](e,r))}return e}}}function Ir(t,e,r){let n=t["~run"]({value:e},Os(r));return{typed:n.typed,success:!n.issues,output:n.value,issues:n.issues}}var gl=dl(Ie({name:q(),description:q(),price:q(),image_url:ot([q(),Ut(q())]),category:q(),url:q()}));function yl(t,e,r,{imagesByProductUrl:n,linksNewTab:i=!0,searchParams:s,messageIsStreaming:o=!1}){if(!t)return h``;let u=e>0&&r[e-1]&&"data"in r[e-1],a=e<r.length-1||!o;if("text"in t)return h`<p>${t.text}</p>`;if("html"in t)return h`${ll(t.html)}`;if("data"in t)switch(t.tag){case"product-card":case"product-card-v1":case"product-card-horizontal":{let c=Ir(gl,t.data);if(c.success){let f={...c.output,images:[]};return f.images=Pt(f.image_url),h`
|
|
519
519
|
${u?h`<div class="my-3 w-full border-t border-gray-200/50"></div>`:null}
|
|
520
520
|
<mw-product-card-horizontal
|
|
521
521
|
product="${JSON.stringify(f)}"
|