the-foxy-library 1.2.0 → 1.3.0

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.
Files changed (37) hide show
  1. package/dist/cjs/app-globals-DMja435B.js.map +1 -1
  2. package/dist/cjs/intravenous.cjs.js +1 -1
  3. package/dist/cjs/iv-dynamic-products-carousel.cjs.entry.js +3 -3
  4. package/dist/cjs/iv-dynamic-products-carousel.entry.cjs.js.map +1 -1
  5. package/dist/cjs/iv-pill.cjs.entry.js +5 -4
  6. package/dist/cjs/iv-pill.entry.cjs.js.map +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/collection/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.js +5 -5
  9. package/dist/collection/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.js.map +1 -1
  10. package/dist/collection/components/iv-newsletter/iv-newsletter.js +2 -2
  11. package/dist/collection/components/iv-pill/iv-pill.css +2 -0
  12. package/dist/collection/components/iv-pill/iv-pill.js +4 -3
  13. package/dist/collection/components/iv-pill/iv-pill.js.map +1 -1
  14. package/dist/components/index.js.map +1 -1
  15. package/dist/components/iv-dynamic-products-carousel.js +4 -4
  16. package/dist/components/iv-dynamic-products-carousel.js.map +1 -1
  17. package/dist/components/iv-pill.js +5 -4
  18. package/dist/components/iv-pill.js.map +1 -1
  19. package/dist/esm/app-globals-vUQfdhxo.js.map +1 -1
  20. package/dist/esm/intravenous.js +1 -1
  21. package/dist/esm/iv-dynamic-products-carousel.entry.js +3 -3
  22. package/dist/esm/iv-dynamic-products-carousel.entry.js.map +1 -1
  23. package/dist/esm/iv-pill.entry.js +5 -4
  24. package/dist/esm/iv-pill.entry.js.map +1 -1
  25. package/dist/esm/loader.js +1 -1
  26. package/dist/intravenous/intravenous.esm.js +1 -1
  27. package/dist/intravenous/iv-dynamic-products-carousel.entry.esm.js.map +1 -1
  28. package/dist/intravenous/iv-pill.entry.esm.js.map +1 -1
  29. package/dist/intravenous/p-003e4edf.entry.js +2 -0
  30. package/dist/intravenous/{p-33ad5791.entry.js.map → p-003e4edf.entry.js.map} +1 -1
  31. package/dist/intravenous/p-DFXVdw7Z.js.map +1 -1
  32. package/dist/intravenous/{p-a5620fb5.entry.js → p-f13e0eaa.entry.js} +2 -2
  33. package/dist/intravenous/{p-a5620fb5.entry.js.map → p-f13e0eaa.entry.js.map} +1 -1
  34. package/dist/types/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.d.ts +1 -1
  35. package/dist/types/components.d.ts +2 -2
  36. package/package.json +1 -1
  37. package/dist/intravenous/p-33ad5791.entry.js +0 -2
@@ -1 +1 @@
1
- {"file":"iv-dynamic-products-carousel.js","mappings":"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","names":["IvDynamicProductsCarousel","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/utils/storefront_api/queries.ts","src/utils/storefront_api/normalize.ts","src/utils/storefront_api/methods.ts","src/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.scss?tag=iv-dynamic-products-carousel","src/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.tsx"],"sourcesContent":["export function getIdFromHandleQuery(): string {\r\n return `\r\n query ($handle: String!) {\r\n product(handle: $handle) {\r\n id\r\n }\r\n }`;\r\n};\r\n\r\nexport function 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\nexport function 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\nexport function 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\nexport function 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// Change this to emit an event that the toast component can listen for\r\n// getProductByHandle\r\n// getProducts\r\n// getCollections (with sorting)\r\n// getMetafield\r\n// getMetafields","export interface 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 [key: string]: any;\r\n};\r\n\r\nexport function 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};","import { apiConfig } from './config';\r\nimport { createErrorHandler } from '../../utils/error_handling/factory';\r\nimport { getIdFromHandleQuery, buildProductsQuery, buildSingleProductQuery, buildVariantProductQuery, buildCollectionProductsQuery } from './queries';\r\nimport { normalizeProduct, NormalizedProduct } from './normalize';\r\n\r\nconst BASE_PRODUCT_FIELDS = ['id','handle','title'];\r\nconst DEFAULT_VARIANT_FIELDS = ['id','title','price { amount currencyCode }'];\r\nconst errors = createErrorHandler({ component: 'storefront-api-module-config' });\r\n\r\nexport async function shopifyFetch(query: string, variables: Record<string, any> = {}): Promise<any> { \r\n try {\r\n if(!apiConfig.isConnected()) throw new Error('Shopify config not connected');\r\n const res = await fetch(apiConfig.endpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-Shopify-Storefront-Access-Token': apiConfig.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(err: any) {\r\n errors.handle({\r\n error: err,\r\n scope: 'loadProducts',\r\n userMessage: 'Unable to load products right now.',\r\n devMessage: 'fetchProducts failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n return null;\r\n };\r\n};\r\n\r\nexport async function getIdFromHandle(handle: string): Promise<string | null> {\r\n try {\r\n const query = getIdFromHandleQuery();\r\n const data = await shopifyFetch(query, { handle });\r\n const id = data?.product?.id;\r\n if(!id) throw new Error('No product found for given handle');\r\n return id;\r\n } catch (err: any) {\r\n errors.handle({\r\n error: err,\r\n scope: 'getIdFromHandle',\r\n userMessage: 'Unable to get product ID from handle right now.',\r\n devMessage: 'getIdFromHandle failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n return null;\r\n };\r\n};\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)) seen.add(f); ordered.push(f); \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\nexport async function fetchProducts(\r\n limit: number, \r\n collectionHandle: string, \r\n sortKey: string, \r\n fields: string[] | string, \r\n 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) { \r\n console.error('Fetch Product By ID Error:', error); throw error; \r\n };\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) { \r\n console.error('Get Variant Product Error:', error); throw error; \r\n };\r\n};",":host {\r\n display: block;\r\n}\r\n\r\n.iv-dynamic-products-carousel { \r\n position:relative;\r\n}\r\n\r\n.iv-dynamic-products-carousel-carousel { \r\n position:relative;\r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport { \r\n overflow:hidden; \r\n width:100%;\r\n}\r\n\r\n.iv-dynamic-products-carousel-track { \r\n display:flex; \r\n width:100%; \r\n transition: \r\n transform .55s cubic-bezier(.4,.7,.2,1); \r\n will-change:transform;\r\n}\r\n\r\n.iv-dynamic-products-carousel-slide { \r\n flex:0 0 100%; \r\n box-sizing:border-box; \r\n padding:0.25rem 0.5rem; \r\n display:grid; \r\n grid-template-columns:repeat(6, minmax(0,1fr)); \r\n gap:1rem; \r\n align-items:stretch; \r\n grid-auto-rows:1fr; \r\n}\r\n\r\n@media (max-width: 1200px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(4, minmax(0,1fr)); \r\n } \r\n}\r\n\r\n@media (max-width: 900px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(3, minmax(0,1fr)); \r\n } \r\n}\r\n\r\n@media (max-width: 640px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(2, minmax(0,1fr)); \r\n gap:0.75rem; \r\n } \r\n}\r\n\r\n.iv-dynamic-products-carousel-card { \r\n height:100%; \r\n display:flex; \r\n flex-direction:column; \r\n background:#fff; \r\n padding:0.75rem 0.75rem 0.9rem; \r\n box-shadow:0 2px 6px rgba(0,0,0,.08); \r\n transition:box-shadow .2s ease, transform .2s ease; \r\n}\r\n\r\n/* Alignment fix: reserve consistent height for titles (2 lines) and anchor controls at bottom */\r\n.iv-dynamic-products-carousel-card .iv-card-title {\r\n line-height:1.2;\r\n display:-webkit-box;\r\n -webkit-box-orient:vertical;\r\n -webkit-line-clamp:2;\r\n line-clamp:2;\r\n overflow:hidden;\r\n min-height:calc(2 * 1.2em);\r\n}\r\n\r\n.iv-dynamic-products-carousel-card .iv-card-controls {\r\n margin-top:auto; /* push controls to bottom of flex column for uniform vertical alignment */\r\n}\r\n\r\n.iv-dynamic-products-carousel-card:hover { \r\n box-shadow:0 4px 14px rgba(0,0,0,.15); \r\n transform:translateY(-2px); \r\n}\r\n\r\n.iv-dynamic-products-carousel-card:active { \r\n transform:translateY(0); \r\n box-shadow:0 2px 6px rgba(0,0,0,.12); \r\n}\r\n\r\n.iv-dynamic-products-carousel-card img, \r\n.iv-dynamic-products-carousel-card picture, \r\n.iv-dynamic-products-carousel-card .media { \r\n width:100%; \r\n aspect-ratio:1/1; \r\n object-fit:contain; \r\n display:flex; \r\n align-items:center; \r\n justify-content:center; \r\n margin:0 0 .65rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav { \r\n position:absolute; \r\n top:50%; \r\n transform:translateY(-50%); \r\n background:var(--iv-carousel-nav-bg, rgba(0,0,0,.55)); \r\n color:#fff; \r\n border:none; \r\n width:2.75rem; \r\n height:2.75rem; \r\n border-radius:50%; \r\n display:flex; \r\n align-items:center; \r\n justify-content:center; \r\n cursor:pointer; \r\n backdrop-filter:blur(6px); \r\n box-shadow:0 4px 12px rgba(0,0,0,.25); \r\n transition:background .2s ease, \r\n transform .2s ease; \r\n outline:none;\r\n z-index: 10;\r\n }\r\n\r\n.iv-dynamic-products-carousel-nav:focus-visible { \r\n outline:2px solid #fff; \r\n outline-offset:3px; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav:hover:not(:disabled){\r\n background:var(--iv-carousel-nav-bg-hover, rgba(0,0,0,.75)); \r\n transform:translateY(-50%) scale(1.05); \r\n box-shadow:0 6px 18px rgba(0,0,0,.35);\r\n}\r\n\r\n.iv-dynamic-products-carousel-nav:disabled{ \r\n opacity:.4; cursor:default; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav-prev { \r\n left:0.25rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav-next { \r\n right:0.25rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-status { \r\n margin-top:0.75rem; \r\n font-size:0.875rem; \r\n text-align:center; \r\n color:var(--iv-carousel-status-color, #555); \r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport::-webkit-scrollbar { \r\n display:none; \r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport { \r\n -ms-overflow-style:none; \r\n scrollbar-width:none; \r\n}","// Refactor this to use the iv-carousel component\r\n\r\nimport { Component, h, Prop, State, Watch } from '@stencil/core';\r\nimport { state } from '../../utils/store/store';\r\nimport { fetchProducts } from '../../utils/storefront_api';\r\nimport { productCache } from '../../utils/caching/productCache';\r\nimport { createErrorHandler } from '../../utils/error_handling/factory';\r\n\r\nconst BLOCK = 'iv-dynamic-products-carousel';\r\n\r\n@Component({\r\n tag: 'iv-dynamic-products-carousel',\r\n styleUrl: 'iv-dynamic-products-carousel.scss',\r\n shadow: false\r\n})\r\n\r\nexport class IvDynamicProductsCarousel {\r\n @Prop() type: 'CREATED' | 'CREATED_AT' | 'BEST_SELLING' | 'PRICE' | 'TITLE' | 'RELEVANCE' = 'CREATED_AT'; \r\n @Prop() limit: number = 24;\r\n @Prop() reversed: boolean = false; \r\n @Prop() componenttitle?: string;\r\n @Prop() titletag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' = 'h2';\r\n @Prop() collectionhandle: string = 'all';\r\n @Prop() requestedfields: string;\r\n @Prop() calltoaction: boolean = false;\r\n @Prop() buttontext?: string;\r\n @Prop() addtocarttext?: string;\r\n @Prop() emptystring: string = 'No products found';\r\n @Prop() cachettl?: number; \r\n @Prop() stale?: boolean = true;\r\n @Prop() excluse?: string;\r\n \r\n @State() products: any[] = [];\r\n @State() errorMsg: string; \r\n @State() staleData: boolean = false;\r\n @State() page: number = 0; \r\n\r\n private readonly itemsPerPage = 6;\r\n\r\n private errors = createErrorHandler({ component: 'iv-dynamic-products-carousel' });\r\n\r\n @Watch('type')\r\n @Watch('limit')\r\n @Watch('collectionhandle')\r\n @Watch('requestedfields')\r\n handlePropChange() { this.loadProducts(true); }\r\n\r\n async componentWillLoad() { \r\n await this.loadProducts(false); \r\n };\r\n \r\n private buildParams() {\r\n return {\r\n handle: this.collectionhandle,\r\n sort: this.type,\r\n fields: this.requestedfields,\r\n limit: 36, // Always fetch 36 products for filtering\r\n currency: state.currencyCode,\r\n reversed: this.reversed\r\n };\r\n };\r\n\r\n private ensureProductTypeField(fields: string): string {\r\n if(!fields) return 'productType';\r\n const arr = fields.split(',').map(f => f.trim());\r\n if(!arr.includes('productType')) arr.push('productType');\r\n return arr.join(',');\r\n };\r\n\r\n private filterAndSliceProducts(data: any[]): any[] {\r\n if(!this.excluse) return data.slice(0, this.limit);\r\n if(!this.requestedfields || !this.requestedfields.includes('productType')) {\r\n this.requestedfields = this.ensureProductTypeField(this.requestedfields);\r\n };\r\n const filtered = data.filter(p => p.productType !== this.excluse);\r\n return filtered.slice(0, this.limit);\r\n };\r\n\r\n private async loadProducts(fromWatch: boolean) {\r\n const params = this.buildParams();\r\n const ttl = this.cachettl || 1000 * 60 * 5;\r\n state.loading = !fromWatch;\r\n try {\r\n const data = await productCache.getOrSetData(\r\n params,\r\n async () => {\r\n const fresh = await fetchProducts(\r\n 36, \r\n this.collectionhandle, \r\n this.type, \r\n this.requestedfields, \r\n this.reversed\r\n );\r\n return fresh;\r\n },\r\n {\r\n ttl,\r\n staleWhileRevalidate: this.stale,\r\n transform: (fresh) => fresh \r\n }\r\n );\r\n const metaCheck = productCache.getData<typeof data>(params);\r\n this.staleData = metaCheck.isExpired && metaCheck.isStale;\r\n this.products = Array.isArray(data) ? this.filterAndSliceProducts(data) : [];\r\n this.page = 0;\r\n } catch (err: any) {\r\n this.errorMsg = 'Failed to load products';\r\n this.errors.handle({\r\n error: err,\r\n scope: 'loadProducts',\r\n userMessage: 'Unable to load products right now.',\r\n devMessage: 'fetchProducts failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n } finally {\r\n state.loading = false;\r\n };\r\n };\r\n \r\n private pagedProducts() {\r\n const chunks: any[][] = [];\r\n for(let i=0; i < this.products.length; i += this.itemsPerPage) {\r\n chunks.push(this.products.slice(i, i + this.itemsPerPage));\r\n };\r\n return chunks;\r\n };\r\n\r\n private next = () => { \r\n const pages = this.pagedProducts().length;\r\n if(this.page < pages - 1) this.page++;\r\n };\r\n\r\n private prev = () => { \r\n if(this.page > 0) this.page--;\r\n };\r\n\r\n render() {\r\n\r\n const TAG = this.titletag as any;\r\n\r\n return (\r\n <div class={BLOCK} data-stale={this.staleData ? 'true' : 'false'}>\r\n {this.componenttitle && <TAG class={`${BLOCK}-title`}>{this.componenttitle}</TAG>}\r\n {state.loading ? (\r\n <iv-spinner></iv-spinner>\r\n ) : this.errorMsg ? (\r\n <div class={`${BLOCK}-error`}>{this.errorMsg}</div>\r\n ) : this.products.length === 0 ? (\r\n <div class={`${BLOCK}-empty`}>{this.emptystring}</div>\r\n ) : (\r\n <div class={`${BLOCK}-carousel`} aria-roledescription=\"carousel\">\r\n <button class={`${BLOCK}-nav ${BLOCK}-nav-prev`} onClick={this.prev} disabled={this.page===0} aria-label=\"Previous\" type=\"button\">\r\n ‹\r\n </button>\r\n <div class={`${BLOCK}-viewport`}>\r\n <div class={`${BLOCK}-track`} style={{ transform: `translateX(-${this.page * 100}%)` }}>\r\n {this.pagedProducts().map((group, i) => (\r\n <div class={`${BLOCK}-slide`} role=\"group\" aria-label={`Slide ${i+1} of ${this.pagedProducts().length}`}> \r\n {group.map(product => (\r\n <iv-card\r\n cardtype='products'\r\n calltoaction={this.calltoaction}\r\n buttontext={this.buttontext}\r\n addtocarttext={this.addtocarttext}\r\n data={product}\r\n classmodifier={`${BLOCK}-card`} />\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n <button class={`${BLOCK}-nav ${BLOCK}-nav-next`} onClick={this.next} disabled={this.page===this.pagedProducts().length-1} aria-label=\"Next\" type=\"button\">\r\n ›\r\n </button>\r\n <div class={`${BLOCK}-status`} aria-live=\"polite\">{this.pagedProducts().length > 1 ? `Slide ${this.page+1} of ${this.pagedProducts().length}` : ''}</div>\r\n {this.staleData && (\r\n <div class={`${BLOCK}-stale-indicator`} aria-live=\"polite\">Refreshing…</div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n};"],"version":3}
1
+ {"file":"iv-dynamic-products-carousel.js","mappings":"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","names":["IvDynamicProductsCarousel","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/utils/storefront_api/queries.ts","src/utils/storefront_api/normalize.ts","src/utils/storefront_api/methods.ts","src/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.scss?tag=iv-dynamic-products-carousel","src/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.tsx"],"sourcesContent":["export function getIdFromHandleQuery(): string {\r\n return `\r\n query ($handle: String!) {\r\n product(handle: $handle) {\r\n id\r\n }\r\n }`;\r\n};\r\n\r\nexport function 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\nexport function 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\nexport function 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\nexport function 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// Change this to emit an event that the toast component can listen for\r\n// getProductByHandle\r\n// getProducts\r\n// getCollections (with sorting)\r\n// getMetafield\r\n// getMetafields","export interface 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 [key: string]: any;\r\n};\r\n\r\nexport function 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};","import { apiConfig } from './config';\r\nimport { createErrorHandler } from '../../utils/error_handling/factory';\r\nimport { getIdFromHandleQuery, buildProductsQuery, buildSingleProductQuery, buildVariantProductQuery, buildCollectionProductsQuery } from './queries';\r\nimport { normalizeProduct, NormalizedProduct } from './normalize';\r\n\r\nconst BASE_PRODUCT_FIELDS = ['id','handle','title'];\r\nconst DEFAULT_VARIANT_FIELDS = ['id','title','price { amount currencyCode }'];\r\nconst errors = createErrorHandler({ component: 'storefront-api-module-config' });\r\n\r\nexport async function shopifyFetch(query: string, variables: Record<string, any> = {}): Promise<any> { \r\n try {\r\n if(!apiConfig.isConnected()) throw new Error('Shopify config not connected');\r\n const res = await fetch(apiConfig.endpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-Shopify-Storefront-Access-Token': apiConfig.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(err: any) {\r\n errors.handle({\r\n error: err,\r\n scope: 'loadProducts',\r\n userMessage: 'Unable to load products right now.',\r\n devMessage: 'fetchProducts failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n return null;\r\n };\r\n};\r\n\r\nexport async function getIdFromHandle(handle: string): Promise<string | null> {\r\n try {\r\n const query = getIdFromHandleQuery();\r\n const data = await shopifyFetch(query, { handle });\r\n const id = data?.product?.id;\r\n if(!id) throw new Error('No product found for given handle');\r\n return id;\r\n } catch (err: any) {\r\n errors.handle({\r\n error: err,\r\n scope: 'getIdFromHandle',\r\n userMessage: 'Unable to get product ID from handle right now.',\r\n devMessage: 'getIdFromHandle failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n return null;\r\n };\r\n};\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)) seen.add(f); ordered.push(f); \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\nexport async function fetchProducts(\r\n limit: number, \r\n collectionHandle: string, \r\n sortKey: string, \r\n fields: string[] | string, \r\n 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) { \r\n console.error('Fetch Product By ID Error:', error); throw error; \r\n };\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) { \r\n console.error('Get Variant Product Error:', error); throw error; \r\n };\r\n};",":host {\r\n display: block;\r\n}\r\n\r\n.iv-dynamic-products-carousel { \r\n position:relative;\r\n}\r\n\r\n.iv-dynamic-products-carousel-carousel { \r\n position:relative;\r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport { \r\n overflow:hidden; \r\n width:100%;\r\n}\r\n\r\n.iv-dynamic-products-carousel-track { \r\n display:flex; \r\n width:100%; \r\n transition: \r\n transform .55s cubic-bezier(.4,.7,.2,1); \r\n will-change:transform;\r\n}\r\n\r\n.iv-dynamic-products-carousel-slide { \r\n flex:0 0 100%; \r\n box-sizing:border-box; \r\n padding:0.25rem 0.5rem; \r\n display:grid; \r\n grid-template-columns:repeat(6, minmax(0,1fr)); \r\n gap:1rem; \r\n align-items:stretch; \r\n grid-auto-rows:1fr; \r\n}\r\n\r\n@media (max-width: 1200px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(4, minmax(0,1fr)); \r\n } \r\n}\r\n\r\n@media (max-width: 900px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(3, minmax(0,1fr)); \r\n } \r\n}\r\n\r\n@media (max-width: 640px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(2, minmax(0,1fr)); \r\n gap:0.75rem; \r\n } \r\n}\r\n\r\n.iv-dynamic-products-carousel-card { \r\n height:100%; \r\n display:flex; \r\n flex-direction:column; \r\n background:#fff; \r\n padding:0.75rem 0.75rem 0.9rem; \r\n box-shadow:0 2px 6px rgba(0,0,0,.08); \r\n transition:box-shadow .2s ease, transform .2s ease; \r\n}\r\n\r\n/* Alignment fix: reserve consistent height for titles (2 lines) and anchor controls at bottom */\r\n.iv-dynamic-products-carousel-card .iv-card-title {\r\n line-height:1.2;\r\n display:-webkit-box;\r\n -webkit-box-orient:vertical;\r\n -webkit-line-clamp:2;\r\n line-clamp:2;\r\n overflow:hidden;\r\n min-height:calc(2 * 1.2em);\r\n}\r\n\r\n.iv-dynamic-products-carousel-card .iv-card-controls {\r\n margin-top:auto; /* push controls to bottom of flex column for uniform vertical alignment */\r\n}\r\n\r\n.iv-dynamic-products-carousel-card:hover { \r\n box-shadow:0 4px 14px rgba(0,0,0,.15); \r\n transform:translateY(-2px); \r\n}\r\n\r\n.iv-dynamic-products-carousel-card:active { \r\n transform:translateY(0); \r\n box-shadow:0 2px 6px rgba(0,0,0,.12); \r\n}\r\n\r\n.iv-dynamic-products-carousel-card img, \r\n.iv-dynamic-products-carousel-card picture, \r\n.iv-dynamic-products-carousel-card .media { \r\n width:100%; \r\n aspect-ratio:1/1; \r\n object-fit:contain; \r\n display:flex; \r\n align-items:center; \r\n justify-content:center; \r\n margin:0 0 .65rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav { \r\n position:absolute; \r\n top:50%; \r\n transform:translateY(-50%); \r\n background:var(--iv-carousel-nav-bg, rgba(0,0,0,.55)); \r\n color:#fff; \r\n border:none; \r\n width:2.75rem; \r\n height:2.75rem; \r\n border-radius:50%; \r\n display:flex; \r\n align-items:center; \r\n justify-content:center; \r\n cursor:pointer; \r\n backdrop-filter:blur(6px); \r\n box-shadow:0 4px 12px rgba(0,0,0,.25); \r\n transition:background .2s ease, \r\n transform .2s ease; \r\n outline:none;\r\n z-index: 10;\r\n }\r\n\r\n.iv-dynamic-products-carousel-nav:focus-visible { \r\n outline:2px solid #fff; \r\n outline-offset:3px; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav:hover:not(:disabled){\r\n background:var(--iv-carousel-nav-bg-hover, rgba(0,0,0,.75)); \r\n transform:translateY(-50%) scale(1.05); \r\n box-shadow:0 6px 18px rgba(0,0,0,.35);\r\n}\r\n\r\n.iv-dynamic-products-carousel-nav:disabled{ \r\n opacity:.4; cursor:default; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav-prev { \r\n left:0.25rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav-next { \r\n right:0.25rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-status { \r\n margin-top:0.75rem; \r\n font-size:0.875rem; \r\n text-align:center; \r\n color:var(--iv-carousel-status-color, #555); \r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport::-webkit-scrollbar { \r\n display:none; \r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport { \r\n -ms-overflow-style:none; \r\n scrollbar-width:none; \r\n}","// Refactor this to use the iv-carousel component\r\n\r\nimport { Component, h, Prop, State, Watch } from '@stencil/core';\r\nimport { state } from '../../utils/store/store';\r\nimport { fetchProducts } from '../../utils/storefront_api';\r\nimport { productCache } from '../../utils/caching/productCache';\r\nimport { createErrorHandler } from '../../utils/error_handling/factory';\r\n\r\nconst BLOCK = 'iv-dynamic-products-carousel';\r\n\r\n@Component({\r\n tag: 'iv-dynamic-products-carousel',\r\n styleUrl: 'iv-dynamic-products-carousel.scss',\r\n shadow: false\r\n})\r\n\r\nexport class IvDynamicProductsCarousel {\r\n @Prop() type: 'CREATED' | 'CREATED_AT' | 'BEST_SELLING' | 'PRICE' | 'TITLE' | 'RELEVANCE' = 'CREATED_AT'; \r\n @Prop() limit: number = 24;\r\n @Prop() reversed: boolean = false; \r\n @Prop() componenttitle?: string;\r\n @Prop() titletag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' = 'h2';\r\n @Prop() collectionhandle: string = 'all';\r\n @Prop() requestedfields: string;\r\n @Prop() calltoaction: boolean = false;\r\n @Prop() buttontext?: string;\r\n @Prop() addtocarttext?: string;\r\n @Prop() emptystring: string = 'No products found';\r\n @Prop() cachettl?: number; \r\n @Prop() stale?: boolean = true;\r\n @Prop() exclude?: string;\r\n \r\n @State() products: any[] = [];\r\n @State() errorMsg: string; \r\n @State() staleData: boolean = false;\r\n @State() page: number = 0; \r\n\r\n private readonly itemsPerPage = 6;\r\n\r\n private errors = createErrorHandler({ component: 'iv-dynamic-products-carousel' });\r\n\r\n @Watch('type')\r\n @Watch('limit')\r\n @Watch('collectionhandle')\r\n @Watch('requestedfields')\r\n handlePropChange() { this.loadProducts(true); }\r\n\r\n async componentWillLoad() { \r\n await this.loadProducts(false); \r\n };\r\n \r\n private buildParams() {\r\n return {\r\n handle: this.collectionhandle,\r\n sort: this.type,\r\n fields: this.requestedfields,\r\n limit: 36, // Always fetch 36 products for filtering\r\n currency: state.currencyCode,\r\n reversed: this.reversed\r\n };\r\n };\r\n\r\n private ensureProductTypeField(fields: string): string {\r\n if(!fields) return 'productType';\r\n const arr = fields.split(',').map(f => f.trim());\r\n if(!arr.includes('productType')) arr.push('productType');\r\n return arr.join(',');\r\n };\r\n\r\n private filterAndSliceProducts(data: any[]): any[] {\r\n if(!this.exclude) return data.slice(0, this.limit);\r\n if(!this.requestedfields || !this.requestedfields.includes('productType')) {\r\n this.requestedfields = this.ensureProductTypeField(this.requestedfields);\r\n };\r\n const filtered = data.filter(p => p.productType !== this.exclude);\r\n return filtered.slice(0, this.limit);\r\n };\r\n\r\n private async loadProducts(fromWatch: boolean) {\r\n const params = this.buildParams();\r\n const ttl = this.cachettl || 1000 * 60 * 5;\r\n state.loading = !fromWatch;\r\n try {\r\n const data = await productCache.getOrSetData(\r\n params,\r\n async () => {\r\n const fresh = await fetchProducts(\r\n 36, \r\n this.collectionhandle, \r\n this.type, \r\n this.requestedfields, \r\n this.reversed\r\n );\r\n return fresh;\r\n },\r\n {\r\n ttl,\r\n staleWhileRevalidate: this.stale,\r\n transform: (fresh) => fresh \r\n }\r\n );\r\n const metaCheck = productCache.getData<typeof data>(params);\r\n this.staleData = metaCheck.isExpired && metaCheck.isStale;\r\n this.products = Array.isArray(data) ? this.filterAndSliceProducts(data) : [];\r\n this.page = 0;\r\n } catch (err: any) {\r\n this.errorMsg = 'Failed to load products';\r\n this.errors.handle({\r\n error: err,\r\n scope: 'loadProducts',\r\n userMessage: 'Unable to load products right now.',\r\n devMessage: 'fetchProducts failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n } finally {\r\n state.loading = false;\r\n };\r\n };\r\n \r\n private pagedProducts() {\r\n const chunks: any[][] = [];\r\n for(let i=0; i < this.products.length; i += this.itemsPerPage) {\r\n chunks.push(this.products.slice(i, i + this.itemsPerPage));\r\n };\r\n return chunks;\r\n };\r\n\r\n private next = () => { \r\n const pages = this.pagedProducts().length;\r\n if(this.page < pages - 1) this.page++;\r\n };\r\n\r\n private prev = () => { \r\n if(this.page > 0) this.page--;\r\n };\r\n\r\n render() {\r\n\r\n const TAG = this.titletag as any;\r\n\r\n return (\r\n <div class={BLOCK} data-stale={this.staleData ? 'true' : 'false'}>\r\n {this.componenttitle && <TAG class={`${BLOCK}-title`}>{this.componenttitle}</TAG>}\r\n {state.loading ? (\r\n <iv-spinner></iv-spinner>\r\n ) : this.errorMsg ? (\r\n <div class={`${BLOCK}-error`}>{this.errorMsg}</div>\r\n ) : this.products.length === 0 ? (\r\n <div class={`${BLOCK}-empty`}>{this.emptystring}</div>\r\n ) : (\r\n <div class={`${BLOCK}-carousel`} aria-roledescription=\"carousel\">\r\n <button class={`${BLOCK}-nav ${BLOCK}-nav-prev`} onClick={this.prev} disabled={this.page===0} aria-label=\"Previous\" type=\"button\">\r\n ‹\r\n </button>\r\n <div class={`${BLOCK}-viewport`}>\r\n <div class={`${BLOCK}-track`} style={{ transform: `translateX(-${this.page * 100}%)` }}>\r\n {this.pagedProducts().map((group, i) => (\r\n <div class={`${BLOCK}-slide`} role=\"group\" aria-label={`Slide ${i+1} of ${this.pagedProducts().length}`}> \r\n {group.map(product => (\r\n <iv-card\r\n cardtype='products'\r\n calltoaction={this.calltoaction}\r\n buttontext={this.buttontext}\r\n addtocarttext={this.addtocarttext}\r\n data={product}\r\n classmodifier={`${BLOCK}-card`} />\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n <button class={`${BLOCK}-nav ${BLOCK}-nav-next`} onClick={this.next} disabled={this.page===this.pagedProducts().length-1} aria-label=\"Next\" type=\"button\">\r\n ›\r\n </button>\r\n <div class={`${BLOCK}-status`} aria-live=\"polite\">{this.pagedProducts().length > 1 ? `Slide ${this.page+1} of ${this.pagedProducts().length}` : ''}</div>\r\n {this.staleData && (\r\n <div class={`${BLOCK}-stale-indicator`} aria-live=\"polite\">Refreshing…</div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n};"],"version":3}
@@ -1,6 +1,6 @@
1
1
  import { p as proxyCustomElement, H, h } from './p-B_3oQArZ.js';
2
2
 
3
- const ivPillCss = ".iv-pill{background:var(--iv-pill-bgcolor, transparent)}.iv-pill.bordered{border-color:var(--iv-pill-bordercolor, black);border-width:1px;border-style:solid}.iv-pill.internal-none{padding:0}.iv-pill.internal-small{padding:0.25rem 0.5rem}.iv-pill.internal-medium{padding:0.5rem 1rem}.iv-pill.internal-large{padding:0.75rem 1.5rem}.iv-pill.external-none{margin:0}.iv-pill.external-small{margin:0.5rem}.iv-pill.external-medium{margin:0.75rem}.iv-pill.external-large{margin:1rem}.iv-pill.corners-none{border-radius:0}.iv-pill.corners-small{border-radius:0.5rem}.iv-pill.corners-medium{border-radius:1rem}.iv-pill.corners-large{border-radius:2rem}.iv-pill-content{color:var(--iv-pill-textcolor, black)}.iv-pill-label{font-weight:bold;margin-right:0.5rem}";
3
+ const ivPillCss = ".iv-pill{background:var(--iv-pill-bgcolor, transparent);width:fit-content;display:inline-block}.iv-pill.bordered{border-color:var(--iv-pill-bordercolor, black);border-width:1px;border-style:solid}.iv-pill.internal-none{padding:0}.iv-pill.internal-small{padding:0.25rem 0.5rem}.iv-pill.internal-medium{padding:0.5rem 1rem}.iv-pill.internal-large{padding:0.75rem 1.5rem}.iv-pill.external-none{margin:0}.iv-pill.external-small{margin:0.5rem}.iv-pill.external-medium{margin:0.75rem}.iv-pill.external-large{margin:1rem}.iv-pill.corners-none{border-radius:0}.iv-pill.corners-small{border-radius:0.5rem}.iv-pill.corners-medium{border-radius:1rem}.iv-pill.corners-large{border-radius:2rem}.iv-pill-content{color:var(--iv-pill-textcolor, black)}.iv-pill-label{font-weight:bold;margin-right:0.5rem}";
4
4
 
5
5
  const BLOCK = 'iv-pill';
6
6
  const IvPill$1 = /*@__PURE__*/ proxyCustomElement(class IvPill extends H {
@@ -17,11 +17,12 @@ const IvPill$1 = /*@__PURE__*/ proxyCustomElement(class IvPill extends H {
17
17
  externalspacing = 'none';
18
18
  roundedcorners = 'medium';
19
19
  render() {
20
- return (h("div", { key: '0315732a272ed0d12a32e42026b5e9c378c209a9', class: BLOCK + this.bordered && ' bordered'
20
+ return (h("div", { key: '0babc05c3604fd666838d6bea498781d569a4f6f', class: BLOCK
21
+ + (this.bordered ? ' bordered' : '')
21
22
  + ` internal-${this.internalspacing}`
22
23
  + ` external-${this.externalspacing}`
23
- + ` corners-${this.roundedcorners}` }, h("p", { key: '4de900ef1b2640a0be029491b263c0e1aa3347f5', class: `${BLOCK}-content` }, this.label &&
24
- h("span", { key: 'd63db09e06be920d963f95400713c1ad9cb96032', class: `${BLOCK}-label` }, this.label), this.content)));
24
+ + ` corners-${this.roundedcorners}` }, h("p", { key: '51816bcac1a1f30311b93eb0eddc5d7f6f5d6952', class: `${BLOCK}-content` }, this.label &&
25
+ h("span", { key: 'ef3aa3d8a44e23e469560501d71fc4b1409796f5', class: `${BLOCK}-label` }, this.label), this.content)));
25
26
  }
26
27
  ;
27
28
  static get style() { return ivPillCss; }
@@ -1 +1 @@
1
- {"file":"iv-pill.js","mappings":";;AAAA,MAAM,SAAS,GAAG,+uBAA+uB;;ACEjwB,MAAM,KAAK,GAAG,SAAS;MAQVA,QAAM,iBAAAC,kBAAA,CAAA,MAAA,MAAA,SAAAC,CAAA,CAAA;;;;;;;AAET,IAAA,KAAK;AACL,IAAA,OAAO;IACP,QAAQ,GAAY,IAAI;IACxB,eAAe,GAAiC,QAAQ;IACxD,eAAe,GAA0C,MAAM;IAC/D,cAAc,GAA0C,QAAQ;IAExE,MAAM,GAAA;AAEJ,QAAA,QACE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EACR,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI;kBACvB,CAAa,UAAA,EAAA,IAAI,CAAC,eAAe,CAAE;kBACnC,CAAa,UAAA,EAAA,IAAI,CAAC,eAAe,CAAE;kBACnC,CAAY,SAAA,EAAA,IAAI,CAAC,cAAc,CAAE,CAAA,EAAA,EAEnC,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAG,KAAK,EAAE,CAAG,EAAA,KAAK,UAAU,EAAA,EACzB,IAAI,CAAC,KAAK;YACT,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,MAAA,CAAQ,EAAG,EAAA,IAAI,CAAC,KAAK,CAAQ,EAEnD,IAAI,CAAC,OAAO,CACX,CACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["IvPill","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/iv-pill/iv-pill.scss?tag=iv-pill","src/components/iv-pill/iv-pill.tsx"],"sourcesContent":[".iv-pill {\n background: var(--iv-pill-bgcolor, transparent);\n\n &.bordered {\n border-color: var(--iv-pill-bordercolor, black);\n border-width: 1px;\n border-style: solid;\n }\n\n &.internal-none {\n padding: 0;\n }\n\n &.internal-small {\n padding: 0.25rem 0.5rem;\n }\n\n &.internal-medium {\n padding: 0.5rem 1rem;\n }\n\n &.internal-large {\n padding: 0.75rem 1.5rem;\n }\n\n &.external-none {\n margin: 0;\n }\n\n &.external-small {\n margin: .5rem;\n }\n\n &.external-medium {\n margin: .75rem;\n }\n\n &.external-large {\n margin: 1rem;\n }\n\n &.corners-none {\n border-radius: 0;\n }\n\n &.corners-small {\n border-radius: 0.5rem;\n }\n\n &.corners-medium {\n border-radius: 1rem;\n }\n\n &.corners-large {\n border-radius: 2rem;\n }\n\n &-content {\n color: var(--iv-pill-textcolor, black);\n }\n\n &-label {\n font-weight: bold;\n margin-right: 0.5rem;\n }\n\n}","import { Component, h, Prop } from '@stencil/core';\n\nconst BLOCK = 'iv-pill';\n\n@Component({\n tag: 'iv-pill',\n styleUrl: 'iv-pill.scss',\n shadow: false\n})\n\nexport class IvPill {\n\n @Prop() label?: string;\n @Prop() content: string;\n @Prop() bordered: boolean = true;\n @Prop() internalspacing: 'small' | 'medium' | 'large' = 'medium';\n @Prop() externalspacing: 'none' | 'small' | 'medium' | 'large' = 'none';\n @Prop() roundedcorners: 'none' | 'small' | 'medium' | 'large' = 'medium';\n\n render() {\n\n return (\n <div class={\n BLOCK + this.bordered && ' bordered'\n + ` internal-${this.internalspacing}`\n + ` external-${this.externalspacing}`\n + ` corners-${this.roundedcorners}`\n }>\n <p class={`${BLOCK}-content`}>\n {this.label && \n <span class={`${BLOCK}-label`}>{this.label}</span>\n }\n {this.content}\n </p>\n </div>\n );\n\n };\n\n};"],"version":3}
1
+ {"file":"iv-pill.js","mappings":";;AAAA,MAAM,SAAS,GAAG,sxBAAsxB;;ACExyB,MAAM,KAAK,GAAG,SAAS;MAQVA,QAAM,iBAAAC,kBAAA,CAAA,MAAA,MAAA,SAAAC,CAAA,CAAA;;;;;;;AAET,IAAA,KAAK;AACL,IAAA,OAAO;IACP,QAAQ,GAAY,IAAI;IACxB,eAAe,GAAiC,QAAQ;IACxD,eAAe,GAA0C,MAAM;IAC/D,cAAc,GAA0C,QAAQ;IAExE,MAAM,GAAA;AAEJ,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EACR;mBACG,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,EAAE;kBACjC,CAAa,UAAA,EAAA,IAAI,CAAC,eAAe,CAAE;kBACnC,CAAa,UAAA,EAAA,IAAI,CAAC,eAAe,CAAE;kBACnC,CAAY,SAAA,EAAA,IAAI,CAAC,cAAc,CAAE,CAAA,EAAA,EAEnC,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAG,KAAK,EAAE,CAAG,EAAA,KAAK,UAAU,EAAA,EACzB,IAAI,CAAC,KAAK;YACT,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,MAAA,CAAQ,EAAG,EAAA,IAAI,CAAC,KAAK,CAAQ,EAEnD,IAAI,CAAC,OAAO,CACX,CACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["IvPill","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/iv-pill/iv-pill.scss?tag=iv-pill","src/components/iv-pill/iv-pill.tsx"],"sourcesContent":[".iv-pill {\n background: var(--iv-pill-bgcolor, transparent);\n width: fit-content;\n display: inline-block;\n\n &.bordered {\n border-color: var(--iv-pill-bordercolor, black);\n border-width: 1px;\n border-style: solid;\n }\n\n &.internal-none {\n padding: 0;\n }\n\n &.internal-small {\n padding: 0.25rem 0.5rem;\n }\n\n &.internal-medium {\n padding: 0.5rem 1rem;\n }\n\n &.internal-large {\n padding: 0.75rem 1.5rem;\n }\n\n &.external-none {\n margin: 0;\n }\n\n &.external-small {\n margin: .5rem;\n }\n\n &.external-medium {\n margin: .75rem;\n }\n\n &.external-large {\n margin: 1rem;\n }\n\n &.corners-none {\n border-radius: 0;\n }\n\n &.corners-small {\n border-radius: 0.5rem;\n }\n\n &.corners-medium {\n border-radius: 1rem;\n }\n\n &.corners-large {\n border-radius: 2rem;\n }\n\n &-content {\n color: var(--iv-pill-textcolor, black);\n }\n\n &-label {\n font-weight: bold;\n margin-right: 0.5rem;\n }\n\n}","import { Component, h, Prop } from '@stencil/core';\n\nconst BLOCK = 'iv-pill';\n\n@Component({\n tag: 'iv-pill',\n styleUrl: 'iv-pill.scss',\n shadow: false\n})\n\nexport class IvPill {\n\n @Prop() label?: string;\n @Prop() content: string;\n @Prop() bordered: boolean = true;\n @Prop() internalspacing: 'small' | 'medium' | 'large' = 'medium';\n @Prop() externalspacing: 'none' | 'small' | 'medium' | 'large' = 'none';\n @Prop() roundedcorners: 'none' | 'small' | 'medium' | 'large' = 'medium';\n\n render() {\n\n return (\n <div class={\n BLOCK \n + (this.bordered ? ' bordered' : '')\n + ` internal-${this.internalspacing}`\n + ` external-${this.externalspacing}`\n + ` corners-${this.roundedcorners}`\n }>\n <p class={`${BLOCK}-content`}>\n {this.label && \n <span class={`${BLOCK}-label`}>{this.label}</span>\n }\n {this.content}\n </p>\n </div>\n );\n\n };\n\n};"],"version":3}
@@ -1 +1 @@
1
- {"version":3,"file":"app-globals-vUQfdhxo.js","sources":["@stencil/core/internal/app-globals"],"sourcesContent":["import appGlobalScript from 'C:/Users/bbuxt/OneDrive/Documents/Development/Freelance/Component Library/The-Foxy-Library/src/global/app.ts';\nexport const globalScripts = appGlobalScript;\nexport const globalStyles = \"\";\n"],"names":["appGlobalScript"],"mappings":";;AACY,MAAC,aAAa,GAAGA;;;;"}
1
+ {"version":3,"file":"app-globals-vUQfdhxo.js","sources":["@stencil/core/internal/app-globals"],"sourcesContent":["import appGlobalScript from 'C:/Users/bbuxt/OneDrive/Documents/Development/Freelance/The-Foxy-Library/src/global/app.ts';\nexport const globalScripts = appGlobalScript;\nexport const globalStyles = \"\";\n"],"names":["appGlobalScript"],"mappings":";;AACY,MAAC,aAAa,GAAGA;;;;"}
@@ -17,6 +17,6 @@ var patchBrowser = () => {
17
17
 
18
18
  patchBrowser().then(async (options) => {
19
19
  await globalScripts();
20
- return bootstrapLazy([["iv-dynamic-products",[[256,"iv-dynamic-products",{"type":[1],"limit":[2],"reversed":[4],"componenttitle":[1],"titletag":[1],"collectionhandle":[1],"carousel":[4],"requestedfields":[1],"calltoaction":[4],"buttontext":[1],"addtocarttext":[1],"emptystring":[1],"gridlayout":[1],"cachettl":[2],"stale":[4],"products":[32],"errorMsg":[32],"staleData":[32]},null,{"type":["handlePropChange"],"limit":["handlePropChange"],"collectionhandle":["handlePropChange"],"requestedfields":["handlePropChange"]}]]],["iv-suggest",[[256,"iv-suggest",{"topqueries":[1],"collections":[1],"products":[1],"banner":[1],"bannerurl":[1],"bannertitle":[1],"bannertitletag":[1],"bannerbuttontext":[1],"topquerytitle":[1],"productstitle":[1],"collectionstitle":[1],"gridlayout":[1],"requestfields":[1]}]]],["iv-dynamic-products-carousel",[[256,"iv-dynamic-products-carousel",{"type":[1],"limit":[2],"reversed":[4],"componenttitle":[1],"titletag":[1],"collectionhandle":[1],"requestedfields":[1],"calltoaction":[4],"buttontext":[1],"addtocarttext":[1],"emptystring":[1],"cachettl":[2],"stale":[4],"excluse":[1],"products":[32],"errorMsg":[32],"staleData":[32],"page":[32]},null,{"type":["handlePropChange"],"limit":["handlePropChange"],"collectionhandle":["handlePropChange"],"requestedfields":["handlePropChange"]}]]],["iv-predictive-search",[[256,"iv-predictive-search",{"searchlabel":[1],"labelposition":[1],"action":[1],"placeholder":[1],"minchars":[2],"resultslimit":[2],"showspinner":[4],"noresultstext":[1],"requestedfields":[1],"requestedresources":[1],"showallbuttontext":[1],"querybuttontext":[1],"clearbutton":[1],"expandable":[4],"tablayout":[1],"gridlayout":[1],"searchTerm":[32],"searchReturnData":[32],"noResults":[32]}]]],["iv-recently-viewed",[[256,"iv-recently-viewed",{"componenttitle":[1],"titletag":[1],"numbertoshow":[2],"noviewhistory":[1],"requestedfields":[1],"items":[32]}]]],["iv-link-list",[[256,"iv-link-list",{"linktype":[1],"showicons":[4],"links":[1],"layout":[1]}]]],["iv-shop-the-look",[[260,"iv-shop-the-look",{"behaviour":[1],"coordinates":[1],"producthandles":[1]}]]],["iv-toast-container",[[256,"iv-toast-container",{"_bump":[32]}]]],["iv-wishlist",[[256,"iv-wishlist",{"buttonaddvalue":[1],"buttonremovevalue":[1],"wishlistempty":[1],"buttonaddtocartvalue":[1],"viewwishlistvalue":[1],"productdata":[1],"usefields":[1],"previewtype":[1]}]]],["iv-carousel",[[260,"iv-carousel",{"navarrows":[4],"navdots":[4],"showslidecount":[4],"autoplay":[4],"autoplayspeed":[2],"valign":[1],"halign":[1],"hasoverlay":[4],"currentIndex":[32],"items":[32]}]]],["iv-compare-product",[[256,"iv-compare-product"]]],["iv-filters",[[256,"iv-filters"]]],["iv-footer",[[260,"iv-footer",{"gridtemplateareas":[1],"footerbackground":[1],"blockElements":[32]}]]],["iv-pill",[[256,"iv-pill",{"label":[1],"content":[1],"bordered":[4],"internalspacing":[1],"externalspacing":[1],"roundedcorners":[1]}]]],["iv-product-upsell",[[257,"iv-product-upsell"]]],["iv-two-col-media",[[260,"iv-two-col-media",{"mobilebehaviour":[1],"whichcolumn":[1],"stackorder":[1],"verticalalign":[1],"horizontalalign":[1],"gap":[1],"hasMediaCol1":[32],"hasMediaCol2":[32]}]]],["sw-in-grid-content",[[260,"sw-in-grid-content"]]],["sw-size-guide",[[260,"sw-size-guide",{"sizeUnits":[32]}]]],["iv-banner",[[260,"iv-banner",{"classmodifier":[1],"bannerurl":[1],"bannerbuttontext":[1],"bannertype":[1]}]]],["iv-product-pin",[[256,"iv-product-pin",{"pinProduct":[1,"pin-product"],"pinKey":[2,"pin-key"],"pinCords":[16],"pinBehaviour":[1,"pin-behaviour"]}]]],["iv-tabs",[[260,"iv-tabs",{"labels":[16],"classModifier":[1,"class-modifier"],"tabLayout":[1,"tab-layout"],"activeTab":[32]}]]],["iv-toast",[[256,"iv-toast",{"message":[1],"toastId":[2,"toast-id"],"duration":[2],"type":[1]}]]],["ion-icon_9",[[257,"iv-modal",{"newsletterpopuptrigger":[1],"newsletterpopuptimedelay":[2],"modalState":[32],"contentName":[32]},[[4,"openModal","handleOpenModal"]]],[260,"iv-sidebar",{"newsletterpopuptrigger":[1],"newsletterpopuptimedelay":[2],"sidebarState":[32],"contentName":[32]},[[4,"openSidebar","handleopenSidebar"]]],[260,"iv-accordion",{"labels":[1],"allowmultiple":[4],"startopen":[4],"acordionlayout":[1],"contentplacement":[1],"dropdownicon":[1],"openPanels":[32]}],[256,"iv-newsletter",{"formimageurl":[1],"formimageposition":[1],"formimageheight":[1],"formsubmitbtntext":[1],"formsuccessmessage":[1],"formfailuremessage":[1],"formplaceholdertext":[1],"formlabeltext":[1],"formstackbutton":[4],"formtitletag":[1],"formtitletext":[1],"formdescriptiontext":[1],"includeloadingspinner":[4],"newsletterpopupdisclaimer":[1],"classmodifier":[1],"email":[32],"formFeedback":[32],"status":[32]}],[260,"iv-event-button",{"eventname":[1],"eventdetail":[8],"buttontext":[1]}],[256,"iv-wishlist-view"],[257,"ion-icon",{"mode":[1025],"color":[1],"ios":[1],"md":[1],"flipRtl":[4,"flip-rtl"],"name":[513],"src":[1],"icon":[8],"size":[1],"lazy":[4],"sanitize":[4],"svgContent":[32],"isVisible":[32]},null,{"name":["loadIcon"],"src":["loadIcon"],"icon":["loadIcon"],"ios":["loadIcon"],"md":["loadIcon"]}],[256,"iv-spinner",{"show":[4]}],[260,"iv-button",{"type":[1],"classmodifier":[1],"eventname":[1],"eventdetail":[1],"buttonClick":[16]}]]],["iv-card_3",[[256,"iv-card",{"data":[16],"fields":[1],"cardtype":[1],"classmodifier":[1],"buttontext":[1],"calltoaction":[4],"addtocarttext":[1]}],[260,"iv-layout",{"sectionId":[1,"section-id"],"gridTemplateAreas":[1,"grid-template-areas"],"gap":[1],"verticalAlign":[1,"vertical-align"],"horizontalAlign":[1,"horizontal-align"],"wrapperTag":[1,"wrapper-tag"],"classModifier":[1,"class-modifier"]}],[260,"iv-link",{"classmodifier":[1],"linktype":[1],"linkhref":[1],"linktarget":[1],"linkrel":[1],"linkariaLabel":[1,"linkaria-label"]}]]]], options);
20
+ return bootstrapLazy([["iv-dynamic-products",[[256,"iv-dynamic-products",{"type":[1],"limit":[2],"reversed":[4],"componenttitle":[1],"titletag":[1],"collectionhandle":[1],"carousel":[4],"requestedfields":[1],"calltoaction":[4],"buttontext":[1],"addtocarttext":[1],"emptystring":[1],"gridlayout":[1],"cachettl":[2],"stale":[4],"products":[32],"errorMsg":[32],"staleData":[32]},null,{"type":["handlePropChange"],"limit":["handlePropChange"],"collectionhandle":["handlePropChange"],"requestedfields":["handlePropChange"]}]]],["iv-suggest",[[256,"iv-suggest",{"topqueries":[1],"collections":[1],"products":[1],"banner":[1],"bannerurl":[1],"bannertitle":[1],"bannertitletag":[1],"bannerbuttontext":[1],"topquerytitle":[1],"productstitle":[1],"collectionstitle":[1],"gridlayout":[1],"requestfields":[1]}]]],["iv-dynamic-products-carousel",[[256,"iv-dynamic-products-carousel",{"type":[1],"limit":[2],"reversed":[4],"componenttitle":[1],"titletag":[1],"collectionhandle":[1],"requestedfields":[1],"calltoaction":[4],"buttontext":[1],"addtocarttext":[1],"emptystring":[1],"cachettl":[2],"stale":[4],"exclude":[1],"products":[32],"errorMsg":[32],"staleData":[32],"page":[32]},null,{"type":["handlePropChange"],"limit":["handlePropChange"],"collectionhandle":["handlePropChange"],"requestedfields":["handlePropChange"]}]]],["iv-predictive-search",[[256,"iv-predictive-search",{"searchlabel":[1],"labelposition":[1],"action":[1],"placeholder":[1],"minchars":[2],"resultslimit":[2],"showspinner":[4],"noresultstext":[1],"requestedfields":[1],"requestedresources":[1],"showallbuttontext":[1],"querybuttontext":[1],"clearbutton":[1],"expandable":[4],"tablayout":[1],"gridlayout":[1],"searchTerm":[32],"searchReturnData":[32],"noResults":[32]}]]],["iv-recently-viewed",[[256,"iv-recently-viewed",{"componenttitle":[1],"titletag":[1],"numbertoshow":[2],"noviewhistory":[1],"requestedfields":[1],"items":[32]}]]],["iv-link-list",[[256,"iv-link-list",{"linktype":[1],"showicons":[4],"links":[1],"layout":[1]}]]],["iv-shop-the-look",[[260,"iv-shop-the-look",{"behaviour":[1],"coordinates":[1],"producthandles":[1]}]]],["iv-toast-container",[[256,"iv-toast-container",{"_bump":[32]}]]],["iv-wishlist",[[256,"iv-wishlist",{"buttonaddvalue":[1],"buttonremovevalue":[1],"wishlistempty":[1],"buttonaddtocartvalue":[1],"viewwishlistvalue":[1],"productdata":[1],"usefields":[1],"previewtype":[1]}]]],["iv-carousel",[[260,"iv-carousel",{"navarrows":[4],"navdots":[4],"showslidecount":[4],"autoplay":[4],"autoplayspeed":[2],"valign":[1],"halign":[1],"hasoverlay":[4],"currentIndex":[32],"items":[32]}]]],["iv-compare-product",[[256,"iv-compare-product"]]],["iv-filters",[[256,"iv-filters"]]],["iv-footer",[[260,"iv-footer",{"gridtemplateareas":[1],"footerbackground":[1],"blockElements":[32]}]]],["iv-pill",[[256,"iv-pill",{"label":[1],"content":[1],"bordered":[4],"internalspacing":[1],"externalspacing":[1],"roundedcorners":[1]}]]],["iv-product-upsell",[[257,"iv-product-upsell"]]],["iv-two-col-media",[[260,"iv-two-col-media",{"mobilebehaviour":[1],"whichcolumn":[1],"stackorder":[1],"verticalalign":[1],"horizontalalign":[1],"gap":[1],"hasMediaCol1":[32],"hasMediaCol2":[32]}]]],["sw-in-grid-content",[[260,"sw-in-grid-content"]]],["sw-size-guide",[[260,"sw-size-guide",{"sizeUnits":[32]}]]],["iv-banner",[[260,"iv-banner",{"classmodifier":[1],"bannerurl":[1],"bannerbuttontext":[1],"bannertype":[1]}]]],["iv-product-pin",[[256,"iv-product-pin",{"pinProduct":[1,"pin-product"],"pinKey":[2,"pin-key"],"pinCords":[16],"pinBehaviour":[1,"pin-behaviour"]}]]],["iv-tabs",[[260,"iv-tabs",{"labels":[16],"classModifier":[1,"class-modifier"],"tabLayout":[1,"tab-layout"],"activeTab":[32]}]]],["iv-toast",[[256,"iv-toast",{"message":[1],"toastId":[2,"toast-id"],"duration":[2],"type":[1]}]]],["ion-icon_9",[[257,"iv-modal",{"newsletterpopuptrigger":[1],"newsletterpopuptimedelay":[2],"modalState":[32],"contentName":[32]},[[4,"openModal","handleOpenModal"]]],[260,"iv-sidebar",{"newsletterpopuptrigger":[1],"newsletterpopuptimedelay":[2],"sidebarState":[32],"contentName":[32]},[[4,"openSidebar","handleopenSidebar"]]],[260,"iv-accordion",{"labels":[1],"allowmultiple":[4],"startopen":[4],"acordionlayout":[1],"contentplacement":[1],"dropdownicon":[1],"openPanels":[32]}],[256,"iv-newsletter",{"formimageurl":[1],"formimageposition":[1],"formimageheight":[1],"formsubmitbtntext":[1],"formsuccessmessage":[1],"formfailuremessage":[1],"formplaceholdertext":[1],"formlabeltext":[1],"formstackbutton":[4],"formtitletag":[1],"formtitletext":[1],"formdescriptiontext":[1],"includeloadingspinner":[4],"newsletterpopupdisclaimer":[1],"classmodifier":[1],"email":[32],"formFeedback":[32],"status":[32]}],[260,"iv-event-button",{"eventname":[1],"eventdetail":[8],"buttontext":[1]}],[256,"iv-wishlist-view"],[257,"ion-icon",{"mode":[1025],"color":[1],"ios":[1],"md":[1],"flipRtl":[4,"flip-rtl"],"name":[513],"src":[1],"icon":[8],"size":[1],"lazy":[4],"sanitize":[4],"svgContent":[32],"isVisible":[32]},null,{"name":["loadIcon"],"src":["loadIcon"],"icon":["loadIcon"],"ios":["loadIcon"],"md":["loadIcon"]}],[256,"iv-spinner",{"show":[4]}],[260,"iv-button",{"type":[1],"classmodifier":[1],"eventname":[1],"eventdetail":[1],"buttonClick":[16]}]]],["iv-card_3",[[256,"iv-card",{"data":[16],"fields":[1],"cardtype":[1],"classmodifier":[1],"buttontext":[1],"calltoaction":[4],"addtocarttext":[1]}],[260,"iv-layout",{"sectionId":[1,"section-id"],"gridTemplateAreas":[1,"grid-template-areas"],"gap":[1],"verticalAlign":[1,"vertical-align"],"horizontalAlign":[1,"horizontal-align"],"wrapperTag":[1,"wrapper-tag"],"classModifier":[1,"class-modifier"]}],[260,"iv-link",{"classmodifier":[1],"linktype":[1],"linkhref":[1],"linktarget":[1],"linkrel":[1],"linkariaLabel":[1,"linkaria-label"]}]]]], options);
21
21
  });
22
22
  //# sourceMappingURL=intravenous.js.map
@@ -157,7 +157,7 @@ const IvDynamicProductsCarousel = class {
157
157
  emptystring = 'No products found';
158
158
  cachettl;
159
159
  stale = true;
160
- excluse;
160
+ exclude;
161
161
  products = [];
162
162
  errorMsg;
163
163
  staleData = false;
@@ -190,12 +190,12 @@ const IvDynamicProductsCarousel = class {
190
190
  }
191
191
  ;
192
192
  filterAndSliceProducts(data) {
193
- if (!this.excluse)
193
+ if (!this.exclude)
194
194
  return data.slice(0, this.limit);
195
195
  if (!this.requestedfields || !this.requestedfields.includes('productType')) {
196
196
  this.requestedfields = this.ensureProductTypeField(this.requestedfields);
197
197
  }
198
- const filtered = data.filter(p => p.productType !== this.excluse);
198
+ const filtered = data.filter(p => p.productType !== this.exclude);
199
199
  return filtered.slice(0, this.limit);
200
200
  }
201
201
  ;
@@ -1 +1 @@
1
- {"version":3,"file":"iv-dynamic-products-carousel.entry.js","sources":["src/utils/storefront_api/queries.ts","src/utils/storefront_api/normalize.ts","src/utils/storefront_api/methods.ts","src/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.scss?tag=iv-dynamic-products-carousel","src/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.tsx"],"sourcesContent":["export function getIdFromHandleQuery(): string {\r\n return `\r\n query ($handle: String!) {\r\n product(handle: $handle) {\r\n id\r\n }\r\n }`;\r\n};\r\n\r\nexport function 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\nexport function 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\nexport function 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\nexport function 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// Change this to emit an event that the toast component can listen for\r\n// getProductByHandle\r\n// getProducts\r\n// getCollections (with sorting)\r\n// getMetafield\r\n// getMetafields","export interface 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 [key: string]: any;\r\n};\r\n\r\nexport function 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};","import { apiConfig } from './config';\r\nimport { createErrorHandler } from '../../utils/error_handling/factory';\r\nimport { getIdFromHandleQuery, buildProductsQuery, buildSingleProductQuery, buildVariantProductQuery, buildCollectionProductsQuery } from './queries';\r\nimport { normalizeProduct, NormalizedProduct } from './normalize';\r\n\r\nconst BASE_PRODUCT_FIELDS = ['id','handle','title'];\r\nconst DEFAULT_VARIANT_FIELDS = ['id','title','price { amount currencyCode }'];\r\nconst errors = createErrorHandler({ component: 'storefront-api-module-config' });\r\n\r\nexport async function shopifyFetch(query: string, variables: Record<string, any> = {}): Promise<any> { \r\n try {\r\n if(!apiConfig.isConnected()) throw new Error('Shopify config not connected');\r\n const res = await fetch(apiConfig.endpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-Shopify-Storefront-Access-Token': apiConfig.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(err: any) {\r\n errors.handle({\r\n error: err,\r\n scope: 'loadProducts',\r\n userMessage: 'Unable to load products right now.',\r\n devMessage: 'fetchProducts failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n return null;\r\n };\r\n};\r\n\r\nexport async function getIdFromHandle(handle: string): Promise<string | null> {\r\n try {\r\n const query = getIdFromHandleQuery();\r\n const data = await shopifyFetch(query, { handle });\r\n const id = data?.product?.id;\r\n if(!id) throw new Error('No product found for given handle');\r\n return id;\r\n } catch (err: any) {\r\n errors.handle({\r\n error: err,\r\n scope: 'getIdFromHandle',\r\n userMessage: 'Unable to get product ID from handle right now.',\r\n devMessage: 'getIdFromHandle failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n return null;\r\n };\r\n};\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)) seen.add(f); ordered.push(f); \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\nexport async function fetchProducts(\r\n limit: number, \r\n collectionHandle: string, \r\n sortKey: string, \r\n fields: string[] | string, \r\n 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) { \r\n console.error('Fetch Product By ID Error:', error); throw error; \r\n };\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) { \r\n console.error('Get Variant Product Error:', error); throw error; \r\n };\r\n};",":host {\r\n display: block;\r\n}\r\n\r\n.iv-dynamic-products-carousel { \r\n position:relative;\r\n}\r\n\r\n.iv-dynamic-products-carousel-carousel { \r\n position:relative;\r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport { \r\n overflow:hidden; \r\n width:100%;\r\n}\r\n\r\n.iv-dynamic-products-carousel-track { \r\n display:flex; \r\n width:100%; \r\n transition: \r\n transform .55s cubic-bezier(.4,.7,.2,1); \r\n will-change:transform;\r\n}\r\n\r\n.iv-dynamic-products-carousel-slide { \r\n flex:0 0 100%; \r\n box-sizing:border-box; \r\n padding:0.25rem 0.5rem; \r\n display:grid; \r\n grid-template-columns:repeat(6, minmax(0,1fr)); \r\n gap:1rem; \r\n align-items:stretch; \r\n grid-auto-rows:1fr; \r\n}\r\n\r\n@media (max-width: 1200px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(4, minmax(0,1fr)); \r\n } \r\n}\r\n\r\n@media (max-width: 900px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(3, minmax(0,1fr)); \r\n } \r\n}\r\n\r\n@media (max-width: 640px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(2, minmax(0,1fr)); \r\n gap:0.75rem; \r\n } \r\n}\r\n\r\n.iv-dynamic-products-carousel-card { \r\n height:100%; \r\n display:flex; \r\n flex-direction:column; \r\n background:#fff; \r\n padding:0.75rem 0.75rem 0.9rem; \r\n box-shadow:0 2px 6px rgba(0,0,0,.08); \r\n transition:box-shadow .2s ease, transform .2s ease; \r\n}\r\n\r\n/* Alignment fix: reserve consistent height for titles (2 lines) and anchor controls at bottom */\r\n.iv-dynamic-products-carousel-card .iv-card-title {\r\n line-height:1.2;\r\n display:-webkit-box;\r\n -webkit-box-orient:vertical;\r\n -webkit-line-clamp:2;\r\n line-clamp:2;\r\n overflow:hidden;\r\n min-height:calc(2 * 1.2em);\r\n}\r\n\r\n.iv-dynamic-products-carousel-card .iv-card-controls {\r\n margin-top:auto; /* push controls to bottom of flex column for uniform vertical alignment */\r\n}\r\n\r\n.iv-dynamic-products-carousel-card:hover { \r\n box-shadow:0 4px 14px rgba(0,0,0,.15); \r\n transform:translateY(-2px); \r\n}\r\n\r\n.iv-dynamic-products-carousel-card:active { \r\n transform:translateY(0); \r\n box-shadow:0 2px 6px rgba(0,0,0,.12); \r\n}\r\n\r\n.iv-dynamic-products-carousel-card img, \r\n.iv-dynamic-products-carousel-card picture, \r\n.iv-dynamic-products-carousel-card .media { \r\n width:100%; \r\n aspect-ratio:1/1; \r\n object-fit:contain; \r\n display:flex; \r\n align-items:center; \r\n justify-content:center; \r\n margin:0 0 .65rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav { \r\n position:absolute; \r\n top:50%; \r\n transform:translateY(-50%); \r\n background:var(--iv-carousel-nav-bg, rgba(0,0,0,.55)); \r\n color:#fff; \r\n border:none; \r\n width:2.75rem; \r\n height:2.75rem; \r\n border-radius:50%; \r\n display:flex; \r\n align-items:center; \r\n justify-content:center; \r\n cursor:pointer; \r\n backdrop-filter:blur(6px); \r\n box-shadow:0 4px 12px rgba(0,0,0,.25); \r\n transition:background .2s ease, \r\n transform .2s ease; \r\n outline:none;\r\n z-index: 10;\r\n }\r\n\r\n.iv-dynamic-products-carousel-nav:focus-visible { \r\n outline:2px solid #fff; \r\n outline-offset:3px; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav:hover:not(:disabled){\r\n background:var(--iv-carousel-nav-bg-hover, rgba(0,0,0,.75)); \r\n transform:translateY(-50%) scale(1.05); \r\n box-shadow:0 6px 18px rgba(0,0,0,.35);\r\n}\r\n\r\n.iv-dynamic-products-carousel-nav:disabled{ \r\n opacity:.4; cursor:default; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav-prev { \r\n left:0.25rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav-next { \r\n right:0.25rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-status { \r\n margin-top:0.75rem; \r\n font-size:0.875rem; \r\n text-align:center; \r\n color:var(--iv-carousel-status-color, #555); \r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport::-webkit-scrollbar { \r\n display:none; \r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport { \r\n -ms-overflow-style:none; \r\n scrollbar-width:none; \r\n}","// Refactor this to use the iv-carousel component\r\n\r\nimport { Component, h, Prop, State, Watch } from '@stencil/core';\r\nimport { state } from '../../utils/store/store';\r\nimport { fetchProducts } from '../../utils/storefront_api';\r\nimport { productCache } from '../../utils/caching/productCache';\r\nimport { createErrorHandler } from '../../utils/error_handling/factory';\r\n\r\nconst BLOCK = 'iv-dynamic-products-carousel';\r\n\r\n@Component({\r\n tag: 'iv-dynamic-products-carousel',\r\n styleUrl: 'iv-dynamic-products-carousel.scss',\r\n shadow: false\r\n})\r\n\r\nexport class IvDynamicProductsCarousel {\r\n @Prop() type: 'CREATED' | 'CREATED_AT' | 'BEST_SELLING' | 'PRICE' | 'TITLE' | 'RELEVANCE' = 'CREATED_AT'; \r\n @Prop() limit: number = 24;\r\n @Prop() reversed: boolean = false; \r\n @Prop() componenttitle?: string;\r\n @Prop() titletag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' = 'h2';\r\n @Prop() collectionhandle: string = 'all';\r\n @Prop() requestedfields: string;\r\n @Prop() calltoaction: boolean = false;\r\n @Prop() buttontext?: string;\r\n @Prop() addtocarttext?: string;\r\n @Prop() emptystring: string = 'No products found';\r\n @Prop() cachettl?: number; \r\n @Prop() stale?: boolean = true;\r\n @Prop() excluse?: string;\r\n \r\n @State() products: any[] = [];\r\n @State() errorMsg: string; \r\n @State() staleData: boolean = false;\r\n @State() page: number = 0; \r\n\r\n private readonly itemsPerPage = 6;\r\n\r\n private errors = createErrorHandler({ component: 'iv-dynamic-products-carousel' });\r\n\r\n @Watch('type')\r\n @Watch('limit')\r\n @Watch('collectionhandle')\r\n @Watch('requestedfields')\r\n handlePropChange() { this.loadProducts(true); }\r\n\r\n async componentWillLoad() { \r\n await this.loadProducts(false); \r\n };\r\n \r\n private buildParams() {\r\n return {\r\n handle: this.collectionhandle,\r\n sort: this.type,\r\n fields: this.requestedfields,\r\n limit: 36, // Always fetch 36 products for filtering\r\n currency: state.currencyCode,\r\n reversed: this.reversed\r\n };\r\n };\r\n\r\n private ensureProductTypeField(fields: string): string {\r\n if(!fields) return 'productType';\r\n const arr = fields.split(',').map(f => f.trim());\r\n if(!arr.includes('productType')) arr.push('productType');\r\n return arr.join(',');\r\n };\r\n\r\n private filterAndSliceProducts(data: any[]): any[] {\r\n if(!this.excluse) return data.slice(0, this.limit);\r\n if(!this.requestedfields || !this.requestedfields.includes('productType')) {\r\n this.requestedfields = this.ensureProductTypeField(this.requestedfields);\r\n };\r\n const filtered = data.filter(p => p.productType !== this.excluse);\r\n return filtered.slice(0, this.limit);\r\n };\r\n\r\n private async loadProducts(fromWatch: boolean) {\r\n const params = this.buildParams();\r\n const ttl = this.cachettl || 1000 * 60 * 5;\r\n state.loading = !fromWatch;\r\n try {\r\n const data = await productCache.getOrSetData(\r\n params,\r\n async () => {\r\n const fresh = await fetchProducts(\r\n 36, \r\n this.collectionhandle, \r\n this.type, \r\n this.requestedfields, \r\n this.reversed\r\n );\r\n return fresh;\r\n },\r\n {\r\n ttl,\r\n staleWhileRevalidate: this.stale,\r\n transform: (fresh) => fresh \r\n }\r\n );\r\n const metaCheck = productCache.getData<typeof data>(params);\r\n this.staleData = metaCheck.isExpired && metaCheck.isStale;\r\n this.products = Array.isArray(data) ? this.filterAndSliceProducts(data) : [];\r\n this.page = 0;\r\n } catch (err: any) {\r\n this.errorMsg = 'Failed to load products';\r\n this.errors.handle({\r\n error: err,\r\n scope: 'loadProducts',\r\n userMessage: 'Unable to load products right now.',\r\n devMessage: 'fetchProducts failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n } finally {\r\n state.loading = false;\r\n };\r\n };\r\n \r\n private pagedProducts() {\r\n const chunks: any[][] = [];\r\n for(let i=0; i < this.products.length; i += this.itemsPerPage) {\r\n chunks.push(this.products.slice(i, i + this.itemsPerPage));\r\n };\r\n return chunks;\r\n };\r\n\r\n private next = () => { \r\n const pages = this.pagedProducts().length;\r\n if(this.page < pages - 1) this.page++;\r\n };\r\n\r\n private prev = () => { \r\n if(this.page > 0) this.page--;\r\n };\r\n\r\n render() {\r\n\r\n const TAG = this.titletag as any;\r\n\r\n return (\r\n <div class={BLOCK} data-stale={this.staleData ? 'true' : 'false'}>\r\n {this.componenttitle && <TAG class={`${BLOCK}-title`}>{this.componenttitle}</TAG>}\r\n {state.loading ? (\r\n <iv-spinner></iv-spinner>\r\n ) : this.errorMsg ? (\r\n <div class={`${BLOCK}-error`}>{this.errorMsg}</div>\r\n ) : this.products.length === 0 ? (\r\n <div class={`${BLOCK}-empty`}>{this.emptystring}</div>\r\n ) : (\r\n <div class={`${BLOCK}-carousel`} aria-roledescription=\"carousel\">\r\n <button class={`${BLOCK}-nav ${BLOCK}-nav-prev`} onClick={this.prev} disabled={this.page===0} aria-label=\"Previous\" type=\"button\">\r\n ‹\r\n </button>\r\n <div class={`${BLOCK}-viewport`}>\r\n <div class={`${BLOCK}-track`} style={{ transform: `translateX(-${this.page * 100}%)` }}>\r\n {this.pagedProducts().map((group, i) => (\r\n <div class={`${BLOCK}-slide`} role=\"group\" aria-label={`Slide ${i+1} of ${this.pagedProducts().length}`}> \r\n {group.map(product => (\r\n <iv-card\r\n cardtype='products'\r\n calltoaction={this.calltoaction}\r\n buttontext={this.buttontext}\r\n addtocarttext={this.addtocarttext}\r\n data={product}\r\n classmodifier={`${BLOCK}-card`} />\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n <button class={`${BLOCK}-nav ${BLOCK}-nav-next`} onClick={this.next} disabled={this.page===this.pagedProducts().length-1} aria-label=\"Next\" type=\"button\">\r\n ›\r\n </button>\r\n <div class={`${BLOCK}-status`} aria-live=\"polite\">{this.pagedProducts().length > 1 ? `Slide ${this.page+1} of ${this.pagedProducts().length}` : ''}</div>\r\n {this.staleData && (\r\n <div class={`${BLOCK}-stale-indicator`} aria-live=\"polite\">Refreshing…</div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n};"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iv-dynamic-products-carousel.entry.js","sources":["src/utils/storefront_api/queries.ts","src/utils/storefront_api/normalize.ts","src/utils/storefront_api/methods.ts","src/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.scss?tag=iv-dynamic-products-carousel","src/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.tsx"],"sourcesContent":["export function getIdFromHandleQuery(): string {\r\n return `\r\n query ($handle: String!) {\r\n product(handle: $handle) {\r\n id\r\n }\r\n }`;\r\n};\r\n\r\nexport function 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\nexport function 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\nexport function 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\nexport function 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// Change this to emit an event that the toast component can listen for\r\n// getProductByHandle\r\n// getProducts\r\n// getCollections (with sorting)\r\n// getMetafield\r\n// getMetafields","export interface 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 [key: string]: any;\r\n};\r\n\r\nexport function 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};","import { apiConfig } from './config';\r\nimport { createErrorHandler } from '../../utils/error_handling/factory';\r\nimport { getIdFromHandleQuery, buildProductsQuery, buildSingleProductQuery, buildVariantProductQuery, buildCollectionProductsQuery } from './queries';\r\nimport { normalizeProduct, NormalizedProduct } from './normalize';\r\n\r\nconst BASE_PRODUCT_FIELDS = ['id','handle','title'];\r\nconst DEFAULT_VARIANT_FIELDS = ['id','title','price { amount currencyCode }'];\r\nconst errors = createErrorHandler({ component: 'storefront-api-module-config' });\r\n\r\nexport async function shopifyFetch(query: string, variables: Record<string, any> = {}): Promise<any> { \r\n try {\r\n if(!apiConfig.isConnected()) throw new Error('Shopify config not connected');\r\n const res = await fetch(apiConfig.endpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-Shopify-Storefront-Access-Token': apiConfig.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(err: any) {\r\n errors.handle({\r\n error: err,\r\n scope: 'loadProducts',\r\n userMessage: 'Unable to load products right now.',\r\n devMessage: 'fetchProducts failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n return null;\r\n };\r\n};\r\n\r\nexport async function getIdFromHandle(handle: string): Promise<string | null> {\r\n try {\r\n const query = getIdFromHandleQuery();\r\n const data = await shopifyFetch(query, { handle });\r\n const id = data?.product?.id;\r\n if(!id) throw new Error('No product found for given handle');\r\n return id;\r\n } catch (err: any) {\r\n errors.handle({\r\n error: err,\r\n scope: 'getIdFromHandle',\r\n userMessage: 'Unable to get product ID from handle right now.',\r\n devMessage: 'getIdFromHandle failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n return null;\r\n };\r\n};\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)) seen.add(f); ordered.push(f); \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\nexport async function fetchProducts(\r\n limit: number, \r\n collectionHandle: string, \r\n sortKey: string, \r\n fields: string[] | string, \r\n 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) { \r\n console.error('Fetch Product By ID Error:', error); throw error; \r\n };\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) { \r\n console.error('Get Variant Product Error:', error); throw error; \r\n };\r\n};",":host {\r\n display: block;\r\n}\r\n\r\n.iv-dynamic-products-carousel { \r\n position:relative;\r\n}\r\n\r\n.iv-dynamic-products-carousel-carousel { \r\n position:relative;\r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport { \r\n overflow:hidden; \r\n width:100%;\r\n}\r\n\r\n.iv-dynamic-products-carousel-track { \r\n display:flex; \r\n width:100%; \r\n transition: \r\n transform .55s cubic-bezier(.4,.7,.2,1); \r\n will-change:transform;\r\n}\r\n\r\n.iv-dynamic-products-carousel-slide { \r\n flex:0 0 100%; \r\n box-sizing:border-box; \r\n padding:0.25rem 0.5rem; \r\n display:grid; \r\n grid-template-columns:repeat(6, minmax(0,1fr)); \r\n gap:1rem; \r\n align-items:stretch; \r\n grid-auto-rows:1fr; \r\n}\r\n\r\n@media (max-width: 1200px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(4, minmax(0,1fr)); \r\n } \r\n}\r\n\r\n@media (max-width: 900px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(3, minmax(0,1fr)); \r\n } \r\n}\r\n\r\n@media (max-width: 640px) { \r\n .iv-dynamic-products-carousel-slide { \r\n grid-template-columns:repeat(2, minmax(0,1fr)); \r\n gap:0.75rem; \r\n } \r\n}\r\n\r\n.iv-dynamic-products-carousel-card { \r\n height:100%; \r\n display:flex; \r\n flex-direction:column; \r\n background:#fff; \r\n padding:0.75rem 0.75rem 0.9rem; \r\n box-shadow:0 2px 6px rgba(0,0,0,.08); \r\n transition:box-shadow .2s ease, transform .2s ease; \r\n}\r\n\r\n/* Alignment fix: reserve consistent height for titles (2 lines) and anchor controls at bottom */\r\n.iv-dynamic-products-carousel-card .iv-card-title {\r\n line-height:1.2;\r\n display:-webkit-box;\r\n -webkit-box-orient:vertical;\r\n -webkit-line-clamp:2;\r\n line-clamp:2;\r\n overflow:hidden;\r\n min-height:calc(2 * 1.2em);\r\n}\r\n\r\n.iv-dynamic-products-carousel-card .iv-card-controls {\r\n margin-top:auto; /* push controls to bottom of flex column for uniform vertical alignment */\r\n}\r\n\r\n.iv-dynamic-products-carousel-card:hover { \r\n box-shadow:0 4px 14px rgba(0,0,0,.15); \r\n transform:translateY(-2px); \r\n}\r\n\r\n.iv-dynamic-products-carousel-card:active { \r\n transform:translateY(0); \r\n box-shadow:0 2px 6px rgba(0,0,0,.12); \r\n}\r\n\r\n.iv-dynamic-products-carousel-card img, \r\n.iv-dynamic-products-carousel-card picture, \r\n.iv-dynamic-products-carousel-card .media { \r\n width:100%; \r\n aspect-ratio:1/1; \r\n object-fit:contain; \r\n display:flex; \r\n align-items:center; \r\n justify-content:center; \r\n margin:0 0 .65rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav { \r\n position:absolute; \r\n top:50%; \r\n transform:translateY(-50%); \r\n background:var(--iv-carousel-nav-bg, rgba(0,0,0,.55)); \r\n color:#fff; \r\n border:none; \r\n width:2.75rem; \r\n height:2.75rem; \r\n border-radius:50%; \r\n display:flex; \r\n align-items:center; \r\n justify-content:center; \r\n cursor:pointer; \r\n backdrop-filter:blur(6px); \r\n box-shadow:0 4px 12px rgba(0,0,0,.25); \r\n transition:background .2s ease, \r\n transform .2s ease; \r\n outline:none;\r\n z-index: 10;\r\n }\r\n\r\n.iv-dynamic-products-carousel-nav:focus-visible { \r\n outline:2px solid #fff; \r\n outline-offset:3px; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav:hover:not(:disabled){\r\n background:var(--iv-carousel-nav-bg-hover, rgba(0,0,0,.75)); \r\n transform:translateY(-50%) scale(1.05); \r\n box-shadow:0 6px 18px rgba(0,0,0,.35);\r\n}\r\n\r\n.iv-dynamic-products-carousel-nav:disabled{ \r\n opacity:.4; cursor:default; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav-prev { \r\n left:0.25rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-nav-next { \r\n right:0.25rem; \r\n}\r\n\r\n.iv-dynamic-products-carousel-status { \r\n margin-top:0.75rem; \r\n font-size:0.875rem; \r\n text-align:center; \r\n color:var(--iv-carousel-status-color, #555); \r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport::-webkit-scrollbar { \r\n display:none; \r\n}\r\n\r\n.iv-dynamic-products-carousel-viewport { \r\n -ms-overflow-style:none; \r\n scrollbar-width:none; \r\n}","// Refactor this to use the iv-carousel component\r\n\r\nimport { Component, h, Prop, State, Watch } from '@stencil/core';\r\nimport { state } from '../../utils/store/store';\r\nimport { fetchProducts } from '../../utils/storefront_api';\r\nimport { productCache } from '../../utils/caching/productCache';\r\nimport { createErrorHandler } from '../../utils/error_handling/factory';\r\n\r\nconst BLOCK = 'iv-dynamic-products-carousel';\r\n\r\n@Component({\r\n tag: 'iv-dynamic-products-carousel',\r\n styleUrl: 'iv-dynamic-products-carousel.scss',\r\n shadow: false\r\n})\r\n\r\nexport class IvDynamicProductsCarousel {\r\n @Prop() type: 'CREATED' | 'CREATED_AT' | 'BEST_SELLING' | 'PRICE' | 'TITLE' | 'RELEVANCE' = 'CREATED_AT'; \r\n @Prop() limit: number = 24;\r\n @Prop() reversed: boolean = false; \r\n @Prop() componenttitle?: string;\r\n @Prop() titletag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' = 'h2';\r\n @Prop() collectionhandle: string = 'all';\r\n @Prop() requestedfields: string;\r\n @Prop() calltoaction: boolean = false;\r\n @Prop() buttontext?: string;\r\n @Prop() addtocarttext?: string;\r\n @Prop() emptystring: string = 'No products found';\r\n @Prop() cachettl?: number; \r\n @Prop() stale?: boolean = true;\r\n @Prop() exclude?: string;\r\n \r\n @State() products: any[] = [];\r\n @State() errorMsg: string; \r\n @State() staleData: boolean = false;\r\n @State() page: number = 0; \r\n\r\n private readonly itemsPerPage = 6;\r\n\r\n private errors = createErrorHandler({ component: 'iv-dynamic-products-carousel' });\r\n\r\n @Watch('type')\r\n @Watch('limit')\r\n @Watch('collectionhandle')\r\n @Watch('requestedfields')\r\n handlePropChange() { this.loadProducts(true); }\r\n\r\n async componentWillLoad() { \r\n await this.loadProducts(false); \r\n };\r\n \r\n private buildParams() {\r\n return {\r\n handle: this.collectionhandle,\r\n sort: this.type,\r\n fields: this.requestedfields,\r\n limit: 36, // Always fetch 36 products for filtering\r\n currency: state.currencyCode,\r\n reversed: this.reversed\r\n };\r\n };\r\n\r\n private ensureProductTypeField(fields: string): string {\r\n if(!fields) return 'productType';\r\n const arr = fields.split(',').map(f => f.trim());\r\n if(!arr.includes('productType')) arr.push('productType');\r\n return arr.join(',');\r\n };\r\n\r\n private filterAndSliceProducts(data: any[]): any[] {\r\n if(!this.exclude) return data.slice(0, this.limit);\r\n if(!this.requestedfields || !this.requestedfields.includes('productType')) {\r\n this.requestedfields = this.ensureProductTypeField(this.requestedfields);\r\n };\r\n const filtered = data.filter(p => p.productType !== this.exclude);\r\n return filtered.slice(0, this.limit);\r\n };\r\n\r\n private async loadProducts(fromWatch: boolean) {\r\n const params = this.buildParams();\r\n const ttl = this.cachettl || 1000 * 60 * 5;\r\n state.loading = !fromWatch;\r\n try {\r\n const data = await productCache.getOrSetData(\r\n params,\r\n async () => {\r\n const fresh = await fetchProducts(\r\n 36, \r\n this.collectionhandle, \r\n this.type, \r\n this.requestedfields, \r\n this.reversed\r\n );\r\n return fresh;\r\n },\r\n {\r\n ttl,\r\n staleWhileRevalidate: this.stale,\r\n transform: (fresh) => fresh \r\n }\r\n );\r\n const metaCheck = productCache.getData<typeof data>(params);\r\n this.staleData = metaCheck.isExpired && metaCheck.isStale;\r\n this.products = Array.isArray(data) ? this.filterAndSliceProducts(data) : [];\r\n this.page = 0;\r\n } catch (err: any) {\r\n this.errorMsg = 'Failed to load products';\r\n this.errors.handle({\r\n error: err,\r\n scope: 'loadProducts',\r\n userMessage: 'Unable to load products right now.',\r\n devMessage: 'fetchProducts failed in iv-dynamic-products',\r\n severity: 'error'\r\n });\r\n } finally {\r\n state.loading = false;\r\n };\r\n };\r\n \r\n private pagedProducts() {\r\n const chunks: any[][] = [];\r\n for(let i=0; i < this.products.length; i += this.itemsPerPage) {\r\n chunks.push(this.products.slice(i, i + this.itemsPerPage));\r\n };\r\n return chunks;\r\n };\r\n\r\n private next = () => { \r\n const pages = this.pagedProducts().length;\r\n if(this.page < pages - 1) this.page++;\r\n };\r\n\r\n private prev = () => { \r\n if(this.page > 0) this.page--;\r\n };\r\n\r\n render() {\r\n\r\n const TAG = this.titletag as any;\r\n\r\n return (\r\n <div class={BLOCK} data-stale={this.staleData ? 'true' : 'false'}>\r\n {this.componenttitle && <TAG class={`${BLOCK}-title`}>{this.componenttitle}</TAG>}\r\n {state.loading ? (\r\n <iv-spinner></iv-spinner>\r\n ) : this.errorMsg ? (\r\n <div class={`${BLOCK}-error`}>{this.errorMsg}</div>\r\n ) : this.products.length === 0 ? (\r\n <div class={`${BLOCK}-empty`}>{this.emptystring}</div>\r\n ) : (\r\n <div class={`${BLOCK}-carousel`} aria-roledescription=\"carousel\">\r\n <button class={`${BLOCK}-nav ${BLOCK}-nav-prev`} onClick={this.prev} disabled={this.page===0} aria-label=\"Previous\" type=\"button\">\r\n ‹\r\n </button>\r\n <div class={`${BLOCK}-viewport`}>\r\n <div class={`${BLOCK}-track`} style={{ transform: `translateX(-${this.page * 100}%)` }}>\r\n {this.pagedProducts().map((group, i) => (\r\n <div class={`${BLOCK}-slide`} role=\"group\" aria-label={`Slide ${i+1} of ${this.pagedProducts().length}`}> \r\n {group.map(product => (\r\n <iv-card\r\n cardtype='products'\r\n calltoaction={this.calltoaction}\r\n buttontext={this.buttontext}\r\n addtocarttext={this.addtocarttext}\r\n data={product}\r\n classmodifier={`${BLOCK}-card`} />\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n <button class={`${BLOCK}-nav ${BLOCK}-nav-next`} onClick={this.next} disabled={this.page===this.pagedProducts().length-1} aria-label=\"Next\" type=\"button\">\r\n ›\r\n </button>\r\n <div class={`${BLOCK}-status`} aria-live=\"polite\">{this.pagedProducts().length > 1 ? `Slide ${this.page+1} of ${this.pagedProducts().length}` : ''}</div>\r\n {this.staleData && (\r\n <div class={`${BLOCK}-stale-indicator`} aria-live=\"polite\">Refreshing…</div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n};"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, h } from './index-BMwNLWv6.js';
2
2
 
3
- const ivPillCss = ".iv-pill{background:var(--iv-pill-bgcolor, transparent)}.iv-pill.bordered{border-color:var(--iv-pill-bordercolor, black);border-width:1px;border-style:solid}.iv-pill.internal-none{padding:0}.iv-pill.internal-small{padding:0.25rem 0.5rem}.iv-pill.internal-medium{padding:0.5rem 1rem}.iv-pill.internal-large{padding:0.75rem 1.5rem}.iv-pill.external-none{margin:0}.iv-pill.external-small{margin:0.5rem}.iv-pill.external-medium{margin:0.75rem}.iv-pill.external-large{margin:1rem}.iv-pill.corners-none{border-radius:0}.iv-pill.corners-small{border-radius:0.5rem}.iv-pill.corners-medium{border-radius:1rem}.iv-pill.corners-large{border-radius:2rem}.iv-pill-content{color:var(--iv-pill-textcolor, black)}.iv-pill-label{font-weight:bold;margin-right:0.5rem}";
3
+ const ivPillCss = ".iv-pill{background:var(--iv-pill-bgcolor, transparent);width:fit-content;display:inline-block}.iv-pill.bordered{border-color:var(--iv-pill-bordercolor, black);border-width:1px;border-style:solid}.iv-pill.internal-none{padding:0}.iv-pill.internal-small{padding:0.25rem 0.5rem}.iv-pill.internal-medium{padding:0.5rem 1rem}.iv-pill.internal-large{padding:0.75rem 1.5rem}.iv-pill.external-none{margin:0}.iv-pill.external-small{margin:0.5rem}.iv-pill.external-medium{margin:0.75rem}.iv-pill.external-large{margin:1rem}.iv-pill.corners-none{border-radius:0}.iv-pill.corners-small{border-radius:0.5rem}.iv-pill.corners-medium{border-radius:1rem}.iv-pill.corners-large{border-radius:2rem}.iv-pill-content{color:var(--iv-pill-textcolor, black)}.iv-pill-label{font-weight:bold;margin-right:0.5rem}";
4
4
 
5
5
  const BLOCK = 'iv-pill';
6
6
  const IvPill = class {
@@ -14,11 +14,12 @@ const IvPill = class {
14
14
  externalspacing = 'none';
15
15
  roundedcorners = 'medium';
16
16
  render() {
17
- return (h("div", { key: '0315732a272ed0d12a32e42026b5e9c378c209a9', class: BLOCK + this.bordered && ' bordered'
17
+ return (h("div", { key: '0babc05c3604fd666838d6bea498781d569a4f6f', class: BLOCK
18
+ + (this.bordered ? ' bordered' : '')
18
19
  + ` internal-${this.internalspacing}`
19
20
  + ` external-${this.externalspacing}`
20
- + ` corners-${this.roundedcorners}` }, h("p", { key: '4de900ef1b2640a0be029491b263c0e1aa3347f5', class: `${BLOCK}-content` }, this.label &&
21
- h("span", { key: 'd63db09e06be920d963f95400713c1ad9cb96032', class: `${BLOCK}-label` }, this.label), this.content)));
21
+ + ` corners-${this.roundedcorners}` }, h("p", { key: '51816bcac1a1f30311b93eb0eddc5d7f6f5d6952', class: `${BLOCK}-content` }, this.label &&
22
+ h("span", { key: 'ef3aa3d8a44e23e469560501d71fc4b1409796f5', class: `${BLOCK}-label` }, this.label), this.content)));
22
23
  }
23
24
  ;
24
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"iv-pill.entry.js","sources":["src/components/iv-pill/iv-pill.scss?tag=iv-pill","src/components/iv-pill/iv-pill.tsx"],"sourcesContent":[".iv-pill {\n background: var(--iv-pill-bgcolor, transparent);\n\n &.bordered {\n border-color: var(--iv-pill-bordercolor, black);\n border-width: 1px;\n border-style: solid;\n }\n\n &.internal-none {\n padding: 0;\n }\n\n &.internal-small {\n padding: 0.25rem 0.5rem;\n }\n\n &.internal-medium {\n padding: 0.5rem 1rem;\n }\n\n &.internal-large {\n padding: 0.75rem 1.5rem;\n }\n\n &.external-none {\n margin: 0;\n }\n\n &.external-small {\n margin: .5rem;\n }\n\n &.external-medium {\n margin: .75rem;\n }\n\n &.external-large {\n margin: 1rem;\n }\n\n &.corners-none {\n border-radius: 0;\n }\n\n &.corners-small {\n border-radius: 0.5rem;\n }\n\n &.corners-medium {\n border-radius: 1rem;\n }\n\n &.corners-large {\n border-radius: 2rem;\n }\n\n &-content {\n color: var(--iv-pill-textcolor, black);\n }\n\n &-label {\n font-weight: bold;\n margin-right: 0.5rem;\n }\n\n}","import { Component, h, Prop } from '@stencil/core';\n\nconst BLOCK = 'iv-pill';\n\n@Component({\n tag: 'iv-pill',\n styleUrl: 'iv-pill.scss',\n shadow: false\n})\n\nexport class IvPill {\n\n @Prop() label?: string;\n @Prop() content: string;\n @Prop() bordered: boolean = true;\n @Prop() internalspacing: 'small' | 'medium' | 'large' = 'medium';\n @Prop() externalspacing: 'none' | 'small' | 'medium' | 'large' = 'none';\n @Prop() roundedcorners: 'none' | 'small' | 'medium' | 'large' = 'medium';\n\n render() {\n\n return (\n <div class={\n BLOCK + this.bordered && ' bordered'\n + ` internal-${this.internalspacing}`\n + ` external-${this.externalspacing}`\n + ` corners-${this.roundedcorners}`\n }>\n <p class={`${BLOCK}-content`}>\n {this.label && \n <span class={`${BLOCK}-label`}>{this.label}</span>\n }\n {this.content}\n </p>\n </div>\n );\n\n };\n\n};"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG,+uBAA+uB;;ACEjwB,MAAM,KAAK,GAAG,SAAS;MAQV,MAAM,GAAA,MAAA;;;;AAET,IAAA,KAAK;AACL,IAAA,OAAO;IACP,QAAQ,GAAY,IAAI;IACxB,eAAe,GAAiC,QAAQ;IACxD,eAAe,GAA0C,MAAM;IAC/D,cAAc,GAA0C,QAAQ;IAExE,MAAM,GAAA;AAEJ,QAAA,QACE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EACR,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI;kBACvB,CAAa,UAAA,EAAA,IAAI,CAAC,eAAe,CAAE;kBACnC,CAAa,UAAA,EAAA,IAAI,CAAC,eAAe,CAAE;kBACnC,CAAY,SAAA,EAAA,IAAI,CAAC,cAAc,CAAE,CAAA,EAAA,EAEnC,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAG,KAAK,EAAE,CAAG,EAAA,KAAK,UAAU,EAAA,EACzB,IAAI,CAAC,KAAK;YACT,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,MAAA,CAAQ,EAAG,EAAA,IAAI,CAAC,KAAK,CAAQ,EAEnD,IAAI,CAAC,OAAO,CACX,CACA;;;;;;;;"}
1
+ {"version":3,"file":"iv-pill.entry.js","sources":["src/components/iv-pill/iv-pill.scss?tag=iv-pill","src/components/iv-pill/iv-pill.tsx"],"sourcesContent":[".iv-pill {\n background: var(--iv-pill-bgcolor, transparent);\n width: fit-content;\n display: inline-block;\n\n &.bordered {\n border-color: var(--iv-pill-bordercolor, black);\n border-width: 1px;\n border-style: solid;\n }\n\n &.internal-none {\n padding: 0;\n }\n\n &.internal-small {\n padding: 0.25rem 0.5rem;\n }\n\n &.internal-medium {\n padding: 0.5rem 1rem;\n }\n\n &.internal-large {\n padding: 0.75rem 1.5rem;\n }\n\n &.external-none {\n margin: 0;\n }\n\n &.external-small {\n margin: .5rem;\n }\n\n &.external-medium {\n margin: .75rem;\n }\n\n &.external-large {\n margin: 1rem;\n }\n\n &.corners-none {\n border-radius: 0;\n }\n\n &.corners-small {\n border-radius: 0.5rem;\n }\n\n &.corners-medium {\n border-radius: 1rem;\n }\n\n &.corners-large {\n border-radius: 2rem;\n }\n\n &-content {\n color: var(--iv-pill-textcolor, black);\n }\n\n &-label {\n font-weight: bold;\n margin-right: 0.5rem;\n }\n\n}","import { Component, h, Prop } from '@stencil/core';\n\nconst BLOCK = 'iv-pill';\n\n@Component({\n tag: 'iv-pill',\n styleUrl: 'iv-pill.scss',\n shadow: false\n})\n\nexport class IvPill {\n\n @Prop() label?: string;\n @Prop() content: string;\n @Prop() bordered: boolean = true;\n @Prop() internalspacing: 'small' | 'medium' | 'large' = 'medium';\n @Prop() externalspacing: 'none' | 'small' | 'medium' | 'large' = 'none';\n @Prop() roundedcorners: 'none' | 'small' | 'medium' | 'large' = 'medium';\n\n render() {\n\n return (\n <div class={\n BLOCK \n + (this.bordered ? ' bordered' : '')\n + ` internal-${this.internalspacing}`\n + ` external-${this.externalspacing}`\n + ` corners-${this.roundedcorners}`\n }>\n <p class={`${BLOCK}-content`}>\n {this.label && \n <span class={`${BLOCK}-label`}>{this.label}</span>\n }\n {this.content}\n </p>\n </div>\n );\n\n };\n\n};"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG,sxBAAsxB;;ACExyB,MAAM,KAAK,GAAG,SAAS;MAQV,MAAM,GAAA,MAAA;;;;AAET,IAAA,KAAK;AACL,IAAA,OAAO;IACP,QAAQ,GAAY,IAAI;IACxB,eAAe,GAAiC,QAAQ;IACxD,eAAe,GAA0C,MAAM;IAC/D,cAAc,GAA0C,QAAQ;IAExE,MAAM,GAAA;AAEJ,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EACR;mBACG,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,EAAE;kBACjC,CAAa,UAAA,EAAA,IAAI,CAAC,eAAe,CAAE;kBACnC,CAAa,UAAA,EAAA,IAAI,CAAC,eAAe,CAAE;kBACnC,CAAY,SAAA,EAAA,IAAI,CAAC,cAAc,CAAE,CAAA,EAAA,EAEnC,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAG,KAAK,EAAE,CAAG,EAAA,KAAK,UAAU,EAAA,EACzB,IAAI,CAAC,KAAK;YACT,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,MAAA,CAAQ,EAAG,EAAA,IAAI,CAAC,KAAK,CAAQ,EAEnD,IAAI,CAAC,OAAO,CACX,CACA;;;;;;;;"}
@@ -5,7 +5,7 @@ import { g as globalScripts } from './app-globals-vUQfdhxo.js';
5
5
  const defineCustomElements = async (win, options) => {
6
6
  if (typeof window === 'undefined') return undefined;
7
7
  await globalScripts();
8
- return bootstrapLazy([["iv-dynamic-products",[[256,"iv-dynamic-products",{"type":[1],"limit":[2],"reversed":[4],"componenttitle":[1],"titletag":[1],"collectionhandle":[1],"carousel":[4],"requestedfields":[1],"calltoaction":[4],"buttontext":[1],"addtocarttext":[1],"emptystring":[1],"gridlayout":[1],"cachettl":[2],"stale":[4],"products":[32],"errorMsg":[32],"staleData":[32]},null,{"type":["handlePropChange"],"limit":["handlePropChange"],"collectionhandle":["handlePropChange"],"requestedfields":["handlePropChange"]}]]],["iv-suggest",[[256,"iv-suggest",{"topqueries":[1],"collections":[1],"products":[1],"banner":[1],"bannerurl":[1],"bannertitle":[1],"bannertitletag":[1],"bannerbuttontext":[1],"topquerytitle":[1],"productstitle":[1],"collectionstitle":[1],"gridlayout":[1],"requestfields":[1]}]]],["iv-dynamic-products-carousel",[[256,"iv-dynamic-products-carousel",{"type":[1],"limit":[2],"reversed":[4],"componenttitle":[1],"titletag":[1],"collectionhandle":[1],"requestedfields":[1],"calltoaction":[4],"buttontext":[1],"addtocarttext":[1],"emptystring":[1],"cachettl":[2],"stale":[4],"excluse":[1],"products":[32],"errorMsg":[32],"staleData":[32],"page":[32]},null,{"type":["handlePropChange"],"limit":["handlePropChange"],"collectionhandle":["handlePropChange"],"requestedfields":["handlePropChange"]}]]],["iv-predictive-search",[[256,"iv-predictive-search",{"searchlabel":[1],"labelposition":[1],"action":[1],"placeholder":[1],"minchars":[2],"resultslimit":[2],"showspinner":[4],"noresultstext":[1],"requestedfields":[1],"requestedresources":[1],"showallbuttontext":[1],"querybuttontext":[1],"clearbutton":[1],"expandable":[4],"tablayout":[1],"gridlayout":[1],"searchTerm":[32],"searchReturnData":[32],"noResults":[32]}]]],["iv-recently-viewed",[[256,"iv-recently-viewed",{"componenttitle":[1],"titletag":[1],"numbertoshow":[2],"noviewhistory":[1],"requestedfields":[1],"items":[32]}]]],["iv-link-list",[[256,"iv-link-list",{"linktype":[1],"showicons":[4],"links":[1],"layout":[1]}]]],["iv-shop-the-look",[[260,"iv-shop-the-look",{"behaviour":[1],"coordinates":[1],"producthandles":[1]}]]],["iv-toast-container",[[256,"iv-toast-container",{"_bump":[32]}]]],["iv-wishlist",[[256,"iv-wishlist",{"buttonaddvalue":[1],"buttonremovevalue":[1],"wishlistempty":[1],"buttonaddtocartvalue":[1],"viewwishlistvalue":[1],"productdata":[1],"usefields":[1],"previewtype":[1]}]]],["iv-carousel",[[260,"iv-carousel",{"navarrows":[4],"navdots":[4],"showslidecount":[4],"autoplay":[4],"autoplayspeed":[2],"valign":[1],"halign":[1],"hasoverlay":[4],"currentIndex":[32],"items":[32]}]]],["iv-compare-product",[[256,"iv-compare-product"]]],["iv-filters",[[256,"iv-filters"]]],["iv-footer",[[260,"iv-footer",{"gridtemplateareas":[1],"footerbackground":[1],"blockElements":[32]}]]],["iv-pill",[[256,"iv-pill",{"label":[1],"content":[1],"bordered":[4],"internalspacing":[1],"externalspacing":[1],"roundedcorners":[1]}]]],["iv-product-upsell",[[257,"iv-product-upsell"]]],["iv-two-col-media",[[260,"iv-two-col-media",{"mobilebehaviour":[1],"whichcolumn":[1],"stackorder":[1],"verticalalign":[1],"horizontalalign":[1],"gap":[1],"hasMediaCol1":[32],"hasMediaCol2":[32]}]]],["sw-in-grid-content",[[260,"sw-in-grid-content"]]],["sw-size-guide",[[260,"sw-size-guide",{"sizeUnits":[32]}]]],["iv-banner",[[260,"iv-banner",{"classmodifier":[1],"bannerurl":[1],"bannerbuttontext":[1],"bannertype":[1]}]]],["iv-product-pin",[[256,"iv-product-pin",{"pinProduct":[1,"pin-product"],"pinKey":[2,"pin-key"],"pinCords":[16],"pinBehaviour":[1,"pin-behaviour"]}]]],["iv-tabs",[[260,"iv-tabs",{"labels":[16],"classModifier":[1,"class-modifier"],"tabLayout":[1,"tab-layout"],"activeTab":[32]}]]],["iv-toast",[[256,"iv-toast",{"message":[1],"toastId":[2,"toast-id"],"duration":[2],"type":[1]}]]],["ion-icon_9",[[257,"iv-modal",{"newsletterpopuptrigger":[1],"newsletterpopuptimedelay":[2],"modalState":[32],"contentName":[32]},[[4,"openModal","handleOpenModal"]]],[260,"iv-sidebar",{"newsletterpopuptrigger":[1],"newsletterpopuptimedelay":[2],"sidebarState":[32],"contentName":[32]},[[4,"openSidebar","handleopenSidebar"]]],[260,"iv-accordion",{"labels":[1],"allowmultiple":[4],"startopen":[4],"acordionlayout":[1],"contentplacement":[1],"dropdownicon":[1],"openPanels":[32]}],[256,"iv-newsletter",{"formimageurl":[1],"formimageposition":[1],"formimageheight":[1],"formsubmitbtntext":[1],"formsuccessmessage":[1],"formfailuremessage":[1],"formplaceholdertext":[1],"formlabeltext":[1],"formstackbutton":[4],"formtitletag":[1],"formtitletext":[1],"formdescriptiontext":[1],"includeloadingspinner":[4],"newsletterpopupdisclaimer":[1],"classmodifier":[1],"email":[32],"formFeedback":[32],"status":[32]}],[260,"iv-event-button",{"eventname":[1],"eventdetail":[8],"buttontext":[1]}],[256,"iv-wishlist-view"],[257,"ion-icon",{"mode":[1025],"color":[1],"ios":[1],"md":[1],"flipRtl":[4,"flip-rtl"],"name":[513],"src":[1],"icon":[8],"size":[1],"lazy":[4],"sanitize":[4],"svgContent":[32],"isVisible":[32]},null,{"name":["loadIcon"],"src":["loadIcon"],"icon":["loadIcon"],"ios":["loadIcon"],"md":["loadIcon"]}],[256,"iv-spinner",{"show":[4]}],[260,"iv-button",{"type":[1],"classmodifier":[1],"eventname":[1],"eventdetail":[1],"buttonClick":[16]}]]],["iv-card_3",[[256,"iv-card",{"data":[16],"fields":[1],"cardtype":[1],"classmodifier":[1],"buttontext":[1],"calltoaction":[4],"addtocarttext":[1]}],[260,"iv-layout",{"sectionId":[1,"section-id"],"gridTemplateAreas":[1,"grid-template-areas"],"gap":[1],"verticalAlign":[1,"vertical-align"],"horizontalAlign":[1,"horizontal-align"],"wrapperTag":[1,"wrapper-tag"],"classModifier":[1,"class-modifier"]}],[260,"iv-link",{"classmodifier":[1],"linktype":[1],"linkhref":[1],"linktarget":[1],"linkrel":[1],"linkariaLabel":[1,"linkaria-label"]}]]]], options);
8
+ return bootstrapLazy([["iv-dynamic-products",[[256,"iv-dynamic-products",{"type":[1],"limit":[2],"reversed":[4],"componenttitle":[1],"titletag":[1],"collectionhandle":[1],"carousel":[4],"requestedfields":[1],"calltoaction":[4],"buttontext":[1],"addtocarttext":[1],"emptystring":[1],"gridlayout":[1],"cachettl":[2],"stale":[4],"products":[32],"errorMsg":[32],"staleData":[32]},null,{"type":["handlePropChange"],"limit":["handlePropChange"],"collectionhandle":["handlePropChange"],"requestedfields":["handlePropChange"]}]]],["iv-suggest",[[256,"iv-suggest",{"topqueries":[1],"collections":[1],"products":[1],"banner":[1],"bannerurl":[1],"bannertitle":[1],"bannertitletag":[1],"bannerbuttontext":[1],"topquerytitle":[1],"productstitle":[1],"collectionstitle":[1],"gridlayout":[1],"requestfields":[1]}]]],["iv-dynamic-products-carousel",[[256,"iv-dynamic-products-carousel",{"type":[1],"limit":[2],"reversed":[4],"componenttitle":[1],"titletag":[1],"collectionhandle":[1],"requestedfields":[1],"calltoaction":[4],"buttontext":[1],"addtocarttext":[1],"emptystring":[1],"cachettl":[2],"stale":[4],"exclude":[1],"products":[32],"errorMsg":[32],"staleData":[32],"page":[32]},null,{"type":["handlePropChange"],"limit":["handlePropChange"],"collectionhandle":["handlePropChange"],"requestedfields":["handlePropChange"]}]]],["iv-predictive-search",[[256,"iv-predictive-search",{"searchlabel":[1],"labelposition":[1],"action":[1],"placeholder":[1],"minchars":[2],"resultslimit":[2],"showspinner":[4],"noresultstext":[1],"requestedfields":[1],"requestedresources":[1],"showallbuttontext":[1],"querybuttontext":[1],"clearbutton":[1],"expandable":[4],"tablayout":[1],"gridlayout":[1],"searchTerm":[32],"searchReturnData":[32],"noResults":[32]}]]],["iv-recently-viewed",[[256,"iv-recently-viewed",{"componenttitle":[1],"titletag":[1],"numbertoshow":[2],"noviewhistory":[1],"requestedfields":[1],"items":[32]}]]],["iv-link-list",[[256,"iv-link-list",{"linktype":[1],"showicons":[4],"links":[1],"layout":[1]}]]],["iv-shop-the-look",[[260,"iv-shop-the-look",{"behaviour":[1],"coordinates":[1],"producthandles":[1]}]]],["iv-toast-container",[[256,"iv-toast-container",{"_bump":[32]}]]],["iv-wishlist",[[256,"iv-wishlist",{"buttonaddvalue":[1],"buttonremovevalue":[1],"wishlistempty":[1],"buttonaddtocartvalue":[1],"viewwishlistvalue":[1],"productdata":[1],"usefields":[1],"previewtype":[1]}]]],["iv-carousel",[[260,"iv-carousel",{"navarrows":[4],"navdots":[4],"showslidecount":[4],"autoplay":[4],"autoplayspeed":[2],"valign":[1],"halign":[1],"hasoverlay":[4],"currentIndex":[32],"items":[32]}]]],["iv-compare-product",[[256,"iv-compare-product"]]],["iv-filters",[[256,"iv-filters"]]],["iv-footer",[[260,"iv-footer",{"gridtemplateareas":[1],"footerbackground":[1],"blockElements":[32]}]]],["iv-pill",[[256,"iv-pill",{"label":[1],"content":[1],"bordered":[4],"internalspacing":[1],"externalspacing":[1],"roundedcorners":[1]}]]],["iv-product-upsell",[[257,"iv-product-upsell"]]],["iv-two-col-media",[[260,"iv-two-col-media",{"mobilebehaviour":[1],"whichcolumn":[1],"stackorder":[1],"verticalalign":[1],"horizontalalign":[1],"gap":[1],"hasMediaCol1":[32],"hasMediaCol2":[32]}]]],["sw-in-grid-content",[[260,"sw-in-grid-content"]]],["sw-size-guide",[[260,"sw-size-guide",{"sizeUnits":[32]}]]],["iv-banner",[[260,"iv-banner",{"classmodifier":[1],"bannerurl":[1],"bannerbuttontext":[1],"bannertype":[1]}]]],["iv-product-pin",[[256,"iv-product-pin",{"pinProduct":[1,"pin-product"],"pinKey":[2,"pin-key"],"pinCords":[16],"pinBehaviour":[1,"pin-behaviour"]}]]],["iv-tabs",[[260,"iv-tabs",{"labels":[16],"classModifier":[1,"class-modifier"],"tabLayout":[1,"tab-layout"],"activeTab":[32]}]]],["iv-toast",[[256,"iv-toast",{"message":[1],"toastId":[2,"toast-id"],"duration":[2],"type":[1]}]]],["ion-icon_9",[[257,"iv-modal",{"newsletterpopuptrigger":[1],"newsletterpopuptimedelay":[2],"modalState":[32],"contentName":[32]},[[4,"openModal","handleOpenModal"]]],[260,"iv-sidebar",{"newsletterpopuptrigger":[1],"newsletterpopuptimedelay":[2],"sidebarState":[32],"contentName":[32]},[[4,"openSidebar","handleopenSidebar"]]],[260,"iv-accordion",{"labels":[1],"allowmultiple":[4],"startopen":[4],"acordionlayout":[1],"contentplacement":[1],"dropdownicon":[1],"openPanels":[32]}],[256,"iv-newsletter",{"formimageurl":[1],"formimageposition":[1],"formimageheight":[1],"formsubmitbtntext":[1],"formsuccessmessage":[1],"formfailuremessage":[1],"formplaceholdertext":[1],"formlabeltext":[1],"formstackbutton":[4],"formtitletag":[1],"formtitletext":[1],"formdescriptiontext":[1],"includeloadingspinner":[4],"newsletterpopupdisclaimer":[1],"classmodifier":[1],"email":[32],"formFeedback":[32],"status":[32]}],[260,"iv-event-button",{"eventname":[1],"eventdetail":[8],"buttontext":[1]}],[256,"iv-wishlist-view"],[257,"ion-icon",{"mode":[1025],"color":[1],"ios":[1],"md":[1],"flipRtl":[4,"flip-rtl"],"name":[513],"src":[1],"icon":[8],"size":[1],"lazy":[4],"sanitize":[4],"svgContent":[32],"isVisible":[32]},null,{"name":["loadIcon"],"src":["loadIcon"],"icon":["loadIcon"],"ios":["loadIcon"],"md":["loadIcon"]}],[256,"iv-spinner",{"show":[4]}],[260,"iv-button",{"type":[1],"classmodifier":[1],"eventname":[1],"eventdetail":[1],"buttonClick":[16]}]]],["iv-card_3",[[256,"iv-card",{"data":[16],"fields":[1],"cardtype":[1],"classmodifier":[1],"buttontext":[1],"calltoaction":[4],"addtocarttext":[1]}],[260,"iv-layout",{"sectionId":[1,"section-id"],"gridTemplateAreas":[1,"grid-template-areas"],"gap":[1],"verticalAlign":[1,"vertical-align"],"horizontalAlign":[1,"horizontal-align"],"wrapperTag":[1,"wrapper-tag"],"classModifier":[1,"class-modifier"]}],[260,"iv-link",{"classmodifier":[1],"linktype":[1],"linkhref":[1],"linktarget":[1],"linkrel":[1],"linkariaLabel":[1,"linkaria-label"]}]]]], options);
9
9
  };
10
10
 
11
11
  export { defineCustomElements };
@@ -1,2 +1,2 @@
1
- import{p as e,b as t}from"./p-BMwNLWv6.js";export{s as setNonce}from"./p-BMwNLWv6.js";import{g as a}from"./p-DFXVdw7Z.js";var i=()=>{const t=import.meta.url;const a={};if(t!==""){a.resourcesUrl=new URL(".",t).href}return e(a)};i().then((async e=>{await a();return t([["p-f7e5d857",[[256,"iv-dynamic-products",{type:[1],limit:[2],reversed:[4],componenttitle:[1],titletag:[1],collectionhandle:[1],carousel:[4],requestedfields:[1],calltoaction:[4],buttontext:[1],addtocarttext:[1],emptystring:[1],gridlayout:[1],cachettl:[2],stale:[4],products:[32],errorMsg:[32],staleData:[32]},null,{type:["handlePropChange"],limit:["handlePropChange"],collectionhandle:["handlePropChange"],requestedfields:["handlePropChange"]}]]],["p-485e0d4a",[[256,"iv-suggest",{topqueries:[1],collections:[1],products:[1],banner:[1],bannerurl:[1],bannertitle:[1],bannertitletag:[1],bannerbuttontext:[1],topquerytitle:[1],productstitle:[1],collectionstitle:[1],gridlayout:[1],requestfields:[1]}]]],["p-a5620fb5",[[256,"iv-dynamic-products-carousel",{type:[1],limit:[2],reversed:[4],componenttitle:[1],titletag:[1],collectionhandle:[1],requestedfields:[1],calltoaction:[4],buttontext:[1],addtocarttext:[1],emptystring:[1],cachettl:[2],stale:[4],excluse:[1],products:[32],errorMsg:[32],staleData:[32],page:[32]},null,{type:["handlePropChange"],limit:["handlePropChange"],collectionhandle:["handlePropChange"],requestedfields:["handlePropChange"]}]]],["p-3b1af693",[[256,"iv-predictive-search",{searchlabel:[1],labelposition:[1],action:[1],placeholder:[1],minchars:[2],resultslimit:[2],showspinner:[4],noresultstext:[1],requestedfields:[1],requestedresources:[1],showallbuttontext:[1],querybuttontext:[1],clearbutton:[1],expandable:[4],tablayout:[1],gridlayout:[1],searchTerm:[32],searchReturnData:[32],noResults:[32]}]]],["p-8d392e23",[[256,"iv-recently-viewed",{componenttitle:[1],titletag:[1],numbertoshow:[2],noviewhistory:[1],requestedfields:[1],items:[32]}]]],["p-3461f4c9",[[256,"iv-link-list",{linktype:[1],showicons:[4],links:[1],layout:[1]}]]],["p-b4f06963",[[260,"iv-shop-the-look",{behaviour:[1],coordinates:[1],producthandles:[1]}]]],["p-01e806fa",[[256,"iv-toast-container",{_bump:[32]}]]],["p-a5455078",[[256,"iv-wishlist",{buttonaddvalue:[1],buttonremovevalue:[1],wishlistempty:[1],buttonaddtocartvalue:[1],viewwishlistvalue:[1],productdata:[1],usefields:[1],previewtype:[1]}]]],["p-d48ec533",[[260,"iv-carousel",{navarrows:[4],navdots:[4],showslidecount:[4],autoplay:[4],autoplayspeed:[2],valign:[1],halign:[1],hasoverlay:[4],currentIndex:[32],items:[32]}]]],["p-eeb9fefc",[[256,"iv-compare-product"]]],["p-628cdaef",[[256,"iv-filters"]]],["p-65bbfd90",[[260,"iv-footer",{gridtemplateareas:[1],footerbackground:[1],blockElements:[32]}]]],["p-33ad5791",[[256,"iv-pill",{label:[1],content:[1],bordered:[4],internalspacing:[1],externalspacing:[1],roundedcorners:[1]}]]],["p-43c9d3a2",[[257,"iv-product-upsell"]]],["p-15220b75",[[260,"iv-two-col-media",{mobilebehaviour:[1],whichcolumn:[1],stackorder:[1],verticalalign:[1],horizontalalign:[1],gap:[1],hasMediaCol1:[32],hasMediaCol2:[32]}]]],["p-bfb8f130",[[260,"sw-in-grid-content"]]],["p-8fa353f7",[[260,"sw-size-guide",{sizeUnits:[32]}]]],["p-1bdb39db",[[260,"iv-banner",{classmodifier:[1],bannerurl:[1],bannerbuttontext:[1],bannertype:[1]}]]],["p-ac63cf8d",[[256,"iv-product-pin",{pinProduct:[1,"pin-product"],pinKey:[2,"pin-key"],pinCords:[16],pinBehaviour:[1,"pin-behaviour"]}]]],["p-0ab4b1a4",[[260,"iv-tabs",{labels:[16],classModifier:[1,"class-modifier"],tabLayout:[1,"tab-layout"],activeTab:[32]}]]],["p-42a4500b",[[256,"iv-toast",{message:[1],toastId:[2,"toast-id"],duration:[2],type:[1]}]]],["p-2931979f",[[257,"iv-modal",{newsletterpopuptrigger:[1],newsletterpopuptimedelay:[2],modalState:[32],contentName:[32]},[[4,"openModal","handleOpenModal"]]],[260,"iv-sidebar",{newsletterpopuptrigger:[1],newsletterpopuptimedelay:[2],sidebarState:[32],contentName:[32]},[[4,"openSidebar","handleopenSidebar"]]],[260,"iv-accordion",{labels:[1],allowmultiple:[4],startopen:[4],acordionlayout:[1],contentplacement:[1],dropdownicon:[1],openPanels:[32]}],[256,"iv-newsletter",{formimageurl:[1],formimageposition:[1],formimageheight:[1],formsubmitbtntext:[1],formsuccessmessage:[1],formfailuremessage:[1],formplaceholdertext:[1],formlabeltext:[1],formstackbutton:[4],formtitletag:[1],formtitletext:[1],formdescriptiontext:[1],includeloadingspinner:[4],newsletterpopupdisclaimer:[1],classmodifier:[1],email:[32],formFeedback:[32],status:[32]}],[260,"iv-event-button",{eventname:[1],eventdetail:[8],buttontext:[1]}],[256,"iv-wishlist-view"],[257,"ion-icon",{mode:[1025],color:[1],ios:[1],md:[1],flipRtl:[4,"flip-rtl"],name:[513],src:[1],icon:[8],size:[1],lazy:[4],sanitize:[4],svgContent:[32],isVisible:[32]},null,{name:["loadIcon"],src:["loadIcon"],icon:["loadIcon"],ios:["loadIcon"],md:["loadIcon"]}],[256,"iv-spinner",{show:[4]}],[260,"iv-button",{type:[1],classmodifier:[1],eventname:[1],eventdetail:[1],buttonClick:[16]}]]],["p-8e5850ea",[[256,"iv-card",{data:[16],fields:[1],cardtype:[1],classmodifier:[1],buttontext:[1],calltoaction:[4],addtocarttext:[1]}],[260,"iv-layout",{sectionId:[1,"section-id"],gridTemplateAreas:[1,"grid-template-areas"],gap:[1],verticalAlign:[1,"vertical-align"],horizontalAlign:[1,"horizontal-align"],wrapperTag:[1,"wrapper-tag"],classModifier:[1,"class-modifier"]}],[260,"iv-link",{classmodifier:[1],linktype:[1],linkhref:[1],linktarget:[1],linkrel:[1],linkariaLabel:[1,"linkaria-label"]}]]]],e)}));
1
+ import{p as e,b as t}from"./p-BMwNLWv6.js";export{s as setNonce}from"./p-BMwNLWv6.js";import{g as a}from"./p-DFXVdw7Z.js";var i=()=>{const t=import.meta.url;const a={};if(t!==""){a.resourcesUrl=new URL(".",t).href}return e(a)};i().then((async e=>{await a();return t([["p-f7e5d857",[[256,"iv-dynamic-products",{type:[1],limit:[2],reversed:[4],componenttitle:[1],titletag:[1],collectionhandle:[1],carousel:[4],requestedfields:[1],calltoaction:[4],buttontext:[1],addtocarttext:[1],emptystring:[1],gridlayout:[1],cachettl:[2],stale:[4],products:[32],errorMsg:[32],staleData:[32]},null,{type:["handlePropChange"],limit:["handlePropChange"],collectionhandle:["handlePropChange"],requestedfields:["handlePropChange"]}]]],["p-485e0d4a",[[256,"iv-suggest",{topqueries:[1],collections:[1],products:[1],banner:[1],bannerurl:[1],bannertitle:[1],bannertitletag:[1],bannerbuttontext:[1],topquerytitle:[1],productstitle:[1],collectionstitle:[1],gridlayout:[1],requestfields:[1]}]]],["p-f13e0eaa",[[256,"iv-dynamic-products-carousel",{type:[1],limit:[2],reversed:[4],componenttitle:[1],titletag:[1],collectionhandle:[1],requestedfields:[1],calltoaction:[4],buttontext:[1],addtocarttext:[1],emptystring:[1],cachettl:[2],stale:[4],exclude:[1],products:[32],errorMsg:[32],staleData:[32],page:[32]},null,{type:["handlePropChange"],limit:["handlePropChange"],collectionhandle:["handlePropChange"],requestedfields:["handlePropChange"]}]]],["p-3b1af693",[[256,"iv-predictive-search",{searchlabel:[1],labelposition:[1],action:[1],placeholder:[1],minchars:[2],resultslimit:[2],showspinner:[4],noresultstext:[1],requestedfields:[1],requestedresources:[1],showallbuttontext:[1],querybuttontext:[1],clearbutton:[1],expandable:[4],tablayout:[1],gridlayout:[1],searchTerm:[32],searchReturnData:[32],noResults:[32]}]]],["p-8d392e23",[[256,"iv-recently-viewed",{componenttitle:[1],titletag:[1],numbertoshow:[2],noviewhistory:[1],requestedfields:[1],items:[32]}]]],["p-3461f4c9",[[256,"iv-link-list",{linktype:[1],showicons:[4],links:[1],layout:[1]}]]],["p-b4f06963",[[260,"iv-shop-the-look",{behaviour:[1],coordinates:[1],producthandles:[1]}]]],["p-01e806fa",[[256,"iv-toast-container",{_bump:[32]}]]],["p-a5455078",[[256,"iv-wishlist",{buttonaddvalue:[1],buttonremovevalue:[1],wishlistempty:[1],buttonaddtocartvalue:[1],viewwishlistvalue:[1],productdata:[1],usefields:[1],previewtype:[1]}]]],["p-d48ec533",[[260,"iv-carousel",{navarrows:[4],navdots:[4],showslidecount:[4],autoplay:[4],autoplayspeed:[2],valign:[1],halign:[1],hasoverlay:[4],currentIndex:[32],items:[32]}]]],["p-eeb9fefc",[[256,"iv-compare-product"]]],["p-628cdaef",[[256,"iv-filters"]]],["p-65bbfd90",[[260,"iv-footer",{gridtemplateareas:[1],footerbackground:[1],blockElements:[32]}]]],["p-003e4edf",[[256,"iv-pill",{label:[1],content:[1],bordered:[4],internalspacing:[1],externalspacing:[1],roundedcorners:[1]}]]],["p-43c9d3a2",[[257,"iv-product-upsell"]]],["p-15220b75",[[260,"iv-two-col-media",{mobilebehaviour:[1],whichcolumn:[1],stackorder:[1],verticalalign:[1],horizontalalign:[1],gap:[1],hasMediaCol1:[32],hasMediaCol2:[32]}]]],["p-bfb8f130",[[260,"sw-in-grid-content"]]],["p-8fa353f7",[[260,"sw-size-guide",{sizeUnits:[32]}]]],["p-1bdb39db",[[260,"iv-banner",{classmodifier:[1],bannerurl:[1],bannerbuttontext:[1],bannertype:[1]}]]],["p-ac63cf8d",[[256,"iv-product-pin",{pinProduct:[1,"pin-product"],pinKey:[2,"pin-key"],pinCords:[16],pinBehaviour:[1,"pin-behaviour"]}]]],["p-0ab4b1a4",[[260,"iv-tabs",{labels:[16],classModifier:[1,"class-modifier"],tabLayout:[1,"tab-layout"],activeTab:[32]}]]],["p-42a4500b",[[256,"iv-toast",{message:[1],toastId:[2,"toast-id"],duration:[2],type:[1]}]]],["p-2931979f",[[257,"iv-modal",{newsletterpopuptrigger:[1],newsletterpopuptimedelay:[2],modalState:[32],contentName:[32]},[[4,"openModal","handleOpenModal"]]],[260,"iv-sidebar",{newsletterpopuptrigger:[1],newsletterpopuptimedelay:[2],sidebarState:[32],contentName:[32]},[[4,"openSidebar","handleopenSidebar"]]],[260,"iv-accordion",{labels:[1],allowmultiple:[4],startopen:[4],acordionlayout:[1],contentplacement:[1],dropdownicon:[1],openPanels:[32]}],[256,"iv-newsletter",{formimageurl:[1],formimageposition:[1],formimageheight:[1],formsubmitbtntext:[1],formsuccessmessage:[1],formfailuremessage:[1],formplaceholdertext:[1],formlabeltext:[1],formstackbutton:[4],formtitletag:[1],formtitletext:[1],formdescriptiontext:[1],includeloadingspinner:[4],newsletterpopupdisclaimer:[1],classmodifier:[1],email:[32],formFeedback:[32],status:[32]}],[260,"iv-event-button",{eventname:[1],eventdetail:[8],buttontext:[1]}],[256,"iv-wishlist-view"],[257,"ion-icon",{mode:[1025],color:[1],ios:[1],md:[1],flipRtl:[4,"flip-rtl"],name:[513],src:[1],icon:[8],size:[1],lazy:[4],sanitize:[4],svgContent:[32],isVisible:[32]},null,{name:["loadIcon"],src:["loadIcon"],icon:["loadIcon"],ios:["loadIcon"],md:["loadIcon"]}],[256,"iv-spinner",{show:[4]}],[260,"iv-button",{type:[1],classmodifier:[1],eventname:[1],eventdetail:[1],buttonClick:[16]}]]],["p-8e5850ea",[[256,"iv-card",{data:[16],fields:[1],cardtype:[1],classmodifier:[1],buttontext:[1],calltoaction:[4],addtocarttext:[1]}],[260,"iv-layout",{sectionId:[1,"section-id"],gridTemplateAreas:[1,"grid-template-areas"],gap:[1],verticalAlign:[1,"vertical-align"],horizontalAlign:[1,"horizontal-align"],wrapperTag:[1,"wrapper-tag"],classModifier:[1,"class-modifier"]}],[260,"iv-link",{classmodifier:[1],linktype:[1],linkhref:[1],linktarget:[1],linkrel:[1],linkariaLabel:[1,"linkaria-label"]}]]]],e)}));
2
2
  //# sourceMappingURL=intravenous.esm.js.map