{
  "version": 3,
  "sources": ["/cdn/shop/t/28/assets/theia-page-scroll.js?theia=20260827-1"],
  "sourcesContent": ["(function initializeTheiaPageScroll(global) {\n  const clamp = (value, minimum, maximum, fallback) => {\n    const number = Number(value);\n    if (!Number.isFinite(number)) return fallback;\n    return Math.min(maximum, Math.max(minimum, number));\n  };\n\n  const booleanValue = (value, fallback) => {\n    if (value === true || value === 'true') return true;\n    if (value === false || value === 'false') return false;\n    return fallback;\n  };\n\n  class TheiaPageScroll {\n    static readConfig(element) {\n      const data = element?.dataset || {};\n      return {\n        enabled: booleanValue(data.enabled, true),\n        breakpoint: clamp(data.breakpoint, 600, 1200, 768),\n        desktop: {\n          enabled: booleanValue(data.desktopEnabled, true),\n          follow: clamp(data.desktopFollow, 1, 20, 10),\n          distance: clamp(data.desktopWheel, 50, 200, 100),\n          overscroll: booleanValue(data.desktopOverscroll, true),\n        },\n        mobile: {\n          enabled: booleanValue(data.mobileEnabled, false),\n          follow: clamp(data.mobileFollow, 1, 20, 10),\n          distance: clamp(data.mobileTouch, 50, 200, 100),\n          inertia: clamp(data.mobileInertia, 100, 250, 170),\n          overscroll: booleanValue(data.mobileOverscroll, true),\n        },\n      };\n    }\n\n    static modeFor(config, width) {\n      return width >= config.breakpoint ? 'desktop' : 'mobile';\n    }\n\n    static optionsFor(config, mode) {\n      const settings = config[mode];\n      if (mode === 'mobile') {\n        return {\n          autoRaf: true,\n          lerp: settings.follow / 100,\n          touchMultiplier: settings.distance / 100,\n          touchInertiaExponent: settings.inertia / 100,\n          smoothWheel: false,\n          syncTouch: true,\n          overscroll: settings.overscroll,\n        };\n      }\n\n      return {\n        autoRaf: true,\n        lerp: settings.follow / 100,\n        wheelMultiplier: settings.distance / 100,\n        smoothWheel: true,\n        syncTouch: false,\n        overscroll: settings.overscroll,\n      };\n    }\n\n    constructor(configElement, environment = global) {\n      this.environment = environment;\n      this.configElement = configElement;\n      this.config = TheiaPageScroll.readConfig(configElement);\n      this.instance = null;\n      this.mode = null;\n      this.destroyed = false;\n      this.handleResize = this.handleResize.bind(this);\n      this.handleMotionPreference = this.handleMotionPreference.bind(this);\n      this.handleEditorSelect = this.handleEditorSelect.bind(this);\n      this.handleEditorResize = this.handleEditorResize.bind(this);\n      this.handlePageLock = this.handlePageLock.bind(this);\n      this.reducedMotion = this.environment.matchMedia?.('(prefers-reduced-motion: reduce)') || null;\n\n      this.environment.addEventListener?.('resize', this.handleResize, { passive: true });\n      this.reducedMotion?.addEventListener?.('change', this.handleMotionPreference);\n      this.environment.document?.addEventListener?.('shopify:section:select', this.handleEditorSelect);\n      this.environment.document?.addEventListener?.('shopify:block:select', this.handleEditorSelect);\n      this.environment.document?.addEventListener?.('shopify:section:load', this.handleEditorResize);\n      this.environment.document?.addEventListener?.('shopify:section:reorder', this.handleEditorResize);\n      this.environment.document?.addEventListener?.('theia:page-scroll-lock', this.handlePageLock);\n      this.reconcile();\n    }\n\n    currentWidth() {\n      return Number(this.environment.innerWidth) || this.config.breakpoint;\n    }\n\n    reconcile() {\n      if (this.destroyed) return;\n      const nextMode = TheiaPageScroll.modeFor(this.config, this.currentWidth());\n      this.destroyInstance();\n      this.mode = nextMode;\n\n      if (!this.config.enabled || !this.config[nextMode].enabled || this.reducedMotion?.matches) return;\n      const Lenis = this.environment.Lenis || global.Lenis;\n      if (typeof Lenis !== 'function') return;\n\n      try {\n        this.instance = new Lenis(TheiaPageScroll.optionsFor(this.config, nextMode));\n      } catch (_error) {\n        this.instance = null;\n      }\n    }\n\n    handleResize() {\n      if (this.destroyed) return;\n      const nextMode = TheiaPageScroll.modeFor(this.config, this.currentWidth());\n      if (nextMode !== this.mode) {\n        this.reconcile();\n        return;\n      }\n      this.instance?.resize?.();\n    }\n\n    handleMotionPreference() {\n      this.reconcile();\n    }\n\n    handleEditorSelect(event) {\n      const target = event?.target;\n      if (!target) return;\n      if (this.instance?.scrollTo) {\n        this.instance.scrollTo(target, { immediate: true, force: true });\n        return;\n      }\n      target.scrollIntoView?.({ behavior: 'instant', block: 'start' });\n    }\n\n    handleEditorResize() {\n      this.resize();\n    }\n\n    handlePageLock(event) {\n      const locked = event?.detail?.locked ?? booleanValue(event?.target?.dataset?.theiaPageLock, false);\n      if (locked) this.stop();\n      else this.start();\n    }\n\n    start() {\n      this.instance?.start?.();\n    }\n\n    stop() {\n      this.instance?.stop?.();\n    }\n\n    resize() {\n      this.instance?.resize?.();\n    }\n\n    destroyInstance() {\n      this.instance?.destroy?.();\n      this.instance = null;\n    }\n\n    destroy() {\n      if (this.destroyed) return;\n      this.destroyed = true;\n      this.environment.removeEventListener?.('resize', this.handleResize);\n      this.reducedMotion?.removeEventListener?.('change', this.handleMotionPreference);\n      this.environment.document?.removeEventListener?.('shopify:section:select', this.handleEditorSelect);\n      this.environment.document?.removeEventListener?.('shopify:block:select', this.handleEditorSelect);\n      this.environment.document?.removeEventListener?.('shopify:section:load', this.handleEditorResize);\n      this.environment.document?.removeEventListener?.('shopify:section:reorder', this.handleEditorResize);\n      this.environment.document?.removeEventListener?.('theia:page-scroll-lock', this.handlePageLock);\n      this.destroyInstance();\n    }\n  }\n\n  global.TheiaPageScroll = TheiaPageScroll;\n\n  const startController = () => {\n    const element = global.document?.querySelector?.('[data-theia-page-scroll-config]');\n    if (!element) return;\n    global.theiaPageScroll?.destroy?.();\n    global.theiaPageScroll = new TheiaPageScroll(element, global);\n  };\n\n  if (global.document?.readyState === 'loading') {\n    global.document.addEventListener?.('DOMContentLoaded', startController, { once: true });\n  } else if (global.document) {\n    startController();\n  }\n})(globalThis);\n"],
  "mappings": "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",
  "names": []
}
