{
  "version": 3,
  "sources": ["/cdn/shop/t/64/assets/stackhouse-tracking-hub.js?codex_v=20260725a"],
  "sourcesContent": ["(function initializeStackhouseTrackingHub(global) {\n  'use strict';\n\n  if (!global || global.StackhouseTrackingHub) return;\n\n  var consumers = {};\n  var pendingEvents = [];\n  var nextEventId = 1;\n  var requiredConsumers = ['builder', 'legacy'];\n  var maxPendingEvents = 100;\n\n  function consumerAccepts(consumer, eventName) {\n    if (!consumer || typeof consumer.emit !== 'function') return false;\n    if (typeof consumer.accepts === 'function') {\n      try {\n        return consumer.accepts(eventName) !== false;\n      } catch (error) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  function reportConsumerError(name, eventName, error) {\n    if (!global.document || typeof global.CustomEvent !== 'function') return;\n    global.document.dispatchEvent(new global.CustomEvent('stackhouse:tracking-consumer-error', {\n      detail: {\n        consumer: name,\n        eventName: eventName,\n        message: error && error.message ? String(error.message).slice(0, 160) : 'Tracking consumer failed'\n      }\n    }));\n  }\n\n  function deliver(eventRecord, name, consumer) {\n    if (!eventRecord || eventRecord.delivered[name]) return undefined;\n    eventRecord.delivered[name] = true;\n    if (!consumerAccepts(consumer, eventRecord.eventName)) return undefined;\n\n    try {\n      return consumer.emit(eventRecord.eventName, eventRecord.details);\n    } catch (error) {\n      reportConsumerError(name, eventRecord.eventName, error);\n      return undefined;\n    }\n  }\n\n  function prunePendingEvents() {\n    pendingEvents = pendingEvents.filter(function keepUndelivered(eventRecord) {\n      return requiredConsumers.some(function consumerStillPending(name) {\n        return !eventRecord.delivered[name];\n      });\n    });\n    if (pendingEvents.length > maxPendingEvents) {\n      pendingEvents.splice(0, pendingEvents.length - maxPendingEvents);\n    }\n  }\n\n  function emit(eventName, details) {\n    var eventRecord = {\n      id: nextEventId++,\n      eventName: String(eventName || 'storefront_event'),\n      details: details && typeof details === 'object' ? details : {},\n      delivered: {}\n    };\n    var primaryResult;\n\n    pendingEvents.push(eventRecord);\n    Object.keys(consumers).forEach(function deliverToConsumer(name) {\n      var result = deliver(eventRecord, name, consumers[name]);\n      if (name === 'builder' && typeof result !== 'undefined') primaryResult = result;\n    });\n    prunePendingEvents();\n    return primaryResult;\n  }\n\n  function register(name, consumer) {\n    var consumerName = String(name || '').trim();\n    if (!consumerName || !consumer || typeof consumer.emit !== 'function') return false;\n\n    consumers[consumerName] = consumer;\n    pendingEvents.forEach(function deliverPending(eventRecord) {\n      deliver(eventRecord, consumerName, consumer);\n    });\n    prunePendingEvents();\n    return true;\n  }\n\n  function callConsumerMethod(methodName, args) {\n    var orderedNames = ['builder'].concat(Object.keys(consumers).filter(function notBuilder(name) {\n      return name !== 'builder';\n    }));\n    for (var index = 0; index < orderedNames.length; index += 1) {\n      var consumer = consumers[orderedNames[index]];\n      if (!consumer || typeof consumer[methodName] !== 'function') continue;\n      try {\n        return consumer[methodName].apply(consumer, args || []);\n      } catch (error) {\n        reportConsumerError(orderedNames[index], methodName, error);\n      }\n    }\n    return undefined;\n  }\n\n  var publicTracking = {\n    emit: emit,\n    flush: function flush() {\n      var flushes = Object.keys(consumers).map(function flushConsumer(name) {\n        var consumer = consumers[name];\n        if (!consumer || typeof consumer.flush !== 'function') return Promise.resolve();\n        try {\n          return Promise.resolve(consumer.flush());\n        } catch (error) {\n          reportConsumerError(name, 'flush', error);\n          return Promise.resolve();\n        }\n      });\n      return Promise.all(flushes);\n    },\n    newAttempt: function newAttempt() {\n      return callConsumerMethod('newAttempt', []);\n    },\n    sessionId: function sessionId() {\n      return callConsumerMethod('sessionId', []);\n    }\n  };\n\n  global.StackhouseTrackingHub = {\n    consumers: function registeredConsumers() {\n      return Object.keys(consumers);\n    },\n    emit: emit,\n    pendingCount: function pendingCount() {\n      return pendingEvents.length;\n    },\n    register: register,\n    tracking: publicTracking\n  };\n  global.stackhouseTracking = publicTracking;\n})(window);\n"],
  "mappings": "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",
  "names": []
}
