{
  "version": 3,
  "sources": ["/cdn/shop/t/42/assets/stix-track.js?nocache=1778275004080"],
  "sourcesContent": ["/**\n * Stix Tracking Lib \u2014 window.stix.track\n * ------------------------------------------------------------\n * Single front-end pipe for behavioral tracking. Pure client-side \u2014\n * relies on Klaviyo's onsite SDK, GA4 gtag, and Triple Pixel which are\n * already loaded by the theme.\n *\n * Buffers anonymous behavior in a cookie. On identify() flushes the\n * buffer to Klaviyo via the onsite SDK (which writes profile properties\n * for known profiles). No server-side mirror \u2014 relies on existing JS\n * integrations.\n *\n * Spec: Doc/Engineering/Stix_Tracking_Lib.md\n *\n * Load order in theme.liquid <head> (after Klaviyo + GA4 + TW snippets):\n *   <script src=\"{{ 'stix-track.js' | asset_url }}\" defer></script>\n *\n * Optional kill switch:\n *   <script>window.STIX_TRACK_ENABLED = false;</script>\n */\n(function () {\n  'use strict';\n\n  if (typeof window === 'undefined') return;\n  // Allow a kill-switch via window.STIX_TRACK_ENABLED = false\n  if (window.STIX_TRACK_ENABLED === false) return;\n\n  // \u2500\u2500 Configuration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  var COOKIE = 'stix_klaviyo_buf';\n  var COOKIE_DAYS = 90;\n  var DFL_RE = /-([RL])([RSXL])([SLT])-/;       // matches RRS, RLS, RXT etc.\n  var QUIZ_PARAM_KEYS = ['skill', 'gender', 'age', 'drive', 'shaft', 'dexterity', 'height', 'frequency'];\n\n  // \u2500\u2500 Backward-compat: new quiz answers \u2192 legacy AskWhai schema \u2500\u2500\n  // When setKlaviyoProp writes a new-schema quiz prop, also set the legacy-shaped\n  // property so old segments / flows referencing AskWhai answers keep working.\n  var LEGACY_QUIZ_MAP = {\n    gender: {\n      slot: 'Category',\n      answers: { 'Male Golfer': 'Male', 'Female Golfer': 'Female' }\n    },\n    dexterity: {\n      slot: 'Dexterity',\n      answers: { 'Right Handed': 'Right Handed', 'Left Handed': 'Left Handed' }\n    },\n    skill: {\n      slot: 'Experience',\n      answers: {\n        'Just getting started': 'Just getting started',\n        'Casual weekend golfer': 'Playing more & getting better',\n        'Getting more serious': 'Playing more & getting better',\n        'Low handicap / competitive': 'Tracking my handicap'\n      }\n    },\n    height: {\n      slot: 'Height',\n      answers: {\n        '5ft 8in \u2013 6ft 1in': '5\\'8\" - 6\\'1\"',\n        '5ft 4in \u2013 5ft 7in': '5\\'0\" - 5\\'7\"',\n        '5ft \u2013 5ft 3in':     '5\\'0\" - 5\\'7\"',\n        'Over 6ft 1in':           '6\\'2\" - 6\\'7\"',\n        'Under 5ft':              '5\\'0\" - 5\\'7\"'\n      }\n    },\n    drive: {\n      // AskWhai's slot was misnamed \u2014 the answers were yardages\n      slot: 'Shaft Flex',\n      answers: {\n        'Under 200 yards':  'Under 200 Yards',\n        'Over 200 yards':   'Between 200 & 230 yards',\n        'Over 230 yards':   'Over 230 Yards',\n        'Over 250 yards':   'Over 230 Yards'\n      }\n    }\n    // age, shaft, frequency: no legacy equivalent\n  };\n\n  // \u2500\u2500 Cookie buffer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function readBuf() {\n    try {\n      var match = document.cookie.match(new RegExp('(?:^|;\\\\s*)' + COOKIE + '=([^;]+)'));\n      if (!match) return { props: {}, identified: false };\n      return JSON.parse(decodeURIComponent(match[1]));\n    } catch (e) {\n      return { props: {}, identified: false };\n    }\n  }\n\n  function writeBuf(buf) {\n    try {\n      var exp = new Date(Date.now() + COOKIE_DAYS * 86400e3).toUTCString();\n      var val = encodeURIComponent(JSON.stringify(buf));\n      document.cookie = COOKIE + '=' + val + '; expires=' + exp + '; path=/; samesite=lax';\n    } catch (e) { /* swallow */ }\n  }\n\n  // \u2500\u2500 SDK helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function klaviyoPush(args) {\n    try {\n      // Modern Klaviyo SDK first, fallback to legacy _learnq\n      if (window.klaviyo && typeof window.klaviyo.push === 'function') {\n        window.klaviyo.push(args);\n      } else if (window._learnq && typeof window._learnq.push === 'function') {\n        window._learnq.push(args);\n      }\n    } catch (e) { /* swallow */ }\n  }\n\n  function gaSet(props) {\n    try {\n      if (typeof window.gtag === 'function') {\n        window.gtag('set', 'user_properties', props);\n      }\n    } catch (e) { /* swallow */ }\n  }\n\n  function gaEvent(name, props) {\n    try {\n      if (typeof window.gtag === 'function') {\n        window.gtag('event', name, props || {});\n      }\n    } catch (e) { /* swallow */ }\n  }\n\n  function triplePush(action, payload) {\n    try {\n      if (typeof window.TriplePixel === 'function') {\n        window.TriplePixel(action, payload);\n      }\n    } catch (e) { /* swallow */ }\n  }\n\n  // \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function lower(s) { return (s || '').toString().toLowerCase(); }\n\n  function deriveDFLFromSku(sku) {\n    if (!sku) return null;\n    var m = sku.match(DFL_RE);\n    return m ? (m[1] + m[2] + m[3]) : null;\n  }\n\n  /**\n   * Convert a quiz param name like 'skill' to its profile-property key 'Quiz Skill'.\n   * Lowercase params get capitalized; already-Title-Case keys pass through.\n   */\n  function normalizeQuizKey(key) {\n    if (!key) return key;\n    var l = lower(key);\n    if (QUIZ_PARAM_KEYS.indexOf(l) !== -1) {\n      return 'Quiz ' + l.charAt(0).toUpperCase() + l.slice(1);\n    }\n    return key;\n  }\n\n  function legacyParamFromKey(key) {\n    // 'Quiz Skill' \u2192 'skill'; passes through if already lowercase\n    var s = key.toString().replace(/^Quiz\\s+/i, '');\n    return lower(s);\n  }\n\n  // \u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  var stix = {\n    /**\n     * Buffer a Klaviyo profile property. If the user is already identified,\n     * write through to Klaviyo immediately.\n     * Always writes to GA4 user_properties and TW (for survey-style attributes).\n     *\n     * @param {string} key - profile property name. Quiz params auto-normalize to\n     *                       \"Quiz <Field>\". Other keys pass through verbatim.\n     * @param {string} value\n     */\n    setKlaviyoProp: function (key, value) {\n      if (!key || value == null) return;\n      var profileKey = normalizeQuizKey(key);\n      var buf = readBuf();\n      buf.props[profileKey] = value;\n\n      // GA4 user_property \u2014 sticky across sessions on this client_id\n      var gaKey = profileKey.toLowerCase().replace(/\\s+/g, '_');\n      var gaPayload = {};\n      gaPayload[gaKey] = value;\n      gaSet(gaPayload);\n\n      // TW Survey touchpoint \u2014 only for quiz/OOS/audience-style attributes\n      var legacyParam = legacyParamFromKey(key);\n      if (QUIZ_PARAM_KEYS.indexOf(legacyParam) !== -1 || /^OOS\\s/.test(profileKey)) {\n        triplePush('Survey', {\n          question: profileKey.replace(/^Quiz\\s+/i, '').replace(/^OOS\\s+/i, 'OOS '),\n          answer: value,\n          source: 'on-site'\n        });\n      }\n\n      // Backward-compat: also write the legacy AskWhai-shaped property\n      var legacyMap = LEGACY_QUIZ_MAP[legacyParam];\n      if (legacyMap && legacyMap.answers[value]) {\n        var oldAnswer = legacyMap.answers[value];\n        buf.props['Quiz ' + legacyMap.slot] = oldAnswer;\n        buf.props['AskWhai ' + legacyMap.slot] = oldAnswer;\n        // TW also gets the legacy slot for any old-schema TW reports\n        triplePush('Survey', {\n          question: legacyMap.slot,\n          answer: oldAnswer,\n          source: 'on-site (legacy schema)'\n        });\n      }\n\n      writeBuf(buf);\n\n      // If identified, flush this property to Klaviyo immediately.\n      // Klaviyo's onsite SDK persists profile properties on identified profiles.\n      if (buf.identified) {\n        var flushProps = {};\n        flushProps[profileKey] = value;\n        if (legacyMap && legacyMap.answers[value]) {\n          flushProps['Quiz ' + legacyMap.slot] = legacyMap.answers[value];\n        }\n        klaviyoPush(['identify', flushProps]);\n      }\n    },\n\n    /**\n     * Fire a discrete event. All three pipes get it; the buffered props ride along.\n     */\n    trackEvent: function (name, props) {\n      if (!name) return;\n      props = props || {};\n      var buf = readBuf();\n      var enriched = {};\n      // Merge: buffered props first, then event props (event-specific wins)\n      for (var k in buf.props) if (Object.prototype.hasOwnProperty.call(buf.props, k)) enriched[k] = buf.props[k];\n      for (var k2 in props) if (Object.prototype.hasOwnProperty.call(props, k2)) enriched[k2] = props[k2];\n\n      klaviyoPush(['track', name, enriched]);\n      gaEvent(name, props);\n      triplePush('Event', Object.assign({ event_name: name }, props));\n    },\n\n    /**\n     * Identify the user. Called from EVERY email-capture surface.\n     * Flushes the buffer to Klaviyo via the onsite SDK (which persists\n     * profile properties on identified profiles), and locks identified=true.\n     *\n     * @param {string} email\n     * @param {object} [extraProps] - additional properties, e.g. { 'Email Capture Source': 'popup' }\n     */\n    identify: function (email, extraProps) {\n      if (!email) return;\n      extraProps = extraProps || {};\n      var buf = readBuf();\n      var allProps = Object.assign({}, buf.props, extraProps);\n\n      // Klaviyo onsite SDK identify \u2014 writes $email + all buffered props as profile properties\n      klaviyoPush(['identify', Object.assign({ $email: email }, allProps)]);\n\n      // TW Identify \u2014 ties this email to the visitor's TW journey,\n      // including any Survey/Event touchpoints fired earlier in the session\n      triplePush('Identify', Object.assign({ email: email }, extraProps));\n\n      buf.identified = true;\n      // Persist any extraProps so they survive future sessions\n      for (var k in extraProps) if (Object.prototype.hasOwnProperty.call(extraProps, k)) buf.props[k] = extraProps[k];\n      buf.props['Email Capture Date'] = new Date().toISOString();\n      writeBuf(buf);\n    },\n\n    /**\n     * Called once when an OOS form mounts on a PDP. Captures DFL, SKU, product.\n     *\n     * @param {object} evt - { sku, product, variant }\n     */\n    oosViewed: function (evt) {\n      if (!evt || !evt.sku) return;\n      var dfl = deriveDFLFromSku(evt.sku);\n      var nowIso = new Date().toISOString();\n\n      // Update last-seen properties\n      this.setKlaviyoProp('OOS Last DFL', dfl || 'unknown');\n      this.setKlaviyoProp('OOS Last SKU', evt.sku);\n      if (evt.product) this.setKlaviyoProp('OOS Last Product', evt.product);\n      this.setKlaviyoProp('OOS Last Date', nowIso);\n\n      // Accumulator: comma-separated list of distinct DFLs seen\n      if (dfl) {\n        var buf = readBuf();\n        var seen = (buf.props['OOS Seen DFLs'] || '').split(',').filter(Boolean);\n        if (seen.indexOf(dfl) === -1) {\n          seen.push(dfl);\n          this.setKlaviyoProp('OOS Seen DFLs', seen.join(','));\n        }\n      }\n\n      // Discrete event for funnel analysis + TW journey\n      this.trackEvent('OOS Form Viewed', {\n        sku: evt.sku,\n        dfl: dfl,\n        product: evt.product || null,\n        variant: evt.variant || null\n      });\n    },\n\n    /**\n     * Register a CRO test exposure. Idempotent within a browser via tests_seen.\n     *\n     * @param {string} testId  e.g. '047_atc_bypass'\n     * @param {string} variant e.g. 'A' / 'B' / 'control'\n     * @param {object} [ctx]   optional extra event props\n     */\n    exposeTest: function (testId, variant, ctx) {\n      if (!testId || !variant) return;\n      ctx = ctx || {};\n      var buf = readBuf();\n      var seen = (buf.props['tests_seen'] || '').split(',').filter(Boolean);\n      if (seen.indexOf(testId) !== -1) return; // already exposed in this browser\n      seen.push(testId);\n\n      // Sticky variant assignment for segmentation + GA4 user_property\n      this.setKlaviyoProp('tests_seen', seen.join(','));\n      this.setKlaviyoProp('Test ' + testId, variant);\n      var gaProps = {};\n      gaProps['test_' + testId] = variant;\n      gaSet(gaProps);\n\n      // Discrete events on all three pipes \u2014 the unlock for ROAS-by-variant in TW\n      var payload = Object.assign({ test_id: testId, variant: variant }, ctx);\n      klaviyoPush(['track', 'Test Exposure', payload]);\n      gaEvent('experiment_exposure', payload);\n      triplePush('Event', Object.assign({ event_name: 'Test Exposure' }, payload));\n    },\n\n    /**\n     * Record a PDP variant pill click. Captures the DFL trio (Dexterity, Flex,\n     * Length) as sticky Klaviyo profile props so non-quiz-takers become\n     * segmentable, and fires a 'PDP Variant Clicked' event for TW journey +\n     * Klaviyo metric. Debounced: same SKU within 2s = single fire.\n     *\n     * @param {object} v\n     * @param {string} v.handle       product handle (e.g. 'p02-perform-12-club-set')\n     * @param {string} v.sku          variant SKU (e.g. 'P02-SET12-RRS-BLK-GB')\n     * @param {string|number} [v.variant_id]\n     * @param {Array<{name:string,value:string}>} v.options  selected variant options\n     * @param {boolean} v.in_stock    whether the selected variant is available\n     * @param {number}  [v.price]     variant price in cents\n     */\n    trackVariantClick: function (v) {\n      if (!v || !v.options || !v.options.length) return;\n      // Debounce: same SKU within 2s is a no-op\n      var now = Date.now();\n      if (this._lastVariantClick && this._lastVariantClick.sku === v.sku &&\n          (now - this._lastVariantClick.t) < 2000) return;\n      this._lastVariantClick = { sku: v.sku, t: now };\n\n      // Pull the DFL trio out of the options array (case-insensitive name match)\n      function findOpt(names) {\n        for (var i = 0; i < v.options.length; i++) {\n          var n = (v.options[i].name || '').toLowerCase();\n          for (var j = 0; j < names.length; j++) {\n            if (n === names[j]) return v.options[i].value;\n          }\n        }\n        return null;\n      }\n      var dexterity = findOpt(['dexterity', 'hand', 'handedness']);\n      var flex      = findOpt(['shaft flex', 'flex']);\n      var length    = findOpt(['shaft length', 'length']);\n\n      // Canonicalize Hand to match Quiz Dexterity schema. Stix variant options\n      // use \"Right\"/\"Left\" but the quiz writes \"Right Handed\"/\"Left Handed\".\n      // Normalizing here lets segments unify both signals on a single value.\n      if (dexterity === 'Right') dexterity = 'Right Handed';\n      else if (dexterity === 'Left') dexterity = 'Left Handed';\n\n      // Sticky profile props \u2014 last-considered semantics. These mirror the\n      // quiz answer schema (Quiz Dexterity, etc.) so Blossom's existing flows\n      // can layer self-reported (Quiz *) and revealed (Last PDP Considered *)\n      // intent without rewriting segment definitions.\n      if (dexterity) this.setKlaviyoProp('Last PDP Considered Hand', dexterity);\n      if (flex)      this.setKlaviyoProp('Last PDP Considered Flex', flex);\n      if (length)    this.setKlaviyoProp('Last PDP Considered Length', length);\n\n      // Append to a comma-list of seen DFL combos for history. Cap at 10 entries\n      // so the prop doesn't grow unbounded \u2014 useful for \"user considered 3+\n      // different DFLs in this session\" segmentation.\n      if (dexterity && flex && length) {\n        var dfl = [dexterity[0], flex[0], length[0]].join('').toUpperCase();\n        var buf = readBuf();\n        var seen = (buf.props['considered_dfls'] || '').split(',').filter(Boolean);\n        if (seen.indexOf(dfl) === -1) {\n          seen.push(dfl);\n          if (seen.length > 10) seen = seen.slice(-10);\n          this.setKlaviyoProp('considered_dfls', seen.join(','));\n        }\n      }\n\n      // Bundled event for TW journey + Klaviyo metric. in_stock=false is a\n      // higher-intent OOS signal than the notify-me form \u2014 user picked the\n      // exact DFL they want before they saw the OOS state.\n      var payload = {\n        handle: v.handle || '',\n        sku: v.sku || '',\n        variant_id: v.variant_id || null,\n        dexterity: dexterity || null,\n        flex: flex || null,\n        length: length || null,\n        in_stock: !!v.in_stock,\n        price: v.price || null\n      };\n      this.trackEvent('PDP Variant Clicked', payload);\n    },\n\n    // \u2500\u2500 Introspection (debugging only) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    _buf: function () { return readBuf(); },\n    _lastVariantClick: null,\n    _version: '1.1.0'\n  };\n\n  // Auto-hook common identify surfaces\n  // \u2500\u2500 Klaviyo onsite popup form submit \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  document.addEventListener('klaviyoForms', function (e) {\n    try {\n      var d = e.detail || {};\n      var email = (d.metaData && d.metaData.email) || (d.formData && d.formData.email);\n      if (d.type === 'submit' && email) {\n        stix.identify(email, { 'Email Capture Source': 'klaviyo popup' });\n      }\n    } catch (err) { /* swallow */ }\n  });\n\n  // \u2500\u2500 Shopify form submits with contact[email] \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  // Catches the footer newsletter form, /contact form, /pages/press form, and any\n  // other Shopify-native form whose email field is name=\"contact[email]\". These\n  // forms submit + reload so we hook on submit (capture phase) and identify\n  // synchronously before navigation. Cookie buffer is written before nav too.\n  document.addEventListener('submit', function (e) {\n    try {\n      var form = e.target;\n      if (!form || !form.querySelector) return;\n      var emailEl = form.querySelector('input[name=\"contact[email]\"]');\n      if (!emailEl || !emailEl.value) return;\n      var email = emailEl.value.trim();\n      if (!email || !/.+@.+\\..+/.test(email)) return;\n      // Best-effort tag the source from form id / dataset for later analysis\n      var src = (form.id || form.dataset.source || form.getAttribute('action') || 'shopify-form').toString();\n      stix.identify(email, { 'Email Capture Source': 'shopify form: ' + src });\n    } catch (err) { /* never block submit on tracking */ }\n  }, true);\n\n  // \u2500\u2500 Shopify customer login \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  try {\n    if (window.ShopifyAnalytics && window.ShopifyAnalytics.meta && window.ShopifyAnalytics.meta.page) {\n      var customerId = window.ShopifyAnalytics.meta.page.customerId;\n      var customerEmail = (window.ShopifyAnalytics.lib && window.ShopifyAnalytics.lib.user\n        && typeof window.ShopifyAnalytics.lib.user === 'function')\n        ? (window.ShopifyAnalytics.lib.user().traits && window.ShopifyAnalytics.lib.user().traits().email)\n        : null;\n      if (customerId && customerEmail) {\n        stix.identify(customerEmail, { 'Email Capture Source': 'shopify account' });\n      }\n    }\n  } catch (err) { /* swallow */ }\n\n  // Expose\n  window.stix = window.stix || {};\n  window.stix.track = stix;\n})();\n"],
  "mappings": "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",
  "names": []
}
