{
  "version": 3,
  "sources": ["/cdn/shop/t/36/assets/ynt-lead-tracking.js?reference_check=20260910"],
  "sourcesContent": ["(function (window, document) {\n  'use strict';\n  if (window.YNTLeadTracking) return;\n  var FIRST = 'ynt_attribution_first_v1', SESSION = 'ynt_attribution_session_v1', SENT = 'ynt_leads_sent_v1';\n  var FIRST_TTL = 90 * 86400000, SESSION_TTL = 30 * 60000;\n  var memorySent = {}, first, session, gaClientId = '', gaSessionId = '';\n  function allowed() { try { return window.Shopify.customerPrivacy.analyticsProcessingAllowed() === true; } catch (_) { return null; } }\n  function storage(name) { try { return window[name]; } catch (_) { return {getItem:function(){return null;},setItem:function(){},removeItem:function(){}}; } }\n  function read(storage, key) { try { return JSON.parse(storage.getItem(key) || 'null'); } catch (_) { return null; } }\n  function write(storage, key, value) { try { storage.setItem(key, JSON.stringify(value)); } catch (_) {} }\n  function cleanLabel(value) { value = String(value || '').slice(0, 100); return /^[a-z0-9_. -]*$/i.test(value) ? value : ''; }\n  function publicPath(value) {\n    try {\n      var url = new URL(value, window.location.origin);\n      if (!/^(www\\.)?ynottony\\.co\\.uk$/i.test(url.hostname)) return '';\n      if (/\\/account|\\/customer|\\/checkouts?|\\/orders?|\\/pages\\/quotes-|\\/pages\\/projects-quotations|\\/pages\\/project-submission-success/i.test(url.pathname)) return '/private';\n      if (!/^\\/[a-z0-9_\\-/]*$/i.test(url.pathname)) return '/other';\n      return url.pathname.slice(0, 100);\n    } catch (_) { return ''; }\n  }\n  function touch() {\n    var url = new URL(window.location.href), host = '';\n    try { host = new URL(document.referrer).hostname.toLowerCase(); } catch (_) {}\n    if (/^(www\\.)?ynottony\\.co\\.uk$/i.test(host)) host = '';\n    var source = cleanLabel(url.searchParams.get('utm_source')), medium = cleanLabel(url.searchParams.get('utm_medium'));\n    source = ({ig:'instagram',fb:'facebook'})[source.toLowerCase()] || source.toLowerCase();\n    var campaign = cleanLabel(url.searchParams.get('utm_campaign')), content = cleanLabel(url.searchParams.get('utm_content'));\n    if (!source) {\n      if (/(^|\\.)google\\.[a-z.]+$|(^|\\.)bing\\.com$|(^|\\.)duckduckgo\\.com$/.test(host)) { source = host; medium = 'organic'; }\n      else if (/(^|\\.)(instagram\\.com|facebook\\.com|pinterest\\.[a-z.]+|pin\\.it)$/.test(host)) { source = /instagram/.test(host) ? 'instagram' : /facebook/.test(host) ? 'facebook' : 'pinterest'; medium = 'social'; }\n      else if (host) { source = cleanLabel(host); medium = 'referral'; }\n      else { source = '(direct)'; medium = '(none)'; }\n    }\n    return { landing: publicPath(url.href), source: source, medium: medium || '(not set)', campaign: campaign, content: content, at: Date.now(), last: Date.now() };\n  }\n  function clear() {\n    first = session = undefined;\n    try { storage(\"localStorage\").removeItem(FIRST); storage(\"sessionStorage\").removeItem(SESSION); storage(\"localStorage\").removeItem(SENT); } catch (_) {}\n  }\n  function refresh() {\n    if (allowed() === null) return false;\n    if (!allowed()) { clear(); return false; }\n    var now = Date.now(), incoming = touch();\n    first = read(storage(\"localStorage\"), FIRST);\n    if (!first || now - first.at > FIRST_TTL || first.at > now) { first = incoming; write(storage(\"localStorage\"), FIRST, first); }\n    session = read(storage(\"sessionStorage\"), SESSION);\n    if (!session || now - session.last > SESSION_TTL || session.last > now) session = incoming;\n    session.last = now; write(storage(\"sessionStorage\"), SESSION, session);\n    return true;\n  }\n  function field(form, name) { var node = form.elements.namedItem(name); return node ? node.value : ''; }\n  function service(form) {\n    var raw = field(form, 'contact[Service type]') || field(form, 'contact[Quote page]') || field(form, 'contact[Contact Page]') || window.location.pathname;\n    raw = raw.toLowerCase();\n    if (/web|digital|ecommerce/.test(raw)) return 'web_design';\n    if (/3d|render/.test(raw)) return '3d_rendering';\n    if (/brand|logo|identity/.test(raw) && !/packag/.test(raw)) return 'brand_design';\n    if (/packag|label|bottle/.test(raw)) return 'packaging_design';\n    return 'design_enquiry';\n  }\n  function context(form) {\n    return {\n      first_landing_page: first.landing, first_source: first.source, first_medium: first.medium,\n      session_landing_page: session.landing, enquiry_source: session.source, enquiry_medium: session.medium,\n      enquiry_campaign: session.campaign, enquiry_content: session.content || '', enquiry_page: publicPath(window.location.href),\n      form_type: /custom_packaging/.test(field(form, 'ynt_form_id') || form.id) ? 'detailed_quote' : 'quick_quote',\n      service_category: service(form)\n    };\n  }\n  function collectGaIdentifiers() {\n    try {\n      if (!allowed() || typeof window.gtag !== 'function') return;\n      window.gtag('get', 'G-5P1NN0CD61', 'client_id', function (value) { if (/^\\d+\\.\\d+$/.test(String(value || ''))) gaClientId = String(value); });\n      window.gtag('get', 'G-5P1NN0CD61', 'session_id', function (value) { if (/^\\d+$/.test(String(value || ''))) gaSessionId = String(value); });\n    } catch (_) {}\n  }\n  function transportField(form, name, value) {\n    var node = form.elements.namedItem(name);\n    if (!value) { if (node) node.remove(); return; }\n    if (!node) { node = document.createElement('input'); node.type = 'hidden'; node.name = name; node.setAttribute('data-ynt-transport', ''); form.appendChild(node); }\n    node.value = value;\n  }\n  function attach(form) {\n    try {\n      if (!refresh()) {\n        Array.prototype.slice.call(form.querySelectorAll('[data-ynt-attribution]')).forEach(function (node) { node.remove(); });\n        form.__yntAttribution = undefined; return;\n      }\n      var id = field(form, 'ynt_submission_id');\n      if (!form.__yntAttribution || form.__yntAttribution.id !== id) form.__yntAttribution = { id: id, data: context(form) };\n      Object.keys(form.__yntAttribution.data).forEach(function (key) {\n        var name = 'contact[Attribution ' + key + ']', node = form.elements.namedItem(name);\n        if (!node) { node = document.createElement('input'); node.type = 'hidden'; node.name = name; node.setAttribute('data-ynt-attribution', ''); form.appendChild(node); }\n        node.value = form.__yntAttribution.data[key];\n      });\n      collectGaIdentifiers();\n      transportField(form, 'ynt_ga_client_id', gaClientId);\n      transportField(form, 'ynt_ga_session_id', gaSessionId);\n    } catch (_) { /* Measurement must never prevent a real enquiry. */ }\n  }\n  function publish(name, data) { try { if (typeof window.gtag !== 'function') return false; window.gtag('event', name, data); return true; } catch (_) { return false; } }\n  function confirmed(form, response) {\n    try {\n      var reference = response && (response.quoteReference || (response.quote && response.quote.reference));\n      if (!response || response.ok !== true || !reference || !allowed()) return;\n      var sent = read(storage(\"localStorage\"), SENT) || {};\n      if (memorySent[reference] || sent[reference]) return;\n      if (!form.__yntAttribution) attach(form);\n      if (!form.__yntAttribution) return;\n      memorySent[reference] = true;\n      sent[reference] = Date.now();\n      Object.keys(sent).forEach(function (key) { if (Date.now() - sent[key] > FIRST_TTL) delete sent[key]; });\n      write(storage(\"localStorage\"), SENT, sent);\n      // The server sends the confirmed lead through GA4 Measurement Protocol,\n      // bound to the existing Google tag's client and session identifiers.\n    } catch (_) {}\n  }\n  document.addEventListener('visitorConsentCollected', refresh);\n  document.addEventListener('click', function (event) {\n    try {\n      var link = event.target.closest('a[href]');\n      if (!link || !refresh()) return;\n      var href = link.getAttribute('href'), channel = /^mailto:/i.test(href) ? 'email' : /^tel:/i.test(href) ? 'phone' : /^https:\\/\\/(wa\\.me|api\\.whatsapp\\.com)\\//i.test(href) ? 'whatsapp' : '';\n      if (channel) publish('ynt_contact_intent', { contact_method: channel, enquiry_page: publicPath(window.location.href), session_landing_page: session.landing, enquiry_source: session.source, enquiry_medium: session.medium });\n    } catch (_) {}\n  });\n  window.YNTLeadTracking = { attach: attach, confirmed: confirmed };\n  if (window.Shopify && window.Shopify.loadFeatures) window.Shopify.loadFeatures([{ name: 'consent-tracking-api', version: '0.1' }], function (error) { if (!error) { refresh(); collectGaIdentifiers(); } });\n  refresh();\n  collectGaIdentifiers();\n})(window, document);\n"],
  "mappings": "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",
  "names": ["window", "document", "storage"]
}
