{
  "version": 3,
  "sources": ["/cdn/shop/t/17/assets/airgrilles-qo-parent-prismoon-v3f.js?b=20260701a"],
  "sourcesContent": ["/* build 20260616f (revert availability filter; client-side hide stays) */\n(() => {\n  function init() {\n    document.querySelectorAll('[data-airgrilles-qo3-parent]').forEach((root) => {\n      if (root.__airgrillesQOParent) return;\n      root.__airgrillesQOParent = true;\n      const tiles = Array.from(root.querySelectorAll('[data-airgrilles-qo3-tile]'));\n      if (!tiles.length) return;\n      tiles.forEach((tile) => tile.addEventListener('click', () => {\n        const isAll = tile === tiles[0];\n        const isSub = tile.classList.contains('airgrilles-qo3-parent__tile--sub');\n        if (tile.dataset.hasChildren) {\n          // group tile: open its subcategory shelf AND load its own products\n          if (tile.classList.contains('is-active')) { toggleSubtiles(root, tiles, tile); return; }\n          closeAllcats(root);\n          openSubtiles(root, tiles, tile);\n          if (Number(tile.dataset.count) > 0) select(root, tiles, tile, true, null);\n        } else if (tile.classList.contains('is-active') && !isAll) {\n          // re-click an already-selected tile \u2192 deselect, fall back to \"All\"\n          if (!isSub) closeAllSubtiles(root, tiles);\n          select(root, tiles, tiles[0], true, null);\n        } else if (!tile.classList.contains('is-active')) {\n          // a top-row leaf (or \"All\") closes any open drill-down shelf; a\n          // sub-tile keeps its own parent shelf open\n          if (!isSub) closeAllSubtiles(root, tiles);\n          select(root, tiles, tile, true, null);\n        }\n      }));\n\n      // \"All categories\" launcher: toggle a panel of every top-level category\n      const allcatsBtn = root.querySelector('[data-airgrilles-qo3-allcats]');\n      const allcatsPanel = root.querySelector('[data-airgrilles-qo3-allcats-panel]');\n      if (allcatsBtn && allcatsPanel) {\n        allcatsBtn.addEventListener('click', () => {\n          const willOpen = allcatsPanel.hidden;\n          closeAllSubtiles(root, tiles);\n          if (willOpen) {\n            allcatsPanel.hidden = false;\n            allcatsBtn.setAttribute('aria-expanded', 'true');\n            allcatsBtn.classList.add('is-open');\n          }\n        });\n      }\n      // the swapped-in child table's \"hide out of stock\" toggle asks us to\n      // re-fetch the active subcategory with Shopify's availability filter, so\n      // the count and every pagination page exclude out-of-stock items\n      const params = new URLSearchParams(window.location.search);\n      const wanted = params.get('sub');\n      if (wanted) {\n        const tile = tiles.find((t) => t.dataset.subHandle === wanted && !t.dataset.hasChildren);\n        if (tile) {\n          revealParentRowOf(root, tile);\n          select(root, tiles, tile, false, params.get('page'));\n        }\n      }\n    });\n  }\n\n  function closeAllcats(root) {\n    const panel = root.querySelector('[data-airgrilles-qo3-allcats-panel]');\n    const btn = root.querySelector('[data-airgrilles-qo3-allcats]');\n    if (panel) panel.hidden = true;\n    if (btn) { btn.setAttribute('aria-expanded', 'false'); btn.classList.remove('is-open'); }\n  }\n\n  function closeAllSubtiles(root, tiles) {\n    root.querySelectorAll('[data-airgrilles-qo3-subtiles]').forEach((row) => { row.hidden = true; });\n    tiles.forEach((t) => t.classList.remove('is-open'));\n    closeAllcats(root);\n  }\n\n  function openSubtiles(root, tiles, tile) {\n    const handle = tile.dataset.hasChildren;\n    root.querySelectorAll('[data-airgrilles-qo3-subtiles]').forEach((row) => {\n      row.hidden = row.dataset.airgrillesQo3Subtiles !== handle;\n    });\n    const row = root.querySelector('[data-airgrilles-qo3-subtiles=\"' + handle + '\"]');\n    tiles.forEach((t) => t.classList.toggle('is-open', t === tile));\n    if (row) {\n      const x = tile.offsetLeft + tile.offsetWidth / 2 - row.offsetLeft;\n      row.style.setProperty('--qo3-notch-x', Math.max(24, x) + 'px');\n    }\n  }\n\n  function toggleSubtiles(root, tiles, tile) {\n    const handle = tile.dataset.hasChildren;\n    root.querySelectorAll('[data-airgrilles-qo3-subtiles]').forEach((row) => {\n      row.hidden = row.dataset.airgrillesQo3Subtiles !== handle ? true : !row.hidden;\n    });\n    const row = root.querySelector('[data-airgrilles-qo3-subtiles=\"' + handle + '\"]');\n    tiles.forEach((t) => t.classList.toggle('is-open', t === tile && !row.hidden));\n    if (!row.hidden) {\n      // arrow notch points at the opener tile\n      const x = tile.offsetLeft + tile.offsetWidth / 2 - row.offsetLeft;\n      row.style.setProperty('--qo3-notch-x', Math.max(24, x) + 'px');\n    }\n  }\n\n  function revealParentRowOf(root, tile) {\n    const row = tile.closest('[data-airgrilles-qo3-subtiles]');\n    if (!row) return;\n    row.hidden = false;\n    const opener = root.querySelector('[data-has-children=\"' + row.dataset.airgrillesQo3Subtiles + '\"]');\n    if (opener) opener.classList.add('is-open');\n  }\n\n  function childRoot() {\n    return document.querySelector('[data-airgrilles-qo3]');\n  }\n\n  async function select(root, tiles, tile, pushUrl, page) {\n    if (tile.classList.contains('is-loading')) return;\n    tiles.forEach((t) => { t.classList.toggle('is-active', t === tile); t.setAttribute('aria-selected', t === tile ? 'true' : 'false'); });\n    tile.classList.add('is-loading');\n    const target = childRoot();\n    if (target) target.classList.add('is-swapping');\n    try {\n      // full template render so the table gets its column blocks\n      let url = tile.dataset.subUrl + '?view=' + encodeURIComponent(root.dataset.childView);\n      if (page) url += '&page=' + encodeURIComponent(page);\n      const response = await fetch(url, { credentials: 'same-origin' });\n      if (!response.ok) throw new Error('HTTP ' + response.status);\n      const html = await response.text();\n      const doc = new DOMParser().parseFromString(html, 'text/html');\n      const fresh = doc.querySelector('[data-airgrilles-qo3]');\n      if (!fresh) throw new Error('child markup not found');\n      fresh.querySelector('.airgrilles-qo3__banner')?.remove();\n      // pagination links must stay on the parent page URL\n      fresh.querySelectorAll('.airgrilles-qo3__pagination a').forEach((a) => {\n        try {\n          const u = new URL(a.getAttribute('href'), window.location.origin);\n          const p = u.searchParams.get('page');\n          const keep = new URLSearchParams(window.location.search);\n          keep.set('sub', tile.dataset.subHandle);\n          if (p) keep.set('page', p); else keep.delete('page');\n          a.setAttribute('href', window.location.pathname + '?' + keep.toString());\n        } catch (error) { /* leave as is */ }\n      });\n      const current = childRoot();\n      if (current) current.replaceWith(fresh);\n      document.dispatchEvent(new Event('shopify:section:load'));\n      if (pushUrl) {\n        const u = new URL(window.location.href);\n        if (tile.dataset.subHandle === u.pathname.split('/').pop()) u.searchParams.delete('sub');\n        else u.searchParams.set('sub', tile.dataset.subHandle);\n        u.searchParams.delete('page');\n        history.pushState(null, '', u.toString());\n      }\n      // Only scroll to the table on a deep-link / pagination load (pushUrl false).\n      // On a user tile click (pushUrl true) keep the tiles + filters in view so the\n      // shopper can pick another category/filter without scrolling back up.\n      if (!pushUrl) fresh.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    } catch (error) {\n      console.error('AirGrilles QO parent swap error:', error);\n      window.location.href = tile.dataset.subUrl; // graceful: just navigate\n    } finally {\n      tile.classList.remove('is-loading');\n      const target2 = childRoot();\n      if (target2) target2.classList.remove('is-swapping');\n    }\n  }\n\n  window.addEventListener('popstate', () => window.location.reload());\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n})();\n"],
  "mappings": "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",
  "names": ["row"]
}
