{
  "version": 3,
  "sources": ["/cdn/shop/t/64/assets/stackhouse-builder-analytics.js?codex_v=20260723a"],
  "sourcesContent": ["(function () {\n  var config = window.StackhouseBuilderAnalyticsConfig || {};\n  var endpoint = config.endpoint || 'https://backend.thestackhouse.com/api/builder-events/';\n  var builderVersion = config.builderVersion || 'builder-ux-v1';\n  var sampleRate = typeof config.sampleRate === 'number' ? config.sampleRate : 1;\n  var enabled = config.enabled !== false && sampleRate > 0 && Math.random() <= sampleRate;\n  var pendingQueue = Array.isArray(window.pendingStackhouseEmitQueue)\n    ? window.pendingStackhouseEmitQueue\n    : [];\n  var queue = [];\n  var flushTimer = null;\n  var flushing = false;\n  var maxQueueSize = 100;\n  var maxBatchSize = 20;\n  var sessionKey = 'stackhouse_builder_session_id';\n  var memorySession = '';\n  var contextKey = 'stackhouse_funnel_context';\n  var contextExpires = Date.now() + 12 * 60 * 60 * 1000;\n  var traffic = initializeTraffic();\n  var attemptId = makeId('attempt');\n  var uploadFailureReferences = Object.create(null);\n  var uploadFailureReferenceOrder = [];\n  var metaPixelId = config.metaPixelId ||\n    (window.stackhouseData && window.stackhouseData.config\n      ? window.stackhouseData.config.metaPixelId\n      : '');\n  var metaEnabled = config.metaEnabled !== false;\n  var metaBuilderEvents = {\n    builder_opened: 'StartPrint',\n    print_flow_opened: 'StartPrint',\n    file_upload_started: 'Upload',\n    file_upload_completed: 'UploadComplete',\n    crop_completed: 'CropComplete',\n    size_selected: 'SizeSelect',\n    media_selected: 'MediaSelect',\n    option_selected: 'OptionSelect'\n  };\n  var metaBuilders = {\n    product_modal: true,\n    beta_order_builder: true\n  };\n  var metaPrivacyLoadState = 'idle';\n  var metaPendingEvents = [];\n  var maxMetaPendingEvents = 20;\n\n  window.pendingStackhouseEmitQueue = pendingQueue;\n\n  function makeId(prefix) {\n    var randomValue = '';\n    if (window.crypto && typeof window.crypto.randomUUID === 'function') {\n      randomValue = window.crypto.randomUUID();\n    } else {\n      randomValue = Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 12);\n    }\n    return prefix + '-' + randomValue;\n  }\n\n  function storageGet(key) {\n    try {\n      return window.sessionStorage.getItem(key) || '';\n    } catch (error) {\n      return '';\n    }\n  }\n\n  function storageSet(key, value) {\n    try {\n      window.sessionStorage.setItem(key, value);\n    } catch (error) {}\n  }\n\n  function sessionId() {\n    var current = storageGet(sessionKey) || memorySession;\n    if (!current) {\n      current = makeId('session');\n      storageSet(sessionKey, current);\n    }\n    memorySession = current;\n    return current;\n  }\n\n  function initializeTraffic() {\n    var previous = {};\n    try { previous = JSON.parse(storageGet(contextKey) || '{}'); } catch (_) {}\n    var choice = '';\n    try { choice = new URL(window.location.href).searchParams.get('stackhouse_qa') || ''; } catch (_) {}\n    var qa = choice === '1' || (choice !== '0' && previous.traffic_type === 'qa' && previous.expires_at > Date.now());\n    if ((!qa && previous.traffic_type === 'qa') || (choice === '1' && previous.traffic_type !== 'qa')) {\n      memorySession = makeId('session'); storageSet(sessionKey, memorySession);\n    }\n    var operational = window.StackhouseOperationalTelemetryConfig || {};\n    var role = String(config.themeRole || operational.themeRole || '').toLowerCase();\n    var theme = String(config.themeId || operational.themeId || '');\n    if (operational.isCanary === true) qa = true;\n    var preview = config.designMode === true || (window.Shopify && window.Shopify.designMode === true) || (role && role !== 'main') || (theme && theme !== '185073074483');\n    var kind = qa ? 'qa' : preview ? 'preview' : theme === '185073074483' && role === 'main' ? 'customer' : 'unknown';\n    return { traffic_type: kind, theme_id: theme, theme_role: role, tracking_version: 'cart-checkout-v2' };\n  }\n\n  function persistFunnelContext() {\n    var now = Date.now();\n    var previous = {};\n    try { previous = JSON.parse(storageGet(contextKey) || '{}') || {}; } catch (_) {}\n    var history = Array.isArray(previous.history) ? previous.history : [];\n    var same = previous.session_id === sessionId() && previous.traffic_type === traffic.traffic_type &&\n      previous.theme_id === traffic.theme_id && previous.theme_role === traffic.theme_role &&\n      Number.isFinite(previous.started_at) && previous.started_at <= now && previous.expires_at > now;\n    if (!same && Number.isFinite(previous.started_at) && previous.started_at < now) {\n      history.push({session_id: previous.session_id, traffic_type: previous.traffic_type,\n        theme_id: previous.theme_id, theme_role: previous.theme_role, started_at: previous.started_at,\n        expires_at: Math.min(now, previous.expires_at), ended_at: Math.min(now, previous.expires_at)});\n    }\n    // Keep only recent, bounded intervals. Pixel callbacks can replay after QA exit.\n    history = history.filter(function (entry) {\n      return entry && Number.isFinite(entry.started_at) && Number.isFinite(entry.ended_at) &&\n        entry.started_at < entry.ended_at && entry.ended_at > now - 12 * 60 * 60 * 1000;\n    }).slice(-32);\n    storageSet(contextKey, JSON.stringify(Object.assign({}, traffic, {\n      session_id: sessionId(), started_at: same ? previous.started_at : now,\n      expires_at: contextExpires, history: history\n    })));\n  }\n\n  function snakeKey(key) {\n    return String(key || '')\n      .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n      .replace(/[^A-Za-z0-9_:-]+/g, '_')\n      .replace(/^_+|_+$/g, '')\n      .toLowerCase();\n  }\n\n  function safeString(value, maxLength) {\n    if (value === null || typeof value === 'undefined') return '';\n    return String(value).trim().slice(0, maxLength || 240);\n  }\n\n  function safeNumber(value) {\n    var number = Number(value);\n    return Number.isFinite(number) ? number : undefined;\n  }\n\n  function currentPagePath(value) {\n    try {\n      return new URL(value || window.location.href, window.location.origin).pathname.slice(0, 180);\n    } catch (error) {\n      return window.location.pathname.slice(0, 180);\n    }\n  }\n\n  function fileExtension(value) {\n    var name = safeString(value, 240).split('?')[0].split('#')[0].split('/').pop();\n    var match = name.match(/\\.([A-Za-z0-9]{1,12})$/);\n    return match ? match[1].toLowerCase() : '';\n  }\n\n  function templateFields(value) {\n    var template = safeString(value, 240);\n    var quantity = template.match(/(?:_Q|-QTY)(\\d+)(?=$|[^A-Z0-9])/i);\n    var border = template.match(/_B([0-9])(?=$|[^A-Z0-9_])/i);\n    return {\n      template_quantity: quantity ? Number(quantity[1]) : undefined,\n      template_border_code: border ? 'B' + border[1] : ''\n    };\n  }\n\n  function builderFromDetails(details) {\n    var source = safeString(details.builder || details.source || '', 80).toLowerCase();\n    if (source.indexOf('product_modal') !== -1) return 'product_modal';\n    if (source.indexOf('modal') !== -1) return 'product_modal';\n    if (source.indexOf('cart_drawer') !== -1) return 'cart_drawer';\n    if (source.indexOf('cart_page') !== -1) return 'cart_page';\n    if (source.indexOf('single-order') !== -1 || source.indexOf('order_app') !== -1 || source.indexOf('beta') !== -1) {\n      return 'beta_order_builder';\n    }\n    if (document.querySelector('[data-order-app-shell]')) return 'beta_order_builder';\n    if (document.querySelector('.option__wrapper')) return 'product_modal';\n    if (document.querySelector('.cart__side')) return 'cart_drawer';\n    if (document.querySelector('[data-cart-page-form]') || document.getElementById('cart_checkout_button')) return 'cart_page';\n    return source || 'storefront';\n  }\n\n  function normalizeDetails(details, eventName) {\n    var source = details && typeof details === 'object' ? details : {};\n    var safe = {};\n    var aliases = {\n      custom_size_value: 'image_size',\n      file_size: 'file_size_bytes',\n      file_size_bytes: 'file_size_bytes',\n      final_size_value: 'final_size',\n      page_url: 'page_path',\n      product_id: 'product_id',\n      product_name: 'product_title',\n      product_type: 'product_type',\n      response_type: 'response_kind',\n      selected_border: 'border',\n      selected_border_code: 'border_code',\n      selected_media: 'media',\n      source_variant_title: 'variant_title',\n      variant_id: 'variant_id',\n      variant_title: 'variant_title'\n    };\n    var allowed = {\n      affected_item_count: true,\n      terms_accepted: true,\n      checkout_enabled: true,\n      border: true,\n      border_code: true,\n      cart_item_count: true,\n      cart_line_count: true,\n      cta_hook: true,\n      cta_placement: true,\n      cta_role: true,\n      currency: true,\n      destination_path: true,\n      duration_ms: true,\n      edge: true,\n      error_code: true,\n      error_message: true,\n      failure_phase: true,\n      file_count: true,\n      file_extension: true,\n      file_size_bytes: true,\n      file_type: true,\n      final_size: true,\n      image_size: true,\n      input_method: true,\n      issue_code: true,\n      issue_codes: true,\n      issue_count: true,\n      issue_type: true,\n      issue_types: true,\n      landing_page_handle: true,\n      landing_template: true,\n      media: true,\n      next_quantity: true,\n      option_name: true,\n      option_selections: true,\n      option_value: true,\n      output_ppi: true,\n      page_path: true,\n      previous_quantity: true,\n      price: true,\n      product_handle: true,\n      product_id: true,\n      product_title: true,\n      product_type: true,\n      quantity: true,\n      retry_count: true,\n      response_kind: true,\n      rush_enabled: true,\n      rush_variant_id: true,\n      safe_reason: true,\n      size: true,\n      status: true,\n      status_code: true,\n      step: true,\n      template_border_code: true,\n      template_quantity: true,\n      test_print: true,\n      test_print_version: true,\n      source_product_family: true,\n      variant_id: true,\n      variant_title: true\n    };\n\n    Object.keys(source).forEach(function (key) {\n      var normalizedKey = snakeKey(key);\n      var aliasKey = aliases[normalizedKey] || normalizedKey;\n      var value = source[key];\n\n      if (normalizedKey === 'file_name' || normalizedKey === 'filename') {\n        safe.file_extension = safe.file_extension || fileExtension(value);\n        return;\n      }\n      if (normalizedKey === 'page_url') {\n        safe.page_path = currentPagePath(value);\n        return;\n      }\n      if (normalizedKey === 'production_filename_template' || normalizedKey === 'production_template' || normalizedKey === 'template') {\n        Object.assign(safe, templateFields(value));\n        return;\n      }\n      if (eventName && eventName.indexOf('file_upload') === 0 && aliasKey === 'size') {\n        safe.file_size_bytes = safeNumber(value);\n        return;\n      }\n      if (!allowed[aliasKey]) return;\n\n      if (Array.isArray(value)) {\n        safe[aliasKey] = value.slice(0, 10).map(function (entry) {\n          if (!entry || typeof entry !== 'object') return safeString(entry, 120);\n          return {\n            name: safeString(entry.name || entry.key || entry.optionName, 80),\n            value: safeString(entry.value || entry.label || entry.optionValue, 120)\n          };\n        });\n        return;\n      }\n\n      if (typeof value === 'boolean') {\n        safe[aliasKey] = value;\n      } else if (typeof value === 'number') {\n        safe[aliasKey] = safeNumber(value);\n      } else {\n        safe[aliasKey] = safeString(value, aliasKey === 'error_message' ? 300 : 160);\n      }\n    });\n\n    if (window.StackhouseCropTelemetry) Object.assign(safe, window.StackhouseCropTelemetry.clean(source));\n    if (window.StackhouseAssistantTelemetry) Object.assign(safe, window.StackhouseAssistantTelemetry.clean(source));\n    var opaqueId = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i;\n    ['request_id', 'upload_asset_id'].forEach(function (key) {\n      if (typeof source[key] === 'string' && opaqueId.test(source[key])) safe[key] = source[key];\n    });\n    var uploadOperations = ['session_create', 'asset_create', 'asset_parts', 'asset_transfer',\n      'asset_finalize', 'asset_status', 'asset_retry_processing'];\n    if (uploadOperations.indexOf(source.endpoint_operation) !== -1) safe.endpoint_operation = source.endpoint_operation;\n    safe.builder = builderFromDetails(source);\n    safe.builder_version = builderVersion;\n    safe.session_id = sessionId();\n    var telemetryConfig = window.StackhouseOperationalTelemetryConfig || {};\n    safe.theme_id = safeString(telemetryConfig.themeId || '', 80);\n    safe.theme_role = /^(main|unpublished|development|demo)$/.test(telemetryConfig.themeRole)\n      ? telemetryConfig.themeRole : '';\n    safe.is_canary = telemetryConfig.isCanary === true;\n    var uploadAttemptId = source.uploadAttemptId || source.upload_attempt_id;\n    safe.attempt_id = safeString(\n      uploadAttemptId\n        ? attemptId + '-upload-' + uploadAttemptId\n        : (source.attemptId || source.attempt_id || attemptId),\n      80\n    );\n    if (eventName === 'file_upload_failed' && safe.builder === 'beta_order_builder'\n        && /^[1-9][0-9]*$/.test(String(uploadAttemptId || ''))) {\n      var failureKey = String(uploadAttemptId);\n      if (!uploadFailureReferences[failureKey]) uploadFailureReferenceOrder.push(failureKey);\n      uploadFailureReferences[failureKey] = {parent: attemptId, reference: safe.attempt_id};\n      if (uploadFailureReferenceOrder.length > 20) {\n        delete uploadFailureReferences[uploadFailureReferenceOrder.shift()];\n      }\n    }\n    if (eventName === 'file_upload_processing_retry_completed') {\n      var originalFailure = uploadFailureReferences[String(source.retry_of_upload_attempt_id || '')];\n      if (originalFailure && originalFailure.parent === attemptId) {\n        safe.recovered_attempt_id = originalFailure.reference;\n      }\n    }\n    safe.page_path = safe.page_path || currentPagePath();\n    safe.viewport_width = window.innerWidth || 0;\n    safe.viewport_height = window.innerHeight || 0;\n    safe.network_effective_type = navigator.connection && navigator.connection.effectiveType\n      ? safeString(navigator.connection.effectiveType, 40)\n      : '';\n    Object.assign(safe, traffic);\n    if (/^file_upload_/.test(eventName || '')) {\n      var extension = String(safe.file_extension || '').toLowerCase();\n      safe.upload_format = /^(jpg|jpeg)$/.test(extension) ? 'jpeg'\n        : /^(tif|tiff)$/.test(extension) ? 'tiff'\n          : /^(heic|heif)$/.test(extension) ? 'heic'\n            : extension === 'png' ? 'png' : extension ? 'other' : 'unknown';\n      var bytes = Number(safe.file_size_bytes);\n      safe.upload_size_band = !Number.isFinite(bytes) || bytes <= 0 ? 'unknown'\n        : bytes < 10 * 1024 * 1024 ? 'under_10_mib'\n          : bytes < 100 * 1024 * 1024 ? '10_to_under_100_mib'\n            : bytes <= 1024 * 1024 * 1024 ? '100_mib_to_1_gib' : 'over_1_gib';\n      var access = window.STACKHOUSE_CUSTOMER_ACCESS;\n      safe.upload_audience = access && typeof access === 'object'\n        ? (access.id ? 'account' : 'guest') : 'unknown';\n    }\n    return safe;\n  }\n\n  function payloadForEvent(eventName, details) {\n    var normalizedEvent = snakeKey(eventName || 'builder_event') || 'builder_event';\n    return {\n      event: normalizedEvent,\n      session_id: sessionId(),\n      attempt_id: attemptId,\n      builder: builderFromDetails(details || {}),\n      builder_version: builderVersion,\n      occurred_at: new Date().toISOString(),\n      details: normalizeDetails(details || {}, normalizedEvent)\n    };\n  }\n\n  function pushDataLayer(eventPayload) {\n    if (!Array.isArray(window.dataLayer)) return;\n    window.dataLayer.push({\n      event: 'stackhouse_builder_event',\n      stackhouse_event: eventPayload.event,\n      stackhouse_builder: eventPayload.builder,\n      stackhouse_session_id: eventPayload.session_id,\n      stackhouse_attempt_id: eventPayload.attempt_id,\n      stackhouse_details: eventPayload.details\n    });\n  }\n\n  function metaMarketingAllowed() {\n    var privacy = window.Shopify && window.Shopify.customerPrivacy;\n    if (!privacy) return true;\n\n    if (typeof privacy.marketingAllowed === 'function') {\n      try {\n        return Boolean(privacy.marketingAllowed());\n      } catch (error) {\n        return false;\n      }\n    }\n\n    return Boolean(\n      privacy.allowedProcessing &&\n      privacy.allowedProcessing.marketing === true\n    );\n  }\n\n  function metaPrivacyAvailable() {\n    return Boolean(window.Shopify && window.Shopify.customerPrivacy);\n  }\n\n  function flushMetaPendingEvents() {\n    var pendingEvents = metaPendingEvents.splice(0, metaPendingEvents.length);\n    pendingEvents.forEach(function (pendingEvent) {\n      sendMetaBuilderEvent(pendingEvent.eventPayload);\n    });\n  }\n\n  function loadMetaPrivacyApi() {\n    if (!metaEnabled || !metaPixelId) return;\n    if (metaPrivacyAvailable()) {\n      metaPrivacyLoadState = 'ready';\n      flushMetaPendingEvents();\n      return;\n    }\n    if (\n      metaPrivacyLoadState === 'loading' ||\n      metaPrivacyLoadState === 'failed' ||\n      metaPrivacyLoadState === 'unavailable'\n    ) {\n      return;\n    }\n    if (!window.Shopify || typeof window.Shopify.loadFeatures !== 'function') {\n      metaPrivacyLoadState = 'unavailable';\n      flushMetaPendingEvents();\n      return;\n    }\n\n    metaPrivacyLoadState = 'loading';\n    window.Shopify.loadFeatures(\n      [{ name: 'consent-tracking-api', version: '0.1' }],\n      function (error) {\n        if (error || !metaPrivacyAvailable()) {\n          metaPrivacyLoadState = 'failed';\n          metaPendingEvents = [];\n          return;\n        }\n        metaPrivacyLoadState = 'ready';\n        flushMetaPendingEvents();\n      }\n    );\n  }\n\n  function installMetaPixelQueue() {\n    if (typeof window.fbq === 'function') return true;\n    if (!document || typeof document.createElement !== 'function') return false;\n\n    var pixel = window.fbq = function () {\n      pixel.callMethod\n        ? pixel.callMethod.apply(pixel, arguments)\n        : pixel.queue.push(arguments);\n    };\n    window._fbq = window._fbq || pixel;\n    pixel.push = pixel;\n    pixel.loaded = true;\n    pixel.version = '2.0';\n    pixel.queue = [];\n\n    var script = document.createElement('script');\n    script.async = true;\n    script.src = 'https://connect.facebook.net/en_US/fbevents.js';\n    var firstScript = document.getElementsByTagName('script')[0];\n\n    if (firstScript && firstScript.parentNode) {\n      firstScript.parentNode.insertBefore(script, firstScript);\n      return true;\n    }\n    if (document.head && typeof document.head.appendChild === 'function') {\n      document.head.appendChild(script);\n      return true;\n    }\n    return false;\n  }\n\n  function metaPixelAlreadyInitialized() {\n    var normalizedPixelId = String(metaPixelId);\n\n    try {\n      if (window.fbq && typeof window.fbq.getState === 'function') {\n        var state = window.fbq.getState();\n        var pixels = state && state.pixels;\n        if (Array.isArray(pixels) && pixels.some(function (pixel) {\n          return pixel && String(pixel.id) === normalizedPixelId;\n        })) {\n          return true;\n        }\n      }\n    } catch (_) {}\n\n    var queuedCalls = window.fbq && window.fbq.queue;\n    return Array.isArray(queuedCalls) && queuedCalls.some(function (call) {\n      return call && call[0] === 'init' && String(call[1]) === normalizedPixelId;\n    });\n  }\n\n  function sendMetaBuilderEvent(eventPayload) {\n    var metaEventName = metaBuilderEvents[eventPayload.event];\n    if (!metaMarketingAllowed() || !installMetaPixelQueue()) return;\n\n    if (!window.__stackhouseMetaBuilderPixelInitialized) {\n      if (!metaPixelAlreadyInitialized()) {\n        window.fbq('init', String(metaPixelId));\n      }\n      window.__stackhouseMetaBuilderPixelInitialized = true;\n    }\n\n    window.fbq(\n      'trackSingleCustom',\n      String(metaPixelId),\n      metaEventName,\n      metaEventDetails(eventPayload)\n    );\n  }\n\n  function metaEventDetails(eventPayload) {\n    var details = eventPayload.details || {};\n    var allowedKeys = [\n      'border',\n      'currency',\n      'file_extension',\n      'file_size_bytes',\n      'file_type',\n      'final_size',\n      'media',\n      'option_name',\n      'option_value',\n      'price',\n      'product_handle',\n      'product_id',\n      'product_title',\n      'product_type',\n      'quantity',\n      'size',\n      'step',\n      'variant_id',\n      'variant_title'\n    ];\n    var metaDetails = {\n      builder: eventPayload.builder,\n      builder_version: eventPayload.builder_version\n    };\n\n    allowedKeys.forEach(function (key) {\n      if (details[key] !== '' && details[key] !== null && typeof details[key] !== 'undefined') {\n        metaDetails[key] = details[key];\n      }\n    });\n    return metaDetails;\n  }\n\n  function metaBuilderSourceAllowed(eventPayload, rawDetails) {\n    var source = safeString(rawDetails && rawDetails.source, 80).toLowerCase();\n    var builder = safeString(rawDetails && rawDetails.builder, 80).toLowerCase();\n\n    if (eventPayload.builder === 'product_modal') {\n      return source === 'product_modal';\n    }\n    if (eventPayload.builder === 'beta_order_builder') {\n      return builder === 'beta_order_builder' || source === 'single-order-page-preview';\n    }\n    return false;\n  }\n\n  function trackMetaBuilderEvent(eventPayload, rawDetails) {\n    var metaEventName = metaBuilderEvents[eventPayload.event];\n    if (\n      traffic.traffic_type === 'qa' || traffic.traffic_type === 'preview' || !metaEnabled ||\n      !metaPixelId ||\n      !metaEventName ||\n      !metaBuilders[eventPayload.builder] ||\n      !metaBuilderSourceAllowed(eventPayload, rawDetails)\n    ) {\n      return;\n    }\n\n    if (!metaPrivacyAvailable()) {\n      if (metaPrivacyLoadState === 'unavailable') {\n        sendMetaBuilderEvent(eventPayload);\n        return;\n      }\n      if (metaPrivacyLoadState !== 'failed') {\n        metaPendingEvents.push({ eventPayload: eventPayload });\n        if (metaPendingEvents.length > maxMetaPendingEvents) {\n          metaPendingEvents.splice(0, metaPendingEvents.length - maxMetaPendingEvents);\n        }\n        loadMetaPrivacyApi();\n      }\n      return;\n    }\n\n    sendMetaBuilderEvent(eventPayload);\n  }\n\n  function scheduleFlush(delay) {\n    if (!enabled || flushTimer) return;\n    flushTimer = window.setTimeout(function () {\n      flushTimer = null;\n      flush();\n    }, typeof delay === 'number' ? delay : 1000);\n  }\n\n  function sendBatch(events) {\n    var body = JSON.stringify({ events: events });\n    if (navigator.sendBeacon) {\n      try {\n        if (navigator.sendBeacon(endpoint, new Blob([body], { type: 'application/json' }))) {\n          return Promise.resolve();\n        }\n      } catch (error) {}\n    }\n    return fetch(endpoint, {\n      method: 'POST',\n      mode: 'cors',\n      keepalive: true,\n      headers: { 'Content-Type': 'application/json' },\n      body: body\n    }).catch(function () {});\n  }\n\n  function flush() {\n    if (!enabled || flushing || !queue.length) return Promise.resolve();\n    flushing = true;\n    var batch = queue.splice(0, maxBatchSize);\n    return sendBatch(batch).finally(function () {\n      flushing = false;\n      if (queue.length) scheduleFlush(0);\n    });\n  }\n\n  function publishEventPayload(eventPayload, details) {\n    pushDataLayer(eventPayload);\n    trackMetaBuilderEvent(eventPayload, details || {});\n    try {\n      document.dispatchEvent(new CustomEvent('stackhouse:builder-event', {\n        detail: eventPayload\n      }));\n    } catch (error) {}\n    if (!enabled) return;\n    if (/^(view_cart_clicked|checkout_clicked|checkout_prepared|checkout_prep_failed|checkout_blocked)$/.test(eventPayload.event)) {\n      try { sendBatch([eventPayload]); } catch (_) {}\n      return;\n    }\n    queue.push(eventPayload);\n    if (queue.length > maxQueueSize) {\n      queue.splice(0, queue.length - maxQueueSize);\n    }\n    scheduleFlush(queue.length >= 10 ? 0 : 1000);\n  }\n\n  function publishFunnelBuilderEntry(eventPayload, rawDetails) {\n    var eligibleEvents = {\n      builder_opened: true,\n      print_flow_opened: true,\n      product_selected: true\n    };\n    if (!eligibleEvents[eventPayload.event]) return;\n    var analytics = window.Shopify && window.Shopify.analytics;\n    if (!analytics || typeof analytics.publish !== 'function') return;\n    var details = rawDetails && typeof rawDetails === 'object' ? rawDetails : {};\n    var pageProduct = window.stackhouseData && window.stackhouseData.page\n      ? window.stackhouseData.page.product || {}\n      : {};\n    var customData = {\n      product_id: safeString(details.product_id || pageProduct.id || '', 80),\n      product_handle: safeString(details.product_handle || pageProduct.handle || '', 160),\n      product_title: safeString(details.product_title || pageProduct.title || '', 160),\n      builder: safeString(eventPayload.builder, 80),\n      builder_version: safeString(builderVersion, 80),\n      trigger: safeString(details.trigger || details.cta_role || eventPayload.event, 80),\n      page_path: currentPagePath()\n    };\n    if (!customData.product_id && !customData.product_handle) return;\n    try {\n      var result = analytics.publish('stackhouse:funnel_builder_entered', customData);\n      if (result && typeof result.catch === 'function') result.catch(function () {});\n    } catch (error) {}\n  }\n\n  function isTestPrintEvent(details) {\n    var source = details && typeof details === 'object' ? details : {};\n    var pageProduct = window.stackhouseData && window.stackhouseData.page\n      ? window.stackhouseData.page.product || {}\n      : {};\n    var handle = safeString(source.product_handle || pageProduct.handle || '', 120).toLowerCase();\n    var marker = safeString(source.test_print || '', 40).toLowerCase();\n    return handle === 'test-print' || handle.indexOf('test-print-') === 0 || marker === 'yes';\n  }\n\n  function testPrintEventAlias(eventName, details) {\n    if (!isTestPrintEvent(details)) return '';\n    var normalizedEvent = snakeKey(eventName || '');\n    var aliases = {\n      print_flow_opened: 'test_print_builder_start',\n      file_upload_completed: 'test_print_upload',\n      cart_api_add_succeeded: 'test_print_add_to_cart'\n    };\n    return aliases[normalizedEvent] || '';\n  }\n\n  function emit(eventName, details) {\n    var rawDetails = details || {};\n    var eventPayload = payloadForEvent(eventName, rawDetails);\n    publishEventPayload(eventPayload, rawDetails);\n    publishFunnelBuilderEntry(eventPayload, rawDetails);\n    var aliasName = testPrintEventAlias(eventName, rawDetails);\n    if (aliasName) {\n      var aliasDetails = Object.assign({}, rawDetails, { test_print: 'Yes' });\n      publishEventPayload(payloadForEvent(aliasName, aliasDetails), aliasDetails);\n    }\n    return eventPayload;\n  }\n\n  function newAttempt() {\n    attemptId = makeId('attempt');\n    return attemptId;\n  }\n\n  function modalContextActive() {\n    return Boolean(document.querySelector('.option__wrapper')) &&\n      !document.querySelector('[data-order-app-shell]');\n  }\n\n  function requestUrl(input) {\n    if (typeof input === 'string') return input;\n    if (input && typeof input.url === 'string') return input.url;\n    return '';\n  }\n\n  function requestBody(init) {\n    if (init && typeof init.body !== 'undefined') return init.body;\n    return undefined;\n  }\n\n  function modalPageContextDetails(details) {\n    var nextDetails = details || {};\n    var pageProduct = window.stackhouseData &&\n      window.stackhouseData.page &&\n      window.stackhouseData.page.product\n      ? window.stackhouseData.page.product\n      : {};\n\n    nextDetails.product_title = nextDetails.product_title || pageProduct.title || '';\n    nextDetails.product_handle = nextDetails.product_handle || pageProduct.handle || '';\n    nextDetails.product_id = nextDetails.product_id || pageProduct.id || '';\n    nextDetails.product_type = nextDetails.product_type || pageProduct.type || '';\n    return nextDetails;\n  }\n\n  function readBodyDetails(body) {\n    var details = {};\n    var payload = null;\n\n    if (!body) return modalPageContextDetails(details);\n\n    if (typeof FormData !== 'undefined' && body instanceof FormData) {\n      body.forEach(function (value, key) {\n        var normalizedKey = snakeKey(key);\n        if (normalizedKey === 'id' || normalizedKey === 'items_0_id') details.variant_id = value;\n        if (normalizedKey === 'quantity' || normalizedKey === 'items_0_quantity') details.quantity = value;\n        if (/properties.*product/i.test(normalizedKey) && normalizedKey.indexOf('handle') === -1) details.product_title = details.product_title || value;\n        if (/properties.*product.*handle/i.test(normalizedKey)) details.product_handle = details.product_handle || value;\n        if (/properties.*media/i.test(normalizedKey)) details.media = details.media || value;\n        if (/properties.*border/i.test(normalizedKey) && normalizedKey.indexOf('ready') === -1) details.border = details.border || value;\n        if (/properties.*final.*size/i.test(normalizedKey)) details.final_size = details.final_size || value;\n        if (/properties.*image.*size/i.test(normalizedKey) || /properties.*size/i.test(normalizedKey)) details.image_size = details.image_size || value;\n        if (/properties.*source.*variant.*title/i.test(normalizedKey)) details.variant_title = details.variant_title || value;\n        if (/properties.*test.*print.*version/i.test(normalizedKey)) details.test_print_version = details.test_print_version || value;\n        if (/properties.*test.*print/i.test(normalizedKey) && !/version/i.test(normalizedKey)) details.test_print = details.test_print || value;\n        if (/properties.*source.*product.*family/i.test(normalizedKey)) details.source_product_family = details.source_product_family || value;\n        if (normalizedKey.indexOf('properties') !== -1 && /production.*template/i.test(normalizedKey)) {\n          details.template = value;\n        }\n      });\n      return modalPageContextDetails(details);\n    }\n\n    if (typeof body === 'string') {\n      try {\n        payload = JSON.parse(body);\n      } catch (error) {\n        return modalPageContextDetails(details);\n      }\n    } else if (body && typeof body === 'object' && !(body instanceof Blob)) {\n      payload = body;\n    }\n\n    if (!payload || typeof payload !== 'object') return modalPageContextDetails(details);\n\n    var firstItem = Array.isArray(payload.items) && payload.items.length ? payload.items[0] : payload;\n    details.variant_id = firstItem.id || firstItem.variant_id || payload.variant_id || payload.selected_variant_id || '';\n    details.quantity = firstItem.quantity || payload.quantity || '';\n    details.product_title = payload.product_title || payload.productName || '';\n    details.product_handle = payload.product_handle || payload.productHandle || payload.product_family || '';\n    details.media = payload.media || '';\n    details.border_code = payload.border_code || '';\n\n    if (payload.width && payload.height) {\n      details.image_size = safeString(payload.width, 40) + 'x' + safeString(payload.height, 40);\n    }\n\n    if (payload.options && typeof payload.options === 'object') {\n      details.border = payload.options.border_label || payload.options.border || '';\n      details.border_code = payload.options.border_code || '';\n      details.media = payload.options.media_label || payload.options.media || '';\n    }\n\n    if (payload.custom_size && typeof payload.custom_size === 'object') {\n      details.image_size = payload.custom_size.image_size || '';\n      details.final_size = payload.custom_size.final_size || '';\n    }\n\n    var properties = firstItem.properties || payload.properties || {};\n    if (properties && typeof properties === 'object') {\n      details.product_title = details.product_title || properties.Product || properties.product || '';\n      details.product_handle = details.product_handle || properties['_Product Handle'] || properties.product_handle || '';\n      details.image_size = details.image_size || properties['Image Size'] || properties.Size || properties.image_size || '';\n      details.media = details.media || properties.Media || properties.media || '';\n      details.border = details.border || properties.Border || properties.border || '';\n      details.final_size = details.final_size || properties['Final Size'] || properties.final_size || '';\n      details.variant_title = details.variant_title || properties['_Source Variant Title'] || properties.variant_title || '';\n      details.template = properties['_Production Filename Template'] || properties.production_filename_template || '';\n      details.test_print = properties['_Test Print'] || properties.test_print || '';\n      details.test_print_version = properties['_Test Print Version'] || properties.test_print_version || '';\n      details.source_product_family = properties['_Source Product Family'] || properties.source_product_family || '';\n    }\n\n    return modalPageContextDetails(details);\n  }\n\n  function responseKind(response, responseText) {\n    var contentType = response && response.headers && response.headers.get\n      ? safeString(response.headers.get('Content-Type'), 80).toLowerCase()\n      : '';\n    if (contentType.indexOf('json') !== -1) return 'json';\n    if (contentType.indexOf('html') !== -1) return 'html';\n    if (/^\\s*</.test(responseText || '')) return 'html';\n    if (!safeString(responseText, 20)) return 'empty';\n    return 'text';\n  }\n\n  function trackedModalEndpoint(url) {\n    var normalizedUrl = safeString(url, 300);\n    if (!normalizedUrl || normalizedUrl.indexOf('/api/builder-events/') !== -1) return '';\n    if (normalizedUrl.indexOf('/cart/add.js') !== -1) return 'cart_api_add';\n    if (normalizedUrl.indexOf('/create-orders/ajax/generate-custom-cart-product/') !== -1) return 'generated_product';\n    if (normalizedUrl.indexOf('/create-orders/ajax/calculate-custom-price/') !== -1) return 'custom_price_preview';\n    return '';\n  }\n\n  function generatedResponseDetails(data) {\n    if (!data || typeof data !== 'object') return {};\n    var details = {\n      variant_id: data.variant_id || '',\n      template: data.production_filename_template || ''\n    };\n    if (data.custom_size && typeof data.custom_size === 'object') {\n      details.final_size = data.custom_size.final_size || '';\n      details.image_size = data.custom_size.image_size || '';\n    }\n    if (data.resolved_options && typeof data.resolved_options === 'object') {\n      details.border = data.resolved_options.border_label || '';\n      details.border_code = data.resolved_options.border_code || '';\n      details.media = data.resolved_options.media_label || '';\n    }\n    return details;\n  }\n\n  function installModalFetchMonitor() {\n    if (window.__stackhouseBuilderFetchMonitorInstalled || typeof window.fetch !== 'function') return;\n    var originalFetch = window.fetch.bind(window);\n    window.__stackhouseBuilderFetchMonitorInstalled = true;\n\n    window.fetch = function (input, init) {\n      if (init && init.stackhouseSkipFetchMonitor) {\n        return originalFetch(input, init);\n      }\n\n      var url = requestUrl(input);\n      var eventPrefix = trackedModalEndpoint(url);\n      if (!eventPrefix || !modalContextActive()) {\n        return originalFetch(input, init);\n      }\n\n      var startedAt = Date.now();\n      var requestDetails = Object.assign({\n        builder: 'product_modal',\n        source: 'product_modal_network',\n        step: eventPrefix\n      }, readBodyDetails(requestBody(init)));\n\n      emit(eventPrefix + '_started', requestDetails);\n\n      return originalFetch(input, init).then(function (response) {\n        var responseDetails = Object.assign({}, requestDetails, {\n          status_code: response.status,\n          duration_ms: Date.now() - startedAt\n        });\n        var eventName = response.ok ? eventPrefix + '_succeeded' : eventPrefix + '_failed';\n        var responseClone = response && typeof response.clone === 'function' ? response.clone() : null;\n\n        if (responseClone && eventPrefix === 'generated_product') {\n          responseClone.json().then(function (data) {\n            emit(eventName, Object.assign(responseDetails, generatedResponseDetails(data)));\n          }).catch(function () {\n            emit(eventName, responseDetails);\n          });\n        } else if (responseClone && eventPrefix === 'custom_price_preview' && !response.ok) {\n          responseClone.json().then(function (data) {\n            emit(eventName, Object.assign(responseDetails, {\n              response_kind: 'json',\n              error_code: data && (data.error_code || data.code) ? data.error_code || data.code : '',\n              error_message: data && (data.error || data.detail) ? data.error || data.detail : ''\n            }));\n          }).catch(function () {\n            emit(eventName, responseDetails);\n          });\n        } else if (responseClone && eventPrefix === 'cart_api_add') {\n          responseClone.text().then(function (text) {\n            var responseKindValue = responseKind(response, text);\n            var errorMessage = '';\n            if (!response.ok) {\n              try {\n                var data = JSON.parse(text || '{}');\n                errorMessage = data && (data.description || data.message || data.error) ? data.description || data.message || data.error : '';\n              } catch (error) {\n                errorMessage = responseKindValue === 'html'\n                  ? 'Cart is temporarily unavailable. Please retry in a moment.'\n                  : safeString(text, 300);\n              }\n            }\n            emit(eventName, Object.assign(responseDetails, {\n              response_kind: responseKindValue,\n              error_message: errorMessage\n            }));\n          }).catch(function () {\n            emit(eventName, responseDetails);\n          });\n        } else {\n          emit(eventName, responseDetails);\n        }\n\n        return response;\n      }, function (error) {\n        emit(eventPrefix + '_failed', Object.assign({}, requestDetails, {\n          duration_ms: Date.now() - startedAt,\n          response_kind: 'network_error',\n          error_message: error && error.message ? error.message : 'Request failed.'\n        }));\n        throw error;\n      });\n    };\n  }\n\n  function modalQuantityInputFrom(target) {\n    var node = target && target.nodeType === 1 ? target : null;\n    if (!node) return null;\n    if (node.matches && node.matches('.option__wrapper .inner__option .right__part .top__information .quantity .quant input')) {\n      return node;\n    }\n    var control = node.closest && node.closest('.option__wrapper .inner__option .right__part .top__information .quantity .quant');\n    return control ? control.querySelector('input') : null;\n  }\n\n  function modalQuantityValue(input) {\n    var value = parseInt(input && input.value, 10);\n    return Number.isFinite(value) && value > 0 ? value : 1;\n  }\n\n  function emitModalQuantityChange(input, previousValue, inputMethod) {\n    var nextValue = modalQuantityValue(input);\n    if (!previousValue || previousValue === nextValue) return;\n    emit('quantity_changed', {\n      builder: 'product_modal',\n      source: 'product_modal_dom',\n      step: 'quantity',\n      previous_quantity: previousValue,\n      next_quantity: nextValue,\n      quantity: nextValue,\n      input_method: inputMethod\n    });\n  }\n\n  function installModalQuantityMonitor() {\n    if (window.__stackhouseBuilderQuantityMonitorInstalled) return;\n    window.__stackhouseBuilderQuantityMonitorInstalled = true;\n\n    document.addEventListener('focusin', function (event) {\n      var input = modalQuantityInputFrom(event.target);\n      if (!input) return;\n      input.dataset.stackhousePreviousQuantity = String(modalQuantityValue(input));\n    });\n\n    document.addEventListener('change', function (event) {\n      var input = modalQuantityInputFrom(event.target);\n      if (!input) return;\n      var previousValue = parseInt(input.dataset.stackhousePreviousQuantity || '', 10);\n      emitModalQuantityChange(input, previousValue, 'manual');\n      input.dataset.stackhousePreviousQuantity = String(modalQuantityValue(input));\n    });\n\n    document.addEventListener('click', function (event) {\n      var button = event.target && event.target.closest\n        ? event.target.closest('.option__wrapper .inner__option .right__part .top__information .quantity .quant > a')\n        : null;\n      if (!button) return;\n      var input = modalQuantityInputFrom(button);\n      if (!input) return;\n      var previousValue = modalQuantityValue(input);\n      var buttons = Array.prototype.slice.call(button.parentNode.querySelectorAll('a'));\n      var inputMethod = buttons.indexOf(button) === 0 ? 'minus' : 'plus';\n      window.setTimeout(function () {\n        emitModalQuantityChange(input, previousValue, inputMethod);\n        input.dataset.stackhousePreviousQuantity = String(modalQuantityValue(input));\n      }, 0);\n    });\n  }\n\n  var builderTracking = {\n    emit: emit,\n    flush: flush,\n    newAttempt: newAttempt,\n    sessionId: sessionId\n  };\n  window.stackhouseBuilderAnalytics = builderTracking;\n  if (\n    window.StackhouseTrackingHub &&\n    typeof window.StackhouseTrackingHub.register === 'function'\n  ) {\n    window.StackhouseTrackingHub.register('builder', builderTracking);\n    window.stackhouseTracking = window.StackhouseTrackingHub.tracking;\n  } else {\n    window.stackhouseTracking = builderTracking;\n  }\n\n  loadMetaPrivacyApi();\n  persistFunnelContext();\n  installModalFetchMonitor();\n  installModalQuantityMonitor();\n\n  while (pendingQueue.length) {\n    var pending = pendingQueue.shift();\n    if (!pending) continue;\n    emit(pending.eventName || pending.event || 'builder_event', pending.details || pending.payload || {});\n  }\n\n  window.addEventListener('pagehide', function () {\n    flush();\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
