{
  "version": 3,
  "sources": ["/cdn/shop/t/35/assets/custom.js?enable_js_minification=1"],
  "sourcesContent": ["(function upsell_titles($){\n  // function to check if the Newsletter email input has been loaded or not on page load\n  // (Oct 2026: retries are now limited, the old version re-checked every few milliseconds forever on pages without a newsletter form)\n  var newsletterChecks = 0;\n  (function hasNewsletterLoaded() {\n    const addDatalayerPush = () => {\n      let newsletterSubmitButton = $('.newsletter-form .field__button');\n\n      newsletterSubmitButton.on('click', function() {\n        let newsletterEmailInput = $('.newsletter-form .field__input');\n        let newsletterEmailValue = newsletterEmailInput.val();\n        let isEmailValid = newsletterEmailInput.prop('validity').valid;\n\n        let userRegion = '';\n        let userCountry = '';\n\n        if (isStorageSupported('local')) {\n          userRegion = window.localStorage.getItem('_appState.Region');\n          userCountry = window.localStorage.getItem('_appState.Location');\n        }\n\n        if (isEmailValid) {\n          window.dataLayer.push({\n            'event': 'new_subscriber',\n            'email': newsletterEmailValue,\n            'location': {\n              'region': userRegion,\n              'country': userCountry\n            }\n          });\n        }\n      });\n    };\n\n    // if the Newsletter email input doesn't exist\n    if (!$('.newsletter-form .field__input').length) {\n      // wait until the Newsletter email input is loaded into the DOM (up to ~15 seconds)\n      if (newsletterChecks++ < 60) {\n        return setTimeout(hasNewsletterLoaded, 250);\n      }\n      return;\n    }\n\n    // code when the Newsletter email input exists\n    else {\n      addDatalayerPush();\n    }\n  })();\n})(jQuery);\n\n/* Oct 2026: keep the colour swatch (and therefore the variant added to cart) in sync with the\n   gallery image the shopper selects, e.g. Pilot FriXion pens (Black / Blue / Red).\n   Uses each variant's featured_media from the product's .js-variant-data JSON, so it works for\n   any product whose variants have their own image. */\n(function variantSyncFromGallery() {\n  function init() {\n    var dataEl = document.querySelector('.js-variant-data');\n    var gallery = document.querySelector('media-gallery');\n    if (!dataEl || !gallery) return;\n\n    var variants;\n    try { variants = JSON.parse(dataEl.textContent); } catch (e) { return; }\n    if (!Array.isArray(variants)) return;\n\n    var byMedia = {};\n    variants.forEach(function (v) {\n      if (v.featured_media && v.featured_media.id && !byMedia[v.featured_media.id]) {\n        byMedia[v.featured_media.id] = v;\n      }\n    });\n\n    function selectVariantForMedia(mediaId) {\n      var variant = byMedia[mediaId];\n      if (!variant) return;\n      [variant.option1, variant.option2, variant.option3].forEach(function (value) {\n        if (!value) return;\n        var radios = document.querySelectorAll('input[type=\"radio\"]');\n        for (var i = 0; i < radios.length; i++) {\n          var r = radios[i];\n          if (r.value === value && !r.checked && r.closest('form, variant-radios, fieldset, .product-form__input')) {\n            r.click();\n            break;\n          }\n        }\n      });\n    }\n\n    function mediaIdFrom(str) {\n      return str ? String(str).split('-').pop() : '';\n    }\n\n    // Clicking a thumbnail\n    gallery.addEventListener('click', function (e) {\n      var item = e.target.closest('[data-target]');\n      if (!item || !gallery.contains(item)) return;\n      selectVariantForMedia(mediaIdFrom(item.dataset.target));\n    });\n\n    // Swiping the main image on mobile\n    var viewer = gallery.querySelector('[id^=\"GalleryViewer\"]');\n    if (viewer) {\n      viewer.addEventListener('slideChanged', function (e) {\n        var el = e.detail && e.detail.currentElement;\n        if (el && el.dataset) selectVariantForMedia(mediaIdFrom(el.dataset.mediaId));\n      });\n    }\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n"],
  "mappings": "CAAC,SAAuB,EAAE,CAGxB,IAAI,iBAAmB,GACtB,SAAS,qBAAsB,CAC9B,MAAM,iBAAmB,IAAM,CACA,EAAE,iCAAiC,EAEzC,GAAG,QAAS,UAAW,CAC5C,IAAI,qBAAuB,EAAE,gCAAgC,EACzD,qBAAuB,qBAAqB,IAAI,EAChD,aAAe,qBAAqB,KAAK,UAAU,EAAE,MAErD,WAAa,GACb,YAAc,GAEd,mBAAmB,OAAO,IAC5B,WAAa,OAAO,aAAa,QAAQ,kBAAkB,EAC3D,YAAc,OAAO,aAAa,QAAQ,oBAAoB,GAG5D,cACF,OAAO,UAAU,KAAK,CACpB,MAAS,iBACT,MAAS,qBACT,SAAY,CACV,OAAU,WACV,QAAW,WACb,CACF,CAAC,CAEL,CAAC,CACH,EAGA,GAAK,EAAE,gCAAgC,EAAE,OAUvC,iBAAiB,MARjB,QAAI,mBAAqB,GAChB,WAAW,oBAAqB,GAAG,EAE5C,MAOJ,GAAG,CACL,GAAG,MAAM,GAMR,UAAkC,CACjC,SAAS,MAAO,CACd,IAAI,OAAS,SAAS,cAAc,kBAAkB,EAClD,QAAU,SAAS,cAAc,eAAe,EACpD,GAAI,CAAC,QAAU,CAAC,QAAS,OAEzB,IAAI,SACJ,GAAI,CAAE,SAAW,KAAK,MAAM,OAAO,WAAW,CAAG,MAAY,CAAE,MAAQ,CACvE,GAAI,CAAC,MAAM,QAAQ,QAAQ,EAAG,OAE9B,IAAI,QAAU,CAAC,EACf,SAAS,QAAQ,SAAU,EAAG,CACxB,EAAE,gBAAkB,EAAE,eAAe,IAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,IACzE,QAAQ,EAAE,eAAe,EAAE,EAAI,EAEnC,CAAC,EAED,SAAS,sBAAsB,QAAS,CACtC,IAAI,QAAU,QAAQ,OAAO,EACxB,SACL,CAAC,QAAQ,QAAS,QAAQ,QAAS,QAAQ,OAAO,EAAE,QAAQ,SAAU,MAAO,CAC3E,GAAK,MAEL,QADI,OAAS,SAAS,iBAAiB,qBAAqB,EACnD,EAAI,EAAG,EAAI,OAAO,OAAQ,IAAK,CACtC,IAAI,EAAI,OAAO,CAAC,EAChB,GAAI,EAAE,QAAU,OAAS,CAAC,EAAE,SAAW,EAAE,QAAQ,sDAAsD,EAAG,CACxG,EAAE,MAAM,EACR,KACF,CACF,CACF,CAAC,CACH,CAEA,SAAS,YAAY,IAAK,CACxB,OAAO,IAAM,OAAO,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAI,EAC9C,CAGA,QAAQ,iBAAiB,QAAS,SAAU,EAAG,CAC7C,IAAI,KAAO,EAAE,OAAO,QAAQ,eAAe,EACvC,CAAC,MAAQ,CAAC,QAAQ,SAAS,IAAI,GACnC,sBAAsB,YAAY,KAAK,QAAQ,MAAM,CAAC,CACxD,CAAC,EAGD,IAAI,OAAS,QAAQ,cAAc,uBAAuB,EACtD,QACF,OAAO,iBAAiB,eAAgB,SAAU,EAAG,CACnD,IAAI,GAAK,EAAE,QAAU,EAAE,OAAO,eAC1B,IAAM,GAAG,SAAS,sBAAsB,YAAY,GAAG,QAAQ,OAAO,CAAC,CAC7E,CAAC,CAEL,CAEI,SAAS,aAAe,UAC1B,SAAS,iBAAiB,mBAAoB,IAAI,EAElD,KAAK,CAET,GAAG",
  "names": []
}
