{
  "version": 3,
  "sources": ["/cdn/shop/t/4/assets/product-form.js?r=1789080886824"],
  "sourcesContent": ["document.addEventListener('DOMContentLoaded', () => {\r\n  initProductGalleries();\r\n  initProductLightboxes();\r\n\r\n  document.querySelectorAll('[data-product-json]').forEach((jsonEl) => {\r\n    try {\r\n      initProductForm(jsonEl);\r\n    } catch (error) {\r\n      console.error('Failed to initialize product form', error);\r\n    }\r\n  });\r\n});\r\n\r\nfunction initProductGalleries() {\n  document.querySelectorAll('[data-gallery-thumb]').forEach((thumb) => {\n    thumb.addEventListener('click', () => {\n      const gallery = thumb.closest('[data-gallery], .product-gallery__thumbs');\n      if (!gallery) return;\n      showGalleryMedia(gallery, thumb.dataset.mediaId);\n    });\n  });\n}\n\nfunction showGalleryMedia(gallery, mediaId) {\n  const productGallery = gallery.closest('.product-gallery');\n  if (!productGallery || !mediaId) return;\n\n  productGallery.querySelectorAll('[data-gallery-main-media]').forEach((media) => {\n    const isActive = media.dataset.mediaId === String(mediaId);\n    media.classList.toggle('is-active', isActive);\n    media.hidden = !isActive;\n    if (!isActive) media.querySelectorAll('video').forEach((video) => video.pause());\n  });\n\n  gallery.querySelectorAll('[data-gallery-thumb]').forEach((thumb) => {\n    thumb.classList.toggle('is-active', thumb.dataset.mediaId === String(mediaId));\n  });\n}\n\r\nfunction fullscreenSrc(src) {\r\n  if (!src) return '';\r\n  if (src.includes('width=')) {\r\n    return src.replace(/width=\\d+/, 'width=2400');\r\n  }\r\n  return `${src}${src.includes('?') ? '&' : '?'}width=2400`;\r\n}\r\n\r\nfunction getGalleryImages(gallery, mainImage) {\n  const thumbs = [...gallery.querySelectorAll('[data-gallery-thumb][data-media-type=\"image\"]')];\n  if (thumbs.length) {\r\n    return thumbs.map((thumb) => {\r\n      const img = thumb.querySelector('img');\r\n      return {\r\n        src: fullscreenSrc(thumb.dataset.fullSrc || img?.src || ''),\r\n        alt: img?.alt || mainImage.alt || '',\r\n      };\r\n    });\r\n  }\r\n\r\n  if (mainImage.src) {\r\n    return [{ src: fullscreenSrc(mainImage.src), alt: mainImage.alt || '' }];\r\n  }\r\n\r\n  return [];\r\n}\r\n\r\nfunction getActiveGalleryIndex(gallery) {\n  const activeThumb = gallery.querySelector('[data-gallery-thumb].is-active');\n  if (!activeThumb || activeThumb.dataset.mediaType !== 'image') return 0;\n\n  const thumbs = [...gallery.querySelectorAll('[data-gallery-thumb][data-media-type=\"image\"]')];\n  const index = thumbs.indexOf(activeThumb);\r\n  return index >= 0 ? index : 0;\r\n}\r\n\r\nfunction initProductLightboxes() {\r\n  const lightbox = ensureLightbox();\r\n  const lightboxImg = lightbox.querySelector('[data-lightbox-image]');\r\n  const prevBtn = lightbox.querySelector('[data-lightbox-prev]');\r\n  const nextBtn = lightbox.querySelector('[data-lightbox-next]');\r\n  let images = [];\r\n  let currentIndex = 0;\r\n  let triggerEl = null;\r\n\r\n  function showImage(index) {\r\n    if (!images.length) return;\r\n\r\n    currentIndex = ((index % images.length) + images.length) % images.length;\r\n    const image = images[currentIndex];\r\n    lightboxImg.src = image.src;\r\n    lightboxImg.alt = image.alt;\r\n    const hasMultiple = images.length > 1;\r\n    if (prevBtn) prevBtn.hidden = !hasMultiple;\r\n    if (nextBtn) nextBtn.hidden = !hasMultiple;\r\n  }\r\n\r\n  function closeLightbox() {\r\n    lightbox.hidden = true;\r\n    lightbox.setAttribute('aria-hidden', 'true');\r\n    document.body.classList.remove('image-lightbox-open');\r\n    document.removeEventListener('keydown', onKeyDown);\r\n    triggerEl?.focus?.();\r\n  }\r\n\r\n  function openLightbox() {\r\n    lightbox.hidden = false;\r\n    lightbox.setAttribute('aria-hidden', 'false');\r\n    document.body.classList.add('image-lightbox-open');\r\n    lightbox.querySelector('.image-lightbox__close')?.focus();\r\n    document.addEventListener('keydown', onKeyDown);\r\n  }\r\n\r\n  function onKeyDown(event) {\r\n    if (lightbox.hidden) return;\r\n\r\n    if (event.key === 'Escape') {\r\n      event.preventDefault();\r\n      closeLightbox();\r\n      return;\r\n    }\r\n\r\n    if (event.key === 'ArrowLeft') {\r\n      event.preventDefault();\r\n      showImage(currentIndex - 1);\r\n      return;\r\n    }\r\n\r\n    if (event.key === 'ArrowRight') {\r\n      event.preventDefault();\r\n      showImage(currentIndex + 1);\r\n    }\r\n  }\r\n\r\n  lightbox.querySelectorAll('[data-lightbox-close]').forEach((btn) => {\r\n    btn.addEventListener('click', closeLightbox);\r\n  });\r\n\r\n  prevBtn?.addEventListener('click', () => showImage(currentIndex - 1));\r\n  nextBtn?.addEventListener('click', () => showImage(currentIndex + 1));\r\n\r\n  document.querySelectorAll('.product-gallery').forEach((gallery) => {\r\n    const mainWrap = gallery.querySelector('.product-gallery__main');\r\n    const mainImage = mainWrap?.querySelector('img') || (mainWrap?.tagName === 'IMG' ? mainWrap : null);\r\n    if (!mainWrap || !mainImage) return;\r\n\r\n    const galleryImages = getGalleryImages(gallery, mainImage);\r\n    if (!galleryImages.length) return;\r\n\r\n    mainWrap.style.cursor = 'zoom-in';\r\n\r\n    if (mainWrap.tagName !== 'BUTTON') {\r\n      mainWrap.setAttribute('role', 'button');\r\n      mainWrap.setAttribute('tabindex', '0');\r\n      mainWrap.setAttribute('aria-label', window.theme?.strings?.viewFullscreen || 'View image full screen');\r\n    }\r\n\r\n    const handleOpen = (event) => {\n      if (mainWrap.querySelector('[data-gallery-main-media].is-active video')) return;\n      event.preventDefault();\n      triggerEl = mainWrap;\r\n      images = galleryImages;\r\n      showImage(getActiveGalleryIndex(gallery));\r\n      openLightbox();\r\n    };\r\n\r\n    mainWrap.addEventListener('click', handleOpen);\r\n    mainWrap.addEventListener('keydown', (event) => {\r\n      if (event.key === 'Enter' || event.key === ' ') {\r\n        handleOpen(event);\r\n      }\r\n    });\r\n  });\r\n}\r\n\r\nfunction ensureLightbox() {\r\n  let lightbox = document.getElementById('product-image-lightbox');\r\n  if (lightbox) return lightbox;\r\n\r\n  lightbox = document.createElement('div');\r\n  lightbox.id = 'product-image-lightbox';\r\n  lightbox.className = 'image-lightbox';\r\n  lightbox.hidden = true;\r\n  lightbox.setAttribute('aria-hidden', 'true');\r\n  lightbox.innerHTML = `\r\n    <button type=\"button\" class=\"image-lightbox__backdrop\" data-lightbox-close aria-label=\"Close full screen\"></button>\r\n    <div class=\"image-lightbox__content\" role=\"dialog\" aria-modal=\"true\" aria-label=\"View image full screen\">\r\n      <button type=\"button\" class=\"image-lightbox__close\" data-lightbox-close aria-label=\"Close full screen\">\r\n        <span aria-hidden=\"true\">&times;</span>\r\n      </button>\r\n      <button type=\"button\" class=\"image-lightbox__nav image-lightbox__nav--prev\" data-lightbox-prev aria-label=\"Previous image\">\r\n        <span aria-hidden=\"true\">&lsaquo;</span>\r\n      </button>\r\n      <button type=\"button\" class=\"image-lightbox__nav image-lightbox__nav--next\" data-lightbox-next aria-label=\"Next image\">\r\n        <span aria-hidden=\"true\">&rsaquo;</span>\r\n      </button>\r\n      <img class=\"image-lightbox__image\" data-lightbox-image src=\"\" alt=\"\">\r\n    </div>\r\n  `;\r\n  document.body.appendChild(lightbox);\r\n  return lightbox;\r\n}\r\n\r\nfunction initProductForm(jsonEl) {\r\n  const productData = JSON.parse(jsonEl.textContent || '{}');\r\n  const form = document.getElementById(productData.formId);\r\n  if (!form) return;\r\n\r\n  const mainImage = document.getElementById(productData.mainImageId);\r\n  const priceEl = document.getElementById(productData.priceId);\n  const comparePriceEl = document.getElementById(productData.comparePriceId);\n  const addBtn = document.getElementById(productData.addBtnId);\r\n  const variantInput = document.getElementById(productData.variantInputId);\r\n\r\n  const selectedOptions = {};\r\n  productData.options?.forEach((opt, i) => {\r\n    if (opt && typeof opt === 'object' && Array.isArray(opt.values)) {\r\n      selectedOptions[i] = opt.selected ?? opt.values[0];\r\n      return;\r\n    }\r\n\r\n    selectedOptions[i] = productData.variants?.[0]?.options?.[i] ?? null;\r\n  });\r\n\r\n  function findVariant() {\r\n    return productData.variants?.find((v) => {\r\n      return v.options.every((val, i) => val === selectedOptions[i]);\r\n    });\r\n  }\r\n\r\n  function formatMoney(cents) {\r\n    if (window.Eleftheria?.formatMoney) {\r\n      return window.Eleftheria.formatMoney(cents);\r\n    }\r\n\r\n    return (Number(cents) / 100).toFixed(2);\r\n  }\r\n\r\n  function updateVariant() {\r\n    const variant = findVariant();\r\n    if (!variant) return;\r\n\r\n    variantInput.value = variant.id;\r\n\r\n    if (priceEl) {\n      priceEl.textContent = variant.priceFormatted || formatMoney(variant.price);\n    }\n\n    if (comparePriceEl) {\n      const hasSale = Number(variant.compareAtPrice) > Number(variant.price);\n      comparePriceEl.hidden = !hasSale;\n      comparePriceEl.textContent = hasSale\n        ? (variant.compareAtPriceFormatted || formatMoney(variant.compareAtPrice))\n        : '';\n    }\n\r\n    if (mainImage && variant.featured_image) {\n      mainImage.src = variant.featured_image;\n      mainImage.srcset = '';\n    }\n\n    if (variant.featured_media_id) {\n      const gallery = mainImage?.closest('.product-gallery')?.querySelector('[data-gallery]');\n      if (gallery) showGalleryMedia(gallery, variant.featured_media_id);\n    }\n\r\n    if (addBtn) {\r\n      addBtn.disabled = !variant.available;\r\n      addBtn.textContent = variant.available\r\n        ? (window.theme?.strings?.addToBag || 'Add to cart')\r\n        : (window.theme?.strings?.soldOut || 'Sold Out');\r\n    }\r\n\r\n    form.querySelectorAll('[data-option-index]').forEach((btn) => {\r\n      const idx = parseInt(btn.dataset.optionIndex, 10);\r\n      btn.classList.toggle('is-selected', btn.dataset.optionValue === selectedOptions[idx]);\r\n    });\r\n  }\r\n\r\n  form.querySelectorAll('[data-option-index]').forEach((btn) => {\r\n    btn.addEventListener('click', () => {\r\n      const idx = parseInt(btn.dataset.optionIndex, 10);\r\n      selectedOptions[idx] = btn.dataset.optionValue;\r\n      updateVariant();\r\n    });\r\n  });\r\n\r\n  updateVariant();\r\n}\r\n"],
  "mappings": "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",
  "names": []
}
