{
  "version": 3,
  "sources": ["/cdn/shop/t/35/assets/pm-home-h15-comparison.js?pmv=20260902-1"],
  "sourcesContent": ["(() => {\n  const elementName = 'pm-home-h15-comparison';\n  if (customElements.get(elementName)) return;\n\n  class PMHomeH15Comparison extends HTMLElement {\n    connectedCallback() {\n      this.teardown();\n      this.abortController = new AbortController();\n      this.signal = this.abortController.signal;\n      this.viewport = this.querySelector('[data-pm-home-h15-viewport]');\n      this.canvas = this.querySelector('.pm-home-h15__canvas');\n      this.track = this.querySelector('[data-pm-home-h15-track]');\n      this.slides = [...this.querySelectorAll('[data-pm-home-h15-slide]')]\n        .filter((node) => node.closest(elementName) === this);\n      this.dots = [...this.querySelectorAll('[data-pm-home-h15-dot]')]\n        .filter((node) => node.closest(elementName) === this);\n      this.previousButton = this.querySelector('[data-pm-home-h15-previous]');\n      this.nextButton = this.querySelector('[data-pm-home-h15-next]');\n      this.status = this.querySelector('[data-pm-home-h15-status]');\n      this.reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\n      this.index = 0;\n      this.dragX = 0;\n      this.dragging = false;\n\n      if (\n        !this.viewport\n        || !this.canvas\n        || !this.track\n        || !this.previousButton\n        || !this.nextButton\n        || this.slides.length !== 3\n        || this.dots.length !== 3\n      ) {\n        this.dataset.controllerReady = 'false';\n        return;\n      }\n\n      this.dataset.controllerReady = 'true';\n      this.previousButton.addEventListener('click', () => this.go(this.index - 1, { announce: true }), { signal: this.signal });\n      this.nextButton.addEventListener('click', () => this.go(this.index + 1, { announce: true }), { signal: this.signal });\n\n      this.dots.forEach((dot) => {\n        dot.addEventListener('click', () => this.go(Number(dot.dataset.pmHomeH15Dot), { announce: true }), { signal: this.signal });\n        dot.addEventListener('keydown', (event) => this.onDotKeydown(event), { signal: this.signal });\n      });\n\n      this.viewport.addEventListener('keydown', (event) => this.onViewportKeydown(event), { signal: this.signal });\n      this.unbindSwipe = window.PmSwipe?.bind(this.viewport, {\n        threshold: 30,\n        onHorizontalLock: () => {\n          this.dragging = true;\n          this.viewport.dataset.dragging = 'true';\n          this.render({ immediate: true });\n        },\n        onDrag: (deltaX) => {\n          this.dragX = deltaX;\n          if ((this.index === 0 && this.dragX > 0) || (this.index === this.slides.length - 1 && this.dragX < 0)) this.dragX *= .28;\n          this.render({ immediate: true, dragOffset: this.dragX });\n        },\n        onCommit: (direction) => {\n          this.endDrag();\n          this.go(this.index + direction, { announce: true });\n        },\n        onCancel: () => {\n          this.endDrag();\n          this.render({ immediate: false });\n        }\n      });\n\n      document.addEventListener('shopify:block:select', (event) => {\n        if (!this.matchesEditorEvent(event)) return;\n        const blockId = event.detail?.blockId || event.target?.dataset?.pmHomeH15BlockId;\n        const index = this.slides.findIndex((slide) => slide.dataset.pmHomeH15BlockId === blockId);\n        if (index >= 0) this.go(index, { immediate: true, announce: false });\n      }, { signal: this.signal });\n\n      document.addEventListener('shopify:section:load', (event) => {\n        if (this.matchesEditorEvent(event)) this.go(0, { immediate: true, announce: false });\n      }, { signal: this.signal });\n\n      document.addEventListener('shopify:section:unload', (event) => {\n        if (this.matchesEditorEvent(event)) this.teardown();\n      }, { signal: this.signal });\n\n      this.applyResponsiveScale();\n      this.resizeObserver = new ResizeObserver(() => {\n        this.applyResponsiveScale();\n        this.render({ immediate: true });\n      });\n      this.resizeObserver.observe(this);\n      this.go(0, { immediate: true, announce: false });\n      window.PmSwipe?.prepareAdjacent(this.slides, this.index);\n    }\n\n    disconnectedCallback() {\n      this.teardown();\n    }\n\n    teardown() {\n      this.abortController?.abort();\n      this.unbindSwipe?.();\n      this.unbindSwipe = null;\n      this.resizeObserver?.disconnect();\n      this.abortController = null;\n      this.resizeObserver = null;\n      this.dragging = false;\n    }\n\n    matchesEditorEvent(event) {\n      const target = event.target;\n      return target === this || (target instanceof Node && (target.contains(this) || this.contains(target)));\n    }\n\n    slideName(index) {\n      return this.slides[index]?.querySelector('.pm-home-h15__competitor-heading')?.textContent?.trim() || `Alternative ${index + 1}`;\n    }\n\n    applyResponsiveScale() {\n      if (!this.canvas) return;\n      const width = this.getBoundingClientRect().width;\n      if (width > 0 && width < 363) {\n        const scale = width / 363;\n        this.style.height = `${620 * scale}px`;\n        this.canvas.style.marginInline = '0';\n        this.canvas.style.transformOrigin = '0 0';\n        this.canvas.style.transform = `scale(${scale})`;\n        return;\n      }\n\n      this.style.removeProperty('height');\n      this.canvas.style.removeProperty('margin-inline');\n      this.canvas.style.removeProperty('transform-origin');\n      this.canvas.style.removeProperty('transform');\n    }\n\n    go(nextIndex, { immediate = false, announce = false } = {}) {\n      if (!this.slides?.length) return;\n      const bounded = Math.max(0, Math.min(this.slides.length - 1, nextIndex));\n      const changed = bounded !== this.index;\n      this.index = bounded;\n      window.PmSwipe?.prepareAdjacent(this.slides, this.index);\n      this.dataset.activeIndex = String(this.index);\n\n      this.slides.forEach((slide, index) => {\n        const active = index === this.index;\n        slide.classList.toggle('is-active', active);\n        slide.setAttribute('aria-hidden', String(!active));\n        slide.inert = !active;\n      });\n\n      this.dots.forEach((dot, index) => {\n        const active = index === this.index;\n        dot.tabIndex = active ? 0 : -1;\n        if (active) dot.setAttribute('aria-current', 'true');\n        else dot.removeAttribute('aria-current');\n      });\n\n      const atStart = this.index === 0;\n      const atEnd = this.index === this.slides.length - 1;\n      this.previousButton.disabled = atStart;\n      this.previousButton.hidden = atStart;\n      this.nextButton.disabled = atEnd;\n      this.nextButton.hidden = atEnd;\n      this.previousButton.setAttribute('aria-label', atStart ? 'No previous alternative' : `Previous alternative: ${this.slideName(this.index - 1)}`);\n      this.nextButton.setAttribute('aria-label', atEnd ? 'No next alternative' : `Next alternative: ${this.slideName(this.index + 1)}`);\n\n      this.render({ immediate });\n      if (announce && changed && this.status) {\n        this.status.textContent = `Slide ${this.index + 1} of ${this.slides.length}: ${this.slideName(this.index)}`;\n      }\n    }\n\n    render({ immediate = false, dragOffset = 0 } = {}) {\n      if (!this.track || !this.viewport) return;\n      const noTransition = immediate || this.reducedMotion.matches || this.dragging;\n      this.track.dataset.noTransition = String(noTransition);\n      const offset = -(this.index * this.viewport.clientWidth) + dragOffset;\n      this.track.style.transform = `translate3d(${offset}px, 0, 0)`;\n    }\n\n    onViewportKeydown(event) {\n      let next = this.index;\n      if (event.key === 'ArrowLeft') next = this.index - 1;\n      else if (event.key === 'ArrowRight') next = this.index + 1;\n      else if (event.key === 'Home') next = 0;\n      else if (event.key === 'End') next = this.slides.length - 1;\n      else return;\n      event.preventDefault();\n      this.go(next, { announce: true });\n    }\n\n    onDotKeydown(event) {\n      let next = this.index;\n      if (event.key === 'ArrowLeft') next = this.index - 1;\n      else if (event.key === 'ArrowRight') next = this.index + 1;\n      else if (event.key === 'Home') next = 0;\n      else if (event.key === 'End') next = this.slides.length - 1;\n      else return;\n      event.preventDefault();\n      next = Math.max(0, Math.min(this.slides.length - 1, next));\n      this.go(next, { announce: true });\n      this.dots[next].focus({ preventScroll: true });\n    }\n\n    endDrag() {\n      this.dragging = false;\n      this.dragX = 0;\n      delete this.viewport.dataset.dragging;\n    }\n  }\n\n  customElements.define(elementName, PMHomeH15Comparison);\n})();\n"],
  "mappings": "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",
  "names": []
}
