{
  "version": 3,
  "sources": ["/cdn/shop/t/20/assets/cw-customer-attribution.js?cw=20260922-v276-1"],
  "sourcesContent": ["(function (root) {\n  'use strict';\n\n  const LEGACY_KEY = 'cw-attribution-v1';\n  const RECENT_UTM_KEY = 'cw-customer-attribution-v1';\n  const TTL = 30 * 60 * 1000;\n  const INSTANCE_KEY = '__cwCustomerAttributionV1__';\n  const ENDPOINT = '/apps/cw-preferences/attribution';\n  const SITE_ORIGIN = 'https://craftedwondersart.com';\n  const UTM_ALLOWLIST = Object.freeze({\n    utm_source: new Set(['shopify_email', 'google', 'bing', 'tiktok', 'instagram', 'pinterest', 'youtube', 'facebook', 'wechat', 'weixin', 'xiaohongshu', 'instagram_cigar', 'instagram_brand', 'reddit', 'email']),\n    utm_medium: new Set(['email', 'cpc', 'paid_social', 'organic', 'social', 'referral', 'organic_social', 'community']),\n    utm_campaign: new Set(['cw_retention_cigar_gifting', 'cw_retention_collection', 'cw_retention_story_co_creation', 'cw_qa_20260920', 'bf26_CG01', 'bf26_CG02', 'bf26_CG03', 'bf26_CG04', 'bf26_CG05', 'bf26_CO01', 'bf26_CO02', 'bf26_CO03', 'bf26_CU01', 'bf26_CU02']),\n    utm_content: new Set(['cigar_welcome', 'cigar_collection_story', 'cigar_private_viewing', 'collection_welcome', 'collection_story', 'collection_private_viewing', 'story_welcome', 'story_collection_story', 'story_private_viewing', 'qa_discount', 'ig_feed_hardest_man_v1', 'gift_checklist_v1', 'gift_match_v1', 'collection_notes_v1', 'story_custom_v1', 'holiday_guide_v1', 'corporate_brief_v1', 'collectors_passport_v1', 'story_to_brief_v1', 'cw_qa_campaign_20260922']),\n  });\n  const UTM_KEYS = Object.keys(UTM_ALLOWLIST);\n  const PUBLIC_PATH = /^\\/(?:$|(?:pages|products|collections|blogs)\\/[a-z0-9/-]{1,180})$/i;\n  const BUSINESS_LINE_BY_PATH = Object.freeze({\n    '/collections/cigar-ashtrays': 'cigar',\n    '/pages/cigar-ashtrays': 'cigar',\n    '/pages/cigar-gift-list': 'cigar',\n    '/pages/cigar-gift-match': 'cigar',\n    '/collections/blue-and-white': 'collection',\n    '/pages/blue-and-white': 'collection',\n    '/pages/blue-white-collection-notes': 'collection',\n    '/pages/story-co-creation': 'story',\n    '/pages/story-custom': 'story',\n  });\n\n  function safePath(path) {\n    return typeof path === 'string' && PUBLIC_PATH.test(path) && !path.includes('..') && !path.includes('//');\n  }\n\n  function cleanUtm(source) {\n    if (!source || typeof source !== 'object' || Array.isArray(source)) return {};\n    const out = {};\n    for (const key of UTM_KEYS) {\n      if (typeof source[key] === 'string' && UTM_ALLOWLIST[key].has(source[key])) out[key] = source[key];\n    }\n    return out;\n  }\n\n  function currentUtm(url) {\n    const values = {};\n    let mentioned = false;\n    let valid = true;\n    if (url.searchParams.has('utm_term')) {\n      // utm_term is intentionally unsupported: do not fall back to an older\n      // tuple when the current URL explicitly carries an unapproved field.\n      mentioned = true;\n      valid = false;\n    }\n    for (const key of UTM_KEYS) {\n      const all = url.searchParams.getAll(key);\n      if (!all.length) continue;\n      mentioned = true;\n      if (all.length !== 1 || typeof all[0] !== 'string' || !UTM_ALLOWLIST[key].has(all[0])) valid = false;\n      else values[key] = all[0];\n    }\n    return { mentioned, valid, values };\n  }\n\n  function recentStoredUtm(storage, now) {\n    try {\n      const ownRecord = JSON.parse(storage.getItem(RECENT_UTM_KEY) || 'null');\n      if (ownRecord && Number.isFinite(ownRecord.expires) && ownRecord.expires > now && ownRecord.expires <= now + TTL) {\n        const ownUtm = cleanUtm(ownRecord.utm);\n        if (Object.keys(ownUtm).length) return ownUtm;\n      }\n    } catch (_) {}\n    try {\n      const legacy = JSON.parse(storage.getItem(LEGACY_KEY) || 'null');\n      if (!legacy || !Number.isFinite(legacy.expires) || legacy.expires <= now || legacy.expires > now + TTL || !legacy.first) return {};\n      const last = cleanUtm(legacy.last);\n      if (Object.keys(last).length) return last;\n      return cleanUtm(legacy.first);\n    } catch (_) { return {}; }\n  }\n\n  function saveRecentUtm(storage, utm, now) {\n    if (!storage || !Object.keys(utm).length) return;\n    try { storage.setItem(RECENT_UTM_KEY, JSON.stringify({ utm, expires: now + TTL })); } catch (_) {}\n  }\n\n  function cleanTouch(href, context = {}, storage = null, now = Date.now()) {\n    let url;\n    try { url = new URL(href); } catch (_) { return null; }\n    if (url.origin !== SITE_ORIGIN || !safePath(url.pathname)) return null;\n\n    const touch = { path: url.pathname };\n    const line = typeof context.businessLine === 'string' && ['cigar', 'collection', 'story'].includes(context.businessLine)\n      ? context.businessLine\n      : BUSINESS_LINE_BY_PATH[url.pathname];\n    if (line) touch.business_line = line;\n    if (typeof context.productSku === 'string' && /^CD-\\d{3}$/.test(context.productSku)) touch.product_sku = context.productSku;\n    if (typeof context.articleId === 'string' && /^\\d{1,20}$/.test(context.articleId)) touch.article_id = context.articleId;\n    if (typeof context.collectionId === 'string' && /^\\d{1,20}$/.test(context.collectionId)) touch.collection_id = context.collectionId;\n\n    const query = currentUtm(url);\n    let utm = {};\n    if (query.mentioned && query.valid) {\n      utm = query.values;\n      saveRecentUtm(storage, utm, now);\n    } else if (!query.mentioned) {\n      utm = recentStoredUtm(storage, now);\n    }\n    Object.assign(touch, utm);\n    return touch;\n  }\n\n  function consentAllowed(shopify) {\n    try { return shopify?.customerPrivacy?.analyticsProcessingAllowed() === true; } catch (_) { return false; }\n  }\n\n  function createEventId(crypto) {\n    try {\n      if (typeof crypto?.randomUUID === 'function') return crypto.randomUUID();\n      if (typeof crypto?.getRandomValues !== 'function') return null;\n      const bytes = crypto.getRandomValues(new Uint8Array(16));\n      bytes[6] = (bytes[6] & 0x0f) | 0x40;\n      bytes[8] = (bytes[8] & 0x3f) | 0x80;\n      const hex = [...bytes].map(value => value.toString(16).padStart(2, '0')).join('');\n      return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n    } catch (_) { return null; }\n  }\n\n  function createController(options) {\n    const page = options.root;\n    const fetcher = options.fetch;\n    const endpoint = options.endpoint;\n    const context = options.context || {};\n    const storage = options.storage;\n    const now = options.now || Date.now;\n    const makeId = options.createId || (() => createEventId(page.crypto));\n    const AbortCtor = options.AbortController || page.AbortController || globalThis.AbortController;\n    let attemptConsumed = false;\n    let inFlight = null;\n    let controller = null;\n    let generation = 0;\n    let listenerAttached = false;\n\n    function clearRecentUtm() {\n      try { storage?.removeItem(RECENT_UTM_KEY); } catch (_) {}\n    }\n\n    function cancelForNoConsent() {\n      generation += 1;\n      try { controller?.abort(); } catch (_) {}\n      controller = null;\n      inFlight = null;\n      attemptConsumed = false;\n      clearRecentUtm();\n    }\n\n    async function run() {\n      if (endpoint !== ENDPOINT || typeof fetcher !== 'function') return false;\n      if (!consentAllowed(page.Shopify)) { cancelForNoConsent(); return false; }\n      if (inFlight) return inFlight;\n      if (attemptConsumed) return false;\n      const eventId = makeId();\n      if (typeof eventId !== 'string' || !/^[0-9a-f-]{36}$/i.test(eventId)) return false;\n      const touch = cleanTouch(page.location?.href, context, storage, now());\n      if (!touch) return false;\n\n      attemptConsumed = true;\n      const requestGeneration = ++generation;\n      if (typeof AbortCtor !== 'function') return false;\n      controller = new AbortCtor();\n      const signal = controller.signal;\n      const requestOptions = {\n        method: 'POST', credentials: 'same-origin', cache: 'no-store', redirect: 'error', signal,\n        headers: { 'content-type': 'application/json', accept: 'application/json' },\n      };\n      const task = (async () => {\n        try {\n          if (!consentAllowed(page.Shopify)) return false;\n          const issue = await fetcher(`${endpoint}/issue`, {\n            ...requestOptions,\n            body: JSON.stringify({ analyticsConsent: true, eventId, touch }),\n          });\n          if (!issue?.ok) return false;\n          const issued = await issue.json();\n          if (requestGeneration !== generation || !consentAllowed(page.Shopify)) return false;\n          if (typeof issued?.ticket !== 'string' || !issued.ticket) return false;\n          if (!consentAllowed(page.Shopify)) return false;\n          const committed = await fetcher(`${endpoint}/commit`, {\n            ...requestOptions,\n            body: JSON.stringify({ ticket: issued.ticket, analyticsConsent: true }),\n          });\n          if (!committed?.ok) return false;\n          const result = await committed.json();\n          if (requestGeneration !== generation || !consentAllowed(page.Shopify)) return false;\n          return result?.status === 'saved' || result?.status === 'no_change';\n        } catch (_) {\n          return false;\n        }\n      })();\n      inFlight = task;\n      try { return await task; }\n      finally {\n        if (inFlight === task) inFlight = null;\n        if (requestGeneration === generation) controller = null;\n      }\n    }\n\n    function onConsentCollected() {\n      if (consentAllowed(page.Shopify)) void run();\n      else cancelForNoConsent();\n    }\n\n    function initialize() {\n      if (!listenerAttached) {\n        page.document?.addEventListener?.('visitorConsentCollected', onConsentCollected);\n        listenerAttached = true;\n      }\n      if (page.Shopify?.customerPrivacy) void run();\n      else if (typeof page.Shopify?.loadFeatures === 'function') {\n        try {\n          page.Shopify.loadFeatures([{ name: 'consent-tracking-api', version: '0.1' }], error => {\n            if (!error) void run();\n          });\n        } catch (_) {}\n      }\n    }\n\n    return { run, initialize, onConsentCollected, cancelForNoConsent };\n  }\n\n  function boot(page) {\n    if (!page?.document) return null;\n    if (page[INSTANCE_KEY]) return page[INSTANCE_KEY];\n    const script = page.document.currentScript;\n    if (!script || script.dataset?.cwEnabled !== 'true' || script.dataset?.cwEndpoint !== ENDPOINT) return null;\n    const controller = createController({\n      root: page,\n      fetch: page.fetch?.bind(page),\n      endpoint: script.dataset.cwEndpoint,\n      context: {\n        businessLine: script.dataset.businessLine || '',\n        productSku: script.dataset.productSku || '',\n        articleId: script.dataset.articleId || '',\n        collectionId: script.dataset.collectionId || '',\n      },\n      storage: page.sessionStorage,\n      now: () => Date.now(),\n    });\n    Object.defineProperty(page, INSTANCE_KEY, { value: controller, configurable: false, enumerable: false, writable: false });\n    controller.initialize();\n    return controller;\n  }\n\n  const api = { cleanTouch, createController, boot, ENDPOINT, SITE_ORIGIN, TTL, UTM_ALLOWLIST };\n  if (typeof module !== 'undefined' && module.exports) module.exports = api;\n  if (root.document) {\n    root.CwAttributionTools = Object.freeze({ cleanTouch });\n    boot(root);\n  }\n})(typeof window !== 'undefined' ? window : globalThis);\n"],
  "mappings": "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",
  "names": []
}
