{
  "version": 3,
  "sources": ["/cdn/shop/t/22/assets/customer-story-reviews.js?pc=three-20260804"],
  "sourcesContent": ["(() => {\n  const sectionSelector = '.pc-customer-story__reviews';\n  const wrapperSelector = '#klaviyo-reviews-carousel-wrapper';\n  const slideSelector = '.kl_reviews__carousel__slide, .swiper-slide';\n  const reviewStarColor = '#f8be00';\n\n  function isBeigeStarColor(value) {\n    const normalized = String(value || '')\n      .replace(/\\s+/g, '')\n      .toLowerCase();\n\n    return (\n      normalized === '#c7c2b0' ||\n      normalized === 'rgb(199,194,176)' ||\n      normalized === 'rgba(199,194,176,1)'\n    );\n  }\n\n  function colorReviewStars(wrapper) {\n    wrapper.style.setProperty('--kl-reviews-featured-star-color', reviewStarColor, 'important');\n    wrapper.style.setProperty('--kl-reviews-featured-empty-star-color', reviewStarColor, 'important');\n\n    wrapper.querySelectorAll('*').forEach((element) => {\n      const styles = window.getComputedStyle(element);\n      const directText = [...element.childNodes]\n        .filter((node) => node.nodeType === Node.TEXT_NODE)\n        .map((node) => node.textContent)\n        .join('');\n      const elementName = element.tagName.toLowerCase();\n      const isStarGraphic = ['svg', 'path', 'polygon', 'use'].includes(elementName);\n      const hasStarText = /[\u2605\u2606]/.test(directText);\n\n      if (hasStarText || isBeigeStarColor(styles.color)) {\n        element.style.setProperty('color', reviewStarColor, 'important');\n      }\n\n      if (\n        isStarGraphic &&\n        (isBeigeStarColor(styles.color) ||\n          isBeigeStarColor(styles.fill) ||\n          isBeigeStarColor(styles.stroke))\n      ) {\n        element.style.setProperty('color', reviewStarColor, 'important');\n        element.style.setProperty('fill', reviewStarColor, 'important');\n        element.style.setProperty('stroke', reviewStarColor, 'important');\n      }\n    });\n  }\n\n  function findLowestCommonAncestor(elements, boundary) {\n    let candidate = elements[0];\n\n    while (candidate && candidate !== boundary) {\n      if (elements.every((element) => candidate.contains(element))) return candidate;\n      candidate = candidate.parentElement;\n    }\n\n    return boundary;\n  }\n\n  function findTrackItem(track, slide) {\n    let item = slide;\n\n    while (item.parentElement && item.parentElement !== track) {\n      item = item.parentElement;\n    }\n\n    return item.parentElement === track ? item : null;\n  }\n\n  function renderThreeReviewGrid(wrapper, slides) {\n    wrapper.classList.add('pc-klaviyo-carousel--three-ready');\n\n    let grid = wrapper.querySelector('.pc-customer-story__three-review-grid');\n    if (!grid) {\n      grid = document.createElement('div');\n      grid.className = 'pc-customer-story__three-review-grid';\n      wrapper.appendChild(grid);\n    }\n\n    const selectedSlides = [];\n    const seenReviews = new Set();\n\n    slides.forEach((slide) => {\n      if (selectedSlides.length >= 3) return;\n\n      const reviewText = slide.textContent.replace(/\\s+/g, ' ').trim();\n      if (!reviewText || seenReviews.has(reviewText)) return;\n\n      seenReviews.add(reviewText);\n      selectedSlides.push(slide);\n    });\n    const signature = selectedSlides.map((slide) => slide.textContent.trim()).join('|');\n    if (grid.dataset.pcReviewSignature === signature) return;\n\n    const cards = selectedSlides.map((slide) => {\n      const card = slide.cloneNode(true);\n      card.classList.add('pc-customer-story__three-review-card');\n      card.classList.remove('kl_reviews__carousel__slide--hidden');\n      card.removeAttribute('id');\n      card.querySelectorAll('[id]').forEach((element) => element.removeAttribute('id'));\n      return card;\n    });\n\n    grid.replaceChildren(...cards);\n    grid.dataset.pcReviewSignature = signature;\n  }\n\n  function prepareCarousel(reviews) {\n    const wrapper = reviews.querySelector(wrapperSelector);\n    const slides = wrapper\n      ? [...wrapper.querySelectorAll(slideSelector)].filter(\n          (slide) => !slide.closest('.pc-customer-story__three-review-grid')\n        )\n      : [];\n\n    if (!wrapper) return;\n\n    colorReviewStars(wrapper);\n\n    if (slides.length === 0) return;\n\n    wrapper.classList.add('pc-klaviyo-carousel');\n\n    const limitToThree = Boolean(\n      reviews.closest('.pc-customer-story--three-reviews, .pc-customer-story--reviews-only')\n    );\n    if (limitToThree) {\n      renderThreeReviewGrid(wrapper, slides);\n      return;\n    }\n\n    const track = findLowestCommonAncestor(slides, wrapper);\n    if (!track || track === wrapper) return;\n\n    const items = [...new Set(slides.map((slide) => findTrackItem(track, slide)).filter(Boolean))];\n    if (items.length === 0) return;\n\n    const viewport = track.parentElement;\n    if (!viewport) return;\n\n    track.classList.add('pc-klaviyo-carousel__track');\n    viewport.classList.add('pc-klaviyo-carousel__viewport');\n\n    items.forEach((item) => {\n      item.classList.add('pc-klaviyo-carousel__item');\n    });\n\n    const controls = reviews.querySelectorAll('[data-pc-reviews-direction]');\n    controls.forEach((control) => {\n      if (control.dataset.pcReviewsBound === 'true') return;\n\n      control.dataset.pcReviewsBound = 'true';\n      control.addEventListener('click', () => {\n        const direction = control.dataset.pcReviewsDirection === 'previous' ? -1 : 1;\n        const card = track.querySelector(slideSelector);\n        const cardWidth = card ? card.getBoundingClientRect().width : 240;\n        const gap = Number.parseFloat(getComputedStyle(track).columnGap || getComputedStyle(track).gap) || 16;\n        const visibleCards = Math.max(1, Math.floor(viewport.clientWidth / (cardWidth + gap)) - 1);\n\n        viewport.scrollBy({\n          left: direction * (cardWidth + gap) * visibleCards,\n          behavior: 'smooth',\n        });\n      });\n    });\n  }\n\n  function initializeReviews(root = document) {\n    root.querySelectorAll(sectionSelector).forEach((reviews) => {\n      prepareCarousel(reviews);\n\n      if (reviews.dataset.pcReviewsObserved === 'true') return;\n      reviews.dataset.pcReviewsObserved = 'true';\n\n      const observer = new MutationObserver(() => prepareCarousel(reviews));\n      observer.observe(reviews, { childList: true, subtree: true });\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', () => initializeReviews());\n  } else {\n    initializeReviews();\n  }\n\n  document.addEventListener('shopify:section:load', (event) => initializeReviews(event.target));\n})();\n"],
  "mappings": "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",
  "names": []
}
