the-foxy-library 1.0.19 → 1.0.21
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/cjs/{app-globals-DRVRI1ik.js → app-globals-CoHtVZOa.js} +4 -3
- package/dist/cjs/app-globals-CoHtVZOa.js.map +1 -0
- package/dist/cjs/{factory-CC4cUyGl.js → factory-NSOuLE3E.js} +7 -4
- package/dist/cjs/factory-NSOuLE3E.js.map +1 -0
- package/dist/cjs/{index-77WT2UXf.js → index-LRS48Qt3.js} +3 -2
- package/dist/cjs/index-LRS48Qt3.js.map +1 -0
- package/dist/cjs/intravenous.cjs.js +2 -2
- package/dist/cjs/ion-icon_12.cjs.entry.js +2 -2
- package/dist/cjs/iv-banner.cjs.entry.js +1 -1
- package/dist/cjs/iv-card_3.cjs.entry.js +2 -2
- package/dist/cjs/iv-carousel.cjs.entry.js +1 -1
- package/dist/cjs/iv-compare-product.cjs.entry.js +1 -1
- package/dist/cjs/iv-dynamic-products-carousel.cjs.entry.js +2 -2
- package/dist/cjs/iv-dynamic-products.cjs.entry.js +2 -2
- package/dist/cjs/iv-filters.cjs.entry.js +1 -1
- package/dist/cjs/iv-predictive-search.cjs.entry.js +1 -1
- package/dist/cjs/iv-product-pin.cjs.entry.js +1 -1
- package/dist/cjs/iv-product-upsell.cjs.entry.js +1 -1
- package/dist/cjs/iv-recently-viewed.cjs.entry.js +2 -2
- package/dist/cjs/iv-shop-the-look.cjs.entry.js +1 -1
- package/dist/cjs/iv-suggest.cjs.entry.js +1 -1
- package/dist/cjs/iv-tabs.cjs.entry.js +1 -1
- package/dist/cjs/iv-toast-container.cjs.entry.js +1 -1
- package/dist/cjs/iv-toast.cjs.entry.js +1 -1
- package/dist/cjs/iv-wishlist.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/sw-in-grid-content.cjs.entry.js +1 -1
- package/dist/cjs/sw-size-guide.cjs.entry.js +1 -1
- package/dist/collection/global/app.js +1 -0
- package/dist/collection/global/app.js.map +1 -1
- package/dist/collection/utils/config/factory.js +1 -0
- package/dist/collection/utils/config/factory.js.map +1 -1
- package/dist/collection/utils/storefront_api/factory.js +4 -1
- package/dist/collection/utils/storefront_api/factory.js.map +1 -1
- package/dist/components/index.js +3 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/ion-icon.js +1 -1
- package/dist/components/iv-accordion.js +2 -2
- package/dist/components/iv-banner.js +1 -1
- package/dist/components/iv-button.js +1 -1
- package/dist/components/iv-card.js +1 -1
- package/dist/components/iv-carousel.js +1 -1
- package/dist/components/iv-compare-product.js +1 -1
- package/dist/components/iv-dynamic-products-carousel.js +6 -6
- package/dist/components/iv-dynamic-products.js +7 -7
- package/dist/components/iv-event-button.js +1 -1
- package/dist/components/iv-filters.js +1 -1
- package/dist/components/iv-footer.js +1 -1
- package/dist/components/iv-layout.js +1 -1
- package/dist/components/iv-link-list.js +2 -2
- package/dist/components/iv-link.js +1 -1
- package/dist/components/iv-modal.js +3 -3
- package/dist/components/iv-newsletter.js +2 -2
- package/dist/components/iv-predictive-search.js +5 -5
- package/dist/components/iv-product-pin.js +1 -1
- package/dist/components/iv-product-upsell.js +1 -1
- package/dist/components/iv-recently-viewed.js +6 -6
- package/dist/components/iv-shop-the-look.js +2 -2
- package/dist/components/iv-sidebar.js +3 -3
- package/dist/components/iv-spinner.js +1 -1
- package/dist/components/iv-suggest.js +6 -6
- package/dist/components/iv-tabs.js +1 -1
- package/dist/components/iv-toast-container.js +2 -2
- package/dist/components/iv-toast.js +1 -1
- package/dist/components/iv-two-col-media.js +1 -1
- package/dist/components/iv-wishlist-view.js +1 -1
- package/dist/components/iv-wishlist.js +2 -2
- package/dist/components/{p-CvO-bCed.js → p-B-4VoGV_.js} +3 -3
- package/dist/components/{p-CvO-bCed.js.map → p-B-4VoGV_.js.map} +1 -1
- package/dist/components/{p-Blz-LJSV.js → p-B4yIesaL.js} +3 -3
- package/dist/components/{p-Blz-LJSV.js.map → p-B4yIesaL.js.map} +1 -1
- package/dist/components/{p-3lSW4-ii.js → p-BMsgAmDZ.js} +3 -3
- package/dist/components/{p-3lSW4-ii.js.map → p-BMsgAmDZ.js.map} +1 -1
- package/dist/components/{p-kuABA_Tv.js → p-BVAxyx8A.js} +3 -3
- package/dist/components/{p-kuABA_Tv.js.map → p-BVAxyx8A.js.map} +1 -1
- package/dist/components/{p-Cmnclx4w.js → p-BVL7DqEj.js} +7 -4
- package/dist/components/p-BVL7DqEj.js.map +1 -0
- package/dist/components/{p-CmetOj56.js → p-BpdXCMak.js} +3 -3
- package/dist/components/{p-CmetOj56.js.map → p-BpdXCMak.js.map} +1 -1
- package/dist/components/{p-DV16vkcI.js → p-CUI6hRMI.js} +3 -3
- package/dist/components/{p-DV16vkcI.js.map → p-CUI6hRMI.js.map} +1 -1
- package/dist/components/{p-HxD8ZMcb.js → p-D8GfK9z_.js} +3 -3
- package/dist/components/{p-HxD8ZMcb.js.map → p-D8GfK9z_.js.map} +1 -1
- package/dist/components/{p-3YQcGgfQ.js → p-DE0H3IbO.js} +5 -5
- package/dist/components/{p-3YQcGgfQ.js.map → p-DE0H3IbO.js.map} +1 -1
- package/dist/components/{p-D2SCT3Sb.js → p-DVvBorxR.js} +3 -3
- package/dist/components/{p-D2SCT3Sb.js.map → p-DVvBorxR.js.map} +1 -1
- package/dist/components/{p-haFsiJTQ.js → p-IJUHvLzw.js} +6 -6
- package/dist/components/{p-haFsiJTQ.js.map → p-IJUHvLzw.js.map} +1 -1
- package/dist/components/{p-DH3wWIxr.js → p-XXtzVg2d.js} +3 -2
- package/dist/components/p-XXtzVg2d.js.map +1 -0
- package/dist/components/{p-Dfh8X_q_.js → p-dpzz67iI.js} +3 -3
- package/dist/components/{p-Dfh8X_q_.js.map → p-dpzz67iI.js.map} +1 -1
- package/dist/components/sw-in-grid-content.js +1 -1
- package/dist/components/sw-size-guide.js +1 -1
- package/dist/esm/{app-globals-BRJyMwss.js → app-globals-D2HG9z1r.js} +4 -3
- package/dist/esm/app-globals-D2HG9z1r.js.map +1 -0
- package/dist/esm/{factory-nzeOUOp1.js → factory-Bf2IW1Vz.js} +7 -4
- package/dist/esm/factory-Bf2IW1Vz.js.map +1 -0
- package/dist/esm/{index-BW0IzFf8.js → index-Cb3Nnjkn.js} +3 -2
- package/dist/esm/index-Cb3Nnjkn.js.map +1 -0
- package/dist/esm/intravenous.js +3 -3
- package/dist/esm/ion-icon_12.entry.js +2 -2
- package/dist/esm/iv-banner.entry.js +1 -1
- package/dist/esm/iv-card_3.entry.js +2 -2
- package/dist/esm/iv-carousel.entry.js +1 -1
- package/dist/esm/iv-compare-product.entry.js +1 -1
- package/dist/esm/iv-dynamic-products-carousel.entry.js +2 -2
- package/dist/esm/iv-dynamic-products.entry.js +2 -2
- package/dist/esm/iv-filters.entry.js +1 -1
- package/dist/esm/iv-predictive-search.entry.js +1 -1
- package/dist/esm/iv-product-pin.entry.js +1 -1
- package/dist/esm/iv-product-upsell.entry.js +1 -1
- package/dist/esm/iv-recently-viewed.entry.js +2 -2
- package/dist/esm/iv-shop-the-look.entry.js +1 -1
- package/dist/esm/iv-suggest.entry.js +1 -1
- package/dist/esm/iv-tabs.entry.js +1 -1
- package/dist/esm/iv-toast-container.entry.js +1 -1
- package/dist/esm/iv-toast.entry.js +1 -1
- package/dist/esm/iv-wishlist.entry.js +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/sw-in-grid-content.entry.js +1 -1
- package/dist/esm/sw-size-guide.entry.js +1 -1
- package/dist/intravenous/intravenous.esm.js +1 -1
- package/dist/intravenous/{p-c1d875cf.entry.js → p-0f07e69c.entry.js} +2 -2
- package/dist/intravenous/{p-a35de10b.entry.js → p-1394ddc3.entry.js} +2 -2
- package/dist/intravenous/{p-ec7b539d.entry.js → p-19185e49.entry.js} +2 -2
- package/dist/intravenous/p-1d169085.entry.js +2 -0
- package/dist/intravenous/{p-50008fa6.entry.js → p-28d83a02.entry.js} +2 -2
- package/dist/intravenous/{p-45c70b13.entry.js → p-3a43aff3.entry.js} +2 -2
- package/dist/intravenous/{p-a617d9d0.entry.js → p-3ad476a3.entry.js} +2 -2
- package/dist/intravenous/{p-2c191fe7.entry.js → p-40d5f2dd.entry.js} +2 -2
- package/dist/intravenous/{p-78e8d319.entry.js → p-51f91c3c.entry.js} +2 -2
- package/dist/intravenous/p-6yYowr-X.js +2 -0
- package/dist/intravenous/p-6yYowr-X.js.map +1 -0
- package/dist/intravenous/{p-21d5f405.entry.js → p-7a73eb94.entry.js} +2 -2
- package/dist/intravenous/{p-55f43ae2.entry.js → p-7e46d5b9.entry.js} +2 -2
- package/dist/intravenous/{p-dc8d0b9e.entry.js → p-8d726fec.entry.js} +2 -2
- package/dist/intravenous/{p-BW0IzFf8.js → p-Cb3Nnjkn.js} +2 -2
- package/dist/intravenous/p-Cb3Nnjkn.js.map +1 -0
- package/dist/intravenous/p-DujflZ2b.js +2 -0
- package/dist/intravenous/p-DujflZ2b.js.map +1 -0
- package/dist/intravenous/{p-145798b2.entry.js → p-a28bd4eb.entry.js} +2 -2
- package/dist/intravenous/{p-256a765e.entry.js → p-a66c7492.entry.js} +2 -2
- package/dist/intravenous/{p-a7b3baf0.entry.js → p-a7d8309c.entry.js} +2 -2
- package/dist/intravenous/{p-aebd8d4b.entry.js → p-affde66d.entry.js} +2 -2
- package/dist/intravenous/{p-19cf30b1.entry.js → p-b2e8bb5f.entry.js} +2 -2
- package/dist/intravenous/{p-331983d1.entry.js → p-bfe01a14.entry.js} +2 -2
- package/dist/intravenous/{p-13ce40ae.entry.js → p-ca10d662.entry.js} +2 -2
- package/dist/intravenous/{p-cbf8e7b8.entry.js → p-ff2b5ad8.entry.js} +2 -2
- package/package.json +1 -1
- package/dist/cjs/app-globals-DRVRI1ik.js.map +0 -1
- package/dist/cjs/factory-CC4cUyGl.js.map +0 -1
- package/dist/cjs/index-77WT2UXf.js.map +0 -1
- package/dist/components/p-Cmnclx4w.js.map +0 -1
- package/dist/components/p-DH3wWIxr.js.map +0 -1
- package/dist/esm/app-globals-BRJyMwss.js.map +0 -1
- package/dist/esm/factory-nzeOUOp1.js.map +0 -1
- package/dist/esm/index-BW0IzFf8.js.map +0 -1
- package/dist/intravenous/p-BAss6u3X.js +0 -2
- package/dist/intravenous/p-BAss6u3X.js.map +0 -1
- package/dist/intravenous/p-BW0IzFf8.js.map +0 -1
- package/dist/intravenous/p-DHfJNZjh.js +0 -2
- package/dist/intravenous/p-DHfJNZjh.js.map +0 -1
- package/dist/intravenous/p-e7109ec4.entry.js +0 -2
- /package/dist/intravenous/{p-c1d875cf.entry.js.map → p-0f07e69c.entry.js.map} +0 -0
- /package/dist/intravenous/{p-a35de10b.entry.js.map → p-1394ddc3.entry.js.map} +0 -0
- /package/dist/intravenous/{p-ec7b539d.entry.js.map → p-19185e49.entry.js.map} +0 -0
- /package/dist/intravenous/{p-e7109ec4.entry.js.map → p-1d169085.entry.js.map} +0 -0
- /package/dist/intravenous/{p-50008fa6.entry.js.map → p-28d83a02.entry.js.map} +0 -0
- /package/dist/intravenous/{p-45c70b13.entry.js.map → p-3a43aff3.entry.js.map} +0 -0
- /package/dist/intravenous/{p-a617d9d0.entry.js.map → p-3ad476a3.entry.js.map} +0 -0
- /package/dist/intravenous/{p-2c191fe7.entry.js.map → p-40d5f2dd.entry.js.map} +0 -0
- /package/dist/intravenous/{p-78e8d319.entry.js.map → p-51f91c3c.entry.js.map} +0 -0
- /package/dist/intravenous/{p-21d5f405.entry.js.map → p-7a73eb94.entry.js.map} +0 -0
- /package/dist/intravenous/{p-55f43ae2.entry.js.map → p-7e46d5b9.entry.js.map} +0 -0
- /package/dist/intravenous/{p-dc8d0b9e.entry.js.map → p-8d726fec.entry.js.map} +0 -0
- /package/dist/intravenous/{p-145798b2.entry.js.map → p-a28bd4eb.entry.js.map} +0 -0
- /package/dist/intravenous/{p-256a765e.entry.js.map → p-a66c7492.entry.js.map} +0 -0
- /package/dist/intravenous/{p-a7b3baf0.entry.js.map → p-a7d8309c.entry.js.map} +0 -0
- /package/dist/intravenous/{p-aebd8d4b.entry.js.map → p-affde66d.entry.js.map} +0 -0
- /package/dist/intravenous/{p-19cf30b1.entry.js.map → p-b2e8bb5f.entry.js.map} +0 -0
- /package/dist/intravenous/{p-331983d1.entry.js.map → p-bfe01a14.entry.js.map} +0 -0
- /package/dist/intravenous/{p-13ce40ae.entry.js.map → p-ca10d662.entry.js.map} +0 -0
- /package/dist/intravenous/{p-cbf8e7b8.entry.js.map → p-ff2b5ad8.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-globals-BRJyMwss.js","sources":["src/global/app.ts","@stencil/core/internal/app-globals"],"sourcesContent":["import { ignition, fetchShopifyCurrencyCode } from '../utils/config/factory';\r\nimport { state } from '../utils/store/store';\r\n\r\n// Idempotent global init (prevents double execution if script loaded twice)\r\n// Also resolves Stencil v update expecting a default export from globalScript.\r\n// Flags kept minimal to avoid polluting window.\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nconst w: any = (typeof window !== 'undefined') ? window : {};\r\n\r\nexport default async function intravenousGlobalInit() {\r\n try {\r\n if(!w.__IV_API_SETUP_DONE) {\r\n await ignition();\r\n w.__IV_API_SETUP_DONE = true;\r\n }\r\n if(!w.__IV_CURRENCY_FETCH_DONE) {\r\n try {\r\n const code = await fetchShopifyCurrencyCode();\r\n if(code) state.setCurrencyCode(code);\r\n } catch (err) {\r\n console.debug('[IV] currency fetch skipped', err);\r\n }\r\n w.__IV_CURRENCY_FETCH_DONE = true;\r\n }\r\n } catch(err) {\r\n console.error('[IV] Global init failed', err);\r\n }\r\n}","import appGlobalScript from 'C:/Users/BeauBuxton/OneDrive - Herd Agency Limited/Documents/junk/The-Foxy-Library/src/global/app.ts';\nexport const globalScripts = appGlobalScript;\nexport const globalStyles = \"\";\n"],"names":["appGlobalScript"],"mappings":";;AAGA;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC,GAAQ,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,GAAG,EAAE;AAE7C,eAAe,qBAAqB,GAAA;AACjD,IAAA,IAAI;AACF,QAAA,IAAG,CAAC,CAAC,CAAC,mBAAmB,EAAE;YACzB,MAAM,QAAQ,EAAE;AAChB,YAAA,CAAC,CAAC,mBAAmB,GAAG,IAAI;;AAE9B,QAAA,IAAG,CAAC,CAAC,CAAC,wBAAwB,EAAE;AAC9B,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,GAAG,MAAM,wBAAwB,EAAE;AAC7C,gBAAA,IAAG,IAAI;AAAE,oBAAA,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC;;YACpC,OAAO,GAAG,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;;AAEnD,YAAA,CAAC,CAAC,wBAAwB,GAAG,IAAI;;;IAEnC,OAAM,GAAG,EAAE;AACX,QAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC;;AAEjD;;AC3BY,MAAC,aAAa,GAAGA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"factory-nzeOUOp1.js","sources":["src/utils/storefront_api/factory.ts"],"sourcesContent":["import { state, showToast } from \"../store/store\";\r\n\r\nasync function shopifyFetch(query: string, variables: Record<string, any> = {}): Promise<any> {\r\n try {\r\n if(!state.shopDomainApi || !state.storefrontToken) throw new Error('Missing Shopify configuration (shopDomain/storefrontToken)');\r\n const endpoint = `https://${state.shopDomainApi}/api/2025-07/graphql.json`;\r\n const token = state.storefrontToken;\r\n const res = await fetch(endpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-Shopify-Storefront-Access-Token': token\r\n },\r\n body: JSON.stringify({ query, variables })\r\n });\r\n const json = await res.json();\r\n if(json.errors) throw new Error(json.errors.map((e: any) => e.message).join(', '));\r\n return json.data;\r\n } catch(error) {\r\n console.error('Shopify Fetch Error:', error);\r\n throw error; \r\n };\r\n};\r\n\r\nexport async function getIdFromHandle(handle: string): Promise<string | null> {\r\n const query = `\r\n query ($handle: String!) {\r\n product(handle: $handle) {\r\n id\r\n }\r\n }`;\r\n try {\r\n const data = await shopifyFetch(query, { handle });\r\n return data?.product?.id || null;\r\n } catch (error) {\r\n console.error('getIdFromHandle error:', error);\r\n return null;\r\n };\r\n};\r\n\r\n// Field + normalization helpers\r\nconst BASE_PRODUCT_FIELDS = ['id','handle','title'];\r\nconst DEFAULT_VARIANT_FIELDS = ['id','title','price { amount currencyCode }'];\r\n\r\nfunction mergeFields(requested: string[] | string, defaults: string[]): string[] {\r\n const req = (Array.isArray(requested) ? requested : requested.split(','))\r\n .map(f => f.trim())\r\n .filter(Boolean);\r\n const seen = new Set<string>();\r\n const ordered: string[] = [];\r\n for(const f of req) { \r\n if(!seen.has(f)) { \r\n seen.add(f); ordered.push(f); \r\n }; \r\n };\r\n for(const d of defaults) { \r\n if(!seen.has(d)) { \r\n seen.add(d); \r\n ordered.push(d); \r\n }; \r\n };\r\n return ordered;\r\n};\r\n\r\nfunction expandProductFields(fields: string[]): string {\r\n return fields\r\n .filter(f => f !== 'price')\r\n .map(f => {\r\n if(f === 'images') return 'images(first: 10) { nodes { url altText } }';\r\n return f;\r\n })\r\n .join('\\n');\r\n};\r\n\r\nfunction variantSelection(fields: string[] = DEFAULT_VARIANT_FIELDS): string {\r\n return fields.join('\\n');\r\n};\r\n\r\ninterface NormalizedProduct {\r\n id: string;\r\n handle?: string;\r\n title?: string;\r\n variantId?: string;\r\n price?: string | null;\r\n imageUrl?: string | null;\r\n imageAlt?: string | null;\r\n // index signature for dynamic requested fields\r\n [key: string]: any;\r\n};\r\n\r\nfunction normalizeProduct(product: any, selectedVariant?: any): NormalizedProduct {\r\n const variant = selectedVariant || product.variants?.edges?.[0]?.node || {};\r\n let imageUrl = null;\r\n let imageAlt = null;\r\n if(product.images?.nodes && product.images.nodes.length > 0) {\r\n imageUrl = product.images.nodes[0].url || null;\r\n imageAlt = product.images.nodes[0].altText || null;\r\n };\r\n const { id: variantId, price } = variant;\r\n return {\r\n id: product.id,\r\n ...Object.fromEntries(Object.entries(product).filter(([key]) => key !== 'variants')),\r\n variantId,\r\n price: price?.amount || null,\r\n imageUrl,\r\n imageAlt,\r\n };\r\n};\r\n\r\n// Query builders\r\nfunction buildProductsQuery(fieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($limit: Int!, $sortKey: ProductSortKeys!, $reverse: Boolean) {\r\n products(first: $limit, sortKey: $sortKey, reverse: $reverse) {\r\n edges {\r\n node {\r\n ${fieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }\r\n }\r\n }`;\r\n};\r\n\r\nfunction buildCollectionProductsQuery(fieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($handle: String!, $limit: Int!, $sortKey: ProductCollectionSortKeys!, $reverse: Boolean) {\r\n collection(handle: $handle) {\r\n products(first: $limit, sortKey: $sortKey, reverse: $reverse) {\r\n edges {\r\n node {\r\n ${fieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }\r\n }\r\n }\r\n }`;\r\n};\r\n\r\nfunction buildSingleProductQuery(fieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($id: ID!) {\r\n product(id: $id) {\r\n ${fieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }`;\r\n};\r\n\r\nfunction buildVariantProductQuery(productFieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($id: ID!) {\r\n productVariant(id: $id) {\r\n ${variantFieldsString}\r\n product {\r\n ${productFieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }\r\n }`;\r\n};\r\n\r\n// Public API\r\nexport async function fetchProducts(limit: number, collectionHandle: string, sortKey: string, fields: string[] | string, reversed: boolean = false) {\r\n try {\r\n const merged = mergeFields(fields, BASE_PRODUCT_FIELDS);\r\n const fieldsString = expandProductFields(merged);\r\n const variantFieldsString = variantSelection();\r\n const isAll = !collectionHandle || collectionHandle === 'all';\r\n const query = isAll ? buildProductsQuery(fieldsString, variantFieldsString) : buildCollectionProductsQuery(fieldsString, variantFieldsString);\r\n const reverse = !!reversed;\r\n const variables: Record<string, any> = isAll ? { limit, sortKey, reverse } : { handle: collectionHandle, limit, sortKey, reverse };\r\n const data = await shopifyFetch(query, variables);\r\n const productEdges = data.products?.edges || data.collection?.products?.edges || [];\r\n return productEdges.map((edge: any) => normalizeProduct(edge.node));\r\n } catch(error) { \r\n console.error('Fetch Products Error:', error); throw error;\r\n };\r\n};\r\n\r\nexport async function fetchProductByID(id: string, fields: string[] | string, options?: { variantId?: string }): Promise<NormalizedProduct | null> {\r\n try {\r\n if(options?.variantId) return await getVariantProduct(options.variantId, fields);\r\n const merged = mergeFields(fields, BASE_PRODUCT_FIELDS);\r\n const fieldsString = expandProductFields(merged);\r\n const variantFieldsString = variantSelection();\r\n const query = buildSingleProductQuery(fieldsString, variantFieldsString);\r\n const data = await shopifyFetch(query, { id });\r\n const product = data?.product;\r\n if(!product) return null;\r\n return normalizeProduct(product);\r\n } catch(error) { console.error('Fetch Product By ID Error:', error); throw error; };\r\n};\r\n\r\nexport async function getVariantProduct(variantId: string, fields: string[] | string): Promise<NormalizedProduct | null> {\r\n try {\r\n const merged = mergeFields(fields, BASE_PRODUCT_FIELDS);\r\n const productFieldsString = expandProductFields(merged);\r\n const variantFieldsString = variantSelection();\r\n const query = buildVariantProductQuery(productFieldsString, variantFieldsString);\r\n const data = await shopifyFetch(query, { id: variantId });\r\n const variantNode = data?.productVariant;\r\n if(!variantNode) return null;\r\n const product = variantNode.product;\r\n if(!product) return null;\r\n return normalizeProduct(product, variantNode); \r\n } catch(error) { console.error('Get Variant Product Error:', error); throw error; };\r\n};\r\n\r\nexport async function addToCart(options: {\r\n id: number;\r\n quantity?: number;\r\n properties?: Record<string, any>;\r\n}) {\r\n try {\r\n console.log('IV add to cart called');\r\n if(!options.id) throw new Error('No variant id provided for addToCart');\r\n const quantity = options.quantity || 1;\r\n const properties = options.properties || {};\r\n const payload = {\r\n items: [\r\n {\r\n id: options.id,\r\n quantity,\r\n properties\r\n }\r\n ]\r\n };\r\n const url = '/cart/add.js';\r\n const res = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest'\r\n },\r\n body: JSON.stringify(payload)\r\n });\r\n if(!res.ok) {\r\n const errorText = await res.text();\r\n throw new Error(errorText);\r\n };\r\n const cartItem = await res.json();\r\n showToast('Added to cart!', 'success', 3000);\r\n return cartItem;\r\n } catch (error) {\r\n showToast('Error adding to cart', 'error', 5000);\r\n throw error;\r\n };\r\n};"],"names":[],"mappings":"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"}
|