{
  "version": 3,
  "sources": ["/cdn/shop/t/40/assets/eg-bundle-reward.js?cb=1794460637451"],
  "sourcesContent": ["/* EG REWARDS FOR FLY BUNDLES - the script of snippets/eg-bundle-reward.liquid (BFCM 2026, D-A497).\n *\n * WHAT IT DOES. After a cart change that brings a Fly bundle line the page did not have, it reads the\n * cart and, for each of EG's \"add automatically\" cart-value rules that the real cart now meets and\n * whose reward is not in the cart, adds that reward the way EG adds its own: the rule's variant and\n * quantity, with EG's line property (its \"added item identifier\", _Gifted) set to the rule's name, sent\n * to cart/add.js with EG's own marker ?_easygift_internal=true, so EG passes the request on without\n * judging it again. The body is the one EG sends for its own load-time adds. Then it has EG read the\n * cart again (EG's public EasyGift.RefreshCart), so EG counts the reward as given, and asks UpCart to\n * redraw the drawer. EG keeps managing that line like its own reward: its free discount applies to it,\n * and EG takes it back if the cart later drops below the rule.\n *\n * IT ALSO keeps the responses to EG's own marked requests away from Fly's /cart/add handler (see\n * \"FLY AND EG'S OWN REQUESTS\" below): without that, a pitcher or pop-up add-on that EG adds while a\n * shopper's bundle add is held makes that bundle land as the page's single product.\n *\n * WHY. EG judges a cart-value rule at the moment of an add, from its own copy of the cart plus the\n * items in the add request it intercepts. A Fly bundle is sent as one item of the page's product\n * (the Glass Water System page sends one Glass Water System at $255.99); Fly turns that request into\n * the bundle further down, and Shopify's cart transform makes it one bundle line ($461.20). EG has\n * judged the add by then and looks at the real cart again only on the next page load (D-A497).\n *\n * WHERE THE NUMBERS COME FROM. EG's rule list on the page: the meta tag #easygift-rules that EG's\n * app embed writes (a JSON array of the live rules, the list EG's script reads), and EG's settings\n * in #easygift-shop. So a threshold, a reward variant or a rule switched off in EG applies here too,\n * and nothing is hard-coded. EG trusts those two tags only when they are under 30 minutes old as it\n * starts (older: it loads its rules from its own server), so this file checks the same once, when\n * it starts, and does nothing on an older page. A rule counts only if it is active and not in test\n * mode, triggers on cart value with no excluded variants, adds automatically a reward that is not a\n * subscription, with a limit of 1, no schedule and no \"once per session\", targets all visitors, and\n * its countries include this one (Shopify.country); any other rule is left to EG. The cart value is\n * EG's own sum: price times quantity of every line except reward lines; the rule's amounts are in the\n * shop currency (CAD) and are converted with Shopify.currency.rate the way EG converts them.\n *\n * WHEN IT ACTS. Only on a bundle line that is new to this page view: the snippet passes the bundle\n * lines of the cart the page was rendered with (EG's own load-time check covers those), and a page\n * restored from the back-forward cache reads the cart again first. A bundle line is one with item\n * components (a cart transform bundle) or a Fly FBT offer id in its OfferId property, the same test as\n * the snippet's. The trigger is UpCart's documented upcartSubscribeCartUpdated callback, with the\n * browser's resource timing of cart/add requests as a fallback; WAIT ms after the last one, one cart\n * read at a time, and no read at all while no rule applies. It writes only when nothing holds it\n * back, checked again right before the write: EG must be running (its RefreshCart exists), EG's\n * pop-up must be closed, no subscribe add may be in flight (the bfcmSubAddingUntil marker every cart\n * script honours), and Fly must not be in the middle of a bundle add. The last matters because Fly\n * clears its \"make this add a bundle\" flag on the next /cart/add response it sees, so a write landing\n * inside a shopper's bundle add could leave that add a plain single product. It waits up to HOLD_LIMIT\n * for that without any request, then reads the cart again and writes only if the reward is still\n * due. At most MAX_ADDS writes per page view; a failed write is not retried. It never removes or\n * changes a line.\n *\n * WHAT THE SHOPPER SEES. UpCart takes the write for another app's add and opens its drawer, which then\n * shows the free pitcher: the same moment as EG's own adds.\n *\n * LIMITS, named. It adds only \"add automatically\" rewards (the free pitcher). EG's tier-1 pop-up for a\n * bundle whose page product alone is under that rule's amount still waits for the next page load. A\n * second tab rendered before the bundle was added sees it as new: in that tab, a pitcher the shopper\n * removed in the other one can come back on the next cart change there (EG itself re-adds a removed\n * reward on cart changes too, as \"once per session\" is off). The window between the last check and\n * the write's response is one request long; a bundle add started inside it is the one case the holds\n * cannot see; Fly no longer reads this file's own write as the end of a bundle add (the guard), so\n * such a bundle add is not broken by it.\n */\n(function () {\n  'use strict';\n  try {\n    if (window.egBundleReward) return;\n    window.egBundleReward = true;\n    var loader = document.querySelector('script[data-eg-bundle-sig]');\n    if (!loader) return;\n\n    /* FLY AND EG'S OWN REQUESTS (D-A499). EG adds rewards with requests of its own, every one marked\n     * ?_easygift_internal=true: the free pitcher when its preview of a shopper's add reaches the rule,\n     * and the pop-up's add-ons, both while it still holds the shopper's add. Fly's fetch, XHR and jQuery\n     * interceptors pass every /cart/add response to gfb.utility.interceptApiResponse, which takes it for\n     * the answer to Fly's own bundle add: it clears Fly's \"make this add a bundle\" flag and finishes\n     * Fly's native add. The shopper's held bundle add then goes out as the page's single product (seen\n     * live on 11 Nov: a second Refill Bundle add became one Glass Water System at $255.99 next to EG's\n     * free pitcher). So responses to EG's marked requests, this file's own write included, are kept\n     * from that one Fly handler; every other request reaches it exactly as before, and with no bundle\n     * add in progress the handler returns at once anyway. Fly's core defines the handler once and its\n     * interceptors look it up on gfb.utility at each call; the core loads before this file, and the\n     * guard is retried for 30 s in case it does not. */\n    function guardFly() {\n      var utility = window.gfb && window.gfb.utility;\n      if (!utility || typeof utility.interceptApiResponse !== 'function') return false;\n      if (utility.interceptApiResponse.egInternalGuard) return true;\n      var original = utility.interceptApiResponse;\n      var guarded = function (type, url) {\n        var address = '';\n        try {\n          address = String(url && typeof url === 'object' && url.url ? url.url : url);\n        } catch (error) {\n          address = '';\n        }\n        if (address.indexOf('_easygift_internal=true') >= 0) return Promise.resolve();\n        return original.apply(this, arguments);\n      };\n      guarded.egInternalGuard = true;\n      try {\n        utility.interceptApiResponse = guarded;\n      } catch (error) {\n        return false;\n      }\n      return utility.interceptApiResponse === guarded;\n    }\n    if (!guardFly()) {\n      var guardTries = 0;\n      var guardPoll = window.setInterval(function () {\n        guardTries += 1;\n        if (guardFly() || guardTries >= 60) window.clearInterval(guardPoll);\n      }, 500);\n    }\n\n    var MARKER = '?_easygift_internal=true';\n    var SUB_ADDING_KEY = 'bfcmSubAddingUntil';\n    var META_FRESH_S = 1800;\n    var WAIT = 1200;\n    var READ_LIMIT = 8000;\n    var HOLD_LIMIT = 60000;\n    var MAX_ADDS = 2;\n\n    function log(text) {\n      try { if (window.console && console.info) console.info('[eg-bundle-reward] ' + text); } catch (e) { /* nothing */ }\n    }\n    function root() {\n      return (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) || '/';\n    }\n    function up(value) {\n      return String(value == null ? '' : value).trim().toUpperCase();\n    }\n    /* The render time EG stamps into a meta tag's itemid: base64 of \"<name>_$_<unix seconds>\". */\n    function stamp(id) {\n      var tag = document.getElementById(id);\n      if (!tag) return 0;\n      try {\n        return parseInt(String(window.atob(tag.getAttribute('itemid') || '')).split('_$_')[1], 10) || 0;\n      } catch (error) {\n        return 0;\n      }\n    }\n    var startedAt = Date.now() / 1000;\n    var rulesAt = stamp('easygift-rules');\n    var shopAt = stamp('easygift-shop');\n    if (!rulesAt || !shopAt || startedAt - rulesAt >= META_FRESH_S || startedAt - shopAt >= META_FRESH_S) {\n      log('EG\\'s rule list on this page is missing or older than 30 minutes: left to EG');\n      return;\n    }\n    /* EG's line property for the lines it adds (EG settings, \"Added item identifier\"). */\n    var PROP = (function () {\n      try {\n        var shop = JSON.parse(document.getElementById('easygift-shop').getAttribute('content') || '{}');\n        var name = shop && shop.settings && shop.settings.addedItemIdentifier;\n        return name && String(name).trim() ? String(name).trim() : '_Gifted';\n      } catch (error) {\n        return '_Gifted';\n      }\n    })();\n\n    var seen = String(loader.getAttribute('data-eg-bundle-sig') || '');\n    var adds = 0;\n    var busy = false;\n    var again = false;\n    var timer = null;\n\n    /* A bundle line: a cart transform bundle (item components), or a Fly FBT offer id in its OfferId\n     * property. The same test as the snippet's Liquid, so the seed and this agree on every line. */\n    function isBundle(line) {\n      if (!line) return false;\n      if (line.has_components === true) return true;\n      var props = line.properties || {};\n      return String(props.OfferId || '').indexOf('FBT-') === 0;\n    }\n    function bundleSig(cart) {\n      var parts = [];\n      (cart.items || []).forEach(function (line) {\n        if (isBundle(line)) parts.push(String(line.key) + 'x' + String(line.quantity));\n      });\n      return parts.sort().join('|');\n    }\n    function isReward(line) {\n      var props = line && line.properties;\n      if (!props || typeof props !== 'object') return false;\n      var value = props[PROP];\n      return value !== null && value !== undefined && String(value).trim() !== '';\n    }\n\n    /* EG's live rules on this page, narrowed to the ones this file may act for (see the header). */\n    function rules() {\n      var tag = document.getElementById('easygift-rules');\n      if (!tag) return [];\n      var list;\n      try {\n        list = JSON.parse(tag.getAttribute('content') || '[]');\n      } catch (error) {\n        return [];\n      }\n      if (!Array.isArray(list)) return [];\n      var country = up(window.Shopify && window.Shopify.country);\n      if (!country) return [];\n      return list.filter(function (rule) {\n        if (!rule || rule.active !== true || rule.testMode !== false) return false;\n        if (!rule.trigger || rule.trigger.type !== 'cartValue') return false;\n        if (!(Number(rule.trigger.minCartValue) > 0)) return false;\n        if ((rule.trigger.cartValueExcludedVariants || []).length) return false;\n        var action = rule.action || {};\n        if (action.type !== 'addAutomatically' || !Array.isArray(action.products) || !action.products.length) return false;\n        if (action.limit != null && Number(action.limit) !== 1) return false;\n        var plain = action.products.every(function (product) {\n          return product && product.variantId && !product.sellingPlanId && !product.sellingPlan;\n        });\n        if (!plain) return false;\n        if (rule.settings && rule.settings.runsOncePerSession === true) return false;\n        if (rule.schedule && rule.schedule.enabled) return false;\n        var targeting = rule.targeting || {};\n        if (targeting.type && targeting.type !== 'all') return false;\n        var criteria = targeting.additionalCriteria || {};\n        if (criteria.type || (criteria.customerTags || []).length || (criteria.customerId || []).length) return false;\n        if (criteria.orderCount != null || criteria.totalSpent != null) return false;\n        var geo = criteria.geo || {};\n        var include = (geo.include || []).map(up);\n        var exclude = (geo.exclude || []).map(up);\n        if (!include.length || include.indexOf(country) < 0) return false;\n        if (exclude.indexOf(country) >= 0) return false;\n        return true;\n      });\n    }\n    /* A rule amount (shop currency, as typed in EG) in cents of the cart's currency, as EG converts it. */\n    function amount(value) {\n      var rate = parseFloat(window.Shopify && window.Shopify.currency && window.Shopify.currency.rate) || 1;\n      return parseInt(String(Math.round(Number(value) * 100) * rate), 10);\n    }\n    /* EG's cart value: price x quantity of every line but reward lines. */\n    function cartValue(cart) {\n      return (cart.items || []).reduce(function (sum, line) {\n        if (!line || !line.quantity || isReward(line)) return sum;\n        return sum + Math.round(Number(line.price) || 0) * Number(line.quantity);\n      }, 0);\n    }\n    function due(cart) {\n      return rules().filter(function (rule) {\n        var have = (cart.items || []).some(function (line) {\n          return line && line.properties && String(line.properties[PROP]) === String(rule.name);\n        });\n        if (have) return false;\n        var value = cartValue(cart);\n        if (value < amount(rule.trigger.minCartValue)) return false;\n        var upper = rule.trigger.upperCartValue;\n        if (upper != null && upper !== '' && value > amount(upper)) return false;\n        return true;\n      });\n    }\n\n    function readCart() {\n      var controller = typeof AbortController === 'function' ? new AbortController() : null;\n      var limit = window.setTimeout(function () { if (controller) controller.abort(); }, READ_LIMIT);\n      return fetch(root() + 'cart.js', { cache: 'no-store', credentials: 'same-origin', signal: controller ? controller.signal : undefined })\n        .then(function (res) {\n          if (!res.ok) throw new Error('cart.js ' + res.status);\n          return res.json();\n        })\n        .then(function (cart) {\n          window.clearTimeout(limit);\n          if (!cart || !Array.isArray(cart.items)) throw new Error('cart.js unreadable');\n          return cart;\n        }, function (error) {\n          window.clearTimeout(limit);\n          throw error;\n        });\n    }\n    /* Not now (see WHEN IT ACTS): the reason, or '' when nothing holds the write back. */\n    function held() {\n      if (!window.EasyGift || typeof window.EasyGift.RefreshCart !== 'function') return 'EG is not running yet';\n      var modal = document.getElementById('aca-modal');\n      if (modal && modal.getClientRects().length) return 'the EG pop-up is open';\n      try {\n        if (Number(window.localStorage.getItem(SUB_ADDING_KEY)) > Date.now()) return 'a subscribe add is in flight';\n      } catch (error) {\n        /* No storage: no subscribe add can be marked either. */\n      }\n      try {\n        var fly = window.gfb && window.gfb.gfbFrequentBought && window.gfb.gfbFrequentBought.state;\n        if (fly && (fly.addBundleUsingNativeATC === true || typeof fly.resolveNativeATC === 'function')) return 'Fly is in the middle of a bundle add';\n      } catch (error) {\n        /* Fly's state unreadable: no hold on its account. */\n      }\n      return '';\n    }\n    /* Resolves once nothing holds a write back (checked every 500 ms, no request in between), or with\n     * the reason after HOLD_LIMIT ms. */\n    function free() {\n      return new Promise(function (resolve) {\n        var since = Date.now();\n        (function check() {\n          var why = held();\n          if (!why) return resolve('');\n          if (Date.now() - since >= HOLD_LIMIT) return resolve(why);\n          window.setTimeout(check, 500);\n        })();\n      });\n    }\n    function addRewards(list) {\n      var items = [];\n      list.forEach(function (rule) {\n        rule.action.products.forEach(function (product) {\n          var props = {};\n          props[PROP] = String(rule.name);\n          items.push({ id: String(product.variantId), quantity: Number(product.quantity) || 1, properties: props });\n        });\n      });\n      return fetch(root() + 'cart/add.js' + MARKER, {\n        method: 'POST',\n        credentials: 'same-origin',\n        headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n        body: JSON.stringify({ items: items })\n      }).then(function (res) {\n        if (!res.ok) throw new Error('cart/add.js ' + res.status);\n        return res.json();\n      });\n    }\n    /* After a write: EG's own copy of the cart (its public RefreshCart, which reads the cart), so EG\n     * counts the new reward as given and does not add a second one on the shopper's next change, waited\n     * for at most READ_LIMIT ms; then the drawer. */\n    function afterWrite() {\n      var egRead;\n      try {\n        egRead = window.EasyGift && typeof window.EasyGift.RefreshCart === 'function' ? window.EasyGift.RefreshCart() : null;\n      } catch (error) {\n        egRead = null;\n      }\n      var limit = new Promise(function (resolve) { window.setTimeout(resolve, READ_LIMIT); });\n      return Promise.race([Promise.resolve(egRead), limit]).catch(function () {\n        /* EG reads the cart again on its own next request or page load. */\n      }).then(function () {\n        document.dispatchEvent(new CustomEvent('cart:refresh', { bubbles: true }));\n        try {\n          if (typeof window.upcartRefreshCart === 'function') window.upcartRefreshCart();\n        } catch (error) {\n          /* The drawer is UpCart's; the cart itself is already right. */\n        }\n      });\n    }\n\n    function schedule(ms) {\n      window.clearTimeout(timer);\n      timer = window.setTimeout(pass, ms == null ? WAIT : ms);\n    }\n    function finish() {\n      busy = false;\n      if (again) {\n        again = false;\n        schedule();\n      }\n    }\n    function pass() {\n      if (busy) {\n        again = true;\n        return;\n      }\n      if (adds >= MAX_ADDS) return;\n      /* No rule this file may act for (none for this country, or EG's list missing): no read. */\n      if (!rules().length) return;\n      busy = true;\n      readCart().then(function (cart) {\n        var sig = bundleSig(cart);\n        if (sig === seen || !sig || !due(cart).length) {\n          seen = sig;\n          return null;\n        }\n        return free().then(function (why) {\n          if (why) {\n            log('gave up waiting: ' + why);\n            seen = sig;\n            return null;\n          }\n          /* Read again right before writing: the reward may have landed meanwhile. */\n          return readCart().then(function (fresh) {\n            /* A hold that began during that read: leave seen alone, so the next pass tries again. */\n            if (held()) {\n              again = true;\n              return null;\n            }\n            var list = due(fresh);\n            seen = bundleSig(fresh);\n            if (!list.length) return null;\n            adds += 1;\n            return addRewards(list).then(function () {\n              log('added ' + list.map(function (rule) { return rule.name; }).join(', '));\n              return afterWrite();\n            });\n          });\n        });\n      }).catch(function (error) {\n        log('nothing added (' + (error && error.message ? error.message : error) + ')');\n      }).then(finish, finish);\n    }\n\n    /* A page restored from the back-forward cache: the cart may have changed in another page since, so\n     * its bundles become the seed (one read, no write). */\n    window.addEventListener('pageshow', function (event) {\n      if (!event || !event.persisted || !rules().length) return;\n      readCart().then(function (cart) { seen = bundleSig(cart); }, function () { /* keep the old seed */ });\n    });\n\n    /* Triggers. UpCart's bundle is a deferred app embed loaded after this file, so its API is tried\n     * now, at DOMContentLoaded, at load and then every 500 ms for 30 s (as assets/bfcm-sub-cart.js). */\n    var hooked = false;\n    function hook() {\n      if (hooked) return true;\n      if (typeof window.upcartSubscribeCartUpdated !== 'function') return false;\n      hooked = true;\n      try {\n        window.upcartSubscribeCartUpdated(function () { schedule(); });\n      } catch (error) {\n        log('UpCart\\'s cart-updated callback could not be registered');\n      }\n      return true;\n    }\n    if (!hook()) {\n      var tries = 0;\n      var poll = window.setInterval(function () {\n        tries += 1;\n        if (hook() || tries >= 60) window.clearInterval(poll);\n      }, 500);\n      document.addEventListener('DOMContentLoaded', hook);\n      window.addEventListener('load', hook);\n    }\n    try {\n      new PerformanceObserver(function (entries) {\n        entries.getEntries().forEach(function (entry) {\n          var url = String(entry.name || '');\n          if (url.indexOf('/cart/add') >= 0 && url.indexOf('_easygift_internal') < 0) schedule();\n        });\n      }).observe({ type: 'resource' });\n    } catch (error) {\n      /* No resource timing: UpCart's callback is the only trigger. */\n    }\n  } catch (error) {\n    /* Fail open: the cart stays exactly as the shopper and EG left it. */\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
