@swell/apps-sdk 1.0.114 → 1.0.116

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/index.js CHANGED
@@ -926,7 +926,7 @@
926
926
  </clipPath>
927
927
  </defs>
928
928
  </svg>
929
- `;var X1={image:u2,"product-1":Q5,"product-2":X5,"product-3":e2,"product-4":t2,"product-5":i2,"product-6":n2,"collection-1":r2,"collection-2":o2,"collection-3":a2,"collection-4":s2,"collection-5":l2,"collection-6":c2,"lifestyle-1":h2,"lifestyle-2":d2,"product-apparel-1":m2,"product-apparel-2":p2,"product-apparel-3":C2,"product-apparel-4":f2,"collection-apparel-1":g2,"collection-apparel-2":w2,"collection-apparel-3":y2,"collection-apparel-4":S2,"hero-apparel-1":k2,"hero-apparel-2":L2,"hero-apparel-3":b2,"blog-apparel-1":A2,"blog-apparel-2":T2,"blog-apparel-3":_2,"detailed-apparel-1":M2},P2=X1;function Oe(n){return e=>{let t=P2[e];return t?.src?`<img src="${t.src}" alt="${e}" class="placeholder-svg placeholder-svg--${e}" />`:t}}function Ve(n){return function(t){if(typeof t=="string")switch(t){case"option_selection.js":return"https://cdn.shopify.com/s/shopify/option_selection.js";case"api.jquery.js":return"https://cdn.shopify.com/s/shopify/api.jquery.js";case"shopify_common.js":return"https://cdn.shopify.com/s/shopify/shopify_common.js";case"customer_area.js":return"https://cdn.shopify.com/s/shopify/customer_area.js";case"currencies.js":return"https://cdn.shopify.com/s/javascripts/currencies.js";case"customer.css":return"https://cdn.shopify.com/s/shopify/customer.css";default:break}return t}}function Ue(n){return(e,t)=>(typeof e=="object"&&"value"in e&&(e=e.value),`<span data-swell-inline-editable="${t}">${e}</span>`)}var ei={asset_url:oe,brightness_difference:ae,color_brightness:se,color_contrast:le,color_darken:ce,color_desaturate:he,color_difference:de,color_extract:ue,color_lighten:me,color_mix:pe,color_modify:Ce,color_saturate:fe,color_to_hex:ge,color_to_hsl:we,color_to_rgb:ye,date:E3,default_errors:ke,divided_by:Le,font_face:be,font_modify:Ae,font_url:Te,format_address:I5,image_tag:_e,image_url:K5,inline_asset_content:Me,json:Pe,json_pretty:Ee,locale_flag:ve,money:Re,money_with_currency:De,money_without_currency:xe,money_without_trailing_zeros:je,script_tag:Ze,stylesheet_tag:Fe,time_tag:Ne,translate:s4,t:s4,where:Ie,asset_img_url:He,hex_to_rgba:Be,item_count_for_variant:Y5,payment_button:Ge,payment_terms:qe,placeholder_svg_tag:Oe,shopify_asset_url:Ve,inline_editable:Ue};function E2(n){for(let[e,t]of Object.entries(ei))typeof t=="function"?n.registerFilter(e,t(n)):typeof t.bind=="function"&&n.registerFilter(e,ti(n,t.bind,t.resolve))}function ti(n,e,t=[]){let i=e(n);return Array.isArray(t)?async function(...r){let[o,...a]=await Promise.all(r.map((s,l)=>Array.isArray(t[l])||t[l]===!0?v2(s,t[l]):s));return i.call(this,o,...a)}:i}async function v2(n,e){if(!n)return n;let t=n;v(t)&&(t=await t);try{if(Array.isArray(e))for(let i of e){if(typeof i!="string")continue;let[r,...o]=i.split("."),a=t[r];x(a)&&(v(a)?t[r]=await a:C3(a.resolve)&&(t[r]=await a.resolve())),o.length>0&&(t[r]=await v2(t[r],[o.join(".")]))}}catch{}return t}var R2=S("liquidjs");var D2={...R2.defaultOperators,"==":l4,"!=":(n,e)=>!l4(n,e),contains:(n,e)=>(n=r3(n),f3(n)?n.some(t=>l4(t,e)):C3(n?.indexOf)?n.indexOf(r3(e))>-1:!1)};function l4(n,e){return T3(n)?n.equals(e):T3(e)?e.equals(n):(n=r3(n),e=r3(e),f3(n)?f3(e)&&ii(n,e):n==e)}function ii(n,e){return n.length!==e.length?!1:!n.some((t,i)=>!l4(t,e[i]))}var R3=j(S("color"),1),j2=S("liquidjs"),k=class n extends j2.Drop{color;colorValues;red;green;blue;constructor(e){super();try{this.color=x2(e)?typeof e.color.object=="function"?e.color:(0,R3.default)(e.colorValues):(0,R3.default)(e),this.colorValues=this.color.object(),this.red=Number(this.colorValues.r),this.green=Number(this.colorValues.g),this.blue=Number(this.colorValues.b)}catch{this.color=(0,R3.default)("#000000"),this.colorValues=this.color.object(),this.red=Number(this.colorValues.r),this.green=Number(this.colorValues.g),this.blue=Number(this.colorValues.b)}}static get(e){return e instanceof n?e:new n(e)}static clone(e){return x2(e)?new n(n.get(e).toString()):new n(e)}toString(){return this.color.string()}valueOf(){return this.toString()}lighten(e){return this.color.lighten(e/100).hex().toLowerCase()}darken(e){return this.color.darken(e/100).hex().toLowerCase()}rgb(){return this.color.rgb().toString()}rgba(e){return this.color.alpha(e).rgb().toString()}hsl(){return this.color.hsl().round().toString()}hex(){return this.color.hex().toLowerCase()}saturate(e){return this.color.saturate(e/100).hex().toLowerCase()}desaturate(e){return this.color.desaturate(e/100).hex().toLowerCase()}modify(e,t){switch(e){case"red":case"green":case"blue":case"alpha":case"hue":case"lightness":break;case"saturation":return this.color.saturationl(t).hex();default:return this.toString()}let i=this.color[e](t);return e==="alpha"?i.string():i.hex()}extract(e){switch(e){case"red":case"green":case"blue":case"alpha":case"hue":case"lightness":break;case"saturation":return this.color.saturationl().toString();default:return this.toString()}return this.color[e]().toString()}mix(e,t){let i=this.color,r=e.color,[o,a,s]=i.rgb().array(),[l,h,u]=r.rgb().array(),c=R3.default.rgb([c4(o,l,t),c4(a,h,t),c4(s,u,t)]).alpha(c4(i.alpha(),r.alpha(),t));return i.alpha()!==1?c.string():c.hex()}contrast(e){return this.color.contrast(e.color).toFixed(1)}difference(e){let[t,i,r]=this.color.rgb().array(),[o,a,s]=e.color.rgb().array();return $e(t,o)+$e(i,a)+$e(r,s)}brightness(){return(this.red*299+this.green*587+this.blue*114)/1e3}brightnessDifference(e){return Math.max(this.brightness(),e.brightness())-Math.min(this.brightness(),e.brightness())}};function c4(n,e,t){return(n*t+e*(100-t))/100}function $e(n,e){return Math.max(n,e)-Math.min(n,e)}function x2(n){return typeof n=="object"&&n!==null&&Object.hasOwn(n,"color")&&Object.hasOwn(n,"colorValues")&&Object.hasOwn(n,"red")&&Object.hasOwn(n,"green")&&Object.hasOwn(n,"blue")}var d4=class extends Z2.Liquid{theme;getThemeConfig;getThemeTemplateConfigByType;getAssetUrl;renderTemplate;renderTemplateString;renderPageSections;renderTranslation;renderCurrency;isEditor;locale;currency;layoutName;extName;componentsDir;sectionsDir;lastSchema;constructor({theme:e,getThemeConfig:t,getThemeTemplateConfigByType:i,getAssetUrl:r,renderTemplate:o,renderTemplateString:a,renderPageSections:s,renderTranslation:l,renderCurrency:h,isEditor:u,locale:c,currency:C,layoutName:m,extName:f,componentsDir:p,sectionsDir:g}){t=t||e.getThemeConfig.bind(e),f=f||"liquid",super({cache:!1,relativeReference:!1,fs:ni(t,f),ownPropertyOnly:!1,operators:D2}),this.theme=e,this.getThemeConfig=t,this.getThemeTemplateConfigByType=i||e.getThemeTemplateConfigByType.bind(e),this.getAssetUrl=r||e.getAssetUrl.bind(e),this.renderTemplate=o||e.renderTemplate.bind(e),this.renderTemplateString=a||e.renderTemplateString.bind(e),this.renderPageSections=s||e.renderPageSections.bind(e),this.renderTranslation=l||e.renderTranslation.bind(e),this.renderCurrency=h||e.renderCurrency.bind(e),this.isEditor=!!u,this.locale=c||"en-US",this.currency=C||"USD",this.layoutName=m||"theme",this.extName=f,this.componentsDir=p||"components",this.sectionsDir=g||"sections",this.lastSchema=void 0,N5(this),E2(this)}async parseAndRender(e,t){return super.parseAndRender(e,t)}async resolveFilePathByType(e,t){let i=await this.getThemeTemplateConfigByType(e,t);if(i?.file_path)return i.file_path}async getComponentPath(e){return await this.resolveFilePathByType("components",e)||h4(`${this.componentsDir}/${e}`,this.extName)}async getSectionPath(e){return await this.resolveFilePathByType("sections",e)||h4(`${this.sectionsDir}/${e}`,this.extName)}async getSectionGroupPath(e){return await this.resolveFilePathByType("sections",`${e}.json`)||h4(`${this.sectionsDir}/${e}`,"json")}};function h4(n,e){return`theme/${n}.${e}`}function ni(n,e){return{async readFile(t){let i=h4(t,e);return n(i).then(r=>r?.file_data||`<!-- theme template not found: ${i} -->`)},async exists(t){return!0},readFileSync(t){return""},existsSync(t){return!1},contains(t,i){return!0},resolve(t,i,r){return i},fallback(t){}}}var Ke=S("lodash-es");async function F2(n,e,t){let r=(await Promise.all(e?.map(async o=>({...o,items:await N2(n,o.items,t)})))).map(o=>(n.shopifyCompatibility&&Object.assign(o,n.shopifyCompatibility.getMenuData(o)),o))||[];return H2([...r,...n.shopifyCompatibility?r.reduce((o,a)=>(a.handle&&o.push({...a,id:a.handle}),o),[]):[]])}async function N2(n,e,t){return e?.length>0?Promise.all(e.map(async r=>{let{url:o,resource:a}=await ri(n,r,{trailingSlash:t?.currentUrl?.endsWith("/")&&t.currentUrl!=="/"}),s=r.items&&await N2(n,r.items,t);return{...r,url:o,resource:a,levels:I2(s),current:t?.currentUrl===o,active:t?.currentUrl?.startsWith(o),...s?{items:s,child_current:oi(s),child_active:ze(s)}:void 0}})):[]}async function ri(n,e,t){if(!e)return{url:"#invalid-link-item"};if(typeof e=="object"&&e!==null){let{url:i,resource:r}=await si(n,e),o=i.slice(-1)==="/";return t?.trailingSlash&&!o&&i.length>1&&(i=i+"/"),!t?.trailingSlash&&o&&i.length>1&&(i=i.slice(0,-1)),{url:i,resource:r}}else return{url:e}}function I2(n){return n?.reduce((e,t)=>Math.max(e,t.items?1+I2(t.items):0),0)||0}function oi(n){return n.some(e=>e.current||e.items&&ze(e.items))}function ze(n){return n.some(e=>e.active||e.items&&ze(e.items))}function ai(n){return(0,Ke.get)(n,"id",(0,Ke.get)(n,"slug",typeof n=="string"?n:""))||""}async function si(n,e){let{type:t,value:i,url:r,model:o}=e;if(typeof t>"u"&&r)return{url:r};if(t==="url")return{url:typeof i=="string"?i:""};let a=ai(i);switch(t){case"home":return{url:L3(n,"index")};case"category":return a?await k3(n,"categories/category",a):{url:L3(n,"categories/index")};case"product":return a?await k3(n,"products/product",a):{url:L3(n,"products/index")};case"page":return await k3(n,"pages/page",a);case"blog":return await k3(n,"blogs/blog",a,async s=>new T(n.swell,"content/blog-categories",s.category_id).slug);case"blog_category":return await k3(n,"blogs/category",a);case"content_list":if(o){let s=o?.replace("content/","");return{url:L3(n,"content/index",s),resource:new A(n.swell,o)}}break;case"content":if(o){let s=o?.replace("content/","");return await k3(n,"content/content",a,s)}break;case"search":return{url:L3(n,"search")};default:break}return{url:`/${a}`}}function L3(n,e,t,i){let{props:r}=n,o=r?.pages?.find(a=>a.id===e)?.url;return o?.includes(":collection")&&i&&(o=o.replace(":collection",i)),o?.includes(":slug")&&(o=o.replace(":slug",t||"")),o||`/${t||""}`}async function k3(n,e,t,i){let{props:r}=n,o=r?.pages?.find(h=>h.id===e)?.collection,a=o?new T(n.swell,o,t):void 0,s=await a?.slug||t,l=typeof i=="string"?i:void 0;return a?.id&&typeof i=="function"&&(l=await i(a)),{url:L3(n,e,s,typeof l=="string"?l:void 0),resource:a}}var B2=j(S("bluebird"),1);var{Promise:D3}=B2.default,li=50,u4=class n{static cache=null;swell;manifest;configs;configPaths;constructor(e){this.swell=e,this.manifest=null,this.configs=new Map,this.configPaths=[]}async init(e){let{swellHeaders:t}=this.swell;if(e){this.setConfigs(e);return}t["theme-id"]&&(await this.fetchManifest(),this.manifest===null&&(console.log("ThemeLoader.init - version manifest not found"),await this.loadTheme()))}async loadTheme(){let{swellHeaders:e}=this.swell;if(console.log("ThemeLoader.loadTheme",e["theme-version-hash"]),e["theme-version-hash"]){let t=await this.loadThemeFromManifest();if(t)return t}return this.loadThemeAllConfigs()}getCache(){return n.cache===null&&(n.cache=new x3({kvStore:this.swell.workerEnv?.THEME})),n.cache}setConfigs(e){this.configs=new Map(e),this.configPaths=Array.from(this.configs.keys()),this.manifest=this.configPaths.reduce((t,i)=>(t[i]=this.configs.get(i)?.hash,t),{})}async preloadTheme(e,t){console.log(`ThemeLoader.preloadTheme${e?.hash?` - manifest: ${e.hash}`:""}${t?.length?` - configs: ${t.length}`:""}`),await D3.all([e&&this.cacheManifest(e),t&&D3.map(t,i=>this.cacheThemeConfig(i),{concurrency:10})])}async fetchThemeConfig(e){let t=this.configs.get(e);if(t!==void 0)return t;let i=this.manifest?.[e];if(i){let r=await this.getCache().get(`config:${i}`);return r?(this.configs.set(e,r),r):this.fetchThemeConfigsFromSourceByPath(e,i)}return null}async fetchThemeConfigsByPath(e,t){let i=this.configPaths.filter(o=>o.startsWith(e)&&(!t||o.endsWith(t)));return(await D3.map(i,o=>this.fetchThemeConfig(o),{concurrency:10})).filter(o=>o!==null)}async loadThemeAllConfigs(){let{swellHeaders:e}=this.swell,t=String(e["theme-config-version"]);if(!t)throw new Error("Theme version is required");return(await this.getCache().fetch(`configs-all:${this.swell.instanceId}:v@${t}2`,()=>this.fetchThemeConfigsFromSource()))?.results??[]}async loadThemeFromManifest(){let e=await this.fetchManifest();if(!e)return null;let t=[],i=new Map;if(await D3.map(Object.values(e),r=>this.getCache().get(`config:${r}`).then(o=>{o?(i.set(o.hash,o),this.configs.set(o.file_path,o)):t.push(r)}),{concurrency:10}),t.length>0){let o=(await this.fetchThemeConfigsFromSource(i.size===0?void 0:t))?.results??[];for(let a of o)i.set(a.hash,a),this.configs.set(a.file_path,a);await D3.map(o,a=>this.cacheThemeConfig(a),{concurrency:10})}return Array.from(i.values())}async cacheManifest(e){e?.hash&&await this.getCache().set(`manifest:${e.hash}`,e.manifest)}async cacheThemeConfig(e){e?.hash&&await this.getCache().set(`config:${e.hash}`,e)}async fetchManifest(){let{swellHeaders:e}=this.swell,t=e["theme-version-hash"];console.log("ThemeLoader.fetchManifest",t);let i=await this.getCache().get(`manifest:${t}`);if(!i){let r=await this.swell.get("/:themes:versions/:last",{...this.themeVersionQueryFilter(),fields:"hash, manifest"});r&&(await this.cacheManifest(r),i=r.manifest)}return this.manifest=i,this.configPaths=Object.keys(i||{}),this.manifest}async fetchThemeConfigsFromSource(e=void 0){e=e||[];let{swellHeaders:t}=this.swell,i=String(t["theme-config-version"]),r=e.length===0||e.length>li;return console.log(`Retrieving ${r?"all":"some"} theme configurations - version: ${i}`),await this.swell.get("/:themes:configs",{...this.themeVersionQueryFilter(),...r?{}:{hash:{$in:e}},limit:1e3,type:"theme",fields:"name, file, file_path, hash",include:{file_data:I4}})}async fetchThemeConfigsFromSourceByPath(e,t){console.log(`Retrieving theme config - ${e}`);let i=await this.swell.get("/:themes:configs/:last",{...this.themeVersionQueryFilter(),file_path:e,fields:"name, file, file_path, hash",include:{file_data:I4}});return i&&(this.configs.set(e,i),t&&(i.hash=t),await this.cacheThemeConfig(i)),i??null}themeVersionQueryFilter(){let{swellHeaders:e}=this.swell,t=e["theme-id"];if(!t)throw new Error("Theme ID is required");return{parent_id:t,branch_id:e["theme-branch-id"]||null,preview:e["deployment-mode"]==="editor"||e["deployment-mode"]==="preview"?!0:{$ne:!0}}}};var G2=class{swell;props;globals;forms;resources;liquidSwell;themeLoader;themeConfigs=null;page;pageId;shopifyCompatibility=null;shopifyCompatibilityClass=j3;shopifyCompatibilityConfig=null;formData={};globalData={};themeSettingFilePath="theme/config/theme.json";constructor(e,t={}){let{forms:i,resources:r,globals:o,shopifyCompatibilityClass:a}=t;this.swell=e,this.props=this.getSwellAppThemeProps(e.config),this.shopifyCompatibilityConfig=e.shopifyCompatibilityConfig||null,this.globals=o||{},this.forms=i,this.resources=r,this.shopifyCompatibilityClass=a||j3,this.liquidSwell=new d4({theme:this,getThemeConfig:this.getThemeConfig.bind(this),getAssetUrl:this.getAssetUrl.bind(this),getThemeTemplateConfigByType:this.getThemeTemplateConfigByType.bind(this),renderTemplate:this.renderTemplate.bind(this),renderTemplateString:this.renderTemplateString.bind(this),renderPageSections:this.renderPageSections.bind(this),renderTranslation:this.lang.bind(this),renderCurrency:this.renderCurrency.bind(this),isEditor:e.isEditor}),this.themeLoader=new u4(e)}getSwellAppThemeProps(e){return e?.storefront?.theme||{}}async initGlobals(e){this.pageId=e,await this.themeLoader.init(this.themeConfigs||void 0);let{store:t,session:i,menus:r,geo:o,configs:a}=await this.getSettingsAndConfigs(),{settings:s,request:l,page:h,cart:u,account:c,customer:C}=await this.resolvePageData(t,a,e);this.page=h;let m={...this.globalData,store:t,settings:s,session:i,request:l,menus:r,page:h,cart:u,account:c,customer:C,geo:o,configs:a,language:a?.language,canonical_url:`${t.url}${this.swell.url?.pathname||""}`,shopify_compatibility:!!s.shopify_compatibility};this.shopifyCompatibility&&this.shopifyCompatibility.initGlobals(m),this.setGlobals(m),this.shopifyCompatibility&&this.shopifyCompatibility.adaptQueryParams()}setGlobals(e){this.shopifyCompatibility&&this.shopifyCompatibility.adaptGlobals(e,this.globals),this.globals={...this.globals,...e},this.liquidSwell.options.globals={...this.globals}}async getSettingsAndConfigs(){let e=M5,[t,i]=await Promise.all([this.swell.getStorefrontSettings(),this.getThemeConfigsByPath("theme/config/",".json")]),r={theme:{},editor:{},language:{},presets:[],...Array.from(i.values()).reduce((s,l)=>{let h=String(l?.name||"").split(".")[0];if(h){let u;try{u=t3.default.parse(l.file_data)}catch(c){console.error(`Error parsing ${h} config: ${c}`),u={}}s[h]=u}return s},{})},o=await this.swell.storefront.settings.session();if(r.translations&&(r.language=r.translations),Object.keys(r.language).length>0)r.language=this.resolveTranslationLocale(r.language);else{let{locale:s}=this.swell.getStorefrontLocalization();r.language=await this.getLocaleConfig(s)}await this.setCompatibilityConfigs(r);let a=await this.resolveMenuSettings();return{store:t?.store,session:o,menus:a,geo:e,configs:r}}async resolvePageData(e,t,i){let r=String(this.swell.swellHeaders["theme-config-version"]),o=await this.swell.getCachedResource(`theme-settings-resolved:v@${r}`,[],()=>(t.editor?.settings&&ci(t.theme,t.editor?.settings),C4(this,t.theme,t.editor?.settings)));if(!o)throw new Error("Failed to resolve theme settings");let{locale:a,currency:s}=this.swell.getStorefrontLocalization(),l={host:this.swell.url.host,origin:this.swell.url.origin,path:this.swell.url.pathname,query:this.swell.queryParams,locale:a||e.locale,currency:s||e.currency,is_editor:this.swell.isEditor,is_preview:this.swell.isPreview},h=this.props.pages?.find(f=>f.id===i),u={...h,current:Number(this.swell.queryParams.page)||1,url:this.swell.url.pathname,custom:!h,slug:void 0,description:void 0,$locale:void 0};if(i){let f=await this.getThemeTemplateConfigByType("templates",i),p;try{p=t3.default.parse(f?.file_data||"{}")}catch(g){console.warn(g)}if(p?.page){let{slug:g,label:q,description:i3,$locale:m3}=p.page;u.slug=g,u.label=q||u.label,u.description=i3,u.$locale=m3}}let[c,C]=await Promise.all([this.fetchSingletonResourceCached("cart",()=>this.fetchCart(),{}),this.fetchSingletonResourceCached("account",()=>this.fetchAccount(),null)]);if(!c)throw new Error("Failed to fetch cart");let m;return this.shopifyCompatibility&&(m=C),{settings:o,request:l,page:u,cart:c,account:C,customer:m}}async fetchSingletonResourceCached(e,t,i){let r=this.swell.storefront.session.getCookie();return r?this.swell.getCachedResource(`${e}-${r}`,[],()=>t()):i}async fetchCart(){let e=this.resources?.singletons?.cart,t=e?new e(this.swell):new o3(this.swell,"cart");if(t._isEmpty=function(){return!this._result?.items?.length},await t.id,this.shopifyCompatibility){let i=M3(this.shopifyCompatibility,t);t.setCompatibilityProps(i)}return t}async fetchAccount(){let e=this.resources?.singletons?.account,t=e?new e(this.swell):new o3(this.swell,"account");if(await t.id,!t?.id)return null;if(this.shopifyCompatibility){let i=c3(this.shopifyCompatibility,t);t.setCompatibilityProps(i)}return t}getFormConfig(e){let t=e;if(this.shopifyCompatibility){let i=this.shopifyCompatibility.getAdaptedFormType(e);i&&(t=i)}return this.forms?.find(i=>i.id===t)}setFormData(e,t){let i=this.formData[e]||new s3(e);i instanceof s3&&(t?.params&&i.setParams(t.params),t?.errors?(i.setSuccess(!1),i.setErrors(t.errors)):t?.success&&(t.withoutErrors&&!i.errors?i.setSuccess(!0):t.withoutErrors||(i.setSuccess(!0),i.clearErrors())),this.shopifyCompatibility&&Object.assign(i,this.shopifyCompatibility.getFormData(i))),this.formData[e]=i,this.setGlobals({forms:this.formData})}setFormSuccessWithoutErrors(e){this.setFormData(e,{success:!0,withoutErrors:!0})}clearFormData(e){e?delete this.formData[e]:this.formData={},this.setGlobals({forms:this.formData})}serializeFormData(){let e={};for(let t in this.formData){let i=this.formData[t];e[t]={success:i.success,errors:i.errors&&Array.from(i.errors)}}return Object.keys(e).length>0?e:null}setGlobalData(e={}){this.globalData={...this.globalData,...e},this.setGlobals(this.globalData)}serializeGlobalData(){return Object.keys(this.globalData).length>0?this.globalData:null}updateSettings(e,t){return this.shopifyCompatibility?this.shopifyCompatibility.adaptSettings(e,t):Z3(e,t)}resolveTranslationLocale(e,t){if(!e)return{};if(t=t||this.swell.getStorefrontLocalization().locale,!t)return e;let i=t.split("-")[0];return(0,_.reduce)(e,(r,o,a)=>{if(D(o))if(a==="$locale")for(let s of Object.keys(o)){let l=o[s];D(l)&&Object.assign(r,this.resolveTranslationLocale(l,t))}else a[0]!=="$"&&(r[a]=this.resolveTranslationLocale(o,t));else if(typeof o=="string")if(o.startsWith("t:")){let s=o.slice(2),l=s.split("."),h=l.pop(),u=l.join("."),c=this.globals.language;r[a]=(0,_.get)(c,`${u}.$locale.${t}.${h}`)||(0,_.get)(c,`${u}.$locale.${i}.${h}`)||(0,_.get)(c,s)||o}else r[a]=(0,_.get)(e,`$locale.${t}.${a}`)||(0,_.get)(e,`$locale.${i}.${a}`)||o;return r},{})}async setCompatibilityConfigs(e){let t=()=>(this.shopifyCompatibility||(this.shopifyCompatibility=new this.shopifyCompatibilityClass(this)),this.shopifyCompatibility);if(!Object.keys(e.editor).length&&e.settings_schema){let i=await this.swell.storefront.settings.get("store");e.editor=t().getEditorConfig(e.settings_schema),e.editor=await t().renderSchemaTranslations(this,e.editor,i.locale||"en-US")}!Object.keys(e.theme).length&&e.settings_data&&(e.theme=t().getThemeConfig(e.settings_data),this.themeSettingFilePath="theme/config/settings_data.json"),!Object.keys(e.presets).length&&e.settings_data&&(e.presets=t().getPresetsConfig(e.settings_data)),e.theme.shopify_compatibility?t():this.shopifyCompatibility&&(e.theme.shopify_compatibility=!0)}setCompatibilityData(e){!e||!this.shopifyCompatibility||this.shopifyCompatibility.adaptPageData(e)}async getLocaleConfig(e="en",t=".json"){let i=await this.getThemeConfigsByPath("theme/locales/",t),r=i.get(`theme/locales/${e}${t}`)??null;if(!r){let o=e.split("-")[0];if(r=i.get(`theme/locales/${o}${t}`)??null,!r){let a=`.default${t}`;for(let s of i.values())if(s.file_path?.endsWith(a)){r=s;break}}}if(r){r=await this.getThemeConfig(r.file_path);try{return t3.default.parse(r?.file_data||"{}")}catch(o){console.warn(o)}}return{}}resolveLookupSetting(e,t){if(t instanceof P)return t;let i=hi(e);if(i){if(e.multiple){if(t instanceof Array)return t.map(r=>this.resolveLookupResource(i,r))}else if(t!==""&&t!==null&&t!==void 0)return this.resolveLookupResource(i,t)}return null}resolveLookupResource(e,t){let i=this.resources?.records?.[e],r=i?new i(this.swell,t):new T(this.swell,e,t);return this.shopifyCompatibility&&this.shopifyCompatibility.adaptPageData({resource:r}),r}resolveMenuSettings(){return F2(this,this.swell.getStorefrontMenus(),{currentUrl:this.swell.url.pathname})}resolveMenuSetting(e){if(!e)return null;let t=this.globals.menus||{};return t[e]||t[e.replace(/-/g,"_")]||null}async lang(e,t,i){return await this.renderTranslation(e,t,i)}resolveFontSetting(e){if(this.shopifyCompatibility){let t=this.shopifyCompatibility.getFontFromShopifySetting(e),i=Z.get(t||e);return Object.assign(i,this.shopifyCompatibility.getFontData(i)),i}return Z.get(e)}resolveUrlSetting(e){let t=e;if(this.shopifyCompatibility){e?.startsWith("shopify://")&&(t=e.replace("shopify://","/"));let i=this.shopifyCompatibility.getAdaptedPageUrl(t);if(i)return i}return t}resolveImageSetting(e){let t=e;return this.shopifyCompatibility&&e?.startsWith("shopify://")&&(t=""),t}async getAllThemeConfigs(){if(this.themeConfigs===null){let e=await this.themeLoader.loadTheme(),t=new Map;for(let i of e)t.set(i.file_path,i);this.themeConfigs=t}return this.themeConfigs}async preloadThemeConfigs(e,t){await this.themeLoader.preloadTheme(e,t)}getPageConfigPath(e){return this.shopifyCompatibility?`theme/${this.shopifyCompatibility.getThemeFilePath("templates",e)}.json`:`theme/templates/${e}.json`}async getThemeConfig(e){return this.themeConfigs?this.themeConfigs.get(e)??null:this.themeLoader.fetchThemeConfig(e)}async getThemeConfigsByPath(e,t){let i=await this.themeLoader.fetchThemeConfigsByPath(e,t),r=new Map;for(let o of i)r.set(o.file_path,o);return r}async getThemeTemplateConfig(e){if(e.endsWith(".json")||e.endsWith(".liquid"))return this.getThemeConfig(e);let t=await this.getThemeConfig(`${e}.json`);return t||this.getThemeConfig(`${e}.liquid`)}async getThemeTemplateConfigByType(e,t){let i=[`${e}/${t}`];this.shopifyCompatibility&&i.push(this.shopifyCompatibility.getThemeFilePath(e,t));for(let r of i){let o=await this.getThemeTemplateConfig(`theme/${r}`);if(o)return o}return null}async getAssetUrl(e){let i=(await this.getThemeConfig(`theme/assets/${e}`)||await this.getThemeConfig(`assets/${e}`))?.file;if(!i)return null;let r=i.url||null;return r&&(r.endsWith(e)?r:`${r}/${e}`)}async renderTemplate(e,t){let i=e?.file_data||null;if(e===null||i===null)return"";i=mi(i);try{return await this.liquidSwell.parseAndRender(i,t)}catch(r){return console.error(r),`<!-- template render error: ${r.message} -->`}}async renderTemplateString(e,t){try{return await this.liquidSwell.parseAndRender(e,t)}catch(i){return console.error(i),""}}async getSectionSchema(e){let t,i=await this.getThemeTemplateConfigByType("sections",e);if(i?.file_path?.endsWith(".json"))try{t=t3.default.parse(i.file_data)||void 0,this.shopifyCompatibility&&(t=this.shopifyCompatibility.getSectionConfigSchema(t),t=await this.shopifyCompatibility.renderSchemaTranslations(this,t,this.globals.store?.locale))}catch(r){console.warn(r);return}else if(i?.file_path?.endsWith(".liquid")&&this.shopifyCompatibility){this.liquidSwell.lastSchema=void 0;let r=this.getSectionConfigWithSchemaTagOnly(i);if(!r)return;await this.renderTemplate(r);let o=this.liquidSwell.lastSchema;o&&(t=this.shopifyCompatibility.getSectionConfigSchema(o),t=await this.shopifyCompatibility.renderSchemaTranslations(this,t,this.globals.store?.locale))}return t&&(t.id=t.id||e,t.label=t.label||e,t.fields=t.fields||[]),t}getSectionConfigWithSchemaTagOnly(e){let t="{% schema %}",i="{% endschema %}",r=e.file_data.indexOf(t),o=e.file_data.indexOf(i),a=e.file_data.slice(r+t.length,o);return r===-1||o===-1?null:{...e,file_data:t+a+i}}async renderThemeTemplate(e,t){let i=await this.getThemeTemplateConfig(e),r=await this.renderTemplate(i,t);if(i?.file_path?.endsWith(".json"))try{return t3.default.parse(r)}catch(o){throw console.log("Unable to render theme template",i.file_path,r),new m4(o)}return r}async renderLayoutTemplate(e,t){let i=await this.getThemeTemplateConfigByType("layouts",e);if(i){let r=await this.renderThemeTemplate(i.file_path,t);return typeof r=="string"?r:`<!-- invalid layout: ${e}--> {{ content_for_layout }}`}throw new Error(`Layout template not found: ${e}`)}async renderPageTemplate(e,t,i){let r=null;if(i&&(r=await this.getThemeTemplateConfigByType("templates",`${e}.${i}`)),r||(r=await this.getThemeTemplateConfigByType("templates",e)),r){let o=e.split("/").splice(1).join("/")||null,a={name:e,alt_name:i||null,path:o||null};this.shopifyCompatibility&&(a=j4(this.shopifyCompatibility,a)),this.setGlobals({template:a});let s=await this.renderThemeTemplate(r.file_path,t);return s&&typeof s!="string"&&(s.id=String(r.name)),s}throw new p4("Page template not found",404,`templates/${e}`)}async renderPage(e,t){e&&this.setGlobals(e);let i;if(this.page?.id?i=await this.renderPageTemplate(this.page.id,e,t):i=await this.renderPageTemplate("404",e),typeof i!="string"&&i?.page){if(i.page.published===!1)throw new p4;i.page=this.resolveTranslationLocale(i.page)}return i}getShopify1HomePageSectionGroup(){let e=this.globals.configs.theme||{};return{sections:e.sections||{},order:e.content_for_index||[]}}async getShopify1HomePageSections(e=!0){let t=this.getShopify1HomePageSectionGroup();return this.getPageSections(t,e)}async renderShopify1HomePage(e){let t=this.getShopify1HomePageSectionGroup(),i=await this.renderPageSections(t);return this.renderTemplateString(e,{content_for_index:i})}isShopify1HomePage(e,t){return e==="index"&&typeof t=="string"}async renderAllSections(e,t){let i=typeof e=="string"?e.split(/\s*,\s*/):e;return(await Promise.all(i.map(o=>this.renderSection(o,t)))).reduce((o,a,s)=>{let l=i[s];return this.shopifyCompatibility?o[l]=`
929
+ `;var X1={image:u2,"product-1":Q5,"product-2":X5,"product-3":e2,"product-4":t2,"product-5":i2,"product-6":n2,"collection-1":r2,"collection-2":o2,"collection-3":a2,"collection-4":s2,"collection-5":l2,"collection-6":c2,"lifestyle-1":h2,"lifestyle-2":d2,"product-apparel-1":m2,"product-apparel-2":p2,"product-apparel-3":C2,"product-apparel-4":f2,"collection-apparel-1":g2,"collection-apparel-2":w2,"collection-apparel-3":y2,"collection-apparel-4":S2,"hero-apparel-1":k2,"hero-apparel-2":L2,"hero-apparel-3":b2,"blog-apparel-1":A2,"blog-apparel-2":T2,"blog-apparel-3":_2,"detailed-apparel-1":M2},P2=X1;function Oe(n){return e=>{let t=P2[e];return t?.src?`<img src="${t.src}" alt="${e}" class="placeholder-svg placeholder-svg--${e}" />`:t}}function Ve(n){return function(t){if(typeof t=="string")switch(t){case"option_selection.js":return"https://cdn.shopify.com/s/shopify/option_selection.js";case"api.jquery.js":return"https://cdn.shopify.com/s/shopify/api.jquery.js";case"shopify_common.js":return"https://cdn.shopify.com/s/shopify/shopify_common.js";case"customer_area.js":return"https://cdn.shopify.com/s/shopify/customer_area.js";case"currencies.js":return"https://cdn.shopify.com/s/javascripts/currencies.js";case"customer.css":return"https://cdn.shopify.com/s/shopify/customer.css";default:break}return t}}function Ue(n){return(e,t)=>(typeof e=="object"&&"value"in e&&(e=e.value),`<span data-swell-inline-editable="${t}">${e}</span>`)}var ei={asset_url:oe,brightness_difference:ae,color_brightness:se,color_contrast:le,color_darken:ce,color_desaturate:he,color_difference:de,color_extract:ue,color_lighten:me,color_mix:pe,color_modify:Ce,color_saturate:fe,color_to_hex:ge,color_to_hsl:we,color_to_rgb:ye,date:E3,default_errors:ke,divided_by:Le,font_face:be,font_modify:Ae,font_url:Te,format_address:I5,image_tag:_e,image_url:K5,inline_asset_content:Me,json:Pe,json_pretty:Ee,locale_flag:ve,money:Re,money_with_currency:De,money_without_currency:xe,money_without_trailing_zeros:je,script_tag:Ze,stylesheet_tag:Fe,time_tag:Ne,translate:s4,t:s4,where:Ie,asset_img_url:He,hex_to_rgba:Be,item_count_for_variant:Y5,payment_button:Ge,payment_terms:qe,placeholder_svg_tag:Oe,shopify_asset_url:Ve,inline_editable:Ue};function E2(n){for(let[e,t]of Object.entries(ei))typeof t=="function"?n.registerFilter(e,t(n)):typeof t.bind=="function"&&n.registerFilter(e,ti(n,t.bind,t.resolve))}function ti(n,e,t=[]){let i=e(n);return Array.isArray(t)?async function(...r){let[o,...a]=await Promise.all(r.map((s,l)=>Array.isArray(t[l])||t[l]===!0?v2(s,t[l]):s));return i.call(this,o,...a)}:i}async function v2(n,e){if(!n)return n;let t=n;v(t)&&(t=await t);try{if(Array.isArray(e))for(let i of e){if(typeof i!="string")continue;let[r,...o]=i.split("."),a=t[r];x(a)&&(v(a)?t[r]=await a:C3(a.resolve)&&(t[r]=await a.resolve())),o.length>0&&(t[r]=await v2(t[r],[o.join(".")]))}}catch{}return t}var R2=S("liquidjs");var D2={...R2.defaultOperators,"==":l4,"!=":(n,e)=>!l4(n,e),contains:(n,e)=>(n=r3(n),f3(n)?n.some(t=>l4(t,e)):C3(n?.indexOf)?n.indexOf(r3(e))>-1:!1)};function l4(n,e){return T3(n)?n.equals(e):T3(e)?e.equals(n):(n=r3(n),e=r3(e),f3(n)?f3(e)&&ii(n,e):n==e)}function ii(n,e){return n.length!==e.length?!1:!n.some((t,i)=>!l4(t,e[i]))}var R3=j(S("color"),1),j2=S("liquidjs"),k=class n extends j2.Drop{color;colorValues;red;green;blue;constructor(e){super();try{this.color=x2(e)?typeof e.color.object=="function"?e.color:(0,R3.default)(e.colorValues):(0,R3.default)(e),this.colorValues=this.color.object(),this.red=Number(this.colorValues.r),this.green=Number(this.colorValues.g),this.blue=Number(this.colorValues.b)}catch{this.color=(0,R3.default)("#000000"),this.colorValues=this.color.object(),this.red=Number(this.colorValues.r),this.green=Number(this.colorValues.g),this.blue=Number(this.colorValues.b)}}static get(e){return e instanceof n?e:new n(e)}static clone(e){return x2(e)?new n(n.get(e).toString()):new n(e)}toString(){return this.color.string()}valueOf(){return this.toString()}lighten(e){return this.color.lighten(e/100).hex().toLowerCase()}darken(e){return this.color.darken(e/100).hex().toLowerCase()}rgb(){return this.color.rgb().toString()}rgba(e){return this.color.alpha(e).rgb().toString()}hsl(){return this.color.hsl().round().toString()}hex(){return this.color.hex().toLowerCase()}saturate(e){return this.color.saturate(e/100).hex().toLowerCase()}desaturate(e){return this.color.desaturate(e/100).hex().toLowerCase()}modify(e,t){switch(e){case"red":case"green":case"blue":case"alpha":case"hue":case"lightness":break;case"saturation":return this.color.saturationl(t).hex();default:return this.toString()}let i=this.color[e](t);return e==="alpha"?i.string():i.hex()}extract(e){switch(e){case"red":case"green":case"blue":case"alpha":case"hue":case"lightness":break;case"saturation":return this.color.saturationl().toString();default:return this.toString()}return this.color[e]().toString()}mix(e,t){let i=this.color,r=e.color,[o,a,s]=i.rgb().array(),[l,h,u]=r.rgb().array(),c=R3.default.rgb([c4(o,l,t),c4(a,h,t),c4(s,u,t)]).alpha(c4(i.alpha(),r.alpha(),t));return i.alpha()!==1?c.string():c.hex()}contrast(e){return this.color.contrast(e.color).toFixed(1)}difference(e){let[t,i,r]=this.color.rgb().array(),[o,a,s]=e.color.rgb().array();return $e(t,o)+$e(i,a)+$e(r,s)}brightness(){return(this.red*299+this.green*587+this.blue*114)/1e3}brightnessDifference(e){return Math.max(this.brightness(),e.brightness())-Math.min(this.brightness(),e.brightness())}};function c4(n,e,t){return(n*t+e*(100-t))/100}function $e(n,e){return Math.max(n,e)-Math.min(n,e)}function x2(n){return typeof n=="object"&&n!==null&&Object.hasOwn(n,"color")&&Object.hasOwn(n,"colorValues")&&Object.hasOwn(n,"red")&&Object.hasOwn(n,"green")&&Object.hasOwn(n,"blue")}var d4=class extends Z2.Liquid{theme;getThemeConfig;getThemeTemplateConfigByType;getAssetUrl;renderTemplate;renderTemplateString;renderPageSections;renderTranslation;renderCurrency;isEditor;locale;currency;layoutName;extName;componentsDir;sectionsDir;lastSchema;constructor({theme:e,getThemeConfig:t,getThemeTemplateConfigByType:i,getAssetUrl:r,renderTemplate:o,renderTemplateString:a,renderPageSections:s,renderTranslation:l,renderCurrency:h,isEditor:u,locale:c,currency:C,layoutName:m,extName:f,componentsDir:p,sectionsDir:g}){t=t||e.getThemeConfig.bind(e),f=f||"liquid",super({cache:!1,relativeReference:!1,fs:ni(t,f),ownPropertyOnly:!1,operators:D2}),this.theme=e,this.getThemeConfig=t,this.getThemeTemplateConfigByType=i||e.getThemeTemplateConfigByType.bind(e),this.getAssetUrl=r||e.getAssetUrl.bind(e),this.renderTemplate=o||e.renderTemplate.bind(e),this.renderTemplateString=a||e.renderTemplateString.bind(e),this.renderPageSections=s||e.renderPageSections.bind(e),this.renderTranslation=l||e.renderTranslation.bind(e),this.renderCurrency=h||e.renderCurrency.bind(e),this.isEditor=!!u,this.locale=c||"en-US",this.currency=C||"USD",this.layoutName=m||"theme",this.extName=f,this.componentsDir=p||"components",this.sectionsDir=g||"sections",this.lastSchema=void 0,N5(this),E2(this)}async parseAndRender(e,t){return super.parseAndRender(e,t)}async resolveFilePathByType(e,t){let i=await this.getThemeTemplateConfigByType(e,t);if(i?.file_path)return i.file_path}async getComponentPath(e){return await this.resolveFilePathByType("components",e)||h4(`${this.componentsDir}/${e}`,this.extName)}async getSectionPath(e){return await this.resolveFilePathByType("sections",e)||h4(`${this.sectionsDir}/${e}`,this.extName)}async getSectionGroupPath(e){return await this.resolveFilePathByType("sections",`${e}.json`)||h4(`${this.sectionsDir}/${e}`,"json")}};function h4(n,e){return`theme/${n}.${e}`}function ni(n,e){return{async readFile(t){let i=h4(t,e);return n(i).then(r=>r?.file_data||`<!-- theme template not found: ${i} -->`)},async exists(t){return!0},readFileSync(t){return""},existsSync(t){return!1},contains(t,i){return!0},resolve(t,i,r){return i},fallback(t){}}}var Ke=S("lodash-es");async function F2(n,e,t){let r=(await Promise.all(e?.map(async o=>({...o,items:await N2(n,o.items,t)})))).map(o=>(n.shopifyCompatibility&&Object.assign(o,n.shopifyCompatibility.getMenuData(o)),o))||[];return H2([...r,...n.shopifyCompatibility?r.reduce((o,a)=>(a.handle&&o.push({...a,id:a.handle}),o),[]):[]])}async function N2(n,e,t){return e?.length>0?Promise.all(e.map(async r=>{let{url:o,resource:a}=await ri(n,r,{trailingSlash:t?.currentUrl?.endsWith("/")&&t.currentUrl!=="/"}),s=r.items&&await N2(n,r.items,t);return{...r,url:o,resource:a,levels:I2(s),current:t?.currentUrl===o,active:t?.currentUrl?.startsWith(o),...s?{items:s,child_current:oi(s),child_active:ze(s)}:void 0}})):[]}async function ri(n,e,t){if(!e)return{url:"#invalid-link-item"};if(typeof e=="object"&&e!==null){let{url:i,resource:r}=await si(n,e),o=i.slice(-1)==="/";return t?.trailingSlash&&!o&&i.length>1&&(i=i+"/"),!t?.trailingSlash&&o&&i.length>1&&(i=i.slice(0,-1)),{url:i,resource:r}}else return{url:e}}function I2(n){return n?.reduce((e,t)=>Math.max(e,t.items?1+I2(t.items):0),0)||0}function oi(n){return n.some(e=>e.current||e.items&&ze(e.items))}function ze(n){return n.some(e=>e.active||e.items&&ze(e.items))}function ai(n){return(0,Ke.get)(n,"id",(0,Ke.get)(n,"slug",typeof n=="string"?n:""))||""}async function si(n,e){let{type:t,value:i,url:r,model:o}=e;if(typeof t>"u"&&r)return{url:r};if(t==="url")return{url:typeof i=="string"?i:""};let a=ai(i);switch(t){case"home":return{url:L3(n,"index")};case"category":return a?await k3(n,"categories/category",a):{url:L3(n,"categories/index")};case"product":return a?await k3(n,"products/product",a):{url:L3(n,"products/index")};case"page":return await k3(n,"pages/page",a);case"blog":return await k3(n,"blogs/blog",a,async s=>new T(n.swell,"content/blog-categories",s.category_id).slug);case"blog_category":return await k3(n,"blogs/category",a);case"content_list":if(o){let s=o?.replace("content/","");return{url:L3(n,"content/index",s),resource:new A(n.swell,o)}}break;case"content":if(o){let s=o?.replace("content/","");return await k3(n,"content/content",a,s)}break;case"search":return{url:L3(n,"search")};default:break}return{url:`/${a}`}}function L3(n,e,t,i){let{props:r}=n,o=r?.pages?.find(a=>a.id===e)?.url;return o?.includes(":collection")&&i&&(o=o.replace(":collection",i)),o?.includes(":slug")&&(o=o.replace(":slug",t||"")),o||`/${t||""}`}async function k3(n,e,t,i){let{props:r}=n,o=r?.pages?.find(h=>h.id===e)?.collection,a=o?new T(n.swell,o,t):void 0,s=await a?.slug||t,l=typeof i=="string"?i:void 0;return a?.id&&typeof i=="function"&&(l=await i(a)),{url:L3(n,e,s,typeof l=="string"?l:void 0),resource:a}}var B2=j(S("bluebird"),1);var{Promise:D3}=B2.default,li=50,u4=class n{static cache=null;swell;manifest;configs;configPaths;constructor(e){this.swell=e,this.manifest=null,this.configs=new Map,this.configPaths=[]}async init(e){let{swellHeaders:t}=this.swell;if(e){this.setConfigs(e);return}t["theme-id"]&&(await this.fetchManifest(),this.manifest===null&&(console.log("ThemeLoader.init - version manifest not found"),await this.loadTheme()))}async loadTheme(){let{swellHeaders:e}=this.swell;if(console.log("ThemeLoader.loadTheme",e["theme-version-hash"]),e["theme-version-hash"]){let t=await this.loadThemeFromManifest();if(t)return t}return this.loadThemeAllConfigs()}getCache(){return n.cache===null&&(n.cache=new x3({kvStore:this.swell.workerEnv?.THEME})),n.cache}setConfigs(e){this.configs=new Map(e),this.configPaths=Array.from(this.configs.keys()),this.manifest=this.configPaths.reduce((t,i)=>(t[i]=this.configs.get(i)?.hash,t),{})}async preloadTheme(e,t){console.log(`ThemeLoader.preloadTheme${e?.hash?` - manifest: ${e.hash}`:""}${t?.length?` - configs: ${t.length}`:""}`),await D3.all([e&&this.cacheManifest(e),t&&D3.map(t,i=>this.cacheThemeConfig(i),{concurrency:10})])}async fetchThemeConfig(e){let t=this.configs.get(e);if(t!==void 0)return t;let i=this.manifest?.[e];if(i){let r=await this.getCache().get(`config:${i}`);return r?(this.configs.set(e,r),r):this.fetchThemeConfigsFromSourceByPath(e,i)}return null}async fetchThemeConfigsByPath(e,t){let i=this.configPaths.filter(o=>o.startsWith(e)&&(!t||o.endsWith(t)));return(await D3.map(i,o=>this.fetchThemeConfig(o),{concurrency:10})).filter(o=>o!==null)}async loadThemeAllConfigs(){let{swellHeaders:e}=this.swell,t=String(e["theme-config-version"]);if(!t)throw new Error("Theme version is required");return(await this.getCache().fetch(`configs-all:${this.swell.instanceId}:v@${t}2`,()=>this.fetchThemeConfigsFromSource()))?.results??[]}async loadThemeFromManifest(){let e=await this.fetchManifest();if(!e)return null;let t=[],i=new Map;if(await D3.map(Object.values(e),r=>this.getCache().get(`config:${r}`).then(o=>{o?(i.set(o.hash,o),this.configs.set(o.file_path,o)):t.push(r)}),{concurrency:10}),t.length>0){let o=(await this.fetchThemeConfigsFromSource(i.size===0?void 0:t))?.results??[];for(let a of o)i.set(a.hash,a),this.configs.set(a.file_path,a);await D3.map(o,a=>this.cacheThemeConfig(a),{concurrency:10})}return Array.from(i.values())}async cacheManifest(e){e?.hash&&await this.getCache().set(`manifest:${e.hash}`,e.manifest)}async cacheThemeConfig(e){e?.hash&&await this.getCache().set(`config:${e.hash}`,e)}async fetchManifest(){let{swellHeaders:e}=this.swell,t=e["theme-version-hash"];console.log("ThemeLoader.fetchManifest",t);let i=await this.getCache().get(`manifest:${t}`);if(!i){let r=await this.swell.get("/:themes:versions/:last",{...this.themeVersionQueryFilter(),fields:"hash, manifest"});r&&(await this.cacheManifest(r),i=r.manifest)}return this.manifest=i,this.configPaths=Object.keys(i||{}),this.manifest}async fetchThemeConfigsFromSource(e=void 0){e=e||[];let{swellHeaders:t}=this.swell,i=String(t["theme-config-version"]),r=e.length===0||e.length>li;return console.log(`Retrieving ${r?"all":"some"} theme configurations - version: ${i}`),await this.swell.get("/:themes:configs",{...this.themeVersionQueryFilter(),...r?{}:{hash:{$in:e}},limit:1e3,type:"theme",fields:"name, file, file_path, hash",include:{file_data:I4}})}async fetchThemeConfigsFromSourceByPath(e,t){console.log(`Retrieving theme config - ${e}`);let i=await this.swell.get("/:themes:configs/:last",{...this.themeVersionQueryFilter(),file_path:e,fields:"name, file, file_path, hash",include:{file_data:I4}});return i&&(this.configs.set(e,i),t&&(i.hash=t),await this.cacheThemeConfig(i)),i??null}themeVersionQueryFilter(){let{swellHeaders:e}=this.swell,t=e["theme-id"];if(!t)throw new Error("Theme ID is required");return{parent_id:t,branch_id:e["theme-branch-id"]||null,preview:e["deployment-mode"]==="editor"||e["deployment-mode"]==="preview"?!0:{$ne:!0}}}};var G2=class{swell;props;globals;forms;resources;liquidSwell;themeLoader;themeConfigs=null;page;pageId;shopifyCompatibility=null;shopifyCompatibilityClass=j3;shopifyCompatibilityConfig=null;formData={};globalData={};themeSettingFilePath="theme/config/theme.json";constructor(e,t={}){let{forms:i,resources:r,globals:o,shopifyCompatibilityClass:a}=t;this.swell=e,this.props=this.getSwellAppThemeProps(e.config),this.shopifyCompatibilityConfig=e.shopifyCompatibilityConfig||null,this.globals=o||{},this.forms=i,this.resources=r,this.shopifyCompatibilityClass=a||j3,this.liquidSwell=new d4({theme:this,getThemeConfig:this.getThemeConfig.bind(this),getAssetUrl:this.getAssetUrl.bind(this),getThemeTemplateConfigByType:this.getThemeTemplateConfigByType.bind(this),renderTemplate:this.renderTemplate.bind(this),renderTemplateString:this.renderTemplateString.bind(this),renderPageSections:this.renderPageSections.bind(this),renderTranslation:this.lang.bind(this),renderCurrency:this.renderCurrency.bind(this),isEditor:e.isEditor}),this.themeLoader=new u4(e)}getSwellAppThemeProps(e){return e?.storefront?.theme||{}}async initGlobals(e){this.pageId=e,await this.themeLoader.init(this.themeConfigs||void 0);let{store:t,session:i,menus:r,geo:o,configs:a}=await this.getSettingsAndConfigs(),{settings:s,request:l,page:h,cart:u,account:c,customer:C}=await this.resolvePageData(t,a,e);this.page=h;let m={...this.globalData,store:t,settings:s,session:i,request:l,menus:r,page:h,cart:u,account:c,customer:C,geo:o,configs:a,language:a?.language,canonical_url:`${t.url}${this.swell.url?.pathname||""}`,shopify_compatibility:!!s.shopify_compatibility};this.shopifyCompatibility&&this.shopifyCompatibility.initGlobals(m),this.setGlobals(m),this.shopifyCompatibility&&this.shopifyCompatibility.adaptQueryParams()}setGlobals(e){this.shopifyCompatibility&&this.shopifyCompatibility.adaptGlobals(e,this.globals),this.globals={...this.globals,...e},this.liquidSwell.options.globals={...this.globals}}async getSettingsAndConfigs(){let e=M5,[t,i]=await Promise.all([this.swell.getStorefrontSettings(),this.getThemeConfigsByPath("theme/config/",".json")]),r={theme:{},editor:{},language:{},presets:[],...Array.from(i.values()).reduce((s,l)=>{let h=String(l?.name||"").split(".")[0];if(h&&l?.file_data){let u;try{u=t3.default.parse(l.file_data)}catch(c){console.error(`Error parsing ${h} config: ${c}`),u={}}s[h]=u}return s},{})},o=await this.swell.storefront.settings.session();if(r.translations&&(r.language=r.translations),Object.keys(r.language).length>0)r.language=this.resolveTranslationLocale(r.language);else{let{locale:s}=this.swell.getStorefrontLocalization();r.language=await this.getLocaleConfig(s)}await this.setCompatibilityConfigs(r);let a=await this.resolveMenuSettings();return{store:t?.store,session:o,menus:a,geo:e,configs:r}}async resolvePageData(e,t,i){let r=String(this.swell.swellHeaders["theme-config-version"]),o=await this.swell.getCachedResource(`theme-settings-resolved:v@${r}`,[],()=>(t.editor?.settings&&ci(t.theme,t.editor?.settings),C4(this,t.theme,t.editor?.settings)));if(!o)throw new Error("Failed to resolve theme settings");let{locale:a,currency:s}=this.swell.getStorefrontLocalization(),l={host:this.swell.url.host,origin:this.swell.url.origin,path:this.swell.url.pathname,query:this.swell.queryParams,locale:a||e.locale,currency:s||e.currency,is_editor:this.swell.isEditor,is_preview:this.swell.isPreview},h=this.props.pages?.find(f=>f.id===i),u={...h,current:Number(this.swell.queryParams.page)||1,url:this.swell.url.pathname,custom:!h,slug:void 0,description:void 0,$locale:void 0};if(i){let f=await this.getThemeTemplateConfigByType("templates",i),p;try{p=t3.default.parse(f?.file_data||"{}")}catch(g){console.warn(g)}if(p?.page){let{slug:g,label:q,description:i3,$locale:m3}=p.page;u.slug=g,u.label=q||u.label,u.description=i3,u.$locale=m3}}let[c,C]=await Promise.all([this.fetchSingletonResourceCached("cart",()=>this.fetchCart(),{}),this.fetchSingletonResourceCached("account",()=>this.fetchAccount(),null)]);if(!c)throw new Error("Failed to fetch cart");let m;return this.shopifyCompatibility&&(m=C),{settings:o,request:l,page:u,cart:c,account:C,customer:m}}async fetchSingletonResourceCached(e,t,i){let r=this.swell.storefront.session.getCookie();return r?this.swell.getCachedResource(`${e}-${r}`,[],()=>t()):i}async fetchCart(){let e=this.resources?.singletons?.cart,t=e?new e(this.swell):new o3(this.swell,"cart");if(t._isEmpty=function(){return!this._result?.items?.length},await t.id,this.shopifyCompatibility){let i=M3(this.shopifyCompatibility,t);t.setCompatibilityProps(i)}return t}async fetchAccount(){let e=this.resources?.singletons?.account,t=e?new e(this.swell):new o3(this.swell,"account");if(await t.id,!t?.id)return null;if(this.shopifyCompatibility){let i=c3(this.shopifyCompatibility,t);t.setCompatibilityProps(i)}return t}getFormConfig(e){let t=e;if(this.shopifyCompatibility){let i=this.shopifyCompatibility.getAdaptedFormType(e);i&&(t=i)}return this.forms?.find(i=>i.id===t)}setFormData(e,t){let i=this.formData[e]||new s3(e);i instanceof s3&&(t?.params&&i.setParams(t.params),t?.errors?(i.setSuccess(!1),i.setErrors(t.errors)):t?.success&&(t.withoutErrors&&!i.errors?i.setSuccess(!0):t.withoutErrors||(i.setSuccess(!0),i.clearErrors())),this.shopifyCompatibility&&Object.assign(i,this.shopifyCompatibility.getFormData(i))),this.formData[e]=i,this.setGlobals({forms:this.formData})}setFormSuccessWithoutErrors(e){this.setFormData(e,{success:!0,withoutErrors:!0})}clearFormData(e){e?delete this.formData[e]:this.formData={},this.setGlobals({forms:this.formData})}serializeFormData(){let e={};for(let t in this.formData){let i=this.formData[t];e[t]={success:i.success,errors:i.errors&&Array.from(i.errors)}}return Object.keys(e).length>0?e:null}setGlobalData(e={}){this.globalData={...this.globalData,...e},this.setGlobals(this.globalData)}serializeGlobalData(){return Object.keys(this.globalData).length>0?this.globalData:null}updateSettings(e,t){return this.shopifyCompatibility?this.shopifyCompatibility.adaptSettings(e,t):Z3(e,t)}resolveTranslationLocale(e,t){if(!e)return{};if(t=t||this.swell.getStorefrontLocalization().locale,!t)return e;let i=t.split("-")[0];return(0,_.reduce)(e,(r,o,a)=>{if(D(o))if(a==="$locale")for(let s of Object.keys(o)){let l=o[s];D(l)&&Object.assign(r,this.resolveTranslationLocale(l,t))}else a[0]!=="$"&&(r[a]=this.resolveTranslationLocale(o,t));else if(typeof o=="string")if(o.startsWith("t:")){let s=o.slice(2),l=s.split("."),h=l.pop(),u=l.join("."),c=this.globals.language;r[a]=(0,_.get)(c,`${u}.$locale.${t}.${h}`)||(0,_.get)(c,`${u}.$locale.${i}.${h}`)||(0,_.get)(c,s)||o}else r[a]=(0,_.get)(e,`$locale.${t}.${a}`)||(0,_.get)(e,`$locale.${i}.${a}`)||o;return r},{})}async setCompatibilityConfigs(e){let t=()=>(this.shopifyCompatibility||(this.shopifyCompatibility=new this.shopifyCompatibilityClass(this)),this.shopifyCompatibility);if(!Object.keys(e.editor).length&&e.settings_schema){let i=await this.swell.storefront.settings.get("store");e.editor=t().getEditorConfig(e.settings_schema),e.editor=await t().renderSchemaTranslations(this,e.editor,i.locale||"en-US")}!Object.keys(e.theme).length&&e.settings_data&&(e.theme=t().getThemeConfig(e.settings_data),this.themeSettingFilePath="theme/config/settings_data.json"),!Object.keys(e.presets).length&&e.settings_data&&(e.presets=t().getPresetsConfig(e.settings_data)),e.theme.shopify_compatibility?t():this.shopifyCompatibility&&(e.theme.shopify_compatibility=!0)}setCompatibilityData(e){!e||!this.shopifyCompatibility||this.shopifyCompatibility.adaptPageData(e)}async getLocaleConfig(e="en",t=".json"){let i=await this.getThemeConfigsByPath("theme/locales/",t),r=i.get(`theme/locales/${e}${t}`)??null;if(!r){let o=e.split("-")[0];if(r=i.get(`theme/locales/${o}${t}`)??null,!r){let a=`.default${t}`;for(let s of i.values())if(s.file_path?.endsWith(a)){r=s;break}}}if(r){r=await this.getThemeConfig(r.file_path);try{return t3.default.parse(r?.file_data||"{}")}catch(o){console.warn(o)}}return{}}resolveLookupSetting(e,t){if(t instanceof P)return t;let i=hi(e);if(i){if(e.multiple){if(t instanceof Array)return t.map(r=>this.resolveLookupResource(i,r))}else if(t!==""&&t!==null&&t!==void 0)return this.resolveLookupResource(i,t)}return null}resolveLookupResource(e,t){let i=this.resources?.records?.[e],r=i?new i(this.swell,t):new T(this.swell,e,t);return this.shopifyCompatibility&&this.shopifyCompatibility.adaptPageData({resource:r}),r}resolveMenuSettings(){return F2(this,this.swell.getStorefrontMenus(),{currentUrl:this.swell.url.pathname})}resolveMenuSetting(e){if(!e)return null;let t=this.globals.menus||{};return t[e]||t[e.replace(/-/g,"_")]||null}async lang(e,t,i){return await this.renderTranslation(e,t,i)}resolveFontSetting(e){if(this.shopifyCompatibility){let t=this.shopifyCompatibility.getFontFromShopifySetting(e),i=Z.get(t||e);return Object.assign(i,this.shopifyCompatibility.getFontData(i)),i}return Z.get(e)}resolveUrlSetting(e){let t=e;if(this.shopifyCompatibility){e?.startsWith("shopify://")&&(t=e.replace("shopify://","/"));let i=this.shopifyCompatibility.getAdaptedPageUrl(t);if(i)return i}return t}resolveImageSetting(e){let t=e;return this.shopifyCompatibility&&e?.startsWith("shopify://")&&(t=""),t}async getAllThemeConfigs(){if(this.themeConfigs===null){let e=await this.themeLoader.loadTheme(),t=new Map;for(let i of e)t.set(i.file_path,i);this.themeConfigs=t}return this.themeConfigs}async preloadThemeConfigs(e,t){await this.themeLoader.preloadTheme(e,t)}getPageConfigPath(e){return this.shopifyCompatibility?`theme/${this.shopifyCompatibility.getThemeFilePath("templates",e)}.json`:`theme/templates/${e}.json`}async getThemeConfig(e){return this.themeConfigs?this.themeConfigs.get(e)??null:this.themeLoader.fetchThemeConfig(e)}async getThemeConfigsByPath(e,t){let i=await this.themeLoader.fetchThemeConfigsByPath(e,t),r=new Map;for(let o of i)r.set(o.file_path,o);return r}async getThemeTemplateConfig(e){if(e.endsWith(".json")||e.endsWith(".liquid"))return this.getThemeConfig(e);let t=await this.getThemeConfig(`${e}.json`);return t||this.getThemeConfig(`${e}.liquid`)}async getThemeTemplateConfigByType(e,t){let i=[`${e}/${t}`];this.shopifyCompatibility&&i.push(this.shopifyCompatibility.getThemeFilePath(e,t));for(let r of i){let o=await this.getThemeTemplateConfig(`theme/${r}`);if(o)return o}return null}async getAssetUrl(e){let i=(await this.getThemeConfig(`theme/assets/${e}`)||await this.getThemeConfig(`assets/${e}`))?.file;if(!i)return null;let r=i.url||null;return r&&(r.endsWith(e)?r:`${r}/${e}`)}async renderTemplate(e,t){let i=e?.file_data||null;if(e===null||i===null)return"";i=mi(i);try{return await this.liquidSwell.parseAndRender(i,t)}catch(r){return console.error(r),`<!-- template render error: ${r.message} -->`}}async renderTemplateString(e,t){try{return await this.liquidSwell.parseAndRender(e,t)}catch(i){return console.error(i),""}}async getSectionSchema(e){let t,i=await this.getThemeTemplateConfigByType("sections",e);if(i?.file_path?.endsWith(".json"))try{t=t3.default.parse(i.file_data)||void 0,this.shopifyCompatibility&&(t=this.shopifyCompatibility.getSectionConfigSchema(t),t=await this.shopifyCompatibility.renderSchemaTranslations(this,t,this.globals.store?.locale))}catch(r){console.warn(r);return}else if(i?.file_path?.endsWith(".liquid")&&this.shopifyCompatibility){this.liquidSwell.lastSchema=void 0;let r=this.getSectionConfigWithSchemaTagOnly(i);if(!r)return;await this.renderTemplate(r);let o=this.liquidSwell.lastSchema;o&&(t=this.shopifyCompatibility.getSectionConfigSchema(o),t=await this.shopifyCompatibility.renderSchemaTranslations(this,t,this.globals.store?.locale))}return t&&(t.id=t.id||e,t.label=t.label||e,t.fields=t.fields||[]),t}getSectionConfigWithSchemaTagOnly(e){let t="{% schema %}",i="{% endschema %}",r=e.file_data.indexOf(t),o=e.file_data.indexOf(i),a=e.file_data.slice(r+t.length,o);return r===-1||o===-1?null:{...e,file_data:t+a+i}}async renderThemeTemplate(e,t){let i=await this.getThemeTemplateConfig(e),r=await this.renderTemplate(i,t);if(i?.file_path?.endsWith(".json"))try{return t3.default.parse(r)}catch(o){throw console.log("Unable to render theme template",i.file_path,r),new m4(o)}return r}async renderLayoutTemplate(e,t){let i=await this.getThemeTemplateConfigByType("layouts",e);if(i){let r=await this.renderThemeTemplate(i.file_path,t);return typeof r=="string"?r:`<!-- invalid layout: ${e}--> {{ content_for_layout }}`}throw new Error(`Layout template not found: ${e}`)}async renderPageTemplate(e,t,i){let r=null;if(i&&(r=await this.getThemeTemplateConfigByType("templates",`${e}.${i}`)),r||(r=await this.getThemeTemplateConfigByType("templates",e)),r){let o=e.split("/").splice(1).join("/")||null,a={name:e,alt_name:i||null,path:o||null};this.shopifyCompatibility&&(a=j4(this.shopifyCompatibility,a)),this.setGlobals({template:a});let s=await this.renderThemeTemplate(r.file_path,t);return s&&typeof s!="string"&&(s.id=String(r.name)),s}throw new p4("Page template not found",404,`templates/${e}`)}async renderPage(e,t){e&&this.setGlobals(e);let i;if(this.page?.id?i=await this.renderPageTemplate(this.page.id,e,t):i=await this.renderPageTemplate("404",e),typeof i!="string"&&i?.page){if(i.page.published===!1)throw new p4;i.page=this.resolveTranslationLocale(i.page)}return i}getShopify1HomePageSectionGroup(){let e=this.globals.configs.theme||{};return{sections:e.sections||{},order:e.content_for_index||[]}}async getShopify1HomePageSections(e=!0){let t=this.getShopify1HomePageSectionGroup();return this.getPageSections(t,e)}async renderShopify1HomePage(e){let t=this.getShopify1HomePageSectionGroup(),i=await this.renderPageSections(t);return this.renderTemplateString(e,{content_for_index:i})}isShopify1HomePage(e,t){return e==="index"&&typeof t=="string"}async renderAllSections(e,t){let i=typeof e=="string"?e.split(/\s*,\s*/):e;return(await Promise.all(i.map(o=>this.renderSection(o,t)))).reduce((o,a,s)=>{let l=i[s];return this.shopifyCompatibility?o[l]=`
930
930
  <div id="shopify-section-${l}" class="shopify-section">${String(a)}</div>
931
931
  `.trim():o[l]=`
932
932
  <div id="swell-section-${l}" class="swell-section">${String(a)}</div>
@@ -945,6 +945,6 @@ Shopify.routes = Shopify.routes || {};
945
945
  Shopify.routes.root = "/";
946
946
  ${o.join(`
947
947
  `)}<\/script>`}getMenuData(e){return a5(this,e)}getFontData(e){return s5(this,e)}getFormData(e){return l5(this,e)}getFontFromShopifySetting(e){return X2(e)}getThemeConfig(e){return W2(e)}getPresetsConfig(e){return J2(e)}getEditorConfig(e){let{locale:t}=this.swell.getStorefrontLocalization();return z2(e,t)}getSectionConfigSchema(e){let{locale:t}=this.swell.getStorefrontLocalization();return Y2(e,t)}getSectionGroup(e){let{locale:t}=this.swell.getStorefrontLocalization();return Q2(e,t)}async getEditorLocaleConfig(e,t){if(this.editorLocaleConfig?.[t])return this.editorLocaleConfig[t];let i=await e.getLocaleConfig(t,".schema.json");return this.editorLocaleConfig={[t]:i},i}async renderSchemaTranslations(e,t,i="en"){if(!(0,L4.isObject)(t))return t;let r=await this.getEditorLocaleConfig(e,i);return this.renderSchemaTranslationValue(e,t,i,r)}async renderSchemaTranslationValue(e,t,i,r){switch(typeof t){case"string":{if(t.startsWith("t:")){let o=t.slice(2),a=o?.split("."),s=a.pop()||"",l=a.join(".");return(0,L4.get)(r,l)?.[s]??o}break}case"object":{if(Array.isArray(t)){let o=[];for(let a of t)o.push(await this.renderSchemaTranslationValue(e,a,i,r));return o}if(t!==null){let o={...t};for(let[a,s]of Object.entries(t))o[a]=await this.renderSchemaTranslationValue(e,s,i,r);return o}break}default:break}return t}getPageType(e){return this.shopifyCompatibilityConfig?.page_types?.[e]||e}getPageRouteUrl(e){return this.theme.props.pages?.find(t=>t.id===e)?.url||e}getPageRoutes(){let e={account_addresses_url:this.getPageRouteUrl("account/addresses"),account_login_url:this.getPageRouteUrl("account/login"),account_logout_url:this.getPageRouteUrl("account/logout"),account_recover_url:this.getPageRouteUrl("account/recover"),account_register_url:this.getPageRouteUrl("account/signup"),account_url:this.getPageRouteUrl("account/index"),all_products_collection_url:this.getPageRouteUrl("products/index"),cart_add_url:this.getPageRouteUrl("cart/add"),cart_change_url:this.getPageRouteUrl("cart/change"),cart_clear_url:this.getPageRouteUrl("cart/clear"),cart_update_url:this.getPageRouteUrl("cart/update"),cart_url:this.getPageRouteUrl("cart/index"),collections_url:this.getPageRouteUrl("categories/index"),predictive_search_url:this.getPageRouteUrl("search/suggest"),product_recommendations_url:this.getPageRouteUrl("products/index"),root_url:this.getPageRouteUrl("index"),search_url:this.getPageRouteUrl("search")};if(this.shopifyCompatibilityConfig?.page_routes)for(let[t,i]of Object.entries(this.shopifyCompatibilityConfig.page_routes))i&&typeof i=="object"&&i.page_id?e[t]=this.getPageRouteUrl(i.page_id):typeof i=="string"&&(e[t]=i);return e}getLocalizationObject(e,t){return v3(this,e,t)}getAdaptedPageUrl(e){if(!e)return;let t,i,r={},[o,a]=e.split("?"),s=o.split("."),l=s[1]?s.pop():null,[,h,u,c]=s.join(".").split("/");switch(l==="js"&&(i="json"),h){case"account":switch(u){case"order":t="account/order",r.id=c;break;case"register":t="account/login";break;default:break}break;case"blog":u&&(t="blogs/category",r.category=u),c&&(t="blogs/blog",r.slug=c);break;case"collections":u?u==="all"?t="products/index":(t="categories/category",r.slug=u):t="categories/index";break;case"gift_card":u&&(t="gift-card",r.code=u);break}if(t){let C=this.getPageRouteUrl(t);if(C)return C.replace(/:(\w+)/g,(f,p)=>r[p])+(l?`.${l}`:"")+(a?`?${a}`:"")}else if(i)return o.replace(new RegExp(`.${l}$`),`.${i}`)+(a?`?${a}`:"")}getThemeFilePath(e,t){switch(e){case"assets":return`assets/${t}`;case"components":return`snippets/${t}`;case"config":return`config/${t}`;case"layouts":return`layout/${t}`;case"templates":return`templates/${this.getPageType(t)}`;case"sections":return`sections/${t}`;default:throw new Error(`Theme file type not supported: ${e}`)}}getPageResourceMap(){return this.shopifyCompatibilityConfig?.page_resources?this.shopifyCompatibilityConfig.page_resources.reduce((e,t)=>e.set(t.page,{page:t.page,resources:t.resources.map(({from:i,to:r,object:o})=>{let a=k4[o];if(!a)throw new Error(`ShopifyObject for '${o}' not found.`);return{from:i,to:r,object:a}})}),new Map):new Map}getObjectResourceMap(){return this.shopifyCompatibilityConfig?.object_resources?this.shopifyCompatibilityConfig.object_resources.reduce((e,t)=>{let i=k4[t.object];if(!i)throw new Error(`ShopifyObject for '${t.object}' not found.`);return e.set(t.from,{from:t.from,object:i})},new Map):new Map}getFormResourceMap(){return this.shopifyCompatibilityConfig?.forms?this.shopifyCompatibilityConfig.forms.map(e=>({shopifyType:e.shopify_type,type:e.id})):[]}getQueryParamsMap(){return[{from:"sort_by",to:"sort"},{from(e){return e.startsWith("filter.v.")},to(e,t){let i=e.split("filter.v.")[1],r=t;return{[i]:r}}}]}getAllCountryOptionTags(e){return e?e.countries?.map(t=>{if(!t)return"";let i=(e.states||[]).filter(o=>o.country===t.id).map(o=>[o.id,o.name]),r=JSON.stringify(i).replace(/"/g,"&quot;");return`<option value="${t.id}" data-provinces="${r}">${t.name}</option>`}).filter(Boolean).join(`
948
- `):""}isScriptFormActionUrl(e){if(!e)return!1;let t=this.shopifyCompatibilityConfig?.editor_configs?.script_actions_routes||{};for(let i of Object.values(t))if(e===i)return!0;return!1}isScriptUrl(e){if(!e)return!1;let t=this.shopifyCompatibilityConfig?.editor_configs?.script_routes||{};for(let i of Object.values(t))if(e.startsWith(i))return!0;return!1}needRedirectToPageStart(e){return e?(this.shopifyCompatibilityConfig?.editor_configs?.redirect_to_page_start_forms||[]).includes(e):!1}isCheckoutForm(e){return e?this.shopifyCompatibilityConfig?.editor_configs?.checkout_form===e:!1}};var y=class n{props;stringProp;linkProps;constructor(e,t,i){return this.props=e,this.stringProp=t,this.linkProps=i,new Proxy(e,{get(r,o){let a=r;switch(o){case"toJSON":return e;case"clone":return()=>new n((0,A3.cloneDeep)(e),(0,A3.cloneDeep)(t),(0,A3.cloneDeep)(i));case"toString":{if(t)return()=>e[t];break}default:break}return a[o]instanceof u3?a[o].resolve().then(s=>(a[o]=s,s),s=>(console.log(s),a[o]=null,null)):a[o]},getPrototypeOf(){return n.prototype}})}valueOf(){return this.stringProp?this.props[this.stringProp]:this}clone(){return new n({})}},u3=class{handler;result;constructor(e){this.result=void 0,this.handler=e}async resolve(){return this.result===void 0&&(this.result=Promise.resolve().then(()=>{let e=this.handler();return this.handler=A3.noop,e}).then(e=>(e=e!==void 0?e:null,this.result=e,e))),this.result}};function w(n){return new u3(n)}function Ti(n){return x(n)&&(v(n)||typeof n._resolve=="function")}function rt(n){return x(n)&&typeof n._resolve=="function"}async function _i(n){return Array.isArray(n)?Promise.all(n.map(e=>rt(e)?e._resolve():e)):rt(n)?n._resolve():n}async function ot(n,e){return _i(n).then(t=>Array.isArray(n)&&Array.isArray(t)?e(...t.map(i=>i||{})):Ti(t)?ot(t,e):e(t||{})).catch(t=>(console.log(t),null))}function d(n,e){return new u3(()=>ot(n,e))}function N4(n,e,t,i,r){return d(e,o=>o[t]?._cloneWithCompatibilityResult(a=>({results:a?.results?.map(s=>{let l=i(n,s);return r&&r(l,s),l})}))||[])}var Mi=j(S("json5"),1);function q3(n){let e={description:n.description,defaultValue:n.default,isLabelHidden:!0,layout:"column",params:n},t;switch(n?.type){case"text":case"short_text":t={type:"swell_short_text"};break;case"paragraph":t={type:"swell_paragraph"};break;case"textarea":case"long_text":case"liquid":t={type:"swell_long_text"};break;case"basic_html":case"rich_text":case"rich_text_pre_heading":case"rich_html":case"markdown":t={type:"swell_editor"};break;case"number":t={type:"swell_number"};break;case"select":t={type:"swell_select"};break;case"radio":t={type:"swell_radio"};break;case"checkbox":t={type:"swell_boolean"};break;case"color":t={type:"swell_color"};break;case"color_scheme":t={type:"swell_color_scheme"};break;case"color_scheme_group":t={type:"swell_color_scheme_group"};break;case"font":t={type:"swell_font"};break;case"header":t={type:"swell_header"};break;case"icon":t={type:"swell_menu"};break;case"menu":t={type:"swell_menu"};break;case"url":t={type:"swell_url"};break;case"lookup":case"generic_lookup":case"product_lookup":case"category_lookup":case"customer_lookup":t={type:"swell_lookup"};break;case"image":t={type:"swell_image",defaultValue:null};break;case"asset":case"document":case"video":t={type:"swell_file"};break;default:t={type:"swell_short_text"};break}return{...e,...t}}function G(n,e,t){if(t===void 0)return null;switch(n?.find(r=>r.id===e)?.type){default:return t}}function Pi(n,e){return e?.reduce((t,i)=>{for(let r of i.fields||[])r?.id&&(t[r.id]=n[r.id]);return t},{})}function Ei(n,e){if(e)return{settings:e.fields.reduce((t,i)=>(i?.id&&(t[i.id]=n[i.id]),t),{$locale:n.$locale}),id:e.id,blocks:n.Blocks?.filter(t=>!!t.props.compiled?._component).map(t=>{let i=t.props.compiled.props,r=t.props.compiled._component.split("__")[2],o=e.blocks?.find(a=>a.type===r);return{type:r,settings:o?.fields?.reduce((a,s)=>(s?.id&&(a[s.id]=i[s.id]),a),{$locale:i.$locale})||{}}})}}function O3(n){return n&&n.replace(/\./g,"\xB7")}function at(n){return n&&n.replace(/·/g,".")}function a3(n){var e="0123456789abcdef";function t(b){var L,M="";for(L=0;L<=3;L++)M+=e.charAt(b>>L*8+4&15)+e.charAt(b>>L*8&15);return M}function i(b,L){var M=(b&65535)+(L&65535),E=(b>>16)+(L>>16)+(M>>16);return E<<16|M&65535}function r(b,L){return b<<L|b>>>32-L}function o(b,L,M,E,O,V){return i(r(i(i(L,b),i(E,V)),O),M)}function a(b,L,M,E,O,V,n3){return o(L&M|~L&E,b,L,O,V,n3)}function s(b,L,M,E,O,V,n3){return o(L&E|M&~E,b,L,O,V,n3)}function l(b,L,M,E,O,V,n3){return o(L^M^E,b,L,O,V,n3)}function h(b,L,M,E,O,V,n3){return o(M^(L|~E),b,L,O,V,n3)}function u(b){var L,M=(b.length+8>>6)+1,E=new Array(M*16);for(L=0;L<M*16;L++)E[L]=0;for(L=0;L<b.length;L++)E[L>>2]|=b.charCodeAt(L)<<L%4*8;return E[L>>2]|=128<<L%4*8,E[M*16-2]=b.length*8,E}var c,C=u(""+n),m=1732584193,f=-271733879,p=-1732584194,g=271733878,q,i3,m3,p5;for(c=0;c<C.length;c+=16)q=m,i3=f,m3=p,p5=g,m=a(m,f,p,g,C[c+0],7,-680876936),g=a(g,m,f,p,C[c+1],12,-389564586),p=a(p,g,m,f,C[c+2],17,606105819),f=a(f,p,g,m,C[c+3],22,-1044525330),m=a(m,f,p,g,C[c+4],7,-176418897),g=a(g,m,f,p,C[c+5],12,1200080426),p=a(p,g,m,f,C[c+6],17,-1473231341),f=a(f,p,g,m,C[c+7],22,-45705983),m=a(m,f,p,g,C[c+8],7,1770035416),g=a(g,m,f,p,C[c+9],12,-1958414417),p=a(p,g,m,f,C[c+10],17,-42063),f=a(f,p,g,m,C[c+11],22,-1990404162),m=a(m,f,p,g,C[c+12],7,1804603682),g=a(g,m,f,p,C[c+13],12,-40341101),p=a(p,g,m,f,C[c+14],17,-1502002290),f=a(f,p,g,m,C[c+15],22,1236535329),m=s(m,f,p,g,C[c+1],5,-165796510),g=s(g,m,f,p,C[c+6],9,-1069501632),p=s(p,g,m,f,C[c+11],14,643717713),f=s(f,p,g,m,C[c+0],20,-373897302),m=s(m,f,p,g,C[c+5],5,-701558691),g=s(g,m,f,p,C[c+10],9,38016083),p=s(p,g,m,f,C[c+15],14,-660478335),f=s(f,p,g,m,C[c+4],20,-405537848),m=s(m,f,p,g,C[c+9],5,568446438),g=s(g,m,f,p,C[c+14],9,-1019803690),p=s(p,g,m,f,C[c+3],14,-187363961),f=s(f,p,g,m,C[c+8],20,1163531501),m=s(m,f,p,g,C[c+13],5,-1444681467),g=s(g,m,f,p,C[c+2],9,-51403784),p=s(p,g,m,f,C[c+7],14,1735328473),f=s(f,p,g,m,C[c+12],20,-1926607734),m=l(m,f,p,g,C[c+5],4,-378558),g=l(g,m,f,p,C[c+8],11,-2022574463),p=l(p,g,m,f,C[c+11],16,1839030562),f=l(f,p,g,m,C[c+14],23,-35309556),m=l(m,f,p,g,C[c+1],4,-1530992060),g=l(g,m,f,p,C[c+4],11,1272893353),p=l(p,g,m,f,C[c+7],16,-155497632),f=l(f,p,g,m,C[c+10],23,-1094730640),m=l(m,f,p,g,C[c+13],4,681279174),g=l(g,m,f,p,C[c+0],11,-358537222),p=l(p,g,m,f,C[c+3],16,-722521979),f=l(f,p,g,m,C[c+6],23,76029189),m=l(m,f,p,g,C[c+9],4,-640364487),g=l(g,m,f,p,C[c+12],11,-421815835),p=l(p,g,m,f,C[c+15],16,530742520),f=l(f,p,g,m,C[c+2],23,-995338651),m=h(m,f,p,g,C[c+0],6,-198630844),g=h(g,m,f,p,C[c+7],10,1126891415),p=h(p,g,m,f,C[c+14],15,-1416354905),f=h(f,p,g,m,C[c+5],21,-57434055),m=h(m,f,p,g,C[c+12],6,1700485571),g=h(g,m,f,p,C[c+3],10,-1894986606),p=h(p,g,m,f,C[c+10],15,-1051523),f=h(f,p,g,m,C[c+1],21,-2054922799),m=h(m,f,p,g,C[c+8],6,1873313359),g=h(g,m,f,p,C[c+15],10,-30611744),p=h(p,g,m,f,C[c+6],15,-1560198380),f=h(f,p,g,m,C[c+13],21,1309151649),m=h(m,f,p,g,C[c+4],6,-145523070),g=h(g,m,f,p,C[c+11],10,-1120210379),p=h(p,g,m,f,C[c+2],15,718787259),f=h(f,p,g,m,C[c+9],21,-343485551),m=i(m,q),f=i(f,i3),p=i(p,m3),g=i(g,p5);return t(m)+t(f)+t(p)+t(g)}function vi(n,e){if(!n.file_path.startsWith("theme/sections/"))return!1;if(n.file_path.endsWith(".liquid")){if(!e.get(n.file_path.replace(/\.liquid$/,".json")))return!0}else if(n.file_path.endsWith(".json"))return!0;return!1}async function V2(n,e){let t=[];for(let i of n.values())if(vi(i,n)){let r=await e(i);r&&t.push({...r,id:String(i.name||"").split(".").pop()??"",...r&&{presets:Ri(r)}})}return t}function Ri(n){return Array.isArray(n?.presets)?n.presets.map(e=>({label:e.label,settings:{...n.fields?.reduce((t,i)=>(i.id&&i.default!==void 0&&(t[i.id]=i.default),t),{}),...e.settings||void 0},blocks:e.blocks?.map(t=>{let i=n.blocks?.find(r=>r.type===t.type);return i?{...t,settings:{...i.fields.reduce((r,o)=>(o.id&&o.default!==void 0&&(r[o.id]=o.default),r),{}),...t.settings||void 0}}:t})})):[]}async function U2(n,e){let t=Array.from(n.values()),i=t.filter(a=>a.file_path.endsWith(".json")&&!n.has(a.file_path.replace(/\.json$/,".liquid"))),r=async a=>{let s=t.find(h=>{if(!h.file_path.endsWith(`/${a}.json`)&&!h.file_path.endsWith(`/${a}.liquid`))return!1;if(h.file_path.endsWith(".liquid")){if(!n.get(h.file_path.replace(/\.liquid$/,".json")))return!0}else if(h.file_path.endsWith(".json"))return!0;return!1});return s?{...await e(s),id:String(s.name||"").split(".").pop()}:void 0},o=[];for(let a of i){let s;try{s=ct.default.parse(a.file_data)}catch(l){console.warn(l)}if(s?.type){let l=await Je(s,r);o.push({...s,id:String(a.name||"").split(".").pop(),sectionConfigs:l})}}return o}async function Je(n,e){let t=Array.isArray(n?.order)&&n.order.length>0?n.order:Object.keys(n?.sections||{}),i=[];for(let r of t){let o=n.sections?.[r];if(!o)continue;let a=await e(o.type)||{id:o.type,label:o.type,tag:"div",class:"",fields:[],blocks:[]},s=n.id?`page__${n.id}__${r}`:a.id,h=(Array.isArray(o.block_order)?o.block_order:Object.keys(o.blocks||{})).map(c=>o.blocks?.[c]).filter(Boolean),u={section:{id:s,...o,blocks:h}};i.push({id:s,section:{id:s,...o},schema:a,settings:u,tag:a.tag||"div",class:a.class})}return i}function jl(n){return String(n)==="[object Array]"}function D(n){let e=typeof n;return n!==null&&(e==="object"||e==="function")}function ht(n){let e=new TextEncoder().encode(n),t="";for(let i=0;i<e.length;i+=3){let r=Array.from(e.slice(i,i+3));t+=btoa(String.fromCharCode(...r))}return t}function H2(n,e="id"){return(0,b4.reduce)(n,(t,i)=>(t[String(i[e])]=i,t),{})}function z5(n){let e=n.split(/-|_/),t=e.pop()?.toUpperCase(),i=e.join("-");return(t||P5[i]||"").toLowerCase()}function W5(n){return D(n)&&Object.hasOwn(n,"code")&&Object.hasOwn(n,"name")&&Object.hasOwn(n,"fallback")}function dt(n,e){if(!(typeof n!="object"||n===null))for(let[t,i]of Object.entries(n))e(t,n)!==!1&&typeof i=="object"&&i!==null&&dt(i,e)}function Zl(n){let e=new Set;return dt(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return!1;e.add(i)}return!0}),Array.from(e)}function Fl(n){if(!n)return n;let e=new WeakSet;return JSON.parse(JSON.stringify(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return JSON.parse(JSON.stringify(i));e.add(i)}return i}))}function Di(n){if(!(typeof n!="object"||n===null))for(let[e,t]of Object.entries(n))e==="_swell"&&"_swell"in n?n[e]=void 0:Di(t)}function st(n){if(n!==void 0)return n instanceof A?"SwellStorefrontCollection":n instanceof T?"SwellStorefrontRecord":n instanceof y?"ShopifyResource":n instanceof P?"StorefrontResource":"promise"}async function U(n,e=!0,t=!1){let i=n,r=e;try{if(v(n)&&(r=!1,i=await n),n instanceof P&&(r=!1,i=await U(n.resolve(),e,t)),Array.isArray(i)){let o=await Promise.all(i.map(a=>U(a,e,t)));if(i=o,!o.some(a=>a!==void 0))return e?[]:void 0}else if(typeof i=="object"&&i!==null&&(!("_swell"in i)||!i._swell)){let o={};for(let[a,s]of Object.entries(i)){if(!e&&(v(s)||s instanceof P||s instanceof y)){o[a]={_type:st(s),...t?{value:await U(s,r,t)}:void 0};continue}if(s instanceof P&&t){o[a]={_type:st(s),value:await U(s,r,t)};continue}o[a]=await U(s,r,t)}return!e&&Object.keys(o).length===0?void 0:o}}catch(o){return console.error(o),n}return i}function W(n){return lt.default.stringify({...n,sections:void 0,section_id:void 0},{encodeValuesOnly:!0,arrayFormat:"repeat"})}function $2(n,e){return n=Array.isArray(n)?n.join(" "):n,n.split("}").map(r=>{let[o,a]=r.split("{");return!o||!a?"":`${o.split(",").map(l=>`#${e} ${l.trim()}`).join(", ")} {${a}}`}).join(" ")}function Z3(n,e){return Object.entries(n).reduce((t,[i,r])=>(r?.value!==null&&r?.value!==void 0&&(t[at(i)]=r?.value),t),(0,b4.cloneDeep)(e))}var f4="ContentSections";function b3(n){return`SectionGroup_${n}`}var xi="THEME",ji=5*1e3,Zi=1e3*60*60*24*7,Fi=Object.freeze({ttl:ji}),ut="__NULL__",K=class{client;constructor(e){e=e||{},e.stores=e.stores||Ni(e.kvStore),this.client=(0,mt.createCache)({...Fi,...e})}async fetch(e,t){return this.client.wrap(e,t)}async fetchSWR(e,t,i=Zi){let r=await this.client.get(e),o=Promise.resolve().then(()=>t()).then(async s=>{let l=s==null,h=await U(s);return await this.client.set(e,l?ut:h,i),s});return r!==null?r===ut?null:r:await o}async get(e){return this.client.get(e)}async set(e,t,i){return this.client.set(e,t,i)}async flush(e){await this.client.del(e)}async flushAll(){await this.client.clear()}};function Ni(n){let e=[];return n?e.push(new d5.Keyv({namespace:xi,store:new K3(n)})):e.push(new d5.Keyv),e}var V3=class extends K{constructor(e){super({...e})}};var pt=S("keyv");var U3=class extends K{constructor(e){super({stores:Ii(),...e})}};function Ii(){return[new pt.Keyv({serialize:void 0,deserialize:void 0})]}var Hi=90*24*60*60*1e3,x3=class extends K{constructor(e){super({ttl:Hi,...e})}};var Ct="https://api.schema.io",ft=new Map,gt=new Map,wt=class n{url;headers;swellHeaders;queryParams;workerEnv;config;shopifyCompatibilityConfig;backend;storefront;storefrontContext;instanceId="";isPreview=!1;isEditor=!1;sentResponse=!1;storefront_url;resourceLoadingIndicator;constructor(e){let{url:t,config:i,shopifyCompatibilityConfig:r,headers:o,swellHeaders:a,serverHeaders:s,queryParams:l,workerEnv:h,...u}=e;if(this.url=t instanceof URL?t:new URL(t||""),this.config=i,this.shopifyCompatibilityConfig=r,this.queryParams=n.formatQueryParams(l||this.url.searchParams),this.workerEnv=h,this.resourceLoadingIndicator=e.resourceLoadingIndicator,console.log(`KV cache: ${this.workerEnv?.THEME?"enabled":"disabled"}`),s){let{headers:c,swellHeaders:C}=n.formatHeaders(s);this.headers=c,this.swellHeaders=C,this.backend=new u5({storeId:C["store-id"],accessToken:C["access-token"],apiHost:C["api-host"]}),this.storefront=this.getStorefrontInstance({...e,headers:c,swellHeaders:C}),this.instanceId=["store-id","environment-id","deployment-mode","theme-id","theme-branch-id"].map(m=>C[m]||"0").join(":"),this.isEditor=u.isEditor??C["deployment-mode"]==="editor",this.isPreview=this.isEditor||C["deployment-mode"]==="preview"}else if(o&&a)Object.assign(this,u),this.headers=o,this.swellHeaders=a,this.storefront=this.getStorefrontInstance(e);else throw new Error("Swell client requires `serverHeaders` when initialized on the server-side, or `headers` and `swellHeaders` when initialized on the client-side.");this.storefrontContext=this.initStorefrontContext()}static formatHeaders(e){let t={},i={};e instanceof Headers?e.forEach((r,o)=>{t[o]=r}):e&&(t=e);for(let[r,o]of Object.entries(t))r.startsWith("swell-")&&o&&(i[r.replace("swell-","")]=o);return{headers:t,swellHeaders:i}}static formatQueryParams(e){let t={};return e instanceof URLSearchParams?t=kt.default.parse(e.toString()):e&&(t=e),t}async getCachedResource(e,t,i){let r=yt(e,[this.instanceId,t]);return this.getResourceCache().fetchSWR(r,i)}async getAppSettings(){return await this.get("/:storefronts/{id}/configs/settings/values",{id:this.swellHeaders["storefront-id"]})||{}}async getStorefrontSettings(e=!1){try{let{settings:t,menus:i,payments:r,subscriptions:o,session:a}=await this.storefront.request("get","/settings/all",void 0,void 0,{force:e}),s=this.storefront.settings;s.localizedState={},s.set({value:t}),s.set({model:"menus",value:i}),s.set({model:"payments",value:r}),s.set({model:"subscriptions",value:o}),s.set({model:"session",value:a})}catch(t){t instanceof Error&&(t.message=`Swell: unable to load settings (${t.message})`),console.error(t)}return this.storefront.settings.get()}getStorefrontMenus(){let e=this.storefront.settings.getState("/settings/menus","menuState");return!e||v(e)?[]:e}getStorefrontLocalization(){let e=this.storefront.locale.selected(),t=this.storefront.currency.selected();return!e||v(e)?{locale:"en-US",currency:"USD"}:{locale:e,currency:t}}async get(...e){return this.backend?.get(...e)}async put(...e){return this.backend?.put(...e)}async post(...e){return this.backend?.post(...e)}async delete(...e){return this.backend?.delete(...e)}isLoading(e=!0){this.resourceLoadingIndicator&&this.resourceLoadingIndicator(e)}getStorefrontInstance(e){let{swellHeaders:t,getCookie:i,setCookie:r,storefrontSettingStates:o}=e;if(!t)throw new Error("Swell headers are required");let a=t["store-id"],s=t["public-key"];if(!a||!s)throw new Error('Missing required headers: "swell-store-id" and "swell-public-key"');let l=St.default.create(a,s,{url:t["admin-url"],vaultUrl:t["vault-url"],getCookie:i,setCookie:r&&((h,u,c)=>r(h,u,c,this)),headers:{"Swell-Store-id":a,"Swell-Storefront-Id":t["storefront-id"]}});return o&&Object.assign(l.settings,o),l.request=this.getCacheableStorefrontRequestHandler(l),l}initStorefrontContext(){let e={};if(this.swellHeaders?.["storefront-context"])try{e=JSON.parse(decodeURIComponent(this.swellHeaders["storefront-context"]))}catch{console.error("Failed to parse swell-storefront-context. Ignoring...")}return e}isStorefrontRequestCacheable(e,t,i){if(i?.force)return!1;if(e==="get")switch(t.split("/")[1]){case"products":case"categories":case"content":case"settings":return!0;default:return!1}return!1}getCacheableStorefrontRequestHandler(e){let t=e.request;return(i,r,o,a,s)=>{if(this.isStorefrontRequestCacheable(i,r,s))return this.getRequestCache().fetchSWR(yt("request",[this.instanceId,i,r,o,a,s]),()=>t(i,r,o,a,s));switch(i){case"delete":case"post":case"put":{let l=r.split("/")[1];delete this.storefrontContext[l];break}default:}return t(i,r,o,a,s)}}getResourceCache(){let e=ft.get(this.instanceId);return e||(e=new U3({kvStore:this.workerEnv?.THEME}),ft.set(this.instanceId,e)),e}getRequestCache(){let e=gt.get(this.instanceId);return e||(e=new V3({kvStore:this.workerEnv?.THEME}),gt.set(this.instanceId,e)),e}};function yt(n,e){let t=n;return Array.isArray(e)&&e.length>0&&(t+=`_${JSON.stringify(e)}`),t.length>512&&(t=`${t.slice(0,480)}${a3(t)}`),t}var u5=class{apiHost=Ct;apiAuth="";constructor({storeId:e,accessToken:t,apiHost:i}){this.apiHost=i||Ct,this.apiAuth=ht(`${e}:${t}`)}async makeRequest(e,t,i){let r={method:e,headers:{Authorization:`Basic ${this.apiAuth}`,"User-Agent":"swell-functions/1.0","Content-Type":"application/json"}},o="";if(i)try{e==="GET"?o=`?${this.stringifyQuery(i)}`:(r.body=JSON.stringify(i),r.headers["Content-Length"]=String(r.body.length))}catch{throw new Error(`Error serializing data: ${i}`)}let a=String(t).startsWith("/")?t.substring(1):t,s=`${this.apiHost}/${a}${o}`,l=await fetch(s,r),h=await l.text(),u;try{u=JSON.parse(h)}catch{u=String(h||"").trim()}if(l.status>299)throw new A4(u,{status:l.status,method:e,endpointUrl:a});if(e!=="GET"&&u?.errors)throw new A4(u.errors,{status:400,method:e,endpointUrl:a});return u}stringifyQuery(e,t){let i=[];for(let[r,o]of Object.entries(e)){let a=t?`${t}[${r}]`:r,l=o!==null&&typeof o=="object"?this.stringifyQuery(o,a):`${encodeURIComponent(a)}=${o===null?"":encodeURIComponent(o)}`;i.push(l)}return i.join("&")}async get(e,t){return this.makeRequest("GET",e,t)}async put(e,t){return this.makeRequest("PUT",e,t)}async post(e,t){return this.makeRequest("POST",e,t)}async delete(e,t){return this.makeRequest("DELETE",e,t)}},A4=class extends Error{status=200;constructor(e,t={}){let i;typeof e=="string"?i=e:i=JSON.stringify(e,null,2),t.method&&t.endpointUrl&&(i=`${t.method} /${t.endpointUrl}
948
+ `):""}isScriptFormActionUrl(e){if(!e)return!1;let t=this.shopifyCompatibilityConfig?.editor_configs?.script_actions_routes||{};for(let i of Object.values(t))if(e===i)return!0;return!1}isScriptUrl(e){if(!e)return!1;let t=this.shopifyCompatibilityConfig?.editor_configs?.script_routes||{};for(let i of Object.values(t))if(e.startsWith(i))return!0;return!1}needRedirectToPageStart(e){return e?(this.shopifyCompatibilityConfig?.editor_configs?.redirect_to_page_start_forms||[]).includes(e):!1}isCheckoutForm(e){return e?this.shopifyCompatibilityConfig?.editor_configs?.checkout_form===e:!1}};var y=class n{props;stringProp;linkProps;constructor(e,t,i){return this.props=e,this.stringProp=t,this.linkProps=i,new Proxy(e,{get(r,o){let a=r;switch(o){case"toJSON":return e;case"clone":return()=>new n((0,A3.cloneDeep)(e),(0,A3.cloneDeep)(t),(0,A3.cloneDeep)(i));case"toString":{if(t)return()=>e[t];break}default:break}return a[o]instanceof u3?a[o].resolve().then(s=>(a[o]=s,s),s=>(console.log(s),a[o]=null,null)):a[o]},getPrototypeOf(){return n.prototype}})}valueOf(){return this.stringProp?this.props[this.stringProp]:this}clone(){return new n({})}},u3=class{handler;result;constructor(e){this.result=void 0,this.handler=e}async resolve(){return this.result===void 0&&(this.result=Promise.resolve().then(()=>{let e=this.handler();return this.handler=A3.noop,e}).then(e=>(e=e!==void 0?e:null,this.result=e,e))),this.result}};function w(n){return new u3(n)}function Ti(n){return x(n)&&(v(n)||typeof n._resolve=="function")}function rt(n){return x(n)&&typeof n._resolve=="function"}async function _i(n){return Array.isArray(n)?Promise.all(n.map(e=>rt(e)?e._resolve():e)):rt(n)?n._resolve():n}async function ot(n,e){return _i(n).then(t=>Array.isArray(n)&&Array.isArray(t)?e(...t.map(i=>i||{})):Ti(t)?ot(t,e):e(t||{})).catch(t=>(console.log(t),null))}function d(n,e){return new u3(()=>ot(n,e))}function N4(n,e,t,i,r){return d(e,o=>o[t]?._cloneWithCompatibilityResult(a=>({results:a?.results?.map(s=>{let l=i(n,s);return r&&r(l,s),l})}))||[])}var Mi=j(S("json5"),1);function q3(n){let e={description:n.description,defaultValue:n.default,isLabelHidden:!0,layout:"column",params:n},t;switch(n?.type){case"text":case"short_text":t={type:"swell_short_text"};break;case"paragraph":t={type:"swell_paragraph"};break;case"textarea":case"long_text":case"liquid":t={type:"swell_long_text"};break;case"basic_html":case"rich_text":case"rich_text_pre_heading":case"rich_html":case"markdown":t={type:"swell_editor"};break;case"number":t={type:"swell_number"};break;case"select":t={type:"swell_select"};break;case"radio":t={type:"swell_radio"};break;case"checkbox":t={type:"swell_boolean"};break;case"color":t={type:"swell_color"};break;case"color_scheme":t={type:"swell_color_scheme"};break;case"color_scheme_group":t={type:"swell_color_scheme_group"};break;case"font":t={type:"swell_font"};break;case"header":t={type:"swell_header"};break;case"icon":t={type:"swell_menu"};break;case"menu":t={type:"swell_menu"};break;case"url":t={type:"swell_url"};break;case"lookup":case"generic_lookup":case"product_lookup":case"category_lookup":case"customer_lookup":t={type:"swell_lookup"};break;case"image":t={type:"swell_image",defaultValue:null};break;case"asset":case"document":case"video":t={type:"swell_file"};break;default:t={type:"swell_short_text"};break}return{...e,...t}}function G(n,e,t){if(t===void 0)return null;switch(n?.find(r=>r.id===e)?.type){default:return t}}function Pi(n,e){return e?.reduce((t,i)=>{for(let r of i.fields||[])r?.id&&(t[r.id]=n[r.id]);return t},{})}function Ei(n,e){if(e)return{settings:e.fields.reduce((t,i)=>(i?.id&&(t[i.id]=n[i.id]),t),{$locale:n.$locale}),id:e.id,blocks:n.Blocks?.filter(t=>!!t.props.compiled?._component).map(t=>{let i=t.props.compiled.props,r=t.props.compiled._component.split("__")[2],o=e.blocks?.find(a=>a.type===r);return{type:r,settings:o?.fields?.reduce((a,s)=>(s?.id&&(a[s.id]=i[s.id]),a),{$locale:i.$locale})||{}}})}}function O3(n){return n&&n.replace(/\./g,"\xB7")}function at(n){return n&&n.replace(/·/g,".")}function a3(n){var e="0123456789abcdef";function t(b){var L,M="";for(L=0;L<=3;L++)M+=e.charAt(b>>L*8+4&15)+e.charAt(b>>L*8&15);return M}function i(b,L){var M=(b&65535)+(L&65535),E=(b>>16)+(L>>16)+(M>>16);return E<<16|M&65535}function r(b,L){return b<<L|b>>>32-L}function o(b,L,M,E,O,V){return i(r(i(i(L,b),i(E,V)),O),M)}function a(b,L,M,E,O,V,n3){return o(L&M|~L&E,b,L,O,V,n3)}function s(b,L,M,E,O,V,n3){return o(L&E|M&~E,b,L,O,V,n3)}function l(b,L,M,E,O,V,n3){return o(L^M^E,b,L,O,V,n3)}function h(b,L,M,E,O,V,n3){return o(M^(L|~E),b,L,O,V,n3)}function u(b){var L,M=(b.length+8>>6)+1,E=new Array(M*16);for(L=0;L<M*16;L++)E[L]=0;for(L=0;L<b.length;L++)E[L>>2]|=b.charCodeAt(L)<<L%4*8;return E[L>>2]|=128<<L%4*8,E[M*16-2]=b.length*8,E}var c,C=u(""+n),m=1732584193,f=-271733879,p=-1732584194,g=271733878,q,i3,m3,p5;for(c=0;c<C.length;c+=16)q=m,i3=f,m3=p,p5=g,m=a(m,f,p,g,C[c+0],7,-680876936),g=a(g,m,f,p,C[c+1],12,-389564586),p=a(p,g,m,f,C[c+2],17,606105819),f=a(f,p,g,m,C[c+3],22,-1044525330),m=a(m,f,p,g,C[c+4],7,-176418897),g=a(g,m,f,p,C[c+5],12,1200080426),p=a(p,g,m,f,C[c+6],17,-1473231341),f=a(f,p,g,m,C[c+7],22,-45705983),m=a(m,f,p,g,C[c+8],7,1770035416),g=a(g,m,f,p,C[c+9],12,-1958414417),p=a(p,g,m,f,C[c+10],17,-42063),f=a(f,p,g,m,C[c+11],22,-1990404162),m=a(m,f,p,g,C[c+12],7,1804603682),g=a(g,m,f,p,C[c+13],12,-40341101),p=a(p,g,m,f,C[c+14],17,-1502002290),f=a(f,p,g,m,C[c+15],22,1236535329),m=s(m,f,p,g,C[c+1],5,-165796510),g=s(g,m,f,p,C[c+6],9,-1069501632),p=s(p,g,m,f,C[c+11],14,643717713),f=s(f,p,g,m,C[c+0],20,-373897302),m=s(m,f,p,g,C[c+5],5,-701558691),g=s(g,m,f,p,C[c+10],9,38016083),p=s(p,g,m,f,C[c+15],14,-660478335),f=s(f,p,g,m,C[c+4],20,-405537848),m=s(m,f,p,g,C[c+9],5,568446438),g=s(g,m,f,p,C[c+14],9,-1019803690),p=s(p,g,m,f,C[c+3],14,-187363961),f=s(f,p,g,m,C[c+8],20,1163531501),m=s(m,f,p,g,C[c+13],5,-1444681467),g=s(g,m,f,p,C[c+2],9,-51403784),p=s(p,g,m,f,C[c+7],14,1735328473),f=s(f,p,g,m,C[c+12],20,-1926607734),m=l(m,f,p,g,C[c+5],4,-378558),g=l(g,m,f,p,C[c+8],11,-2022574463),p=l(p,g,m,f,C[c+11],16,1839030562),f=l(f,p,g,m,C[c+14],23,-35309556),m=l(m,f,p,g,C[c+1],4,-1530992060),g=l(g,m,f,p,C[c+4],11,1272893353),p=l(p,g,m,f,C[c+7],16,-155497632),f=l(f,p,g,m,C[c+10],23,-1094730640),m=l(m,f,p,g,C[c+13],4,681279174),g=l(g,m,f,p,C[c+0],11,-358537222),p=l(p,g,m,f,C[c+3],16,-722521979),f=l(f,p,g,m,C[c+6],23,76029189),m=l(m,f,p,g,C[c+9],4,-640364487),g=l(g,m,f,p,C[c+12],11,-421815835),p=l(p,g,m,f,C[c+15],16,530742520),f=l(f,p,g,m,C[c+2],23,-995338651),m=h(m,f,p,g,C[c+0],6,-198630844),g=h(g,m,f,p,C[c+7],10,1126891415),p=h(p,g,m,f,C[c+14],15,-1416354905),f=h(f,p,g,m,C[c+5],21,-57434055),m=h(m,f,p,g,C[c+12],6,1700485571),g=h(g,m,f,p,C[c+3],10,-1894986606),p=h(p,g,m,f,C[c+10],15,-1051523),f=h(f,p,g,m,C[c+1],21,-2054922799),m=h(m,f,p,g,C[c+8],6,1873313359),g=h(g,m,f,p,C[c+15],10,-30611744),p=h(p,g,m,f,C[c+6],15,-1560198380),f=h(f,p,g,m,C[c+13],21,1309151649),m=h(m,f,p,g,C[c+4],6,-145523070),g=h(g,m,f,p,C[c+11],10,-1120210379),p=h(p,g,m,f,C[c+2],15,718787259),f=h(f,p,g,m,C[c+9],21,-343485551),m=i(m,q),f=i(f,i3),p=i(p,m3),g=i(g,p5);return t(m)+t(f)+t(p)+t(g)}function vi(n,e){if(!n.file_path.startsWith("theme/sections/"))return!1;if(n.file_path.endsWith(".liquid")){if(!e.get(n.file_path.replace(/\.liquid$/,".json")))return!0}else if(n.file_path.endsWith(".json"))return!0;return!1}async function V2(n,e){let t=[];for(let i of n.values())if(vi(i,n)){let r=await e(i);r&&t.push({...r,id:String(i.name||"").split(".").pop()??"",...r&&{presets:Ri(r)}})}return t}function Ri(n){return Array.isArray(n?.presets)?n.presets.map(e=>({label:e.label,settings:{...n.fields?.reduce((t,i)=>(i.id&&i.default!==void 0&&(t[i.id]=i.default),t),{}),...e.settings||void 0},blocks:e.blocks?.map(t=>{let i=n.blocks?.find(r=>r.type===t.type);return i?{...t,settings:{...i.fields.reduce((r,o)=>(o.id&&o.default!==void 0&&(r[o.id]=o.default),r),{}),...t.settings||void 0}}:t})})):[]}async function U2(n,e){let t=Array.from(n.values()),i=t.filter(a=>a.file_path.endsWith(".json")&&!n.has(a.file_path.replace(/\.json$/,".liquid"))),r=async a=>{let s=t.find(h=>{if(!h.file_path.endsWith(`/${a}.json`)&&!h.file_path.endsWith(`/${a}.liquid`))return!1;if(h.file_path.endsWith(".liquid")){if(!n.get(h.file_path.replace(/\.liquid$/,".json")))return!0}else if(h.file_path.endsWith(".json"))return!0;return!1});return s?{...await e(s),id:String(s.name||"").split(".").pop()}:void 0},o=[];for(let a of i){let s;try{s=ct.default.parse(a.file_data)}catch(l){console.warn(l)}if(s?.type){let l=await Je(s,r);o.push({...s,id:String(a.name||"").split(".").pop(),sectionConfigs:l})}}return o}async function Je(n,e){let t=Array.isArray(n?.order)&&n.order.length>0?n.order:Object.keys(n?.sections||{}),i=[];for(let r of t){let o=n.sections?.[r];if(!o)continue;let a=await e(o.type)||{id:o.type,label:o.type,tag:"div",class:"",fields:[],blocks:[]},s=n.id?`page__${n.id}__${r}`:a.id,h=(Array.isArray(o.block_order)?o.block_order:Object.keys(o.blocks||{})).map(c=>o.blocks?.[c]).filter(Boolean),u={section:{id:s,...o,blocks:h}};i.push({id:s,section:{id:s,...o},schema:a,settings:u,tag:a.tag||"div",class:a.class})}return i}function jl(n){return String(n)==="[object Array]"}function D(n){let e=typeof n;return n!==null&&(e==="object"||e==="function")}function ht(n){let e=new TextEncoder().encode(n),t="";for(let i=0;i<e.length;i+=3){let r=Array.from(e.slice(i,i+3));t+=btoa(String.fromCharCode(...r))}return t}function H2(n,e="id"){return(0,b4.reduce)(n,(t,i)=>(t[String(i[e])]=i,t),{})}function z5(n){let e=n.split(/-|_/),t=e.pop()?.toUpperCase(),i=e.join("-");return(t||P5[i]||"").toLowerCase()}function W5(n){return D(n)&&Object.hasOwn(n,"code")&&Object.hasOwn(n,"name")&&Object.hasOwn(n,"fallback")}function dt(n,e){if(!(typeof n!="object"||n===null))for(let[t,i]of Object.entries(n))e(t,n)!==!1&&typeof i=="object"&&i!==null&&dt(i,e)}function Zl(n){let e=new Set;return dt(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return!1;e.add(i)}return!0}),Array.from(e)}function Fl(n){if(!n)return n;let e=new WeakSet;return JSON.parse(JSON.stringify(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return JSON.parse(JSON.stringify(i));e.add(i)}return i}))}function Di(n){if(!(typeof n!="object"||n===null))for(let[e,t]of Object.entries(n))e==="_swell"&&"_swell"in n?n[e]=void 0:Di(t)}function st(n){if(n!==void 0)return n instanceof A?"SwellStorefrontCollection":n instanceof T?"SwellStorefrontRecord":n instanceof y?"ShopifyResource":n instanceof P?"StorefrontResource":"promise"}async function U(n,e=!0,t=!1){let i=n,r=e;try{if(v(n)&&(r=!1,i=await n),n instanceof P&&(r=!1,i=await U(n.resolve(),e,t)),Array.isArray(i)){let o=await Promise.all(i.map(a=>U(a,e,t)));if(i=o,!o.some(a=>a!==void 0))return e?[]:void 0}else if(typeof i=="object"&&i!==null&&(!("_swell"in i)||!i._swell)){let o={};for(let[a,s]of Object.entries(i)){if(!e&&(v(s)||s instanceof P||s instanceof y)){o[a]={_type:st(s),...t?{value:await U(s,r,t)}:void 0};continue}if(s instanceof P&&t){o[a]={_type:st(s),value:await U(s,r,t)};continue}o[a]=await U(s,r,t)}return!e&&Object.keys(o).length===0?void 0:o}}catch(o){return console.error(o),n}return i}function W(n){return lt.default.stringify({...n,sections:void 0,section_id:void 0},{encodeValuesOnly:!0,arrayFormat:"repeat"})}function $2(n,e){return n=Array.isArray(n)?n.join(" "):n,n.split("}").map(r=>{let[o,a]=r.split("{");return!o||!a?"":`${o.split(",").map(l=>`#${e} ${l.trim()}`).join(", ")} {${a}}`}).join(" ")}function Z3(n,e){return Object.entries(n).reduce((t,[i,r])=>(r?.value!==null&&r?.value!==void 0&&(t[at(i)]=r?.value),t),(0,b4.cloneDeep)(e))}var f4="ContentSections";function b3(n){return`SectionGroup_${n}`}var xi="THEME",ji=5*1e3,Zi=1e3*60*60*24*7,Fi=Object.freeze({ttl:ji}),ut="__NULL__",K=class{client;constructor(e){e=e||{},e.stores=e.stores||Ni(e.kvStore),this.client=(0,mt.createCache)({...Fi,...e})}async fetch(e,t){return this.client.wrap(e,t)}async fetchSWR(e,t,i=Zi){let r=await this.client.get(e);console.log("Cache.fetchSWR",{key:e,ttl:i,cacheValue:!!r});let o=Promise.resolve().then(()=>t()).then(async s=>{let l=s==null,h=await U(s);return console.log("Cache.fetchSWR result",{key:e,value:!!s,valueResolved:!!h}),await this.client.set(e,l?ut:h,i),s});return r!==null?r===ut?null:r:await o}async get(e){return this.client.get(e)}async set(e,t,i){return this.client.set(e,t,i)}async flush(e){await this.client.del(e)}async flushAll(){await this.client.clear()}};function Ni(n){let e=[];return n?e.push(new d5.Keyv({namespace:xi,store:new K3(n)})):e.push(new d5.Keyv),e}var V3=class extends K{constructor(e){super({...e})}};var pt=S("keyv");var U3=class extends K{constructor(e){super({stores:Ii(),...e})}};function Ii(){return[new pt.Keyv({serialize:void 0,deserialize:void 0})]}var Hi=90*24*60*60*1e3,x3=class extends K{constructor(e){super({ttl:Hi,...e})}};var Ct="https://api.schema.io",ft=new Map,gt=new Map,wt=class n{url;headers;swellHeaders;queryParams;workerEnv;config;shopifyCompatibilityConfig;backend;storefront;storefrontContext;instanceId="";isPreview=!1;isEditor=!1;sentResponse=!1;storefront_url;resourceLoadingIndicator;constructor(e){let{url:t,config:i,shopifyCompatibilityConfig:r,headers:o,swellHeaders:a,serverHeaders:s,queryParams:l,workerEnv:h,...u}=e;if(this.url=t instanceof URL?t:new URL(t||""),this.config=i,this.shopifyCompatibilityConfig=r,this.queryParams=n.formatQueryParams(l||this.url.searchParams),this.workerEnv=h,this.resourceLoadingIndicator=e.resourceLoadingIndicator,console.log(`KV cache: ${this.workerEnv?.THEME?"enabled":"disabled"}`),s){let{headers:c,swellHeaders:C}=n.formatHeaders(s);this.headers=c,this.swellHeaders=C,this.backend=new u5({storeId:C["store-id"],accessToken:C["access-token"],apiHost:C["api-host"]}),this.storefront=this.getStorefrontInstance({...e,headers:c,swellHeaders:C}),this.instanceId=["store-id","environment-id","deployment-mode","theme-id","theme-branch-id"].map(m=>C[m]||"0").join(":"),this.isEditor=u.isEditor??C["deployment-mode"]==="editor",this.isPreview=this.isEditor||C["deployment-mode"]==="preview"}else if(o&&a)Object.assign(this,u),this.headers=o,this.swellHeaders=a,this.storefront=this.getStorefrontInstance(e);else throw new Error("Swell client requires `serverHeaders` when initialized on the server-side, or `headers` and `swellHeaders` when initialized on the client-side.");this.storefrontContext=this.initStorefrontContext()}static formatHeaders(e){let t={},i={};e instanceof Headers?e.forEach((r,o)=>{t[o]=r}):e&&(t=e);for(let[r,o]of Object.entries(t))r.startsWith("swell-")&&o&&(i[r.replace("swell-","")]=o);return{headers:t,swellHeaders:i}}static formatQueryParams(e){let t={};return e instanceof URLSearchParams?t=kt.default.parse(e.toString()):e&&(t=e),t}async getCachedResource(e,t,i){let r=yt(e,[this.instanceId,t]);return this.getResourceCache().fetchSWR(r,i)}async getAppSettings(){return await this.get("/:storefronts/{id}/configs/settings/values",{id:this.swellHeaders["storefront-id"]})||{}}async getStorefrontSettings(e=!1){try{let{settings:t,menus:i,payments:r,subscriptions:o,session:a}=await this.storefront.request("get","/settings/all",void 0,void 0,{force:e}),s=this.storefront.settings;s.localizedState={},s.set({value:t}),s.set({model:"menus",value:i}),s.set({model:"payments",value:r}),s.set({model:"subscriptions",value:o}),s.set({model:"session",value:a})}catch(t){t instanceof Error&&(t.message=`Swell: unable to load settings (${t.message})`),console.error(t)}return this.storefront.settings.get()}getStorefrontMenus(){let e=this.storefront.settings.getState("/settings/menus","menuState");return!e||v(e)?[]:e}getStorefrontLocalization(){let e=this.storefront.locale.selected(),t=this.storefront.currency.selected();return!e||v(e)?{locale:"en-US",currency:"USD"}:{locale:e,currency:t}}async get(...e){return this.backend?.get(...e)}async put(...e){return this.backend?.put(...e)}async post(...e){return this.backend?.post(...e)}async delete(...e){return this.backend?.delete(...e)}isLoading(e=!0){this.resourceLoadingIndicator&&this.resourceLoadingIndicator(e)}getStorefrontInstance(e){let{swellHeaders:t,getCookie:i,setCookie:r,storefrontSettingStates:o}=e;if(!t)throw new Error("Swell headers are required");let a=t["store-id"],s=t["public-key"];if(!a||!s)throw new Error('Missing required headers: "swell-store-id" and "swell-public-key"');let l=St.default.create(a,s,{url:t["admin-url"],vaultUrl:t["vault-url"],getCookie:i,setCookie:r&&((h,u,c)=>r(h,u,c,this)),headers:{"Swell-Store-id":a,"Swell-Storefront-Id":t["storefront-id"]}});return o&&Object.assign(l.settings,o),l.request=this.getCacheableStorefrontRequestHandler(l),l}initStorefrontContext(){let e={};if(this.swellHeaders?.["storefront-context"])try{e=JSON.parse(decodeURIComponent(this.swellHeaders["storefront-context"]))}catch{console.error("Failed to parse swell-storefront-context. Ignoring...")}return e}isStorefrontRequestCacheable(e,t,i){if(i?.force)return!1;if(e==="get")switch(t.split("/")[1]){case"products":case"categories":case"content":case"settings":return!0;default:return!1}return!1}getCacheableStorefrontRequestHandler(e){let t=e.request;return(i,r,o,a,s)=>{if(this.isStorefrontRequestCacheable(i,r,s))return this.getRequestCache().fetchSWR(yt("request",[this.instanceId,i,r,o,a,s]),()=>(console.log("Storefront request",{method:i,url:r,id:o,data:a}),t(i,r,o,a,s)));switch(i){case"delete":case"post":case"put":{let l=r.split("/")[1];delete this.storefrontContext[l];break}default:}return t(i,r,o,a,s)}}getResourceCache(){let e=ft.get(this.instanceId);return e||(e=new U3({kvStore:this.workerEnv?.THEME}),ft.set(this.instanceId,e)),e}getRequestCache(){let e=gt.get(this.instanceId);return e||(e=new V3({kvStore:this.workerEnv?.THEME}),gt.set(this.instanceId,e)),e}};function yt(n,e){let t=n;return Array.isArray(e)&&e.length>0&&(t+=`_${JSON.stringify(e)}`),t.length>512&&(t=`${t.slice(0,480)}${a3(t)}`),t}var u5=class{apiHost=Ct;apiAuth="";constructor({storeId:e,accessToken:t,apiHost:i}){this.apiHost=i||Ct,this.apiAuth=ht(`${e}:${t}`)}async makeRequest(e,t,i){let r={method:e,headers:{Authorization:`Basic ${this.apiAuth}`,"User-Agent":"swell-functions/1.0","Content-Type":"application/json"}},o="";if(i)try{e==="GET"?o=`?${this.stringifyQuery(i)}`:(r.body=JSON.stringify(i),r.headers["Content-Length"]=String(r.body.length))}catch{throw new Error(`Error serializing data: ${i}`)}let a=String(t).startsWith("/")?t.substring(1):t,s=`${this.apiHost}/${a}${o}`,l=await fetch(s,r),h=await l.text(),u;try{u=JSON.parse(h)}catch{u=String(h||"").trim()}if(l.status>299)throw new A4(u,{status:l.status,method:e,endpointUrl:a});if(e!=="GET"&&u?.errors)throw new A4(u.errors,{status:400,method:e,endpointUrl:a});return u}stringifyQuery(e,t){let i=[];for(let[r,o]of Object.entries(e)){let a=t?`${t}[${r}]`:r,l=o!==null&&typeof o=="object"?this.stringifyQuery(o,a):`${encodeURIComponent(a)}=${o===null?"":encodeURIComponent(o)}`;i.push(l)}return i.join("&")}async get(e,t){return this.makeRequest("GET",e,t)}async put(e,t){return this.makeRequest("PUT",e,t)}async post(e,t){return this.makeRequest("POST",e,t)}async delete(e,t){return this.makeRequest("DELETE",e,t)}},A4=class extends Error{status=200;constructor(e,t={}){let i;typeof e=="string"?i=e:i=JSON.stringify(e,null,2),t.method&&t.endpointUrl&&(i=`${t.method} /${t.endpointUrl}
949
949
  ${i}`),super(i),this.name="SwellError",this.status=t.status||500}};function Lt(n,e){return new A(n,"products",e)}function lc(n,e,t){return new T(n,"products",e,t)}function cc(n,{search:e,filter:t,sort:i}){return new A(n,"products",{search:e,filter:t,sort:i})}function pc(n,e){return new A(n,"categories",e)}function Bi(n,e,t){return new T(n,"categories",e,t)}async function Cc(n,e,t){let i=Bi(n,e,t),r=await i.id;return i.products=Lt(n,{category:r}),i}function yc(n,e){return n.getCachedResource(`content-model-${e}`,[],()=>n.get("/:content/{name}",{name:e,public:!0,"storefront.enabled":!0}))}async function Gi(n,e,t){return new A(n,`content/${e}`,t)}async function bt(n,e,t,i){return new T(n,`content/${e}`,t,i)}async function Sc(n,e,t){return bt(n,"pages",e,t)}async function kc(n,e){return Gi(n,"blogs",e)}async function Lc(n,e,t){return bt(n,"blogs",e,t)}var Tt=j(S("json5"),1),z=S("lodash-es");var T4=!0;async function _c(n,e){let t=null;if(t=await n.getThemeTemplateConfigByType("templates",e),t){if(t.file_path.endsWith(".liquid"))return t.file_data;try{return Tt.default.parse(t.file_data)}catch{return t.file_data}}}function qi(n,e){return n.reduce((t,i)=>(i.enabled_on?_4(i.enabled_on,"groups",e)&&t.push(String(i.id)):i.disabled_on?_4(i.disabled_on,"groups",e)||t.push(String(i.id)):i.id===e&&t.push(String(i.id)),t),[])}function Oi(n,e){return e.map(t=>({prop:b3(t.id),type:"component-collection",label:t.label,required:!0,noInline:T4,accepts:qi(n,t.type)}))}function _4(n,e,t){return!!(n.templates==="*"||n[e]?.includes(t))}function Vi(n,e,t){return n.reduce((i,r)=>(r.enabled_on?_4(r.enabled_on,"templates",t)&&i.push(String(r.id)):r.disabled_on?_4(r.disabled_on,"templates",t)||i.push(String(r.id)):e.some(({type:o})=>o===r.id)||i.push(String(r.id)),i),[])}function Ui(n){return(n?.configs?.editor?.settings??[]).reduce((e,t)=>{for(let i of t.fields||[])e.push({prop:O3(i.id),label:i.label,optional:!0,group:t.label,...q3(i)});return e},[])}function $i(n){let e=[];for(let t of n){let i=Array.isArray(t.blocks)&&t.blocks.length>0;e.push({id:t.id,label:t.label,schema:[...(t.fields||[]).reduce((r,o)=>(o.id&&o.type&&r.push({prop:O3(o.id),label:o.label,optional:!0,...q3(o)}),r),[]),...i?[{prop:"Blocks",type:"component-collection",required:!0,noInline:T4,accepts:(t.blocks||[]).map(r=>`Block__${t.id}__${r.type}`),defaultValue:t.presets?.reduce((r,o,a)=>o.blocks?o.blocks.reduce((s,l)=>{let h=t.blocks?.find(({type:u})=>u===l.type);return h&&s.push({_id:`Block__${t.id}__${l.type}__preset_${a}`,_component:`Block__${t.id}__${l.type}`,...(0,z.reduce)(h.fields,(u,c)=>(c.id&&(u[c.id]=G(h.fields,c.id,c.default)),u),{})}),s},r):r,[]),placeholderAppearance:{height:50,label:"Add block",aspectRatio:1}}]:[],{prop:"custom_css",type:"swell_css",label:"Custom CSS",description:"Add custom CSS for this section",layout:"column",isLabelHidden:!0,params:{rows:5,placeholder:"Enter custom CSS..."}},{prop:"$locale",type:"swell_locale",isLabelHidden:!0}],styles:()=>({styled:{Root:{}}})}),i&&e.push(...(t.blocks||[]).map(r=>({id:`Block__${t.id}__${r.type}`,label:r.label,schema:(r.fields||[]).reduce((o,a)=>(a.id&&a.type&&o.push({prop:O3(a.id),label:a.label,optional:!0,...q3(a)}),o),[{prop:"$locale",type:"swell_locale",isLabelHidden:!0}]),styles:()=>({styled:{Root:{}}})})))}return e}function Ki(n){return n?.configs?.editor?.settings?.reduce((e,t)=>{for(let i of t.fields||[])i?.id&&(e[i.id]=G(t.fields,i.id,n?.configs?.theme?.[i.id]));return e},{})}function zi(n){return n.reduce((e,t)=>(e[b3(t.id)]=t.sectionConfigs.map(({section:i,settings:r,schema:o})=>({_id:`SectionGroup__${i.type}_${At()}`,_component:i.type,...(0,z.reduce)(r?.section.settings,(a,s,l)=>(a[l]=G(o?.fields,l,s),a),{}),custom_css:r?.section.custom_css||"",...r?.section.blocks?{Blocks:r.section.blocks.map(a=>({_id:`Block__${i.type}__${a.type}_${At()}`,_component:`Block__${i.type}__${a.type}`,...(0,z.reduce)(a.settings,(s,l,h)=>(s[h]=G(o?.blocks?.find(({type:u})=>u===a.type)?.fields,h,l),s),{})}))}:void 0})),e),{})}function Wi(n){return(n||"").replaceAll("/","_")}function Ji(n){let e=[];for(let t of n)t.presets&&e.push(...t.presets.map((i,r)=>({id:`${t.id}__preset_${r}`,entry:{_id:`${t.id}__preset_${r}`,_component:t.id,custom_css:i.settings?.custom_css||"",...(0,z.reduce)(t.fields,(o,a)=>(a.id&&(o[a.id]=G(t.fields,a.id,i.settings?.[a.id])),o),{}),Blocks:i.blocks?.reduce((o,a)=>{let s=t.blocks?.find(({type:l})=>l===a.type);return s&&o.push({_id:`Block__${t.id}__${a.type}__preset_${r}`,_component:`Block__${t.id}__${a.type}`,...(0,z.reduce)(s.fields,(l,h)=>(h.id&&(l[h.id]=G(s.fields,h.id,a.settings?.[h.id])),l),{})}),o},[])}}))),t.blocks&&e.push(...t.blocks.map(i=>({id:`Block__${t.id}__${i.type}`,entry:{_id:`Block__${t.id}__${i.type}`,_component:`Block__${t.id}__${i.type}`,...(0,z.reduce)(i.fields,(r,o)=>(o.id&&(r[o.id]=G(i.fields,o.id,o.default)),r),{})}})));return e.filter(t=>Object.keys(t.entry).some(i=>i!=="_id"&&i!=="_component"))}function Mc(n,e,t,i,r){let o={id:"swell_global",label:"Theme settings",schema:[{prop:"swell_page",type:"component",required:!0,accepts:["swell_page"],isNonChangable:!0,noInline:T4},{prop:"$locale",type:"swell_locale",isLabelHidden:!0},...Ui(n)],groups:(n?.configs?.editor?.settings??[]).map(c=>({key:c.label,label:c.label,collapsable:!0,collapsed:!0})),styles:()=>({styled:{Root:{}}})},a={id:"swell_page",label:"Page settings",schema:[{prop:f4,type:"component-collection",required:!0,noInline:T4,accepts:Vi(e,i,r),placeholderAppearance:{height:250,label:"Add section",aspectRatio:1}},...Oi(e,i)],allowSave:!0,styles:()=>({styled:{Root:{}}})},s=[o,a,...$i(e)],l=o.schema.find(c=>c.prop==="color_schemes");if(l){let c=l.params,{fields:C=[]}=c;s.push({id:"swell_color_scheme_group",label:"Swell color scheme",schema:C.map(m=>({prop:O3(m.id),label:m.label,optional:!0,...q3({...m,type:m.id==="background_gradient"?"text":m.type})})),styles(){return{styled:{Root:{}}}}})}let h=new Set;for(let c of s)h.add(c.id);let u=[{id:"swell_global",entry:{_id:"swell_global",_component:"swell_global",...Ki(n),$locale:n?.configs?.theme?.$locale,swell_page:[{_id:"swell_page",_component:"swell_page",ContentSections:t.filter(c=>h.has(c.section.type)).map(({section:c,settings:C,schema:m})=>({_id:Wi(c.id),_component:c.type,custom_css:C?.section?.custom_css||"",disabled:C?.section?.disabled||!1,$locale:C?.section?.settings?.$locale,...(0,z.reduce)(m?.fields,(f,p)=>(p?.id&&(f[p.id]=G(m?.fields,p.id,C?.section?.settings?.[p.id])),f),{}),...c?.blocks?{Blocks:Object.entries(c.blocks).map(([f,p])=>({_id:`Block__${f}__${p.type}_${Math.random()}`,_component:`Block__${c.type}__${p.type}`,disabled:p.disabled||!1,...(0,z.reduce)(p.settings,(g,q,i3)=>(g[i3]=G(m?.blocks?.find(({type:m3})=>m3===p.type)?.fields,i3,q),g),{})}))}:void 0})),...zi(i)}]}},{id:"swell_page",entry:{_id:"swell_page",_component:"swell_page"}},...Ji(e)];return{easyblocksConfig:{components:s,templates:u,backend:Yi(),hideCloseButton:!0,allowSave:!0,readOnly:!1,locales:[{code:"en-US",isDefault:!0}],types:{swell_css:{type:"inline",widget:{id:"SwellCSS"}},swell_locale:{type:"inline",widget:{id:"SwellLocale"}},swell_boolean:{type:"inline",widget:{id:"SwellBoolean"}},swell_color:{type:"inline",widget:{id:"SwellColor"}},swell_color_scheme:{type:"inline",widget:{id:"SwellColorScheme"}},swell_color_scheme_group:{type:"inline",widget:{id:"SwellColorSchemeGroup"}},swell_font:{type:"inline",widget:{id:"SwellFont"}},swell_header:{type:"inline",widget:{id:"SwellHeader"}},swell_icon:{type:"inline",widget:{id:"SwellIcon"}},swell_lookup:{type:"inline",widget:{id:"SwellLookup"}},swell_menu:{type:"inline",widget:{id:"SwellMenu"}},swell_url:{type:"inline",widget:{id:"SwellUrl"}},swell_number:{type:"inline",widget:{id:"SwellNumber"}},swell_select:{type:"inline",widget:{id:"SwellSelect"}},swell_radio:{type:"inline",widget:{id:"SwellRadio"}},swell_short_text:{type:"inline",widget:{id:"SwellText"}},swell_long_text:{type:"inline",widget:{id:"SwellTextarea"}},swell_paragraph:{type:"inline",widget:{id:"SwellParagraph"}},swell_editor:{type:"inline",widget:{id:"SwellEditor"}},swell_file:{type:"inline",widget:{id:"SwellFile"}},swell_image:{type:"inline",widget:{id:"SwellImage"}}},tokens:{colors:[],fonts:[]}}}}function Pc(n,e,t){let i=n.reduce((a,s)=>(a[`${s.id}`]=t("pageSection",s),a),{}),r=e.reduce((a,s)=>(a[b3(s.id)]=t("layoutSectionGroup",s),a),{}),o=n.reduce((a,s)=>{if(s.blocks)for(let l of s.blocks){let h=`Block__${s.id}__${l.type}`;a[h]=t("block",{section:s,block:l})}return a},{});return{...i,...r,...o,swell_page:t("root"),swell_global:t("global")}}function Yi(){return{documents:{get({id:e}){console.log("Easyblocks backend documents.get()",e);let t={id:e,version:1,entry:{_id:"page",_component:"swell_page"}};return Promise.resolve(t)},create(e){return console.log("Easyblocks backend documents.create()",e),Promise.resolve({})},update(e){return console.log("Easyblocks backend documents.update()",e),Promise.resolve({})}},templates:{get(e){return console.log("Easyblocks backend templates.get()",e),Promise.resolve({})},getAll(){return console.log("Easyblocks backend get templates.getAll()"),Promise.resolve([])},create(e){return console.log("Easyblocks backend get templates.create()",e),Promise.resolve({})},update(e){return console.log("Easyblocks backend get templates.update()",e),Promise.resolve({})},delete(e){return console.log("Easyblocks backend get templates.delete()",e),Promise.resolve()}}}}function At(){return(Math.random()+1).toString(36).substring(7)}function M4(n,e){let i=n?.storefront?.options?.getCookie;return typeof i=="function"&&i(e)||""}var _t=class extends T{constructor(e,t,i={}){super(e,"",t,i,async function(){let r=await Pt(e,this._resourceName,t,i);return $3(this._resourceName,r,e,"",t,i)})}},Mt=class extends o3{constructor(e,t,i={}){super(e,"",async function(){let r=await Pt(e,this._resourceName,t,i);return $3(this._resourceName,r,e,"",t,i)})}};async function Pt(n,e,t,i){let r=new URLSearchParams({...t&&{slug:t},...i&&{query:JSON.stringify(i)}}),o=r.size>0?`?${r}`:"",a=M4(n,"swell-session"),s=M4(n,"swell-data")||{};return(await fetch(`${n.storefront_url}/resources/${e}.json/${o}`,{headers:{"X-Session":a,"Swell-Data":JSON.stringify(s)}})).json()}function $3(n,e,t,i="",r,o){let a={};for(let[s,l]of Object.entries(e)){let h=i+`${i===""?"":"/"}${s}`,u;switch(l?._type){case"SwellStorefrontCollection":u=e6;break;case"SwellStorefrontRecord":u=Xi;break;case"createStorefrontResource":u=Qi;break;default:break}a[s]=u?u(n,t,h,r,o):l}return a}function Qi(n,e,t,i,r){return new P(async function(){let o=await m5(e,n,t,i,r);return $3(n,o,e,t,i,r)})}function Xi(n,e,t,i,r){let o=Et(i,r);return new T(e,n,t,o,async function(){let a=await m5(e,n,t,i,r);return $3(n,a,e,t,i,r)})}function e6(n,e,t,i,r){let o=Et(i,r);return new A(e,n,o,async function(){let a=await m5(e,n,t,i,r);return $3(n,a,e,t,i,r)})}async function m5(n,e,t,i,r){let o=new URLSearchParams({path:t,...i&&{slug:i},...r&&{query:JSON.stringify(r)}}),a=o.size>0?`?${o}`:"",s=M4(n,"swell-session"),l=M4(n,"swell-data")||{};return(await fetch(`${n.storefront_url}/resources/${e}.json${a}`,{headers:{"X-Session":s,"Swell-Data":JSON.stringify(l)}})).json()}function Et(n,e){return{...n&&{slug:n},...e}}})();
950
950
  //# sourceMappingURL=index.js.map