{
  "version": 3,
  "sources": ["/cdn/shop/t/17/assets/airgrilles-qo-rowtitle-prismoon-v2.js?b=20261005e"],
  "sourcesContent": ["/* prismoon-rowtitle-20261005\n   Desktop quick-order tables: the italic product-title caption lives in the image cell on the\n   item-number line. This starts it at the 3rd visible column and stops it before Order, per table,\n   and keeps it there when columns hide (filters, uniform columns), the parent page swaps its table,\n   fonts load or the window resizes. Values go on the table as CSS variables; the stylesheet keeps\n   the caption hidden until [data-qo3-title] is set.\n   A row whose cell under the caption wraps to 3+ lines (narrow desktop) gets [data-qo3-tall], and\n   the stylesheet then opens a bottom band for the caption in that row only.\n   Revert: theme-backups/collection-title-20261005/deploy.py <theme> --revert */\n(function () {\n  if (window.__qo3RowTitle) return;\n  window.__qo3RowTitle = true;\n\n  var START_COLUMN = 3;\n  var INSET = 10;\n  var TALL = 70;\n  var range = document.createRange();\n  var queued = false;\n\n  function shown(el) { return el.getClientRects().length > 0; }\n\n  function set(el, name, value) {\n    if (el.style.getPropertyValue(name) !== value) el.style.setProperty(name, value);\n  }\n\n  function flag(el, name, on) {\n    if (on !== el.hasAttribute(name)) on ? el.setAttribute(name, '') : el.removeAttribute(name);\n  }\n\n  function place(table) {\n    var rows = Array.prototype.filter.call(table.querySelectorAll('tr[data-airgrilles-qo3-row]'), shown);\n    var line = rows[0] && rows[0].querySelector('.airgrilles-qo3__image-line');\n    var title = line && line.querySelector('.airgrilles-qo3__row-title');\n    if (!title || getComputedStyle(title).display === 'none') return;\n\n    var cells = Array.prototype.filter.call(rows[0].children, shown);\n    var startAt = cells.indexOf(line.closest('td')) + START_COLUMN - 1;\n    var start = cells[startAt];\n    if (!start) return;\n    var action = rows[0].querySelector('[data-col=\"cart_action\"]');\n    var lineRight = line.getBoundingClientRect().right;\n    var left = Math.round(start.getBoundingClientRect().left + INSET - lineRight);\n    var stop = (action && shown(action) ? action.getBoundingClientRect().left : rows[0].getBoundingClientRect().right) - 14;\n    var max = Math.max(120, Math.round(stop - lineRight - left));\n    var item = line.querySelector('.airgrilles-qo3__image-item');\n    var lh = item ? getComputedStyle(item).lineHeight : '';\n\n    set(table, '--qo3-title-left', left + 'px');\n    set(table, '--qo3-title-max', max + 'px');\n    if (lh && lh !== 'normal') set(table, '--qo3-title-lh', lh);\n\n    // content height does not depend on padding, so the flag is stable once set\n    rows.forEach(function (row) {\n      var t = row.querySelector('.airgrilles-qo3__row-title');\n      if (!t) return;\n      var reach = lineRight + left + Math.min(t.scrollWidth, max);\n      var cs = Array.prototype.filter.call(row.children, shown);\n      var tall = false;\n      for (var i = startAt; i < cs.length && !tall; i++) {\n        if (cs[i].getAttribute('data-col') === 'cart_action' || cs[i].getBoundingClientRect().left >= reach) break;\n        range.selectNodeContents(cs[i]);\n        tall = range.getBoundingClientRect().height > TALL;\n      }\n      flag(row, 'data-qo3-tall', tall);\n    });\n    flag(table, 'data-qo3-title', true);\n  }\n\n  function run() {\n    queued = false;\n    var tables = document.querySelectorAll('.airgrilles-qo3__table');\n    for (var i = 0; i < tables.length; i++) place(tables[i]);\n  }\n\n  function queue() {\n    if (queued) return;\n    queued = true;\n    requestAnimationFrame(run);\n  }\n\n  // only changes inside a quick-order block, or a block swapped in (parent page replaceWith)\n  function relevant(rec) {\n    var t = rec.target;\n    if (t.nodeType === 1 && t.closest('.airgrilles-qo3')) return true;\n    for (var i = 0; i < rec.addedNodes.length; i++) {\n      var n = rec.addedNodes[i];\n      if (n.nodeType === 1 && (n.matches('.airgrilles-qo3') || n.querySelector('.airgrilles-qo3__table'))) return true;\n    }\n    return false;\n  }\n\n  run();\n  window.addEventListener('resize', queue);\n  window.addEventListener('load', queue);\n  document.addEventListener('shopify:section:load', queue);\n  if (document.fonts && document.fonts.ready) document.fonts.ready.then(queue);\n  // class/hidden only: our own writes (style, data-qo3-*) never retrigger it\n  new MutationObserver(function (recs) {\n    for (var i = 0; i < recs.length; i++) { if (relevant(recs[i])) { queue(); return; } }\n  }).observe(document.body, { subtree: true, childList: true, attributes: true, attributeFilter: ['class', 'hidden'] });\n})();\n"],
  "mappings": "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",
  "names": []
}
