@swishapp/sdk 0.90.0 → 0.90.1

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.
package/dist/swish.d.ts CHANGED
@@ -9,6 +9,7 @@ import { StorefrontApiClient } from "./storefront-api/storefront-api-client";
9
9
  import { SwishApi } from "./swish-api/swish-api-client";
10
10
  import { ShopifyBadgesUtils } from "./utils/shopify-badge-utils";
11
11
  export declare const VERSION: string;
12
+ export declare const swishSdkUrl: string;
12
13
  export declare const createSwish: (optionsInput: SwishOptionsInput) => Promise<SwishApp>;
13
14
  declare class SwishApp {
14
15
  private readonly swishApi;
package/dist/swish.js CHANGED
@@ -1,11 +1,11 @@
1
- var pr=Object.create;var Xe=Object.defineProperty;var dr=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var hr=Object.getPrototypeOf,mr=Object.prototype.hasOwnProperty;var s=(n,e)=>Xe(n,"name",{value:e,configurable:!0});var yr=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var vr=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of fr(e))!mr.call(n,i)&&i!==t&&Xe(n,i,{get:()=>e[i],enumerable:!(r=dr(e,i))||r.enumerable});return n};var gr=(n,e,t)=>(t=n!=null?pr(hr(n)):{},vr(e||!n||!n.__esModule?Xe(t,"default",{value:n,enumerable:!0}):t,n));var or=yr((hl,sr)=>{"use strict";var Xi=(function(){function n(t,r){if(typeof t!="function")throw new TypeError("DataLoader must be constructed with a function which accepts "+("Array<key> and returns Promise<Array<value>>, but got: "+t+"."));this._batchLoadFn=t,this._maxBatchSize=Zi(r),this._batchScheduleFn=es(r),this._cacheKeyFn=ts(r),this._cacheMap=ns(r),this._batch=null,this.name=rs(r)}s(n,"DataLoader");var e=n.prototype;return e.load=s(function(r){if(r==null)throw new TypeError("The loader.load() function must be called with a value, "+("but got: "+String(r)+"."));var i=Yi(this),o=this._cacheMap,u;if(o){u=this._cacheKeyFn(r);var a=o.get(u);if(a){var l=i.cacheHits||(i.cacheHits=[]);return new Promise(function(p){l.push(function(){p(a)})})}}i.keys.push(r);var c=new Promise(function(p,h){i.callbacks.push({resolve:p,reject:h})});return o&&o.set(u,c),c},"load"),e.loadMany=s(function(r){if(!ir(r))throw new TypeError("The loader.loadMany() function must be called with Array<key> "+("but got: "+r+"."));for(var i=[],o=0;o<r.length;o++)i.push(this.load(r[o]).catch(function(u){return u}));return Promise.all(i)},"loadMany"),e.clear=s(function(r){var i=this._cacheMap;if(i){var o=this._cacheKeyFn(r);i.delete(o)}return this},"clear"),e.clearAll=s(function(){var r=this._cacheMap;return r&&r.clear(),this},"clearAll"),e.prime=s(function(r,i){var o=this._cacheMap;if(o){var u=this._cacheKeyFn(r);if(o.get(u)===void 0){var a;i instanceof Error?(a=Promise.reject(i),a.catch(function(){})):a=Promise.resolve(i),o.set(u,a)}}return this},"prime"),n})(),Ki=typeof process=="object"&&typeof process.nextTick=="function"?function(n){_t||(_t=Promise.resolve()),_t.then(function(){process.nextTick(n)})}:typeof setImmediate=="function"?function(n){setImmediate(n)}:function(n){setTimeout(n)},_t;function Yi(n){var e=n._batch;if(e!==null&&!e.hasDispatched&&e.keys.length<n._maxBatchSize)return e;var t={hasDispatched:!1,keys:[],callbacks:[]};return n._batch=t,n._batchScheduleFn(function(){Ji(n,t)}),t}s(Yi,"getCurrentBatch");function Ji(n,e){if(e.hasDispatched=!0,e.keys.length===0){Lt(e);return}var t;try{t=n._batchLoadFn(e.keys)}catch(r){return Ot(n,e,new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function "+("errored synchronously: "+String(r)+".")))}if(!t||typeof t.then!="function")return Ot(n,e,new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did "+("not return a Promise: "+String(t)+".")));t.then(function(r){if(!ir(r))throw new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did "+("not return a Promise of an Array: "+String(r)+"."));if(r.length!==e.keys.length)throw new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise of an Array of the same length as the Array of keys."+(`
1
+ var pr=Object.create;var Ke=Object.defineProperty;var dr=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var hr=Object.getPrototypeOf,mr=Object.prototype.hasOwnProperty;var s=(n,e)=>Ke(n,"name",{value:e,configurable:!0});var yr=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var vr=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of fr(e))!mr.call(n,i)&&i!==t&&Ke(n,i,{get:()=>e[i],enumerable:!(r=dr(e,i))||r.enumerable});return n};var gr=(n,e,t)=>(t=n!=null?pr(hr(n)):{},vr(e||!n||!n.__esModule?Ke(t,"default",{value:n,enumerable:!0}):t,n));var or=yr((hl,sr)=>{"use strict";var Xi=(function(){function n(t,r){if(typeof t!="function")throw new TypeError("DataLoader must be constructed with a function which accepts "+("Array<key> and returns Promise<Array<value>>, but got: "+t+"."));this._batchLoadFn=t,this._maxBatchSize=Zi(r),this._batchScheduleFn=es(r),this._cacheKeyFn=ts(r),this._cacheMap=ns(r),this._batch=null,this.name=rs(r)}s(n,"DataLoader");var e=n.prototype;return e.load=s(function(r){if(r==null)throw new TypeError("The loader.load() function must be called with a value, "+("but got: "+String(r)+"."));var i=Yi(this),o=this._cacheMap,u;if(o){u=this._cacheKeyFn(r);var a=o.get(u);if(a){var l=i.cacheHits||(i.cacheHits=[]);return new Promise(function(p){l.push(function(){p(a)})})}}i.keys.push(r);var c=new Promise(function(p,h){i.callbacks.push({resolve:p,reject:h})});return o&&o.set(u,c),c},"load"),e.loadMany=s(function(r){if(!ir(r))throw new TypeError("The loader.loadMany() function must be called with Array<key> "+("but got: "+r+"."));for(var i=[],o=0;o<r.length;o++)i.push(this.load(r[o]).catch(function(u){return u}));return Promise.all(i)},"loadMany"),e.clear=s(function(r){var i=this._cacheMap;if(i){var o=this._cacheKeyFn(r);i.delete(o)}return this},"clear"),e.clearAll=s(function(){var r=this._cacheMap;return r&&r.clear(),this},"clearAll"),e.prime=s(function(r,i){var o=this._cacheMap;if(o){var u=this._cacheKeyFn(r);if(o.get(u)===void 0){var a;i instanceof Error?(a=Promise.reject(i),a.catch(function(){})):a=Promise.resolve(i),o.set(u,a)}}return this},"prime"),n})(),Ki=typeof process=="object"&&typeof process.nextTick=="function"?function(n){_t||(_t=Promise.resolve()),_t.then(function(){process.nextTick(n)})}:typeof setImmediate=="function"?function(n){setImmediate(n)}:function(n){setTimeout(n)},_t;function Yi(n){var e=n._batch;if(e!==null&&!e.hasDispatched&&e.keys.length<n._maxBatchSize)return e;var t={hasDispatched:!1,keys:[],callbacks:[]};return n._batch=t,n._batchScheduleFn(function(){Ji(n,t)}),t}s(Yi,"getCurrentBatch");function Ji(n,e){if(e.hasDispatched=!0,e.keys.length===0){Lt(e);return}var t;try{t=n._batchLoadFn(e.keys)}catch(r){return Ot(n,e,new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function "+("errored synchronously: "+String(r)+".")))}if(!t||typeof t.then!="function")return Ot(n,e,new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did "+("not return a Promise: "+String(t)+".")));t.then(function(r){if(!ir(r))throw new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did "+("not return a Promise of an Array: "+String(r)+"."));if(r.length!==e.keys.length)throw new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise of an Array of the same length as the Array of keys."+(`
2
2
 
3
3
  Keys:
4
4
  `+String(e.keys))+(`
5
5
 
6
6
  Values:
7
- `+String(r)));Lt(e);for(var i=0;i<e.callbacks.length;i++){var o=r[i];o instanceof Error?e.callbacks[i].reject(o):e.callbacks[i].resolve(o)}}).catch(function(r){Ot(n,e,r)})}s(Ji,"dispatchBatch");function Ot(n,e,t){Lt(e);for(var r=0;r<e.keys.length;r++)n.clear(e.keys[r]),e.callbacks[r].reject(t)}s(Ot,"failedDispatch");function Lt(n){if(n.cacheHits)for(var e=0;e<n.cacheHits.length;e++)n.cacheHits[e]()}s(Lt,"resolveCacheHits");function Zi(n){var e=!n||n.batch!==!1;if(!e)return 1;var t=n&&n.maxBatchSize;if(t===void 0)return 1/0;if(typeof t!="number"||t<1)throw new TypeError("maxBatchSize must be a positive number: "+t);return t}s(Zi,"getValidMaxBatchSize");function es(n){var e=n&&n.batchScheduleFn;if(e===void 0)return Ki;if(typeof e!="function")throw new TypeError("batchScheduleFn must be a function: "+e);return e}s(es,"getValidBatchScheduleFn");function ts(n){var e=n&&n.cacheKeyFn;if(e===void 0)return function(t){return t};if(typeof e!="function")throw new TypeError("cacheKeyFn must be a function: "+e);return e}s(ts,"getValidCacheKeyFn");function ns(n){var e=!n||n.cache!==!1;if(!e)return null;var t=n&&n.cacheMap;if(t===void 0)return new Map;if(t!==null){var r=["get","set","delete","clear"],i=r.filter(function(o){return t&&typeof t[o]!="function"});if(i.length!==0)throw new TypeError("Custom cacheMap missing methods: "+i.join(", "))}return t}s(ns,"getValidCacheMap");function rs(n){return n&&n.name?n.name:null}s(rs,"getValidName");function ir(n){return typeof n=="object"&&n!==null&&typeof n.length=="number"&&(n.length===0||n.length>0&&Object.prototype.hasOwnProperty.call(n,n.length-1))}s(ir,"isArrayLike");sr.exports=Xi});var R=s(n=>n.split("/").pop()??"","shopifyGidToId"),b=s((n,e)=>`gid://shopify/${n}/${e}`,"shopifyIdToGid"),N=s(n=>n.toLowerCase().replace(".myshopify.com",""),"toShopName");var z=class{constructor(e,t,r=""){this.revalidationPromises=new Map;this.inFlightRequests=new Map;this.clearCachePromise=null;this.cacheName=e,this.defaultCacheControl=t,this.keyPrefix=r}static{s(this,"FetchCache")}async get(e){try{let t=await caches.open(this.cacheName),r=await t.match(e);if(r&&this.isExpired(r)){await t.delete(e);return}return r}catch(t){console.warn("Cache get error:",t);return}}async set(e,t,r){try{if(r?.includes("no-cache"))return;let i=this.createCacheableResponse(t,r);await(await caches.open(this.cacheName)).put(e,i)}catch(i){console.warn("Cache set error:",i)}}async fetchWithCache(e,t,r){let i=await this.getCacheKey(e,t);if(this.clearCachePromise&&await this.clearCachePromise,this.inFlightRequests.has(i))return this.inFlightRequests.get(i).then(u=>u.clone());let o=(async()=>{let u=await this.get(i);if(u)return this.isStaleButRevalidatable(u)&&this.revalidateInBackground(i,e,t,r),u.clone();let a=await fetch(e,t);return a.ok&&await this.set(i,a.clone(),r??this.defaultCacheControl),a})().finally(()=>{this.inFlightRequests.delete(i)});return this.inFlightRequests.set(i,o),o}async delete(e){try{return await(await caches.open(this.cacheName)).delete(e)}catch(t){return console.warn("Cache delete error:",t),!1}}async clear(){return this.clearCachePromise?this.clearCachePromise:(this.clearCachePromise=new Promise(async(e,t)=>{try{let r=await caches.open(this.cacheName),i=await r.keys();await Promise.all(i.map(o=>r.delete(o))),e()}catch(r){console.warn("Cache clear error:",r),t(r)}}),this.clearCachePromise.then(()=>{this.clearCachePromise=null}).catch(e=>{console.warn("Cache clear error:",e)}))}async keys(){try{return(await(await caches.open(this.cacheName)).keys()).map(r=>r.url)}catch(e){return console.warn("Cache keys error:",e),[]}}async has(e){try{let t=await caches.open(this.cacheName),r=await t.match(e);return r&&this.isExpired(r)?(await t.delete(e),!1):r!==void 0}catch(t){return console.warn("Cache has error:",t),!1}}async getStats(){try{return{total:(await(await caches.open(this.cacheName)).keys()).length}}catch(e){return console.warn("Cache stats error:",e),{total:0}}}async cleanupExpiredEntries(){try{let e=await caches.open(this.cacheName),t=await e.keys(),r=0;for(let o of t){let u=await e.match(o);u&&this.isExpired(u)&&(await e.delete(o),r++)}let i=t.length-r;return{removed:r,remaining:i}}catch(e){return console.warn("Cache cleanup error:",e),{removed:0,remaining:0}}}async getCacheKey(e,t){let r=this.getInputUrl(e),i=`${this.keyPrefix}${r}/${JSON.stringify(t)}`,u=new TextEncoder().encode(i),a=await crypto.subtle.digest("SHA-256",u);return`/${Array.from(new Uint8Array(a)).map(p=>p.toString(16).padStart(2,"0")).join("")}`}getInputUrl(e){return e instanceof URL?e.toString():typeof e=="string"?e:e.url}isExpired(e){let t=e.headers.get("Cache-Control");if(!t)return!1;let r=this.parseMaxAge(t),i=this.parseStaleWhileRevalidate(t);if(r===null)return!1;let o=e.headers.get("Date");if(!o)return!1;let u=new Date(o).getTime(),l=(Date.now()-u)/1e3,c=r+(i??0);return l>c}isStaleButRevalidatable(e){let t=e.headers.get("Cache-Control");if(!t)return!1;let r=this.parseMaxAge(t),i=this.parseStaleWhileRevalidate(t);if(r===null||i===null)return!1;let o=e.headers.get("Date");if(!o)return!1;let u=new Date(o).getTime(),l=(Date.now()-u)/1e3;return l>r&&l<=r+i}async revalidateInBackground(e,t,r,i){if(this.revalidationPromises.has(e))return;let o=(async()=>{try{let u=await fetch(t,r);u.ok&&await this.set(e,u.clone(),i??this.defaultCacheControl)}catch(u){console.warn("Background revalidation error:",u)}finally{this.revalidationPromises.delete(e)}})();this.revalidationPromises.set(e,o)}parseMaxAge(e){let t=new RegExp(/max-age=(\d+)/).exec(e);return t?parseInt(t[1],10):null}parseStaleWhileRevalidate(e){let t=new RegExp(/stale-while-revalidate=(\d+)/).exec(e);return t?parseInt(t[1],10):null}createCacheableResponse(e,t){let r=new Headers(e.headers);return r.set("Cache-Control",t),r.has("Date")||r.set("Date",new Date().toUTCString()),new Response(e.body,{status:e.status,statusText:e.statusText,headers:r})}};var he=class{static{s(this,"AjaxApiClient")}constructor(e){this.config=e;let t=N(e.storeDomain);this.cache=new z(`ajax-api-${t}`,"max-age=60, stale-while-revalidate=3600"),this.cache.cleanupExpiredEntries().catch(r=>{console.warn("Ajax API cache initialization cleanup error:",r)})}patchFetch(){if(!window.fetch||typeof window.fetch!="function")return;let e=window.fetch,t=this.config.responseInterceptor,r=this.getFetchRequest.bind(this);window.fetch=function(...i){let o=e.apply(this,i);if(typeof t=="function"){let u=r(i[0]);o.then(a=>t(a,u))}return o}}getFetchRequest(e){return e instanceof Request?e:new Request(e)}getBaseUrl(){if(!this.config?.storeDomain)throw new Error("Cart API client not initialized - missing store domain");return`https://${this.config.storeDomain}`}fetch(e,t){return(e instanceof Request?e.method:t?.method??"GET")==="GET"?this.cache.fetchWithCache(e,t):fetch(e,t)}async request(e,t={}){let r=`${this.getBaseUrl()}${e}`,i={"Content-Type":"application/json",Accept:"application/json"},o=await this.fetch(r,{...t,headers:{...i,...t.headers}});if(!o.ok){let u;try{u=await o.json()}catch{u={message:`HTTP ${o.status}: ${o.statusText}`,status:o.status.toString(),description:o.statusText}}throw new Error(u.message||u.description)}return o.json()}async fetchCart(){return this.request("/cart.js")}async addToCart(e){let t={...e,items:e.items.map(r=>{let i=R(r.id);if(!i)throw new Error(`Invalid Shopify GID format: ${r.id}`);let o=parseInt(i,10);if(isNaN(o))throw new Error(`Invalid numeric ID extracted from GID: ${r.id}`);return{...r,id:o}})};return this.request("/cart/add.js",{method:"POST",body:JSON.stringify(t)})}async clearCache(){await this.cache.clear()}};var me=class{constructor(e){this.eventMap={"/cart/add":"cart-add","/cart/update":"cart-update","/cart/change":"cart-change","/cart/clear":"cart-clear"};this.eventBus=e,this.processFetchResponse=this.processFetchResponse.bind(this)}static{s(this,"AjaxApiPublisher")}async processFetchResponse(e,t){try{let r=this.getEventName(t.url);if(r){let i=await e.clone().json();this.eventBus.publish(r,i)}}catch(r){console.warn(r)}}getEventName(e){for(let[t,r]of Object.entries(this.eventMap))if(e.includes(t))return r;return null}};function Ir(){let n=document.body||document.documentElement;return n?Promise.resolve(n):new Promise(e=>{window.addEventListener("DOMContentLoaded",()=>e(n))})}s(Ir,"waitForDOM");function ce({onElementFound:n,selector:e,observerOptions:t}){let r=new WeakSet,i=new MutationObserver(l=>{let c=!1;for(let p of l)if(p.addedNodes.length>0){c=!0;break}c&&o()}),o=s(()=>{document.querySelectorAll(e).forEach(l=>{r.has(l)||(u(l),r.add(l))})},"locateElements"),u=s(l=>{if(!t){n(l);return}let c=new IntersectionObserver(p=>{for(let h of p)h.isIntersecting&&(c.disconnect(),n(l))},t);c.observe(l)},"observeElement");return s(async()=>{let l=await Ir();o(),i.observe(l,{childList:!0,subtree:!0})},"locateAndObserveElements")(),i}s(ce,"createElementLocator");function ae({onLocationChange:n,fireOnInit:e=!1}){let t=s(()=>{n(window.location)},"handleChange");window.addEventListener("popstate",t);let r=history.pushState,i=history.replaceState;return history.pushState=function(...o){r.apply(this,o),t()},history.replaceState=function(...o){i.apply(this,o),t()},e&&t(),()=>{window.removeEventListener("popstate",t),history.pushState=r,history.replaceState=i}}s(ae,"createLocationObserver");function Gt({element:n,onHrefChange:e}){let t=s(()=>{e(n.href)},"handleChange"),r=new MutationObserver(()=>{t()});return r.observe(n,{attributes:!0,attributeFilter:["href"]}),()=>{r.disconnect()}}s(Gt,"createHrefObserver");var ye=class{constructor(){this.eventBus=new EventTarget}static{s(this,"EventBus")}subscribe(e,t,r){return Array.isArray(e)||(e=[e]),e.forEach(i=>{this.eventBus.addEventListener(i,t,r)}),()=>{e.forEach(i=>{this.eventBus.removeEventListener(i,t,r)})}}unsubscribe(e,t,r){this.eventBus.removeEventListener(e,t,r)}publish(e,t){this.eventBus.dispatchEvent(new CustomEvent(e,{detail:t}))}};var Ke;function jt(n){return{lang:n?.lang??Ke?.lang,message:n?.message,abortEarly:n?.abortEarly??Ke?.abortEarly,abortPipeEarly:n?.abortPipeEarly??Ke?.abortPipeEarly}}s(jt,"getGlobalConfig");var wr;function br(n){return wr?.get(n)}s(br,"getGlobalMessage");var Er;function Sr(n){return Er?.get(n)}s(Sr,"getSchemaMessage");var Cr;function xr(n,e){return Cr?.get(n)?.get(e)}s(xr,"getSpecificMessage");function Ye(n){let e=typeof n;return e==="string"?`"${n}"`:e==="number"||e==="bigint"||e==="boolean"?`${n}`:e==="object"||e==="function"?(n&&Object.getPrototypeOf(n)?.constructor?.name)??"null":e}s(Ye,"_stringify");function K(n,e,t,r,i){let o=i&&"input"in i?i.input:t.value,u=i?.expected??n.expects??null,a=i?.received??Ye(o),l={kind:n.kind,type:n.type,input:o,expected:u,received:a,message:`Invalid ${e}: ${u?`Expected ${u} but r`:"R"}eceived ${a}`,requirement:n.requirement,path:i?.path,issues:i?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},c=n.kind==="schema",p=i?.message??n.message??xr(n.reference,l.lang)??(c?Sr(l.lang):null)??r.message??br(l.lang);p!==void 0&&(l.message=typeof p=="function"?p(l):p),c&&(t.typed=!1),t.issues?t.issues.push(l):t.issues=[l]}s(K,"_addIssue");function te(n){return{version:1,vendor:"valibot",validate(e){return n["~run"]({value:e},jt())}}}s(te,"_getStandardProps");function kr(n,e){let t=[...new Set(n)];return t.length>1?`(${t.join(` ${e} `)})`:t[0]??"never"}s(kr,"_joinExpects");function Je(n,e){return{kind:"validation",type:"min_value",reference:Je,async:!1,expects:`>=${n instanceof Date?n.toJSON():Ye(n)}`,requirement:n,message:e,"~run"(t,r){return t.typed&&!(t.value>=this.requirement)&&K(this,"value",t,r,{received:t.value instanceof Date?t.value.toJSON():Ye(t.value)}),t}}}s(Je,"minValue");function j(n){return{kind:"transformation",type:"transform",reference:j,async:!1,operation:n,"~run"(e){return e.value=this.operation(e.value),e}}}s(j,"transform");function Ar(n,e,t){return typeof n.fallback=="function"?n.fallback(e,t):n.fallback}s(Ar,"getFallback");function Ht(n,e,t){return typeof n.default=="function"?n.default(e,t):n.default}s(Ht,"getDefault");function Ze(n,e){return{kind:"schema",type:"array",reference:Ze,expects:"Array",async:!1,item:n,message:e,get"~standard"(){return te(this)},"~run"(t,r){let i=t.value;if(Array.isArray(i)){t.typed=!0,t.value=[];for(let o=0;o<i.length;o++){let u=i[o],a=this.item["~run"]({value:u},r);if(a.issues){let l={type:"array",origin:"value",input:i,key:o,value:u};for(let c of a.issues)c.path?c.path.unshift(l):c.path=[l],t.issues?.push(c);if(t.issues||(t.issues=a.issues),r.abortEarly){t.typed=!1;break}}a.typed||(t.typed=!1),t.value.push(a.value)}}else K(this,"type",t,r);return t}}}s(Ze,"array");function F(n){return{kind:"schema",type:"number",reference:F,expects:"number",async:!1,message:n,get"~standard"(){return te(this)},"~run"(e,t){return typeof e.value=="number"&&!isNaN(e.value)?e.typed=!0:K(this,"type",e,t),e}}}s(F,"number");function x(n,e){return{kind:"schema",type:"object",reference:x,expects:"Object",async:!1,entries:n,message:e,get"~standard"(){return te(this)},"~run"(t,r){let i=t.value;if(i&&typeof i=="object"){t.typed=!0,t.value={};for(let o in this.entries){let u=this.entries[o];if(o in i||(u.type==="exact_optional"||u.type==="optional"||u.type==="nullish")&&u.default!==void 0){let a=o in i?i[o]:Ht(u),l=u["~run"]({value:a},r);if(l.issues){let c={type:"object",origin:"value",input:i,key:o,value:a};for(let p of l.issues)p.path?p.path.unshift(c):p.path=[c],t.issues?.push(p);if(t.issues||(t.issues=l.issues),r.abortEarly){t.typed=!1;break}}l.typed||(t.typed=!1),t.value[o]=l.value}else if(u.fallback!==void 0)t.value[o]=Ar(u);else if(u.type!=="exact_optional"&&u.type!=="optional"&&u.type!=="nullish"&&(K(this,"key",t,r,{input:void 0,expected:`"${o}"`,path:[{type:"object",origin:"key",input:i,key:o,value:i[o]}]}),r.abortEarly))break}}else K(this,"type",t,r);return t}}}s(x,"object");function _(n,e){return{kind:"schema",type:"optional",reference:_,expects:`(${n.expects} | undefined)`,async:!1,wrapped:n,default:e,get"~standard"(){return te(this)},"~run"(t,r){return t.value===void 0&&(this.default!==void 0&&(t.value=Ht(this,t,r)),t.value===void 0)?(t.typed=!0,t):this.wrapped["~run"](t,r)}}}s(_,"optional");function g(n){return{kind:"schema",type:"string",reference:g,expects:"string",async:!1,message:n,get"~standard"(){return te(this)},"~run"(e,t){return typeof e.value=="string"?e.typed=!0:K(this,"type",e,t),e}}}s(g,"string");function Mt(n){let e;if(n)for(let t of n)e?e.push(...t.issues):e=t.issues;return e}s(Mt,"_subIssues");function ne(n,e){return{kind:"schema",type:"union",reference:ne,expects:kr(n.map(t=>t.expects),"|"),async:!1,options:n,message:e,get"~standard"(){return te(this)},"~run"(t,r){let i,o,u;for(let a of this.options){let l=a["~run"]({value:t.value},r);if(l.typed)if(l.issues)o?o.push(l):o=[l];else{i=l;break}else u?u.push(l):u=[l]}if(i)return i;if(o){if(o.length===1)return o[0];K(this,"type",t,r,{issues:Mt(o)}),t.typed=!0}else{if(u?.length===1)return u[0];K(this,"type",t,r,{issues:Mt(u)})}return t}}}s(ne,"union");function G(...n){return{...n[0],pipe:n,get"~standard"(){return te(this)},"~run"(e,t){for(let r of n)if(r.kind!=="metadata"){if(e.issues&&(r.kind==="schema"||r.kind==="transformation")){e.typed=!1;break}(!e.issues||!t.abortEarly&&!t.abortPipeEarly)&&(e=r["~run"](e,t))}return e}}}s(G,"pipe");function O(n,e,t){let r=n["~run"]({value:e},jt(t));return{typed:r.typed,success:!r.issues,output:r.value,issues:r.issues}}s(O,"safeParse");var E=class{constructor(e,t,r,i){this.swish=e;this.ui=t;this.eventBus=r;this.options=i}static{s(this,"IntentHandler")}};var Dr=x({productId:G(ne([G(g(),j(R)),F()]),j(n=>Number(n)),F()),variantId:_(G(ne([G(g(),j(R)),F()]),j(Number),F())),quantity:_(G(F(),Je(1))),tags:_(Ze(g()))}),ve=class extends E{static{s(this,"CreateItemHandler")}async invoke(e){let t=O(Dr,e);if(!t.success)return{intent:"create:item",code:"error",message:"Invalid intent data",issues:t.issues.map(f=>f.message)};let{productId:r,variantId:i,quantity:o,tags:u}=t.output,a=await this.swish.storefront.loadSaveIntentData({productId:b("Product",r),variantId:i?b("ProductVariant",i):void 0});if(a.errors)return{intent:"create:item",code:"error",message:a.errors.message??"Failed to load save intent data",issues:a.errors.graphQLErrors?.map(f=>f.message)??[]};if(!a.data||!a.data.product)return{intent:"create:item",code:"error",message:"Failed to load save intent data",issues:["API response missing data"]};let{product:l}=a.data,c=l.variantsCount?.count&&l.variantsCount.count>1,p=!!i,h=!this.options.save.requireVariant||!this.options.save.requireVariantConfirmation&&p;if(!c||h){let f=s(()=>!c&&l.selectedOrFirstAvailableVariant?Number(R(l.selectedOrFirstAvailableVariant.id)):i,"variantIdToUse"),C=await this.swish.api.items.create({productId:r,variantId:f(),quantity:o,tags:u});if("error"in C)return{intent:"create:item",code:"error",message:"Failed to create item",issues:[C.error.message]};if(!C.data)return{intent:"create:item",code:"error",message:"Could not complete item creation",issues:["API response missing data"]};let m="variant"in a.data?a.data.variant:void 0;return{intent:"create:item",code:"ok",data:{item:C.data,product:l,variant:c?m:l.selectedOrFirstAvailableVariant}}}let y=await this.ui.showVariantSelect({productId:r.toString(),variantId:i?.toString()});return y.code==="closed"?{intent:"create:item",code:"closed"}:{intent:"create:item",code:"ok",data:y.data}}};var ge=class extends E{static{s(this,"CreateListHandler")}async invoke(e){let t=await this.ui.showListEditor();if(t.code==="closed")return{intent:"create:list",code:"closed"};let{list:r}=t.data;return{intent:"create:list",code:"ok",data:{list:r}}}};var Rr=x({itemId:g()}),Ie=class extends E{static{s(this,"DeleteItemHandler")}async invoke(e){let t=O(Rr,e);if(!t.success)return{intent:"delete:item",code:"error",message:"Invalid intent data",issues:t.issues.map(o=>o.message)};let{itemId:r}=t.output;if(!this.options.unsave.requireConfirmation){let o=await this.swish.api.items.deleteById(r);return"error"in o?{intent:"delete:item",code:"error",message:"Failed to delete item",issues:[o.error.message]}:{intent:"delete:item",code:"ok",data:{itemId:r}}}return(await this.ui.showUnsaveAlert({itemId:r})).code==="closed"?{intent:"delete:item",code:"closed"}:{intent:"delete:item",code:"ok",data:{itemId:r}}}};var Tr=x({listId:g()}),we=class extends E{static{s(this,"DeleteListHandler")}async invoke(e){let t=O(Tr,e);if(!t.success)return{intent:"delete:list",code:"error",message:"Invalid intent data",issues:t.issues.map(o=>o.message)};let{listId:r}=t.output;return(await this.ui.showDeleteListAlert({listId:r})).code==="closed"?{intent:"delete:list",code:"closed"}:{intent:"delete:list",code:"ok",data:{listId:r}}}};var Pr=x({itemId:g()}),be=class extends E{static{s(this,"EditItemListsHandler")}async invoke(e){let t=O(Pr,e);if(!t.success)return{intent:"edit:item-lists",code:"error",message:"Invalid intent data",issues:t.issues.map(o=>o.message)};let{itemId:r}=t.output,i=await this.ui.showListSelect({itemId:r});if(i.code==="closed")return{intent:"edit:item-lists",code:"closed"};if(i.data.action==="submit"){let{item:o,product:u,variant:a}=i.data.data;return{intent:"edit:item-lists",code:"ok",data:{item:o,product:u,variant:a}}}return{intent:"delete:item",code:"ok",data:{itemId:i.data.data.itemId}}}};var _r=x({itemId:G(g()),productId:G(ne([G(g(),j(R)),F()]),j(n=>Number(n)),F()),variantId:_(G(ne([G(g(),j(R)),F()]),j(n=>Number(n)),F()))}),Ee=class extends E{static{s(this,"EditItemVariantHandler")}async invoke(e){let t=O(_r,e);if(!t.success)return{intent:"edit:item-variant",code:"error",message:"Invalid intent data",issues:t.issues.map(y=>y.message)};let{itemId:r,productId:i,variantId:o}=t.output;if(!(!o||this.swish.options.swishUi.intents.edit.requireVariantConfirmation)){let y=await this.swish.api.items.updateById(r,{productId:i,variantId:o});if("error"in y)return{intent:"edit:item-variant",code:"error",message:"Failed to update variant",issues:[y.error.message]};if(!y.data)return{intent:"edit:item-variant",code:"error",message:"Failed to update variant",issues:["No item returned from API"]};let f=await this.swish.storefront.loadSaveIntentData({productId:b("Product",i),variantId:o?b("ProductVariant",o):void 0});if(!f.data?.product)return{intent:"edit:item-variant",code:"error",message:"Failed to load save intent data",issues:[f.errors?.message??"No product data returned from API"]};let C=f.data?.product,m="variant"in f.data?f.data.variant:void 0;return{intent:"edit:item-variant",code:"ok",data:{item:y.data,product:C,variant:m}}}let a=await this.ui.showVariantSelect({itemId:r,productId:i.toString(),variantId:o?.toString()});if(a.code==="closed")return{intent:"edit:item-variant",code:"closed"};let{item:l,product:c,variant:p}=a.data;return{intent:"edit:item-variant",code:"ok",data:{item:l,product:c,variant:p}}}};var Or=x({listId:g()}),Se=class extends E{static{s(this,"EditListHandler")}async invoke(e){let t=O(Or,e);if(!t.success)return{intent:"edit:list",code:"error",message:"Invalid intent data",issues:t.issues.map(u=>u.message)};let{listId:r}=t.output,i=await this.ui.showListEditor({listId:r});if(i.code==="closed")return{intent:"edit:list",code:"closed"};let{list:o}=i.data;return{intent:"edit:list",code:"ok",data:{list:o}}}};var Ce=class extends E{static{s(this,"OpenHomeHandler")}async invoke(e){return{intent:"open:home",code:(await this.ui.showDrawer()).code,data:void 0}}};var Lr=x({listId:g()}),xe=class extends E{static{s(this,"OpenListMenuHandler")}async invoke(e){let t=O(Lr,e);if(!t.success)return{intent:"open:list-menu",code:"error",message:"Invalid intent data",issues:t.issues.map(o=>o.message)};let{listId:r}=t.output,i=await this.ui.showListMenu({listId:r});return i.code==="closed"?{intent:"open:list-menu",code:"closed"}:i.data.action==="edit"?{intent:"edit:list",code:"ok",data:i.data.data}:{intent:"delete:list",code:"ok",data:{listId:r}}}};var no=x({returnTo:_(g())}),ke=class extends E{static{s(this,"OpenSignInHandler")}async invoke(e){return{intent:"open:sign-in",code:(await this.ui.showSignIn({returnTo:e?.returnTo})).code,data:void 0}}};var qr=x({productId:g(),variantId:_(g())}),Ae=class extends E{static{s(this,"OpenQuickBuyHandler")}async invoke(e){let t=O(qr,e);if(!t.success)return{intent:"open:quick-buy",code:"error",message:"Invalid intent data",issues:t.issues.map(u=>u.message)};let{productId:r,variantId:i}=t.output,o=await this.ui.showQuickBuy({productId:r,variantId:i});return o.code==="closed"?{intent:"open:quick-buy",code:"closed"}:{intent:"open:quick-buy",code:"ok",data:o.data}}};var Y=class{constructor(e,t,r){this.swish=e;this.ui=t;this.options=r}static{s(this,"IntentHook")}};var De=class extends Y{static{s(this,"AfterCreateItemHook")}async invoke(e){if(this.options.save.showToast&&e.code==="ok"){let{item:t,product:r,variant:i}=e.data;r&&(await(await this.swish.intents.invoke("show:toast",{title:"Saved",text:r.title,image:i?.image?.url??r.featuredImage?.url,action:{label:"Add to List"}})).complete).code==="ok"&&this.swish.intents.invoke("edit:item-lists",{itemId:t.id})}}};var Re=class extends Y{static{s(this,"AfterEditItemListsHook")}async invoke(e){if(this.options.edit.showToast&&e.code==="ok"){if("itemId"in e.data)return;let{product:t,variant:r}=e.data;t&&(await(await this.swish.intents.invoke("show:toast",{title:"Saved",text:t.title,image:r?.image?.url??t.featuredImage?.url,action:{label:"View"}})).complete).code==="ok"&&this.swish.intents.invoke("open:home")}}};var Te=class extends Y{static{s(this,"AfterOpenHomeHook")}async invoke(e){if(e.code==="closed"){let t=new URL(window.location.href);t.hash.startsWith("#swish-home")&&(t.hash="",window.history.replaceState({},document.title,t.toString()))}}};var bo=x({title:_(g()),text:g(),image:_(g()),action:_(x({label:g(),url:_(g())}))}),Pe=class extends E{static{s(this,"ShowToastHandler")}async invoke(e){return{intent:"show:toast",code:(await this.ui.showToast(e)).code,data:void 0}}};var _e=class{static{s(this,"Intents")}constructor(e,t){this.swish=e,this.ui=t,this.eventBus=new EventTarget,this.options=e.options.swishUi.intents,this.handlers={"create:item":new ve(this.swish,this.ui,this.eventBus,this.options),"delete:item":new Ie(this.swish,this.ui,this.eventBus,this.options),"edit:item-variant":new Ee(this.swish,this.ui,this.eventBus,this.options),"edit:item-lists":new be(this.swish,this.ui,this.eventBus,this.options),"create:list":new ge(this.swish,this.ui,this.eventBus,this.options),"edit:list":new Se(this.swish,this.ui,this.eventBus,this.options),"delete:list":new we(this.swish,this.ui,this.eventBus,this.options),"open:home":new Ce(this.swish,this.ui,this.eventBus,this.options),"open:list-menu":new xe(this.swish,this.ui,this.eventBus,this.options),"open:sign-in":new ke(this.swish,this.ui,this.eventBus,this.options),"open:quick-buy":new Ae(this.swish,this.ui,this.eventBus,this.options),"show:toast":new Pe(this.swish,this.ui,this.eventBus,this.options)},this.initIntentHooks(),this.initIntentWatcher()}publishAnalyticsEvent(e,t){typeof window.Shopify?.analytics?.publish=="function"&&window.Shopify.analytics.publish(e,t)}async invoke(e,...t){let r=t[0],i={lifecycle:"before",intent:e,data:r};return this.publishAnalyticsEvent("swish-intent",i),this.publishAnalyticsEvent(`swish-intent=${e}`,i),{intent:e,data:r,complete:this.handleIntent(e,r).then(o=>{let u={lifecycle:"after",intent:e,data:r,response:o};return this.publishAnalyticsEvent("swish-intent",u),this.publishAnalyticsEvent(`swish-intent=${e}`,u),this.eventBus.dispatchEvent(new CustomEvent(e,{detail:o})),o})}}listen(e,t){let r=s(o=>{"detail"in o&&o.detail?t(o.detail):console.warn("Intent response event without detail",o)},"eventListener"),i=s(()=>{this.eventBus.removeEventListener(e,r)},"unsubscribe");return this.eventBus.addEventListener(e,r),i}parseIntentFromString(e){if(typeof e=="string"){let[t,...r]=e.split(","),i=r.reduce((o,u)=>{let[a,l]=u.split("=");return o[a]=l,o},{});return{intent:t,data:i}}return{intent:e,data:{}}}parseIntentFromHash(e){let t=e.startsWith("#")?e.slice(1):e;return{"swish-home":"open:home"}[t]||null}async handleIntent(e,t){let r=this.handlers[e];return r?r.invoke(t):{intent:e,code:"error",message:"Invalid intent",issues:[`Intent ${e} not found`]}}initIntentHooks(){this.eventBus.addEventListener("create:item",e=>{new De(this.swish,this.ui,this.options).invoke(e.detail)}),this.eventBus.addEventListener("edit:item-lists",e=>{new Re(this.swish,this.ui,this.options).invoke(e.detail)}),this.eventBus.addEventListener("open:home",e=>{new Te(this.swish,this.ui,this.options).invoke(e.detail)})}initIntentWatcher(){ce({selector:"[swish-intent]",onElementFound:s(e=>{let t=e.getAttribute("swish-intent");t&&e.addEventListener("click",()=>{let{intent:r,data:i}=this.parseIntentFromString(t);Object.keys(i).length>0?this.invoke(r,i):this.invoke(r)})},"onElementFound")}),ce({selector:"a[href*='swish-intent='],a[href*='#swish']",onElementFound:s(e=>{e instanceof HTMLAnchorElement&&e.addEventListener("click",t=>{if(!t.metaKey&&!t.ctrlKey&&!t.shiftKey&&!t.altKey){let r=new URL(e.href),i=r.hash,o=r.searchParams.get("swish-intent");if(o){let{intent:u,data:a}=this.parseIntentFromString(o);u&&(t.preventDefault(),t.stopPropagation(),Object.keys(a).length>0?this.invoke(u,a):this.invoke(u))}else if(i){let u=this.parseIntentFromHash(i);u&&(t.preventDefault(),t.stopPropagation(),this.invoke(u))}}})},"onElementFound")}),ae({fireOnInit:!0,onLocationChange:s(e=>{let t=new URL(e.href),r=t.hash,i=t.searchParams.get("swish-intent");if(i){let{intent:o,data:u}=this.parseIntentFromString(i);o&&(Object.keys(u).length>0?this.invoke(o,u):this.invoke(o))}else if(r){let o=this.parseIntentFromHash(r);o&&this.invoke(o)}},"onLocationChange")})}};var Qt=s(n=>({storefrontApi:{storeDomain:n.storefrontApi?.storeDomain??"",accessToken:n.storefrontApi?.accessToken??""},storefrontContext:{...n.storefrontContext,localization:{country:n.storefrontContext.localization.country.toUpperCase(),language:n.storefrontContext.localization.language.toUpperCase(),market:n.storefrontContext.localization.market}},badges:{getBadges:n.badges?.getBadges??(({defaultBadges:e})=>e)},metafields:{product:n.metafields?.product??[],productVariant:n.metafields?.productVariant??[]},swishApi:{authProxy:n.swishApi?.authProxy??"/apps/wishlist/api",version:n.swishApi?.version??"2026-01"},swishUi:{baseUrl:n.swishUi?.baseUrl??"https://swish.app/cdn",version:n.swishUi?.version??et,components:{productRow:{showVariantTitle:n.swishUi?.components?.productRow?.showVariantTitle??!1},productDetail:{descriptionMaxLines:n.swishUi?.components?.productDetail?.descriptionMaxLines??4},variantSelect:{displayType:n.swishUi?.components?.variantSelect?.displayType??"pills"},imageSlider:{flush:n.swishUi?.components?.imageSlider?.flush??!1,loop:n.swishUi?.components?.imageSlider?.loop??!1},images:{baseTint:n.swishUi?.components?.images?.baseTint??!1},buyButtons:{shopPay:n.swishUi?.components?.buyButtons?.shopPay??!1},listDetailPage:{desktopColumns:n.swishUi?.components?.listDetailPage?.desktopColumns??4,showBuyButton:n.swishUi?.components?.listDetailPage?.showBuyButton??!0},drawer:{title:n.swishUi?.components?.drawer?.title??"",logo:{url:n.swishUi?.components?.drawer?.logo?.url??"",altText:n.swishUi?.components?.drawer?.logo?.altText??""},navigation:{variant:n.swishUi?.components?.drawer?.navigation?.variant??"floating",items:n.swishUi?.components?.drawer?.navigation?.items??[{id:"home",enabled:!0,href:"/"},{id:"items",enabled:!0,href:"/items"},{id:"lists",enabled:!0,href:"/lists"},{id:"chat",enabled:!1,href:"/chat"},{id:"orders",enabled:!0,href:"/orders"},{id:"profile",enabled:!0,href:"/profile"}]},miniMenu:{items:n.swishUi?.components?.drawer?.miniMenu?.items??[]}}},css:n.swishUi?.css??[],intents:{save:{requireVariant:n.swishUi?.intents?.save?.requireVariant??!1,requireVariantConfirmation:n.swishUi?.intents?.save?.requireVariantConfirmation??!1,showToast:n.swishUi?.intents?.save?.showToast??!1},edit:{requireVariantConfirmation:n.swishUi?.intents?.edit?.requireVariantConfirmation??!1,showToast:n.swishUi?.intents?.edit?.showToast??!1},unsave:{requireConfirmation:n.swishUi?.intents?.unsave?.requireConfirmation??!1,openEditor:n.swishUi?.intents?.unsave?.openEditor??!1,showToast:n.swishUi?.intents?.unsave?.showToast??!1}},theme:n.swishUi?.theme??{}}}),"createSwishOptions");var $r=Symbol.for("preact-signals");function Le(){if(J>1)J--;else{for(var n,e=!1;pe!==void 0;){var t=pe;for(pe=void 0,tt++;t!==void 0;){var r=t.o;if(t.o=void 0,t.f&=-3,!(8&t.f)&&Xt(t))try{t.c()}catch(i){e||(n=i,e=!0)}t=r}}if(tt=0,J--,e)throw n}}s(Le,"t");function Z(n){if(J>0)return n();J++;try{return n()}finally{Le()}}s(Z,"r");var I=void 0;function Wt(n){var e=I;I=void 0;try{return n()}finally{I=e}}s(Wt,"n");var pe=void 0,J=0,tt=0,Oe=0;function zt(n){if(I!==void 0){var e=n.n;if(e===void 0||e.t!==I)return e={i:0,S:n,p:I.s,n:void 0,t:I,e:void 0,x:void 0,r:e},I.s!==void 0&&(I.s.n=e),I.s=e,n.n=e,32&I.f&&n.S(e),e;if(e.i===-1)return e.i=0,e.n!==void 0&&(e.n.p=e.p,e.p!==void 0&&(e.p.n=e.n),e.p=I.s,e.n=void 0,I.s.n=e,I.s=e),e}}s(zt,"e");function q(n,e){this.v=n,this.i=0,this.n=void 0,this.t=void 0,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}s(q,"u");q.prototype.brand=$r;q.prototype.h=function(){return!0};q.prototype.S=function(n){var e=this,t=this.t;t!==n&&n.e===void 0&&(n.x=t,this.t=n,t!==void 0?t.e=n:Wt(function(){var r;(r=e.W)==null||r.call(e)}))};q.prototype.U=function(n){var e=this;if(this.t!==void 0){var t=n.e,r=n.x;t!==void 0&&(t.x=r,n.e=void 0),r!==void 0&&(r.e=t,n.x=void 0),n===this.t&&(this.t=r,r===void 0&&Wt(function(){var i;(i=e.Z)==null||i.call(e)}))}};q.prototype.subscribe=function(n){var e=this;return U(function(){var t=e.value,r=I;I=void 0;try{n(t)}finally{I=r}},{name:"sub"})};q.prototype.valueOf=function(){return this.value};q.prototype.toString=function(){return this.value+""};q.prototype.toJSON=function(){return this.value};q.prototype.peek=function(){var n=I;I=void 0;try{return this.value}finally{I=n}};Object.defineProperty(q.prototype,"value",{get:s(function(){var n=zt(this);return n!==void 0&&(n.i=this.i),this.v},"get"),set:s(function(n){if(n!==this.v){if(tt>100)throw new Error("Cycle detected");this.v=n,this.i++,Oe++,J++;try{for(var e=this.t;e!==void 0;e=e.x)e.t.N()}finally{Le()}}},"set")});function k(n,e){return new q(n,e)}s(k,"d");function Xt(n){for(var e=n.s;e!==void 0;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}s(Xt,"c");function Kt(n){for(var e=n.s;e!==void 0;e=e.n){var t=e.S.n;if(t!==void 0&&(e.r=t),e.S.n=e,e.i=-1,e.n===void 0){n.s=e;break}}}s(Kt,"a");function Yt(n){for(var e=n.s,t=void 0;e!==void 0;){var r=e.p;e.i===-1?(e.S.U(e),r!==void 0&&(r.n=e.n),e.n!==void 0&&(e.n.p=r)):t=e,e.S.n=e.r,e.r!==void 0&&(e.r=void 0),e=r}n.s=t}s(Yt,"l");function re(n,e){q.call(this,void 0),this.x=n,this.s=void 0,this.g=Oe-1,this.f=4,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}s(re,"y");re.prototype=new q;re.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Oe))return!0;if(this.g=Oe,this.f|=1,this.i>0&&!Xt(this))return this.f&=-2,!0;var n=I;try{Kt(this),I=this;var e=this.x();(16&this.f||this.v!==e||this.i===0)&&(this.v=e,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return I=n,Yt(this),this.f&=-2,!0};re.prototype.S=function(n){if(this.t===void 0){this.f|=36;for(var e=this.s;e!==void 0;e=e.n)e.S.S(e)}q.prototype.S.call(this,n)};re.prototype.U=function(n){if(this.t!==void 0&&(q.prototype.U.call(this,n),this.t===void 0)){this.f&=-33;for(var e=this.s;e!==void 0;e=e.n)e.S.U(e)}};re.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var n=this.t;n!==void 0;n=n.x)n.t.N()}};Object.defineProperty(re.prototype,"value",{get:s(function(){if(1&this.f)throw new Error("Cycle detected");var n=zt(this);if(this.h(),n!==void 0&&(n.i=this.i),16&this.f)throw this.v;return this.v},"get")});function B(n,e){return new re(n,e)}s(B,"w");function Jt(n){var e=n.u;if(n.u=void 0,typeof e=="function"){J++;var t=I;I=void 0;try{e()}catch(r){throw n.f&=-2,n.f|=8,nt(n),r}finally{I=t,Le()}}}s(Jt,"_");function nt(n){for(var e=n.s;e!==void 0;e=e.n)e.S.U(e);n.x=void 0,n.s=void 0,Jt(n)}s(nt,"b");function Br(n){if(I!==this)throw new Error("Out-of-order effect");Yt(this),I=n,this.f&=-2,8&this.f&&nt(this),Le()}s(Br,"g");function ue(n,e){this.x=n,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32,this.name=e?.name}s(ue,"p");ue.prototype.c=function(){var n=this.S();try{if(8&this.f||this.x===void 0)return;var e=this.x();typeof e=="function"&&(this.u=e)}finally{n()}};ue.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,Jt(this),Kt(this),J++;var n=I;return I=this,Br.bind(this,n)};ue.prototype.N=function(){2&this.f||(this.f|=2,this.o=pe,pe=this)};ue.prototype.d=function(){this.f|=8,1&this.f||nt(this)};ue.prototype.dispose=function(){this.d()};function U(n,e){var t=new ue(n,e);try{t.c()}catch(i){throw t.d(),i}var r=t.d.bind(t);return r[Symbol.dispose]=r,r}s(U,"E");var Vr=/\/products\/([^/?#]+)(?:\?(?:[^#]*?&)?variant=(\d+))?/,rt=s(n=>{let e=n.match(Vr);return e?{productHandle:e[1],variantId:e[2]}:null},"parseProductUrl"),Zt=s(({source:n,onProductUrlChange:e})=>{let t=s(r=>{let i=rt(r);i?.productHandle&&e(i)},"handleChange");if(n instanceof HTMLAnchorElement)return Gt({element:n,onHrefChange:s(r=>t(r),"onHrefChange")});if(n instanceof Location)return ae({onLocationChange:s(r=>t(r.href),"onLocationChange")});throw new Error("Invalid source for observing product url")},"observeProductUrl");var en=s(n=>e=>{let{productHandle:t,productId:r,variantId:i,itemId:o}=e?.dataset??{},l=!!(r||t)||!!o,c=k({loading:!1,productId:r,variantId:i,itemId:o});if(!l){let p=e instanceof HTMLAnchorElement?e:window.location,h=rt(p.href);h?.productHandle&&h.productHandle!==c.value.productHandle&&(c.value={...c.value,...h,productId:void 0},Zt({source:p,onProductUrlChange:s(y=>{c.value={...c.value,...y,productId:y.productHandle!==c.value.productHandle?void 0:c.value.productId}},"onProductUrlChange")}))}return U(()=>{c.value.loading||!c.value.productId&&c.value.productHandle&&(c.value={...c.value,loading:!0},n.storefront.loadProductId({productHandle:c.value.productHandle}).then(p=>{p.errors&&console.error("Error loading product id",p.errors),c.value={...c.value,productId:p.data?.product?.id?R(p.data.product.id):void 0,loading:!1}}))}),c},"itemContextSignal");var tn=s(n=>e=>{let t=B(()=>{let{productId:S,variantId:v,loading:T}=e.value;return!S||T?null:v?`variant:${R(v)}`:`product:${R(S)}`}),r=B(()=>e.value.loading||!!e.value.itemId||!e.value.productId),i=B(()=>({limit:1,query:t.value??void 0})),o=k(!r.value),u=k(null),a=k(!1),l=k(!1),{data:c,loading:p,error:h,refetching:y}=n.state.swishQuery(S=>n.api.items.list(S),{refetch:["item-create","item-update","item-delete"],variables:i,skip:r}),f=k(e.value.itemId??null);U(()=>{Z(()=>{if(o.value=p.value,u.value=h.value,!e.value.itemId){let S=c.value?.[0]?.id??null;S!==f.value&&(f.value=S)}})});async function C(){if(!f.value)return;a.value=!0,(await(await n.intents.invoke("delete:item",{itemId:f.value})).complete).code==="ok"&&(f.value=null),a.value=!1}s(C,"unsave");async function m(){if(!f.value)return;a.value=!0;let v=await(await n.intents.invoke("edit:item-lists",{itemId:f.value})).complete;v.code==="ok"&&"itemId"in v.data&&(f.value=null),a.value=!1}s(m,"update");async function A(){let{productId:S,variantId:v}=e.value;if(!S)return;a.value=!0,l.value=!0;let P=await(await n.intents.invoke("create:item",{productId:S,variantId:v})).complete;if(P.code==="ok"){let le=P.data;f.value=le.item.id,a.value=!1}else P.code==="error"&&console.warn("Failed to create item",P),Z(()=>{a.value=!1,l.value=!1})}s(A,"save");let L=B(()=>o.value||a.value||e.value.loading);U(()=>{l.value&&!a.value&&!y.value&&(l.value=!1)});let D=B(()=>{let S=y.value&&l.value,v=!!f.value,T=!v&&(a.value||S),P=v&&(a.value||S),le=B(()=>T?"saving":P?"unsaving":v?"saved":"unsaved");return{error:u.value,status:le.value,savedItemId:f.value,loading:L.value,submitting:a.value,saved:v,saving:T,unsaving:P}});async function H(){L.value||(D.value.saved&&D.value.savedItemId?m():D.value.saved||await A())}return s(H,"toggle"),Object.assign(D,{save:A,unsave:C,update:m,toggle:H})},"itemStateSignal");var nn=s(n=>()=>{let{data:e,loading:t,error:r}=n.state.swishQuery(()=>n.api.items.count(),{refetch:["item-create","item-delete"]}),i=k(0),o=k(!0),u=k(null);return U(()=>{Z(()=>{o.value=t.value,u.value=r.value,i.value=e.value?.count??0})}),B(()=>({count:i.value,loading:o.value,error:u.value}))},"itemCountSignal");var Nr="token-update",rn=s(n=>(e,t)=>{let r=k(null),i=k(null),o=k(null),u=k(!t?.skip),a=k(!1),l=B(()=>u.value&&a.value);async function c(){if(!t?.skip?.value)try{u.value=!0;let p=await e(t?.variables?.value);Z(()=>{o.value="error"in p?p.error:null,r.value="data"in p?p.data:null,i.value="pageInfo"in p?p.pageInfo:null,u.value=!1,a.value=!0})}catch(p){Z(()=>{o.value=p,u.value=!1,a.value=!0})}}return s(c,"executeFetch"),U(()=>{if(c(),t?.refetch?.length){let p=[...t.refetch,Nr];return n.events.subscribe(p,c)}}),{data:r,pageInfo:i,error:o,loading:u,refetching:l}},"swishQuerySignals");var ie="GraphQL Client";var it="An error occurred while fetching from the API. Review 'graphQLErrors' for details.",st="Response returned unexpected Content-Type:",ot="An unknown error has occurred. The API did not return a data object or any errors in its response.",qe={json:"application/json",multipart:"multipart/mixed"},at="X-SDK-Variant",ut="X-SDK-Version",on="shopify-graphql-client",an="1.4.1",$e=1e3,un=[429,503],lt=/@(defer)\b/i,sn=`\r
8
- `,ln=/boundary="?([^=";]+)"?/i,ct=sn+sn;function W(n,e=ie){return n.startsWith(`${e}`)?n:`${e}: ${n}`}s(W,"formatErrorMessage");function X(n){return n instanceof Error?n.message:JSON.stringify(n)}s(X,"getErrorMessage");function pt(n){return n instanceof Error&&n.cause?n.cause:void 0}s(pt,"getErrorCause");function dt(n){return n.flatMap(({errors:e})=>e??[])}s(dt,"combineErrors");function Be({client:n,retries:e}){if(e!==void 0&&(typeof e!="number"||e<0||e>3))throw new Error(`${n}: The provided "retries" value (${e}) is invalid - it cannot be less than ${0} or greater than ${3}`)}s(Be,"validateRetries");function $(n,e){return e&&(typeof e!="object"||Array.isArray(e)||typeof e=="object"&&Object.keys(e).length>0)?{[n]:e}:{}}s($,"getKeyValueIfValid");function ft(n,e){if(n.length===0)return e;let r={[n.pop()]:e};return n.length===0?r:ft(n,r)}s(ft,"buildDataObjectByPath");function dn(n,e){return Object.keys(e||{}).reduce((t,r)=>(typeof e[r]=="object"||Array.isArray(e[r]))&&n[r]?(t[r]=dn(n[r],e[r]),t):(t[r]=e[r],t),Array.isArray(n)?[...n]:{...n})}s(dn,"combineObjects");function ht([n,...e]){return e.reduce(dn,{...n})}s(ht,"buildCombinedDataObject");function mt({clientLogger:n,customFetchApi:e=fetch,client:t=ie,defaultRetryWaitTime:r=$e,retriableCodes:i=un}){let o=s(async(u,a,l)=>{let c=a+1,p=l+1,h;try{if(h=await e(...u),n({type:"HTTP-Response",content:{requestParams:u,response:h}}),!h.ok&&i.includes(h.status)&&c<=p)throw new Error;let y=h?.headers.get("X-Shopify-API-Deprecated-Reason")||"";return y&&n({type:"HTTP-Response-GraphQL-Deprecation-Notice",content:{requestParams:u,deprecationNotice:y}}),h}catch(y){if(c<=p){let f=h?.headers.get("Retry-After");return await Ur(f?parseInt(f,10):r),n({type:"HTTP-Retry",content:{requestParams:u,lastResponse:h,retryAttempt:a,maxRetries:l}}),o(u,c,l)}throw new Error(W(`${l>0?`Attempted maximum number of ${l} network retries. Last message - `:""}${X(y)}`,t))}},"httpFetch");return o}s(mt,"generateHttpFetch");async function Ur(n){return new Promise(e=>setTimeout(e,n))}s(Ur,"sleep");function yt({headers:n,url:e,customFetchApi:t=fetch,retries:r=0,logger:i}){Be({client:ie,retries:r});let o={headers:n,url:e,retries:r},u=Fr(i),a=mt({customFetchApi:t,clientLogger:u,defaultRetryWaitTime:$e}),l=Gr(a,o),c=Mr(l),p=Kr(l);return{config:o,fetch:l,request:c,requestStream:p}}s(yt,"createGraphQLClient");function Fr(n){return e=>{n&&n(e)}}s(Fr,"generateClientLogger");async function fn(n){let{errors:e,data:t,extensions:r}=await n.json();return{...$("data",t),...$("extensions",r),headers:n.headers,...e||!t?{errors:{networkStatusCode:n.status,message:W(e?it:ot),...$("graphQLErrors",e),response:n}}:{}}}s(fn,"processJSONResponse");function Gr(n,{url:e,headers:t,retries:r}){return async(i,o={})=>{let{variables:u,headers:a,url:l,retries:c,keepalive:p,signal:h}=o,y=JSON.stringify({query:i,variables:u});Be({client:ie,retries:c});let f=Object.entries({...t,...a}).reduce((m,[A,L])=>(m[A]=Array.isArray(L)?L.join(", "):L.toString(),m),{});return!f[at]&&!f[ut]&&(f[at]=on,f[ut]=an),n([l??e,{method:"POST",headers:f,body:y,signal:h,keepalive:p}],1,c??r)}}s(Gr,"generateFetch");function Mr(n){return async(...e)=>{if(lt.test(e[0]))throw new Error(W("This operation will result in a streamable response - use requestStream() instead."));let t=null;try{t=await n(...e);let{status:r,statusText:i}=t,o=t.headers.get("content-type")||"";return t.ok?o.includes(qe.json)?await fn(t):{errors:{networkStatusCode:r,message:W(`${st} ${o}`),response:t}}:{errors:{networkStatusCode:r,message:W(i),response:t}}}catch(r){return{errors:{message:X(r),...t==null?{}:{networkStatusCode:t.status,response:t}}}}}}s(Mr,"generateRequest");async function*jr(n){let e=new TextDecoder;if(n.body[Symbol.asyncIterator])for await(let t of n.body)yield e.decode(t);else{let t=n.body.getReader(),r;try{for(;!(r=await t.read()).done;)yield e.decode(r.value)}finally{t.cancel()}}}s(jr,"getStreamBodyIterator");function Hr(n,e){return{async*[Symbol.asyncIterator](){try{let t="";for await(let r of n)if(t+=r,t.indexOf(e)>-1){let i=t.lastIndexOf(e),u=t.slice(0,i).split(e).filter(a=>a.trim().length>0).map(a=>a.slice(a.indexOf(ct)+ct.length).trim());u.length>0&&(yield u),t=t.slice(i+e.length),t.trim()==="--"&&(t="")}}catch(t){throw new Error(`Error occured while processing stream payload - ${X(t)}`)}}}}s(Hr,"readStreamChunk");function Qr(n){return{async*[Symbol.asyncIterator](){yield{...await fn(n),hasNext:!1}}}}s(Qr,"createJsonResponseAsyncIterator");function Wr(n){return n.map(e=>{try{return JSON.parse(e)}catch(t){throw new Error(`Error in parsing multipart response - ${X(t)}`)}}).map(e=>{let{data:t,incremental:r,hasNext:i,extensions:o,errors:u}=e;if(!r)return{data:t||{},...$("errors",u),...$("extensions",o),hasNext:i};let a=r.map(({data:l,path:c,errors:p})=>({data:l&&c?ft(c,l):{},...$("errors",p)}));return{data:a.length===1?a[0].data:ht([...a.map(({data:l})=>l)]),...$("errors",dt(a)),hasNext:i}})}s(Wr,"getResponseDataFromChunkBodies");function zr(n,e){if(n.length>0)throw new Error(it,{cause:{graphQLErrors:n}});if(Object.keys(e).length===0)throw new Error(ot)}s(zr,"validateResponseData");function Xr(n,e){let t=(e??"").match(ln),r=`--${t?t[1]:"-"}`;if(!n.body?.getReader&&!n.body?.[Symbol.asyncIterator])throw new Error("API multipart response did not return an iterable body",{cause:n});let i=jr(n),o={},u;return{async*[Symbol.asyncIterator](){try{let a=!0;for await(let l of Hr(i,r)){let c=Wr(l);u=c.find(h=>h.extensions)?.extensions??u;let p=dt(c);o=ht([o,...c.map(({data:h})=>h)]),a=c.slice(-1)[0].hasNext,zr(p,o),yield{...$("data",o),...$("extensions",u),hasNext:a}}if(a)throw new Error("Response stream terminated unexpectedly")}catch(a){let l=pt(a);yield{...$("data",o),...$("extensions",u),errors:{message:W(X(a)),networkStatusCode:n.status,...$("graphQLErrors",l?.graphQLErrors),response:n},hasNext:!1}}}}}s(Xr,"createMultipartResponseAsyncInterator");function Kr(n){return async(...e)=>{if(!lt.test(e[0]))throw new Error(W("This operation does not result in a streamable response - use request() instead."));try{let t=await n(...e),{statusText:r}=t;if(!t.ok)throw new Error(r,{cause:t});let i=t.headers.get("content-type")||"";switch(!0){case i.includes(qe.json):return Qr(t);case i.includes(qe.multipart):return Xr(t,i);default:throw new Error(`${st} ${i}`,{cause:t})}}catch(t){return{async*[Symbol.asyncIterator](){let r=pt(t);yield{errors:{message:W(X(t)),...$("networkStatusCode",r?.status),...$("response",r)},hasNext:!1}}}}}}s(Kr,"generateRequestStream");function vt({client:n,storeDomain:e}){try{if(!e||typeof e!="string")throw new Error;let t=e.trim(),r=t.match(/^https?:/)?t:`https://${t}`,i=new URL(r);return i.protocol="https",i.origin}catch(t){throw new Error(`${n}: a valid store domain ("${e}") must be provided`,{cause:t})}}s(vt,"validateDomainAndGetStoreUrl");function Ve({client:n,currentSupportedApiVersions:e,apiVersion:t,logger:r}){let i=`${n}: the provided apiVersion ("${t}")`,o=`Currently supported API versions: ${e.join(", ")}`;if(!t||typeof t!="string")throw new Error(`${i} is invalid. ${o}`);let u=t.trim();e.includes(u)||(r?r({type:"Unsupported_Api_Version",content:{apiVersion:t,supportedApiVersions:e}}):console.warn(`${i} is likely deprecated or not supported. ${o}`))}s(Ve,"validateApiVersion");function Ne(n){let e=n*3-2;return e===10?e:`0${e}`}s(Ne,"getQuarterMonth");function gt(n,e,t){let r=e-t;return r<=0?`${n-1}-${Ne(r+4)}`:`${n}-${Ne(r)}`}s(gt,"getPrevousVersion");function hn(){let n=new Date,e=n.getUTCMonth(),t=n.getUTCFullYear(),r=Math.floor(e/3+1);return{year:t,quarter:r,version:`${t}-${Ne(r)}`}}s(hn,"getCurrentApiVersion");function It(){let{year:n,quarter:e,version:t}=hn(),r=e===4?`${n+1}-01`:`${n}-${Ne(e+1)}`;return[gt(n,e,3),gt(n,e,2),gt(n,e,1),t,r,"unstable"]}s(It,"getCurrentSupportedApiVersions");function wt(n){return e=>({...e??{},...n.headers})}s(wt,"generateGetHeaders");function bt({getHeaders:n,getApiUrl:e}){return(t,r)=>{let i=[t];if(r&&Object.keys(r).length>0){let{variables:o,apiVersion:u,headers:a,retries:l,signal:c}=r;i.push({...o?{variables:o}:{},...a?{headers:n(a)}:{},...u?{url:e(u)}:{},...l?{retries:l}:{},...c?{signal:c}:{}})}return i}}s(bt,"generateGetGQLClientParams");var Et="application/json",mn="storefront-api-client",yn="1.0.9",vn="X-Shopify-Storefront-Access-Token",gn="Shopify-Storefront-Private-Token",In="X-SDK-Variant",wn="X-SDK-Version",bn="X-SDK-Variant-Source",se="Storefront API Client";function En(n){if(n&&typeof window<"u")throw new Error(`${se}: private access tokens and headers should only be used in a server-to-server implementation. Use the public API access token in nonserver environments.`)}s(En,"validatePrivateAccessTokenUsage");function Sn(n,e){if(!n&&!e)throw new Error(`${se}: a public or private access token must be provided`);if(n&&e)throw new Error(`${se}: only provide either a public or private access token`)}s(Sn,"validateRequiredAccessTokens");function St({storeDomain:n,apiVersion:e,publicAccessToken:t,privateAccessToken:r,clientName:i,retries:o=0,customFetchApi:u,logger:a}){let l=It(),c=vt({client:se,storeDomain:n}),p={client:se,currentSupportedApiVersions:l,logger:a};Ve({...p,apiVersion:e}),Sn(t,r),En(r);let h=Yr(c,e,p),y={storeDomain:c,apiVersion:e,...t?{publicAccessToken:t}:{privateAccessToken:r},headers:{"Content-Type":Et,Accept:Et,[In]:mn,[wn]:yn,...i?{[bn]:i}:{},...t?{[vn]:t}:{[gn]:r}},apiUrl:h(),clientName:i},f=yt({headers:y.headers,url:y.apiUrl,retries:o,customFetchApi:u,logger:a}),C=wt(y),m=Jr(y,h),A=bt({getHeaders:C,getApiUrl:m});return Object.freeze({config:y,getHeaders:C,getApiUrl:m,fetch:s((...D)=>f.fetch(...A(...D)),"fetch"),request:s((...D)=>f.request(...A(...D)),"request"),requestStream:s((...D)=>f.requestStream(...A(...D)),"requestStream")})}s(St,"createStorefrontApiClient");function Yr(n,e,t){return r=>{r&&Ve({...t,apiVersion:r});let i=(r??e).trim();return`${n}/api/${i}/graphql.json`}}s(Yr,"generateApiUrlFormatter");function Jr(n,e){return t=>t?e(t):n.apiUrl}s(Jr,"generateGetApiUrl");var V=`
7
+ `+String(r)));Lt(e);for(var i=0;i<e.callbacks.length;i++){var o=r[i];o instanceof Error?e.callbacks[i].reject(o):e.callbacks[i].resolve(o)}}).catch(function(r){Ot(n,e,r)})}s(Ji,"dispatchBatch");function Ot(n,e,t){Lt(e);for(var r=0;r<e.keys.length;r++)n.clear(e.keys[r]),e.callbacks[r].reject(t)}s(Ot,"failedDispatch");function Lt(n){if(n.cacheHits)for(var e=0;e<n.cacheHits.length;e++)n.cacheHits[e]()}s(Lt,"resolveCacheHits");function Zi(n){var e=!n||n.batch!==!1;if(!e)return 1;var t=n&&n.maxBatchSize;if(t===void 0)return 1/0;if(typeof t!="number"||t<1)throw new TypeError("maxBatchSize must be a positive number: "+t);return t}s(Zi,"getValidMaxBatchSize");function es(n){var e=n&&n.batchScheduleFn;if(e===void 0)return Ki;if(typeof e!="function")throw new TypeError("batchScheduleFn must be a function: "+e);return e}s(es,"getValidBatchScheduleFn");function ts(n){var e=n&&n.cacheKeyFn;if(e===void 0)return function(t){return t};if(typeof e!="function")throw new TypeError("cacheKeyFn must be a function: "+e);return e}s(ts,"getValidCacheKeyFn");function ns(n){var e=!n||n.cache!==!1;if(!e)return null;var t=n&&n.cacheMap;if(t===void 0)return new Map;if(t!==null){var r=["get","set","delete","clear"],i=r.filter(function(o){return t&&typeof t[o]!="function"});if(i.length!==0)throw new TypeError("Custom cacheMap missing methods: "+i.join(", "))}return t}s(ns,"getValidCacheMap");function rs(n){return n&&n.name?n.name:null}s(rs,"getValidName");function ir(n){return typeof n=="object"&&n!==null&&typeof n.length=="number"&&(n.length===0||n.length>0&&Object.prototype.hasOwnProperty.call(n,n.length-1))}s(ir,"isArrayLike");sr.exports=Xi});var R=s(n=>n.split("/").pop()??"","shopifyGidToId"),b=s((n,e)=>`gid://shopify/${n}/${e}`,"shopifyIdToGid"),U=s(n=>n.toLowerCase().replace(".myshopify.com",""),"toShopName");var z=class{constructor(e,t,r=""){this.revalidationPromises=new Map;this.inFlightRequests=new Map;this.clearCachePromise=null;this.cacheName=e,this.defaultCacheControl=t,this.keyPrefix=r}static{s(this,"FetchCache")}async get(e){try{let t=await caches.open(this.cacheName),r=await t.match(e);if(r&&this.isExpired(r)){await t.delete(e);return}return r}catch(t){console.warn("Cache get error:",t);return}}async set(e,t,r){try{if(r?.includes("no-cache"))return;let i=this.createCacheableResponse(t,r);await(await caches.open(this.cacheName)).put(e,i)}catch(i){console.warn("Cache set error:",i)}}async fetchWithCache(e,t,r){let i=await this.getCacheKey(e,t);if(this.clearCachePromise&&await this.clearCachePromise,this.inFlightRequests.has(i))return this.inFlightRequests.get(i).then(u=>u.clone());let o=(async()=>{let u=await this.get(i);if(u)return this.isStaleButRevalidatable(u)&&this.revalidateInBackground(i,e,t,r),u.clone();let a=await fetch(e,t);return a.ok&&await this.set(i,a.clone(),r??this.defaultCacheControl),a})().finally(()=>{this.inFlightRequests.delete(i)});return this.inFlightRequests.set(i,o),o}async delete(e){try{return await(await caches.open(this.cacheName)).delete(e)}catch(t){return console.warn("Cache delete error:",t),!1}}async clear(){return this.clearCachePromise?this.clearCachePromise:(this.clearCachePromise=new Promise(async(e,t)=>{try{let r=await caches.open(this.cacheName),i=await r.keys();await Promise.all(i.map(o=>r.delete(o))),e()}catch(r){console.warn("Cache clear error:",r),t(r)}}),this.clearCachePromise.then(()=>{this.clearCachePromise=null}).catch(e=>{console.warn("Cache clear error:",e)}))}async keys(){try{return(await(await caches.open(this.cacheName)).keys()).map(r=>r.url)}catch(e){return console.warn("Cache keys error:",e),[]}}async has(e){try{let t=await caches.open(this.cacheName),r=await t.match(e);return r&&this.isExpired(r)?(await t.delete(e),!1):r!==void 0}catch(t){return console.warn("Cache has error:",t),!1}}async getStats(){try{return{total:(await(await caches.open(this.cacheName)).keys()).length}}catch(e){return console.warn("Cache stats error:",e),{total:0}}}async cleanupExpiredEntries(){try{let e=await caches.open(this.cacheName),t=await e.keys(),r=0;for(let o of t){let u=await e.match(o);u&&this.isExpired(u)&&(await e.delete(o),r++)}let i=t.length-r;return{removed:r,remaining:i}}catch(e){return console.warn("Cache cleanup error:",e),{removed:0,remaining:0}}}async getCacheKey(e,t){let r=this.getInputUrl(e),i=`${this.keyPrefix}${r}/${JSON.stringify(t)}`,u=new TextEncoder().encode(i),a=await crypto.subtle.digest("SHA-256",u);return`/${Array.from(new Uint8Array(a)).map(p=>p.toString(16).padStart(2,"0")).join("")}`}getInputUrl(e){return e instanceof URL?e.toString():typeof e=="string"?e:e.url}isExpired(e){let t=e.headers.get("Cache-Control");if(!t)return!1;let r=this.parseMaxAge(t),i=this.parseStaleWhileRevalidate(t);if(r===null)return!1;let o=e.headers.get("Date");if(!o)return!1;let u=new Date(o).getTime(),l=(Date.now()-u)/1e3,c=r+(i??0);return l>c}isStaleButRevalidatable(e){let t=e.headers.get("Cache-Control");if(!t)return!1;let r=this.parseMaxAge(t),i=this.parseStaleWhileRevalidate(t);if(r===null||i===null)return!1;let o=e.headers.get("Date");if(!o)return!1;let u=new Date(o).getTime(),l=(Date.now()-u)/1e3;return l>r&&l<=r+i}async revalidateInBackground(e,t,r,i){if(this.revalidationPromises.has(e))return;let o=(async()=>{try{let u=await fetch(t,r);u.ok&&await this.set(e,u.clone(),i??this.defaultCacheControl)}catch(u){console.warn("Background revalidation error:",u)}finally{this.revalidationPromises.delete(e)}})();this.revalidationPromises.set(e,o)}parseMaxAge(e){let t=new RegExp(/max-age=(\d+)/).exec(e);return t?parseInt(t[1],10):null}parseStaleWhileRevalidate(e){let t=new RegExp(/stale-while-revalidate=(\d+)/).exec(e);return t?parseInt(t[1],10):null}createCacheableResponse(e,t){let r=new Headers(e.headers);return r.set("Cache-Control",t),r.has("Date")||r.set("Date",new Date().toUTCString()),new Response(e.body,{status:e.status,statusText:e.statusText,headers:r})}};var he=class{static{s(this,"AjaxApiClient")}constructor(e){this.config=e;let t=U(e.storeDomain);this.cache=new z(`ajax-api-${t}`,"max-age=60, stale-while-revalidate=3600"),this.cache.cleanupExpiredEntries().catch(r=>{console.warn("Ajax API cache initialization cleanup error:",r)})}patchFetch(){if(!window.fetch||typeof window.fetch!="function")return;let e=window.fetch,t=this.config.responseInterceptor,r=this.getFetchRequest.bind(this);window.fetch=function(...i){let o=e.apply(this,i);if(typeof t=="function"){let u=r(i[0]);o.then(a=>t(a,u))}return o}}getFetchRequest(e){return e instanceof Request?e:new Request(e)}getBaseUrl(){if(!this.config?.storeDomain)throw new Error("Cart API client not initialized - missing store domain");return`https://${this.config.storeDomain}`}fetch(e,t){return(e instanceof Request?e.method:t?.method??"GET")==="GET"?this.cache.fetchWithCache(e,t):fetch(e,t)}async request(e,t={}){let r=`${this.getBaseUrl()}${e}`,i={"Content-Type":"application/json",Accept:"application/json"},o=await this.fetch(r,{...t,headers:{...i,...t.headers}});if(!o.ok){let u;try{u=await o.json()}catch{u={message:`HTTP ${o.status}: ${o.statusText}`,status:o.status.toString(),description:o.statusText}}throw new Error(u.message||u.description)}return o.json()}async fetchCart(){return this.request("/cart.js")}async addToCart(e){let t={...e,items:e.items.map(r=>{let i=R(r.id);if(!i)throw new Error(`Invalid Shopify GID format: ${r.id}`);let o=parseInt(i,10);if(isNaN(o))throw new Error(`Invalid numeric ID extracted from GID: ${r.id}`);return{...r,id:o}})};return this.request("/cart/add.js",{method:"POST",body:JSON.stringify(t)})}async clearCache(){await this.cache.clear()}};var me=class{constructor(e){this.eventMap={"/cart/add":"cart-add","/cart/update":"cart-update","/cart/change":"cart-change","/cart/clear":"cart-clear"};this.eventBus=e,this.processFetchResponse=this.processFetchResponse.bind(this)}static{s(this,"AjaxApiPublisher")}async processFetchResponse(e,t){try{let r=this.getEventName(t.url);if(r){let i=await e.clone().json();this.eventBus.publish(r,i)}}catch(r){console.warn(r)}}getEventName(e){for(let[t,r]of Object.entries(this.eventMap))if(e.includes(t))return r;return null}};function wr(){let n=document.body||document.documentElement;return n?Promise.resolve(n):new Promise(e=>{window.addEventListener("DOMContentLoaded",()=>e(n))})}s(wr,"waitForDOM");function ce({onElementFound:n,selector:e,observerOptions:t}){let r=new WeakSet,i=new MutationObserver(l=>{let c=!1;for(let p of l)if(p.addedNodes.length>0){c=!0;break}c&&o()}),o=s(()=>{document.querySelectorAll(e).forEach(l=>{r.has(l)||(u(l),r.add(l))})},"locateElements"),u=s(l=>{if(!t){n(l);return}let c=new IntersectionObserver(p=>{for(let h of p)h.isIntersecting&&(c.disconnect(),n(l))},t);c.observe(l)},"observeElement");return s(async()=>{let l=await wr();o(),i.observe(l,{childList:!0,subtree:!0})},"locateAndObserveElements")(),i}s(ce,"createElementLocator");function ae({onLocationChange:n,fireOnInit:e=!1}){let t=s(()=>{n(window.location)},"handleChange");window.addEventListener("popstate",t);let r=history.pushState,i=history.replaceState;return history.pushState=function(...o){r.apply(this,o),t()},history.replaceState=function(...o){i.apply(this,o),t()},e&&t(),()=>{window.removeEventListener("popstate",t),history.pushState=r,history.replaceState=i}}s(ae,"createLocationObserver");function Gt({element:n,onHrefChange:e}){let t=s(()=>{e(n.href)},"handleChange"),r=new MutationObserver(()=>{t()});return r.observe(n,{attributes:!0,attributeFilter:["href"]}),()=>{r.disconnect()}}s(Gt,"createHrefObserver");var ye=class{constructor(){this.eventBus=new EventTarget}static{s(this,"EventBus")}subscribe(e,t,r){return Array.isArray(e)||(e=[e]),e.forEach(i=>{this.eventBus.addEventListener(i,t,r)}),()=>{e.forEach(i=>{this.eventBus.removeEventListener(i,t,r)})}}unsubscribe(e,t,r){this.eventBus.removeEventListener(e,t,r)}publish(e,t){this.eventBus.dispatchEvent(new CustomEvent(e,{detail:t}))}};var Ye;function jt(n){return{lang:n?.lang??Ye?.lang,message:n?.message,abortEarly:n?.abortEarly??Ye?.abortEarly,abortPipeEarly:n?.abortPipeEarly??Ye?.abortPipeEarly}}s(jt,"getGlobalConfig");var Ir;function br(n){return Ir?.get(n)}s(br,"getGlobalMessage");var Er;function Sr(n){return Er?.get(n)}s(Sr,"getSchemaMessage");var Cr;function xr(n,e){return Cr?.get(n)?.get(e)}s(xr,"getSpecificMessage");function Je(n){let e=typeof n;return e==="string"?`"${n}"`:e==="number"||e==="bigint"||e==="boolean"?`${n}`:e==="object"||e==="function"?(n&&Object.getPrototypeOf(n)?.constructor?.name)??"null":e}s(Je,"_stringify");function K(n,e,t,r,i){let o=i&&"input"in i?i.input:t.value,u=i?.expected??n.expects??null,a=i?.received??Je(o),l={kind:n.kind,type:n.type,input:o,expected:u,received:a,message:`Invalid ${e}: ${u?`Expected ${u} but r`:"R"}eceived ${a}`,requirement:n.requirement,path:i?.path,issues:i?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},c=n.kind==="schema",p=i?.message??n.message??xr(n.reference,l.lang)??(c?Sr(l.lang):null)??r.message??br(l.lang);p!==void 0&&(l.message=typeof p=="function"?p(l):p),c&&(t.typed=!1),t.issues?t.issues.push(l):t.issues=[l]}s(K,"_addIssue");function te(n){return{version:1,vendor:"valibot",validate(e){return n["~run"]({value:e},jt())}}}s(te,"_getStandardProps");function kr(n,e){let t=[...new Set(n)];return t.length>1?`(${t.join(` ${e} `)})`:t[0]??"never"}s(kr,"_joinExpects");function Ze(n,e){return{kind:"validation",type:"min_value",reference:Ze,async:!1,expects:`>=${n instanceof Date?n.toJSON():Je(n)}`,requirement:n,message:e,"~run"(t,r){return t.typed&&!(t.value>=this.requirement)&&K(this,"value",t,r,{received:t.value instanceof Date?t.value.toJSON():Je(t.value)}),t}}}s(Ze,"minValue");function j(n){return{kind:"transformation",type:"transform",reference:j,async:!1,operation:n,"~run"(e){return e.value=this.operation(e.value),e}}}s(j,"transform");function Ar(n,e,t){return typeof n.fallback=="function"?n.fallback(e,t):n.fallback}s(Ar,"getFallback");function Ht(n,e,t){return typeof n.default=="function"?n.default(e,t):n.default}s(Ht,"getDefault");function et(n,e){return{kind:"schema",type:"array",reference:et,expects:"Array",async:!1,item:n,message:e,get"~standard"(){return te(this)},"~run"(t,r){let i=t.value;if(Array.isArray(i)){t.typed=!0,t.value=[];for(let o=0;o<i.length;o++){let u=i[o],a=this.item["~run"]({value:u},r);if(a.issues){let l={type:"array",origin:"value",input:i,key:o,value:u};for(let c of a.issues)c.path?c.path.unshift(l):c.path=[l],t.issues?.push(c);if(t.issues||(t.issues=a.issues),r.abortEarly){t.typed=!1;break}}a.typed||(t.typed=!1),t.value.push(a.value)}}else K(this,"type",t,r);return t}}}s(et,"array");function F(n){return{kind:"schema",type:"number",reference:F,expects:"number",async:!1,message:n,get"~standard"(){return te(this)},"~run"(e,t){return typeof e.value=="number"&&!isNaN(e.value)?e.typed=!0:K(this,"type",e,t),e}}}s(F,"number");function x(n,e){return{kind:"schema",type:"object",reference:x,expects:"Object",async:!1,entries:n,message:e,get"~standard"(){return te(this)},"~run"(t,r){let i=t.value;if(i&&typeof i=="object"){t.typed=!0,t.value={};for(let o in this.entries){let u=this.entries[o];if(o in i||(u.type==="exact_optional"||u.type==="optional"||u.type==="nullish")&&u.default!==void 0){let a=o in i?i[o]:Ht(u),l=u["~run"]({value:a},r);if(l.issues){let c={type:"object",origin:"value",input:i,key:o,value:a};for(let p of l.issues)p.path?p.path.unshift(c):p.path=[c],t.issues?.push(p);if(t.issues||(t.issues=l.issues),r.abortEarly){t.typed=!1;break}}l.typed||(t.typed=!1),t.value[o]=l.value}else if(u.fallback!==void 0)t.value[o]=Ar(u);else if(u.type!=="exact_optional"&&u.type!=="optional"&&u.type!=="nullish"&&(K(this,"key",t,r,{input:void 0,expected:`"${o}"`,path:[{type:"object",origin:"key",input:i,key:o,value:i[o]}]}),r.abortEarly))break}}else K(this,"type",t,r);return t}}}s(x,"object");function _(n,e){return{kind:"schema",type:"optional",reference:_,expects:`(${n.expects} | undefined)`,async:!1,wrapped:n,default:e,get"~standard"(){return te(this)},"~run"(t,r){return t.value===void 0&&(this.default!==void 0&&(t.value=Ht(this,t,r)),t.value===void 0)?(t.typed=!0,t):this.wrapped["~run"](t,r)}}}s(_,"optional");function g(n){return{kind:"schema",type:"string",reference:g,expects:"string",async:!1,message:n,get"~standard"(){return te(this)},"~run"(e,t){return typeof e.value=="string"?e.typed=!0:K(this,"type",e,t),e}}}s(g,"string");function Mt(n){let e;if(n)for(let t of n)e?e.push(...t.issues):e=t.issues;return e}s(Mt,"_subIssues");function ne(n,e){return{kind:"schema",type:"union",reference:ne,expects:kr(n.map(t=>t.expects),"|"),async:!1,options:n,message:e,get"~standard"(){return te(this)},"~run"(t,r){let i,o,u;for(let a of this.options){let l=a["~run"]({value:t.value},r);if(l.typed)if(l.issues)o?o.push(l):o=[l];else{i=l;break}else u?u.push(l):u=[l]}if(i)return i;if(o){if(o.length===1)return o[0];K(this,"type",t,r,{issues:Mt(o)}),t.typed=!0}else{if(u?.length===1)return u[0];K(this,"type",t,r,{issues:Mt(u)})}return t}}}s(ne,"union");function G(...n){return{...n[0],pipe:n,get"~standard"(){return te(this)},"~run"(e,t){for(let r of n)if(r.kind!=="metadata"){if(e.issues&&(r.kind==="schema"||r.kind==="transformation")){e.typed=!1;break}(!e.issues||!t.abortEarly&&!t.abortPipeEarly)&&(e=r["~run"](e,t))}return e}}}s(G,"pipe");function O(n,e,t){let r=n["~run"]({value:e},jt(t));return{typed:r.typed,success:!r.issues,output:r.value,issues:r.issues}}s(O,"safeParse");var E=class{constructor(e,t,r,i){this.swish=e;this.ui=t;this.eventBus=r;this.options=i}static{s(this,"IntentHandler")}};var Dr=x({productId:G(ne([G(g(),j(R)),F()]),j(n=>Number(n)),F()),variantId:_(G(ne([G(g(),j(R)),F()]),j(Number),F())),quantity:_(G(F(),Ze(1))),tags:_(et(g()))}),ve=class extends E{static{s(this,"CreateItemHandler")}async invoke(e){let t=O(Dr,e);if(!t.success)return{intent:"create:item",code:"error",message:"Invalid intent data",issues:t.issues.map(f=>f.message)};let{productId:r,variantId:i,quantity:o,tags:u}=t.output,a=await this.swish.storefront.loadSaveIntentData({productId:b("Product",r),variantId:i?b("ProductVariant",i):void 0});if(a.errors)return{intent:"create:item",code:"error",message:a.errors.message??"Failed to load save intent data",issues:a.errors.graphQLErrors?.map(f=>f.message)??[]};if(!a.data||!a.data.product)return{intent:"create:item",code:"error",message:"Failed to load save intent data",issues:["API response missing data"]};let{product:l}=a.data,c=l.variantsCount?.count&&l.variantsCount.count>1,p=!!i,h=!this.options.save.requireVariant||!this.options.save.requireVariantConfirmation&&p;if(!c||h){let f=s(()=>!c&&l.selectedOrFirstAvailableVariant?Number(R(l.selectedOrFirstAvailableVariant.id)):i,"variantIdToUse"),C=await this.swish.api.items.create({productId:r,variantId:f(),quantity:o,tags:u});if("error"in C)return{intent:"create:item",code:"error",message:"Failed to create item",issues:[C.error.message]};if(!C.data)return{intent:"create:item",code:"error",message:"Could not complete item creation",issues:["API response missing data"]};let m="variant"in a.data?a.data.variant:void 0;return{intent:"create:item",code:"ok",data:{item:C.data,product:l,variant:c?m:l.selectedOrFirstAvailableVariant}}}let y=await this.ui.showVariantSelect({productId:r.toString(),variantId:i?.toString()});return y.code==="closed"?{intent:"create:item",code:"closed"}:{intent:"create:item",code:"ok",data:y.data}}};var ge=class extends E{static{s(this,"CreateListHandler")}async invoke(e){let t=await this.ui.showListEditor();if(t.code==="closed")return{intent:"create:list",code:"closed"};let{list:r}=t.data;return{intent:"create:list",code:"ok",data:{list:r}}}};var Rr=x({itemId:g()}),we=class extends E{static{s(this,"DeleteItemHandler")}async invoke(e){let t=O(Rr,e);if(!t.success)return{intent:"delete:item",code:"error",message:"Invalid intent data",issues:t.issues.map(o=>o.message)};let{itemId:r}=t.output;if(!this.options.unsave.requireConfirmation){let o=await this.swish.api.items.deleteById(r);return"error"in o?{intent:"delete:item",code:"error",message:"Failed to delete item",issues:[o.error.message]}:{intent:"delete:item",code:"ok",data:{itemId:r}}}return(await this.ui.showUnsaveAlert({itemId:r})).code==="closed"?{intent:"delete:item",code:"closed"}:{intent:"delete:item",code:"ok",data:{itemId:r}}}};var Tr=x({listId:g()}),Ie=class extends E{static{s(this,"DeleteListHandler")}async invoke(e){let t=O(Tr,e);if(!t.success)return{intent:"delete:list",code:"error",message:"Invalid intent data",issues:t.issues.map(o=>o.message)};let{listId:r}=t.output;return(await this.ui.showDeleteListAlert({listId:r})).code==="closed"?{intent:"delete:list",code:"closed"}:{intent:"delete:list",code:"ok",data:{listId:r}}}};var Pr=x({itemId:g()}),be=class extends E{static{s(this,"EditItemListsHandler")}async invoke(e){let t=O(Pr,e);if(!t.success)return{intent:"edit:item-lists",code:"error",message:"Invalid intent data",issues:t.issues.map(o=>o.message)};let{itemId:r}=t.output,i=await this.ui.showListSelect({itemId:r});if(i.code==="closed")return{intent:"edit:item-lists",code:"closed"};if(i.data.action==="submit"){let{item:o,product:u,variant:a}=i.data.data;return{intent:"edit:item-lists",code:"ok",data:{item:o,product:u,variant:a}}}return{intent:"delete:item",code:"ok",data:{itemId:i.data.data.itemId}}}};var _r=x({itemId:G(g()),productId:G(ne([G(g(),j(R)),F()]),j(n=>Number(n)),F()),variantId:_(G(ne([G(g(),j(R)),F()]),j(n=>Number(n)),F()))}),Ee=class extends E{static{s(this,"EditItemVariantHandler")}async invoke(e){let t=O(_r,e);if(!t.success)return{intent:"edit:item-variant",code:"error",message:"Invalid intent data",issues:t.issues.map(y=>y.message)};let{itemId:r,productId:i,variantId:o}=t.output;if(!(!o||this.swish.options.swishUi.intents.edit.requireVariantConfirmation)){let y=await this.swish.api.items.updateById(r,{productId:i,variantId:o});if("error"in y)return{intent:"edit:item-variant",code:"error",message:"Failed to update variant",issues:[y.error.message]};if(!y.data)return{intent:"edit:item-variant",code:"error",message:"Failed to update variant",issues:["No item returned from API"]};let f=await this.swish.storefront.loadSaveIntentData({productId:b("Product",i),variantId:o?b("ProductVariant",o):void 0});if(!f.data?.product)return{intent:"edit:item-variant",code:"error",message:"Failed to load save intent data",issues:[f.errors?.message??"No product data returned from API"]};let C=f.data?.product,m="variant"in f.data?f.data.variant:void 0;return{intent:"edit:item-variant",code:"ok",data:{item:y.data,product:C,variant:m}}}let a=await this.ui.showVariantSelect({itemId:r,productId:i.toString(),variantId:o?.toString()});if(a.code==="closed")return{intent:"edit:item-variant",code:"closed"};let{item:l,product:c,variant:p}=a.data;return{intent:"edit:item-variant",code:"ok",data:{item:l,product:c,variant:p}}}};var Or=x({listId:g()}),Se=class extends E{static{s(this,"EditListHandler")}async invoke(e){let t=O(Or,e);if(!t.success)return{intent:"edit:list",code:"error",message:"Invalid intent data",issues:t.issues.map(u=>u.message)};let{listId:r}=t.output,i=await this.ui.showListEditor({listId:r});if(i.code==="closed")return{intent:"edit:list",code:"closed"};let{list:o}=i.data;return{intent:"edit:list",code:"ok",data:{list:o}}}};var Ce=class extends E{static{s(this,"OpenHomeHandler")}async invoke(e){return{intent:"open:home",code:(await this.ui.showDrawer()).code,data:void 0}}};var Lr=x({listId:g()}),xe=class extends E{static{s(this,"OpenListMenuHandler")}async invoke(e){let t=O(Lr,e);if(!t.success)return{intent:"open:list-menu",code:"error",message:"Invalid intent data",issues:t.issues.map(o=>o.message)};let{listId:r}=t.output,i=await this.ui.showListMenu({listId:r});return i.code==="closed"?{intent:"open:list-menu",code:"closed"}:i.data.action==="edit"?{intent:"edit:list",code:"ok",data:i.data.data}:{intent:"delete:list",code:"ok",data:{listId:r}}}};var no=x({returnTo:_(g())}),ke=class extends E{static{s(this,"OpenSignInHandler")}async invoke(e){return{intent:"open:sign-in",code:(await this.ui.showSignIn({returnTo:e?.returnTo})).code,data:void 0}}};var qr=x({productId:g(),variantId:_(g())}),Ae=class extends E{static{s(this,"OpenQuickBuyHandler")}async invoke(e){let t=O(qr,e);if(!t.success)return{intent:"open:quick-buy",code:"error",message:"Invalid intent data",issues:t.issues.map(u=>u.message)};let{productId:r,variantId:i}=t.output,o=await this.ui.showQuickBuy({productId:r,variantId:i});return o.code==="closed"?{intent:"open:quick-buy",code:"closed"}:{intent:"open:quick-buy",code:"ok",data:o.data}}};var Y=class{constructor(e,t,r){this.swish=e;this.ui=t;this.options=r}static{s(this,"IntentHook")}};var De=class extends Y{static{s(this,"AfterCreateItemHook")}async invoke(e){if(this.options.save.showToast&&e.code==="ok"){let{item:t,product:r,variant:i}=e.data;r&&(await(await this.swish.intents.invoke("show:toast",{title:"Saved",text:r.title,image:i?.image?.url??r.featuredImage?.url,action:{label:"Add to List"}})).complete).code==="ok"&&this.swish.intents.invoke("edit:item-lists",{itemId:t.id})}}};var Re=class extends Y{static{s(this,"AfterEditItemListsHook")}async invoke(e){if(this.options.edit.showToast&&e.code==="ok"){if("itemId"in e.data)return;let{product:t,variant:r}=e.data;t&&(await(await this.swish.intents.invoke("show:toast",{title:"Saved",text:t.title,image:r?.image?.url??t.featuredImage?.url,action:{label:"View"}})).complete).code==="ok"&&this.swish.intents.invoke("open:home")}}};var Te=class extends Y{static{s(this,"AfterOpenHomeHook")}async invoke(e){if(e.code==="closed"){let t=new URL(window.location.href);t.hash.startsWith("#swish-home")&&(t.hash="",window.history.replaceState({},document.title,t.toString()))}}};var bo=x({title:_(g()),text:g(),image:_(g()),action:_(x({label:g(),url:_(g())}))}),Pe=class extends E{static{s(this,"ShowToastHandler")}async invoke(e){return{intent:"show:toast",code:(await this.ui.showToast(e)).code,data:void 0}}};var _e=class{static{s(this,"Intents")}constructor(e,t){this.swish=e,this.ui=t,this.eventBus=new EventTarget,this.options=e.options.swishUi.intents,this.handlers={"create:item":new ve(this.swish,this.ui,this.eventBus,this.options),"delete:item":new we(this.swish,this.ui,this.eventBus,this.options),"edit:item-variant":new Ee(this.swish,this.ui,this.eventBus,this.options),"edit:item-lists":new be(this.swish,this.ui,this.eventBus,this.options),"create:list":new ge(this.swish,this.ui,this.eventBus,this.options),"edit:list":new Se(this.swish,this.ui,this.eventBus,this.options),"delete:list":new Ie(this.swish,this.ui,this.eventBus,this.options),"open:home":new Ce(this.swish,this.ui,this.eventBus,this.options),"open:list-menu":new xe(this.swish,this.ui,this.eventBus,this.options),"open:sign-in":new ke(this.swish,this.ui,this.eventBus,this.options),"open:quick-buy":new Ae(this.swish,this.ui,this.eventBus,this.options),"show:toast":new Pe(this.swish,this.ui,this.eventBus,this.options)},this.initIntentHooks(),this.initIntentWatcher()}publishAnalyticsEvent(e,t){typeof window.Shopify?.analytics?.publish=="function"&&window.Shopify.analytics.publish(e,t)}async invoke(e,...t){let r=t[0],i={lifecycle:"before",intent:e,data:r};return this.publishAnalyticsEvent("swish-intent",i),this.publishAnalyticsEvent(`swish-intent=${e}`,i),{intent:e,data:r,complete:this.handleIntent(e,r).then(o=>{let u={lifecycle:"after",intent:e,data:r,response:o};return this.publishAnalyticsEvent("swish-intent",u),this.publishAnalyticsEvent(`swish-intent=${e}`,u),this.eventBus.dispatchEvent(new CustomEvent(e,{detail:o})),o})}}listen(e,t){let r=s(o=>{"detail"in o&&o.detail?t(o.detail):console.warn("Intent response event without detail",o)},"eventListener"),i=s(()=>{this.eventBus.removeEventListener(e,r)},"unsubscribe");return this.eventBus.addEventListener(e,r),i}parseIntentFromString(e){if(typeof e=="string"){let[t,...r]=e.split(","),i=r.reduce((o,u)=>{let[a,l]=u.split("=");return o[a]=l,o},{});return{intent:t,data:i}}return{intent:e,data:{}}}parseIntentFromHash(e){let t=e.startsWith("#")?e.slice(1):e;return{"swish-home":"open:home"}[t]||null}async handleIntent(e,t){let r=this.handlers[e];return r?r.invoke(t):{intent:e,code:"error",message:"Invalid intent",issues:[`Intent ${e} not found`]}}initIntentHooks(){this.eventBus.addEventListener("create:item",e=>{new De(this.swish,this.ui,this.options).invoke(e.detail)}),this.eventBus.addEventListener("edit:item-lists",e=>{new Re(this.swish,this.ui,this.options).invoke(e.detail)}),this.eventBus.addEventListener("open:home",e=>{new Te(this.swish,this.ui,this.options).invoke(e.detail)})}initIntentWatcher(){ce({selector:"[swish-intent]",onElementFound:s(e=>{let t=e.getAttribute("swish-intent");t&&e.addEventListener("click",()=>{let{intent:r,data:i}=this.parseIntentFromString(t);Object.keys(i).length>0?this.invoke(r,i):this.invoke(r)})},"onElementFound")}),ce({selector:"a[href*='swish-intent='],a[href*='#swish']",onElementFound:s(e=>{e instanceof HTMLAnchorElement&&e.addEventListener("click",t=>{if(!t.metaKey&&!t.ctrlKey&&!t.shiftKey&&!t.altKey){let r=new URL(e.href),i=r.hash,o=r.searchParams.get("swish-intent");if(o){let{intent:u,data:a}=this.parseIntentFromString(o);u&&(t.preventDefault(),t.stopPropagation(),Object.keys(a).length>0?this.invoke(u,a):this.invoke(u))}else if(i){let u=this.parseIntentFromHash(i);u&&(t.preventDefault(),t.stopPropagation(),this.invoke(u))}}})},"onElementFound")}),ae({fireOnInit:!0,onLocationChange:s(e=>{let t=new URL(e.href),r=t.hash,i=t.searchParams.get("swish-intent");if(i){let{intent:o,data:u}=this.parseIntentFromString(i);o&&(Object.keys(u).length>0?this.invoke(o,u):this.invoke(o))}else if(r){let o=this.parseIntentFromHash(r);o&&this.invoke(o)}},"onLocationChange")})}};var Qt=s(n=>({storefrontApi:{storeDomain:n.storefrontApi?.storeDomain??"",accessToken:n.storefrontApi?.accessToken??""},storefrontContext:{...n.storefrontContext,localization:{country:n.storefrontContext.localization.country.toUpperCase(),language:n.storefrontContext.localization.language.toUpperCase(),market:n.storefrontContext.localization.market}},badges:{getBadges:n.badges?.getBadges??(({defaultBadges:e})=>e)},metafields:{product:n.metafields?.product??[],productVariant:n.metafields?.productVariant??[]},swishApi:{authProxy:n.swishApi?.authProxy??"/apps/wishlist/api",version:n.swishApi?.version??"2026-01"},swishUi:{baseUrl:n.swishUi?.baseUrl??"https://swish.app/cdn",version:n.swishUi?.version??Oe,components:{productRow:{showVariantTitle:n.swishUi?.components?.productRow?.showVariantTitle??!1},productDetail:{descriptionMaxLines:n.swishUi?.components?.productDetail?.descriptionMaxLines??4},variantSelect:{displayType:n.swishUi?.components?.variantSelect?.displayType??"pills"},imageSlider:{flush:n.swishUi?.components?.imageSlider?.flush??!1,loop:n.swishUi?.components?.imageSlider?.loop??!1},images:{baseTint:n.swishUi?.components?.images?.baseTint??!1},buyButtons:{shopPay:n.swishUi?.components?.buyButtons?.shopPay??!1},listDetailPage:{desktopColumns:n.swishUi?.components?.listDetailPage?.desktopColumns??4,showBuyButton:n.swishUi?.components?.listDetailPage?.showBuyButton??!0},drawer:{title:n.swishUi?.components?.drawer?.title??"",logo:{url:n.swishUi?.components?.drawer?.logo?.url??"",altText:n.swishUi?.components?.drawer?.logo?.altText??""},navigation:{variant:n.swishUi?.components?.drawer?.navigation?.variant??"floating",items:n.swishUi?.components?.drawer?.navigation?.items??[{id:"home",enabled:!0,href:"/"},{id:"items",enabled:!0,href:"/items"},{id:"lists",enabled:!0,href:"/lists"},{id:"chat",enabled:!1,href:"/chat"},{id:"orders",enabled:!0,href:"/orders"},{id:"profile",enabled:!0,href:"/profile"}]},miniMenu:{items:n.swishUi?.components?.drawer?.miniMenu?.items??[]}}},css:n.swishUi?.css??[],intents:{save:{requireVariant:n.swishUi?.intents?.save?.requireVariant??!1,requireVariantConfirmation:n.swishUi?.intents?.save?.requireVariantConfirmation??!1,showToast:n.swishUi?.intents?.save?.showToast??!1},edit:{requireVariantConfirmation:n.swishUi?.intents?.edit?.requireVariantConfirmation??!1,showToast:n.swishUi?.intents?.edit?.showToast??!1},unsave:{requireConfirmation:n.swishUi?.intents?.unsave?.requireConfirmation??!1,openEditor:n.swishUi?.intents?.unsave?.openEditor??!1,showToast:n.swishUi?.intents?.unsave?.showToast??!1}},theme:n.swishUi?.theme??{}}}),"createSwishOptions");var $r=Symbol.for("preact-signals");function qe(){if(J>1)J--;else{for(var n,e=!1;pe!==void 0;){var t=pe;for(pe=void 0,tt++;t!==void 0;){var r=t.o;if(t.o=void 0,t.f&=-3,!(8&t.f)&&Xt(t))try{t.c()}catch(i){e||(n=i,e=!0)}t=r}}if(tt=0,J--,e)throw n}}s(qe,"t");function Z(n){if(J>0)return n();J++;try{return n()}finally{qe()}}s(Z,"r");var w=void 0;function Wt(n){var e=w;w=void 0;try{return n()}finally{w=e}}s(Wt,"n");var pe=void 0,J=0,tt=0,Le=0;function zt(n){if(w!==void 0){var e=n.n;if(e===void 0||e.t!==w)return e={i:0,S:n,p:w.s,n:void 0,t:w,e:void 0,x:void 0,r:e},w.s!==void 0&&(w.s.n=e),w.s=e,n.n=e,32&w.f&&n.S(e),e;if(e.i===-1)return e.i=0,e.n!==void 0&&(e.n.p=e.p,e.p!==void 0&&(e.p.n=e.n),e.p=w.s,e.n=void 0,w.s.n=e,w.s=e),e}}s(zt,"e");function q(n,e){this.v=n,this.i=0,this.n=void 0,this.t=void 0,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}s(q,"u");q.prototype.brand=$r;q.prototype.h=function(){return!0};q.prototype.S=function(n){var e=this,t=this.t;t!==n&&n.e===void 0&&(n.x=t,this.t=n,t!==void 0?t.e=n:Wt(function(){var r;(r=e.W)==null||r.call(e)}))};q.prototype.U=function(n){var e=this;if(this.t!==void 0){var t=n.e,r=n.x;t!==void 0&&(t.x=r,n.e=void 0),r!==void 0&&(r.e=t,n.x=void 0),n===this.t&&(this.t=r,r===void 0&&Wt(function(){var i;(i=e.Z)==null||i.call(e)}))}};q.prototype.subscribe=function(n){var e=this;return N(function(){var t=e.value,r=w;w=void 0;try{n(t)}finally{w=r}},{name:"sub"})};q.prototype.valueOf=function(){return this.value};q.prototype.toString=function(){return this.value+""};q.prototype.toJSON=function(){return this.value};q.prototype.peek=function(){var n=w;w=void 0;try{return this.value}finally{w=n}};Object.defineProperty(q.prototype,"value",{get:s(function(){var n=zt(this);return n!==void 0&&(n.i=this.i),this.v},"get"),set:s(function(n){if(n!==this.v){if(tt>100)throw new Error("Cycle detected");this.v=n,this.i++,Le++,J++;try{for(var e=this.t;e!==void 0;e=e.x)e.t.N()}finally{qe()}}},"set")});function k(n,e){return new q(n,e)}s(k,"d");function Xt(n){for(var e=n.s;e!==void 0;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}s(Xt,"c");function Kt(n){for(var e=n.s;e!==void 0;e=e.n){var t=e.S.n;if(t!==void 0&&(e.r=t),e.S.n=e,e.i=-1,e.n===void 0){n.s=e;break}}}s(Kt,"a");function Yt(n){for(var e=n.s,t=void 0;e!==void 0;){var r=e.p;e.i===-1?(e.S.U(e),r!==void 0&&(r.n=e.n),e.n!==void 0&&(e.n.p=r)):t=e,e.S.n=e.r,e.r!==void 0&&(e.r=void 0),e=r}n.s=t}s(Yt,"l");function re(n,e){q.call(this,void 0),this.x=n,this.s=void 0,this.g=Le-1,this.f=4,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}s(re,"y");re.prototype=new q;re.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Le))return!0;if(this.g=Le,this.f|=1,this.i>0&&!Xt(this))return this.f&=-2,!0;var n=w;try{Kt(this),w=this;var e=this.x();(16&this.f||this.v!==e||this.i===0)&&(this.v=e,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return w=n,Yt(this),this.f&=-2,!0};re.prototype.S=function(n){if(this.t===void 0){this.f|=36;for(var e=this.s;e!==void 0;e=e.n)e.S.S(e)}q.prototype.S.call(this,n)};re.prototype.U=function(n){if(this.t!==void 0&&(q.prototype.U.call(this,n),this.t===void 0)){this.f&=-33;for(var e=this.s;e!==void 0;e=e.n)e.S.U(e)}};re.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var n=this.t;n!==void 0;n=n.x)n.t.N()}};Object.defineProperty(re.prototype,"value",{get:s(function(){if(1&this.f)throw new Error("Cycle detected");var n=zt(this);if(this.h(),n!==void 0&&(n.i=this.i),16&this.f)throw this.v;return this.v},"get")});function B(n,e){return new re(n,e)}s(B,"w");function Jt(n){var e=n.u;if(n.u=void 0,typeof e=="function"){J++;var t=w;w=void 0;try{e()}catch(r){throw n.f&=-2,n.f|=8,nt(n),r}finally{w=t,qe()}}}s(Jt,"_");function nt(n){for(var e=n.s;e!==void 0;e=e.n)e.S.U(e);n.x=void 0,n.s=void 0,Jt(n)}s(nt,"b");function Br(n){if(w!==this)throw new Error("Out-of-order effect");Yt(this),w=n,this.f&=-2,8&this.f&&nt(this),qe()}s(Br,"g");function ue(n,e){this.x=n,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32,this.name=e?.name}s(ue,"p");ue.prototype.c=function(){var n=this.S();try{if(8&this.f||this.x===void 0)return;var e=this.x();typeof e=="function"&&(this.u=e)}finally{n()}};ue.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,Jt(this),Kt(this),J++;var n=w;return w=this,Br.bind(this,n)};ue.prototype.N=function(){2&this.f||(this.f|=2,this.o=pe,pe=this)};ue.prototype.d=function(){this.f|=8,1&this.f||nt(this)};ue.prototype.dispose=function(){this.d()};function N(n,e){var t=new ue(n,e);try{t.c()}catch(i){throw t.d(),i}var r=t.d.bind(t);return r[Symbol.dispose]=r,r}s(N,"E");var Vr=/\/products\/([^/?#]+)(?:\?(?:[^#]*?&)?variant=(\d+))?/,rt=s(n=>{let e=n.match(Vr);return e?{productHandle:e[1],variantId:e[2]}:null},"parseProductUrl"),Zt=s(({source:n,onProductUrlChange:e})=>{let t=s(r=>{let i=rt(r);i?.productHandle&&e(i)},"handleChange");if(n instanceof HTMLAnchorElement)return Gt({element:n,onHrefChange:s(r=>t(r),"onHrefChange")});if(n instanceof Location)return ae({onLocationChange:s(r=>t(r.href),"onLocationChange")});throw new Error("Invalid source for observing product url")},"observeProductUrl");var en=s(n=>e=>{let{productHandle:t,productId:r,variantId:i,itemId:o}=e?.dataset??{},l=!!(r||t)||!!o,c=k({loading:!1,productId:r,variantId:i,itemId:o});if(!l){let p=e instanceof HTMLAnchorElement?e:window.location,h=rt(p.href);h?.productHandle&&h.productHandle!==c.value.productHandle&&(c.value={...c.value,...h,productId:void 0},Zt({source:p,onProductUrlChange:s(y=>{c.value={...c.value,...y,productId:y.productHandle!==c.value.productHandle?void 0:c.value.productId}},"onProductUrlChange")}))}return N(()=>{c.value.loading||!c.value.productId&&c.value.productHandle&&(c.value={...c.value,loading:!0},n.storefront.loadProductId({productHandle:c.value.productHandle}).then(p=>{p.errors&&console.error("Error loading product id",p.errors),c.value={...c.value,productId:p.data?.product?.id?R(p.data.product.id):void 0,loading:!1}}))}),c},"itemContextSignal");var tn=s(n=>e=>{let t=B(()=>{let{productId:S,variantId:v,loading:T}=e.value;return!S||T?null:v?`variant:${R(v)}`:`product:${R(S)}`}),r=B(()=>e.value.loading||!!e.value.itemId||!e.value.productId),i=B(()=>({limit:1,query:t.value??void 0})),o=k(!r.value),u=k(null),a=k(!1),l=k(!1),{data:c,loading:p,error:h,refetching:y}=n.state.swishQuery(S=>n.api.items.list(S),{refetch:["item-create","item-update","item-delete"],variables:i,skip:r}),f=k(e.value.itemId??null);N(()=>{Z(()=>{if(o.value=p.value,u.value=h.value,!e.value.itemId){let S=c.value?.[0]?.id??null;S!==f.value&&(f.value=S)}})});async function C(){if(!f.value)return;a.value=!0,(await(await n.intents.invoke("delete:item",{itemId:f.value})).complete).code==="ok"&&(f.value=null),a.value=!1}s(C,"unsave");async function m(){if(!f.value)return;a.value=!0;let v=await(await n.intents.invoke("edit:item-lists",{itemId:f.value})).complete;v.code==="ok"&&"itemId"in v.data&&(f.value=null),a.value=!1}s(m,"update");async function A(){let{productId:S,variantId:v}=e.value;if(!S)return;a.value=!0,l.value=!0;let P=await(await n.intents.invoke("create:item",{productId:S,variantId:v})).complete;if(P.code==="ok"){let le=P.data;f.value=le.item.id,a.value=!1}else P.code==="error"&&console.warn("Failed to create item",P),Z(()=>{a.value=!1,l.value=!1})}s(A,"save");let L=B(()=>o.value||a.value||e.value.loading);N(()=>{l.value&&!a.value&&!y.value&&(l.value=!1)});let D=B(()=>{let S=y.value&&l.value,v=!!f.value,T=!v&&(a.value||S),P=v&&(a.value||S),le=B(()=>T?"saving":P?"unsaving":v?"saved":"unsaved");return{error:u.value,status:le.value,savedItemId:f.value,loading:L.value,submitting:a.value,saved:v,saving:T,unsaving:P}});async function H(){L.value||(D.value.saved&&D.value.savedItemId?m():D.value.saved||await A())}return s(H,"toggle"),Object.assign(D,{save:A,unsave:C,update:m,toggle:H})},"itemStateSignal");var nn=s(n=>()=>{let{data:e,loading:t,error:r}=n.state.swishQuery(()=>n.api.items.count(),{refetch:["item-create","item-delete"]}),i=k(0),o=k(!0),u=k(null);return N(()=>{Z(()=>{o.value=t.value,u.value=r.value,i.value=e.value?.count??0})}),B(()=>({count:i.value,loading:o.value,error:u.value}))},"itemCountSignal");var Ur="token-update",rn=s(n=>(e,t)=>{let r=k(null),i=k(null),o=k(null),u=k(!t?.skip),a=k(!1),l=B(()=>u.value&&a.value);async function c(){if(!t?.skip?.value)try{u.value=!0;let p=await e(t?.variables?.value);Z(()=>{o.value="error"in p?p.error:null,r.value="data"in p?p.data:null,i.value="pageInfo"in p?p.pageInfo:null,u.value=!1,a.value=!0})}catch(p){Z(()=>{o.value=p,u.value=!1,a.value=!0})}}return s(c,"executeFetch"),N(()=>{if(c(),t?.refetch?.length){let p=[...t.refetch,Ur];return n.events.subscribe(p,c)}}),{data:r,pageInfo:i,error:o,loading:u,refetching:l}},"swishQuerySignals");var ie="GraphQL Client";var it="An error occurred while fetching from the API. Review 'graphQLErrors' for details.",st="Response returned unexpected Content-Type:",ot="An unknown error has occurred. The API did not return a data object or any errors in its response.",$e={json:"application/json",multipart:"multipart/mixed"},at="X-SDK-Variant",ut="X-SDK-Version",on="shopify-graphql-client",an="1.4.1",Be=1e3,un=[429,503],lt=/@(defer)\b/i,sn=`\r
8
+ `,ln=/boundary="?([^=";]+)"?/i,ct=sn+sn;function W(n,e=ie){return n.startsWith(`${e}`)?n:`${e}: ${n}`}s(W,"formatErrorMessage");function X(n){return n instanceof Error?n.message:JSON.stringify(n)}s(X,"getErrorMessage");function pt(n){return n instanceof Error&&n.cause?n.cause:void 0}s(pt,"getErrorCause");function dt(n){return n.flatMap(({errors:e})=>e??[])}s(dt,"combineErrors");function Ve({client:n,retries:e}){if(e!==void 0&&(typeof e!="number"||e<0||e>3))throw new Error(`${n}: The provided "retries" value (${e}) is invalid - it cannot be less than ${0} or greater than ${3}`)}s(Ve,"validateRetries");function $(n,e){return e&&(typeof e!="object"||Array.isArray(e)||typeof e=="object"&&Object.keys(e).length>0)?{[n]:e}:{}}s($,"getKeyValueIfValid");function ft(n,e){if(n.length===0)return e;let r={[n.pop()]:e};return n.length===0?r:ft(n,r)}s(ft,"buildDataObjectByPath");function dn(n,e){return Object.keys(e||{}).reduce((t,r)=>(typeof e[r]=="object"||Array.isArray(e[r]))&&n[r]?(t[r]=dn(n[r],e[r]),t):(t[r]=e[r],t),Array.isArray(n)?[...n]:{...n})}s(dn,"combineObjects");function ht([n,...e]){return e.reduce(dn,{...n})}s(ht,"buildCombinedDataObject");function mt({clientLogger:n,customFetchApi:e=fetch,client:t=ie,defaultRetryWaitTime:r=Be,retriableCodes:i=un}){let o=s(async(u,a,l)=>{let c=a+1,p=l+1,h;try{if(h=await e(...u),n({type:"HTTP-Response",content:{requestParams:u,response:h}}),!h.ok&&i.includes(h.status)&&c<=p)throw new Error;let y=h?.headers.get("X-Shopify-API-Deprecated-Reason")||"";return y&&n({type:"HTTP-Response-GraphQL-Deprecation-Notice",content:{requestParams:u,deprecationNotice:y}}),h}catch(y){if(c<=p){let f=h?.headers.get("Retry-After");return await Nr(f?parseInt(f,10):r),n({type:"HTTP-Retry",content:{requestParams:u,lastResponse:h,retryAttempt:a,maxRetries:l}}),o(u,c,l)}throw new Error(W(`${l>0?`Attempted maximum number of ${l} network retries. Last message - `:""}${X(y)}`,t))}},"httpFetch");return o}s(mt,"generateHttpFetch");async function Nr(n){return new Promise(e=>setTimeout(e,n))}s(Nr,"sleep");function yt({headers:n,url:e,customFetchApi:t=fetch,retries:r=0,logger:i}){Ve({client:ie,retries:r});let o={headers:n,url:e,retries:r},u=Fr(i),a=mt({customFetchApi:t,clientLogger:u,defaultRetryWaitTime:Be}),l=Gr(a,o),c=Mr(l),p=Kr(l);return{config:o,fetch:l,request:c,requestStream:p}}s(yt,"createGraphQLClient");function Fr(n){return e=>{n&&n(e)}}s(Fr,"generateClientLogger");async function fn(n){let{errors:e,data:t,extensions:r}=await n.json();return{...$("data",t),...$("extensions",r),headers:n.headers,...e||!t?{errors:{networkStatusCode:n.status,message:W(e?it:ot),...$("graphQLErrors",e),response:n}}:{}}}s(fn,"processJSONResponse");function Gr(n,{url:e,headers:t,retries:r}){return async(i,o={})=>{let{variables:u,headers:a,url:l,retries:c,keepalive:p,signal:h}=o,y=JSON.stringify({query:i,variables:u});Ve({client:ie,retries:c});let f=Object.entries({...t,...a}).reduce((m,[A,L])=>(m[A]=Array.isArray(L)?L.join(", "):L.toString(),m),{});return!f[at]&&!f[ut]&&(f[at]=on,f[ut]=an),n([l??e,{method:"POST",headers:f,body:y,signal:h,keepalive:p}],1,c??r)}}s(Gr,"generateFetch");function Mr(n){return async(...e)=>{if(lt.test(e[0]))throw new Error(W("This operation will result in a streamable response - use requestStream() instead."));let t=null;try{t=await n(...e);let{status:r,statusText:i}=t,o=t.headers.get("content-type")||"";return t.ok?o.includes($e.json)?await fn(t):{errors:{networkStatusCode:r,message:W(`${st} ${o}`),response:t}}:{errors:{networkStatusCode:r,message:W(i),response:t}}}catch(r){return{errors:{message:X(r),...t==null?{}:{networkStatusCode:t.status,response:t}}}}}}s(Mr,"generateRequest");async function*jr(n){let e=new TextDecoder;if(n.body[Symbol.asyncIterator])for await(let t of n.body)yield e.decode(t);else{let t=n.body.getReader(),r;try{for(;!(r=await t.read()).done;)yield e.decode(r.value)}finally{t.cancel()}}}s(jr,"getStreamBodyIterator");function Hr(n,e){return{async*[Symbol.asyncIterator](){try{let t="";for await(let r of n)if(t+=r,t.indexOf(e)>-1){let i=t.lastIndexOf(e),u=t.slice(0,i).split(e).filter(a=>a.trim().length>0).map(a=>a.slice(a.indexOf(ct)+ct.length).trim());u.length>0&&(yield u),t=t.slice(i+e.length),t.trim()==="--"&&(t="")}}catch(t){throw new Error(`Error occured while processing stream payload - ${X(t)}`)}}}}s(Hr,"readStreamChunk");function Qr(n){return{async*[Symbol.asyncIterator](){yield{...await fn(n),hasNext:!1}}}}s(Qr,"createJsonResponseAsyncIterator");function Wr(n){return n.map(e=>{try{return JSON.parse(e)}catch(t){throw new Error(`Error in parsing multipart response - ${X(t)}`)}}).map(e=>{let{data:t,incremental:r,hasNext:i,extensions:o,errors:u}=e;if(!r)return{data:t||{},...$("errors",u),...$("extensions",o),hasNext:i};let a=r.map(({data:l,path:c,errors:p})=>({data:l&&c?ft(c,l):{},...$("errors",p)}));return{data:a.length===1?a[0].data:ht([...a.map(({data:l})=>l)]),...$("errors",dt(a)),hasNext:i}})}s(Wr,"getResponseDataFromChunkBodies");function zr(n,e){if(n.length>0)throw new Error(it,{cause:{graphQLErrors:n}});if(Object.keys(e).length===0)throw new Error(ot)}s(zr,"validateResponseData");function Xr(n,e){let t=(e??"").match(ln),r=`--${t?t[1]:"-"}`;if(!n.body?.getReader&&!n.body?.[Symbol.asyncIterator])throw new Error("API multipart response did not return an iterable body",{cause:n});let i=jr(n),o={},u;return{async*[Symbol.asyncIterator](){try{let a=!0;for await(let l of Hr(i,r)){let c=Wr(l);u=c.find(h=>h.extensions)?.extensions??u;let p=dt(c);o=ht([o,...c.map(({data:h})=>h)]),a=c.slice(-1)[0].hasNext,zr(p,o),yield{...$("data",o),...$("extensions",u),hasNext:a}}if(a)throw new Error("Response stream terminated unexpectedly")}catch(a){let l=pt(a);yield{...$("data",o),...$("extensions",u),errors:{message:W(X(a)),networkStatusCode:n.status,...$("graphQLErrors",l?.graphQLErrors),response:n},hasNext:!1}}}}}s(Xr,"createMultipartResponseAsyncInterator");function Kr(n){return async(...e)=>{if(!lt.test(e[0]))throw new Error(W("This operation does not result in a streamable response - use request() instead."));try{let t=await n(...e),{statusText:r}=t;if(!t.ok)throw new Error(r,{cause:t});let i=t.headers.get("content-type")||"";switch(!0){case i.includes($e.json):return Qr(t);case i.includes($e.multipart):return Xr(t,i);default:throw new Error(`${st} ${i}`,{cause:t})}}catch(t){return{async*[Symbol.asyncIterator](){let r=pt(t);yield{errors:{message:W(X(t)),...$("networkStatusCode",r?.status),...$("response",r)},hasNext:!1}}}}}}s(Kr,"generateRequestStream");function vt({client:n,storeDomain:e}){try{if(!e||typeof e!="string")throw new Error;let t=e.trim(),r=t.match(/^https?:/)?t:`https://${t}`,i=new URL(r);return i.protocol="https",i.origin}catch(t){throw new Error(`${n}: a valid store domain ("${e}") must be provided`,{cause:t})}}s(vt,"validateDomainAndGetStoreUrl");function Ue({client:n,currentSupportedApiVersions:e,apiVersion:t,logger:r}){let i=`${n}: the provided apiVersion ("${t}")`,o=`Currently supported API versions: ${e.join(", ")}`;if(!t||typeof t!="string")throw new Error(`${i} is invalid. ${o}`);let u=t.trim();e.includes(u)||(r?r({type:"Unsupported_Api_Version",content:{apiVersion:t,supportedApiVersions:e}}):console.warn(`${i} is likely deprecated or not supported. ${o}`))}s(Ue,"validateApiVersion");function Ne(n){let e=n*3-2;return e===10?e:`0${e}`}s(Ne,"getQuarterMonth");function gt(n,e,t){let r=e-t;return r<=0?`${n-1}-${Ne(r+4)}`:`${n}-${Ne(r)}`}s(gt,"getPrevousVersion");function hn(){let n=new Date,e=n.getUTCMonth(),t=n.getUTCFullYear(),r=Math.floor(e/3+1);return{year:t,quarter:r,version:`${t}-${Ne(r)}`}}s(hn,"getCurrentApiVersion");function wt(){let{year:n,quarter:e,version:t}=hn(),r=e===4?`${n+1}-01`:`${n}-${Ne(e+1)}`;return[gt(n,e,3),gt(n,e,2),gt(n,e,1),t,r,"unstable"]}s(wt,"getCurrentSupportedApiVersions");function It(n){return e=>({...e??{},...n.headers})}s(It,"generateGetHeaders");function bt({getHeaders:n,getApiUrl:e}){return(t,r)=>{let i=[t];if(r&&Object.keys(r).length>0){let{variables:o,apiVersion:u,headers:a,retries:l,signal:c}=r;i.push({...o?{variables:o}:{},...a?{headers:n(a)}:{},...u?{url:e(u)}:{},...l?{retries:l}:{},...c?{signal:c}:{}})}return i}}s(bt,"generateGetGQLClientParams");var Et="application/json",mn="storefront-api-client",yn="1.0.9",vn="X-Shopify-Storefront-Access-Token",gn="Shopify-Storefront-Private-Token",wn="X-SDK-Variant",In="X-SDK-Version",bn="X-SDK-Variant-Source",se="Storefront API Client";function En(n){if(n&&typeof window<"u")throw new Error(`${se}: private access tokens and headers should only be used in a server-to-server implementation. Use the public API access token in nonserver environments.`)}s(En,"validatePrivateAccessTokenUsage");function Sn(n,e){if(!n&&!e)throw new Error(`${se}: a public or private access token must be provided`);if(n&&e)throw new Error(`${se}: only provide either a public or private access token`)}s(Sn,"validateRequiredAccessTokens");function St({storeDomain:n,apiVersion:e,publicAccessToken:t,privateAccessToken:r,clientName:i,retries:o=0,customFetchApi:u,logger:a}){let l=wt(),c=vt({client:se,storeDomain:n}),p={client:se,currentSupportedApiVersions:l,logger:a};Ue({...p,apiVersion:e}),Sn(t,r),En(r);let h=Yr(c,e,p),y={storeDomain:c,apiVersion:e,...t?{publicAccessToken:t}:{privateAccessToken:r},headers:{"Content-Type":Et,Accept:Et,[wn]:mn,[In]:yn,...i?{[bn]:i}:{},...t?{[vn]:t}:{[gn]:r}},apiUrl:h(),clientName:i},f=yt({headers:y.headers,url:y.apiUrl,retries:o,customFetchApi:u,logger:a}),C=It(y),m=Jr(y,h),A=bt({getHeaders:C,getApiUrl:m});return Object.freeze({config:y,getHeaders:C,getApiUrl:m,fetch:s((...D)=>f.fetch(...A(...D)),"fetch"),request:s((...D)=>f.request(...A(...D)),"request"),requestStream:s((...D)=>f.requestStream(...A(...D)),"requestStream")})}s(St,"createStorefrontApiClient");function Yr(n,e,t){return r=>{r&&Ue({...t,apiVersion:r});let i=(r??e).trim();return`${n}/api/${i}/graphql.json`}}s(Yr,"generateApiUrlFormatter");function Jr(n,e){return t=>t?e(t):n.apiUrl}s(Jr,"generateGetApiUrl");var V=`
9
9
  fragment productImageFields on Image {
10
10
  id
11
11
  altText
@@ -429,20 +429,20 @@ Values:
429
429
  id
430
430
  }
431
431
  }
432
- `,Nn=`
432
+ `,Un=`
433
433
  query GetProductIdByHandle($handle: String!) {
434
434
  product(handle: $handle) {
435
435
  id
436
436
  }
437
437
  }
438
- `;var Un=s(async(n,{productId:e,variantId:t,productMetafields:r=[],variantMetafields:i=[],country:o,language:u})=>{if(!e)throw new Error("A productId must be provided");let a=s(()=>{if(e&&!t)return kn;if(e&&t)return An},"getProductOptionsQuery"),l=s(()=>{if(e&&!t)return{productId:b("Product",e),productMetafields:r,country:o,language:u};if(e&&t)return{productId:b("Product",e),variantId:b("ProductVariant",t),productMetafields:r,variantMetafields:i,country:o,language:u}},"getVariables"),c=a(),p=l();if(!p||!c)throw new Error("Invalid query arguments");return n.query(c,p)},"loadProductCardData");var Fn=s(async(n,{productId:e,variantId:t,productMetafields:r=[],variantMetafields:i=[],country:o,language:u})=>{if(!e)throw new Error("A productId must be provided");let a=s(()=>{if(e&&!t)return Ln;if(e&&t)return qn},"getProductOptionsQuery"),l=s(()=>{if(e&&!t)return{productId:b("Product",e),productMetafields:r,country:o,language:u};if(e&&t)return{productId:b("Product",e),variantId:b("ProductVariant",t),productMetafields:r,variantMetafields:i,country:o,language:u}},"getVariables"),c=a(),p=l();if(!p||!c)throw new Error("Invalid query arguments");return n.query(c,p)},"loadProductDetailData");var Gn=s(async(n,{productHandle:e})=>{if(!e)throw new Error("A product handle must be provided");return n.query(Nn,{handle:e})},"loadProductId");var Mn=s(async(n,{items:e,country:t,language:r})=>{if(!e?.length)throw new Error("A list of items must be provided");let i={ids:e.map(o=>o.variantId?b("ProductVariant",o.variantId.toString()):b("Product",o.productId.toString())),country:t,language:r};try{return{data:(await n.query($n,i)).data?.nodes.map(a=>a===null?null:"image"in a?a.image:"featuredImage"in a?a.featuredImage:null).filter(a=>a!==null)??[],error:null}}catch(o){return console.error(o),{data:null,error:o}}},"loadProductImages");var jn=s(async(n,{productId:e,productHandle:t,variantId:r,country:i,language:o})=>{if(!e&&!t)throw new Error("Either productId or handle must be provided");let u=s(()=>{if(e&&!r)return Dn;if(t&&!r)return Rn;if(e&&r)return Tn;if(t&&r)return Pn},"getProductOptionsQuery"),a=s(()=>{if(e&&!r)return{productId:b("Product",e),country:i,language:o};if(t&&!r)return{handle:t,country:i,language:o};if(e&&r)return{productId:b("Product",e),variantId:b("ProductVariant",r),country:i,language:o};if(t&&r)return{handle:t,variantId:b("ProductVariant",r),country:i,language:o}},"getVariables"),l=u(),c=a();if(!c||!l)throw new Error("Invalid query arguments");return n.query(l,c)},"loadProductOptions");var Hn=s(async(n,{productId:e,productHandle:t,intent:r,country:i,language:o})=>{if(!e&&!t)throw new Error("Either productId or productHandle must be provided");if(e){let a={productId:b("Product",e),intent:r,country:i,language:o};return n.query(Bn,a)}let u={handle:t,intent:r,country:i,language:o};return n.query(Vn,u)},"loadProductRecommendations");var Qn=s(async(n,{productId:e,variantId:t,country:r,language:i})=>{let o=s(()=>{if(e&&!t)return Cn;if(e&&t)return xn},"getProductOptionsQuery"),u=s(()=>{if(e&&!t)return{productId:b("Product",R(e)),country:r,language:i};if(e&&t)return{productId:b("Product",R(e)),variantId:b("ProductVariant",R(t)),country:r,language:i}},"getVariables"),a=o(),l=u();if(!l||!a)throw new Error("Invalid query arguments");return n.query(a,l)},"loadSaveIntentData");var Wn=s(async(n,{productId:e,productHandle:t,selectedOptions:r,country:i,language:o})=>{if(!e&&!t)throw new Error("Either productId or handle must be provided");let u=e?_n:On,a=e?{productId:`gid://shopify/Product/${e}`,selectedOptions:r,country:i,language:o}:{handle:t,selectedOptions:r,country:i,language:o};return n.query(u,a)},"loadSelectedVariant");var Zr="2025-10",ei=["GetProductIdByHandle"],Ue=class{constructor(e,t,r,i){this.client=null;this.query=s(async(e,t)=>{if(!this.client)throw new Error("Storefront API client not initialized");let r=await this.client.request(e,{variables:t});return{data:r.data,errors:r.errors??null}},"query");this.loadProductOptions=s(async e=>jn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}),"loadProductOptions");this.loadSelectedVariant=s(async e=>Wn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}),"loadSelectedVariant");this.loadProductCardData=s(async e=>Un(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}).then(t=>t.data?"variant"in t.data?{...t,data:{...t.data,badges:this.badges.getBadges({product:t.data.product,variant:t.data.variant})}}:{...t,data:{...t.data,badges:this.badges.getBadges({product:t.data.product})}}:t),"loadProductCardData");this.loadProductDetailData=s(async e=>Fn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}).then(t=>t.data?"variant"in t.data?{...t,data:{...t.data,badges:this.badges.getBadges({product:t.data.product,variant:t.data.variant})}}:{...t,data:{...t.data,badges:this.badges.getBadges({product:t.data.product})}}:t),"loadProductDetailData");this.loadProductImages=s(async e=>Mn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}),"loadProductImages");this.loadProductRecommendations=s(async e=>Hn(this,{...e,country:this.context.localization.country,language:this.context.localization.language}),"loadProductRecommendations");this.loadProductId=s(async e=>Gn(this,e),"loadProductId");this.loadSaveIntentData=s(async e=>Qn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}),"loadSaveIntentData");this.options=e,this.context=t,this.badges=r,this.metafields={productMetafields:i?.product.map(u=>({namespace:u.split(".")[0],key:u.split(".")[1]}))??[],variantMetafields:i?.productVariant.map(u=>({namespace:u.split(".")[0],key:u.split(".")[1]}))??[]};let o=N(t.myshopifyDomain);this.shortCache=new z(`storefront-api-short-${o}`,"max-age=60, stale-while-revalidate=3600"),this.longCache=new z(`storefront-api-long-${o}`,"max-age=3600, stale-while-revalidate=86400"),this.shortCache.cleanupExpiredEntries().catch(u=>{console.warn("Storefront API cache initialization cleanup error:",u)}),this.longCache.cleanupExpiredEntries().catch(u=>{console.warn("Storefront API cache initialization cleanup error:",u)}),this.client=St({apiVersion:Zr,customFetchApi:s((u,a)=>a?.method==="OPTIONS"?this.fetch(u,a):ei.some(l=>a?.body?.toString().includes(`query ${l}`))?this.longCache.fetchWithCache(u,a):this.shortCache.fetchWithCache(u,a),"customFetchApi"),publicAccessToken:this.options.accessToken,storeDomain:this.options.storeDomain})}static{s(this,"StorefrontApiClient")}fetch(e,t){return t?.method==="OPTIONS"?fetch(e,t):this.shortCache.fetchWithCache(e,t)}async clearCache(){await this.shortCache.clear()}};var ti=Object.defineProperty,d=s((n,e)=>ti(n,"name",{value:e,configurable:!0}),"n"),ni={bodySerializer:d(n=>JSON.stringify(n,(e,t)=>typeof t=="bigint"?t.toString():t),"bodySerializer")},ri={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},ll=Object.entries(ri),ii=d(({onRequest:n,onSseError:e,onSseEvent:t,responseTransformer:r,responseValidator:i,sseDefaultRetryDelay:o,sseMaxRetryAttempts:u,sseMaxRetryDelay:a,sseSleepFn:l,url:c,...p})=>{let h,y=l??(f=>new Promise(C=>setTimeout(C,f)));return{stream:d(async function*(){let f=o??3e3,C=0,m=p.signal??new AbortController().signal;for(;!m.aborted;){C++;let A=p.headers instanceof Headers?p.headers:new Headers(p.headers);h!==void 0&&A.set("Last-Event-ID",h);try{let L={redirect:"follow",...p,body:p.serializedBody,headers:A,signal:m},D=new Request(c,L);n&&(D=await n(c,L));let H=await(p.fetch??globalThis.fetch)(D);if(!H.ok)throw new Error(`SSE failed: ${H.status} ${H.statusText}`);if(!H.body)throw new Error("No body in SSE response");let S=H.body.pipeThrough(new TextDecoderStream).getReader(),v="",T=d(()=>{try{S.cancel()}catch{}},"abortHandler");m.addEventListener("abort",T);try{for(;;){let{done:P,value:le}=await S.read();if(P)break;v+=le;let Bt=v.split(`
438
+ `;var Nn=s(async(n,{productId:e,variantId:t,productMetafields:r=[],variantMetafields:i=[],country:o,language:u})=>{if(!e)throw new Error("A productId must be provided");let a=s(()=>{if(e&&!t)return kn;if(e&&t)return An},"getProductOptionsQuery"),l=s(()=>{if(e&&!t)return{productId:b("Product",e),productMetafields:r,country:o,language:u};if(e&&t)return{productId:b("Product",e),variantId:b("ProductVariant",t),productMetafields:r,variantMetafields:i,country:o,language:u}},"getVariables"),c=a(),p=l();if(!p||!c)throw new Error("Invalid query arguments");return n.query(c,p)},"loadProductCardData");var Fn=s(async(n,{productId:e,variantId:t,productMetafields:r=[],variantMetafields:i=[],country:o,language:u})=>{if(!e)throw new Error("A productId must be provided");let a=s(()=>{if(e&&!t)return Ln;if(e&&t)return qn},"getProductOptionsQuery"),l=s(()=>{if(e&&!t)return{productId:b("Product",e),productMetafields:r,country:o,language:u};if(e&&t)return{productId:b("Product",e),variantId:b("ProductVariant",t),productMetafields:r,variantMetafields:i,country:o,language:u}},"getVariables"),c=a(),p=l();if(!p||!c)throw new Error("Invalid query arguments");return n.query(c,p)},"loadProductDetailData");var Gn=s(async(n,{productHandle:e})=>{if(!e)throw new Error("A product handle must be provided");return n.query(Un,{handle:e})},"loadProductId");var Mn=s(async(n,{items:e,country:t,language:r})=>{if(!e?.length)throw new Error("A list of items must be provided");let i={ids:e.map(o=>o.variantId?b("ProductVariant",o.variantId.toString()):b("Product",o.productId.toString())),country:t,language:r};try{return{data:(await n.query($n,i)).data?.nodes.map(a=>a===null?null:"image"in a?a.image:"featuredImage"in a?a.featuredImage:null).filter(a=>a!==null)??[],error:null}}catch(o){return console.error(o),{data:null,error:o}}},"loadProductImages");var jn=s(async(n,{productId:e,productHandle:t,variantId:r,country:i,language:o})=>{if(!e&&!t)throw new Error("Either productId or handle must be provided");let u=s(()=>{if(e&&!r)return Dn;if(t&&!r)return Rn;if(e&&r)return Tn;if(t&&r)return Pn},"getProductOptionsQuery"),a=s(()=>{if(e&&!r)return{productId:b("Product",e),country:i,language:o};if(t&&!r)return{handle:t,country:i,language:o};if(e&&r)return{productId:b("Product",e),variantId:b("ProductVariant",r),country:i,language:o};if(t&&r)return{handle:t,variantId:b("ProductVariant",r),country:i,language:o}},"getVariables"),l=u(),c=a();if(!c||!l)throw new Error("Invalid query arguments");return n.query(l,c)},"loadProductOptions");var Hn=s(async(n,{productId:e,productHandle:t,intent:r,country:i,language:o})=>{if(!e&&!t)throw new Error("Either productId or productHandle must be provided");if(e){let a={productId:b("Product",e),intent:r,country:i,language:o};return n.query(Bn,a)}let u={handle:t,intent:r,country:i,language:o};return n.query(Vn,u)},"loadProductRecommendations");var Qn=s(async(n,{productId:e,variantId:t,country:r,language:i})=>{let o=s(()=>{if(e&&!t)return Cn;if(e&&t)return xn},"getProductOptionsQuery"),u=s(()=>{if(e&&!t)return{productId:b("Product",R(e)),country:r,language:i};if(e&&t)return{productId:b("Product",R(e)),variantId:b("ProductVariant",R(t)),country:r,language:i}},"getVariables"),a=o(),l=u();if(!l||!a)throw new Error("Invalid query arguments");return n.query(a,l)},"loadSaveIntentData");var Wn=s(async(n,{productId:e,productHandle:t,selectedOptions:r,country:i,language:o})=>{if(!e&&!t)throw new Error("Either productId or handle must be provided");let u=e?_n:On,a=e?{productId:`gid://shopify/Product/${e}`,selectedOptions:r,country:i,language:o}:{handle:t,selectedOptions:r,country:i,language:o};return n.query(u,a)},"loadSelectedVariant");var Zr="2025-10",ei=["GetProductIdByHandle"],Fe=class{constructor(e,t,r,i){this.client=null;this.query=s(async(e,t)=>{if(!this.client)throw new Error("Storefront API client not initialized");let r=await this.client.request(e,{variables:t});return{data:r.data,errors:r.errors??null}},"query");this.loadProductOptions=s(async e=>jn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}),"loadProductOptions");this.loadSelectedVariant=s(async e=>Wn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}),"loadSelectedVariant");this.loadProductCardData=s(async e=>Nn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}).then(t=>t.data?"variant"in t.data?{...t,data:{...t.data,badges:this.badges.getBadges({product:t.data.product,variant:t.data.variant})}}:{...t,data:{...t.data,badges:this.badges.getBadges({product:t.data.product})}}:t),"loadProductCardData");this.loadProductDetailData=s(async e=>Fn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}).then(t=>t.data?"variant"in t.data?{...t,data:{...t.data,badges:this.badges.getBadges({product:t.data.product,variant:t.data.variant})}}:{...t,data:{...t.data,badges:this.badges.getBadges({product:t.data.product})}}:t),"loadProductDetailData");this.loadProductImages=s(async e=>Mn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}),"loadProductImages");this.loadProductRecommendations=s(async e=>Hn(this,{...e,country:this.context.localization.country,language:this.context.localization.language}),"loadProductRecommendations");this.loadProductId=s(async e=>Gn(this,e),"loadProductId");this.loadSaveIntentData=s(async e=>Qn(this,{...e,...this.metafields,country:this.context.localization.country,language:this.context.localization.language}),"loadSaveIntentData");this.options=e,this.context=t,this.badges=r,this.metafields={productMetafields:i?.product.map(u=>({namespace:u.split(".")[0],key:u.split(".")[1]}))??[],variantMetafields:i?.productVariant.map(u=>({namespace:u.split(".")[0],key:u.split(".")[1]}))??[]};let o=U(t.myshopifyDomain);this.shortCache=new z(`storefront-api-short-${o}`,"max-age=60, stale-while-revalidate=3600"),this.longCache=new z(`storefront-api-long-${o}`,"max-age=3600, stale-while-revalidate=86400"),this.shortCache.cleanupExpiredEntries().catch(u=>{console.warn("Storefront API cache initialization cleanup error:",u)}),this.longCache.cleanupExpiredEntries().catch(u=>{console.warn("Storefront API cache initialization cleanup error:",u)}),this.client=St({apiVersion:Zr,customFetchApi:s((u,a)=>a?.method==="OPTIONS"?this.fetch(u,a):ei.some(l=>a?.body?.toString().includes(`query ${l}`))?this.longCache.fetchWithCache(u,a):this.shortCache.fetchWithCache(u,a),"customFetchApi"),publicAccessToken:this.options.accessToken,storeDomain:this.options.storeDomain})}static{s(this,"StorefrontApiClient")}fetch(e,t){return t?.method==="OPTIONS"?fetch(e,t):this.shortCache.fetchWithCache(e,t)}async clearCache(){await this.shortCache.clear()}};var ti=Object.defineProperty,d=s((n,e)=>ti(n,"name",{value:e,configurable:!0}),"n"),ni={bodySerializer:d(n=>JSON.stringify(n,(e,t)=>typeof t=="bigint"?t.toString():t),"bodySerializer")},ri={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},ll=Object.entries(ri),ii=d(({onRequest:n,onSseError:e,onSseEvent:t,responseTransformer:r,responseValidator:i,sseDefaultRetryDelay:o,sseMaxRetryAttempts:u,sseMaxRetryDelay:a,sseSleepFn:l,url:c,...p})=>{let h,y=l??(f=>new Promise(C=>setTimeout(C,f)));return{stream:d(async function*(){let f=o??3e3,C=0,m=p.signal??new AbortController().signal;for(;!m.aborted;){C++;let A=p.headers instanceof Headers?p.headers:new Headers(p.headers);h!==void 0&&A.set("Last-Event-ID",h);try{let L={redirect:"follow",...p,body:p.serializedBody,headers:A,signal:m},D=new Request(c,L);n&&(D=await n(c,L));let H=await(p.fetch??globalThis.fetch)(D);if(!H.ok)throw new Error(`SSE failed: ${H.status} ${H.statusText}`);if(!H.body)throw new Error("No body in SSE response");let S=H.body.pipeThrough(new TextDecoderStream).getReader(),v="",T=d(()=>{try{S.cancel()}catch{}},"abortHandler");m.addEventListener("abort",T);try{for(;;){let{done:P,value:le}=await S.read();if(P)break;v+=le;let Bt=v.split(`
439
439
 
440
440
  `);v=Bt.pop()??"";for(let lr of Bt){let cr=lr.split(`
441
- `),fe=[],Vt;for(let M of cr)if(M.startsWith("data:"))fe.push(M.replace(/^data:\s*/,""));else if(M.startsWith("event:"))Vt=M.replace(/^event:\s*/,"");else if(M.startsWith("id:"))h=M.replace(/^id:\s*/,"");else if(M.startsWith("retry:")){let Ut=Number.parseInt(M.replace(/^retry:\s*/,""),10);Number.isNaN(Ut)||(f=Ut)}let ee,Nt=!1;if(fe.length){let M=fe.join(`
442
- `);try{ee=JSON.parse(M),Nt=!0}catch{ee=M}}Nt&&(i&&await i(ee),r&&(ee=await r(ee))),t?.({data:ee,event:Vt,id:h,retry:f}),fe.length&&(yield ee)}}}finally{m.removeEventListener("abort",T),S.releaseLock()}break}catch(L){if(e?.(L),u!==void 0&&C>=u)break;let D=Math.min(f*2**(C-1),a??3e4);await y(D)}}},"createStream")()}},"createSseClient"),si=d(n=>{switch(n){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorArrayExplode"),oi=d(n=>{switch(n){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},"separatorArrayNoExplode"),ai=d(n=>{switch(n){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorObjectExplode"),Kn=d(({allowReserved:n,explode:e,name:t,style:r,value:i})=>{if(!e){let a=(n?i:i.map(l=>encodeURIComponent(l))).join(oi(r));switch(r){case"label":return`.${a}`;case"matrix":return`;${t}=${a}`;case"simple":return a;default:return`${t}=${a}`}}let o=si(r),u=i.map(a=>r==="label"||r==="simple"?n?a:encodeURIComponent(a):Ge({allowReserved:n,name:t,value:a})).join(o);return r==="label"||r==="matrix"?o+u:u},"serializeArrayParam"),Ge=d(({allowReserved:n,name:e,value:t})=>{if(t==null)return"";if(typeof t=="object")throw new Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${e}=${n?t:encodeURIComponent(t)}`},"serializePrimitiveParam"),Yn=d(({allowReserved:n,explode:e,name:t,style:r,value:i,valueOnly:o})=>{if(i instanceof Date)return o?i.toISOString():`${t}=${i.toISOString()}`;if(r!=="deepObject"&&!e){let l=[];Object.entries(i).forEach(([p,h])=>{l=[...l,p,n?h:encodeURIComponent(h)]});let c=l.join(",");switch(r){case"form":return`${t}=${c}`;case"label":return`.${c}`;case"matrix":return`;${t}=${c}`;default:return c}}let u=ai(r),a=Object.entries(i).map(([l,c])=>Ge({allowReserved:n,name:r==="deepObject"?`${t}[${l}]`:l,value:c})).join(u);return r==="label"||r==="matrix"?u+a:a},"serializeObjectParam"),ui=/\{[^{}]+\}/g,li=d(({path:n,url:e})=>{let t=e,r=e.match(ui);if(r)for(let i of r){let o=!1,u=i.substring(1,i.length-1),a="simple";u.endsWith("*")&&(o=!0,u=u.substring(0,u.length-1)),u.startsWith(".")?(u=u.substring(1),a="label"):u.startsWith(";")&&(u=u.substring(1),a="matrix");let l=n[u];if(l==null)continue;if(Array.isArray(l)){t=t.replace(i,Kn({explode:o,name:u,style:a,value:l}));continue}if(typeof l=="object"){t=t.replace(i,Yn({explode:o,name:u,style:a,value:l,valueOnly:!0}));continue}if(a==="matrix"){t=t.replace(i,`;${Ge({name:u,value:l})}`);continue}let c=encodeURIComponent(a==="label"?`.${l}`:l);t=t.replace(i,c)}return t},"defaultPathSerializer"),ci=d(({baseUrl:n,path:e,query:t,querySerializer:r,url:i})=>{let o=i.startsWith("/")?i:`/${i}`,u=(n??"")+o;e&&(u=li({path:e,url:u}));let a=t?r(t):"";return a.startsWith("?")&&(a=a.substring(1)),a&&(u+=`?${a}`),u},"getUrl");function Jn(n){let e=n.body!==void 0;if(e&&n.bodySerializer)return"serializedBody"in n?n.serializedBody!==void 0&&n.serializedBody!==""?n.serializedBody:null:n.body!==""?n.body:null;if(e)return n.body}s(Jn,"K");d(Jn,"getValidRequestBody");var pi=d(async(n,e)=>{let t=typeof e=="function"?await e(n):e;if(t)return n.scheme==="bearer"?`Bearer ${t}`:n.scheme==="basic"?`Basic ${btoa(t)}`:t},"getAuthToken"),Zn=d(({allowReserved:n,array:e,object:t}={})=>d(r=>{let i=[];if(r&&typeof r=="object")for(let o in r){let u=r[o];if(u!=null)if(Array.isArray(u)){let a=Kn({allowReserved:n,explode:!0,name:o,style:"form",value:u,...e});a&&i.push(a)}else if(typeof u=="object"){let a=Yn({allowReserved:n,explode:!0,name:o,style:"deepObject",value:u,...t});a&&i.push(a)}else{let a=Ge({allowReserved:n,name:o,value:u});a&&i.push(a)}}return i.join("&")},"querySerializer"),"createQuerySerializer"),di=d(n=>{var e;if(!n)return"stream";let t=(e=n.split(";")[0])==null?void 0:e.trim();if(t){if(t.startsWith("application/json")||t.endsWith("+json"))return"json";if(t==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(r=>t.startsWith(r)))return"blob";if(t.startsWith("text/"))return"text"}},"getParseAs"),fi=d((n,e)=>{var t,r;return e?!!(n.headers.has(e)||(t=n.query)!=null&&t[e]||(r=n.headers.get("Cookie"))!=null&&r.includes(`${e}=`)):!1},"checkForExistence"),hi=d(async({security:n,...e})=>{for(let t of n){if(fi(e,t.name))continue;let r=await pi(t,e.auth);if(!r)continue;let i=t.name??"Authorization";switch(t.in){case"query":e.query||(e.query={}),e.query[i]=r;break;case"cookie":e.headers.append("Cookie",`${i}=${r}`);break;case"header":default:e.headers.set(i,r);break}}},"setAuthParams"),zn=d(n=>ci({baseUrl:n.baseUrl,path:n.path,query:n.query,querySerializer:typeof n.querySerializer=="function"?n.querySerializer:Zn(n.querySerializer),url:n.url}),"buildUrl"),Xn=d((n,e)=>{var t;let r={...n,...e};return(t=r.baseUrl)!=null&&t.endsWith("/")&&(r.baseUrl=r.baseUrl.substring(0,r.baseUrl.length-1)),r.headers=er(n.headers,e.headers),r},"mergeConfigs"),mi=d(n=>{let e=[];return n.forEach((t,r)=>{e.push([r,t])}),e},"headersEntries"),er=d((...n)=>{let e=new Headers;for(let t of n){if(!t)continue;let r=t instanceof Headers?mi(t):Object.entries(t);for(let[i,o]of r)if(o===null)e.delete(i);else if(Array.isArray(o))for(let u of o)e.append(i,u);else o!==void 0&&e.set(i,typeof o=="object"?JSON.stringify(o):o)}return e},"mergeHeaders"),tr=class{static{s(this,"$")}constructor(){this.fns=[]}clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);this.fns[t]&&(this.fns[t]=null)}exists(e){let t=this.getInterceptorIndex(e);return!!this.fns[t]}getInterceptorIndex(e){return typeof e=="number"?this.fns[e]?e:-1:this.fns.indexOf(e)}update(e,t){let r=this.getInterceptorIndex(e);return this.fns[r]?(this.fns[r]=t,e):!1}use(e){return this.fns.push(e),this.fns.length-1}};d(tr,"Interceptors");var Rt=tr,yi=d(()=>({error:new Rt,request:new Rt,response:new Rt}),"createInterceptors"),vi=Zn({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),gi={"Content-Type":"application/json"},Fe=d((n={})=>({...ni,headers:gi,parseAs:"auto",querySerializer:vi,...n}),"createConfig"),Tt=d((n={})=>{let e=Xn(Fe(),n),t=d(()=>({...e}),"getConfig"),r=d(c=>(e=Xn(e,c),t()),"setConfig"),i=yi(),o=d(async c=>{let p={...e,...c,fetch:c.fetch??e.fetch??globalThis.fetch,headers:er(e.headers,c.headers),serializedBody:void 0};p.security&&await hi({...p,security:p.security}),p.requestValidator&&await p.requestValidator(p),p.body!==void 0&&p.bodySerializer&&(p.serializedBody=p.bodySerializer(p.body)),(p.body===void 0||p.serializedBody==="")&&p.headers.delete("Content-Type");let h=zn(p);return{opts:p,url:h}},"beforeRequest"),u=d(async c=>{let{opts:p,url:h}=await o(c),y={redirect:"follow",...p,body:Jn(p)},f=new Request(h,y);for(let v of i.request.fns)v&&(f=await v(f,p));let C=p.fetch,m=await C(f);for(let v of i.response.fns)v&&(m=await v(m,f,p));let A={request:f,response:m};if(m.ok){let v=(p.parseAs==="auto"?di(m.headers.get("Content-Type")):p.parseAs)??"json";if(m.status===204||m.headers.get("Content-Length")==="0"){let P;switch(v){case"arrayBuffer":case"blob":case"text":P=await m[v]();break;case"formData":P=new FormData;break;case"stream":P=m.body;break;case"json":default:P={};break}return p.responseStyle==="data"?P:{data:P,...A}}let T;switch(v){case"arrayBuffer":case"blob":case"formData":case"json":case"text":T=await m[v]();break;case"stream":return p.responseStyle==="data"?m.body:{data:m.body,...A}}return v==="json"&&(p.responseValidator&&await p.responseValidator(T),p.responseTransformer&&(T=await p.responseTransformer(T))),p.responseStyle==="data"?T:{data:T,...A}}let L=await m.text(),D;try{D=JSON.parse(L)}catch{}let H=D??L,S=H;for(let v of i.error.fns)v&&(S=await v(H,m,f,p));if(S=S||{},p.throwOnError)throw S;return p.responseStyle==="data"?void 0:{error:S,...A}},"request"),a=d(c=>p=>u({...p,method:c}),"makeMethodFn"),l=d(c=>async p=>{let{opts:h,url:y}=await o(p);return ii({...h,body:h.body,headers:h.headers,method:c,onRequest:d(async(f,C)=>{let m=new Request(f,C);for(let A of i.request.fns)A&&(m=await A(m,h));return m},"onRequest"),url:y})},"makeSseFn");return{buildUrl:zn,connect:a("CONNECT"),delete:a("DELETE"),get:a("GET"),getConfig:t,head:a("HEAD"),interceptors:i,options:a("OPTIONS"),patch:a("PATCH"),post:a("POST"),put:a("PUT"),request:u,setConfig:r,sse:{connect:l("CONNECT"),delete:l("DELETE"),get:l("GET"),head:l("HEAD"),options:l("OPTIONS"),patch:l("PATCH"),post:l("POST"),put:l("PUT"),trace:l("TRACE")},trace:a("TRACE")}},"createClient"),w=Tt(Fe({baseUrl:"https://swish.app/api/2026-01"})),Ii=d(n=>(n?.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/lists",...n}),"listControllerFind"),wi=d(n=>(n.client??w).post({security:[{scheme:"bearer",type:"http"}],url:"/lists",...n,headers:{"Content-Type":"application/json",...n.headers}}),"listControllerCreate"),bi=d(n=>(n.client??w).delete({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...n}),"listControllerDeleteById"),Ei=d(n=>(n.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...n}),"listControllerFindById"),Si=d(n=>(n.client??w).patch({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...n,headers:{"Content-Type":"application/json",...n.headers}}),"listControllerUpdateById"),Ci=d(n=>(n.client??w).put({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items/order",...n,headers:{"Content-Type":"application/json",...n.headers}}),"listControllerSetListItemsOrder"),xi=d(n=>(n.client??w).post({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items",...n,headers:{"Content-Type":"application/json",...n.headers}}),"listControllerAddItemsToList"),ki=d(n=>(n.client??w).delete({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items/{itemId}",...n}),"listControllerRemoveItemFromList"),Ai=d(n=>(n.client??w).delete({security:[{scheme:"bearer",type:"http"}],url:"/items",...n,headers:{"Content-Type":"application/json",...n.headers}}),"itemControllerDelete"),Di=d(n=>(n?.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/items",...n}),"itemControllerFind"),Ri=d(n=>(n.client??w).post({security:[{scheme:"bearer",type:"http"}],url:"/items",...n,headers:{"Content-Type":"application/json",...n.headers}}),"itemControllerCreate"),Ti=d(n=>(n?.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/items/count",...n}),"itemControllerCount"),Pi=d(n=>(n.client??w).delete({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...n}),"itemControllerDeleteById"),_i=d(n=>(n.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...n}),"itemControllerFindById"),Oi=d(n=>(n.client??w).patch({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...n,headers:{"Content-Type":"application/json",...n.headers}}),"itemControllerUpdateById"),Li=d(n=>(n.client??w).put({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}/lists",...n,headers:{"Content-Type":"application/json",...n.headers}}),"itemControllerSetListsById"),qi=d(n=>(n.client??w).post({security:[{scheme:"bearer",type:"http"}],url:"/profiles/identify",...n,headers:{"Content-Type":"application/json",...n.headers}}),"profileControllerIdentify"),$i=d(n=>(n.client??w).post({security:[{scheme:"bearer",type:"http"}],url:"/profiles/token",...n,headers:{"Content-Type":"application/json",...n.headers}}),"profileControllerCreateToken"),Bi=d(n=>(n?.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/profiles",...n}),"profileControllerGetProfile"),Vi=d(n=>(n.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/saved-items",...n}),"analyticsControllerLoadSavedItems"),Ni=d(n=>(n.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/sessions",...n}),"analyticsControllerLoadSessions"),Ui=d(n=>(n.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/new-lists",...n}),"analyticsControllerLoadNewLists"),Fi=d(n=>(n.client??w).post({security:[{scheme:"bearer",type:"http"}],url:"/tracking",...n,headers:{"Content-Type":"application/json",...n.headers}}),"trackingControllerTrack"),Gi=d(n=>(n?.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/orders",...n}),"ordersControllerFind"),Mi=d(n=>(n.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/orders/{orderId}",...n}),"ordersControllerFindOne"),ji=d(n=>(n.client??w).post({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}/save",...n}),"sharedListsControllerSave"),Hi=d(n=>(n.client??w).delete({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}",...n}),"sharedListsControllerDeleteById"),Qi=d(n=>(n.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}",...n}),"sharedListsControllerFindById"),Wi=d(n=>(n?.client??w).get({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists",...n}),"sharedListsControllerFindAll"),Pt="2026-01",nr=d(n=>new zi(n),"createApiClient"),rr=class{static{s(this,"H")}constructor(e){this.version=Pt,this.items={list:d(a=>this.handlePaginatedRequest(Di({query:a,client:this.directClient})),"list"),create:d(a=>this.handleRequest(Ri({body:a,client:this.directClient})),"create"),delete:d(a=>this.handleRequest(Ai({body:{itemIds:a},client:this.directClient})),"delete"),findById:d(a=>this.handleRequest(_i({path:{itemId:a},client:this.directClient})),"findById"),updateById:d((a,l)=>this.handleRequest(Oi({body:l,path:{itemId:a},client:this.directClient})),"updateById"),deleteById:d(a=>this.handleRequest(Pi({path:{itemId:a},client:this.directClient})),"deleteById"),setListsById:d((a,l)=>this.handleRequest(Li({body:{listIds:l},path:{itemId:a},client:this.directClient})),"setListsById"),count:d(()=>this.handleRequest(Ti({client:this.directClient})),"count")},this.lists={list:d(a=>this.handlePaginatedRequest(Ii({query:a,client:this.directClient})),"list"),create:d(a=>this.handleRequest(wi({body:a,client:this.directClient})),"create"),findById:d(a=>this.handleRequest(Ei({path:{listId:a},client:this.directClient})),"findById"),updateById:d((a,l)=>this.handleRequest(Si({body:l,path:{listId:a},client:this.directClient})),"updateById"),deleteById:d(a=>this.handleRequest(bi({path:{listId:a},client:this.directClient})),"deleteById"),orderItems:d((a,l)=>this.handleRequest(Ci({body:{itemIds:l},path:{listId:a},client:this.directClient})),"orderItems"),addItemsToList:d((a,l)=>this.handleRequest(xi({body:{itemIds:l},path:{listId:a},client:this.directClient})),"addItemsToList"),removeItemFromList:d((a,l)=>this.handleRequest(ki({path:{listId:a,itemId:l},client:this.directClient})),"removeItemFromList")},this.profiles={createToken:d((a={})=>this.handleRequest($i({body:a,client:this.proxyClient??this.directClient})),"createToken"),identify:d(a=>this.handleRequest(qi({body:a,client:this.directClient})),"identify"),getProfile:d(()=>this.handleRequest(Bi({client:this.directClient})),"getProfile")},this.orders={list:d(a=>this.handlePaginatedRequest(Gi({query:a,client:this.directClient})),"list"),findById:d(a=>this.handleRequest(Mi({path:{orderId:a},client:this.directClient})),"findById")},this.sharedLists={list:d(a=>this.handlePaginatedRequest(Wi({query:a,client:this.directClient})),"list"),save:d(a=>this.handleRequest(ji({path:{listId:a},client:this.directClient})),"save"),findById:d(a=>this.handleRequest(Qi({path:{listId:a},client:this.directClient})),"findById"),deleteById:d(a=>this.handleRequest(Hi({path:{listId:a},client:this.directClient})),"deleteById")},this.analytics={savedItems:d(a=>this.handleRequest(Vi({query:a,client:this.directClient})),"savedItems"),sessions:d(a=>this.handleRequest(Ni({query:a,client:this.directClient})),"sessions"),newLists:d(a=>this.handleRequest(Ui({query:a,client:this.directClient})),"newLists")},this.tracking={track:d((a,l)=>this.handleRequest(Fi({body:a,headers:l,client:this.directClient})),"track")},this.handleRequest=d(async a=>{let{data:l,error:c}=await a;return c!=null&&c.error?{error:c.error}:{data:l?.data}},"handleRequest"),this.handlePaginatedRequest=d(async a=>{var l;let{data:c,error:p}=await a;return p!=null&&p.error?{error:p.error}:{data:c?.data??[],pageInfo:c?.pageInfo??{next:null,previous:null,totalCount:((l=c?.data)==null?void 0:l.length)??0}}},"handlePaginatedRequest");var t,r,i,o,u;(t=e.config)!=null&&t.version&&(this.version=e.config.version),this.directClient=Tt(Fe({baseUrl:`https://swish.app/api/${this.version}`,...e.config})),(r=e.config)!=null&&r.authProxy&&(this.proxyClient=Tt(Fe({...e.config,baseUrl:e.config.authProxy}))),e.authToken&&(this.authToken=e.authToken),e.requestInterceptor&&((i=this.proxyClient)==null||i.interceptors.request.use(e.requestInterceptor),this.directClient.interceptors.request.use(e.requestInterceptor)),e.responseInterceptor&&((o=this.proxyClient)==null||o.interceptors.response.use(e.responseInterceptor),this.directClient.interceptors.response.use(e.responseInterceptor)),(u=this.proxyClient)==null||u.interceptors.request.use(this.proxyRequestInterceptor.bind(this)),this.directClient.interceptors.request.use(this.directRequestInterceptor.bind(this))}setAuthToken(e){this.authToken=e}proxyRequestInterceptor(e){return this.version&&e.headers.set("Swish-Api-Version",this.version),e}directRequestInterceptor(e){return this.authToken&&e.headers.set("Authorization",`Bearer ${this.authToken}`),e}};d(rr,"SwishClient");var zi=rr;var ar=gr(or(),1);var ur=s(n=>new ar.default(async e=>{let t=[...new Set(e)].sort((i,o)=>i.localeCompare(o)),r=await n.items.list({query:t.join(" "),limit:200});return"error"in r?(console.error("Failed to load items",r.error),e.map(()=>({data:[],pageInfo:{next:null,previous:null,totalCount:0}}))):e.map(i=>{let o=r.data.find(u=>i===`variant:${u.variantId}`||i===`product:${u.productId}`);return{data:o?[o]:[],pageInfo:{next:null,previous:null,totalCount:o?1:0}}})},{batchScheduleFn:s(e=>setTimeout(e,50),"batchScheduleFn"),cache:!1,maxBatchSize:200}),"createItemsBatchLoader");var Me=class{constructor(e,t,r){this.tokenHasProfile=!1;this.api=e,this.context=t,this.eventBus=r}static{s(this,"SwishApiAuth")}hasProfile(){return this.tokenHasProfile}hasToken(){return!!this.getSwishToken()}async renewToken(){return this._renewPromise?this._renewPromise:(this._renewPromise=(async()=>{this._initPromise=void 0,this.deleteSwishToken(),await this.init(),this._renewPromise=void 0})(),this._renewPromise)}async init(){return this._initPromise?this._initPromise:(this._initPromise=(async()=>{this.migrateLegacySession();let e=this.context.customer.id;e?(this.hasSessionToken()&&await this.api.clearCache(),await this.initCustomer(e)):(this.hasCustomerToken()&&await this.resetSession(),await this.initSession()),this.eventBus.publish("token-update",null)})(),this._initPromise)}async initCustomer(e){let t=`gid://shopify/Customer/${e}`,r=this.getTokenBySub(t);if(r){this.initToken(r);return}let i=this.getSessionId();await this.acquireToken(i,t)}async initSession(){let e=this.getSessionId(),t=e?this.getTokenBySub(e):null;if(t){this.initToken(t);return}await this.acquireToken(e)}initToken(e){let t=this.getTokenData(e);if(!t)throw new Error("Invalid Swish token.");this.tokenHasProfile=t.has_profile!==!1,this.api.setAuthToken(e)}async acquireToken(e,t){let r=await this.api.profiles.createToken({customer:t,session:e});if("error"in r)throw console.error("Failed to create customer token",r.error),new Error("Failed to create customer token");if(!r.data?.token)throw console.error("Failed to create customer token empty response"),new Error("Failed to create customer token");r.data.profile.startsWith("gid://swish/Session/")&&this.setSessionId(r.data.profile),this.setSwishToken(r.data.token),this.initToken(r.data.token)}async resetSession(){this.deleteSessionId(),this.deleteSwishToken(),await this.api.clearCache()}getTokenData(e){try{return JSON.parse(atob(e.split(".")[1]))}catch(t){return console.error("Failed to parse Swish token",{cause:t}),null}}willTokenExpire(e,t=60){let r=this.getTokenData(e);return!!(r&&r.exp&&r.exp<Date.now()/1e3+t)}hasCustomerToken(){let e=this.getSwishToken();return e?this.getTokenData(e)?.sub?.startsWith("gid://shopify/Customer/")??!1:!1}hasSessionToken(){let e=this.getSwishToken();return e?this.getTokenData(e)?.sub?.startsWith("gid://swish/Session/")??!1:!1}getTokenBySub(e){if(!e)return null;let t=this.getSwishToken();if(!t)return null;let r=this.getTokenData(t);return!r||r.sub!==e||this.willTokenExpire(t,60)?null:t}getSessionId(){let e=N(this.context.myshopifyDomain);return localStorage.getItem(`swish-session-${e}`)??void 0}setSessionId(e){let t=N(this.context.myshopifyDomain);localStorage.setItem(`swish-session-${t}`,e)}deleteSessionId(){let e=N(this.context.myshopifyDomain);localStorage.removeItem(`swish-session-${e}`)}getSwishToken(){let e=N(this.context.myshopifyDomain);return sessionStorage.getItem(`swish-token-${e}`)??void 0}setSwishToken(e){let t=N(this.context.myshopifyDomain);sessionStorage.setItem(`swish-token-${t}`,e)}deleteSwishToken(){let e=N(this.context.myshopifyDomain);sessionStorage.removeItem(`swish-token-${e}`)}migrateLegacySession(){try{let e=localStorage.getItem("wk_session_id")??localStorage.getItem("swish-profile")?.split("/").pop();e&&(this.setSessionId(`gid://swish/Session/${e}`),localStorage.removeItem("wk_session_id"),localStorage.removeItem("swish-profile"))}catch(e){console.warn("Failed to migrate legacy session id to Swish session",{cause:e})}}};var je=class{static{s(this,"SwishApi")}constructor(e,t,r,i){this.config=e;let o=N(t.myshopifyDomain);this.cache=new z(`swish-api-${o}`,"max-age=60, stale-while-revalidate=3600",i+(e.version??Pt)),this.cache.cleanupExpiredEntries().catch(u=>{console.warn("Swish API cache initialization cleanup error:",u)}),this.auth=new Me(this,t,r),this.apiClient=nr({authToken:this.auth.getSwishToken(),config:{...e,fetch:this.fetchFunction.bind(this)},requestInterceptor:this.requestInterceptor.bind(this),responseInterceptor:this.responseInterceptor.bind(this)}),this.itemsLoader=ur(this)}async fetchFunction(e,t){let r=e instanceof Request?e.method:t?.method??"GET",o=(e instanceof Request?e.url:typeof e=="string"?e:e.toString()).includes("/orders");return r==="GET"&&!o?this.cache.fetchWithCache(e,t):fetch(e,t)}async requestInterceptor(e){let t=new URL(e.url,window.location.origin);return!!this.config.authProxy&&t.pathname.startsWith(this.config.authProxy)||await this.auth.init(),this.config.requestInterceptor&&(e=await this.config.requestInterceptor(e)),e}async responseInterceptor(e,t){let r=t.method!=="GET",i=t.url.includes("/profiles/token");if(r&&!i){let o=this.auth.hasToken(),u=!this.auth.hasProfile(),a=e.ok;await this.cache.clear(),o&&u&&a&&await this.auth.renewToken()}return await this.config.responseInterceptor?.(e,t),e}setAuthToken(e){this.apiClient.setAuthToken(e)}initAuth(){return this.auth.init()}withFallback(e,t){return this.auth.hasProfile()?e():Promise.resolve(t)}get items(){return{...this.apiClient.items,count:s(async()=>this.withFallback(()=>this.apiClient.items.count(),{data:{count:0}}),"count"),list:s(async(e,t)=>this.withFallback(()=>{if(t?.batch&&e?.query){e.limit!==1&&console.warn("Batching will always limit to 1 item");let r=e.query.split(" ");r.length>1&&console.warn("Batching will only support one query parameter");let i=r[0];if(!i.match(/^product:\d+$/)&&!i.match(/^variant:\d+$/))console.warn("Batching will only support product:<id> or variant:<id>");else return this.itemsLoader?.load(i)}return this.apiClient.items.list(e)},{data:[],pageInfo:{next:null,previous:null,totalCount:0}}),"list"),findById:s(async e=>this.withFallback(()=>this.apiClient.items.findById(e),{data:null}),"findById")}}get lists(){return{...this.apiClient.lists,list:s(async e=>this.withFallback(()=>this.apiClient.lists.list(e),{data:[],pageInfo:{next:null,previous:null,totalCount:0}}),"list"),findById:s(async e=>this.withFallback(()=>this.apiClient.lists.findById(e),{data:null}),"findById")}}get orders(){return{...this.apiClient.orders,list:s(async e=>this.withFallback(()=>this.apiClient.orders.list(e),{data:[],pageInfo:{next:null,previous:null,totalCount:0}}),"list"),findById:s(async e=>this.withFallback(()=>(typeof e=="string"&&(e=parseInt(e.split("/").pop()??e)),this.apiClient.orders.findById(e)),{data:null}),"findById")}}get profiles(){return this.apiClient.profiles}async clearCache(){await this.cache.clear()}};var He=class{constructor(e){this.eventMap={"POST /items\\/?$":"item-create","DELETE /items\\/?$":"item-delete","PATCH /items\\/([^/]+)\\/?$":"item-update","DELETE /items\\/([^/]+)\\/?$":"item-delete","PUT /items\\/([^/]+)\\/lists\\/?$":"item-lists-update","POST /lists\\/?$":"list-create","DELETE /lists\\/?$":"list-delete","PATCH /lists\\/([^/]+)\\/?$":"list-update","DELETE /lists\\/([^/]+)\\/?$":"list-delete"};this.eventBus=e,this.processFetchResponse=this.processFetchResponse.bind(this)}static{s(this,"SwishApiPublisher")}async processFetchResponse(e,t){try{let r=this.getEventName(t.method,e.status,t.url);if(!r)return;let i=await e.clone().text();if(e.headers.get("Content-Type")?.includes("application/json"))try{i=JSON.parse(i).data}catch(o){console.warn(o)}this.eventBus.publish(r,i)}catch(r){console.warn(r)}}getEventName(e,t,r){e=e.toUpperCase();let i=new URL(r).pathname;return e==="GET"||t<200||t>=300?void 0:Object.entries(this.eventMap).find(([u])=>{let[a,l]=u.split(" ");return a!==e?!1:new RegExp(l).test(i)})?.[1]}};var is=".swish-shop-bridge{position:absolute!important;top:0!important;left:0!important;padding:0!important;border:0!important;margin:0!important;pointer-events:none!important}.swish-shop-bridge input{appearance:none!important;border:none!important;width:1px!important;height:1px!important;padding:0!important;margin:0!important;background:rgba(0,0,0,0)!important}",ss=s(()=>{let n="/";return typeof window<"u"&&(n=window.location.pathname),`<form class=swish-shop-bridge data-login-with-shop-sign-in=true id=customer_login><input name=customer[email] id=customer_login_email> <input name=return_url type=hidden value=${n}></form>`},"getHtml"),os=typeof HTMLElement<"u"?HTMLElement:class{},qt=class extends os{static{s(this,"ShopBridge")}get swish(){return typeof window<"u"?window.swish:void 0}constructor(){super(),this.emailInput=this.querySelector('form[data-login-with-shop-sign-in] input[type="email"],form[data-login-with-shop-sign-in] input[name="customer[email]"'),this.emailInput||(this.innerHTML=`
441
+ `),fe=[],Vt;for(let M of cr)if(M.startsWith("data:"))fe.push(M.replace(/^data:\s*/,""));else if(M.startsWith("event:"))Vt=M.replace(/^event:\s*/,"");else if(M.startsWith("id:"))h=M.replace(/^id:\s*/,"");else if(M.startsWith("retry:")){let Nt=Number.parseInt(M.replace(/^retry:\s*/,""),10);Number.isNaN(Nt)||(f=Nt)}let ee,Ut=!1;if(fe.length){let M=fe.join(`
442
+ `);try{ee=JSON.parse(M),Ut=!0}catch{ee=M}}Ut&&(i&&await i(ee),r&&(ee=await r(ee))),t?.({data:ee,event:Vt,id:h,retry:f}),fe.length&&(yield ee)}}}finally{m.removeEventListener("abort",T),S.releaseLock()}break}catch(L){if(e?.(L),u!==void 0&&C>=u)break;let D=Math.min(f*2**(C-1),a??3e4);await y(D)}}},"createStream")()}},"createSseClient"),si=d(n=>{switch(n){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorArrayExplode"),oi=d(n=>{switch(n){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},"separatorArrayNoExplode"),ai=d(n=>{switch(n){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorObjectExplode"),Kn=d(({allowReserved:n,explode:e,name:t,style:r,value:i})=>{if(!e){let a=(n?i:i.map(l=>encodeURIComponent(l))).join(oi(r));switch(r){case"label":return`.${a}`;case"matrix":return`;${t}=${a}`;case"simple":return a;default:return`${t}=${a}`}}let o=si(r),u=i.map(a=>r==="label"||r==="simple"?n?a:encodeURIComponent(a):Me({allowReserved:n,name:t,value:a})).join(o);return r==="label"||r==="matrix"?o+u:u},"serializeArrayParam"),Me=d(({allowReserved:n,name:e,value:t})=>{if(t==null)return"";if(typeof t=="object")throw new Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${e}=${n?t:encodeURIComponent(t)}`},"serializePrimitiveParam"),Yn=d(({allowReserved:n,explode:e,name:t,style:r,value:i,valueOnly:o})=>{if(i instanceof Date)return o?i.toISOString():`${t}=${i.toISOString()}`;if(r!=="deepObject"&&!e){let l=[];Object.entries(i).forEach(([p,h])=>{l=[...l,p,n?h:encodeURIComponent(h)]});let c=l.join(",");switch(r){case"form":return`${t}=${c}`;case"label":return`.${c}`;case"matrix":return`;${t}=${c}`;default:return c}}let u=ai(r),a=Object.entries(i).map(([l,c])=>Me({allowReserved:n,name:r==="deepObject"?`${t}[${l}]`:l,value:c})).join(u);return r==="label"||r==="matrix"?u+a:a},"serializeObjectParam"),ui=/\{[^{}]+\}/g,li=d(({path:n,url:e})=>{let t=e,r=e.match(ui);if(r)for(let i of r){let o=!1,u=i.substring(1,i.length-1),a="simple";u.endsWith("*")&&(o=!0,u=u.substring(0,u.length-1)),u.startsWith(".")?(u=u.substring(1),a="label"):u.startsWith(";")&&(u=u.substring(1),a="matrix");let l=n[u];if(l==null)continue;if(Array.isArray(l)){t=t.replace(i,Kn({explode:o,name:u,style:a,value:l}));continue}if(typeof l=="object"){t=t.replace(i,Yn({explode:o,name:u,style:a,value:l,valueOnly:!0}));continue}if(a==="matrix"){t=t.replace(i,`;${Me({name:u,value:l})}`);continue}let c=encodeURIComponent(a==="label"?`.${l}`:l);t=t.replace(i,c)}return t},"defaultPathSerializer"),ci=d(({baseUrl:n,path:e,query:t,querySerializer:r,url:i})=>{let o=i.startsWith("/")?i:`/${i}`,u=(n??"")+o;e&&(u=li({path:e,url:u}));let a=t?r(t):"";return a.startsWith("?")&&(a=a.substring(1)),a&&(u+=`?${a}`),u},"getUrl");function Jn(n){let e=n.body!==void 0;if(e&&n.bodySerializer)return"serializedBody"in n?n.serializedBody!==void 0&&n.serializedBody!==""?n.serializedBody:null:n.body!==""?n.body:null;if(e)return n.body}s(Jn,"K");d(Jn,"getValidRequestBody");var pi=d(async(n,e)=>{let t=typeof e=="function"?await e(n):e;if(t)return n.scheme==="bearer"?`Bearer ${t}`:n.scheme==="basic"?`Basic ${btoa(t)}`:t},"getAuthToken"),Zn=d(({allowReserved:n,array:e,object:t}={})=>d(r=>{let i=[];if(r&&typeof r=="object")for(let o in r){let u=r[o];if(u!=null)if(Array.isArray(u)){let a=Kn({allowReserved:n,explode:!0,name:o,style:"form",value:u,...e});a&&i.push(a)}else if(typeof u=="object"){let a=Yn({allowReserved:n,explode:!0,name:o,style:"deepObject",value:u,...t});a&&i.push(a)}else{let a=Me({allowReserved:n,name:o,value:u});a&&i.push(a)}}return i.join("&")},"querySerializer"),"createQuerySerializer"),di=d(n=>{var e;if(!n)return"stream";let t=(e=n.split(";")[0])==null?void 0:e.trim();if(t){if(t.startsWith("application/json")||t.endsWith("+json"))return"json";if(t==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(r=>t.startsWith(r)))return"blob";if(t.startsWith("text/"))return"text"}},"getParseAs"),fi=d((n,e)=>{var t,r;return e?!!(n.headers.has(e)||(t=n.query)!=null&&t[e]||(r=n.headers.get("Cookie"))!=null&&r.includes(`${e}=`)):!1},"checkForExistence"),hi=d(async({security:n,...e})=>{for(let t of n){if(fi(e,t.name))continue;let r=await pi(t,e.auth);if(!r)continue;let i=t.name??"Authorization";switch(t.in){case"query":e.query||(e.query={}),e.query[i]=r;break;case"cookie":e.headers.append("Cookie",`${i}=${r}`);break;case"header":default:e.headers.set(i,r);break}}},"setAuthParams"),zn=d(n=>ci({baseUrl:n.baseUrl,path:n.path,query:n.query,querySerializer:typeof n.querySerializer=="function"?n.querySerializer:Zn(n.querySerializer),url:n.url}),"buildUrl"),Xn=d((n,e)=>{var t;let r={...n,...e};return(t=r.baseUrl)!=null&&t.endsWith("/")&&(r.baseUrl=r.baseUrl.substring(0,r.baseUrl.length-1)),r.headers=er(n.headers,e.headers),r},"mergeConfigs"),mi=d(n=>{let e=[];return n.forEach((t,r)=>{e.push([r,t])}),e},"headersEntries"),er=d((...n)=>{let e=new Headers;for(let t of n){if(!t)continue;let r=t instanceof Headers?mi(t):Object.entries(t);for(let[i,o]of r)if(o===null)e.delete(i);else if(Array.isArray(o))for(let u of o)e.append(i,u);else o!==void 0&&e.set(i,typeof o=="object"?JSON.stringify(o):o)}return e},"mergeHeaders"),tr=class{static{s(this,"$")}constructor(){this.fns=[]}clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);this.fns[t]&&(this.fns[t]=null)}exists(e){let t=this.getInterceptorIndex(e);return!!this.fns[t]}getInterceptorIndex(e){return typeof e=="number"?this.fns[e]?e:-1:this.fns.indexOf(e)}update(e,t){let r=this.getInterceptorIndex(e);return this.fns[r]?(this.fns[r]=t,e):!1}use(e){return this.fns.push(e),this.fns.length-1}};d(tr,"Interceptors");var Rt=tr,yi=d(()=>({error:new Rt,request:new Rt,response:new Rt}),"createInterceptors"),vi=Zn({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),gi={"Content-Type":"application/json"},Ge=d((n={})=>({...ni,headers:gi,parseAs:"auto",querySerializer:vi,...n}),"createConfig"),Tt=d((n={})=>{let e=Xn(Ge(),n),t=d(()=>({...e}),"getConfig"),r=d(c=>(e=Xn(e,c),t()),"setConfig"),i=yi(),o=d(async c=>{let p={...e,...c,fetch:c.fetch??e.fetch??globalThis.fetch,headers:er(e.headers,c.headers),serializedBody:void 0};p.security&&await hi({...p,security:p.security}),p.requestValidator&&await p.requestValidator(p),p.body!==void 0&&p.bodySerializer&&(p.serializedBody=p.bodySerializer(p.body)),(p.body===void 0||p.serializedBody==="")&&p.headers.delete("Content-Type");let h=zn(p);return{opts:p,url:h}},"beforeRequest"),u=d(async c=>{let{opts:p,url:h}=await o(c),y={redirect:"follow",...p,body:Jn(p)},f=new Request(h,y);for(let v of i.request.fns)v&&(f=await v(f,p));let C=p.fetch,m=await C(f);for(let v of i.response.fns)v&&(m=await v(m,f,p));let A={request:f,response:m};if(m.ok){let v=(p.parseAs==="auto"?di(m.headers.get("Content-Type")):p.parseAs)??"json";if(m.status===204||m.headers.get("Content-Length")==="0"){let P;switch(v){case"arrayBuffer":case"blob":case"text":P=await m[v]();break;case"formData":P=new FormData;break;case"stream":P=m.body;break;case"json":default:P={};break}return p.responseStyle==="data"?P:{data:P,...A}}let T;switch(v){case"arrayBuffer":case"blob":case"formData":case"json":case"text":T=await m[v]();break;case"stream":return p.responseStyle==="data"?m.body:{data:m.body,...A}}return v==="json"&&(p.responseValidator&&await p.responseValidator(T),p.responseTransformer&&(T=await p.responseTransformer(T))),p.responseStyle==="data"?T:{data:T,...A}}let L=await m.text(),D;try{D=JSON.parse(L)}catch{}let H=D??L,S=H;for(let v of i.error.fns)v&&(S=await v(H,m,f,p));if(S=S||{},p.throwOnError)throw S;return p.responseStyle==="data"?void 0:{error:S,...A}},"request"),a=d(c=>p=>u({...p,method:c}),"makeMethodFn"),l=d(c=>async p=>{let{opts:h,url:y}=await o(p);return ii({...h,body:h.body,headers:h.headers,method:c,onRequest:d(async(f,C)=>{let m=new Request(f,C);for(let A of i.request.fns)A&&(m=await A(m,h));return m},"onRequest"),url:y})},"makeSseFn");return{buildUrl:zn,connect:a("CONNECT"),delete:a("DELETE"),get:a("GET"),getConfig:t,head:a("HEAD"),interceptors:i,options:a("OPTIONS"),patch:a("PATCH"),post:a("POST"),put:a("PUT"),request:u,setConfig:r,sse:{connect:l("CONNECT"),delete:l("DELETE"),get:l("GET"),head:l("HEAD"),options:l("OPTIONS"),patch:l("PATCH"),post:l("POST"),put:l("PUT"),trace:l("TRACE")},trace:a("TRACE")}},"createClient"),I=Tt(Ge({baseUrl:"https://swish.app/api/2026-01"})),wi=d(n=>(n?.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/lists",...n}),"listControllerFind"),Ii=d(n=>(n.client??I).post({security:[{scheme:"bearer",type:"http"}],url:"/lists",...n,headers:{"Content-Type":"application/json",...n.headers}}),"listControllerCreate"),bi=d(n=>(n.client??I).delete({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...n}),"listControllerDeleteById"),Ei=d(n=>(n.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...n}),"listControllerFindById"),Si=d(n=>(n.client??I).patch({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...n,headers:{"Content-Type":"application/json",...n.headers}}),"listControllerUpdateById"),Ci=d(n=>(n.client??I).put({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items/order",...n,headers:{"Content-Type":"application/json",...n.headers}}),"listControllerSetListItemsOrder"),xi=d(n=>(n.client??I).post({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items",...n,headers:{"Content-Type":"application/json",...n.headers}}),"listControllerAddItemsToList"),ki=d(n=>(n.client??I).delete({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items/{itemId}",...n}),"listControllerRemoveItemFromList"),Ai=d(n=>(n.client??I).delete({security:[{scheme:"bearer",type:"http"}],url:"/items",...n,headers:{"Content-Type":"application/json",...n.headers}}),"itemControllerDelete"),Di=d(n=>(n?.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/items",...n}),"itemControllerFind"),Ri=d(n=>(n.client??I).post({security:[{scheme:"bearer",type:"http"}],url:"/items",...n,headers:{"Content-Type":"application/json",...n.headers}}),"itemControllerCreate"),Ti=d(n=>(n?.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/items/count",...n}),"itemControllerCount"),Pi=d(n=>(n.client??I).delete({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...n}),"itemControllerDeleteById"),_i=d(n=>(n.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...n}),"itemControllerFindById"),Oi=d(n=>(n.client??I).patch({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...n,headers:{"Content-Type":"application/json",...n.headers}}),"itemControllerUpdateById"),Li=d(n=>(n.client??I).put({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}/lists",...n,headers:{"Content-Type":"application/json",...n.headers}}),"itemControllerSetListsById"),qi=d(n=>(n.client??I).post({security:[{scheme:"bearer",type:"http"}],url:"/profiles/identify",...n,headers:{"Content-Type":"application/json",...n.headers}}),"profileControllerIdentify"),$i=d(n=>(n.client??I).post({security:[{scheme:"bearer",type:"http"}],url:"/profiles/token",...n,headers:{"Content-Type":"application/json",...n.headers}}),"profileControllerCreateToken"),Bi=d(n=>(n?.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/profiles",...n}),"profileControllerGetProfile"),Vi=d(n=>(n.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/saved-items",...n}),"analyticsControllerLoadSavedItems"),Ui=d(n=>(n.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/sessions",...n}),"analyticsControllerLoadSessions"),Ni=d(n=>(n.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/new-lists",...n}),"analyticsControllerLoadNewLists"),Fi=d(n=>(n.client??I).post({security:[{scheme:"bearer",type:"http"}],url:"/tracking",...n,headers:{"Content-Type":"application/json",...n.headers}}),"trackingControllerTrack"),Gi=d(n=>(n?.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/orders",...n}),"ordersControllerFind"),Mi=d(n=>(n.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/orders/{orderId}",...n}),"ordersControllerFindOne"),ji=d(n=>(n.client??I).post({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}/save",...n}),"sharedListsControllerSave"),Hi=d(n=>(n.client??I).delete({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}",...n}),"sharedListsControllerDeleteById"),Qi=d(n=>(n.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}",...n}),"sharedListsControllerFindById"),Wi=d(n=>(n?.client??I).get({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists",...n}),"sharedListsControllerFindAll"),Pt="2026-01",nr=d(n=>new zi(n),"createApiClient"),rr=class{static{s(this,"H")}constructor(e){this.version=Pt,this.items={list:d(a=>this.handlePaginatedRequest(Di({query:a,client:this.directClient})),"list"),create:d(a=>this.handleRequest(Ri({body:a,client:this.directClient})),"create"),delete:d(a=>this.handleRequest(Ai({body:{itemIds:a},client:this.directClient})),"delete"),findById:d(a=>this.handleRequest(_i({path:{itemId:a},client:this.directClient})),"findById"),updateById:d((a,l)=>this.handleRequest(Oi({body:l,path:{itemId:a},client:this.directClient})),"updateById"),deleteById:d(a=>this.handleRequest(Pi({path:{itemId:a},client:this.directClient})),"deleteById"),setListsById:d((a,l)=>this.handleRequest(Li({body:{listIds:l},path:{itemId:a},client:this.directClient})),"setListsById"),count:d(()=>this.handleRequest(Ti({client:this.directClient})),"count")},this.lists={list:d(a=>this.handlePaginatedRequest(wi({query:a,client:this.directClient})),"list"),create:d(a=>this.handleRequest(Ii({body:a,client:this.directClient})),"create"),findById:d(a=>this.handleRequest(Ei({path:{listId:a},client:this.directClient})),"findById"),updateById:d((a,l)=>this.handleRequest(Si({body:l,path:{listId:a},client:this.directClient})),"updateById"),deleteById:d(a=>this.handleRequest(bi({path:{listId:a},client:this.directClient})),"deleteById"),orderItems:d((a,l)=>this.handleRequest(Ci({body:{itemIds:l},path:{listId:a},client:this.directClient})),"orderItems"),addItemsToList:d((a,l)=>this.handleRequest(xi({body:{itemIds:l},path:{listId:a},client:this.directClient})),"addItemsToList"),removeItemFromList:d((a,l)=>this.handleRequest(ki({path:{listId:a,itemId:l},client:this.directClient})),"removeItemFromList")},this.profiles={createToken:d((a={})=>this.handleRequest($i({body:a,client:this.proxyClient??this.directClient})),"createToken"),identify:d(a=>this.handleRequest(qi({body:a,client:this.directClient})),"identify"),getProfile:d(()=>this.handleRequest(Bi({client:this.directClient})),"getProfile")},this.orders={list:d(a=>this.handlePaginatedRequest(Gi({query:a,client:this.directClient})),"list"),findById:d(a=>this.handleRequest(Mi({path:{orderId:a},client:this.directClient})),"findById")},this.sharedLists={list:d(a=>this.handlePaginatedRequest(Wi({query:a,client:this.directClient})),"list"),save:d(a=>this.handleRequest(ji({path:{listId:a},client:this.directClient})),"save"),findById:d(a=>this.handleRequest(Qi({path:{listId:a},client:this.directClient})),"findById"),deleteById:d(a=>this.handleRequest(Hi({path:{listId:a},client:this.directClient})),"deleteById")},this.analytics={savedItems:d(a=>this.handleRequest(Vi({query:a,client:this.directClient})),"savedItems"),sessions:d(a=>this.handleRequest(Ui({query:a,client:this.directClient})),"sessions"),newLists:d(a=>this.handleRequest(Ni({query:a,client:this.directClient})),"newLists")},this.tracking={track:d((a,l)=>this.handleRequest(Fi({body:a,headers:l,client:this.directClient})),"track")},this.handleRequest=d(async a=>{let{data:l,error:c}=await a;return c!=null&&c.error?{error:c.error}:{data:l?.data}},"handleRequest"),this.handlePaginatedRequest=d(async a=>{var l;let{data:c,error:p}=await a;return p!=null&&p.error?{error:p.error}:{data:c?.data??[],pageInfo:c?.pageInfo??{next:null,previous:null,totalCount:((l=c?.data)==null?void 0:l.length)??0}}},"handlePaginatedRequest");var t,r,i,o,u;(t=e.config)!=null&&t.version&&(this.version=e.config.version),this.directClient=Tt(Ge({baseUrl:`https://swish.app/api/${this.version}`,...e.config})),(r=e.config)!=null&&r.authProxy&&(this.proxyClient=Tt(Ge({...e.config,baseUrl:e.config.authProxy}))),e.authToken&&(this.authToken=e.authToken),e.requestInterceptor&&((i=this.proxyClient)==null||i.interceptors.request.use(e.requestInterceptor),this.directClient.interceptors.request.use(e.requestInterceptor)),e.responseInterceptor&&((o=this.proxyClient)==null||o.interceptors.response.use(e.responseInterceptor),this.directClient.interceptors.response.use(e.responseInterceptor)),(u=this.proxyClient)==null||u.interceptors.request.use(this.proxyRequestInterceptor.bind(this)),this.directClient.interceptors.request.use(this.directRequestInterceptor.bind(this))}setAuthToken(e){this.authToken=e}proxyRequestInterceptor(e){return this.version&&e.headers.set("Swish-Api-Version",this.version),e}directRequestInterceptor(e){return this.authToken&&e.headers.set("Authorization",`Bearer ${this.authToken}`),e}};d(rr,"SwishClient");var zi=rr;var ar=gr(or(),1);var ur=s(n=>new ar.default(async e=>{let t=[...new Set(e)].sort((i,o)=>i.localeCompare(o)),r=await n.items.list({query:t.join(" "),limit:200});return"error"in r?(console.error("Failed to load items",r.error),e.map(()=>({data:[],pageInfo:{next:null,previous:null,totalCount:0}}))):e.map(i=>{let o=r.data.find(u=>i===`variant:${u.variantId}`||i===`product:${u.productId}`);return{data:o?[o]:[],pageInfo:{next:null,previous:null,totalCount:o?1:0}}})},{batchScheduleFn:s(e=>setTimeout(e,50),"batchScheduleFn"),cache:!1,maxBatchSize:200}),"createItemsBatchLoader");var je=class{constructor(e,t,r){this.tokenHasProfile=!1;this.api=e,this.context=t,this.eventBus=r}static{s(this,"SwishApiAuth")}hasProfile(){return this.tokenHasProfile}hasToken(){return!!this.getSwishToken()}async renewToken(){return this._renewPromise?this._renewPromise:(this._renewPromise=(async()=>{this._initPromise=void 0,this.deleteSwishToken(),await this.init(),this._renewPromise=void 0})(),this._renewPromise)}async init(){return this._initPromise?this._initPromise:(this._initPromise=(async()=>{this.migrateLegacySession();let e=this.context.customer.id;e?(this.hasSessionToken()&&await this.api.clearCache(),await this.initCustomer(e)):(this.hasCustomerToken()&&await this.resetSession(),await this.initSession()),this.eventBus.publish("token-update",null)})(),this._initPromise)}async initCustomer(e){let t=`gid://shopify/Customer/${e}`,r=this.getTokenBySub(t);if(r){this.initToken(r);return}let i=this.getSessionId();await this.acquireToken(i,t)}async initSession(){let e=this.getSessionId(),t=e?this.getTokenBySub(e):null;if(t){this.initToken(t);return}await this.acquireToken(e)}initToken(e){let t=this.getTokenData(e);if(!t)throw new Error("Invalid Swish token.");this.tokenHasProfile=t.has_profile!==!1,this.api.setAuthToken(e)}async acquireToken(e,t){let r=await this.api.profiles.createToken({customer:t,session:e});if("error"in r)throw console.error("Failed to create customer token",r.error),new Error("Failed to create customer token");if(!r.data?.token)throw console.error("Failed to create customer token empty response"),new Error("Failed to create customer token");r.data.profile.startsWith("gid://swish/Session/")&&this.setSessionId(r.data.profile),this.setSwishToken(r.data.token),this.initToken(r.data.token)}async resetSession(){this.deleteSessionId(),this.deleteSwishToken(),await this.api.clearCache()}getTokenData(e){try{return JSON.parse(atob(e.split(".")[1]))}catch(t){return console.error("Failed to parse Swish token",{cause:t}),null}}willTokenExpire(e,t=60){let r=this.getTokenData(e);return!!(r&&r.exp&&r.exp<Date.now()/1e3+t)}hasCustomerToken(){let e=this.getSwishToken();return e?this.getTokenData(e)?.sub?.startsWith("gid://shopify/Customer/")??!1:!1}hasSessionToken(){let e=this.getSwishToken();return e?this.getTokenData(e)?.sub?.startsWith("gid://swish/Session/")??!1:!1}getTokenBySub(e){if(!e)return null;let t=this.getSwishToken();if(!t)return null;let r=this.getTokenData(t);return!r||r.sub!==e||this.willTokenExpire(t,60)?null:t}getSessionId(){let e=U(this.context.myshopifyDomain);return localStorage.getItem(`swish-session-${e}`)??void 0}setSessionId(e){let t=U(this.context.myshopifyDomain);localStorage.setItem(`swish-session-${t}`,e)}deleteSessionId(){let e=U(this.context.myshopifyDomain);localStorage.removeItem(`swish-session-${e}`)}getSwishToken(){let e=U(this.context.myshopifyDomain);return sessionStorage.getItem(`swish-token-${e}`)??void 0}setSwishToken(e){let t=U(this.context.myshopifyDomain);sessionStorage.setItem(`swish-token-${t}`,e)}deleteSwishToken(){let e=U(this.context.myshopifyDomain);sessionStorage.removeItem(`swish-token-${e}`)}migrateLegacySession(){try{let e=localStorage.getItem("wk_session_id")??localStorage.getItem("swish-profile")?.split("/").pop();e&&(this.setSessionId(`gid://swish/Session/${e}`),localStorage.removeItem("wk_session_id"),localStorage.removeItem("swish-profile"))}catch(e){console.warn("Failed to migrate legacy session id to Swish session",{cause:e})}}};var He=class{static{s(this,"SwishApi")}constructor(e,t,r,i){this.config=e;let o=U(t.myshopifyDomain);this.cache=new z(`swish-api-${o}`,"max-age=60, stale-while-revalidate=3600",i+(e.version??Pt)),this.cache.cleanupExpiredEntries().catch(u=>{console.warn("Swish API cache initialization cleanup error:",u)}),this.auth=new je(this,t,r),this.apiClient=nr({authToken:this.auth.getSwishToken(),config:{...e,fetch:this.fetchFunction.bind(this)},requestInterceptor:this.requestInterceptor.bind(this),responseInterceptor:this.responseInterceptor.bind(this)}),this.itemsLoader=ur(this)}async fetchFunction(e,t){let r=e instanceof Request?e.method:t?.method??"GET",o=(e instanceof Request?e.url:typeof e=="string"?e:e.toString()).includes("/orders");return r==="GET"&&!o?this.cache.fetchWithCache(e,t):fetch(e,t)}async requestInterceptor(e){let t=new URL(e.url,window.location.origin);return!!this.config.authProxy&&t.pathname.startsWith(this.config.authProxy)||await this.auth.init(),this.config.requestInterceptor&&(e=await this.config.requestInterceptor(e)),e}async responseInterceptor(e,t){let r=t.method!=="GET",i=t.url.includes("/profiles/token");if(r&&!i){let o=this.auth.hasToken(),u=!this.auth.hasProfile(),a=e.ok;await this.cache.clear(),o&&u&&a&&await this.auth.renewToken()}return await this.config.responseInterceptor?.(e,t),e}setAuthToken(e){this.apiClient.setAuthToken(e)}initAuth(){return this.auth.init()}withFallback(e,t){return this.auth.hasProfile()?e():Promise.resolve(t)}get items(){return{...this.apiClient.items,count:s(async()=>this.withFallback(()=>this.apiClient.items.count(),{data:{count:0}}),"count"),list:s(async(e,t)=>this.withFallback(()=>{if(t?.batch&&e?.query){e.limit!==1&&console.warn("Batching will always limit to 1 item");let r=e.query.split(" ");r.length>1&&console.warn("Batching will only support one query parameter");let i=r[0];if(!i.match(/^product:\d+$/)&&!i.match(/^variant:\d+$/))console.warn("Batching will only support product:<id> or variant:<id>");else return this.itemsLoader?.load(i)}return this.apiClient.items.list(e)},{data:[],pageInfo:{next:null,previous:null,totalCount:0}}),"list"),findById:s(async e=>this.withFallback(()=>this.apiClient.items.findById(e),{data:null}),"findById")}}get lists(){return{...this.apiClient.lists,list:s(async e=>this.withFallback(()=>this.apiClient.lists.list(e),{data:[],pageInfo:{next:null,previous:null,totalCount:0}}),"list"),findById:s(async e=>this.withFallback(()=>this.apiClient.lists.findById(e),{data:null}),"findById")}}get orders(){return{...this.apiClient.orders,list:s(async e=>this.withFallback(()=>this.apiClient.orders.list(e),{data:[],pageInfo:{next:null,previous:null,totalCount:0}}),"list"),findById:s(async e=>this.withFallback(()=>(typeof e=="string"&&(e=parseInt(e.split("/").pop()??e)),this.apiClient.orders.findById(e)),{data:null}),"findById")}}get profiles(){return this.apiClient.profiles}async clearCache(){await this.cache.clear()}};var Qe=class{constructor(e){this.eventMap={"POST /items\\/?$":"item-create","DELETE /items\\/?$":"item-delete","PATCH /items\\/([^/]+)\\/?$":"item-update","DELETE /items\\/([^/]+)\\/?$":"item-delete","PUT /items\\/([^/]+)\\/lists\\/?$":"item-lists-update","POST /lists\\/?$":"list-create","DELETE /lists\\/?$":"list-delete","PATCH /lists\\/([^/]+)\\/?$":"list-update","DELETE /lists\\/([^/]+)\\/?$":"list-delete"};this.eventBus=e,this.processFetchResponse=this.processFetchResponse.bind(this)}static{s(this,"SwishApiPublisher")}async processFetchResponse(e,t){try{let r=this.getEventName(t.method,e.status,t.url);if(!r)return;let i=await e.clone().text();if(e.headers.get("Content-Type")?.includes("application/json"))try{i=JSON.parse(i).data}catch(o){console.warn(o)}this.eventBus.publish(r,i)}catch(r){console.warn(r)}}getEventName(e,t,r){e=e.toUpperCase();let i=new URL(r).pathname;return e==="GET"||t<200||t>=300?void 0:Object.entries(this.eventMap).find(([u])=>{let[a,l]=u.split(" ");return a!==e?!1:new RegExp(l).test(i)})?.[1]}};var is=".swish-shop-bridge{position:absolute!important;top:0!important;left:0!important;padding:0!important;border:0!important;margin:0!important;pointer-events:none!important}.swish-shop-bridge input{appearance:none!important;border:none!important;width:1px!important;height:1px!important;padding:0!important;margin:0!important;background:rgba(0,0,0,0)!important}",ss=s(()=>{let n="/";return typeof window<"u"&&(n=window.location.pathname),`<form class=swish-shop-bridge data-login-with-shop-sign-in=true id=customer_login><input name=customer[email] id=customer_login_email> <input name=return_url type=hidden value=${n}></form>`},"getHtml"),os=typeof HTMLElement<"u"?HTMLElement:class{},qt=class extends os{static{s(this,"ShopBridge")}get swish(){return typeof window<"u"?window.swish:void 0}constructor(){super(),this.emailInput=this.querySelector('form[data-login-with-shop-sign-in] input[type="email"],form[data-login-with-shop-sign-in] input[name="customer[email]"'),this.emailInput||(this.innerHTML=`
443
443
  <style>${is}</style>
444
444
  ${ss()}
445
- `,this.emailInput=this.querySelector("#customer_login_email")),this.shopModalObserver=new MutationObserver(e=>{e.forEach(t=>{t.attributeName==="style"&&document.documentElement.style.overflow==="hidden"&&this.dispatchEvent(new CustomEvent("shop-modal-open"))})}),this.shopModalObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})}disconnectedCallback(){this.shopModalObserver?.disconnect()}async load(){try{(window.Shopify?.featureAssets?.["shop-js"]?.["init-customer-accounts"]?.[0]??"").includes("init-customer-accounts")&&window.Shopify?.SignInWithShop?.initCustomerAccounts?.(!0,{fedCMEnabled:!0,windoidEnabled:!1})}catch(e){console.warn("Failed to initialize Shop JS",e)}}update(e){if(e.email&&(this.emailInput.value=e.email,this.emailInput.dispatchEvent(new Event("input"))),e.returnTo){let t=this.querySelector("input[name='return_url']");t&&(t.value=e.returnTo)}}};typeof customElements<"u"&&customElements.define("swish-shop-bridge",qt);var Qe=class{constructor(e,t){this.inflightModals=new Map;this.scrollLockRefCount=0;this.scrollPositionBeforeLock=0;this._lockScroll=s(()=>this.lockScroll(),"_lockScroll");this._unlockScroll=s(()=>this.unlockScroll(),"_unlockScroll");this.swishUiOptions=e,this.storefrontContext=t}static{s(this,"SwishUi")}async hideModal(e){if(this.inflightModals.has(e))return this.inflightModals.get(e);let t=(async()=>{typeof e=="string"&&(e=await this.requireUiComponent(e)),!(!e||e.getAttribute("open")!=="true")&&e.setAttribute("open","false")})().finally(()=>{this.inflightModals.delete(e)});return this.unlockScroll(),this.inflightModals.set(e,t),t}async showModal(e){if(this.inflightModals.has(e))return this.inflightModals.get(e);let t=(async()=>{typeof e=="string"&&(e=await this.requireUiComponent(e)),!(!e||e.getAttribute("open")==="true")&&e.setAttribute("open","true")})().finally(()=>{this.inflightModals.delete(e)});return this.lockScroll(),this.inflightModals.set(e,t),t}waitForEvent(e,t){return new Promise(r=>{let i=[],o=s(()=>{i.forEach(({event:u,listener:a})=>{e.removeEventListener(u,a)})},"cleanup");Object.entries(t).forEach(([u,a])=>{let l=s(c=>{let p=a(c);o(),r(p)},"listener");i.push({event:u,listener:l}),e.addEventListener(u,l)})})}async showSignIn(e){let t=await this.requireUiComponent("sign-in");t.setAttribute("return-to",e?.returnTo??window.location.pathname),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close")});return await this.hideModal(t),r}async showUnsaveAlert(e){if(!e.itemId)throw new Error("An itemId is required to show the unsave alert");await this.hideAllToasts();let t=await this.requireUiComponent("unsave-alert");t.setAttribute("item-id",e.itemId),await this.showModal(t);let r=await this.waitForEvent(t,{submit:s(i=>i instanceof CustomEvent?{code:"ok",data:i.detail}:(console.warn("Unsave alert submitted without detail",i),{code:"closed"}),"submit"),close:s(()=>({code:"closed"}),"close")});return await this.hideModal(t),r}async showDeleteListAlert(e){if(!e.listId)throw new Error("A listId is required to show the delete list alert");await this.hideAllToasts();let t=await this.requireUiComponent("delete-list-alert");t.setAttribute("list-id",e.listId),await this.showModal(t);let r=await this.waitForEvent(t,{submit:s(()=>({code:"ok",data:void 0}),"submit"),close:s(()=>({code:"closed"}),"close")});return await this.hideModal(t),r}async showDrawer(e){await this.hideAllToasts();let t=await this.requireUiComponent("drawer");t.setAttribute("account-url",this.storefrontContext.routes.accountUrl),this.storefrontContext.customer.id&&t.setAttribute("customer-id",this.storefrontContext.customer.id),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close")});return await this.hideModal(t),r}async showListMenu(e){if(!e.listId)throw new Error("listId is required");await this.hideAllToasts();let t=await this.requireUiComponent("list-menu");t.setAttribute("list-id",e.listId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),edit:s(i=>i instanceof CustomEvent?{code:"ok",data:{action:"edit",data:i.detail}}:(console.warn("List menu edit without detail",i),{code:"closed"}),"edit"),delete:s(()=>({code:"ok",data:{action:"delete"}}),"delete")});return await this.hideModal(t),r}async showListSelect(e){if(!e.itemId)throw new Error("itemId is required");await this.hideAllToasts();let t=await this.requireUiComponent("list-select");t.setAttribute("item-id",e.itemId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),submit:s(i=>"detail"in i&&i.detail?{code:"ok",data:{action:"submit",data:i.detail}}:(console.warn("List select submit without detail",i),{code:"closed"}),"submit"),unsave:s(i=>i instanceof CustomEvent?{code:"ok",data:{action:"unsave",data:i.detail}}:(console.warn("List select unsave without detail",i),{code:"closed"}),"unsave")});return await this.hideModal(t),r}async initListDetailPage(e,t){let r=await this.requireUiComponent("list-detail-page",{refElement:t});e.listId&&r.setAttribute("list-id",e.listId)}async showToast(e){let t=Date.now(),r=await this.requireUiComponent("toast-manager",{onHydrated:s(i=>{i.current.show(e,t)},"onHydrated")});return this.waitForEvent(r,{[`close-${t}`]:()=>({code:"closed"}),[`submit-${t}`]:()=>({code:"ok",data:void 0})})}async hideAllToasts(){this.queryComponent("toast-manager")&&await this.requireUiComponent("toast-manager",{onHydrated:s(e=>{e.current.clear()},"onHydrated")})}async showVariantSelect(e){await this.hideAllToasts();let t=await this.requireUiComponent("variant-select");if(e?.itemId&&t.setAttribute("item-id",e.itemId),e?.productId)t.setAttribute("product-id",e.productId);else if(e?.productHandle)t.setAttribute("product-handle",e.productHandle);else throw new Error("Either productId or productHandle must be provided");e?.variantId&&t.setAttribute("variant-id",e.variantId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),submit:s(i=>"detail"in i&&i.detail?{code:"ok",data:i.detail}:(console.warn("Variant select submit without detail",i),{code:"closed"}),"submit")});return await this.hideModal(t),r}async showQuickBuy(e){await this.hideAllToasts();let t=await this.requireUiComponent("quick-buy");if(e?.productId)t.setAttribute("product-id",e.productId);else throw new Error("ProductId must be provided");e?.variantId&&t.setAttribute("variant-id",e.variantId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),submit:s(i=>"detail"in i&&i.detail?{code:"ok",data:i.detail}:(console.warn("Quick buy submit without detail",i),{code:"closed"}),"submit")});return await this.hideModal(t),r}async showListEditor(e){let t=await this.requireUiComponent("list-editor");e?.listId&&t.setAttribute("list-id",e.listId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),submit:s(i=>"detail"in i&&i.detail?{code:"ok",data:i.detail}:(console.warn("List editor submit without detail",i),{code:"closed"}),"submit")});return await this.hideModal(t),r}async initShopBridge({onShopModalOpen:e}){let t=document.querySelector("swish-shop-bridge");if(t||(document.body.insertAdjacentHTML("beforeend","<swish-shop-bridge></swish-shop-bridge>"),t=document.querySelector("swish-shop-bridge")),!t)throw new Error("Failed to initialize Shop Bridge");return t.addEventListener("shop-modal-open",()=>e(),{once:!0}),await t.load(),t}async requireUiComponent(e,t){this.loadCricalResources();let r=`${this.swishUiOptions.baseUrl}/ui@${this.swishUiOptions.version}/${e}.html`,i=await fetch(r).then(a=>a.text()),o=t?.instance,u=this.queryComponent(e,o)??await this.insertComponent({name:e,template:i,refElement:t?.refElement??document.body,position:"beforeend",instance:o});if(u.shadowRoot&&!u.hasAttribute("hydrated")){let a=`${this.swishUiOptions.baseUrl}/ui@${this.swishUiOptions.version}/${e}.js`;Promise.all([this.loadNonCriticalResources(),import(a)]).then(([{bundleCssStylesheet:l,customCssStylesheets:c},{hydrate:p}])=>{u.shadowRoot&&l&&(u.shadowRoot.adoptedStyleSheets=[...u.shadowRoot.adoptedStyleSheets,...c,l],u.shadowRoot?.querySelector(":host > style")?.remove()),p(u),u.setAttribute("hydrated",""),t?.onHydrated?.(u.getComponentRef())})}else u.hasAttribute("hydrated")&&t?.onHydrated?.(u.getComponentRef());return u}async loadCricalResources(){return this._loadCricalResourcesPromise?this._loadCricalResourcesPromise:(this._loadCricalResourcesPromise=(async()=>{let e=`${this.swishUiOptions.baseUrl}/ui@${this.swishUiOptions.version}/theme.css`,t=await fetch(e).then(i=>i.text()),r=new CSSStyleSheet;return r.replaceSync(t),this.swishUiOptions.theme&&Object.entries(this.swishUiOptions.theme).forEach(([i,o])=>{r.cssRules[0].cssRules[0].style.setProperty(i,o)}),{themeVariablesStylesheet:r}})(),this._loadCricalResourcesPromise)}async loadNonCriticalResources(){return this._loadNonCriticalResourcesPromise?this._loadNonCriticalResourcesPromise:(this._loadNonCriticalResourcesPromise=(async()=>{let e=`${this.swishUiOptions.baseUrl}/ui@${this.swishUiOptions.version}/bundle.css`,t=s(o=>{let u=new CSSStyleSheet;return u.replaceSync(o),u},"createCssStylesheet"),[r,...i]=await Promise.all([fetch(e).then(o=>o.text()).then(t),...this.swishUiOptions.css.map(async o=>o instanceof URL?t(await fetch(o).then(u=>u.text())):t(o))]);return{bundleCssStylesheet:r,customCssStylesheets:i}})(),this._loadNonCriticalResourcesPromise)}async insertComponent({name:e,instance:t,template:r,position:i,refElement:o}){let{themeVariablesStylesheet:u}=await this.loadCricalResources();o.insertAdjacentHTML(i,r.replace(' shadowrootmode="open"',""));let a=this.queryComponent(e,t);if(!a)throw new Error(`Element ${e} not found in DOM`);return a.shadowRoot&&(a.shadowRoot.adoptedStyleSheets=[u]),a}queryComponent(e,t){let r=`swish-ui[ref="${e}${t?`-${t}`:""}"]`;return document.querySelector(r)}lockScroll(){this.scrollLockRefCount++,this.scrollLockRefCount===1&&(this.scrollPositionBeforeLock=window.scrollY,this.scrollLockStyleSheet||(this.scrollLockStyleSheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.scrollLockStyleSheet]),this.scrollLockStyleSheet.replaceSync(`
445
+ `,this.emailInput=this.querySelector("#customer_login_email")),this.shopModalObserver=new MutationObserver(e=>{e.forEach(t=>{t.attributeName==="style"&&document.documentElement.style.overflow==="hidden"&&this.dispatchEvent(new CustomEvent("shop-modal-open"))})}),this.shopModalObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})}disconnectedCallback(){this.shopModalObserver?.disconnect()}async load(){try{(window.Shopify?.featureAssets?.["shop-js"]?.["init-customer-accounts"]?.[0]??"").includes("init-customer-accounts")&&window.Shopify?.SignInWithShop?.initCustomerAccounts?.(!0,{fedCMEnabled:!0,windoidEnabled:!1})}catch(e){console.warn("Failed to initialize Shop JS",e)}}update(e){if(e.email&&(this.emailInput.value=e.email,this.emailInput.dispatchEvent(new Event("input"))),e.returnTo){let t=this.querySelector("input[name='return_url']");t&&(t.value=e.returnTo)}}};typeof customElements<"u"&&customElements.define("swish-shop-bridge",qt);var We=class{constructor(e,t){this.inflightModals=new Map;this.scrollLockRefCount=0;this.scrollPositionBeforeLock=0;this._lockScroll=s(()=>this.lockScroll(),"_lockScroll");this._unlockScroll=s(()=>this.unlockScroll(),"_unlockScroll");this.swishUiOptions=e,this.storefrontContext=t}static{s(this,"SwishUi")}async hideModal(e){if(this.inflightModals.has(e))return this.inflightModals.get(e);let t=(async()=>{typeof e=="string"&&(e=await this.requireUiComponent(e)),!(!e||e.getAttribute("open")!=="true")&&e.setAttribute("open","false")})().finally(()=>{this.inflightModals.delete(e)});return this.unlockScroll(),this.inflightModals.set(e,t),t}async showModal(e){if(this.inflightModals.has(e))return this.inflightModals.get(e);let t=(async()=>{typeof e=="string"&&(e=await this.requireUiComponent(e)),!(!e||e.getAttribute("open")==="true")&&e.setAttribute("open","true")})().finally(()=>{this.inflightModals.delete(e)});return this.lockScroll(),this.inflightModals.set(e,t),t}waitForEvent(e,t){return new Promise(r=>{let i=[],o=s(()=>{i.forEach(({event:u,listener:a})=>{e.removeEventListener(u,a)})},"cleanup");Object.entries(t).forEach(([u,a])=>{let l=s(c=>{let p=a(c);o(),r(p)},"listener");i.push({event:u,listener:l}),e.addEventListener(u,l)})})}async showSignIn(e){let t=await this.requireUiComponent("sign-in");t.setAttribute("return-to",e?.returnTo??window.location.pathname),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close")});return await this.hideModal(t),r}async showUnsaveAlert(e){if(!e.itemId)throw new Error("An itemId is required to show the unsave alert");await this.hideAllToasts();let t=await this.requireUiComponent("unsave-alert");t.setAttribute("item-id",e.itemId),await this.showModal(t);let r=await this.waitForEvent(t,{submit:s(i=>i instanceof CustomEvent?{code:"ok",data:i.detail}:(console.warn("Unsave alert submitted without detail",i),{code:"closed"}),"submit"),close:s(()=>({code:"closed"}),"close")});return await this.hideModal(t),r}async showDeleteListAlert(e){if(!e.listId)throw new Error("A listId is required to show the delete list alert");await this.hideAllToasts();let t=await this.requireUiComponent("delete-list-alert");t.setAttribute("list-id",e.listId),await this.showModal(t);let r=await this.waitForEvent(t,{submit:s(()=>({code:"ok",data:void 0}),"submit"),close:s(()=>({code:"closed"}),"close")});return await this.hideModal(t),r}async showDrawer(e){await this.hideAllToasts();let t=await this.requireUiComponent("drawer");t.setAttribute("account-url",this.storefrontContext.routes.accountUrl),this.storefrontContext.customer.id&&t.setAttribute("customer-id",this.storefrontContext.customer.id),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close")});return await this.hideModal(t),r}async showListMenu(e){if(!e.listId)throw new Error("listId is required");await this.hideAllToasts();let t=await this.requireUiComponent("list-menu");t.setAttribute("list-id",e.listId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),edit:s(i=>i instanceof CustomEvent?{code:"ok",data:{action:"edit",data:i.detail}}:(console.warn("List menu edit without detail",i),{code:"closed"}),"edit"),delete:s(()=>({code:"ok",data:{action:"delete"}}),"delete")});return await this.hideModal(t),r}async showListSelect(e){if(!e.itemId)throw new Error("itemId is required");await this.hideAllToasts();let t=await this.requireUiComponent("list-select");t.setAttribute("item-id",e.itemId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),submit:s(i=>"detail"in i&&i.detail?{code:"ok",data:{action:"submit",data:i.detail}}:(console.warn("List select submit without detail",i),{code:"closed"}),"submit"),unsave:s(i=>i instanceof CustomEvent?{code:"ok",data:{action:"unsave",data:i.detail}}:(console.warn("List select unsave without detail",i),{code:"closed"}),"unsave")});return await this.hideModal(t),r}async initListDetailPage(e,t){let r=await this.requireUiComponent("list-detail-page",{refElement:t});e.listId&&r.setAttribute("list-id",e.listId)}async showToast(e){let t=Date.now(),r=await this.requireUiComponent("toast-manager",{onHydrated:s(i=>{i.current.show(e,t)},"onHydrated")});return this.waitForEvent(r,{[`close-${t}`]:()=>({code:"closed"}),[`submit-${t}`]:()=>({code:"ok",data:void 0})})}async hideAllToasts(){this.queryComponent("toast-manager")&&await this.requireUiComponent("toast-manager",{onHydrated:s(e=>{e.current.clear()},"onHydrated")})}async showVariantSelect(e){await this.hideAllToasts();let t=await this.requireUiComponent("variant-select");if(e?.itemId&&t.setAttribute("item-id",e.itemId),e?.productId)t.setAttribute("product-id",e.productId);else if(e?.productHandle)t.setAttribute("product-handle",e.productHandle);else throw new Error("Either productId or productHandle must be provided");e?.variantId&&t.setAttribute("variant-id",e.variantId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),submit:s(i=>"detail"in i&&i.detail?{code:"ok",data:i.detail}:(console.warn("Variant select submit without detail",i),{code:"closed"}),"submit")});return await this.hideModal(t),r}async showQuickBuy(e){await this.hideAllToasts();let t=await this.requireUiComponent("quick-buy");if(e?.productId)t.setAttribute("product-id",e.productId);else throw new Error("ProductId must be provided");e?.variantId&&t.setAttribute("variant-id",e.variantId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),submit:s(i=>"detail"in i&&i.detail?{code:"ok",data:i.detail}:(console.warn("Quick buy submit without detail",i),{code:"closed"}),"submit")});return await this.hideModal(t),r}async showListEditor(e){let t=await this.requireUiComponent("list-editor");e?.listId&&t.setAttribute("list-id",e.listId),await this.showModal(t);let r=await this.waitForEvent(t,{close:s(()=>({code:"closed"}),"close"),submit:s(i=>"detail"in i&&i.detail?{code:"ok",data:i.detail}:(console.warn("List editor submit without detail",i),{code:"closed"}),"submit")});return await this.hideModal(t),r}async initShopBridge({onShopModalOpen:e}){let t=document.querySelector("swish-shop-bridge");if(t||(document.body.insertAdjacentHTML("beforeend","<swish-shop-bridge></swish-shop-bridge>"),t=document.querySelector("swish-shop-bridge")),!t)throw new Error("Failed to initialize Shop Bridge");return t.addEventListener("shop-modal-open",()=>e(),{once:!0}),await t.load(),t}async requireUiComponent(e,t){this.loadCricalResources();let r=`${this.swishUiOptions.baseUrl}/ui@${this.swishUiOptions.version}/${e}.html`,i=await fetch(r).then(a=>a.text()),o=t?.instance,u=this.queryComponent(e,o)??await this.insertComponent({name:e,template:i,refElement:t?.refElement??document.body,position:"beforeend",instance:o});if(u.shadowRoot&&!u.hasAttribute("hydrated")){let a=`${this.swishUiOptions.baseUrl}/ui@${this.swishUiOptions.version}/${e}.js`;Promise.all([this.loadNonCriticalResources(),import(a)]).then(([{bundleCssStylesheet:l,customCssStylesheets:c},{hydrate:p}])=>{u.shadowRoot&&l&&(u.shadowRoot.adoptedStyleSheets=[...u.shadowRoot.adoptedStyleSheets,...c,l],u.shadowRoot?.querySelector(":host > style")?.remove()),p(u),u.setAttribute("hydrated",""),t?.onHydrated?.(u.getComponentRef())})}else u.hasAttribute("hydrated")&&t?.onHydrated?.(u.getComponentRef());return u}async loadCricalResources(){return this._loadCricalResourcesPromise?this._loadCricalResourcesPromise:(this._loadCricalResourcesPromise=(async()=>{let e=`${this.swishUiOptions.baseUrl}/ui@${this.swishUiOptions.version}/theme.css`,t=await fetch(e).then(i=>i.text()),r=new CSSStyleSheet;return r.replaceSync(t),this.swishUiOptions.theme&&Object.entries(this.swishUiOptions.theme).forEach(([i,o])=>{r.cssRules[0].cssRules[0].style.setProperty(i,o)}),{themeVariablesStylesheet:r}})(),this._loadCricalResourcesPromise)}async loadNonCriticalResources(){return this._loadNonCriticalResourcesPromise?this._loadNonCriticalResourcesPromise:(this._loadNonCriticalResourcesPromise=(async()=>{let e=`${this.swishUiOptions.baseUrl}/ui@${this.swishUiOptions.version}/bundle.css`,t=s(o=>{let u=new CSSStyleSheet;return u.replaceSync(o),u},"createCssStylesheet"),[r,...i]=await Promise.all([fetch(e).then(o=>o.text()).then(t),...this.swishUiOptions.css.map(async o=>o instanceof URL?t(await fetch(o).then(u=>u.text())):t(o))]);return{bundleCssStylesheet:r,customCssStylesheets:i}})(),this._loadNonCriticalResourcesPromise)}async insertComponent({name:e,instance:t,template:r,position:i,refElement:o}){let{themeVariablesStylesheet:u}=await this.loadCricalResources();o.insertAdjacentHTML(i,r.replace(' shadowrootmode="open"',""));let a=this.queryComponent(e,t);if(!a)throw new Error(`Element ${e} not found in DOM`);return a.shadowRoot&&(a.shadowRoot.adoptedStyleSheets=[u]),a}queryComponent(e,t){let r=`swish-ui[ref="${e}${t?`-${t}`:""}"]`;return document.querySelector(r)}lockScroll(){this.scrollLockRefCount++,this.scrollLockRefCount===1&&(this.scrollPositionBeforeLock=window.scrollY,this.scrollLockStyleSheet||(this.scrollLockStyleSheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.scrollLockStyleSheet]),this.scrollLockStyleSheet.replaceSync(`
446
446
  html[swish-locked] body {
447
447
  overflow: hidden;
448
448
  position: fixed;
@@ -450,4 +450,4 @@ Values:
450
450
  left: 0px;
451
451
  right: 0px;
452
452
  }
453
- `),document.documentElement.setAttribute("swish-locked",""))}unlockScroll(){this.scrollLockRefCount>0&&this.scrollLockRefCount--,this.scrollLockRefCount===0&&(this.scrollLockStyleSheet&&this.scrollLockStyleSheet.replaceSync(""),window.scrollTo({top:this.scrollPositionBeforeLock,behavior:"instant"}),this.scrollPositionBeforeLock=0,document.documentElement.removeAttribute("swish-locked"))}};var as=typeof HTMLElement<"u"?HTMLElement:class{},We=class extends as{constructor(){super();this.getComponentRef=s(()=>this.componentRef,"getComponentRef");this.setComponentRef=s(t=>{this.componentRef=t},"setComponentRef");this.shadowRoot||this.attachShadow({mode:"open"});let t=this.querySelector("template");t&&this.shadowRoot&&(this.shadowRoot.appendChild(t.content),t.remove())}static{s(this,"SwishUiElement")}};var ze=class{static{s(this,"ShopifyBadgesUtils")}#e;constructor({getBadges:e}){this.#e=e?.bind(this)}getBadges({product:e,variant:t}){try{let r=this.getDefaultBadges({product:e,variant:t});return this.#e?this.mapBadges(this.#e({product:e,variant:t,defaultBadges:r})??[]):this.mapBadges(r)}catch(r){return console.error("Error getting badges",r),[]}}getDefaultBadges({product:e,variant:t}){let r=[];if(e?.availableForSale===!1||t?.availableForSale===!1)return r.push("Sold out"),r;let i=t?t.price.amount:e?.priceRange?.minVariantPrice.amount,o=t?t.compareAtPrice?.amount:e?.compareAtPriceRange?.minVariantPrice.amount;return o&&parseFloat(o)>parseFloat(i)&&r.push("Sale"),r}mapBadges(e){return e.map(t=>typeof t=="string"?{id:t.toLowerCase().replace(/[^a-z0-9]/g,"_"),label:t}:t)}};var et="0.90.0",fc=s(async n=>{if(typeof window>"u")throw new Error("Swish is not supported in this environment");if(window.swish)return window.swish;let e=Qt(n),t=new $t(e);return window.swish=t,document.dispatchEvent(new Event("swish-ready")),t.api.initAuth().then(()=>{typeof window.Shopify?.analytics?.publish=="function"&&window.Shopify.analytics.publish("swish-ready",{market:e.storefrontContext.localization.market,country:e.storefrontContext.localization.country,language:e.storefrontContext.localization.language,rootUrl:e.storefrontContext.routes.rootUrl})}),t},"createSwish"),$t=class{constructor(e){this.dom={createElementLocator:ce,createQueryParamsObserver:ae};this.state={itemContext:en(this),itemState:tn(this),itemCount:nn(this),swishQuery:rn(this),effect:U,signal:k,computed:B};this.swishOptions=e,this.events=new ye,this.swishBadges=new ze({getBadges:this.swishOptions.badges?.getBadges}),this.swishApiPublisher=new He(this.events);let t=[et,e.swishUi?.version].join("-");this.swishApi=new je({...this.swishOptions.swishApi,responseInterceptor:this.swishApiPublisher.processFetchResponse},this.swishOptions.storefrontContext,this.events,t),this.ajaxApiPublisher=new me(this.events),this.ajaxApi=new he({storeDomain:this.swishOptions.storefrontApi.storeDomain,responseInterceptor:this.ajaxApiPublisher.processFetchResponse}),this.ajaxApi.patchFetch(),this.storefrontApi=new Ue(this.swishOptions.storefrontApi,this.swishOptions.storefrontContext,this.swishBadges,this.swishOptions.metafields),this.swishUi=new Qe(this.swishOptions.swishUi,this.swishOptions.storefrontContext),this.events.subscribe(["cart-add","cart-update","cart-change","cart-clear"],()=>{this.ajaxApi.clearCache()}),customElements.get("swish-ui")||customElements.define("swish-ui",We),this.intents=new _e(this,this.swishUi)}static{s(this,"SwishApp")}get options(){return this.swishOptions}get storefrontContext(){return this.swishOptions.storefrontContext}get badges(){return this.swishBadges}get api(){return this.swishApi}get storefront(){return this.storefrontApi}get ajax(){return this.ajaxApi}get shopUrl(){return`https://${this.swishOptions.storefrontApi.storeDomain}`}};export{et as VERSION,fc as createSwish};
453
+ `),document.documentElement.setAttribute("swish-locked",""))}unlockScroll(){this.scrollLockRefCount>0&&this.scrollLockRefCount--,this.scrollLockRefCount===0&&(this.scrollLockStyleSheet&&this.scrollLockStyleSheet.replaceSync(""),window.scrollTo({top:this.scrollPositionBeforeLock,behavior:"instant"}),this.scrollPositionBeforeLock=0,document.documentElement.removeAttribute("swish-locked"))}};var as=typeof HTMLElement<"u"?HTMLElement:class{},ze=class extends as{constructor(){super();this.getComponentRef=s(()=>this.componentRef,"getComponentRef");this.setComponentRef=s(t=>{this.componentRef=t},"setComponentRef");this.shadowRoot||this.attachShadow({mode:"open"});let t=this.querySelector("template");t&&this.shadowRoot&&(this.shadowRoot.appendChild(t.content),t.remove())}static{s(this,"SwishUiElement")}};var Xe=class{static{s(this,"ShopifyBadgesUtils")}#e;constructor({getBadges:e}){this.#e=e?.bind(this)}getBadges({product:e,variant:t}){try{let r=this.getDefaultBadges({product:e,variant:t});return this.#e?this.mapBadges(this.#e({product:e,variant:t,defaultBadges:r})??[]):this.mapBadges(r)}catch(r){return console.error("Error getting badges",r),[]}}getDefaultBadges({product:e,variant:t}){let r=[];if(e?.availableForSale===!1||t?.availableForSale===!1)return r.push("Sold out"),r;let i=t?t.price.amount:e?.priceRange?.minVariantPrice.amount,o=t?t.compareAtPrice?.amount:e?.compareAtPriceRange?.minVariantPrice.amount;return o&&parseFloat(o)>parseFloat(i)&&r.push("Sale"),r}mapBadges(e){return e.map(t=>typeof t=="string"?{id:t.toLowerCase().replace(/[^a-z0-9]/g,"_"),label:t}:t)}};var Oe="0.90.1",fc=`https://swish.app/cdn/sdk@${Oe}/swish.js`,hc=s(async n=>{if(typeof window>"u")throw new Error("Swish is not supported in this environment");if(window.swish)return window.swish;let e=Qt(n),t=new $t(e);return window.swish=t,document.dispatchEvent(new Event("swish-ready")),t.api.initAuth().then(()=>{typeof window.Shopify?.analytics?.publish=="function"&&window.Shopify.analytics.publish("swish-ready",{market:e.storefrontContext.localization.market,country:e.storefrontContext.localization.country,language:e.storefrontContext.localization.language,rootUrl:e.storefrontContext.routes.rootUrl})}),t},"createSwish"),$t=class{constructor(e){this.dom={createElementLocator:ce,createQueryParamsObserver:ae};this.state={itemContext:en(this),itemState:tn(this),itemCount:nn(this),swishQuery:rn(this),effect:N,signal:k,computed:B};this.swishOptions=e,this.events=new ye,this.swishBadges=new Xe({getBadges:this.swishOptions.badges?.getBadges}),this.swishApiPublisher=new Qe(this.events);let t=[Oe,e.swishUi?.version].join("-");this.swishApi=new He({...this.swishOptions.swishApi,responseInterceptor:this.swishApiPublisher.processFetchResponse},this.swishOptions.storefrontContext,this.events,t),this.ajaxApiPublisher=new me(this.events),this.ajaxApi=new he({storeDomain:this.swishOptions.storefrontApi.storeDomain,responseInterceptor:this.ajaxApiPublisher.processFetchResponse}),this.ajaxApi.patchFetch(),this.storefrontApi=new Fe(this.swishOptions.storefrontApi,this.swishOptions.storefrontContext,this.swishBadges,this.swishOptions.metafields),this.swishUi=new We(this.swishOptions.swishUi,this.swishOptions.storefrontContext),this.events.subscribe(["cart-add","cart-update","cart-change","cart-clear"],()=>{this.ajaxApi.clearCache()}),customElements.get("swish-ui")||customElements.define("swish-ui",ze),this.intents=new _e(this,this.swishUi)}static{s(this,"SwishApp")}get options(){return this.swishOptions}get storefrontContext(){return this.swishOptions.storefrontContext}get badges(){return this.swishBadges}get api(){return this.swishApi}get storefront(){return this.storefrontApi}get ajax(){return this.ajaxApi}get shopUrl(){return`https://${this.swishOptions.storefrontApi.storeDomain}`}};export{Oe as VERSION,hc as createSwish,fc as swishSdkUrl};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swishapp/sdk",
3
- "version": "0.90.0",
3
+ "version": "0.90.1",
4
4
  "description": "JS SDK for Swish.",
5
5
  "author": "Swish",
6
6
  "license": "UNLICENSED",