{
  "version": 3,
  "sources": ["/cdn/shop/t/6/assets/rc-subscription-cart.js"],
  "sourcesContent": ["/* Storefront guard. Checkout/API enforcement requires a Shopify validation function. */\n(function () {\n  'use strict';\n  const message = 'Subscription products must be purchased separately. Please remove the other products from your cart or complete your current order first.';\n  const unavailable = 'We could not verify your cart. Please try again before adding an item or checking out.';\n  function allowed(items) {\n    return !items.some(item => item.subscription) || new Set(items.map(item => String(item.product_id))).size <= 1;\n  }\n  function additions(body) {\n    if (typeof body === 'string') {\n      try { body = JSON.parse(body); } catch (_) { body = new URLSearchParams(body); }\n    }\n    if (body && typeof body.entries === 'function') {\n      const entries = Array.from(body.entries());\n      const grouped = new Map();\n      for (const [key, value] of entries) {\n        const match = key.match(/^items\\[(\\d+)\\]\\[(id|quantity)\\]$/);\n        if (match) {\n          if (!grouped.has(match[1])) grouped.set(match[1], {});\n          grouped.get(match[1])[match[2]] = value;\n        }\n      }\n      body = grouped.size ? { items: Array.from(grouped.values()) } : Object.fromEntries(entries);\n    }\n    const items = body && (body.items || [body]);\n    if (!Array.isArray(items) || !items.length || items.some(item => !/^\\d+$/.test(String(item.id)))) throw new Error(unavailable);\n    return items.filter(item => item.quantity === undefined || Number(item.quantity) > 0);\n  }\n  if (typeof module !== 'undefined' && module.exports) { module.exports = { allowed, additions }; return; }\n  const nativeFetch = window.fetch.bind(window);\n  const root = () => window.Shopify?.routes?.root || '/';\n  const cartUrl = () => `${root()}cart`;\n  let pending = Promise.resolve();\n  function enqueue(work) {\n    const result = pending.then(work);\n    pending = result.catch(() => {});\n    return result;\n  }\n  function isAdd(url, method) {\n    const parsed = new URL(url, location.href);\n    return parsed.origin === location.origin && /\\/cart\\/add(?:\\.js)?\\/?$/.test(parsed.pathname) && String(method || 'GET').toUpperCase() === 'POST';\n  }\n  async function read(url, options = {}) {\n    const controller = new AbortController();\n    const timer = setTimeout(() => controller.abort(), 10000);\n    try {\n      const response = await nativeFetch(url, { credentials: 'same-origin', cache: 'no-store', signal: controller.signal, headers: { Accept: '*/*' }, ...options });\n      if (!response.ok) throw new Error(unavailable);\n      return options.method === 'HEAD' ? response.url : await response.text();\n    } finally { clearTimeout(timer); }\n  }\n  function validateItem(item) {\n    if (!item || !/^\\d+$/.test(String(item.product_id)) || typeof item.subscription !== 'boolean') throw new Error(unavailable);\n    return item;\n  }\n  async function readCart() {\n    const data = JSON.parse(await read(`${cartUrl()}?view=rc-subscription`));\n    if (data.version !== 1 || !Array.isArray(data.items)) throw new Error(unavailable);\n    return data.items.map(validateItem);\n  }\n  async function check(body) {\n    try {\n      const incoming = additions(body);\n      const [cart, products] = await Promise.all([\n        readCart(),\n        Promise.all(incoming.map(async item => {\n          // The variant section endpoint returns an empty 404 on this storefront.\n          // Resolve its canonical product URL first, then render product-scoped JSON.\n          const path = await read(`${root()}variants/${item.id}`, { method: 'HEAD' });\n          const url = new URL(path, location.origin);\n          if (url.origin !== location.origin || !/\\/products\\/[^/]+\\/?$/.test(url.pathname)) throw new Error(unavailable);\n          url.search = '';\n          url.searchParams.set('view', 'rc-subscription');\n          url.searchParams.set('variant', item.id);\n          const data = JSON.parse(await read(url));\n          if (data.version !== 1 || String(data.variant_id) !== String(item.id)) throw new Error(unavailable);\n          return validateItem(data);\n        })),\n      ]);\n      if (!allowed([...cart, ...products])) throw new Error(message);\n    } catch (error) { throw new Error(error.message === message ? message : unavailable); }\n  }\n  function showError(text) {\n    // Use the shared centered cart dialog; do not create a second notification.\n    window.RoyalWarehouseCart?.showError(text);\n  }\n  function failure(error) {\n    const description = error.message === message ? message : unavailable;\n    showError(description);\n    return JSON.stringify({ status: 422, message: 'Cart Error', description });\n  }\n  window.fetch = function (input, options) {\n    const request = input instanceof Request ? input : null;\n    if (!isAdd(request ? request.url : input, options?.method || request?.method)) return nativeFetch(input, options);\n    return enqueue(async () => {\n      try {\n        let body = options?.body;\n        if (body === undefined && request) {\n          const copy = request.clone();\n          body = /multipart\\/form-data/i.test(copy.headers.get('Content-Type') || '') ? await copy.formData() : await copy.text();\n        }\n        await check(body);\n      }\n      catch (error) { return new Response(failure(error), { status: 422, headers: { 'Content-Type': 'application/json' } }); }\n      // Do not retry an uncertain cart mutation.\n      return nativeFetch(input, options);\n    });\n  };\n  // Empire's legacy quick-add uses jQuery/XHR; preserve its existing success/error UI.\n  const open = XMLHttpRequest.prototype.open;\n  const send = XMLHttpRequest.prototype.send;\n  const abort = XMLHttpRequest.prototype.abort;\n  const requests = new WeakMap();\n  XMLHttpRequest.prototype.open = function (method, url, ...args) {\n    // Clear only synthetic response fields when an XHR instance is reused.\n    if (requests.get(this)?.synthetic) {\n      for (const key of ['readyState', 'status', 'statusText', 'responseText', 'response']) delete this[key];\n    }\n    requests.set(this, { guarded: isAdd(url, method), aborted: false });\n    return open.call(this, method, url, ...args);\n  };\n  XMLHttpRequest.prototype.abort = function () {\n    const state = requests.get(this);\n    if (state) state.aborted = true;\n    return abort.call(this);\n  };\n  XMLHttpRequest.prototype.send = function (body) {\n    const state = requests.get(this);\n    if (!state?.guarded) return send.call(this, body);\n    enqueue(async () => {\n      if (state.aborted) return;\n      try { await check(body); }\n      catch (error) {\n        if (state.aborted) return;\n        const responseText = failure(error);\n        state.synthetic = true;\n        for (const [key, value] of Object.entries({ readyState: 4, status: 422, statusText: 'Unprocessable Entity', responseText, response: this.responseType === 'json' ? JSON.parse(responseText) : responseText })) {\n          Object.defineProperty(this, key, { configurable: true, value });\n        }\n        this.dispatchEvent(new Event('readystatechange'));\n        this.dispatchEvent(new Event('load'));\n        this.dispatchEvent(new Event('loadend'));\n        return;\n      }\n      if (state.aborted) return;\n      await new Promise((resolve, reject) => {\n        this.addEventListener('loadend', resolve, { once: true });\n        try { send.call(this, body); } catch (error) { reject(error); }\n      });\n    }).catch(() => showError(unavailable));\n  };\n  async function checkCheckout() {\n    await pending;\n    if (!allowed(await readCart())) {\n      const error = new Error(message);\n      error.name = 'SubscriptionCartError';\n      throw error;\n    }\n  }\n  window.RoyalSubscriptionCart = { checkCheckout };\n  const approved = new WeakSet();\n  document.addEventListener('submit', event => {\n    const form = event.target;\n    // Native forms without a theme handler also pass through the guarded fetch.\n    if (isAdd(form.action, form.method) && !event.defaultPrevented) {\n      event.preventDefault();\n      window.fetch(`${root()}cart/add.js`, { method: 'POST', body: new FormData(form) })\n        .then(response => { if (response.ok) location.assign(cartUrl()); })\n        .catch(() => showError(unavailable));\n    }\n  });\n  async function checkout(proceed) {\n    try {\n      await checkCheckout();\n      proceed();\n    } catch (error) { showError(error.message === message ? message : unavailable); }\n  }\n  document.addEventListener('submit', event => {\n    const form = event.target;\n    if (window.RoyalWarehouseCart) return;\n    if (approved.has(form)) { approved.delete(form); return; }\n    if (event.submitter?.name !== 'checkout' && !/\\/checkout\\/?$/.test(new URL(form.action, location.href).pathname)) return;\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    const submitter = event.submitter;\n    checkout(() => { approved.add(form); form.requestSubmit(submitter); });\n  }, true);\n  document.addEventListener('click', event => {\n    if (window.RoyalWarehouseCart) return;\n    const link = event.target.closest('a[href]');\n    if (!link) return;\n    const url = new URL(link.href, location.href);\n    if (url.origin !== location.origin || !/\\/checkout\\/?$/.test(url.pathname)) return;\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    checkout(() => location.assign(url.href));\n  }, true);\n})();\n"],
  "mappings": "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",
  "names": []
}
