{
  "version": 3,
  "sources": ["/cdn/shop/t/33/assets/pm-load-more.js?pmv=20260516-sale-subcat-auto"],
  "sourcesContent": ["(function () {\n  var SELECTORS = {\n    root: '[data-pm-load-more-root]',\n    grid: '[data-pm-product-grid]',\n    button: '[data-pm-load-more-button]',\n    wrapper: '.pm-load-more-wrap',\n    status: '[data-pm-live-status]'\n  };\n\n  var instances = new WeakMap();\n  var activeInstances = new Set();\n\n  function PMLoadMore(root) {\n    this.root = root;\n    this.grid = root.querySelector(SELECTORS.grid);\n    this.button = root.querySelector(SELECTORS.button);\n    this.status = root.querySelector(SELECTORS.status);\n    this.abortController = null;\n    this.observer = null;\n    this.isLoading = false;\n    this.nextUrl = '';\n    this.loadedUrls = new Set();\n    this.autoPaused = false;\n    this.isDestroyed = false;\n    this.onButtonClick = this.handleButtonClick.bind(this);\n\n    if (!this.grid || !this.button) return;\n    this.nextUrl = this.getNextUrl();\n    this.bind();\n    this.initObserver();\n  }\n\n  PMLoadMore.prototype.handleButtonClick = function () {\n    this.autoPaused = false;\n    this.loadNextPage({ manual: true });\n  };\n\n  PMLoadMore.prototype.bind = function () {\n    this.button.addEventListener('click', this.onButtonClick);\n  };\n\n  PMLoadMore.prototype.setStatus = function (message) {\n    if (this.status) this.status.textContent = message;\n  };\n\n  PMLoadMore.prototype.setLoading = function (isLoading) {\n    this.isLoading = isLoading;\n    this.button.disabled = isLoading;\n    this.button.setAttribute('aria-busy', isLoading ? 'true' : 'false');\n    this.button.textContent = isLoading ? 'Loading...' : 'Load more';\n    if (isLoading) this.setStatus('Loading more products');\n  };\n\n  PMLoadMore.prototype.getNextUrl = function () {\n    return this.button ? this.button.getAttribute('data-pm-load-more-next-url') : '';\n  };\n\n  PMLoadMore.prototype.normalizeUrl = function (url) {\n    return new URL(url, window.location.href).toString();\n  };\n\n  PMLoadMore.prototype.findNextButton = function (doc) {\n    return doc.querySelector(SELECTORS.root + ' ' + SELECTORS.button);\n  };\n\n  PMLoadMore.prototype.getObserverTarget = function () {\n    return this.button.closest(SELECTORS.wrapper) || this.button;\n  };\n\n  PMLoadMore.prototype.stopObserver = function () {\n    if (!this.observer) return;\n    this.observer.disconnect();\n    this.observer = null;\n  };\n\n  PMLoadMore.prototype.destroy = function () {\n    this.isDestroyed = true;\n    this.stopObserver();\n    if (this.abortController) this.abortController.abort();\n    if (this.button) this.button.removeEventListener('click', this.onButtonClick);\n    activeInstances.delete(this);\n  };\n\n  PMLoadMore.prototype.initObserver = function () {\n    var target = this.getObserverTarget();\n    if (!target || !this.nextUrl || !('IntersectionObserver' in window)) return;\n\n    this.stopObserver();\n    this.observer = new IntersectionObserver(function (entries) {\n      entries.forEach(function (entry) {\n        if (entry.isIntersecting && !this.autoPaused) {\n          this.loadNextPage({ manual: false });\n        }\n      }, this);\n    }.bind(this), {\n      rootMargin: '600px 0px 600px 0px',\n      threshold: 0.01\n    });\n    this.observer.observe(target);\n    this.queueViewportCheck();\n    this.queueViewportCheck(600);\n    this.queueViewportCheck(1200);\n  };\n\n  PMLoadMore.prototype.isTargetNearViewport = function () {\n    var target = this.getObserverTarget();\n    if (!target) return false;\n\n    var bounds = target.getBoundingClientRect();\n    var viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n    return bounds.top <= viewportHeight + 600 && bounds.bottom >= -600;\n  };\n\n  PMLoadMore.prototype.queueViewportCheck = function (delay) {\n    window.setTimeout(function () {\n      if (!this.isDestroyed && !this.autoPaused && !this.isLoading && this.nextUrl && this.isTargetNearViewport()) {\n        this.loadNextPage({ manual: false });\n      }\n    }.bind(this), delay || 120);\n  };\n\n  PMLoadMore.prototype.finishLoading = function () {\n    this.nextUrl = '';\n    this.stopObserver();\n    this.button.hidden = true;\n    this.button.disabled = true;\n    this.button.setAttribute('aria-busy', 'false');\n    this.button.removeAttribute('data-pm-load-more-next-url');\n    this.button.textContent = 'No more products';\n  };\n\n  PMLoadMore.prototype.loadNextPage = async function (options) {\n    options = options || {};\n    var requestUrl = this.nextUrl || this.getNextUrl();\n    if (this.isDestroyed || !requestUrl || this.isLoading) return;\n\n    var normalizedUrl = this.normalizeUrl(requestUrl);\n    if (this.loadedUrls.has(normalizedUrl)) {\n      console.warn('[PetMall] Skipping duplicate Load More URL', normalizedUrl);\n      this.finishLoading();\n      return;\n    }\n\n    if (this.abortController) this.abortController.abort();\n    this.abortController = new AbortController();\n    this.setLoading(true);\n\n    try {\n      var response = await fetch(normalizedUrl, {\n        credentials: 'same-origin',\n        signal: this.abortController.signal\n      });\n\n      if (!response.ok) throw new Error('Load more request failed');\n\n      var html = await response.text();\n      var doc = new DOMParser().parseFromString(html, 'text/html');\n      var nextGrid = doc.querySelector(SELECTORS.root + ' ' + SELECTORS.grid);\n      if (!nextGrid) {\n        console.warn('[PetMall] Next product grid was not found');\n        this.finishLoading();\n        return;\n      }\n\n      var items = Array.prototype.slice.call(nextGrid.children);\n      items.forEach(function (item) {\n        this.grid.appendChild(item);\n      }, this);\n      this.loadedUrls.add(normalizedUrl);\n\n      var nextButton = this.findNextButton(doc);\n      var newNextUrl = nextButton ? nextButton.getAttribute('data-pm-load-more-next-url') : '';\n\n      if (newNextUrl) {\n        this.nextUrl = newNextUrl;\n        this.button.hidden = false;\n        this.button.setAttribute('data-pm-load-more-next-url', this.nextUrl);\n        this.setStatus(items.length + ' more products loaded');\n      } else {\n        this.finishLoading();\n        this.setStatus(items.length + ' more products loaded. No more products to load.');\n      }\n    } catch (error) {\n      if (error.name !== 'AbortError') {\n        console.error('[PetMall] Load more failed', error);\n        this.setStatus('Could not load more products. Please try again.');\n        if (!options.manual) {\n          this.autoPaused = true;\n          this.stopObserver();\n        }\n      }\n    } finally {\n      if (this.nextUrl) {\n        this.setLoading(false);\n        this.initObserver();\n      }\n      this.abortController = null;\n    }\n  };\n\n  function stopAllInstances() {\n    Array.prototype.slice.call(activeInstances).forEach(function (instance) {\n      instance.destroy();\n    });\n  }\n\n  function initLoadMore(scope, options) {\n    options = options || {};\n    if (options.reset) stopAllInstances();\n\n    var context = scope || document;\n    var roots = [];\n    if (context.matches && context.matches(SELECTORS.root)) roots.push(context);\n    if (context.querySelectorAll) {\n      context.querySelectorAll(SELECTORS.root).forEach(function (root) {\n        roots.push(root);\n      });\n    }\n\n    roots.forEach(function (root) {\n      var existing = instances.get(root);\n      if (existing) existing.destroy();\n\n      var instance = new PMLoadMore(root);\n      instances.set(root, instance);\n      activeInstances.add(instance);\n    });\n  }\n\n  window.PetMallLoadMore = window.PetMallLoadMore || {};\n  window.PetMallLoadMore.init = initLoadMore;\n\n  document.addEventListener('DOMContentLoaded', function () {\n    initLoadMore(document);\n  });\n\n  document.addEventListener('petmall:collection:render', function (event) {\n    var container = event.detail && event.detail.container ? event.detail.container : document;\n    initLoadMore(container, { reset: true });\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
