{
  "version": 3,
  "sources": ["/cdn/shop/t/90/assets/aw-replica-purchase-context-p2.js?aw_p2=245"],
  "sourcesContent": ["(() => {\n  'use strict';\n  if (window.AWReplicaPurchaseContextP2?.version) return;\n\n  const VERSION = '1.0.2';\n  const KEY = 'aw_replica_purchase_context_v1';\n  const REPLICAS_KEY = 'aw_garage_replicas_v1';\n  const TTL_MS = 30 * 60 * 1000;\n\n  const clean = (value = '') => String(value || '').trim();\n  const readJson = (storage, key, fallback) => {\n    try { return JSON.parse(storage.getItem(key) || 'null') ?? fallback; }\n    catch (_) { return fallback; }\n  };\n  const replicas = () => {\n    const value = readJson(localStorage, REPLICAS_KEY, []);\n    return Array.isArray(value) ? value : [];\n  };\n  const replicaById = (id) => replicas().find((item) => clean(item?.id) === clean(id)) || null;\n  const pathOnly = (value = '') => {\n    try { return new URL(value, location.origin).pathname.replace(/\\/+$/, '') || '/'; }\n    catch (_) { return ''; }\n  };\n  const clear = () => {\n    try { sessionStorage.removeItem(KEY); } catch (_) {}\n  };\n\n  const read = () => {\n    const ctx = readJson(sessionStorage, KEY, null);\n    if (!ctx || Number(ctx.expiresAt || 0) <= Date.now()) {\n      clear();\n      return null;\n    }\n    if (!ctx.replicaId || !replicaById(ctx.replicaId)) {\n      clear();\n      return null;\n    }\n    const currentPath = pathOnly(location.href);\n    if (!currentPath || pathOnly(ctx.pathname) !== currentPath) {\n      clear();\n      return null;\n    }\n    return ctx;\n  };\n\n  const remember = (link) => {\n    const pack = link?.closest?.('[data-aw-owned-pack-replica]');\n    const item = link?.closest?.('[data-aw-owned-pack-product]');\n    const replicaId = clean(pack?.dataset?.awOwnedPackReplica);\n    const productId = clean(item?.dataset?.awOwnedPackProduct);\n    const replica = replicaById(replicaId);\n    if (!replicaId || !replica || !productId) return false;\n\n    let url;\n    try { url = new URL(link.href, location.origin); }\n    catch (_) { return false; }\n    if (url.origin !== location.origin || !/^\\/products\\/[^/]+\\/?$/i.test(url.pathname)) return false;\n\n    const now = Date.now();\n    const ctx = {\n      version: 1,\n      replicaId,\n      replicaLabel: clean(replica.nickname || replica.model || 'R\u00E9plique AW').slice(0, 120),\n      productId,\n      pathname: pathOnly(url.href),\n      source: 'garage_owned_pack_product_link',\n      createdAt: new Date(now).toISOString(),\n      expiresAt: now + TTL_MS\n    };\n    try {\n      sessionStorage.setItem(KEY, JSON.stringify(ctx));\n      return true;\n    } catch (_) {\n      return false;\n    }\n  };\n\n  const propertyInput = (form, name) => form?.elements?.namedItem?.(`properties[${name}]`) || null;\n  const setHidden = (form, name, value) => {\n    let input = propertyInput(form, name);\n    if (input?.value) return false;\n    if (!input) {\n      input = document.createElement('input');\n      input.type = 'hidden';\n      input.name = `properties[${name}]`;\n      form.appendChild(input);\n    }\n    input.value = value;\n    input.dataset.awReplicaPurchaseContextP2 = 'true';\n    return true;\n  };\n  const eligibleForm = (form) => {\n    if (!form?.matches?.('form')) return false;\n    const action = clean(form.getAttribute('action') || form.action);\n    return /\\/cart\\/add(?:\\.js)?(?:[?#]|$)/i.test(action);\n  };\n\n  const decorate = (form) => {\n    if (!eligibleForm(form)) return false;\n    const ctx = read();\n    if (!ctx) return false;\n\n    const existing = propertyInput(form, '_AW Replica ID');\n    if (existing?.value) {\n      if (clean(existing.value) !== clean(ctx.replicaId)) clear();\n      return false;\n    }\n\n    const replica = replicaById(ctx.replicaId);\n    if (!replica) {\n      clear();\n      return false;\n    }\n\n    const changed = setHidden(form, '_AW Replica ID', clean(ctx.replicaId).slice(0, 120));\n    setHidden(form, '_AW Replica Label', clean(replica.nickname || replica.model || ctx.replicaLabel || 'R\u00E9plique AW').slice(0, 120));\n    setHidden(form, '_AW Purchase Context', 'garage_owned_pack_product_link');\n    form.dataset.awReplicaPurchaseContext = 'exact-explicit-garage-link';\n    return changed;\n  };\n\n  const hydrate = (scope = document) => {\n    const forms = [];\n    if (scope?.matches?.('form[action*=\"/cart/add\"]')) forms.push(scope);\n    scope?.querySelectorAll?.('form[action*=\"/cart/add\"]').forEach((form) => forms.push(form));\n    let count = 0;\n    forms.forEach((form) => { if (decorate(form)) count += 1; });\n    return count;\n  };\n\n  document.addEventListener('click', (event) => {\n    const link = event.target?.closest?.('[data-aw-owned-pack-link]');\n    if (link) remember(link);\n  }, true);\n\n  document.addEventListener('submit', (event) => {\n    const form = event.target?.closest?.('form[action*=\"/cart/add\"]');\n    if (!form) return;\n    const ctx = read();\n    decorate(form);\n    const attributed = propertyInput(form, '_AW Replica ID');\n    if (ctx && clean(attributed?.value) === clean(ctx.replicaId)) clear();\n  }, true);\n\n  window.addEventListener('pageshow', () => hydrate(document));\n  document.addEventListener('shopify:section:load', (event) => hydrate(event.target));\n\n  window.AWReplicaPurchaseContextP2 = {\n    version: VERSION,\n    remember,\n    read,\n    decorate,\n    hydrate,\n    clear,\n    policy: 'explicit-garage-pack-product-link-only;session-scoped;30-minute-expiry;exact-target-path;existing-garage-replica-required;never-infer-from-active-replica-alone;never-overwrite-existing-replica-id'\n  };\n\n  const start = () => hydrate(document);\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start, { once: true });\n  else start();\n})();"],
  "mappings": "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",
  "names": []
}
