var w=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var g=(o,e,t,i)=>{for(var s=i>1?void 0:i?y(e,t):e,r=o.length-1,n;r>=0;r--)(n=o[r])&&(s=(i?n(e,t,s):n(s))||s);return i&&s&&w(e,t,s),s};import{Liquid as T}from"https://cdn.jsdelivr.net/npm/liquidjs@9.42.0/+esm";import{html as k,unsafeStatic as A}from"https://cdn.jsdelivr.net/npm/lit@2.3.1/static-html.js/+esm";var u=class{constructor(e){this.mapWishlistState=(e,t="minimal")=>{var i;return{id:e.id,public_id:e.publicId,is_mine:e.isMine,num_items:e.numItems,items:t==="all"?(i=e.items)==null?void 0:i.map(s=>({id:s.id})):void 0}};this.mapProductInfo=e=>({product_id:e.productId,variant_id:e.variantId,in_wishlist:e.inWishlist,wishlist_item_id:e.wishlistItemId});this.mapWishlistItem=e=>{var t,i,s,r;return{id:e.id,loading:!((t=e.product)!=null&&t.url)&&!((i=e.product)!=null&&i.hidden),hidden:!!((s=e.product)!=null&&s.hidden),selected_variant_id:e.selectedVariantId,product:(r=e.product)!=null&&r.url?this.mapShopifyProduct(e):e.product}};this.utils=e.utils}mapShopifyProduct(e){var n;let t=e.product,i=this.utils.product.getFirstAvailableVariant({product:t}),s=this.utils.product.getSelectedVariant({product:t,selectedVariantId:e.selectedVariantId}),r=(n=s!=null?s:i)!=null?n:t.variants[0];return{...t,selected_variant:s,first_available_variant:i,selected_or_first_available_variant:r,has_only_default_variant:t.variants.length===1}}camelToSnakeCase(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}objectToSnakeCase(e){return typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([t,i])=>{if(typeof i=="function")return[t,null];let s=this.camelToSnakeCase(t);return Array.isArray(i)?[s,i.map(r=>this.objectToSnakeCase(r))]:i&&typeof i=="object"?[s,this.objectToSnakeCase(i)]:[s,i]}))}};var _=o=>function(){let e=a=>{var d;return o.utils.url.getVariantUrl(a.url,(d=a.selected_variant)==null?void 0:d.id)},t=(a,...d)=>o.utils.url.getImageUrl(a,b(d)),i=(a="")=>o.utils.url.getFileUrl(a),s=(a="",d)=>o.utils.url.getImageUrl({src:o.utils.url.getFileUrl(a.replace(".",`_${d}.`))}),r=a=>o.utils.money.formatMoney(a),n=(a,...d)=>d.length?this.parseAndRenderSync(o.utils.locale.translate(a),b(d)):o.utils.locale.translate(a),l=(a="")=>a.toLowerCase().trim().replace(/[^a-zA-Z0-9]/g,"-").replace(/[-]{2,}/g,"-");this.registerFilter("variant_url",e),this.registerFilter("image_url",t),this.registerFilter("file_url",i),this.registerFilter("file_img_url",s),this.registerFilter("money",r),this.registerFilter("t",n),this.registerFilter("handle",l),this.registerFilter("handleize",l)},b=o=>o.reduce((e,[t,i])=>i?{...e,[t]:i}:e,{});import{from as L,fromEvent as f,isObservable as I,of as S}from"https://cdn.jsdelivr.net/npm/rxjs@7.5.6/+esm";import{filter as U,first as C,switchMap as E,tap as v}from"https://cdn.jsdelivr.net/npm/rxjs@7.5.6/operators/+esm";import{LitElement as x}from"https://cdn.jsdelivr.net/npm/lit@2.3.1/+esm";import{state as F}from"https://cdn.jsdelivr.net/npm/lit@2.3.1/decorators.js/+esm";import{combineLatest as W,distinctUntilChanged as P,map as h,of as q}from"https://cdn.jsdelivr.net/npm/rxjs@7.5.6/+esm";var p=class{constructor(e){this.stateConfig={loading:"eager"};(this.host=e).addController(this)}get app(){if(!window.WishlistKing)throw new Error("Wishlist King SDK not initialized");return window.WishlistKing}hostConnected(){}hostDisconnected(){}parseStateConfig(e){var t;return{loading:(t=e.loading)!=null?t:"eager",wishlist:this.parseWishlistStateConfig(e),wishlistItem:this.parseWishlistItemStateConfig(e),productInfo:this.parseProductInfoStateConfig(e)}}parseWishlistStateConfig({wishlist:e}){var i;let t=(i=this.host.dataset.wishlistId)!=null?i:"mine";if(!!e)return{format:typeof e=="string"?e:"minimal",params:{wishlistId:t}}}parseWishlistItemStateConfig({wishlistItem:e}){let{wishlistId:t="mine",wishlistItemId:i}=this.host.dataset;if(!(!e||!i))return{params:{wishlistId:t,wishlistItemId:i}}}parseProductInfoStateConfig({productInfo:e}){let{wishlistId:t="mine",productHandle:i,productId:s,variantId:r}=this.host.dataset;if(!!e)return{params:{wishlistId:t,productHandle:i,productId:s?parseInt(s):void 0,variantId:r?parseInt(r):void 0}}}observe(e){this.stateConfig=this.parseStateConfig(this.host.getStateConfig());let t=[];if(this.stateConfig.wishlist){let{wishlistId:i="mine"}=this.stateConfig.wishlist.params;t.push(this.app.state.observeWishlist({format:this.stateConfig.wishlist.format,wishlistId:i}).pipe(h(s=>({wishlist:s}))))}if(this.stateConfig.productInfo){let{productId:i,productHandle:s,variantId:r}=this.stateConfig.productInfo.params;if(!i&&!s)throw new Error("Product id or handle is required");t.push(this.app.state.observeProductInfo({productHandle:s,productId:i,variantId:r,strategy:e}).pipe(h(n=>({productInfo:n}))))}if(this.stateConfig.wishlistItem){let{wishlistId:i,wishlistItemId:s}=this.stateConfig.wishlistItem.params;if(!i)throw new Error("Wishlist id is required");if(!s)throw new Error("Wishlist item id is required");t.push(this.app.state.observeWishlistItem({wishlistId:i,wishlistItemId:s}).pipe(h(r=>({wishlistItem:r}))))}return t.length||t.push(q({})),W(t).pipe(h(i=>i.reduce((s,r)=>r.wishlist?{...s,wishlist:r.wishlist}:r.wishlistItem?{...s,wishlistItem:r.wishlistItem}:r.productInfo?{...s,productInfo:r.productInfo}:s,{})),P((i,s)=>JSON.stringify(i)===JSON.stringify(s)))}getFallback(){this.stateConfig=this.parseStateConfig(this.host.getStateConfig());let e={};if(this.stateConfig.wishlist){let{wishlistId:t="mine"}=this.stateConfig.wishlist.params;e.wishlist={id:t,isMine:t==="mine",numItems:0,items:void 0}}if(this.stateConfig.productInfo){let{productId:t=0,variantId:i=0}=this.stateConfig.productInfo.params;e.productInfo={productId:t,variantId:i,inWishlist:!1}}if(this.stateConfig.wishlistItem){let{wishlistId:t,wishlistItemId:i}=this.stateConfig.wishlistItem.params;if(!t)throw new Error("Wishlist id is required");if(!i)throw new Error("Wishlist item id is required");e.wishlistItem={id:i,product:{id:0,handle:"",hidden:!1}}}return e}};var c=class extends x{constructor(){super();this.connected=!1;this.cleanupMethods=[];this.eventPending=!1;this.state={};this.stateCtrl=new p(this)}get app(){return this.stateCtrl.app}static get observedAttributes(){return[...super.observedAttributes,"data-wishlist-id","data-wishlist-item-id","data-product-handle","data-product-id","data-variant-id"]}appReadyCallback(){}beforeNextState(t){}connect(){if(!this.connected){if(!window.WishlistKing){f(document,"wk:app:ready").pipe(C()).subscribe(()=>this.connect());return}if(!this.app.stylesLoaded){f(document,"wk:app:load-styles:success").pipe(C()).subscribe(()=>this.connect());return}this.connected=!0,this.init(),this.appReadyCallback()}}getStateConfig(){return{}}getTranslation(t){var i;return(i=window.WishlistKing)!=null&&i.utils.locale?window.WishlistKing.utils.locale.translate(t):t}init(){let{loading:t}=this.getStateConfig();t==="lazy"?(this.initFallbackState(),this.initObserver()):this.initState()}updateState(t){var i;this.state={...(i=this.state)!=null?i:{},...t}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.innerHTML="",this.initEvents(),this.connect()}disconnectedCallback(){var t,i;super.disconnectedCallback(),this.connected=!1,this.cleanupMethods.forEach(s=>s()),(t=this.subscription)==null||t.unsubscribe(),(i=this.observer)==null||i.disconnect()}attributeChangedCallback(t,i,s){super.attributeChangedCallback(t,i,s),this.connected&&this.initState("cache-first")}shouldUpdate(t){return this.connected?super.shouldUpdate(t):!1}initState(t){this.subscription&&this.subscription.unsubscribe(),this.subscription=this.stateCtrl.observe(t).subscribe(i=>{this.updateState(i)})}initFallbackState(){let t=this.stateCtrl.getFallback();t&&this.updateState(t)}initObserver(){this.observer=new IntersectionObserver(t=>this.handleIntersect(t),{root:null,rootMargin:"0px"}),this.observer.observe(this)}handleIntersect([t]){var i;t.isIntersecting&&((i=this.observer)==null||i.disconnect(),this.initState())}getEventConfig(){return{}}initEvents(){let t=this.getEventConfig();if(!t)return;let i=Object.entries(t).map(([s,r])=>{let[n,l]=s.split(/ (.*)/s);return this.subscribeToEvent({eventName:n,selector:l,handler:r})});this.cleanupMethods.push(()=>i.forEach(s=>s.unsubscribe()))}subscribeToEvent({eventName:t,handler:i,selector:s}){return f(this,t).pipe(v(r=>{this.eventPending&&r.preventDefault()}),U(()=>!this.eventPending),v(()=>{this.eventPending=!0}),E(r=>{let n=null;if(s&&r.target instanceof HTMLElement&&(n=r.target.closest(s)),s&&!n)return S(null);let l=i.bind(this)(r,s?n:r.currentTarget);return I(l)?l:typeof(l==null?void 0:l.then)=="function"?L(l):S(l)})).subscribe(()=>{this.eventPending=!1})}unlessEventPending(t){let i=()=>this.eventPending=!0,s=()=>this.eventPending=!1;return r=>{if(this.eventPending){t.preventDefault();return}i();let n=r.bind(this)(t);I(n)?n.subscribe(()=>s()):typeof(n==null?void 0:n.then)=="function"?n.then(()=>s()).catch(l=>{throw s(),l}):s()}}};g([F()],c.prototype,"state",2);var m=class extends c{static get properties(){return{}}init(){super.init(),this.dataUtil=new u({utils:this.app.utils}),this.globals={settings:{login_required:this.app.settings.loginRequired},customer:this.app.customer,shop:{currency:this.app.config.shop.currency,customer_accounts_enabled:this.app.config.shop.customerAccountsEnabled,domain:this.app.config.shop.domain,money_format:this.app.config.shop.moneyFormat,name:this.app.config.shop.name,permanent_domain:this.app.config.shop.permanentDomain},routes:{root_url:this.app.routes.rootUrl,wishlist_url:this.app.routes.wishlistUrl,account_url:this.app.routes.accountUrl,account_login_url:this.app.routes.accountLoginUrl,account_logout_url:this.app.routes.accountLogoutUrl,account_register_url:this.app.routes.accountRegisterUrl,account_addresses_url:this.app.routes.accountAddressesUrl,collections_url:this.app.routes.collectionsUrl,all_products_collection_url:this.app.routes.allProductsCollectionUrl,search_url:this.app.routes.searchUrl,predictive_search_url:this.app.routes.predictiveSearchUrl,cart_url:this.app.routes.cartUrl,cart_add_url:this.app.routes.cartAddUrl,cart_change_url:this.app.routes.cartChangeUrl,cart_clear_url:this.app.routes.cartClearUrl,cart_update_url:this.app.routes.cartUpdateUrl,product_recommendations_url:this.app.routes.productRecommendationsUrl}},this.liquidEngine=new T({cache:!0,relativeReference:!1}),this.liquidEngine.plugin(_(this.app)),this.initTemplate()}disconnectedCallback(){super.disconnectedCallback(),this.parsedTemplates=void 0}getLiquidTemplate(){return""}getLiquidData(){return{}}initTemplate(){if(this.parsedTemplates)return this.parsedTemplates;if(!this.liquidEngine)throw new Error("Liquid engine not initialized");return this.parsedTemplates=this.liquidEngine.parse(this.getLiquidTemplate()),this.parsedTemplates}render(){var l,a;if(!this.parsedTemplates||!this.liquidEngine||!this.dataUtil)return;let{wishlist:t,wishlistItem:i,productInfo:s}=(l=this.state)!=null?l:{},r={...this.dataUtil.objectToSnakeCase(this.getLiquidData()),wishlist:t?this.dataUtil.mapWishlistState(t,(a=this.stateCtrl.stateConfig.wishlist)==null?void 0:a.format):void 0,wishlist_item:i?this.dataUtil.mapWishlistItem(i):void 0,product_info:s?this.dataUtil.mapProductInfo(s):void 0},n=this.liquidEngine.renderSync(this.parsedTemplates,r,{globals:this.globals});return k`${A(n)}`}};export{u as LiquidDataUtil,m as LiquidElement};