{
  "version": 3,
  "sources": ["/cdn/shop/t/30/assets/custom.js?cb=20260621-v2follow11"],
  "sourcesContent": ["/*\n  Add here your own custom javascript codes\n*/\n\nwindow.theme = window.theme || {}\n\nwindow.theme.recentlyViewed = {\n  storageKey: 'ksRecentlyViewedProducts',\n  maxItems: 20\n}\n\nwindow.theme.readRecentlyViewedProducts = function () {\n  try {\n    const value = window.localStorage.getItem(window.theme.recentlyViewed.storageKey)\n    const products = JSON.parse(value || '[]')\n    return Array.isArray(products) ? products : []\n  } catch (error) {\n    return []\n  }\n}\n\nwindow.theme.writeRecentlyViewedProducts = function (products) {\n  try {\n    window.localStorage.setItem(\n      window.theme.recentlyViewed.storageKey,\n      JSON.stringify(products.slice(0, window.theme.recentlyViewed.maxItems))\n    )\n  } catch (error) {}\n}\n\nwindow.theme.storeCurrentProductInRecentlyViewed = function () {\n  document.querySelectorAll('[data-recently-viewed-set][data-product-id]').forEach((element) => {\n    const product = {\n      id: Number(element.dataset.productId),\n      url: element.dataset.productUrl,\n      title: element.dataset.productTitle,\n      price: Number(element.dataset.productPrice || 0),\n      compareAtPrice: Number(element.dataset.productCompareAtPrice || 0),\n      available: element.dataset.productAvailable === 'true',\n      image: element.dataset.productImage || ''\n    }\n\n    if (!product.id || !product.url || !product.title) return\n\n    const existingProducts = window.theme.readRecentlyViewedProducts()\n    const products = [\n      product,\n      ...existingProducts.filter((item) => Number(item.id) !== product.id)\n    ]\n\n    window.theme.writeRecentlyViewedProducts(products)\n  })\n}\n\nwindow.theme.storeCurrentProductInRecentlyViewed()\nwindow.addEventListener('DOMContentLoaded', window.theme.storeCurrentProductInRecentlyViewed)\ndocument.addEventListener('shopify:section:load', window.theme.storeCurrentProductInRecentlyViewed)\n\nclass RecentlyViewedProducts extends HTMLElement {\n  connectedCallback () {\n    this.render()\n  }\n\n  readProducts () {\n    return window.theme.readRecentlyViewedProducts()\n      .filter((product) => Number(product.id) !== Number(this.dataset.currentProductId))\n      .slice(0, Number(this.dataset.limit || 8))\n  }\n\n  escapeHtml (value = '') {\n    return value\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&#39;')\n  }\n\n  renderPrice (product) {\n    const price = window.Shopify.formatMoney(product.price)\n    const compareAtPrice = Number(product.compareAtPrice || 0)\n\n    if (compareAtPrice > product.price) {\n      return `\n        <p class=\"product-card-price product-price mb-0\">\n          <s class=\"product-card-price-compare\">\n            <span class=\"visually-hidden\">${window.theme.locales.product.regular_price}</span>\n            ${window.Shopify.formatMoney(compareAtPrice)}\n          </s>\n          <span class=\"product-card-price-final product-price-final-sale\">\n            <span class=\"visually-hidden\">${window.theme.locales.product.sale_price}</span>\n            ${price}\n          </span>\n        </p>\n      `\n    }\n\n    return `\n      <p class=\"product-card-price product-price mb-0\">\n        <span class=\"product-card-price-final\">\n          ${price}\n        </span>\n      </p>\n    `\n  }\n\n  renderCard (product) {\n    const imageClass = this.dataset.cardImageBorder || ''\n    const textAlign = this.dataset.cardTextAlign || ''\n    const titleClass = this.dataset.cardTitleClass || 'h6'\n    const soldOutText = window.theme.locales.product.sold_out\n    const soldOutBadge = product.available\n      ? ''\n      : `<span class=\"product-sold-out-badge badge\">${soldOutText}</span>`\n    const image = product.image\n      ? `<img src=\"${this.escapeHtml(product.image)}\" class=\"product-card-img\" loading=\"lazy\" alt=\"${this.escapeHtml(product.title)}\">`\n      : '<div class=\"recently-viewed-placeholder\"></div>'\n\n    return `\n      <div class=\"swiper-slide p-4 p-desktop-5\">\n        <div class=\"product-card ${textAlign}\">\n          <a href=\"${this.escapeHtml(product.url)}\" class=\"product-card-link\">\n            <div class=\"product-card-img-wrapper mb-4 product-card-img-square ${imageClass}\">\n              ${soldOutBadge}\n              ${image}\n            </div>\n            <h3 class=\"product-card-title product-title ${titleClass}\">\n              ${this.escapeHtml(product.title)}\n            </h3>\n            ${this.renderPrice(product)}\n          </a>\n        </div>\n      </div>\n    `\n  }\n\n  initSlider () {\n    const sliderElement = this.querySelector('.swiper')\n    if (!sliderElement || !window.Swiper) return\n\n    this.slider?.destroy(true, true)\n\n    this.slider = new window.Swiper(sliderElement, {\n      speed: Number(this.dataset.sliderSpeed || 300),\n      autoplay: this.dataset.sliderAutoplay === '0'\n        ? undefined\n        : { delay: Number(this.dataset.sliderAutoplay) * 1000 },\n      navigation: {\n        enabled: this.dataset.sliderNavigation === 'true',\n        prevEl: this.querySelector('.swiper-button-prev'),\n        nextEl: this.querySelector('.swiper-button-next')\n      },\n      pagination: {\n        enabled: this.dataset.sliderPagination === 'true',\n        el: this.querySelector('.swiper-pagination'),\n        type: 'bullets',\n        dynamicBullets: true,\n        dynamicMainBullets: 2\n      },\n      scrollbar: {\n        enabled: this.dataset.sliderScrollbar === 'true',\n        el: this.querySelector('.swiper-scrollbar'),\n        draggable: true\n      },\n      breakpoints: {\n        0: { slidesPerView: Number(this.dataset.breakpointMobile || 1) },\n        600: { slidesPerView: Number(this.dataset.breakpointTablet || 2) },\n        1200: { slidesPerView: Number(this.dataset.breakpointDesktop || 4) }\n      },\n      rewind: true\n    })\n  }\n\n  render () {\n    const products = this.readProducts()\n    const wrapper = this.querySelector('[data-recently-viewed-slides]')\n    const slider = this.querySelector('[data-recently-viewed-slider]')\n    const emptyState = this.querySelector('[data-recently-viewed-empty]')\n    const isDesignMode = Boolean(window.Shopify && window.Shopify.designMode)\n\n    if (!wrapper || !slider || !emptyState) return\n\n    if (products.length === 0) {\n      wrapper.innerHTML = ''\n\n      if (isDesignMode) {\n        emptyState.removeAttribute('hidden')\n        slider.setAttribute('hidden', 'hidden')\n        this.removeAttribute('hidden')\n      } else {\n        this.setAttribute('hidden', 'hidden')\n        this.closest('.shopify-section')?.setAttribute('hidden', 'hidden')\n      }\n\n      return\n    }\n\n    wrapper.innerHTML = products.map((product) => this.renderCard(product)).join('')\n\n    this.removeAttribute('hidden')\n    this.closest('.shopify-section')?.removeAttribute('hidden')\n    emptyState.setAttribute('hidden', 'hidden')\n    slider.removeAttribute('hidden')\n\n    this.initSlider()\n  }\n}\n\ncustomElements.define('recently-viewed-products', RecentlyViewedProducts)\n"],
  "mappings": "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",
  "names": []
}
