Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (2024)

\n

\n \n \n \n \n {{filter.range.rangeFormat.replace(\"{0}\", \"\").replace(\"{1}\", \"\")}}\n \n \n \n \n

\n

\n

\n

\n

(isMobile ? 5 : 20)\"\n :show-apply-btn=\"showApplyBtn\"\n :show-clear-btn=\"showClearBtn && isFilterOptionsDirty()\"\n :is-view-more-status=\"isViewMoreStatus\"\n @view-more=\"viewMore\"\n @on-clear-filter-options=\"clearFilterOptions\"\n @on-apply-selections=\"filter.multipleSelection ? onApplySelections() : onApplySelection()\"\n />\n `,\n\n \"fs-filter-box-option\": `\n \n \n \n {{label}}\n \n \n \n \n `,\n\n \"fs-filter-list-option\": `\n

\n

\n

\n {{window.innerWidth > 768 ? label : label?.replace('iPhone ', '')}}\n

\n

\n

\n `,\n\n \"fs-filter-review-rating-option\": `\n \n \n \n {{rate}}\n \n \n \n \n \n `,\n\n \"fs-filter-swatch-option\": `\n \n \n

\n

\n \n \n {{label}}\n \n

\n

\n

\n

\n
\n
\n `,\n\n \"fs-filter-option-amount\": `\n \n ({{count}})\n \n `,\n\n \"fs-apply-filter-selections-btn\": `\n \n {{$t(\"searchResults.filter.applySelections\")}}\n \n `,\n\n \"fs-filter-actions\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n `,\n // End filter types\n\n \"fs-filters-icon\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n \n \n \n \n \n \n

\n {{$t(\"searchResults.toolbars.filters\")}}\n

\n

\n

\n \n \n \n

\n {{$t(\"searchResults.toolbars.filters\")}}\n

\n

\n

\n \n \n \n

\n {{$t(\"searchResults.toolbars.filters\")}}\n

\n

\n `,\n\n \"fs-button-clear-filter-option\": `\n \n {{$t(\"searchResults.filter.clear\")}}\n \n `,\n\n \"fs-button-clear-all-filter-options\": `\n \n {{$t(\"searchResults.filter.clearAll\")}}\n \n `,\n\n \"fs-button-view-more-filter-options\": `\n \n {{isViewMoreStatus ? $t(\"searchResults.filter.viewLess\") : $t(\"searchResults.filter.viewMore\")}}\n \n `,\n // End filters\n\n \"fs-searchbox-mobile\": `\n \n \n inputRef = el\"\n />\n \n \n \n \n \n \n \n `,\n\n \"fs-total-products\": `\n

\n

\n

\n

\n

\n \n

\n

\n `,\n\n \"fs-search-results-sort-by\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n \n

\n \n

    \n
  • \n {{label}}\n
  • \n

\n

\n \n

\n `,\n\n \"fs-product-buttons\": `\n \n \n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-product-image\": `\n

\n

\n \n

\n

\n

\n

\n

\n `,\n\n \"fs-product-label\": `\n \n \n {{$t(\"general.productLabel.soldOut\")}}\n \n \n {{$t(\"general.productLabel.new\")}}\n \n \n {{saleLabelType === \"percentage-label\" ? $t(\"general.productLabel.salePercentage\", {salePercentage: salePercentage}) : $t(\"general.productLabel.sale\")}}\n \n \n \n {{ fsGetBestSellerLabel(product).text }}\n \n \n `,\n\n \"fs-product-title\": `\n

\n \n

\n `,\n\n \"fs-sr-review-rate\": `\n

0\" class=\"fs-sr-review-rate\" data-testid=\"sr-review-rate\">\n

1 ? (count + ' ' + reviewsText) : (count + ' ' + reviewText))\"\n />\n
\n `,\n\n \"fs-product-vendor\": `\n

\n \n

\n `,\n\n \"fs-product-description\": `\n

{{description.replace(/<[^>]*>/g, \"\")}}

\n `,\n\n \"fs-product-color\": `\n \n \n \n \n \n \n \n `,\n\n \"fs-product-colors\": `\n

\n

\n \n \n \n \n View more\n \n

\n `,\n\n \"fs-product-sizes\": `\n

0\">\n {{getVariantSizes(product).join(\", \")}}\n

\n `,\n\n \"fs-wishlist\": `\n \n

\n \n ...\n

\n \n \n \n \n \n \n \n \n `,\n\n \"fs-quick-view-item\": `\n \n \n \n \n \n \n \n

\n

\n

\n

\n

\n
\n
\n \n

\n

\n

\n

\n

\n

\n

\n

{{product.vendor}}

\n

\n

\n \n \n \n {{value}}\n \n \n \n

\n

\n \n

\n

\n \n {{$t(\"searchResults.quickView.addToCart\")}}\n \n \n {{$t(\"searchResults.quickView.soldOutButton\")}}\n \n \n {{$t(\"searchResults.quickView.unavailable\")}}\n \n

\n

\n \n

\n

\n

\n

\n

\n {{$t(\"searchResults.quickView.soldOutButton\")}}\n

\n

\n

\n

\n

\n

\n \n \n \n `,\n\n \"fs-search-results-grid-view-item\": `\n

\n

\n

\n

\n

\n \n \n \n \n \n

\n

\n

\n

\n \n

\n

\n \n

\n {{ fsGetProductShortTitle(product) }}\n \n

\n {{ product.title?.split(\"-\").at(-1) }}\n \n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-search-results-list-view-item\": `\n

\n

\n

\n \n \n

\n

\n \n \n \n \n \n
\n
\n \n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n
\n

\n

\n

\n `,\n\n \"fs-search-results-items\": `\n

\n \n \n \n \n

\n `,\n\n \"fs-search-results-views\": `\n

\n

\n \n

\n

\n \n

\n \n

\n

\n \n

\n \n

\n

\n

\n `,\n\n \"fs-search-results-views-backup\": `\n

\n

\n

\n

\n

\n

\n \n

\n

\n \n

\n

\n

\n `,\n\n \"fs-custom-pagination\": `\n

\n

\n \n

\n

\n

\n

\n

\n {{$t(\"searchResults.pagination.loadMoreTotal\", {current: currentNumOfProducts, total: total})}}\n

\n

\n {{$t(\"searchResults.pagination.loadMore\")}}\n

\n

\n

\n

infiniteLoadingRef = ref\"\n class=\"fs-load-more-paging\"\n data-testid=\"sr-pa-infinite-loading\"\n >\n

\n

\n

\n `,\n\n \"fs-skeleton-product-image\": `\n

\n `,\n\n \"fs-skeleton-product-title\": `\n

\n `,\n\n \"fs-skeleton-product-text\": `\n

\n `,\n\n \"fs-input-number-custom\": `\n

\n \n \n

\n `,\n};\n\nflashsearch.instantSearchTemplates = {\n \"fs-app\": `\n

\n

\n

\n

\n \n

\n `,\n\n \"fs-instant-search\": `\n

isWrapperRef = ref\"\n v-show=\"enablePopup\"\n class=\"fs-is-wrapper\"\n :class=\"{'fs-is--layout-vertical': isVerticalLayout}\"\n :style=\"isStyles\"\n @touchmove=\"() => document.activeElement.blur()\"\n data-testid=\"is-wrapper\"\n >\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n \n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n \n

\n

\n

\n

\n `,\n\n \"fs-is-suggestions\": `\n

\n

\n

\n

\n `,\n\n \"fs-is-collections\": `\n

\n

\n

\n

\n `,\n\n \"fs-is-pages\": `\n

\n

\n

\n

\n `,\n\n \"fs-is-product-items\": `\n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-is-product-item\": `\n

\n \n

\n \n \n \n Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (1)\n \n

\n

\n

\n

\n

\n {{product.title}}\n

\n

\n

\n

\n

\n

\n

\n

\n {{$t(\"instantSearch.labels.sku\")}}: {{sku}}\n

\n

\n

\n {{product.vendor}}\n

\n

\n

\n

\n

\n `,\n\n \"fs-is-did-you-mean\": `\n

\n

\n \n

\n

\n \n

\n

\n `,\n\n \"fs-instant-search-desktop\": `\n

\n `,\n\n \"fs-instant-search-mobile\": `\n

\n

\n

\n

\n `,\n\n \"fs-highlighter\": `\n \n {{chunkItem.text}}\n \n `,\n\n \"fs-highlight-text\": `\n

\n `,\n\n \"fs-is-suggestion-item\": `\n

\n \n

\n `,\n\n \"fs-is-item\": `\n

\n

\n

\n `,\n\n \"fs-is-item-label\": `\n

{{ label }}

\n `,\n\n \"fs-is-review-rate\": `\n

0\" class=\"fs-is-review-rate\" data-testid=\"is-review-rate\">\n

\n

\n `,\n\n \"fs-is-searchbar-mobile\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n `,\n};\n\n/*\n You can add any functions, variables ... like normal javascript codes\n And use it on every templates above\n Examples:\n - Define a function:\n function getImageSize() {};\n - And using this function on templates:\n Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (2){{getImageSize(product.url)}}\n */\n\nflashsearch.event.on(\"initSearchResults\", function (app) {\n /*\n You can create a component and using it on search results templates.\n Examples:\n - Create a component for \"Search results\" area:\n app.createComponent(\"fs-my-custom\", {\n template: `

this is my custom component

`\n })\n - Then using it on search results templates:\n

\n - Or event with more complex component with props:\n app.createComponent(\"fs-my-custom\", {\n props: {msg: String},\n template: `

here is my message: {{msg}}

`\n })\n */\n});\n\nflashsearch.event.on(\"initInstantSearch\", function (app) {\n /*\n You can create a component and using it on Instant search templates.\n Examples:\n - Create a component for \"Instant search\" area:\n app.createComponent(\"fs-my-custom\", {\n template: `

this is my custom component

`\n })\n - Then using it on Instant search templates:\n

\n - Or event with more complex component with props:\n app.createComponent(\"fs-my-custom\", {\n props: {msg: String},\n template: `

here is my message: {{msg}}

`\n })\n */\n});\n\nfunction isViewActive(view) {\n const params = new URLSearchParams(document.location.search);\n const name = params?.get(\"product_view\");\n return (!view && name !== \"lifestyle\") || name === view\n ? \"fs-product-view-active\"\n : \"\";\n}\n\nfunction hideProduct(product) {\n let hide = false;\n\n if (\n product.tags?.includes(\"__hidden__\") &&\n FlashsearchCustomSettings?.current_collection === \"all\"\n ) {\n hide = true;\n }\n\n product.variants?.forEach((variant) => {\n const variantTitle = window.formatTitle(variant.title);\n let collectionHandle = getHandleFromCollection(variant);\n let variantHandle = getHandleFromVariant(variant);\n if (collectionHandle === \"iphonese\") collectionHandle = \"iphonese876\";\n\n const isVariantCollection = collectionHandle === variantHandle;\n\n if (isVariantCollection) {\n if (\n product.productType === \"pack\" ||\n product.tags.includes(`hide_${variantTitle}`)\n ) {\n hide = true;\n }\n }\n });\n\n return hide;\n}\n\nfunction getHandleFromCollection(productVariantHandle) {\n var currentPage = FlashsearchCustomSettings.current_collection\n .replace(/-/g, \"\")\n .replace(/[\\/\\\\]/g, \"\")\n .replace(\"size\", \"\")\n .replace(\"shop\", \"\");\n\n //Manage iPhone X/XS Case\n if (currentPage.includes(\"xsx\") || currentPage.includes(\"xxs\")) {\n currentPage = \"iphonexsx\";\n }\n\n //Manage iPhone 876/SE Case\n if (currentPage.includes(\"876\") && !currentPage.includes(\"plus\")) {\n currentPage = \"iphonese876\";\n }\n if (currentPage === \"iphonese\" && productVariantHandle === \"iphonese876\") {\n currentPage = \"iphonese876\";\n }\n\n return currentPage;\n}\n\nfunction getHandleFromVariant(variant) {\n return window\n .formatTitle(variant.title)\n .toLowerCase()\n .replace(/\\s/g, \"\")\n .replace(/[\\/\\\\]/g, \"\");\n}\n\n// ========================================= Show view more button =========================================\nfunction fsIsShowMore(product) {\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"swatches.all_colors_json\") {\n const metaColors = JSON.parse(metafield.valueString);\n return metaColors.length > 7;\n }\n }\n\n return false;\n}\n\nfunction waitForElm(selector) {\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver((mutations) => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n}\n\nfunction fsGetProductColorHideClass(index) {\n if (index >= 7) {\n return \"fs-product-color__hide-color\";\n }\n}\n\nfunction fsHandleClickShowMore(productId) {\n const productColorEles = document.querySelectorAll(\n `[data-product-id='${productId}'] .fs-sr-grid-item__info .fs-product-color`\n );\n const maxTotal = productColorEles.length < 20 ? productColorEles.length : 20;\n\n productColorEles.forEach((ele, ind) => {\n if (ind < maxTotal && ind >= 7) {\n ele?.classList?.remove(\"fs-product-color__hide-color\");\n }\n });\n\n // Remove show more button\n const showMoreBtnEle = document.querySelector(\n `[data-product-id='${productId}'] .fs-sr-grid-item__info .fs-product-color__view-more-btn`\n );\n showMoreBtnEle.classList.add(\"fs-product-color__hide-color\");\n\n // Show separate more button\n if (maxTotal === 20) {\n const showMoreSeparateBtnEle = document.querySelector(\n `[data-product-id='${productId}'] .fs-sr-grid-item__info .fs-view-more-separate`\n );\n showMoreSeparateBtnEle.classList.remove(\"fs-product-color__hide-color\");\n }\n}\n\n// ========================================= Product short title =========================================\nfunction fsGetProductShortTitle(product) {\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"product.short_title\") {\n return metafield.valueString;\n }\n }\n return \"\";\n}\n\n// ========================================= Product Model view =========================================\nvar fsCustomView =\n new URLSearchParams(document.location.search).get(\"product_view\") ===\n \"lifestyle\"\n ? \"model\"\n : \"product\";\n\nfunction getFsCustomView() {\n return fsCustomView;\n}\n\nfunction fsApplyCustomView() {\n const imageWrapperElements = document.querySelectorAll(\n \".fs-sr-grid-item .fs-sr-grid-item__image\"\n );\n\n for (let i = 0; i < imageWrapperElements.length; i++) {\n const imageWrapperElement = imageWrapperElements[i];\n const imageInnerelement = imageWrapperElement.querySelector(\n \".fs-product-image__main-image-wrapper\"\n );\n\n const mainImageElement = imageWrapperElement.querySelector(\n \".fs-product-image__main-image\"\n );\n const secondImageElement = imageWrapperElement.querySelector(\n \".fs-product-image__hover-image\"\n );\n\n if (mainImageElement?.style && secondImageElement?.style) {\n const mainImage = mainImageElement.style.backgroundImage;\n const secondImage = secondImageElement.style.backgroundImage;\n\n let mainDataImage = imageInnerelement.dataset.main;\n let secondDataImage = imageInnerelement.dataset.second;\n\n if (!mainDataImage?.includes(\"url(\"))\n mainDataImage = `url(${mainDataImage})`;\n if (!secondDataImage?.includes(\"url(\"))\n secondDataImage = `url(${secondDataImage})`;\n\n if (!mainDataImage || !secondDataImage) {\n imageInnerelement.setAttribute(\"data-main\", mainImage);\n imageInnerelement.setAttribute(\"data-second\", secondImage);\n\n mainDataImage = imageInnerelement.dataset.main;\n secondDataImage = imageInnerelement.dataset.second;\n }\n\n if (fsCustomView === \"product\") {\n mainImageElement.style.backgroundImage = mainDataImage;\n secondImageElement.style.backgroundImage = secondDataImage;\n } else {\n mainImageElement.style.backgroundImage = secondDataImage;\n secondImageElement.style.backgroundImage = mainDataImage;\n }\n\n if (mainImageElement?.classList?.contains(\"fs-lazyload\")) {\n mainImageElement.setAttribute(\n \"fs-data-bgset\",\n mainImageElement.style.backgroundImage\n );\n mainImageElement.classList.replace(\"fs-lazyload\", \"fs-loaded\");\n secondImageElement.setAttribute(\n \"fs-data-bgset\",\n secondImageElement.style.backgroundImage\n );\n secondImageElement.classList.replace(\"fs-lazyload\", \"fs-loaded\");\n }\n }\n }\n}\n\nfunction fsHandleViewProduct() {\n if (fsCustomView === \"product\") {\n return;\n }\n fsCustomView = \"product\";\n fsApplyCustomView();\n\n // Add and remove class active for product model views\n console.log(\"Get in view product\");\n const viewProductEle = document.querySelector(\".fs-toolbar__view-product\");\n viewProductEle.classList.add(\"fs-product-view-active\");\n const viewModelEle = document.querySelector(\".fs-toolbar__view-model\");\n viewModelEle.classList.remove(\"fs-product-view-active\");\n}\n\nfunction fsHandleViewModel() {\n if (fsCustomView === \"model\") {\n return;\n }\n\n fsCustomView = \"model\";\n fsApplyCustomView();\n\n // Add and remove class active for product model views\n console.log(\"Get in view model\");\n const viewProductEle = document.querySelector(\".fs-toolbar__view-product\");\n viewProductEle.classList.remove(\"fs-product-view-active\");\n const viewModelEle = document.querySelector(\".fs-toolbar__view-model\");\n viewModelEle.classList.add(\"fs-product-view-active\");\n}\n\nfunction _fsGetMainProductImage(product) {\n if (!product || (product && product?.images && product.images.length === 0)) {\n return;\n }\n\n if (product.images.length < 3) {\n return product.featuredImage ? props.product.featuredImage : undefined;\n }\n\n return product.images[0];\n}\n\nfunction fsGetMainProductImage(product) {\n const image = _fsGetMainProductImage(product);\n if (!image) {\n return \"\";\n }\n\n return image.originalSrc;\n}\n\nfunction fsGetMainProductImageAspectRatio(product) {\n const image = _fsGetMainProductImage(product);\n if (!image) {\n return;\n }\n\n return image.width / image.height;\n}\n\nfunction _fsGetSecondProductImage(product) {\n if (!product || (product && product?.images && product.images.length === 0)) {\n return;\n }\n\n let allow_custom_index = false;\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"custom.allow_custom_hover_image\") {\n if(metafield.valueString === 'true') {\n \t \tallow_custom_index = true;\n \t }\n }\n }\n\n let imageIndex = window.settings.col_prods_hover_image;\n imageIndex = !imageIndex || !allow_custom_index ? 2 : imageIndex - 1;\n\n if (product.images.length < imageIndex + 1) {\n return product.featuredImage ? props.product.featuredImage : undefined;\n }\n\n return product.images[imageIndex];\n}\n\nfunction fsGetSecondProductImage(product) {\n const image = _fsGetSecondProductImage(product);\n if (!image) {\n return \"\";\n }\n\n return image.originalSrc;\n}\n\nfunction fsGetSecondProductImageAspectRatio(product) {\n const image = _fsGetSecondProductImage(product);\n if (!image) {\n return;\n }\n\n return image.width / image.height;\n}\n// End Product Model view\n\n// ========================================= Show Product Colors =========================================\nvar isShowMore;\nfunction fsGetProductColors(product) {\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"swatches.all_colors_json\") {\n const metaColors = JSON.parse(metafield.valueString);\n const variantColors = [];\n\n //const productLength = metaColors.length <= 7 ? metaColors.length : 7;\n\n for (let i = 0; i < metaColors.length; i++) {\n variantColors.push(metaColors[i]?.color);\n\n //waitForElm('.some-class').then((elm) => {\n //console.log('Element is ready');\n //console.log(elm.textContent);\n //});\n }\n\n return variantColors;\n }\n }\n return \"\";\n}\n\nfunction fsGetColorImageUrl(color) {\n const swatches = window.FlashsearchCustomSwatchesJson;\n if (!swatches) return \"\";\n\n for (let [key, value] of Object.entries(swatches)) {\n if (value?.name === color) {\n return value.image;\n }\n }\n\n return \"\";\n}\n\nfunction waitForElm(selector) {\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver((mutations) => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n}\n\nconst cacheFetchSwatchColorAjax = {};\nflashsearch.event.on(\"productsFetched\", function () {\n waitForElm(\n \".fs-sr-items .fs-sr-item-wrapper[data-product-handle][data-product-id]\"\n ).then(function () {\n //console.log(\"GRID ITEM LOADED 2 ....\");\n document.querySelectorAll(\".fs-sr-item-wrapper\").forEach(function (item) {\n var productHandle = item.getAttribute(\"data-product-handle\");\n var productId = item.getAttribute(\"data-product-id\");\n\n let url = `/products/${productHandle}?view=ajax-swatches`;\n\n if (window.location.pathname.includes(\"collection\")) {\n url = `${window.location.pathname}${url}`;\n }\n\n fetch(url)\n .then((res) => res.text())\n .then((text) => {\n if (text.includes(\"404 Not Found\")) return null;\n document.getElementById(\n `fs-product-colors-container-${productId}`\n ).innerHTML = text;\n cacheFetchSwatchColorAjax[productId] = true;\n });\n });\n\n const productBlocks = document.querySelectorAll(\".fs-sr-grid-item-wrapper\");\n const extra_block_data_json = document.querySelector(\n \"#collection-extra-block\"\n );\n if (extra_block_data_json && productBlocks.length % 2 !== 0) {\n const eb_data = JSON.parse(extra_block_data_json.innerText);\n if (eb_data.text) {\n const eb = `\n

\n

\n ${\n eb_data.icon\n ? `Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (3)`\n : \"\"\n }\n

\n ${eb_data.text}\n

\n

VERSION 1\");\ndocument.addEventListener(\"click\", function (e) {\n const target = e.target.closest(\".js-swatches-container .js-show-swatches\"); // Or any other selector.\n\n if (target) {\n e.preventDefault();\n var swatchContainerElement = e.target.closest(\".js-swatches-container\");\n swatchContainerElement\n .querySelectorAll(\".swatch.js-hidden\")\n .forEach((element) => element.classList.remove(\"js-hidden\"));\n swatchContainerElement.querySelector(\".js-show-swatches\").remove();\n swatchContainerElement\n .querySelector(\".js-hidden.js-swatch:not(.swatch)\")\n .classList.remove(\"js-hidden\");\n }\n});\n\nfunction fsUpdateProductImages(\n imageWrapperElement,\n productImageUrl,\n modeImageUrl\n) {\n const innerElement = imageWrapperElement.querySelector(\n \".fs-product-image__main-image-wrapper\"\n );\n const mainImageElement = imageWrapperElement.querySelector(\n \".fs-product-image__main-image\"\n );\n const secondImageElement = imageWrapperElement.querySelector(\n \".fs-product-image__hover-image\"\n );\n\n innerElement.setAttribute(\"data-main\", productImageUrl);\n innerElement.setAttribute(\"data-second\", modeImageUrl);\n\n var mainImage = \"\";\n var secondImage = \"\";\n if (fsCustomView === \"product\") {\n mainImage = productImageUrl;\n secondImage = modeImageUrl;\n } else {\n mainImage = modeImageUrl;\n secondImage = productImageUrl;\n }\n\n mainImageElement.style.backgroundImage = mainImage;\n secondImageElement.style.backgroundImage = secondImage;\n}\n\nfunction handleHoverSwatch(e) {\n const target = e.target.closest(\".js-swatches-container .swatch\"); // Or any other selector.\n\n if (target) {\n e.preventDefault();\n let href = target.querySelector(\"a\").dataset.href;\n let {\n price,\n priceMin,\n comparePrice,\n priceMax,\n comparePriceMax,\n name,\n discount,\n labelText,\n labelBg,\n labelFg,\n labelShape,\n } = target.querySelector(\"a\")?.dataset || {};\n\n price = parseFloat(price);\n priceMin = parseFloat(priceMin);\n priceMax = parseFloat(priceMax);\n comparePrice = parseFloat(comparePrice);\n comparePriceMax = parseFloat(comparePriceMax);\n\n if (isOtherCollection) {\n price = parseFloat(priceMax);\n comparePrice = parseFloat(comparePriceMax);\n }\n if (price === comparePrice) comparePrice = 0;\n\n var swatchContainerElement = e.target.closest(\".js-swatches-container\");\n\n swatchContainerElement\n .querySelectorAll(\".swatch\")\n .forEach((element) => element.classList.remove(\"active\"));\n target.classList.add(\"active\");\n\n var gridItemElement = swatchContainerElement.closest(\".fs-sr-grid-item\");\n var gridItemImageElement = gridItemElement.querySelector(\n \".fs-sr-grid-item__image\"\n );\n\n var productImageUrl = target\n .querySelector(\"a\")\n .getAttribute(\"data-thumbnail-product\");\n var modelImageUrl = target\n .querySelector(\"a\")\n .getAttribute(\"data-thumbnail-model\");\n fsUpdateProductImages(\n gridItemImageElement,\n `url(https:${productImageUrl})`,\n `url(https:${modelImageUrl})`\n );\n\n if (href) {\n var productImageLink = gridItemImageElement.querySelector(\"a\");\n [productImageLink].forEach((link) => {\n link.href = href;\n });\n }\n\n const $productColor = gridItemElement.querySelector(\".product-loop-title\");\n const $price = gridItemElement.querySelector(\".fs-price\");\n const $label = gridItemElement.querySelector(\".fs-label-best-seller\");\n const $labelContainer =\n $label?.parentElement ||\n gridItemElement.querySelector(\".fs-label-wrapper\");\n\n if ($label) {\n $labelContainer.removeChild($label);\n }\n\n if ($price) {\n $price.innerHTML = renderPrice({\n priceVaries: {\n priceMin: priceMin / 100,\n priceMax: priceMax / 100,\n priceCompMin: comparePrice / 100,\n priceCompMax: comparePriceMax / 100,\n },\n hasDiscount: discount,\n });\n }\n\n if ($productColor && name) {\n $productColor.innerText = name;\n }\n\n if (labelText) {\n const newLabel = document.createElement(\"span\");\n newLabel.classList.add(\n \"fs-label-best-seller\",\n `--${labelShape}`,\n \"ss\",\n labelBg,\n labelFg\n );\n newLabel.setAttribute(\n \"style\",\n `--shape-bg: ${labelBg}; background-color: ${labelBg}; color: ${labelFg};`\n );\n newLabel.innerText = labelText;\n $labelContainer.appendChild(newLabel);\n }\n }\n}\n\nfunction handleClickSwatch(e) {\n const target = e.target.closest(\".js-swatches-container .swatch\"); // Or any other selector.\n\n if (target) {\n e.preventDefault();\n let href = target.querySelector(\"a\").dataset.href;\n if (!href) return;\n\n window.location.href = href;\n }\n}\n\nif (window.innerWidth > 768) {\n document.addEventListener(\"mouseover\", function (e) {\n handleHoverSwatch(e);\n });\n document.addEventListener(\"click\", function (e) {\n handleClickSwatch(e);\n });\n} else {\n document.addEventListener(\"click\", function (e) {\n handleHoverSwatch(e);\n });\n}\n\n// ========================================= Sort by =========================================\nfunction fsOnClickSortByButton(shouldOpenSortBy, openSortBy, closeSortBy) {\n if (shouldOpenSortBy) {\n closeSortBy();\n const iconEle = document.querySelector(\".fs-sort-by-custom-wrapper svg\");\n iconEle?.classList?.remove(\"fs-rotate-animation\");\n } else {\n const iconEle = document.querySelector(\".fs-sort-by-custom-wrapper svg\");\n iconEle?.classList?.add(\"fs-rotate-animation\");\n openSortBy();\n }\n}\n\n// ========================================= Best seller label =========================================\nfunction fsGetBestSellerLabel(product) {\n if (!product || (product && !product?.metafields)) {\n return;\n }\n const labelData = {};\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"label.label\") {\n labelData.text = metafield.valueString;\n }\n if (metafield?.namespaceKey === \"label.text-color\") {\n labelData.fg = metafield.valueString;\n }\n if (metafield?.namespaceKey === \"label.background-color\") {\n labelData.bg = metafield.valueString;\n }\n if (metafield?.namespaceKey === \"label.shape\") {\n labelData.shape = \"--\" + metafield.valueString;\n }\n }\n return labelData.text ? labelData : null;\n}\n\n// ========================================= Best seller label =========================================\nfunction fsGetHideSale(product) {\n const excludedVariants = FlashsearchCustomSettings.variants_to_exclude\n .replace(/\\s/g, \"\")\n .split(\",\");\n\n let hideSale = false;\n let currentVariant = null;\n\n try {\n product.variants?.forEach((variant) => {\n const variantTitle = window.formatTitle(variant.title);\n const variantHandle = getHandleFromVariant(variant);\n const collectionHandle = getHandleFromCollection(variantHandle);\n\n if (variantHandle === collectionHandle) {\n hideSale = true;\n currentVariant = variant;\n }\n\n if (excludedVariants.includes(variantTitle)) {\n hideSale = true;\n }\n });\n\n return { hideSale, currentVariant };\n } catch (error) {\n console.log(\"Error on fsGetHideSale:\", error);\n return { hideSale, currentVariant };\n }\n}\n\nfunction fsGetVariants(product) {\n if (!product || !product.variants) return [];\n\n const excludedVariants = FlashsearchCustomSettings.variants_to_exclude\n .replace(/\\s/g, \"\")\n .split(\",\");\n\n let variants = [];\n\n for (let index = 0; index < product.variants.length; index++) {\n const variant = product.variants[index];\n\n const variantTitle = window.formatTitle(variant.title);\n const variantHandle = getHandleFromVariant(variant);\n const collectionVariantHandle = getHandleFromCollection(variantHandle);\n\n if (collectionVariantHandle === variantHandle) {\n variants = [variant];\n break;\n }\n\n if (excludedVariants.includes(variantTitle)) {\n continue;\n }\n\n variants.push(variant);\n }\n\n return variants;\n}\n\n// ========================================= product price more =========================================\nvar isOtherCollection = !window.location.pathname.includes(\"iphone-\");\n\nfunction fsWrapProductForPrice(product) {\n if (fsHideVariantsPrice()) {\n product = fsExcludePrices(product);\n } else {\n const prices = getPriceVaries(product);\n product.priceMin = prices.priceMin;\n product.priceMax = prices.priceMax;\n product.compareAtPriceMin = prices.priceCompMin;\n product.compareAtPriceMax = prices.priceCompMax;\n }\n\n product.priceVaries = !(product.priceMin == product.priceMax);\n return product;\n}\n\nfunction fsHideVariantsPrice() {\n return window.FlashsearchCustomSettings?.hide_variants_price;\n}\n\nfunction fsExcludePrices(product) {\n if (!product) return;\n\n //var product = {...productInput};\n\n const excludedVariants = FlashsearchCustomSettings.variants_to_exclude\n .replace(/\\s/g, \"\")\n .split(\",\");\n var currentPage = FlashsearchCustomSettings.current_collection\n .replace(/-/g, \"\")\n .replace(/[\\/\\\\]/g, \"\")\n .replace(\"size\", \"\")\n .replace(\"shop\", \"\");\n\n let isCollectionVariant = false;\n let variants = [];\n product.variants?.forEach((variant) => {\n const variant_title = window.formatTitle(variant.title).toLowerCase();\n const variantTitle = variant_title\n .replace(/\\s/g, \"\")\n .replace(/[\\/\\\\]/g, \"\"); //Remove spaces from title\n const transformedVariant = variantTitle\n .toLowerCase()\n .replace(/[\\/\\\\]/g, \"\");\n\n //Manage iPhone X/XS Case\n if (currentPage.includes(\"xsx\") || currentPage.includes(\"xxs\")) {\n currentPage = \"iphonexsx\";\n }\n\n //Manage iPhone 876/SE Case\n if (currentPage.includes(\"876\") && !currentPage.includes(\"plus\")) {\n currentPage = \"iphonese876\";\n }\n if (currentPage === \"iphonese\" && transformedVariant === \"iphonese876\") {\n currentPage = \"iphonese876\";\n }\n\n if (transformedVariant === currentPage) {\n variants = [variant];\n isCollectionVariant = true;\n }\n\n var data = product;\n\n if (isCollectionVariant) return;\n if (excludedVariants.includes(variantTitle)) return;\n if (product.productType !== \"pack\" && variant.inventoryQuantity <= 5)\n return;\n variants.push(variant);\n });\n product.variants = variants;\n\n const prices = getPriceVaries(product);\n\n product.priceMin = prices.priceMin;\n product.priceMax = prices.priceMax;\n product.compareAtPriceMin = prices.priceCompMin;\n product.compareAtPriceMax = prices.priceCompMax;\n\n var priceVaries = prices.priceMin != prices.priceMax;\n var onSale;\n if (prices.priceCompMin == null || prices.priceCompMax == null) {\n onSale = false;\n } else {\n onSale =\n prices.priceCompMin > prices.priceMin ||\n prices.priceCompMax > prices.priceMax;\n }\n product.onSale = onSale;\n product.priceVaries = priceVaries;\n\n return product;\n}\n\nfunction renderReviews(product) {\n return `\n

\n `;\n}\n\nfunction renderPrice({ product, priceVaries = {}, hasDiscount }) {\n const { hideSale, currentVariant } = product ? fsGetHideSale(product) : {};\n const { priceMin, priceMax, priceCompMin, priceCompMax } = product\n ? getPriceVaries(product)\n : priceVaries;\n\n const _priceMin = Shopify.formatMoney(priceMin * 100, Shopify.money_format);\n const _priceMax = Shopify.formatMoney(priceMax * 100, Shopify.money_format);\n const _priceCompMin = Shopify.formatMoney(\n priceCompMin * 100,\n Shopify.money_format\n );\n const _priceCompMax = Shopify.formatMoney(\n priceCompMax * 100,\n Shopify.money_format\n );\n\n const isOnSale =\n hasDiscount ||\n product?.variants?.find(\n (variant) => variant.compareAtPrice > variant.price\n );\n\n // Color Start\n let color = product?.productType === \"Gift Card\" ? \"black\" : \"red\";\n // Color End\n let hideCompareAtPrice = product?.productType == \"Gift Card\";\n\n if (hideSale) {\n return `\n \n priceMin ? \"fs-price--type-origin\" : \"\"\n }\">${_priceMin}\n ${\n priceCompMax > priceMin\n ? `${_priceCompMax}`\n : \"\"\n }\n \n `;\n } else if (\n window.settings.prices.enable_custom_fromto &&\n priceMax > priceMin\n ) {\n return `\n \n From\n \n ${_priceMin}\n to\n ${_priceMax}\n \n \n\t\t${!hideCompareAtPrice ? `\n ${\n priceCompMax > priceMax ? _priceCompMax : _priceMax\n }` : ''}\n `;\n } else if (\n priceCompMin > priceMin &&\n (!isOtherCollection || window.settings.prices.enable_custom_fromto)\n ) {\n return `\n \n ${_priceMin}\n ${_priceCompMin}\n \n `;\n } else {\n const price = !isOtherCollection ? _priceMin : _priceMax;\n return `\n ${price}\n `;\n }\n}\n\nfunction renderCollectionGridBanner() {\n try {\n if(window.settings?.global_col_grid_img && window.settings?.global_col_grid_img_url){\n\t\treturn ``\n\t} else if(window.settings?.global_col_grid_img) {\n\t\treturn `Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (5)`\n\t} else if (FlashsearchCustomSettings.collection_second_image_link) {\n return ``;\n } else {\n return `Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (7)`;\n }\n } catch (error) {\n return \"\";\n }\n}\n\nfunction renderCollectionGridBannerSquare() {\n try {\n\tif(FlashsearchCustomSettings.collection_third_image_link) {\n return ``;\n } else {\n return `Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (9)`;\n }\n } catch (error) {\n return \"\";\n }\n}\n\nfunction getHeaderHeight() {\n try {\n const header = document.querySelector(\"#shopify-section-header\");\n const phoneSizes = document.querySelector(\n \"#shopify-section-collection-phone-sizes\"\n );\n const shippingBanner = document.querySelector(\"#FreeShippingBanner\");\n\n let headerHeight = header.offsetHeight;\n let totalHeight = headerHeight;\n if (phoneSizes) {\n totalHeight = phoneSizes.offsetHeight;\n }\n\n let shippingBannerHeight = 0;\n if (shippingBanner) {\n shippingBannerHeight = shippingBanner.offsetHeight;\n }\n\n headerHeight += shippingBannerHeight;\n totalHeight += shippingBannerHeight;\n\n return { totalHeight, headerHeight };\n } catch {\n return { totalHeight: 0, headerHeight: 0 };\n }\n}\n\nfunction getIphoneIcon(title) {\n if (!title) return null;\n title = title.replace(\"iPhone \", \"\");\n title = title.trim().replace(/\\s\\s+/g, \" \");\n return iphoneIcons?.[title]?.icon || null;\n}\n\nwindow.addEventListener(\"scroll\", () => {\n if (window.innerWidth <= 768) {\n const { totalHeight, headerHeight } = getHeaderHeight();\n\n const filterOptions = document.querySelector(\"fs-layout-header-wrapper\");\n\n if (filterOptions.style.top !== headerHeight) {\n filterOptions.style.top = `${headerHeight}px`;\n }\n\n if (!filterOptions) return;\n if (window.scrollY > totalHeight) {\n filterOptions.classList.add(\"border-b\");\n } else {\n filterOptions.classList.remove(\"border-b\");\n }\n }\n});\n","origin":""}}},"126050762788":{"layoutType":"FILTERS_SIDEBAR","customization":{"general":{"productLabel":{"lookAndFeel":{"saleLabelType":"percentage-label","saleLabelBackgroundColor":"#ff4e00","saleLabelTextColor":"#ffffff","soldOutLabelBackgroundColor":"#898989","soldOutLabelTextColor":"#ffffff","newLabelProductsCreatedAfterDays":10,"newLabelBackgroundColor":"#109533","newLabelTextColor":"#ffffff"},"translations":{"sale":"Sale","salePercentage":"-{salePercentage}%","soldOut":"Sold out","new":"New"}},"price":{"lookAndFeel":{"priceVariesFormat":"range","priceColor":"#000000","discountedPriceColor":"#ec0101","compareAtPriceColor":"#000000"},"translations":{"from":"From"}}},"instantSearch":{"options":{"popularSuggestions":{"enable":true,"position":0,"maxDisplayedResults":3},"collections":{"enable":false,"position":1,"maxDisplayedResults":3},"pages":{"enable":false,"position":2,"maxDisplayedResults":3},"products":{"enable":true,"position":3,"maxDisplayedResults":25,"enableFields":{"price":true,"compareAtPrice":false,"vendor":false,"sku":false,"image":true,"reviewRating":true,"soldOutLabel":false,"saleLabel":false,"newLabel":false}},"searchBoxCssSelector":".flash-search-trigger"},"lookAndFeel":{"layoutType":"HORIZONTAL","mainBackgroundColor":"#ffffff","hoverColor":"#ededed","labelColor":"#999999","suggestionTextColor":"","suggestionHighlightedTextColor":"","suggestionHighlightedTextFontWeight":"600","productTitleColor":"","productTitleFontSize":"14px","productTitleFontWeight":"600","rateStarColor":"#fadb14","rateZeroStarColor":"#f0f0f0","rateStarFontSize":"13px","priceFontSize":"14px","priceFontWeight":"400","priceColor":"","discountedPriceColor":"","compareAtPriceColor":"","skuColor":"#bfbfbf","vendorColor":"#bfbfbf","didYouMeanTextColor":"","didYouMeanSearchTermColor":"","didYouMeanSearchTermFontWeight":"600","didYouMeanSuggestTextColor":"","didYouMeanSuggestBackgroundColor":"#d9d9d9","viewAllTextColor":"#8c8c8c","viewAllSearchTermColor":"#222","viewAllSearchTermFontWeight":"600","soldOutLabelBackgroundColor":"","soldOutLabelTextColor":"","saleLabelBackgroundColor":"","saleLabelTextColor":"","productLabelBorderRadius":"","productLabelTextFontSize":"12px","productLabelTextFontWeight":"400","productLabelWidth":"","productLabelHeight":"","productLabelShape":"label-shape-rectangle","notFoundTextColor":"","notFoundSearchTermColor":"","notFoundSearchTermFontWeight":"600"},"translations":{"labels":{"popularSuggestions":"POPULAR SUGGESTIONS","collections":"COLLECTIONS","pages":"PAGES","products":"PRODUCTS","sku":"SKU"},"messages":{"viewAllResults":"View all results for {searchTerm}","nothingFound":"Sorry, nothing found for {searchTerm}.","didYouMean":"Did you mean: {suggestions}?","searchInputPlaceholder":"Search"},"soldOut":"Sold out","sale":"Sale"}},"collectionPageHeading":{"lookAndFeel":{"enable":false,"backgroundImageUrl":"","useCollectionImage":false,"backgroundColor":"#000000","backgroundOverlay":"0.54","paddingSpaceDesktop":"50px","paddingSpaceMobile":"50px","backgroundPosition":"center center","backgroundRepeat":"no-repeat","backgroundSize":"cover","backgroundAttachment":"scroll","collectionTitleEnable":true,"collectionTitleColor":"#ffffff","collectionTitleFontSize":"20px","collectionTitleFontWeight":"500","collectionDescEnable":true,"collectionDescColor":"#ededed","collectionDescFontSize":"14px","collectionDescFontWeight":"400"}},"searchPageHeading":{"lookAndFeel":{"enable":false,"backgroundImageUrl":"","backgroundColor":"#000000","backgroundOverlay":"0.54","paddingSpaceDesktop":"50px","paddingSpaceMobile":"50px","backgroundPosition":"center center","backgroundRepeat":"no-repeat","backgroundSize":"cover","backgroundAttachment":"scroll","searchTextEnable":true,"searchTextColor":"#ededed","searchTextFontSize":"20px","searchTextFontWeight":"500"},"translations":{"searchResultsWithCount":"{count} results for \"{searchTerm}\""}},"searchResults":{"general":{"options":{"defaultSorting":"manual","defaultView":"grid","defaultMobileView":"grid-2","productsPerPage":28}},"layout":{"lookAndFeel":{"layoutWidth":"full-width"}},"productLabel":{"lookAndFeel":{"saleLabelEnable":false,"soldOutLabelEnable":false,"newLabelEnable":false,"labelShape":"label-shape-rounded","position":"top-left","textFontSize":"14px","textFontWeight":"400"}},"productImage":{"lookAndFeel":{"displayImages":"two-images","twoImagesHoverEffect":"zoom","backgroundOverlay":"0.1"}},"collectionPageHeader":{"lookAndFeel":{"enable":true,"textColor":"","textFontSize":"30px","textFontWeight":"400"},"translations":{"products":""}},"searchPageHeader":{"options":{"enablePageHeader":true,"enableSearchBox":true},"lookAndFeel":{"pageHeaderTextColor":"","pageHeaderTextFontSize":"20px","pageHeaderTextFontWeight":"400","searchBoxBorderColor":"#d9d9d9","searchBoxFocusBorderColor":"#222","searchBoxSearchButtonBackgroundColor":"#222","searchBoxSearchButtonTextColor":"#ffffff"},"translations":{"pageHeader":"{count} results for \"{searchTerm}\"","searchBoxPlaceholder":"Search"}},"toolbars":{"options":{"filter":{"enable":true},"totalProducts":{"enable":false},"sortBy":{"enable":true},"gridView":{"enable":true},"listView":{"enable":true}},"lookAndFeel":{"filterIconColor":"","filterTextColor":"","totalProductsTextColor":"","sortByShape":"rectangle","sortByTextColor":"","sortByBorderColor":"#d9d9d9","sortByFocusedBorderColor":"#333030","sortByItemHoverBackgroundColor":"#f5f5f5","sortBySelectedItemBackgroundColor":"#f5f5f5","sortBySelectedItemTextColor":"","viewIconColor":"#878787","viewSelectedIconColor":"#222"},"translations":{"filters":"Filters","totalProducts":"{count} products","sortBy":{"sortBy":"Sort by","featured":"Featured","bestSelling":"Best Selling","titleAz":"Alphabetically, A-Z","titleZa":"Alphabetically, Z-A","priceLh":"Price, low to high","priceHl":"Price, high to low","dateOldNew":"Date, old to new","dateNewOld":"Date, new to old"}}},"productItem":{"lookAndFeel":{"borderType":"none","borderTypeBorderColor":"#eee","productButtonDesignDesktop":"design-1","productButtonDesignMobile":"design-1","productButtonAtcBottomColor":"#ffffff","productButtonAtcBottomBackgroundColor":"#222","productButtonAtcBottomHoverColor":"#ffffff","productButtonAtcBottomHoverBackgroundColor":"#222","productColorEnable":false,"productColorShowType":"all-colors","productColorSwatchLayoutType":"swatch-color","productColorSwatchSize":"swatch-size-small","productColorSwatchStyle":"swatch-style-rounded","productColorOptionNames":["color","colors","couleur","colour"],"productColorShowMoreEnable":true,"productColorShowMoreLimit":4,"productColorShowMoreAction":"show-all-colors","productSizeEnable":false,"productSizeShowType":"all-sizes","productSizeColor":"#ffffff","productSizeFontSize":"14px","productSizeFontWeight":"400","productSizeOptionNames":["size","sizes","Größe"]},"translations":{"showMoreColors":"Show more colors +{moreCount}","showLessColors":"Show less colors -{moreCount}"}},"gridViewProductItem":{"options":{"soldOutLabel":{"enable":false},"saleLabel":{"enable":false},"quickView":{"enable":false},"addToCart":{"enable":false},"reviewRating":{"enable":true},"vendor":{"enable":false},"description":{"enable":false},"price":{"enable":true},"compareAtPrice":{"enable":true}},"lookAndFeel":{"soldOutLabelBackgroundColor":"","soldOutLabelTextColor":"","saleLabelBackgroundColor":"","saleLabelTextColor":"","labelTextFontSize":"","labelTextFontWeight":"","quickViewBackgroundColor":"#ffffff","quickViewHoverBackgroundColor":"#222","quickViewTextColor":"","quickViewHoverTextColor":"#ffffff","addToCartBackgroundColor":"#ffffff","addToCartHoverBackgroundColor":"#222","addToCartTextColor":"","addToCartHoverTextColor":"#ffffff","titleTextColor":"","titleTextFontSize":"15px","titleTextFontWeight":"600","rateStarColor":"#fadb14","rateZeroStarColor":"#f0f0f0","rateStarFontSize":"14px","rateTextColor":"","rateTextFontSize":"13px","rateTextFontWeight":"400","vendorTextColor":"","vendorTextFontSize":"14px","vendorTextFontWeight":"400","descriptionTextColor":"#8c8c8c","descriptionTextFontSize":"14px","descriptionTextFontWeight":"400","priceFontSize":"14px","priceFontWeight":"400","priceColor":"","discountedPriceColor":"","compareAtPriceColor":"","imageRatio":"adapt-to-image","imageSize":"cover","imagePosition":"center center"},"translations":{"soldOut":"Sold out","sale":"Sale","quickView":"Quick View","addToCart":"Add To Cart","selectOptions":"Select Options","rateReview":"review","rateReviews":"reviews","rateNoReviews":"No reviews","readMore":"Read More"}},"listViewProductItem":{"options":{"soldOutLabel":{"enable":false},"saleLabel":{"enable":false},"quickView":{"enable":true},"addToCart":{"enable":true},"reviewRating":{"enable":true},"vendor":{"enable":true},"description":{"enable":true},"price":{"enable":true},"compareAtPrice":{"enable":true}},"lookAndFeel":{"soldOutLabelBackgroundColor":"","soldOutLabelTextColor":"","saleLabelBackgroundColor":"","saleLabelTextColor":"","labelTextFontSize":"","labelTextFontWeight":"","quickViewBackgroundColor":"#ffffff","quickViewHoverBackgroundColor":"#222","quickViewTextColor":"","quickViewHoverTextColor":"#ffffff","addToCartBackgroundColor":"#ffffff","addToCartHoverBackgroundColor":"#222","addToCartTextColor":"","addToCartHoverTextColor":"#ffffff","titleTextColor":"","titleTextFontSize":"18px","titleTextFontWeight":"600","rateStarColor":"#fadb14","rateZeroStarColor":"#f0f0f0","rateStarFontSize":"14px","rateTextColor":"","rateTextFontSize":"13px","rateTextFontWeight":"400","vendorTextColor":"#8c8c8c","vendorTextFontSize":"16px","vendorTextFontWeight":"400","descriptionTextColor":"#8c8c8c","descriptionTextFontSize":"14px","descriptionTextFontWeight":"400","priceFontSize":"14px","priceFontWeight":"400","priceColor":"","discountedPriceColor":"","compareAtPriceColor":"","imageRatio":"adapt-to-image","imageSize":"cover","imagePosition":"center center"},"translations":{"soldOut":"Sold out","sale":"Sale","quickView":"Quick View","addToCart":"Add To Cart","selectOptions":"Select Options","rateReview":"review","rateReviews":"reviews","rateNoReviews":"No reviews","readMore":"Read More"}},"quickView":{"options":{"soldOutLabel":{"enable":false},"saleLabel":{"enable":false},"reviewRating":{"enable":true},"vendor":{"enable":true},"description":{"enable":true},"price":{"enable":true},"compareAtPrice":{"enable":true}},"lookAndFeel":{"soldOutLabelBackgroundColor":"","soldOutLabelTextColor":"","saleLabelBackgroundColor":"","saleLabelTextColor":"","labelTextFontSize":"","labelTextFontWeight":"","titleTextColor":"","titleTextFontSize":"28px","titleTextFontWeight":"600","rateStarColor":"#fadb14","rateZeroStarColor":"#f0f0f0","rateStarFontSize":"14px","rateTextColor":"","rateTextFontSize":"13px","rateTextFontWeight":"400","vendorTextColor":"#8c8c8c","vendorTextFontSize":"20px","vendorTextFontWeight":"400","descriptionTextColor":"#8c8c8c","descriptionTextFontSize":"14px","priceFontSize":"22px","priceFontWeight":"600","priceColor":"","discountedPriceColor":"","compareAtPriceColor":"","selectTextColor":"","selectBorderColor":"#d9d9d9","selectFocusBorderColor":"#333030","selectItemHoverBackgroundColor":"#f5f5f5","selectSelectedItemBackgroundColor":"#f5f5f5","selectSelectedItemTextColor":"","quantityTextColor":"","quantityInputBorderColor":"#d9d9d9","quantityInputFocusBorderColor":"#333030","addToCartBackgroundColor":"#222","addToCartTextColor":"#ffffff","disabledButtonBackgroundColor":"#f5f5f5","disabledButtonTextColor":"","disabledButtonBorderColor":"#d9d9d9","imageRatio":"adapt-to-image","imageSize":"contain","imagePosition":"center center"},"translations":{"quantity":"Quantity","addToCart":"ADD TO CART","soldOutButton":"SOLD OUT","unavailable":"UNAVAILABLE","soldOutLabel":"Sold out","saleLabel":"Sale","rateReview":"review","rateReviews":"reviews","rateNoReviews":"No reviews"}},"pagination":{"options":{"paginationType":"LOAD_MORE"},"lookAndFeel":{"textColor":"","paginationLayoutType":"layout-3","paginationSelectedTextColor":"#000000","paginationSelectedBackgroundColor":"","loadMoreTextFontSize":"10px","loadMoreTextFontWeight":"300","loadMoreButtonTextFontSize":"11px","loadMoreButtonTextFontWeight":"500","loadMoreButtonBackgroundColor":"#ffffff","loadMoreButtonBorderColor":"#d9d9d9","loadMoreButtonHoverBorderColor":"#333030"},"translations":{"loadMore":"LOAD MORE","loadMoreTotal":"{current} OF {total} PRODUCTS","next":"Next","prev":"Prev"}},"filter":{"options":{"enableProductCount":false},"lookAndFeel":{"filterTitleTextColor":"","filterTitleTextFontSize":"16px","filterTitleTextFontWeight":"600","filterTitleTextTransform":"none","filterOptionTextColor":"","filterOptionTextFontSize":"14px","horizontalLayoutWrapperBackgroundColor":"#fafafa","filtersSidebarLayoutType":"layout-1","filtersSidebarHeaderBackgroundColor":"","filtersSidebarHeaderTextColor":"","filtersSidebarHeaderFontSize":"16px","filtersSidebarHeaderFontWeight":"500","filtersSidebarCloseButtonBackgroundColor":"#252525","filtersSidebarCloseButtonTextColor":"#ffffff","filtersSidebarLayout2CloseButtonTextColor":"","filtersSidebarShowResultsButtonBackgroundColor":"#252525","filtersSidebarShowResultsButtonTextColor":"#ffffff","filtersSidebarShowResultsButtonFontSize":"16px","filtersSidebarShowResultsButtonFontWeight":"400","filtersSidebarClearAllButtonTextColor":"#8c8c8c","filtersDropdownHeaderTextColor":"","filtersDropdownHeaderFontSize":"20px","filtersDropdownHeaderFontWeight":"600","filtersDropdownTitleTextColor":"","filtersDropdownTitleFontSize":"16px","filtersDropdownTitleFontWeight":"500","filtersDropdownCountLabelBackgroundColor":"#252525","filtersDropdownCountLabelTextColor":"#ffffff","filtersDropdownApplyButtonBackgroundColor":"#252525","filtersDropdownApplyButtonTextColor":"#ffffff","filtersDropdownApplyButtonFontSize":"14px","filtersDropdownApplyButtonFontWeight":"400","filtersDropdownClearButtonTextColor":"#8c8c8c","filtersDropdownClearButtonFontSize":"14px","filtersDropdownClearButtonFontWeight":"400"},"translations":{"clearAll":"Clear all","clear":"Clear","viewMore":"View more","viewLess":"View less","filtersTitle":"FILTERS","showResults":"Show results ({count})","rateTextAndUp":"& Up","applySelections":"apply selections"}},"emptyPage":{"lookAndFeel":{"textColor":"","textFontSize":"14px"},"translations":{"searchEmptyPageText":"Try checking your spelling or using different words.","collectionsEmptyPageText":"No result found."}}}},"usageStatus":{"instantSearch":false,"filter":true},"customCodes":{"css":{"current":"li.fs-sort-by-custom-dropdown-option:nth-child(3),\nli.fs-sort-by-custom-dropdown-option:nth-child(4) {\n display: none;\n}\n.fs-toolbar__filter-options,\n.test {\n display: flex;\n justify-content: space-between;\n}\n\n.fs-toolbar__filter-options .fs-toolbar__product-model-filters__title {\n display: none;\n}\n\n.fs-toolbar__filter-options .fs-toolbar__sort-filter {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.fs-main__toolbar {\n margin-top: unset !important;\n margin-bottom: 6px;\n}\n\n.fs-toolbar__section--bottom {\n padding-top: unset;\n}\n\n.fs-toolbar__product-model-filters__buttons {\n display: flex;\n gap: 10px;\n}\n\n.fs-product-view-active {\n font-weight: bold;\n}\n\n.fs-product-color__view-more-btn {\n cursor: pointer;\n margin-top: 2px;\n}\n\n.fs-product-color__hide-color {\n display: none;\n}\n\n.fs-sr-grid-item__price {\n margin-bottom: 12px;\n}\n\n.fs-sr-grid-item__info .product-loop-title {\n margin-bottom: 4px !important;\n}\n\n.fs-sr-item-wrapper {\n padding: 5px;\n}\n\n/* Product color swatches */\n.js-swatches-container .swatch a {\n cursor: pointer;\n}\n\n.js-swatches-container .swatches {\n align-items: center;\n}\n\n/*\n.swatch__more-button {\n color: var(--primary);\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n}\n*/\n/* End Product color swatches */\n\n.fs-divider {\n border-top: 1px solid #e5dfd3;\n}\n\n.fs-col-header-wrapper {\n\tdisplay: flex;\n\tcolumn-gap: 2px;\n\tflex-wrap: nowrap;\n \tmargin-top: 20px;\n}\n\n.fs-toolbar .fs-collection-header {\n font-size: 24px;\n line-height: 30.47px;\n letter-spacing: 0.93px;\n font-weight: 600;\n text-align: left;\n margin-top: 0;\n}\n\n.fs-col-header-wrapper sup {\n font-size: 12px;\n font-weight: 600;\n vertical-align: super;\n display: none;\n}\n\n.fs-toolbar .fs-collection-description {\n\tfont-size: 14px;\n \tmargin-top: 15px;\n}\n\n.fs-toolbar .fs-toolbar__filter-options {\n\tmargin-top: 25px;\n}\n\n.fs-total-products {\n display: none;\n}\n\nfs-layout-header-wrapper {\n position: sticky;\n z-index: 5;\n top: 0;\n left: 0;\n width: 100%;\n padding: 0px 15px;\n background-color: #fff;\n}\n\n@media (min-width: 1200px) {\n fs-layout-header-wrapper {\n position: unset;\n padding: 0px 40px;\n }\n}\n\n.fs-layout-header {\n margin-top: 15px;\n padding: 0px;\n}\n\n.fs-main__sr-wrapper {\n margin-top: unset;\n}\n\n.fs-toolbar__product-model-filters,\n.fs-toolbar__sort-filter .fs-filters-icon__label {\n font-size: 12px;\n}\n\n.fs-filters-icon__icons .fs-icon svg {\n width: 15px;\n height: 15px;\n}\n\n.fs-sort-by-custom-dropdown.opened {\n line-height: 30px;\n font-size: 14px;\n}\n\n.fs-rotate-animation {\n -moz-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fs-sort-by-custom-wrapper svg {\n transition: transform 0.3s ease-in-out;\n}\n\n@media screen and (min-width: 768px) {\n .fs-toolbar__filter-options {\n justify-content: unset;\n align-items: center;\n gap: 20px;\n }\n\n .fs-toolbar__filter-options .fs-toolbar__product-model-filters__title {\n display: unset;\n }\n\n .fs-toolbar__filter-options .fs-toolbar__product-model-filters {\n display: flex;\n align-items: center;\n gap: 20px;\n }\n \n .fs-col-header-wrapper {\n\tmargin-top: 0;\n }\n\n .fs-toolbar .fs-collection-header {\n font-size: 26px;\n margin-top: 0;\n }\n\n .fs-toolbar__filter-options\n .fs-select.fs-select-lg.fs-select-single.fs-select-show-arrow {\n min-width: 165px;\n }\n\n .fs-main__toolbar {\n margin-top: 25px !important;\n }\n\n .fs-main__sr-wrapper {\n margin-top: 15px;\n }\n\n .fs-toolbar__product-model-filters,\n .fs-toolbar__sort-filter .fs-filters-icon__label {\n font-size: 14px;\n }\n\n .fs-filters-icon__icons .fs-icon svg {\n width: 20px;\n height: 20px;\n }\n\n .fs-toolbar__sort-filter .fs-filters-icon-wrapper {\n font-weight: 600;\n }\n\n .fs-sort-by-custom-dropdown.opened {\n line-height: 25px;\n }\n\n .fs-filters-icon__icons .fs-icon svg {\n width: 17px !important;\n height: 17px !important;\n }\n}\n\n/* Sort by */\n.fs-sort-by-custom .fs-sort-by-custom-wrapper {\n font-size: 12px;\n line-height: 14.06px;\n font-weight: 600;\n float: right;\n margin-right: 0;\n}\n\n.fs-sort-by-custom .fs-sort-by-custom-wrapper svg {\n margin-left: 9px;\n}\n\n.fs-toolbar__filter-options {\n position: relative;\n}\n\n.fs-sort-by-custom .fs-sort-by-custom-dropdown {\n visibility: hidden;\n opacity: 0;\n position: absolute;\n top: calc(100% + 1px);\n left: 0;\n z-index: 10;\n background-color: #fff;\n transition: all 0.3s;\n padding: 30px 18px;\n border-bottom: 1px solid #a5926d;\n width: 100%;\n}\n\n@media (min-width: 769px) {\n .fs-sort-by-custom {\n justify-self: flex-end;\n }\n\n .fs-sort-by-custom .fs-sort-by-custom-wrapper {\n font-size: 14px;\n line-height: 16.41px;\n }\n\n .fs-sort-by-custom .fs-sort-by-custom-dropdown {\n width: auto;\n left: auto;\n min-width: 300px;\n padding: 23px 40px;\n }\n\n .fs-sort-by-custom .fs-sort-by-custom-dropdown a {\n font-size: 14px;\n line-height: 24px;\n letter-spacing: 0.3px;\n }\n\n .fs-sort-by-custom .fs-sort-by-custom-dropdown.opened {\n opacity: 1;\n visibility: visible;\n }\n}\n\n.fs-sort-by-custom-dropdown-option.fs-sort-by-custom-dropdown-option--selected {\n /*background-color: lightgrey;*/\n}\n\n@media (max-width: 767px) {\n .fs-sort-by-custom .fs-sort-by-custom-dropdown.opened {\n display: block;\n visibility: visible;\n opacity: 1;\n right: 0;\n }\n}\n\n/* End Sort by */\n\n.fs-product-image__main-image,\n.fs-product-image__hover-image {\n animation: unset;\n transform: unset;\n}\n\n.fs-sr-item-wrapper:hover .fs-product-image__hover-image-wrapper {\n opacity: 0 !important;\n transform: unset;\n -webkit-transform: unset;\n}\n\n.fs-sr-grid-item__image:hover .fs-product-image__hover-image-wrapper {\n transition: unset !important;\n opacity: 1 !important;\n transform: unset !important;\n -webkit-transform: unset !important;\n}\n\n.fs-sr-grid-item__image .fs-product-image__hover-image-wrapper {\n transition: unset !important;\n}\n\n/* Product label */\n.fs-label-best-seller {\n background-color: #a5926d;\n color: #ffffff;\n display: block;\n\n font-size: 11px;\n\n border-radius: 4px;\n\n padding: 7px 10px;\n\n min-width: 60px;\n min-height: unset;\n width: fit-content;\n height: fit-content;\n padding: 5px;\n line-height: 1;\n\n position: relative;\n}\n\n.fs-label-best-seller.--square,\n.fs-label-best-seller.--diamond,\n.fs-label-best-seller.--circle {\n background-color: transparent !important;\n width: var(--shape-label-width-mob);\n height: var(--shape-label-width-mob);\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.fs-label-best-seller.--square::before,\n.fs-label-best-seller.--circle::before,\n.fs-label-best-seller.--diamond::before {\n content: \"\";\n width: 100%;\n height: 100%;\n border-radius: 4px;\n position: absolute;\n background-color: var(--shape-bg);\n left: 0;\n top: 0;\n z-index: -1;\n}\n\n.fs-label-best-seller.--circle::before {\n border-radius: 50%;\n}\n\n.fs-label-best-seller.--diamond::before {\n width: calc(var(--shape-label-width-mob) / 1.4142);\n height: calc(var(--shape-label-width-mob) / 1.4142);\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) rotate(45deg);\n}\n\n.fs-label--top-left {\n\ttop: 7px;\n\tleft: 7px\n}\n\n@media (min-width: 769px) {\n .fs-label-best-seller {\n padding: 7px 10px;\n }\n\n .fs-label-best-seller.--square,\n .fs-label-best-seller.--diamond,\n .fs-label-best-seller.--circle {\n width: var(--shape-label-width);\n height: var(--shape-label-width);\n }\n\n .fs-label-best-seller.--diamond::before {\n width: calc(var(--shape-label-width) / 1.4142);\n height: calc(var(--shape-label-width) / 1.4142);\n }\n\n .fs-label--top-left {\n\ttop: 8px;\n\tleft: 8px\n }\n}\n\n@media only screen and (max-width: 720px) {\n .fs-label-best-seller {\n font-size: 10px !important;\n }\n}\n\n/* End Product label */\n\n/* product price */\n.fs-sr-item__price .fs-price--type-sale {\n margin-left: 5px;\n}\n\n.fs-custom-price-range {\n display: flex;\n flex-wrap: wrap;\n\n line-height: 15px;\n padding-bottom: 0;\n margin-top: 2.5px;\n\n color: #222222;\n}\n\n.fs-price__split {\n padding-left: 5px;\n padding-right: 5px;\n}\n\n.fs-price--type-sale {\n margin-right: 0;\n}\n\n.fs-sr-grid-item__price {\n margin-bottom: 10px;\n}\n\n@media (max-width: 430px) {\n .fs-custom-price-range {\n font-size: 13px;\n line-height: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .fs-col-banner {\n max-width: 50%;\n flex: 0 0 50%;\n aspect-ratio: 2/1;\n }\n}\n\n.fs-col-banner__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.fs-sr-grid-item__review-rate {\n margin-top: -5px;\n}\n\n.fs-sr-grid-item__info {\n margin-right: 5px;\n}\n\n.fs-review-rate__text {\n margin-left: 5px;\n}\n\n.fs-sr-grid-item__review-rate\n .fs-sr-review-rate__review-rate\n .fs-review-rate__rate\n .fs-rate-star.fs-rate-star-full,\n.fs-sr-grid-item__review-rate\n .fs-sr-review-rate__review-rate\n .fs-review-rate__rate\n .fs-rate-star.fs-rate-star-half\n .fs-rate-star-first {\n color: #000 !important;\n}\n\n.anticon svg {\n font-size: 10px;\n}\n\n.fs-sr-grid-item__review-rate\n .fs-sr-review-rate__review-rate\n .fs-review-rate__text {\n font-size: 10px;\n font-style: italic;\n}\n\n@media (max-width: 768px) {\n fs-layout-header-wrapper {\n padding-left: 15px;\n padding-right: 15px;\n }\n\n .fs-sr-items {\n padding-left: 10px;\n padding-right: 10px;\n }\n}\n\n.fs-sr-paging .fs-pagination,\n.fs-pagination-item-link,\n.fs-pagination-item {\n border: none !important;\n}\n\n.fs-slider-mark-text {\n display: none;\n}\n\n.fs-filters-section-mobile .fs-drawer-content-wrapper {\n width: 100% !important;\n}\n\n.fs-filters-section-mobile .fs-collapse-content > .fs-collapse-content-box,\n.fs-filters-section-mobile\n .fs-collapse-icon-position-right\n > .fs-collapse-item\n > .fs-collapse-header {\n padding-left: 20px;\n padding-right: 20px;\n}\n\n.fs-filter__content-inner--phones .fs-filter-option-value {\n flex: 1;\n font-family: acumin-pro, sans-serif;\n}\n\n.fs-filter__iphone-icon {\n position: relative;\n width: 20px;\n height: 40px;\n margin-right: 5px;\n}\n\n.fs-filter__iphone-icon svg {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n}\n\n.collection-eb-wrapper {\n display: none;\n}\n\n@media (max-width: 768px) {\n .collection-eb-wrapper {\n display: block;\n }\n .fs-drawer-body {\n padding: 0 0 80px !important;\n }\n\n .fs-filter__content-inner--phones {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 13px 5px;\n margin-top: -15px;\n }\n .fs-filter__content-inner--phones .fs-filter-option {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n height: 108px;\n margin-bottom: 0;\n }\n .fs-filter__content-inner--phones .fs-filter-option-amount {\n display: none;\n }\n .fs-filter__content-inner--phones .fs-filter-option--selected {\n background: #e5dfd36b;\n border: 1px solid #000;\n font-weight: 400;\n }\n .fs-filter__content-inner--phones .fs-filter-option-value {\n flex: none;\n font-size: 12px;\n line-height: 15.6px;\n padding-bottom: 5px;\n letter-spacing: 0.02em;\n -webkit-transform: translateY(-2px);\n transform: translateY(-2px);\n }\n .fs-filter__content-inner--phones .fs-filter__iphone-icon {\n display: block;\n }\n .fs-filter__iphone-icon {\n margin: 0;\n width: 48.5px;\n height: 97px;\n }\n}\n\n/* scroll on mobile */\n@media screen and (max-width: 767px) {\n .fs-filter__content--scrollable {\n max-height: 220px;\n overflow-y: auto;\n overflow-x: hidden;\n width: 100%;\n }\n \n .fs-filter__content--scrollable::-webkit-scrollbar {\n width: 4px;\n }\n \n .fs-filter__content--scrollable::-webkit-scrollbar-thumb {\n background: #757575;\n }\n \n .fs-filter__content--scrollable::-webkit-scrollbar-track {\n background: #ebebeb;\n }\n}","origin":""},"js":{"current":"flashsearch.commonTemplates = {\n \"fs-price\": `\n

\n \n \n \n \n \n

\n `,\n\n \"fs-price-range\": `\n

\n `,\n\n \"fs-review-rate\": `\n \n \n {{text}} \n \n `,\n\n \"fs-custom-skeleton\": `\n

\n `,\n};\n\nflashsearch.searchResultsTemplates = {\n \"fs-app\": `\n \n \n \n `,\n\n \"fs-main\": `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

\n

\n

\n \n

\n

\n \n \n \n \n \n \n \n \n

\n

\n

\n

\n \n \n
\n

\n

\n
\n `,\n\n \"fs-collection-page-heading\": `\n

\n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-search-page-heading\": `\n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-collection-header\": `\n \n \n `,\n\n \"fs-search-section\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-toolbar\": `\n

\n\t\t\t

\n\t\t\t\t

\n\t\t\t\t{{ totalProducts }}\n

\n\t\t\t

\n\t\t\t\t{{ window?.FlashsearchThemeSettings?.general?.collection?.description }}\n

\n

\n

\n \n

\n \n | \n \n

\n

\n \n

\n

\n

\t\n

\n

\n

\n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-sr-empty-page\": `\n

\n

\n {{$t(\"searchResults.emptyPage.searchEmptyPageText\")}}\n

\n

\n {{$t(\"searchResults.emptyPage.collectionsEmptyPageText\")}}\n

\n

\n `,\n\n // Filters\n \"fs-filters-section-vertical\": `\n

\n

\n

\n

\n `,\n\n \"fs-filters-section-horizontal\": `\n

\n

\n

\n \n \n \n \n \n

\n

\n

\n `,\n\n \"fs-filters-section-horizontal-style-2\": `\n

\n

\n

\n {{$t(\"searchResults.toolbars.filters\")}}\n

\n

\n \n

\n

\n

\n `,\n\n \"fs-filters-section-filters-sidebar\": `\n

\n

\n \n \n

\n

\n {{ $t(\"searchResults.filter.showResults\", {count: (searchResult && searchResult.total > 0 ? searchResult.total : 0)}) }}\n

\n

\n

\n

\n

\n `,\n\n \"fs-filters-section-mobile\": `\n

\n

\n \n \n

\n

\n {{ $t(\"searchResults.filter.showResults\", {count: (searchResult && searchResult.total > 0 ? searchResult.total : 0)}) }}\n

\n

\n

\n

\n

\n `,\n\n \"fs-filter-by-each-filter\": `\n \n `,\n\n \"fs-filter-by\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

Filtered by

\n

\n

\n

\n

\n

\n

1)\"\n />\n

\n

\n `,\n\n \"fs-filter-by-option\": `\n

\n

\n {{label}}\n {{value}}\n

\n

\n `,\n\n \"fs-filters\": `\n \n \n `,\n\n \"fs-filter\": `\n \n \n \n \n \n \n \n \n `,\n\n // Filter types\n \"fs-filter-collection\": `\n

\n

\n

\n

\n

\n \n \n \n \n \n

\n

\n

\n

\n

\n 5\"\n :show-clear-btn=\"showClearBtn && isFilterOptionsDirty()\"\n :is-view-more-status=\"isViewMoreStatus\"\n @view-more=\"viewMore\"\n @on-clear-filter-options=\"clearFilterOptions\"\n />\n `,\n\n \"fs-filter-sub-collection\": `\n \n `,\n\n \"fs-filter-list\": `\n

\n

\n

\n

\n \n \n \n \n \n

\n

\n

\n

\n 5\"\n :show-apply-btn=\"showApplyBtn\"\n :show-clear-btn=\"showClearBtn && isFilterOptionsDirty()\"\n :is-view-more-status=\"isViewMoreStatus\"\n @view-more=\"viewMore\"\n @on-clear-filter-options=\"clearFilterOptions\"\n @on-apply-selections=\"filter.multipleSelection ? onApplySelections() : onApplySelection()\"\n />\n `,\n\n \"fs-filter-box\": `\n

\n

\n

\n

\n

\n

\n 4\"\n :show-apply-btn=\"showApplyBtn\"\n :show-clear-btn=\"showClearBtn && isFilterOptionsDirty()\"\n :is-view-more-status=\"isViewMoreStatus\"\n @view-more=\"viewMore\"\n @on-clear-filter-options=\"clearFilterOptions\"\n @on-apply-selections=\"filter.multipleSelection ? onApplySelections() : onApplySelection()\"\n />\n `,\n\n \"fs-filter-range\": `\n

\n

\n \n \n \n \n {{filter.range.rangeFormat.replace(\"{0}\", \"\").replace(\"{1}\", \"\")}}\n \n \n \n \n

\n

\n

\n

\n

\n \n `,\n\n \"fs-filter-review-rating\": `\n

\n

\n

\n \n `,\n\n \"fs-filter-stock-status\": `\n

\n

\n

\n \n \n \n \n \n

\n

\n

\n \n `,\n\n \"fs-filter-swatch\": `\n

\n

\n

\n

\n

\n

\n (isMobile ? 5 : 20)\"\n :show-apply-btn=\"showApplyBtn\"\n :show-clear-btn=\"showClearBtn && isFilterOptionsDirty()\"\n :is-view-more-status=\"isViewMoreStatus\"\n @view-more=\"viewMore\"\n @on-clear-filter-options=\"clearFilterOptions\"\n @on-apply-selections=\"filter.multipleSelection ? onApplySelections() : onApplySelection()\"\n />\n `,\n\n \"fs-filter-box-option\": `\n \n \n \n {{label}}\n \n \n \n \n `,\n\n \"fs-filter-list-option\": `\n

\n

\n

\n {{window.innerWidth > 768 ? label : label?.replace('iPhone ', '')}}\n

\n

\n

\n `,\n\n \"fs-filter-review-rating-option\": `\n \n \n \n {{rate}}\n \n \n \n \n \n `,\n\n \"fs-filter-swatch-option\": `\n \n \n

\n

\n \n \n {{label}}\n \n

\n

\n

\n

\n
\n
\n `,\n\n \"fs-filter-option-amount\": `\n \n ({{count}})\n \n `,\n\n \"fs-apply-filter-selections-btn\": `\n \n {{$t(\"searchResults.filter.applySelections\")}}\n \n `,\n\n \"fs-filter-actions\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n `,\n // End filter types\n\n \"fs-filters-icon\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n \n \n \n \n \n \n

\n {{$t(\"searchResults.toolbars.filters\")}}\n

\n

\n

\n \n \n \n

\n {{$t(\"searchResults.toolbars.filters\")}}\n

\n

\n

\n \n \n \n

\n {{$t(\"searchResults.toolbars.filters\")}}\n

\n

\n `,\n\n \"fs-button-clear-filter-option\": `\n \n {{$t(\"searchResults.filter.clear\")}}\n \n `,\n\n \"fs-button-clear-all-filter-options\": `\n \n {{$t(\"searchResults.filter.clearAll\")}}\n \n `,\n\n \"fs-button-view-more-filter-options\": `\n \n {{isViewMoreStatus ? $t(\"searchResults.filter.viewLess\") : $t(\"searchResults.filter.viewMore\")}}\n \n `,\n // End filters\n\n \"fs-searchbox-mobile\": `\n \n \n inputRef = el\"\n />\n \n \n \n \n \n \n \n `,\n\n \"fs-total-products\": `\n

\n

\n

\n

\n

\n \n

\n

\n `,\n\n \"fs-search-results-sort-by\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n \n

\n \n

    \n
  • \n {{label}}\n
  • \n

\n

\n \n

\n `,\n\n \"fs-product-buttons\": `\n \n \n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-product-image\": `\n

\n

\n \n

\n

\n

\n

\n

\n `,\n\n \"fs-product-label\": `\n \n \n {{$t(\"general.productLabel.soldOut\")}}\n \n \n {{$t(\"general.productLabel.new\")}}\n \n \n {{saleLabelType === \"percentage-label\" ? $t(\"general.productLabel.salePercentage\", {salePercentage: salePercentage}) : $t(\"general.productLabel.sale\")}}\n \n \n \n {{ fsGetBestSellerLabel(product).text }}\n \n \n `,\n\n \"fs-product-title\": `\n

\n \n

\n `,\n\n \"fs-sr-review-rate\": `\n

0\" class=\"fs-sr-review-rate\" data-testid=\"sr-review-rate\">\n

1 ? (count + ' ' + reviewsText) : (count + ' ' + reviewText))\"\n />\n
\n `,\n\n \"fs-product-vendor\": `\n

\n \n

\n `,\n\n \"fs-product-description\": `\n

{{description.replace(/<[^>]*>/g, \"\")}}

\n `,\n\n \"fs-product-color\": `\n \n \n \n \n \n \n \n `,\n\n \"fs-product-colors\": `\n

\n

\n \n \n \n \n View more\n \n

\n `,\n\n \"fs-product-sizes\": `\n

0\">\n {{getVariantSizes(product).join(\", \")}}\n

\n `,\n\n \"fs-wishlist\": `\n \n

\n \n ...\n

\n \n \n \n \n \n \n \n \n `,\n\n \"fs-quick-view-item\": `\n \n \n \n \n \n \n \n

\n

\n

\n

\n

\n
\n
\n \n

\n

\n

\n

\n

\n

\n

\n

{{product.vendor}}

\n

\n

\n \n \n \n {{value}}\n \n \n \n

\n

\n \n

\n

\n \n {{$t(\"searchResults.quickView.addToCart\")}}\n \n \n {{$t(\"searchResults.quickView.soldOutButton\")}}\n \n \n {{$t(\"searchResults.quickView.unavailable\")}}\n \n

\n

\n \n

\n

\n

\n

\n

\n {{$t(\"searchResults.quickView.soldOutButton\")}}\n

\n

\n

\n

\n

\n

\n \n \n \n `,\n\n \"fs-search-results-grid-view-item\": `\n

\n

\n

\n

\n

\n \n \n \n \n \n

\n

\n

\n

\n \n

\n

\n \n

\n {{ fsGetProductShortTitle(product) }}\n \n

\n {{ product.title?.split(\"-\").at(-1) }}\n \n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-search-results-list-view-item\": `\n

\n

\n

\n \n \n

\n

\n \n \n \n \n \n
\n
\n \n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n
\n

\n

\n

\n `,\n\n \"fs-search-results-items\": `\n

\n \n \n \n \n

\n `,\n\n \"fs-search-results-views\": `\n

\n

\n \n

\n

\n \n

\n \n

\n

\n \n

\n \n

\n

\n

\n `,\n\n \"fs-search-results-views-backup\": `\n

\n

\n

\n

\n

\n

\n \n

\n

\n \n

\n

\n

\n `,\n\n \"fs-custom-pagination\": `\n

\n

\n \n

\n

\n

\n

\n

\n {{$t(\"searchResults.pagination.loadMoreTotal\", {current: currentNumOfProducts, total: total})}}\n

\n

\n {{$t(\"searchResults.pagination.loadMore\")}}\n

\n

\n

\n

infiniteLoadingRef = ref\"\n class=\"fs-load-more-paging\"\n data-testid=\"sr-pa-infinite-loading\"\n >\n

\n

\n

\n `,\n\n \"fs-skeleton-product-image\": `\n

\n `,\n\n \"fs-skeleton-product-title\": `\n

\n `,\n\n \"fs-skeleton-product-text\": `\n

\n `,\n\n \"fs-input-number-custom\": `\n

\n \n \n

\n `,\n};\n\nflashsearch.instantSearchTemplates = {\n \"fs-app\": `\n

\n

\n

\n

\n \n

\n `,\n\n \"fs-instant-search\": `\n

isWrapperRef = ref\"\n v-show=\"enablePopup\"\n class=\"fs-is-wrapper\"\n :class=\"{'fs-is--layout-vertical': isVerticalLayout}\"\n :style=\"isStyles\"\n @touchmove=\"() => document.activeElement.blur()\"\n data-testid=\"is-wrapper\"\n >\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n \n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n \n

\n

\n

\n

\n `,\n\n \"fs-is-suggestions\": `\n

\n

\n

\n

\n `,\n\n \"fs-is-collections\": `\n

\n

\n

\n

\n `,\n\n \"fs-is-pages\": `\n

\n

\n

\n

\n `,\n\n \"fs-is-product-items\": `\n

\n

\n

\n

\n

\n

\n `,\n\n \"fs-is-product-item\": `\n

\n \n

\n \n \n \n Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (10)\n \n

\n

\n

\n

\n

\n {{product.title}}\n

\n

\n

\n

\n

\n

\n

\n

\n {{$t(\"instantSearch.labels.sku\")}}: {{sku}}\n

\n

\n

\n {{product.vendor}}\n

\n

\n

\n

\n

\n `,\n\n \"fs-is-did-you-mean\": `\n

\n

\n \n

\n

\n \n

\n

\n `,\n\n \"fs-instant-search-desktop\": `\n

\n `,\n\n \"fs-instant-search-mobile\": `\n

\n

\n

\n

\n `,\n\n \"fs-highlighter\": `\n \n {{chunkItem.text}}\n \n `,\n\n \"fs-highlight-text\": `\n

\n `,\n\n \"fs-is-suggestion-item\": `\n

\n \n

\n `,\n\n \"fs-is-item\": `\n

\n

\n

\n `,\n\n \"fs-is-item-label\": `\n

{{ label }}

\n `,\n\n \"fs-is-review-rate\": `\n

0\" class=\"fs-is-review-rate\" data-testid=\"is-review-rate\">\n

\n

\n `,\n\n \"fs-is-searchbar-mobile\": `\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n `,\n};\n\n/*\n You can add any functions, variables ... like normal javascript codes\n And use it on every templates above\n Examples:\n - Define a function:\n function getImageSize() {};\n - And using this function on templates:\n Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (11){{getImageSize(product.url)}}\n */\n\nflashsearch.event.on(\"initSearchResults\", function (app) {\n /*\n You can create a component and using it on search results templates.\n Examples:\n - Create a component for \"Search results\" area:\n app.createComponent(\"fs-my-custom\", {\n template: `

this is my custom component

`\n })\n - Then using it on search results templates:\n

\n - Or event with more complex component with props:\n app.createComponent(\"fs-my-custom\", {\n props: {msg: String},\n template: `

here is my message: {{msg}}

`\n })\n */\n});\n\nflashsearch.event.on(\"initInstantSearch\", function (app) {\n /*\n You can create a component and using it on Instant search templates.\n Examples:\n - Create a component for \"Instant search\" area:\n app.createComponent(\"fs-my-custom\", {\n template: `

this is my custom component

`\n })\n - Then using it on Instant search templates:\n

\n - Or event with more complex component with props:\n app.createComponent(\"fs-my-custom\", {\n props: {msg: String},\n template: `

here is my message: {{msg}}

`\n })\n */\n});\n\nfunction isViewActive(view) {\n const params = new URLSearchParams(document.location.search);\n const name = params?.get(\"product_view\");\n return (!view && name !== \"lifestyle\") || name === view\n ? \"fs-product-view-active\"\n : \"\";\n}\n\nfunction hideProduct(product) {\n let hide = false;\n\n if (\n product.tags?.includes(\"__hidden__\") &&\n FlashsearchCustomSettings?.current_collection === \"all\"\n ) {\n hide = true;\n }\n\n product.variants?.forEach((variant) => {\n const variantTitle = window.formatTitle(variant.title);\n let collectionHandle = getHandleFromCollection(variant);\n let variantHandle = getHandleFromVariant(variant);\n if (collectionHandle === \"iphonese\") collectionHandle = \"iphonese876\";\n\n const isVariantCollection = collectionHandle === variantHandle;\n\n if (isVariantCollection) {\n if (\n product.productType === \"pack\" ||\n product.tags.includes(`hide_${variantTitle}`) ||\n (variant.inventoryQuantity <= 5 &&\n product.productType !== \"pack\" &&\n !product.tags.includes(\"sell-out\"))\n ) {\n hide = true;\n }\n }\n });\n\n if (!hide && location.pathname.includes(\"/collections/all\")) {\n const isAllVariantsOutOfStock = product.variants?.every((variant) => {\n if (\n variant.inventoryQuantity <= 5 &&\n product.productType !== \"pack\" &&\n !product.tags.includes(\"sell-out\")\n ) {\n return true;\n }\n return false;\n });\n\n hide = isAllVariantsOutOfStock;\n }\n\n return hide;\n}\n\nfunction getHandleFromCollection(productVariantHandle) {\n var currentPage = FlashsearchCustomSettings.current_collection\n .replace(/-/g, \"\")\n .replace(/[\\/\\\\]/g, \"\")\n .replace(\"size\", \"\")\n .replace(\"shop\", \"\");\n\n //Manage iPhone X/XS Case\n if (currentPage.includes(\"xsx\") || currentPage.includes(\"xxs\")) {\n currentPage = \"iphonexsx\";\n }\n\n //Manage iPhone 876/SE Case\n if (currentPage.includes(\"876\") && !currentPage.includes(\"plus\")) {\n currentPage = \"iphonese876\";\n }\n if (currentPage === \"iphonese\" && productVariantHandle === \"iphonese876\") {\n currentPage = \"iphonese876\";\n }\n\n return currentPage;\n}\n\nfunction getHandleFromVariant(variant) {\n return window\n .formatTitle(variant.title)\n .toLowerCase()\n .replace(/\\s/g, \"\")\n .replace(/[\\/\\\\]/g, \"\");\n}\n\n// ========================================= Show view more button =========================================\nfunction fsIsShowMore(product) {\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"swatches.all_colors_json\") {\n const metaColors = JSON.parse(metafield.valueString);\n return metaColors.length > 7;\n }\n }\n\n return false;\n}\n\nfunction waitForElm(selector) {\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver((mutations) => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n}\n\nfunction fsGetProductColorHideClass(index) {\n if (index >= 7) {\n return \"fs-product-color__hide-color\";\n }\n}\n\nfunction fsHandleClickShowMore(productId) {\n const productColorEles = document.querySelectorAll(\n `[data-product-id='${productId}'] .fs-sr-grid-item__info .fs-product-color`\n );\n const maxTotal = productColorEles.length < 20 ? productColorEles.length : 20;\n\n productColorEles.forEach((ele, ind) => {\n if (ind < maxTotal && ind >= 7) {\n ele?.classList?.remove(\"fs-product-color__hide-color\");\n }\n });\n\n // Remove show more button\n const showMoreBtnEle = document.querySelector(\n `[data-product-id='${productId}'] .fs-sr-grid-item__info .fs-product-color__view-more-btn`\n );\n showMoreBtnEle.classList.add(\"fs-product-color__hide-color\");\n\n // Show separate more button\n if (maxTotal === 20) {\n const showMoreSeparateBtnEle = document.querySelector(\n `[data-product-id='${productId}'] .fs-sr-grid-item__info .fs-view-more-separate`\n );\n showMoreSeparateBtnEle.classList.remove(\"fs-product-color__hide-color\");\n }\n}\n\n// ========================================= Product short title =========================================\nfunction fsGetProductShortTitle(product) {\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"product.short_title\") {\n return metafield.valueString;\n }\n }\n return \"\";\n}\n\n// ========================================= Product Model view =========================================\nvar fsCustomView =\n new URLSearchParams(document.location.search).get(\"product_view\") ===\n \"lifestyle\"\n ? \"model\"\n : \"product\";\n\nfunction getFsCustomView() {\n return fsCustomView;\n}\n\nfunction fsApplyCustomView() {\n const imageWrapperElements = document.querySelectorAll(\n \".fs-sr-grid-item .fs-sr-grid-item__image\"\n );\n\n for (let i = 0; i < imageWrapperElements.length; i++) {\n const imageWrapperElement = imageWrapperElements[i];\n const imageInnerelement = imageWrapperElement.querySelector(\n \".fs-product-image__main-image-wrapper\"\n );\n\n const mainImageElement = imageWrapperElement.querySelector(\n \".fs-product-image__main-image\"\n );\n const secondImageElement = imageWrapperElement.querySelector(\n \".fs-product-image__hover-image\"\n );\n\n if (mainImageElement?.style && secondImageElement?.style) {\n const mainImage = mainImageElement.style.backgroundImage;\n const secondImage = secondImageElement.style.backgroundImage;\n\n let mainDataImage = imageInnerelement.dataset.main;\n let secondDataImage = imageInnerelement.dataset.second;\n\n if (!mainDataImage?.includes(\"url(\"))\n mainDataImage = `url(${mainDataImage})`;\n if (!secondDataImage?.includes(\"url(\"))\n secondDataImage = `url(${secondDataImage})`;\n\n if (!mainDataImage || !secondDataImage) {\n imageInnerelement.setAttribute(\"data-main\", mainImage);\n imageInnerelement.setAttribute(\"data-second\", secondImage);\n\n mainDataImage = imageInnerelement.dataset.main;\n secondDataImage = imageInnerelement.dataset.second;\n }\n\n if (fsCustomView === \"product\") {\n mainImageElement.style.backgroundImage = mainDataImage;\n secondImageElement.style.backgroundImage = secondDataImage;\n } else {\n mainImageElement.style.backgroundImage = secondDataImage;\n secondImageElement.style.backgroundImage = mainDataImage;\n }\n\n if (mainImageElement?.classList?.contains(\"fs-lazyload\")) {\n mainImageElement.setAttribute(\n \"fs-data-bgset\",\n mainImageElement.style.backgroundImage\n );\n mainImageElement.classList.replace(\"fs-lazyload\", \"fs-loaded\");\n secondImageElement.setAttribute(\n \"fs-data-bgset\",\n secondImageElement.style.backgroundImage\n );\n secondImageElement.classList.replace(\"fs-lazyload\", \"fs-loaded\");\n }\n }\n }\n}\n\nfunction fsHandleViewProduct() {\n if (fsCustomView === \"product\") {\n return;\n }\n fsCustomView = \"product\";\n fsApplyCustomView();\n\n // Add and remove class active for product model views\n console.log(\"Get in view product\");\n const viewProductEle = document.querySelector(\".fs-toolbar__view-product\");\n viewProductEle.classList.add(\"fs-product-view-active\");\n const viewModelEle = document.querySelector(\".fs-toolbar__view-model\");\n viewModelEle.classList.remove(\"fs-product-view-active\");\n}\n\nfunction fsHandleViewModel() {\n if (fsCustomView === \"model\") {\n return;\n }\n\n fsCustomView = \"model\";\n fsApplyCustomView();\n\n // Add and remove class active for product model views\n console.log(\"Get in view model\");\n const viewProductEle = document.querySelector(\".fs-toolbar__view-product\");\n viewProductEle.classList.remove(\"fs-product-view-active\");\n const viewModelEle = document.querySelector(\".fs-toolbar__view-model\");\n viewModelEle.classList.add(\"fs-product-view-active\");\n}\n\nfunction _fsGetMainProductImage(product) {\n if (!product || (product && product?.images && product.images.length === 0)) {\n return;\n }\n\n if (product.images.length < 3) {\n return product.featuredImage ? props.product.featuredImage : undefined;\n }\n\n return product.images[0];\n}\n\nfunction fsGetMainProductImage(product) {\n const image = _fsGetMainProductImage(product);\n if (!image) {\n return \"\";\n }\n\n return image.originalSrc;\n}\n\nfunction fsGetMainProductImageAspectRatio(product) {\n const image = _fsGetMainProductImage(product);\n if (!image) {\n return;\n }\n\n return image.width / image.height;\n}\n\nfunction _fsGetSecondProductImage(product) {\n if (!product || (product && product?.images && product.images.length === 0)) {\n return;\n }\n\n let allow_custom_index = false;\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"custom.allow_custom_hover_image\") {\n if(metafield.valueString === 'true') {\n \t \tallow_custom_index = true;\n \t }\n }\n }\n\n let imageIndex = window.settings.col_prods_hover_image;\n imageIndex = !imageIndex || !allow_custom_index ? 2 : imageIndex - 1;\n\n if (product.images.length < imageIndex + 1) {\n return product.featuredImage ? props.product.featuredImage : undefined;\n }\n\n return product.images[imageIndex];\n}\n\nfunction fsGetSecondProductImage(product) {\n const image = _fsGetSecondProductImage(product);\n if (!image) {\n return \"\";\n }\n\n return image.originalSrc;\n}\n\nfunction fsGetSecondProductImageAspectRatio(product) {\n const image = _fsGetSecondProductImage(product);\n if (!image) {\n return;\n }\n\n return image.width / image.height;\n}\n// End Product Model view\n\n// ========================================= Show Product Colors =========================================\nvar isShowMore;\nfunction fsGetProductColors(product) {\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"swatches.all_colors_json\") {\n const metaColors = JSON.parse(metafield.valueString);\n const variantColors = [];\n\n //const productLength = metaColors.length <= 7 ? metaColors.length : 7;\n\n for (let i = 0; i < metaColors.length; i++) {\n variantColors.push(metaColors[i]?.color);\n\n //waitForElm('.some-class').then((elm) => {\n //console.log('Element is ready');\n //console.log(elm.textContent);\n //});\n }\n\n return variantColors;\n }\n }\n return \"\";\n}\n\nfunction fsGetColorImageUrl(color) {\n const swatches = window.FlashsearchCustomSwatchesJson;\n if (!swatches) return \"\";\n\n for (let [key, value] of Object.entries(swatches)) {\n if (value?.name === color) {\n return value.image;\n }\n }\n\n return \"\";\n}\n\nfunction waitForElm(selector) {\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver((mutations) => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n}\n\nconst cacheFetchSwatchColorAjax = {};\nflashsearch.event.on(\"productsFetched\", function () {\n waitForElm(\n \".fs-sr-items .fs-sr-item-wrapper[data-product-handle][data-product-id]\"\n ).then(function () {\n //console.log(\"GRID ITEM LOADED 2 ....\");\n document.querySelectorAll(\".fs-sr-item-wrapper\").forEach(function (item) {\n var productHandle = item.getAttribute(\"data-product-handle\");\n var productId = item.getAttribute(\"data-product-id\");\n\n let url = `/products/${productHandle}?view=ajax-swatches`;\n\n if (window.location.pathname.includes(\"collection\")) {\n url = `${window.location.pathname}${url}`;\n }\n\n fetch(url)\n .then((res) => res.text())\n .then((text) => {\n if (text.includes(\"404 Not Found\")) return null;\n document.getElementById(\n `fs-product-colors-container-${productId}`\n ).innerHTML = text;\n cacheFetchSwatchColorAjax[productId] = true;\n });\n });\n\n const productBlocks = document.querySelectorAll(\".fs-sr-grid-item-wrapper\");\n const extra_block_data_json = document.querySelector(\n \"#collection-extra-block\"\n );\n if (extra_block_data_json && productBlocks.length % 2 !== 0) {\n const eb_data = JSON.parse(extra_block_data_json.innerText);\n if (eb_data.text) {\n const eb = `\n

\n

\n ${\n eb_data.icon\n ? `Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (12)`\n : \"\"\n }\n

\n ${eb_data.text}\n

\n

VERSION 1\");\ndocument.addEventListener(\"click\", function (e) {\n const target = e.target.closest(\".js-swatches-container .js-show-swatches\"); // Or any other selector.\n\n if (target) {\n e.preventDefault();\n var swatchContainerElement = e.target.closest(\".js-swatches-container\");\n swatchContainerElement\n .querySelectorAll(\".swatch.js-hidden\")\n .forEach((element) => element.classList.remove(\"js-hidden\"));\n swatchContainerElement.querySelector(\".js-show-swatches\").remove();\n swatchContainerElement\n .querySelector(\".js-hidden.js-swatch:not(.swatch)\")\n .classList.remove(\"js-hidden\");\n }\n});\n\nfunction fsUpdateProductImages(\n imageWrapperElement,\n productImageUrl,\n modeImageUrl\n) {\n const innerElement = imageWrapperElement.querySelector(\n \".fs-product-image__main-image-wrapper\"\n );\n const mainImageElement = imageWrapperElement.querySelector(\n \".fs-product-image__main-image\"\n );\n const secondImageElement = imageWrapperElement.querySelector(\n \".fs-product-image__hover-image\"\n );\n\n innerElement.setAttribute(\"data-main\", productImageUrl);\n innerElement.setAttribute(\"data-second\", modeImageUrl);\n\n var mainImage = \"\";\n var secondImage = \"\";\n if (fsCustomView === \"product\") {\n mainImage = productImageUrl;\n secondImage = modeImageUrl;\n } else {\n mainImage = modeImageUrl;\n secondImage = productImageUrl;\n }\n\n mainImageElement.style.backgroundImage = mainImage;\n secondImageElement.style.backgroundImage = secondImage;\n}\n\nfunction handleHoverSwatch(e) {\n const target = e.target.closest(\".js-swatches-container .swatch\"); // Or any other selector.\n\n if (target) {\n e.preventDefault();\n let href = target.querySelector(\"a\").dataset.href;\n let {\n price,\n priceMin,\n comparePrice,\n priceMax,\n comparePriceMax,\n name,\n discount,\n labelText,\n labelBg,\n labelFg,\n labelShape,\n } = target.querySelector(\"a\")?.dataset || {};\n\n price = parseFloat(price);\n priceMin = parseFloat(priceMin);\n priceMax = parseFloat(priceMax);\n comparePrice = parseFloat(comparePrice);\n comparePriceMax = parseFloat(comparePriceMax);\n\n if (isOtherCollection) {\n price = parseFloat(priceMax);\n comparePrice = parseFloat(comparePriceMax);\n }\n if (price === comparePrice) comparePrice = 0;\n\n var swatchContainerElement = e.target.closest(\".js-swatches-container\");\n\n swatchContainerElement\n .querySelectorAll(\".swatch\")\n .forEach((element) => element.classList.remove(\"active\"));\n target.classList.add(\"active\");\n\n var gridItemElement = swatchContainerElement.closest(\".fs-sr-grid-item\");\n var gridItemImageElement = gridItemElement.querySelector(\n \".fs-sr-grid-item__image\"\n );\n\n var productImageUrl = target\n .querySelector(\"a\")\n .getAttribute(\"data-thumbnail-product\");\n var modelImageUrl = target\n .querySelector(\"a\")\n .getAttribute(\"data-thumbnail-model\");\n fsUpdateProductImages(\n gridItemImageElement,\n `url(https:${productImageUrl})`,\n `url(https:${modelImageUrl})`\n );\n\n if (href) {\n var productImageLink = gridItemImageElement.querySelector(\"a\");\n [productImageLink].forEach((link) => {\n link.href = href;\n });\n }\n\n const $productColor = gridItemElement.querySelector(\".product-loop-title\");\n const $price = gridItemElement.querySelector(\".fs-price\");\n const $label = gridItemElement.querySelector(\".fs-label-best-seller\");\n const $labelContainer =\n $label?.parentElement ||\n gridItemElement.querySelector(\".fs-label-wrapper\");\n\n if ($label) {\n $labelContainer.removeChild($label);\n }\n\n if ($price) {\n $price.innerHTML = renderPrice({\n priceVaries: {\n priceMin: priceMin / 100,\n priceMax: priceMax / 100,\n priceCompMin: comparePrice / 100,\n priceCompMax: comparePriceMax / 100,\n },\n hasDiscount: discount,\n });\n }\n\n if ($productColor && name) {\n $productColor.innerText = name;\n }\n\n if (labelText) {\n const newLabel = document.createElement(\"span\");\n newLabel.classList.add(\n \"fs-label-best-seller\",\n `--${labelShape}`,\n \"ss\",\n labelBg,\n labelFg\n );\n newLabel.setAttribute(\n \"style\",\n `--shape-bg: ${labelBg}; background-color: ${labelBg}; color: ${labelFg};`\n );\n newLabel.innerText = labelText;\n $labelContainer.appendChild(newLabel);\n }\n }\n}\n\nfunction handleClickSwatch(e) {\n const target = e.target.closest(\".js-swatches-container .swatch\"); // Or any other selector.\n\n if (target) {\n e.preventDefault();\n let href = target.querySelector(\"a\").dataset.href;\n if (!href) return;\n\n window.location.href = href;\n }\n}\n\nif (window.innerWidth > 768) {\n document.addEventListener(\"mouseover\", function (e) {\n handleHoverSwatch(e);\n });\n document.addEventListener(\"click\", function (e) {\n handleClickSwatch(e);\n });\n} else {\n document.addEventListener(\"click\", function (e) {\n handleHoverSwatch(e);\n });\n}\n\n// ========================================= Sort by =========================================\nfunction fsOnClickSortByButton(shouldOpenSortBy, openSortBy, closeSortBy) {\n if (shouldOpenSortBy) {\n closeSortBy();\n const iconEle = document.querySelector(\".fs-sort-by-custom-wrapper svg\");\n iconEle?.classList?.remove(\"fs-rotate-animation\");\n } else {\n const iconEle = document.querySelector(\".fs-sort-by-custom-wrapper svg\");\n iconEle?.classList?.add(\"fs-rotate-animation\");\n openSortBy();\n }\n}\n\n// ========================================= Best seller label =========================================\nfunction fsGetBestSellerLabel(product) {\n if (!product || (product && !product?.metafields)) {\n return;\n }\n const labelData = {};\n for (const metafield of product?.metafields) {\n if (metafield?.namespaceKey === \"label.label\") {\n labelData.text = metafield.valueString;\n }\n if (metafield?.namespaceKey === \"label.text-color\") {\n labelData.fg = metafield.valueString;\n }\n if (metafield?.namespaceKey === \"label.background-color\") {\n labelData.bg = metafield.valueString;\n }\n if (metafield?.namespaceKey === \"label.shape\") {\n labelData.shape = \"--\" + metafield.valueString;\n }\n }\n return labelData.text ? labelData : null;\n}\n\n// ========================================= Best seller label =========================================\nfunction fsGetHideSale(product) {\n const excludedVariants = FlashsearchCustomSettings.variants_to_exclude\n .replace(/\\s/g, \"\")\n .split(\",\");\n\n let hideSale = false;\n let currentVariant = null;\n\n try {\n product.variants?.forEach((variant) => {\n const variantTitle = window.formatTitle(variant.title);\n const variantHandle = getHandleFromVariant(variant);\n const collectionHandle = getHandleFromCollection(variantHandle);\n\n if (variantHandle === collectionHandle) {\n hideSale = true;\n currentVariant = variant;\n }\n\n if (excludedVariants.includes(variantTitle)) {\n hideSale = true;\n }\n });\n\n return { hideSale, currentVariant };\n } catch (error) {\n console.log(\"Error on fsGetHideSale:\", error);\n return { hideSale, currentVariant };\n }\n}\n\nfunction fsGetVariants(product) {\n if (!product || !product.variants) return [];\n\n const excludedVariants = FlashsearchCustomSettings.variants_to_exclude\n .replace(/\\s/g, \"\")\n .split(\",\");\n\n let variants = [];\n\n for (let index = 0; index < product.variants.length; index++) {\n const variant = product.variants[index];\n\n const variantTitle = window.formatTitle(variant.title);\n const variantHandle = getHandleFromVariant(variant);\n const collectionVariantHandle = getHandleFromCollection(variantHandle);\n\n if (collectionVariantHandle === variantHandle) {\n variants = [variant];\n break;\n }\n\n if (excludedVariants.includes(variantTitle)) {\n continue;\n }\n\n variants.push(variant);\n }\n\n return variants;\n}\n\n// ========================================= product price more =========================================\nvar isOtherCollection = !window.location.pathname.includes(\"iphone-\");\n\nfunction fsWrapProductForPrice(product) {\n if (fsHideVariantsPrice()) {\n product = fsExcludePrices(product);\n } else {\n const prices = getPriceVaries(product);\n product.priceMin = prices.priceMin;\n product.priceMax = prices.priceMax;\n product.compareAtPriceMin = prices.priceCompMin;\n product.compareAtPriceMax = prices.priceCompMax;\n }\n\n product.priceVaries = !(product.priceMin == product.priceMax);\n return product;\n}\n\nfunction fsHideVariantsPrice() {\n return window.FlashsearchCustomSettings?.hide_variants_price;\n}\n\nfunction fsExcludePrices(product) {\n if (!product) return;\n\n //var product = {...productInput};\n\n const excludedVariants = FlashsearchCustomSettings.variants_to_exclude\n .replace(/\\s/g, \"\")\n .split(\",\");\n var currentPage = FlashsearchCustomSettings.current_collection\n .replace(/-/g, \"\")\n .replace(/[\\/\\\\]/g, \"\")\n .replace(\"size\", \"\")\n .replace(\"shop\", \"\");\n\n let isCollectionVariant = false;\n let variants = [];\n product.variants?.forEach((variant) => {\n const variant_title = window.formatTitle(variant.title).toLowerCase();\n const variantTitle = variant_title\n .replace(/\\s/g, \"\")\n .replace(/[\\/\\\\]/g, \"\"); //Remove spaces from title\n const transformedVariant = variantTitle\n .toLowerCase()\n .replace(/[\\/\\\\]/g, \"\");\n\n //Manage iPhone X/XS Case\n if (currentPage.includes(\"xsx\") || currentPage.includes(\"xxs\")) {\n currentPage = \"iphonexsx\";\n }\n\n //Manage iPhone 876/SE Case\n if (currentPage.includes(\"876\") && !currentPage.includes(\"plus\")) {\n currentPage = \"iphonese876\";\n }\n if (currentPage === \"iphonese\" && transformedVariant === \"iphonese876\") {\n currentPage = \"iphonese876\";\n }\n\n if (transformedVariant === currentPage) {\n variants = [variant];\n isCollectionVariant = true;\n }\n\n var data = product;\n\n if (isCollectionVariant) return;\n if (excludedVariants.includes(variantTitle)) return;\n if (product.productType !== \"pack\" && variant.inventoryQuantity <= 5)\n return;\n variants.push(variant);\n });\n product.variants = variants;\n\n const prices = getPriceVaries(product);\n\n product.priceMin = prices.priceMin;\n product.priceMax = prices.priceMax;\n product.compareAtPriceMin = prices.priceCompMin;\n product.compareAtPriceMax = prices.priceCompMax;\n\n var priceVaries = prices.priceMin != prices.priceMax;\n var onSale;\n if (prices.priceCompMin == null || prices.priceCompMax == null) {\n onSale = false;\n } else {\n onSale =\n prices.priceCompMin > prices.priceMin ||\n prices.priceCompMax > prices.priceMax;\n }\n product.onSale = onSale;\n product.priceVaries = priceVaries;\n\n return product;\n}\n\nfunction renderReviews(product) {\n return `\n

\n `;\n}\n\nfunction renderPrice({ product, priceVaries = {}, hasDiscount }) {\n const { hideSale, currentVariant } = product ? fsGetHideSale(product) : {};\n const { priceMin, priceMax, priceCompMin, priceCompMax } = product\n ? getPriceVaries(product)\n : priceVaries;\n\n const _priceMin = Shopify.formatMoney(priceMin * 100, Shopify.money_format);\n const _priceMax = Shopify.formatMoney(priceMax * 100, Shopify.money_format);\n const _priceCompMin = Shopify.formatMoney(\n priceCompMin * 100,\n Shopify.money_format\n );\n const _priceCompMax = Shopify.formatMoney(\n priceCompMax * 100,\n Shopify.money_format\n );\n\n const isOnSale =\n hasDiscount ||\n product?.variants?.find(\n (variant) => variant.compareAtPrice > variant.price\n );\n\n // Color Start\n let color = product?.productType === \"Gift Card\" ? \"black\" : \"red\";\n // Color End\n let hideCompareAtPrice = product?.productType == \"Gift Card\";\n\n if (hideSale) {\n return `\n \n priceMin ? \"fs-price--type-origin\" : \"\"\n }\">${_priceMin}\n ${\n priceCompMax > priceMin\n ? `${_priceCompMax}`\n : \"\"\n }\n \n `;\n } else if (\n window.settings.prices.enable_custom_fromto &&\n priceMax > priceMin\n ) {\n return `\n \n From\n \n ${_priceMin}\n to\n ${_priceMax}\n \n \n\t\t${!hideCompareAtPrice ? `\n ${\n priceCompMax > priceMax ? _priceCompMax : _priceMax\n }` : ''}\n `;\n } else if (\n priceCompMin > priceMin &&\n (!isOtherCollection || window.settings.prices.enable_custom_fromto)\n ) {\n return `\n \n ${_priceMin}\n ${_priceCompMin}\n \n `;\n } else {\n const price = !isOtherCollection ? _priceMin : _priceMax;\n return `\n ${price}\n `;\n }\n}\n\nfunction renderCollectionGridBanner() {\n try {\n if(window.settings?.global_col_grid_img && window.settings?.global_col_grid_img_url){\n\t\treturn ``\n\t} else if(window.settings?.global_col_grid_img) {\n\t\treturn `Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (14)`\n\t} else if (FlashsearchCustomSettings.collection_second_image_link) {\n return ``;\n } else {\n return `Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (16)`;\n }\n } catch (error) {\n return \"\";\n }\n}\n\nfunction renderCollectionGridBannerSquare() {\n try {\n\tif(FlashsearchCustomSettings.collection_third_image_link) {\n return ``;\n } else {\n return `Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (18)`;\n }\n } catch (error) {\n return \"\";\n }\n}\n\nfunction getHeaderHeight() {\n try {\n const header = document.querySelector(\"#shopify-section-header\");\n const phoneSizes = document.querySelector(\n \"#shopify-section-collection-phone-sizes\"\n );\n const shippingBanner = document.querySelector(\"#FreeShippingBanner\");\n\n let headerHeight = header.offsetHeight;\n let totalHeight = headerHeight;\n if (phoneSizes) {\n totalHeight = phoneSizes.offsetHeight;\n }\n\n let shippingBannerHeight = 0;\n if (shippingBanner) {\n shippingBannerHeight = shippingBanner.offsetHeight;\n }\n\n headerHeight += shippingBannerHeight;\n totalHeight += shippingBannerHeight;\n\n return { totalHeight, headerHeight };\n } catch {\n return { totalHeight: 0, headerHeight: 0 };\n }\n}\n\nfunction getIphoneIcon(title) {\n if (!title) return null;\n title = title.replace(\"iPhone \", \"\");\n title = title.trim().replace(/\\s\\s+/g, \" \");\n return iphoneIcons?.[title]?.icon || null;\n}\n\nwindow.addEventListener(\"scroll\", () => {\n if (window.innerWidth <= 768) {\n const { totalHeight, headerHeight } = getHeaderHeight();\n\n const filterOptions = document.querySelector(\"fs-layout-header-wrapper\");\n\n if (filterOptions.style.top !== headerHeight) {\n filterOptions.style.top = `${headerHeight}px`;\n }\n\n if (!filterOptions) return;\n if (window.scrollY > totalHeight) {\n filterOptions.classList.add(\"border-b\");\n } else {\n filterOptions.classList.remove(\"border-b\");\n }\n }\n});\n","origin":""}}}},"productColors":{"black":{"color1":"#000000","color2":"","useImage":false,"imageUrl":""},"color-black":{"color1":"#000000","color2":"","useImage":false,"imageUrl":""},"color-black-gold":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/Black_Gold_e30ae8da-fba0-4479-9cdc-b2e0d7bffc64.png?v=1621015486"},"color-blue":{"color1":"#295BB1","color2":"","useImage":false,"imageUrl":""},"color-brow":{"color1":"#654321","color2":"","useImage":false,"imageUrl":""},"color-brown":{"color1":"#3C2814","color2":"","useImage":false,"imageUrl":""},"color-creme":{"color1":"#FFFEF2","color2":"","useImage":false,"imageUrl":""},"color-crimson":{"color1":"#9D2D0B","color2":"","useImage":false,"imageUrl":""},"color-gold":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-gold.png?v=1621576402"},"color-green":{"color1":"#267C00","color2":"","useImage":false,"imageUrl":""},"color-grey":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-grey.png?v=1621576318"},"color-light-blue":{"color1":"#C4D1FF","color2":"","useImage":false,"imageUrl":""},"color-navy":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-navy.png?v=1621576232"},"color-orange":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-orange.png?v=1621576172"},"color-pink":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-pink.jpg?v=1621576119"},"color-primrose":{"color1":"#FFD3EF","color2":"","useImage":false,"imageUrl":""},"color-purple":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-purple.png?v=1621576042"},"color-red":{"color1":"#FF1613","color2":"","useImage":false,"imageUrl":""},"color-silver":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-silver.png?v=1621575958"},"color-tan":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/tan_b1592cba-05bf-4422-bc61-20ff056693c6.jpg?v=1698705645"},"color-taupe":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-taupe.png?v=1621575902"},"color-warm-taupe":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-warmtaupe.png?v=1621575793"},"color-white":{"color1":"#FFFFFF","color2":"","useImage":false,"imageUrl":""},"color-wine":{"color1":"","color2":"","useImage":true,"imageUrl":"https://cdn.shopify.com/s/files/1/0027/8498/5124/files/color-wine.jpg?v=1621575697"},"color-yellow":{"color1":"#FFE400","color2":"","useImage":false,"imageUrl":""}},"integrations":null,"marketCountries":["MX","CG","GG","KW","IL","UZ","AT","CA","DE","HK","MY","PH","SG","YT","CZ","FI","GB","LU","NL","GW","IT","GQ","ID","NO","AE","BI","CL","IE","TW","CH","CY","NE","ST","AM","GM","GR","HR","JE","NZ","PL","QA","SE","TD","AO","AU","BE","BF","DK","MT","SA","SH","ZA","MD","SK","FR","HU","KY","ML","BG","KI","KZ","MC","NU","PT","TH","TR","ES","LV","BR","FK","KM","KR","LR","NR","RO"]}; window.fsRootA = "https://cdn.shopify.com/extensions/3e4b5687-c08f-4a11-960f-0f574588ea29/1.11.4/assets/pl.js"; // Load App code files only if user click searchbox // ref: loadAppCodeFiles.js var fsSearchBoxCssSelector = `.disabledsearchbox`; var jsFiles = ["https://cdn.shopify.com/extensions/3e4b5687-c08f-4a11-960f-0f574588ea29/1.11.4/assets/app.d5e41b4e.js","https://cdn.shopify.com/extensions/3e4b5687-c08f-4a11-960f-0f574588ea29/1.11.4/assets/chunk-vendors.a2573b00.js",];function loadAppCodeFiles(){jsFiles.forEach(function(e){var n=document.createElement("script");n.src=e,n.async=!0,n.type="text/javascript",document.body.appendChild(n)})}function getInputs(e){var n=[],e=(document.querySelectorAll(e).forEach(e=>{n.push(e)}),document.getElementById("fs-searchbox-on-search-page"));return e&&n.push(e),n}function handleOnSearchBox(e,n){e.setAttribute("is-app-inited",!0),n&&loadAppCodeFiles()}function handleTriggerSearchMobile(e,n){e.setAttribute("fs-trigger-search-mobile-inited",!0),n&&loadAppCodeFiles()}function isSearchPage(){return-1

Avery AirPods Clip-On Pouch - Ceci Black Floral/Gold (2024)

References

Top Articles
Latest Posts
Article information

Author: Otha Schamberger

Last Updated:

Views: 5539

Rating: 4.4 / 5 (75 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Otha Schamberger

Birthday: 1999-08-15

Address: Suite 490 606 Hammes Ferry, Carterhaven, IL 62290

Phone: +8557035444877

Job: Forward IT Agent

Hobby: Fishing, Flying, Jewelry making, Digital arts, Sand art, Parkour, tabletop games

Introduction: My name is Otha Schamberger, I am a vast, good, healthy, cheerful, energetic, gorgeous, magnificent person who loves writing and wants to share my knowledge and understanding with you.