{
  "version": 3,
  "sources": ["/cdn/shop/t/71/assets/hugfig-new-ui-analytics.js?hf=20260821-preview-2-1-merge"],
  "sourcesContent": ["(function () {\n  'use strict';\n\n  // Attribution-only compatibility layer for the rebuild customizer. Core\n  // funnel events are emitted exclusively by the owning business code; this\n  // file must not infer business success from DOM observation.\n  var EXPERIMENT_ID = 'new_ui_20260819';\n  var EXPERIMENT_VARIANT = 'new_ui';\n  var ATTRIBUTION_KEY = 'hugfig_new_ui_attribution_v1';\n  var ENTRY_PLACEMENTS = {\n    banner: true,\n    from_photo_to_finished_figure: true,\n    who_are_you_creating: true,\n    direct: true\n  };\n\n  function safeParse(value) {\n    try { return value ? JSON.parse(value) : null; } catch (error) { return null; }\n  }\n\n  function readAttribution() {\n    var stored = safeParse(window.sessionStorage && window.sessionStorage.getItem(ATTRIBUTION_KEY));\n    var placement = stored && ENTRY_PLACEMENTS[stored.entry_placement] ? stored.entry_placement : 'direct';\n    return {\n      experiment_id: EXPERIMENT_ID,\n      experiment_variant: EXPERIMENT_VARIANT,\n      entry_placement: placement\n    };\n  }\n\n  function setEntryPlacement(placement) {\n    if (!ENTRY_PLACEMENTS[placement]) return readAttribution();\n    var attribution = {\n      experiment_id: EXPERIMENT_ID,\n      experiment_variant: EXPERIMENT_VARIANT,\n      entry_placement: placement\n    };\n    try { window.sessionStorage && window.sessionStorage.setItem(ATTRIBUTION_KEY, JSON.stringify(attribution)); } catch (error) {}\n    return attribution;\n  }\n\n  function isRebuildCustomizer() {\n    return window.location.pathname === '/pages/customize' && Boolean(\n      document.querySelector('hugfig-rebuild-configurator[data-context=\"custom\"], .hf-rb-customize')\n    );\n  }\n\n  function withAttribution(eventData) {\n    return Object.assign({}, eventData || {}, readAttribution());\n  }\n\n  function track(eventName, eventData) {\n    var bridge = window.HugfigEvents || window.HugfigAnalytics;\n    if (!bridge || typeof bridge.track !== 'function') return false;\n    return bridge.track(eventName, withAttribution(eventData));\n  }\n\n  function placementForElement(element) {\n    if (!element) return '';\n    if (element.closest('[data-hf-hero-continue]')) return 'banner';\n    if (element.closest('.hf-rb-section--cases .hf-rb-case-card')) return 'from_photo_to_finished_figure';\n    if (element.closest('[data-hf-config-continue]')) return 'who_are_you_creating';\n    return '';\n  }\n\n  function bindEntryPlacement() {\n    document.addEventListener('click', function trackEntryClick(event) {\n      var placement = placementForElement(event.target && event.target.closest ? event.target : null);\n      if (!placement) return;\n      setEntryPlacement(placement);\n      track('new_ui_entry_click', { entry_placement: placement });\n    }, true);\n  }\n\n  function bindCustomizer(root) {\n    if (!root || root.dataset.hfNewUiAnalyticsBound === 'true') return;\n    root.dataset.hfNewUiAnalyticsBound = 'true';\n    // This marker makes the active UI version available to its own business\n    // code without wrapping the shared bridge or producing duplicate events.\n    root.dataset.hfUiVersion = 'rebuild_configurator_v1';\n  }\n\n  function decorateItemProperties(item) {\n    var attribution = readAttribution();\n    var properties = Object.assign({}, item.properties || {});\n    properties['_HugFig Experiment ID'] = attribution.experiment_id;\n    properties['_HugFig Experiment Variant'] = attribution.experiment_variant;\n    properties['_HugFig Entry Placement'] = attribution.entry_placement;\n    item.properties = properties;\n  }\n\n  function decorateCartAddPayload(payload) {\n    if (!payload || typeof payload !== 'object') return false;\n    if (Array.isArray(payload.items)) {\n      payload.items.forEach(decorateItemProperties);\n      return true;\n    }\n    if (payload.id || payload.variant_id) {\n      decorateItemProperties(payload);\n      return true;\n    }\n    return false;\n  }\n\n  function wrapCartAddFetch() {\n    if (!window.fetch || window.fetch.__hugfigNewUiCartAttributionWrapped) return;\n    var originalFetch = window.fetch;\n    function attributedFetch(input, init) {\n      if (!isRebuildCustomizer() || !init || typeof init.body !== 'string') return originalFetch.apply(this, arguments);\n      var url = typeof input === 'string' ? input : input && input.url;\n      if (!url || !/\\/cart\\/add\\.js(?:[?#]|$)/.test(url)) return originalFetch.apply(this, arguments);\n      var payload = safeParse(init.body);\n      if (!decorateCartAddPayload(payload)) return originalFetch.apply(this, arguments);\n      var nextInit = Object.assign({}, init, { body: JSON.stringify(payload) });\n      return originalFetch.call(this, input, nextInit);\n    }\n    attributedFetch.__hugfigNewUiCartAttributionWrapped = true;\n    window.fetch = attributedFetch;\n  }\n\n  function initialize() {\n    bindEntryPlacement();\n    wrapCartAddFetch();\n    if (!isRebuildCustomizer()) return;\n    bindCustomizer(document.querySelector('hugfig-rebuild-configurator[data-context=\"custom\"], .hf-rb-customize'));\n  }\n\n  window.HugfigNewUiTracking = {\n    version: '1.0.0',\n    experimentId: EXPERIMENT_ID,\n    getAttribution: readAttribution,\n    setEntryPlacement: setEntryPlacement\n  };\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initialize, { once: true });\n  else initialize();\n})();\n"],
  "mappings": "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",
  "names": []
}
