{
  "version": 3,
  "sources": ["/cdn/shop/t/14/assets/df3d-rush.js?rev=3"],
  "sourcesContent": ["/* Downforce 3D \u2014 Rush $5 (STAGE #145805901908).\n * SHARED \u2014 all widths. Do not wrap in a 1023 media query.\n * Policy: docs/mobile-desktop-split.md\n *\n * Hatch/Spool lock:\n *   variant 47708422013012 \u00B7 SKU RUSH-5 \u00B7 $5\n *   visible line property exactly  Rush: Top of print queue\n *   optional extra                 _rush: yes\n *   UI                             checkout / cart\u2192checkout only\n *                                  (never Circuit Hex / configurator)\n *   Hatch tags paid orders `rush` when RUSH-5 is present (not this file).\n *\n * Theme loads this on every page; it no-ops unless [data-rush-box] exists\n * or Shopify.Checkout is present (Hatch additional-scripts path).\n */\n(function () {\n  'use strict';\n\n  var VARIANT_ID = 47708422013012;\n  var SKU = 'RUSH-5';\n  var PROP_KEY = 'Rush';\n  var PROP_VAL = 'Top of print queue';\n  var HIDDEN_KEY = '_rush';\n  var HIDDEN_VAL = 'yes';\n\n  function payload(id) {\n    var props = {};\n    props[PROP_KEY] = PROP_VAL;\n    props[HIDDEN_KEY] = HIDDEN_VAL;\n    return {\n      items: [{\n        id: Number(id) || VARIANT_ID,\n        quantity: 1,\n        properties: props\n      }]\n    };\n  }\n\n  function json(url, body) {\n    var opts = { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' } };\n    if (body) opts.body = JSON.stringify(body);\n    return fetch(url, opts).then(function (r) {\n      if (!r.ok) throw new Error('cart ' + r.status);\n      return r.json();\n    });\n  }\n\n  function getCart() {\n    return fetch('/cart.js', { headers: { Accept: 'application/json' } }).then(function (r) {\n      if (!r.ok) throw new Error('cart ' + r.status);\n      return r.json();\n    });\n  }\n\n  function rushLine(cart) {\n    var items = (cart && cart.items) || [];\n    for (var i = 0; i < items.length; i++) {\n      var it = items[i];\n      if (it.sku === SKU) return it;\n      if (Number(it.variant_id) === VARIANT_ID || Number(it.id) === VARIANT_ID) return it;\n    }\n    return null;\n  }\n\n  function addRush(id) {\n    return json('/cart/add.js', payload(id));\n  }\n\n  function removeRush(cart) {\n    var line = rushLine(cart);\n    if (!line) return Promise.resolve(cart);\n    return json('/cart/change.js', { id: line.key || line.id, quantity: 0 });\n  }\n\n  function bindBox(box) {\n    var toggle = box.querySelector('[data-rush-toggle]');\n    var id = Number(box.getAttribute('data-rush-variant')) || VARIANT_ID;\n    if (!toggle) return;\n\n    var busy = false;\n    function setBusy(on) {\n      busy = on;\n      toggle.disabled = on;\n      box.setAttribute('data-rush-busy', on ? '1' : '0');\n    }\n\n    toggle.addEventListener('change', function () {\n      if (busy) return;\n      var want = toggle.checked;\n      setBusy(true);\n      getCart().then(function (cart) {\n        var have = !!rushLine(cart);\n        if (want && !have) return addRush(id).then(function () { return true; });\n        if (!want && have) return removeRush(cart).then(function () { return true; });\n        return false;\n      }).then(function (changed) {\n        if (changed) window.location.reload();\n        else setBusy(false);\n      }).catch(function () {\n        toggle.checked = !want;\n        setBusy(false);\n      });\n    });\n  }\n\n  function checkoutHost() {\n    return document.querySelector('.sidebar__content')\n      || document.getElementById('order-summary')\n      || document.querySelector('.sidebar .order-summary')\n      || document.querySelector('.sidebar');\n  }\n\n  function productExists() {\n    return fetch('/products/rush.js', { headers: { Accept: 'application/json' } })\n      .then(function (r) { return r.ok; })\n      .catch(function () { return false; });\n  }\n\n  function isB5g1Text(t) {\n    t = String(t || '').replace(/\\s+/g, ' ').toLowerCase();\n    if (!t) return false;\n    if (t.indexOf('buy 5') !== -1 || t.indexOf('buy five') !== -1) return true;\n    if (t.indexOf('get 1 free') !== -1 || t.indexOf('get one free') !== -1) return true;\n    if (t.indexOf('pay for five') !== -1) return true;\n    if (t.indexOf('add six') !== -1 && t.indexOf('five') !== -1) return true;\n    return false;\n  }\n\n  function hideB5g1Node(el) {\n    if (!el || !el.style) return;\n    if (el.getAttribute && el.getAttribute('data-df3d-b5g1-hidden')) return;\n    if (el.closest && el.closest('[data-rush-box], [data-volume-box]')) return;\n    var row = el.closest\n      ? (el.closest('tr, .total-line, li, [data-discount-information], .reduction-code, .cart-discount') || el)\n      : el;\n    if (row.getAttribute && row.getAttribute('data-df3d-b5g1-hidden')) return;\n    if (row.setAttribute) row.setAttribute('data-df3d-b5g1-hidden', '1');\n    row.style.setProperty('display', 'none', 'important');\n  }\n\n  function hideB5g1() {\n    var sels = [\n      '.total-line--reduction',\n      '.total-line',\n      '.reduction-code',\n      '[data-discount-information]',\n      '.order-summary__section--discount',\n      '.reduction-code__text',\n      '.cart-discount',\n      '.product__discount'\n    ];\n    var seen = [];\n    var i;\n    for (i = 0; i < sels.length; i++) {\n      var nodes = document.querySelectorAll(sels[i]);\n      var n;\n      for (n = 0; n < nodes.length; n++) {\n        var el = nodes[n];\n        if (seen.indexOf(el) !== -1) continue;\n        seen.push(el);\n        if (!isB5g1Text(el.textContent)) continue;\n        hideB5g1Node(el);\n      }\n    }\n    /* Checkout Extensibility hashes class names. Hide short B5G1 labels only. */\n    var walk = document.querySelectorAll('span, p, small, td, th, li, button, a, strong');\n    for (i = 0; i < walk.length; i++) {\n      var node = walk[i];\n      var txt = node.textContent || '';\n      if (txt.length > 96 || !isB5g1Text(txt)) continue;\n      hideB5g1Node(node);\n    }\n  }\n\n  function injectCheckout() {\n    if (!(window.Shopify && Shopify.Checkout)) return;\n    if (document.querySelector('[data-rush-box]')) return;\n    var host = checkoutHost();\n    if (!host) return;\n\n    Promise.all([productExists(), getCart()]).then(function (pair) {\n      if (!pair[0] && !rushLine(pair[1])) return;\n      if (document.querySelector('[data-rush-box]')) return;\n      var on = !!rushLine(pair[1]);\n      var box = document.createElement('div');\n      box.setAttribute('data-rush-box', '');\n      box.setAttribute('data-rush-variant', String(VARIANT_ID));\n      box.className = 'df3d-rush';\n      box.setAttribute('style', 'margin:12px 0;padding:10px 0;border-top:1px solid #ddd;font-size:14px');\n      box.innerHTML = '<label class=\"df3d-rush__label\" style=\"display:flex;gap:8px;align-items:flex-start;cursor:pointer\">' +\n        '<input type=\"checkbox\" data-rush-toggle' + (on ? ' checked' : '') + '>' +\n        '<span><span style=\"display:block;font-weight:600\">Rush \u00B7 $5</span>' +\n        '<span style=\"display:block;font-size:12px;color:#666;margin-top:2px\">Jump the print queue</span></span></label>';\n      host.insertBefore(box, host.firstChild);\n      bindBox(box);\n    }).catch(function () { /* checkout host missing is fine */ });\n  }\n\n  var boxes = document.querySelectorAll('[data-rush-box]');\n  for (var i = 0; i < boxes.length; i++) bindBox(boxes[i]);\n  hideB5g1();\n  injectCheckout();\n  if (window.MutationObserver) {\n    var hideObs = new MutationObserver(hideB5g1);\n    hideObs.observe(document.documentElement, { childList: true, subtree: true });\n  }\n\n  if (typeof window !== 'undefined') {\n    window.DF3DRush = {\n      VARIANT_ID: VARIANT_ID,\n      SKU: SKU,\n      PROP_KEY: PROP_KEY,\n      PROP_VAL: PROP_VAL,\n      payload: payload\n    };\n  }\n})();\n"],
  "mappings": "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",
  "names": ["i"]
}
