{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/tccfcct-quote-picker-v3.js?tccfcct=7"],
  "sourcesContent": ["(() => {\n  if (document.getElementById('tccfcct-quote-picker')) return;\n\n  const rootPath = window.Shopify?.routes?.root || '/';\n  const pageSize = 10;\n  let products = [];\n  let currentPage = 1;\n  let currentProduct = null;\n  let previousFocus = null;\n  let searchTimer = null;\n  let searchTerm = '';\n  let draftQuantities = new Map();\n\n  document.body.insertAdjacentHTML('beforeend', `\n    <style>\n      #tccfcct-quote-picker{--qp-ink:#101828;--qp-muted:#667085;--qp-line:#e4e7ec;--qp-soft:#f8fafc;--qp-accent:#d9ff39;position:fixed;inset:0;z-index:2147483000;display:none;font-family:inherit}\n      #tccfcct-quote-picker.is-open{display:block}#tccfcct-quote-picker *{box-sizing:border-box}\n      #tccfcct-quote-picker .qp-bg{position:absolute;inset:0;background:rgba(16,24,39,.76);backdrop-filter:blur(2px)}\n      #tccfcct-quote-picker .qp-dialog{position:absolute;z-index:1;top:50%;left:50%;display:flex;flex-direction:column;width:min(1380px,76vw);height:min(820px,82vh);margin:0;overflow:hidden;border-radius:20px;background:#fff;color:var(--qp-ink);box-shadow:0 26px 90px rgba(0,0,0,.34);transform:translate(-50%,-50%)}\n      #tccfcct-quote-picker .qp-close{position:absolute;z-index:4;top:14px;right:16px;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--qp-line);border-radius:50%;background:#fff;color:#667085;box-shadow:0 6px 15px rgba(16,24,40,.1);font:300 29px/1 Arial,sans-serif;cursor:pointer}\n      #tccfcct-quote-picker .qp-close:hover{color:var(--qp-ink);transform:translateY(-1px)}\n      #tccfcct-quote-picker .qp-overview,#tccfcct-quote-picker .qp-detail{display:none;min-height:0;flex:1;flex-direction:column}\n      #tccfcct-quote-picker[data-view=\"overview\"] .qp-overview,#tccfcct-quote-picker[data-view=\"detail\"] .qp-detail{display:flex}\n      #tccfcct-quote-picker .qp-head{padding:22px 74px 16px 28px;border-bottom:1px solid var(--qp-line)}\n      #tccfcct-quote-picker h2{margin:0;color:var(--qp-ink);font-size:clamp(25px,2vw,32px);font-weight:750;letter-spacing:-.035em;line-height:1.1}\n      #tccfcct-quote-picker .qp-tools{padding:0 28px 18px;border-bottom:1px solid var(--qp-line)}\n      #tccfcct-quote-picker .qp-search-wrap{position:relative;display:block}\n      #tccfcct-quote-picker .qp-search-wrap:before{content:'';position:absolute;top:50%;left:20px;width:17px;height:17px;border:2px solid #98a2b3;border-radius:50%;transform:translateY(-58%)}\n      #tccfcct-quote-picker .qp-search-wrap:after{content:'';position:absolute;top:54%;left:35px;width:8px;height:2px;background:#98a2b3;transform:rotate(45deg)}\n      #tccfcct-quote-picker .qp-search{width:100%;height:50px;padding:0 20px 0 54px;border:1px solid #cfd4dc;border-radius:9px;background:#fff;color:var(--qp-ink);font:inherit;font-size:15px;outline:none}\n      #tccfcct-quote-picker .qp-search:focus{border-color:#667085;box-shadow:0 0 0 3px rgba(16,24,40,.08)}\n      #tccfcct-quote-picker .qp-status{min-height:22px;padding:10px 28px 0;color:var(--qp-muted);font-size:12px}\n      #tccfcct-quote-picker .qp-products{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;align-content:start;min-height:0;overflow:auto;padding:12px 28px 18px}\n      #tccfcct-quote-picker .qp-card{display:flex;min-width:0;min-height:287px;flex-direction:column;overflow:hidden;border:1px solid var(--qp-line);border-radius:10px;background:#fff;cursor:pointer;transition:border-color .18s,box-shadow .18s,transform .18s}\n      #tccfcct-quote-picker .qp-card:hover{border-color:#b8c0cc;box-shadow:0 10px 24px rgba(16,24,40,.08);transform:translateY(-2px)}\n      #tccfcct-quote-picker .qp-card:focus-visible{outline:3px solid rgba(16,24,40,.22);outline-offset:2px}\n      #tccfcct-quote-picker .qp-card.is-added{border-color:#9db600;box-shadow:inset 0 0 0 1px #9db600}\n      #tccfcct-quote-picker .qp-image-wrap{position:relative;display:grid;place-items:center;flex:0 0 175px;height:175px;overflow:hidden;background:#fff}\n      #tccfcct-quote-picker .qp-image-wrap img{width:100%;height:100%;object-fit:contain}\n      #tccfcct-quote-picker .qp-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#f2f4f7,#fff)}\n      #tccfcct-quote-picker .qp-added-badge{position:absolute;top:10px;right:10px;padding:5px 9px;border-radius:999px;background:var(--qp-accent);color:#263000;font-size:11px;font-weight:800}\n      #tccfcct-quote-picker .qp-card-body{display:flex;min-height:112px;flex:0 0 112px;flex-direction:column;padding:11px 12px 12px}\n      #tccfcct-quote-picker .qp-card h3{display:-webkit-box;min-height:39px;margin:0 0 9px;overflow:hidden;color:var(--qp-ink);font-size:13px;font-weight:700;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:2}\n      #tccfcct-quote-picker .qp-add{width:100%;min-height:40px;margin-top:auto;padding:0 10px;border:1px solid var(--qp-ink);border-radius:7px;background:var(--qp-ink);color:#fff;font:inherit;font-size:12px;font-weight:750;cursor:pointer}\n      #tccfcct-quote-picker .qp-add:hover{border-color:#000;background:#fff;color:#000}#tccfcct-quote-picker .qp-add span{margin-right:7px;font-size:20px;font-weight:300;vertical-align:-1px}\n      #tccfcct-quote-picker .qp-empty{grid-column:1/-1;margin:42px auto;color:var(--qp-muted);text-align:center}\n      #tccfcct-quote-picker .qp-pagination{display:flex;gap:10px;align-items:center;justify-content:center;min-height:58px;padding:8px 28px;border-top:1px solid var(--qp-line);background:#fff}\n      #tccfcct-quote-picker .qp-page-button{min-height:40px;padding:0 15px;border:1px solid #d0d5dd;border-radius:7px;background:#fff;color:#344054;font:inherit;font-size:13px;font-weight:650;cursor:pointer}\n      #tccfcct-quote-picker .qp-page-button:disabled{color:#b0b7c3;cursor:not-allowed}.qp-page-label{color:#344054;font-size:14px;font-weight:650}\n      #tccfcct-quote-picker .qp-page-arrow{font-size:20px;font-weight:400;vertical-align:-1px}\n\n      #tccfcct-quote-picker .qp-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:38px;padding:36px 64px 26px;border-bottom:1px solid var(--qp-line)}\n      #tccfcct-quote-picker .qp-progress-step{position:static;display:block;float:none;padding-top:18px;border-top:4px solid #e4e7ec;text-align:center;color:#667085;font-size:13px;font-weight:700;letter-spacing:.08em}\n      #tccfcct-quote-picker .qp-progress-step.is-active{border-color:var(--qp-ink);color:var(--qp-ink)}\n      #tccfcct-quote-picker .qp-progress-step span{position:static;display:block;float:none;margin-top:4px;color:var(--qp-ink);font-size:16px;font-weight:700;letter-spacing:0}\n      #tccfcct-quote-picker .qp-product-hero{display:grid;grid-template-columns:190px minmax(0,1fr);gap:36px;align-items:center;padding:34px 100px 28px;border-bottom:1px solid var(--qp-line)}\n      #tccfcct-quote-picker .qp-product-hero img,#tccfcct-quote-picker .qp-hero-placeholder{width:190px;height:170px;object-fit:contain;background:#fff}\n      #tccfcct-quote-picker .qp-product-hero h2{max-width:850px;font-size:clamp(25px,2vw,38px);line-height:1.28}\n      #tccfcct-quote-picker .qp-product-hero p{margin:14px 0 0;color:var(--qp-muted);font-size:17px;line-height:1.5}\n      #tccfcct-quote-picker .qp-variant-scroll{min-height:0;flex:1;overflow:auto;padding:34px 54px}\n      #tccfcct-quote-picker .qp-variant-table{width:100%;overflow:hidden;border:1px solid var(--qp-line);border-radius:12px;background:#fff}\n      #tccfcct-quote-picker .qp-variant-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(120px,.8fr) 150px;gap:22px;align-items:center;min-height:82px;padding:10px 34px;border-top:1px solid var(--qp-line)}\n      #tccfcct-quote-picker .qp-variant-row:first-child{border-top:0}.qp-variant-row.qp-labels{min-height:56px;background:#fcfcfd;color:#667085;font-size:12px;font-weight:800;letter-spacing:.1em}\n      #tccfcct-quote-picker .qp-variant-name{display:flex;gap:18px;align-items:center;color:#344054;font-size:15px;font-weight:650}\n      #tccfcct-quote-picker .qp-variant-name img,#tccfcct-quote-picker .qp-variant-thumb{width:52px;height:52px;flex:0 0 52px;object-fit:contain;background:#fff}\n      #tccfcct-quote-picker .qp-sku{overflow:hidden;color:#667085;font-size:14px;text-overflow:ellipsis;white-space:nowrap}\n      #tccfcct-quote-picker .qp-qty{width:112px;height:50px;padding:0 10px;border:1px solid #cfd4dc;border-radius:8px;color:var(--qp-ink);font:inherit;text-align:center;outline:none}\n      #tccfcct-quote-picker .qp-qty:focus{border-color:#667085;box-shadow:0 0 0 3px rgba(16,24,40,.08)}\n      #tccfcct-quote-picker .qp-detail-error{min-height:22px;margin:0 54px;color:#b42318;font-size:13px}\n      #tccfcct-quote-picker .qp-detail-foot{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:22px 54px 28px;border-top:1px solid var(--qp-line);background:#fff}\n      #tccfcct-quote-picker .qp-secondary,#tccfcct-quote-picker .qp-primary{min-height:54px;padding:0 20px;border:1px solid #000;border-radius:8px;background:#000;color:#fff;font:inherit;font-weight:750;cursor:pointer;transition:background-color .18s,color .18s,border-color .18s}\n      #tccfcct-quote-picker .qp-secondary:hover,#tccfcct-quote-picker .qp-primary:hover{border-color:#000;background:#fff;color:#000}\n      body.tccfcct-quote-picker-open{overflow:hidden}\n      @media(max-height:850px) and (min-width:651px){#tccfcct-quote-picker .qp-card{min-height:253px}#tccfcct-quote-picker .qp-image-wrap{flex-basis:145px;height:145px}#tccfcct-quote-picker .qp-card-body{min-height:108px;flex-basis:108px}#tccfcct-quote-picker .qp-steps{padding-top:20px;padding-bottom:14px}#tccfcct-quote-picker .qp-progress-step{padding-top:10px}#tccfcct-quote-picker .qp-product-hero{grid-template-columns:120px minmax(0,1fr);gap:24px;padding-top:18px;padding-bottom:18px}#tccfcct-quote-picker .qp-product-hero img,#tccfcct-quote-picker .qp-hero-placeholder{width:120px;height:105px}#tccfcct-quote-picker .qp-product-hero h2{font-size:26px}#tccfcct-quote-picker .qp-product-hero p{margin-top:6px;font-size:15px}#tccfcct-quote-picker .qp-variant-scroll{padding-top:20px;padding-bottom:20px}#tccfcct-quote-picker .qp-variant-row{min-height:72px}}\n      @media(max-width:1180px){#tccfcct-quote-picker .qp-products{grid-template-columns:repeat(4,minmax(0,1fr))}}\n      @media(max-width:900px){#tccfcct-quote-picker .qp-dialog{width:calc(100% - 24px);height:calc(100vh - 24px);border-radius:16px}#tccfcct-quote-picker .qp-products{grid-template-columns:repeat(3,minmax(0,1fr));padding-right:20px;padding-left:20px}#tccfcct-quote-picker .qp-head,#tccfcct-quote-picker .qp-tools{padding-right:68px;padding-left:20px}#tccfcct-quote-picker .qp-tools{padding-right:20px}#tccfcct-quote-picker .qp-status{padding-left:20px}#tccfcct-quote-picker .qp-product-hero{grid-template-columns:120px minmax(0,1fr);gap:22px;padding:24px 34px}#tccfcct-quote-picker .qp-product-hero img,#tccfcct-quote-picker .qp-hero-placeholder{width:120px;height:120px}#tccfcct-quote-picker .qp-steps{gap:18px;padding-right:34px;padding-left:34px}}\n      @media(max-width:650px){#tccfcct-quote-picker .qp-dialog{width:100%;height:100vh;border-radius:0}#tccfcct-quote-picker .qp-close{top:12px;right:12px;width:42px;height:42px}#tccfcct-quote-picker .qp-head{padding:19px 62px 15px 14px}#tccfcct-quote-picker .qp-tools{padding:0 14px 14px}#tccfcct-quote-picker .qp-status{padding-left:14px}#tccfcct-quote-picker .qp-products{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:10px 10px 15px}#tccfcct-quote-picker .qp-card{min-height:234px}#tccfcct-quote-picker .qp-image-wrap{flex-basis:116px;height:116px}#tccfcct-quote-picker .qp-card-body{min-height:118px;flex-basis:118px;padding:10px}#tccfcct-quote-picker .qp-card h3{font-size:12px}#tccfcct-quote-picker .qp-add{min-height:40px;font-size:11px}#tccfcct-quote-picker .qp-pagination{gap:7px;padding-right:10px;padding-left:10px}#tccfcct-quote-picker .qp-page-button{padding:0 10px;font-size:12px}#tccfcct-quote-picker .qp-page-label{font-size:12px}#tccfcct-quote-picker .qp-steps{gap:8px;padding:18px 14px 14px}#tccfcct-quote-picker .qp-progress-step{padding-top:10px;font-size:9px}#tccfcct-quote-picker .qp-progress-step span{font-size:11px}#tccfcct-quote-picker .qp-product-hero{grid-template-columns:76px minmax(0,1fr);gap:14px;padding:18px}#tccfcct-quote-picker .qp-product-hero img,#tccfcct-quote-picker .qp-hero-placeholder{width:76px;height:76px}#tccfcct-quote-picker .qp-product-hero h2{font-size:18px}#tccfcct-quote-picker .qp-product-hero p{display:none}#tccfcct-quote-picker .qp-variant-scroll{padding:14px 12px}#tccfcct-quote-picker .qp-variant-row{grid-template-columns:minmax(0,1fr) 78px;gap:10px;min-height:74px;padding:8px 12px}#tccfcct-quote-picker .qp-variant-row .qp-sku,#tccfcct-quote-picker .qp-labels .qp-sku{display:none}#tccfcct-quote-picker .qp-variant-name{gap:9px;font-size:12px}#tccfcct-quote-picker .qp-variant-name img,#tccfcct-quote-picker .qp-variant-thumb{width:40px;height:40px;flex-basis:40px}#tccfcct-quote-picker .qp-qty{width:78px;height:44px}#tccfcct-quote-picker .qp-detail-error{margin:0 16px}#tccfcct-quote-picker .qp-detail-foot{gap:10px;padding:14px 12px 18px}#tccfcct-quote-picker .qp-secondary,#tccfcct-quote-picker .qp-primary{min-height:50px;font-size:13px}}\n    </style>\n    <div id=\"tccfcct-quote-picker\" data-view=\"overview\" aria-hidden=\"true\">\n      <div class=\"qp-bg\" data-qp-close></div>\n      <section class=\"qp-dialog\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"qp-title\">\n        <button class=\"qp-close\" type=\"button\" aria-label=\"Close\" data-qp-close>\u00D7</button>\n        <div class=\"qp-overview\">\n          <header class=\"qp-head\"><h2 id=\"qp-title\">Add products</h2></header>\n          <div class=\"qp-tools\"><label class=\"qp-search-wrap\"><input class=\"qp-search\" type=\"search\" autocomplete=\"off\" placeholder=\"Enter your search query here\" aria-label=\"Search products\"></label></div>\n          <div class=\"qp-status\" aria-live=\"polite\"></div>\n          <div class=\"qp-products\"></div>\n          <nav class=\"qp-pagination\" aria-label=\"Product pages\">\n            <button class=\"qp-page-button qp-prev\" type=\"button\"><span class=\"qp-page-arrow\">\u2039</span> Previous</button>\n            <span class=\"qp-page-label\" aria-live=\"polite\">Page 1 of 1</span>\n            <button class=\"qp-page-button qp-next\" type=\"button\">Next <span class=\"qp-page-arrow\">\u203A</span></button>\n          </nav>\n        </div>\n        <div class=\"qp-detail\">\n          <div class=\"qp-steps\" aria-label=\"Quote progress\">\n            <div class=\"qp-progress-step is-active\">STEP 1<span>Product selection</span></div><div class=\"qp-progress-step\">STEP 2<span>Contact information</span></div><div class=\"qp-progress-step\">STEP 3<span>Review information</span></div>\n          </div>\n          <div class=\"qp-product-hero\"></div>\n          <div class=\"qp-variant-scroll\"><div class=\"qp-variant-table\"></div></div>\n          <div class=\"qp-detail-error\" aria-live=\"polite\"></div>\n          <footer class=\"qp-detail-foot\"><button class=\"qp-secondary\" type=\"button\" data-back>Back to overview</button><button class=\"qp-primary\" type=\"button\" data-add-quote>Add To Quote</button></footer>\n        </div>\n      </section>\n    </div>`);\n\n  const root = document.getElementById('tccfcct-quote-picker');\n  const productBox = root.querySelector('.qp-products');\n  const status = root.querySelector('.qp-status');\n  const search = root.querySelector('.qp-search');\n  const pageLabel = root.querySelector('.qp-page-label');\n  const previousButton = root.querySelector('.qp-prev');\n  const nextButton = root.querySelector('.qp-next');\n  const productHero = root.querySelector('.qp-product-hero');\n  const variantTable = root.querySelector('.qp-variant-table');\n  const detailError = root.querySelector('.qp-detail-error');\n  const esc = (value = '') => String(value).replace(/[&<>\"']/g, character => ({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[character]));\n  const variantLabel = variant => [variant.option1, variant.option2, variant.option3].filter(value => value && value !== 'Default Title').join(' / ') || 'Default';\n\n  function productImage(product, variant = null) {\n    const image = variant?.featured_image || product?.featured_image || product?.images?.[0];\n    return typeof image === 'string' ? image : image?.src || '';\n  }\n\n  function readQuoteBasket() {\n    try { return JSON.parse(localStorage.getItem('wfq_basket_data') || '[]'); } catch (error) { return []; }\n  }\n\n  function productQuoteQuantity(product) {\n    return readQuoteBasket().filter(line => String(line.productId) === String(product.id)).reduce((sum, line) => sum + (Number(line.quantity) || 0), 0);\n  }\n\n  function makeLine(product, variant, quantity) {\n    return {\n      title: product.title,\n      price: Number(variant.price) || 0,\n      actualPrice: Number(variant.price) || 0,\n      image: productImage(product, variant) || null,\n      handle: product.handle,\n      productId: product.id,\n      variantId: variant.id,\n      quantity: Number(quantity),\n      sku: variant.sku || '',\n      variants: [variant.option1, variant.option2, variant.option3].filter(value => value && value !== 'Default Title'),\n      options: (product.options || []).filter(option => !(option.values?.length === 1 && option.values[0] === 'Default Title')),\n      productMoq: 1\n    };\n  }\n\n  function filteredProducts() {\n    const term = searchTerm.trim().toLowerCase();\n    if (!term) return products;\n    return products.filter(product => [product.title, product.vendor, product.product_type, product.handle, ...(product.variants || []).map(variant => `${variant.sku || ''} ${variantLabel(variant)}`)].join(' ').toLowerCase().includes(term));\n  }\n\n  function renderOverview() {\n    const filtered = filteredProducts();\n    const totalPages = Math.max(1, Math.ceil(filtered.length / pageSize));\n    currentPage = Math.min(Math.max(1, currentPage), totalPages);\n    const first = (currentPage - 1) * pageSize;\n    const visible = filtered.slice(first, first + pageSize);\n    productBox.innerHTML = visible.map(product => {\n      const image = productImage(product);\n      const quoteQuantity = productQuoteQuantity(product);\n      return `<article class=\"qp-card${quoteQuantity ? ' is-added' : ''}\" role=\"button\" tabindex=\"0\" aria-label=\"Choose ${esc(product.title)}\" data-product-id=\"${product.id}\">\n        <div class=\"qp-image-wrap\">${image ? `<img src=\"${esc(image)}\" alt=\"\" loading=\"lazy\">` : '<div class=\"qp-placeholder\"></div>'}${quoteQuantity ? `<span class=\"qp-added-badge\">${quoteQuantity} selected</span>` : ''}</div>\n        <div class=\"qp-card-body\"><h3 title=\"${esc(product.title)}\">${esc(product.title)}</h3><button class=\"qp-add\" type=\"button\" data-product-id=\"${product.id}\"><span>\uFF0B</span>${quoteQuantity ? 'Edit Quote' : 'Add To Quote'}</button></div>\n      </article>`;\n    }).join('') || '<div class=\"qp-empty\"><strong>No products found.</strong><br>Try another product name, SKU, color, or size.</div>';\n    pageLabel.textContent = `Page ${currentPage} of ${totalPages}`;\n    previousButton.disabled = currentPage <= 1;\n    nextButton.disabled = currentPage >= totalPages;\n    status.textContent = products.length ? `${filtered.length} product${filtered.length === 1 ? '' : 's'} available online` : status.textContent;\n  }\n\n  function showOverview() {\n    currentProduct = null;\n    draftQuantities = new Map();\n    detailError.textContent = '';\n    root.dataset.view = 'overview';\n    renderOverview();\n    setTimeout(() => search.focus(), 0);\n  }\n\n  function showDetail(product) {\n    currentProduct = product;\n    draftQuantities = new Map();\n    readQuoteBasket().filter(line => String(line.productId) === String(product.id)).forEach(line => draftQuantities.set(String(line.variantId), Number(line.quantity) || 0));\n    const image = productImage(product);\n    productHero.innerHTML = `${image ? `<img src=\"${esc(image)}\" alt=\"\">` : '<div class=\"qp-hero-placeholder\"></div>'}<div><h2>${esc(product.title)} Quote</h2><p>Select the required quantities for each size or variant.</p></div>`;\n    variantTable.innerHTML = `<div class=\"qp-variant-row qp-labels\"><span>VARIANT</span><span class=\"qp-sku\">SKU</span><span>QUANTITY</span></div>${(product.variants || []).map(variant => {\n      const imageUrl = productImage(product, variant);\n      const quantity = draftQuantities.get(String(variant.id)) || 0;\n      return `<label class=\"qp-variant-row\"><span class=\"qp-variant-name\">${imageUrl ? `<img src=\"${esc(imageUrl)}\" alt=\"\" loading=\"lazy\">` : '<span class=\"qp-variant-thumb\"></span>'}<span>${esc(variantLabel(variant))}</span></span><span class=\"qp-sku\">${esc(variant.sku || '\u2014')}</span><input class=\"qp-qty\" type=\"number\" min=\"0\" step=\"1\" inputmode=\"numeric\" value=\"${quantity || ''}\" aria-label=\"Quantity for ${esc(variantLabel(variant))}\" data-variant-id=\"${variant.id}\"></label>`;\n    }).join('')}`;\n    detailError.textContent = '';\n    root.dataset.view = 'detail';\n    root.querySelector('.qp-variant-scroll').scrollTop = 0;\n    setTimeout(() => root.querySelector('.qp-qty')?.focus(), 0);\n  }\n\n  async function loadProducts() {\n    status.textContent = 'Loading products\u2026';\n    const all = [];\n    try {\n      for (let page = 1; page <= 40; page += 1) {\n        const response = await fetch(`${rootPath}products.json?limit=250&page=${page}`, {credentials: 'same-origin'});\n        if (!response.ok) throw new Error('catalog unavailable');\n        const batch = (await response.json()).products || [];\n        all.push(...batch);\n        if (batch.length < 250) break;\n      }\n      products = all;\n      status.textContent = products.length ? `${products.length} products available online` : 'No products are published to the Online Store.';\n      renderOverview();\n    } catch (error) {\n      status.textContent = 'The product catalog could not be loaded. Please refresh and try again.';\n      productBox.innerHTML = '<div class=\"qp-empty\">Unable to load products.</div>';\n    }\n  }\n\n  function open() {\n    previousFocus = document.activeElement;\n    currentPage = 1;\n    searchTerm = '';\n    search.value = '';\n    root.dataset.view = 'overview';\n    root.classList.add('is-open');\n    root.setAttribute('aria-hidden', 'false');\n    document.body.classList.add('tccfcct-quote-picker-open');\n    if (!products.length) loadProducts(); else renderOverview();\n    setTimeout(() => search.focus(), 0);\n  }\n\n  function close() {\n    root.classList.remove('is-open');\n    root.setAttribute('aria-hidden', 'true');\n    document.body.classList.remove('tccfcct-quote-picker-open');\n    previousFocus?.focus?.();\n  }\n\n  window.tccfcctQuotePickerOpen = open;\n  window.tccfcctQuotePickerClose = close;\n  window.tccfcctQuotePickerOverview = showOverview;\n\n  function saveCurrentProduct() {\n    if (!currentProduct) return;\n    const selectedVariants = (currentProduct.variants || []).filter(variant => (draftQuantities.get(String(variant.id)) || 0) > 0);\n    if (!selectedVariants.length) {\n      detailError.textContent = 'Enter a quantity for at least one variant.';\n      return;\n    }\n    const existing = readQuoteBasket().filter(line => String(line.productId) !== String(currentProduct.id));\n    const added = selectedVariants.map(variant => makeLine(currentProduct, variant, draftQuantities.get(String(variant.id))));\n    localStorage.setItem('wfq_basket_data', JSON.stringify([...existing, ...added]));\n    window.wfqUpdateCount?.();\n    close();\n    let attempts = 0;\n    const openQuote = () => {\n      if (typeof window.wfqButtonHandle === 'function') return window.wfqButtonHandle();\n      const appLauncher = document.querySelector('.wfq-header-icon, .wfq-floating-badge');\n      if (appLauncher) {\n        appLauncher.click();\n        return;\n      }\n      if (++attempts < 24) return setTimeout(openQuote, 250);\n      alert('Your product was added. Please open the Quote List icon to continue.');\n    };\n    openQuote();\n  }\n\n  document.addEventListener('click', event => {\n    if (event.target.closest('a[href=\"#open-quote\"]')) { event.preventDefault(); open(); return; }\n    const productButton = event.target.closest('[data-product-id]');\n    if (productButton && root.contains(productButton)) {\n      const product = products.find(item => String(item.id) === productButton.dataset.productId);\n      if (product) showDetail(product);\n    }\n  });\n  root.querySelectorAll('[data-qp-close]').forEach(button => button.addEventListener('click', close));\n  root.querySelector('[data-back]').addEventListener('click', showOverview);\n  root.querySelector('[data-add-quote]').addEventListener('click', saveCurrentProduct);\n  previousButton.addEventListener('click', () => { currentPage -= 1; renderOverview(); productBox.scrollTop = 0; });\n  nextButton.addEventListener('click', () => { currentPage += 1; renderOverview(); productBox.scrollTop = 0; });\n  search.addEventListener('input', () => {\n    clearTimeout(searchTimer);\n    searchTimer = setTimeout(() => { searchTerm = search.value; currentPage = 1; renderOverview(); }, 120);\n  });\n  variantTable.addEventListener('input', event => {\n    const input = event.target.closest('[data-variant-id]');\n    if (!input) return;\n    const quantity = Math.max(0, parseInt(input.value, 10) || 0);\n    if (quantity) draftQuantities.set(String(input.dataset.variantId), quantity); else draftQuantities.delete(String(input.dataset.variantId));\n    detailError.textContent = '';\n  });\n  document.addEventListener('keydown', event => {\n    const productCard = event.target.closest?.('.qp-card[data-product-id]');\n    if (productCard && event.target === productCard && (event.key === 'Enter' || event.key === ' ')) {\n      event.preventDefault();\n      const product = products.find(item => String(item.id) === productCard.dataset.productId);\n      if (product) showDetail(product);\n      return;\n    }\n    if (event.key === 'Escape' && root.classList.contains('is-open')) close();\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
