@elevateab/sdk 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/ua-parser-js/src/ua-parser.js","../src/contexts/ElevateContext.tsx","../src/utils/analytics.ts","../src/components/ElevateAnalytics.tsx"],"sourcesContent":["/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.41\n Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.41',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HONOR = 'Honor',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPERA = 'Opera',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS',\n SUFFIX_BROWSER = ' Browser';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof(str) === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY);\n return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n if (!regex[j]) { break; }\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i, // LieBao Browser/Rekonq\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((ppc|powerpc)(64)?)( mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n / sun4\\w[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto(?! 360)[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv|watch)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*))/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(?:015|06[35]|142p?))/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // Archos\n /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n /archos ([\\w ]+)( b|\\))/i,\n /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix) (x1101b?)/i // Infinix XPad\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n /; (hmd|imo) ([\\w ]+?)(?: bui|\\))/i, // HMD/IMO\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i, // Lenovo\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia Tablets\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mi(tv|box)-?\\w+) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n // SmartTV from Unidentified Vendors\n /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield)( bui|\\))/i // Nvidia Portable\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /; (quest( \\d| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /droid .+?; ([\\w\\. -]+)( bui|\\))/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile|iot))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\\w*[-\\/; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux)(?: arm\\w*| x86\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","import React from \"react\";\nimport type { ElevateContextValue } from \"../types\";\n\nexport const ElevateContext = React.createContext<ElevateContextValue | null>(\n null\n);\n\n/**\n * Hook to access Elevate config from context\n */\nexport function useElevateConfig(): ElevateContextValue {\n const context = React.useContext(ElevateContext);\n\n if (context === null) {\n throw new Error(\"useElevateConfig must be used within ElevateProvider\");\n }\n\n return context;\n}\n","/**\n * Analytics utilities for parsing and extracting data from events\n */\n\nimport { UAParser } from \"ua-parser-js\";\n\n// URL source mappings\nconst urlSources: Record<string, string> = {\n \"facebook.com\": \"Facebook\",\n \"fb.me\": \"Facebook\",\n \"m.facebook.com\": \"Facebook\",\n \"l.facebook.com\": \"Facebook\",\n \"lm.facebook.com\": \"Facebook\",\n \"instagram.com\": \"Instagram\",\n \"l.instagram.com\": \"Instagram\",\n \"youtube.com\": \"Youtube\",\n \"youtu.be\": \"Youtube\",\n \"m.youtube.com\": \"Youtube\",\n \"bing.com\": \"Bing\",\n \"www.bing.com\": \"Bing\",\n \"msnbc.msn.com\": \"Bing\",\n \"dizionario.it.msn.com\": \"Bing\",\n \"cc.bingj.com\": \"Bing\",\n \"m.bing.com\": \"Bing\",\n \"twitter.com\": \"Twitter\",\n \"t.co\": \"Twitter\",\n};\n\n/**\n * Sanitize string values to prevent XSS\n */\nexport function sanitizeString(value: unknown): string {\n if (typeof value !== \"string\") return String(value);\n return value.replace(/[\\\\\"'`\\x00-\\x1F\\x7F]/g, \"\");\n}\n\n/**\n * Round number to 2 decimal places\n */\nexport function roundToTwo(value: unknown): number | null {\n if (value === null || value === undefined) {\n return null;\n }\n const num = typeof value === \"string\" ? parseFloat(value) : Number(value);\n\n if (isNaN(num)) {\n return null;\n }\n return Number(Math.round(Number(num + \"e2\")) + \"e-2\");\n}\n\n/**\n * Extract product ID from Shopify GID\n */\nexport function extractProductId(gid: string | undefined): string | null {\n if (!gid) return null;\n const regex = /gid:\\/\\/shopify\\/Product\\/(\\d+)/;\n const match = gid.match(regex);\n return match ? match[1] : null;\n}\n\n/**\n * Extract product variant ID from Shopify GID\n */\nexport function extractProductVariantId(\n gid: string | undefined\n): string | null {\n if (!gid) return null;\n const regex = /gid:\\/\\/shopify\\/ProductVariant\\/(\\d+)/;\n const match = gid.match(regex);\n return match ? match[1] : null;\n}\n\n/**\n * Extract cart token from Shopify GID\n */\nexport function extractCartToken(\n gid: string | undefined | null\n): string | null {\n if (!gid) return null;\n const regex = /gid:\\/\\/shopify\\/Cart\\/([^?]+(\\?.+)?)/;\n const match = gid.match(regex);\n return match ? match[1] : null;\n}\n\n/**\n * Clean cart token by removing query parameters\n */\nexport function cleanCartToken(\n cartToken: string | null | undefined\n): string | null {\n try {\n if (typeof cartToken !== \"string\") {\n return null;\n }\n const decodedToken = decodeURIComponent(cartToken);\n const tokenPart = decodedToken.split(\"?\")[0];\n return tokenPart;\n } catch {\n // Silently fail - cart token extraction is not critical\n return cartToken || null;\n }\n}\n\n/**\n * Check if Facebook in-app browser\n */\nexport function checkFacebookBrowser(userAgent: string): boolean {\n const facebookBrowserRegex =\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i;\n return facebookBrowserRegex.test(userAgent);\n}\n\n/**\n * Check if Instagram in-app browser\n */\nexport function checkInstagramBrowser(userAgent: string): boolean {\n const instagramBrowserRegex = /(instagram)[\\/ ]([-\\w\\.]+)/i;\n return instagramBrowserRegex.test(userAgent);\n}\n\n/**\n * Check if Facebook or Instagram browser\n */\nexport function checkFacebookInstagramBrowser(userAgent: string): boolean {\n return checkFacebookBrowser(userAgent) || checkInstagramBrowser(userAgent);\n}\n\n/**\n * Get browser name from UA parser result\n */\nfunction getBrowserName(browser: string | undefined): string {\n if (!browser) {\n return \"\";\n }\n switch (browser) {\n case \"Mobile Safari\":\n return \"Safari\";\n case \"Chrome Mobile\":\n case \"Chrome Mobile iOS\":\n return \"Chrome\";\n case \"Firefox Mobile\":\n case \"Firefox Mobile iOS\":\n return \"Firefox\";\n case \"Opera Mobile\":\n case \"Opera Mini\":\n case \"Opera Mini iOS\":\n return \"Opera\";\n case \"Yandex Browser Lite\":\n return \"Yandex Browser\";\n case \"Chrome Webview\":\n case \"Mobile App\":\n return \"Mobile App\";\n default:\n return browser;\n }\n}\n\n/**\n * Extract query parameters from URL\n */\nfunction getQueryParams(parsedUrl: URL): Record<string, string> {\n const queryParams: Record<string, string> = {};\n\n parsedUrl.searchParams.forEach((value, key) => {\n if (!queryParams[key]) {\n queryParams[key] = value;\n }\n });\n\n return queryParams;\n}\n\n/**\n * Check if referrer URI is valid\n */\nfunction isValidReferrerURI(uri: URL): boolean {\n return !!uri.host && [\"http:\", \"https:\"].includes(uri.protocol);\n}\n\n/**\n * Extract referrer source from hostname\n */\nfunction extractReferrerSource(host: string): string {\n return host.replace(/^www\\./, \"\");\n}\n\n/**\n * Parse referrer to determine traffic source\n */\nfunction parseReferrer(\n referrer: string | undefined,\n browser: string,\n siteHostname: string | undefined\n): string {\n const browserObj: Record<string, string> = {\n Facebook: \"Facebook\",\n Instagram: \"Instagram\",\n };\n if (browser && browserObj[browser]) {\n return browser;\n }\n\n let referrerObj: URL | undefined;\n let host: string | undefined;\n try {\n if (referrer && referrer.trim() !== '') {\n referrerObj = new URL(referrer);\n } else {\n return \"Direct\";\n }\n if (referrerObj?.hostname && isValidReferrerURI(referrerObj)) {\n host = referrerObj.hostname;\n if (siteHostname && siteHostname === host) {\n return \"Direct\";\n }\n } else {\n return \"\";\n }\n } catch {\n // Silently handle invalid referrer URLs\n }\n if (!host) {\n return \"\";\n }\n const source = extractReferrerSource(host);\n if (!source) {\n return \"\";\n }\n if (urlSources[source]) {\n return urlSources[source];\n }\n if (source?.includes(\"google\")) {\n return \"Google\";\n }\n return source;\n}\n\n/**\n * Parse and extract analytics view data from referrer, entry page, and user agent\n */\nexport interface ParsedViewData {\n referrer_source: string;\n browser_info: string;\n os_info: string;\n device_type: string;\n page_entry_path: string;\n utm_medium: string;\n utm_source: string;\n utm_campaign: string;\n utm_content: string;\n utm_term: string;\n referrer_url: string;\n gclid: string;\n fbclid: string;\n pins_campaign_id: string;\n epik: string;\n}\n\nexport function parseAddViewData(params: {\n referrer?: string;\n entryPage?: string;\n userAgent?: string;\n}): ParsedViewData {\n const { referrer, entryPage, userAgent } = params;\n\n const data: ParsedViewData = {\n referrer_source: \"\",\n browser_info: \"\",\n os_info: \"\",\n device_type: \"\",\n page_entry_path: \"\",\n utm_medium: \"\",\n utm_source: \"\",\n utm_campaign: \"\",\n utm_content: \"\",\n utm_term: \"\",\n referrer_url: referrer || \"\",\n gclid: \"\",\n fbclid: \"\",\n pins_campaign_id: \"\",\n epik: \"\",\n };\n\n try {\n let siteHostname: string | undefined;\n if (entryPage && entryPage.trim() !== '' && entryPage.startsWith('http')) {\n try {\n const entryObj = new URL(entryPage);\n const entryPath = entryObj?.pathname;\n siteHostname = entryObj?.hostname;\n if (entryPath) {\n data.page_entry_path = entryPath ?? \"\";\n }\n const entryQueryParams = getQueryParams(entryObj);\n data.utm_medium = entryQueryParams[\"utm_medium\"] ?? \"\";\n data.utm_source = entryQueryParams[\"utm_source\"] ?? \"\";\n data.utm_campaign = entryQueryParams[\"utm_campaign\"] ?? \"\";\n data.utm_content = entryQueryParams[\"utm_content\"] ?? \"\";\n data.utm_term = entryQueryParams[\"utm_term\"] ?? \"\";\n data.gclid = entryQueryParams[\"gclid\"] ?? \"\";\n data.fbclid = entryQueryParams[\"fbclid\"] ?? \"\";\n data.pins_campaign_id = entryQueryParams[\"pins_campaign_id\"] ?? \"\";\n data.epik = entryQueryParams[\"epik\"] ?? \"\";\n } catch {\n // Silently handle invalid URLs - entry page might be invalid in some contexts\n }\n }\n\n if (userAgent) {\n const userAgentObj = UAParser(userAgent);\n const browser = userAgentObj?.browser?.name;\n const browserName = getBrowserName(browser);\n data.browser_info = browserName ?? \"\";\n data.os_info = userAgentObj?.os?.name ?? \"\";\n if (userAgent) {\n data.device_type =\n (userAgentObj?.device?.type || \"desktop\")?.toUpperCase() ?? \"\";\n }\n }\n\n data.referrer_source =\n parseReferrer(referrer, data?.browser_info, siteHostname) ?? \"\";\n return data;\n } catch {\n // Return partial data on parse error\n return data;\n }\n}\n\n/**\n * Get page type from pathname\n */\nexport function getPageTypeFromPathname(\n path: string,\n hasLocalizedPaths?: boolean\n): string {\n const hasNormalPath = path === \"/\" || path === \"\";\n\n // Check if this is a localized homepage (e.g., /en-us/, /fr-ca/)\n const localizedHomepagePattern = /^\\/[a-z]{2}(-[a-z]{2})?\\/?$/i;\n const isLocalizedHomepage =\n hasLocalizedPaths && localizedHomepagePattern.test(path);\n\n if (hasNormalPath || isLocalizedHomepage) {\n return \"index\";\n }\n\n if (/\\/products\\//.test(path)) {\n return \"product\";\n }\n\n if (/\\/collections\\//.test(path)) {\n return \"collection\";\n }\n\n if (/\\/pages\\//.test(path)) {\n return \"page\";\n }\n if (/\\/search/.test(path)) {\n return \"search\";\n }\n\n if (/\\/cart/.test(path)) {\n return \"cart\";\n }\n\n if (/\\/checkouts\\//.test(path)) {\n return \"checkout\";\n }\n\n return \"unknown\";\n}\n\n/**\n * Check if visitor ID is in URL params\n */\nexport function checkVisitorIdParams(searchParams: string): string | false {\n try {\n if (!searchParams) return false;\n const params = new URLSearchParams(searchParams);\n return params.get(\"eabUserId\") || false;\n } catch {\n // URL parsing failed, return false\n return false;\n }\n}\n\n/**\n * Get user agent string without browser info\n * Used for more consistent user fingerprinting\n */\nexport function getUserAgentNoBrowser(userAgent: string): string {\n if (!userAgent) return \"\";\n\n try {\n const userAgentObj = UAParser(userAgent);\n const os = userAgentObj?.os;\n const device = userAgentObj?.device;\n\n let result = \"\";\n if (os?.name) {\n result += os.name;\n if (os.version) result += ` ${os.version}`;\n }\n if (device?.type) {\n result += result ? ` (${device.type})` : device.type;\n }\n if (device?.vendor) {\n result += result ? ` ${device.vendor}` : device.vendor;\n }\n if (device?.model) {\n result += result ? ` ${device.model}` : device.model;\n }\n\n return result || userAgent;\n } catch {\n return userAgent;\n }\n}\n","/**\n * ElevateAnalytics Component\n *\n * Internal component used by ElevateHydrogenAnalytics.\n * Subscribes to Hydrogen analytics events and sends them to Elevate.\n *\n * For Hydrogen stores, use ElevateHydrogenAnalytics instead - it's zero-config!\n * For Next.js/Remix, use manual tracking functions (trackPageView, trackAddToCart, etc.)\n */\n\nimport React, { useEffect, useContext, useRef } from \"react\";\nimport type { EventPayload, TestAssignment } from \"../types\";\nimport { ElevateContext } from \"../contexts/ElevateContext\";\n\n/**\n * Type for useAnalytics hook signature (matches @shopify/hydrogen)\n */\nexport type UseAnalyticsHook = () => {\n subscribe: (event: string, callback: (data: unknown) => void) => void;\n register: (name: string) => { ready: () => void };\n};\n\n/**\n * Props for ElevateHydrogenAnalytics (public API)\n */\nexport interface ElevateHydrogenAnalyticsProps {\n /** Override storeId from context (optional) */\n storeId?: string;\n /** Override storefrontAccessToken from context (optional) */\n storefrontAccessToken?: string;\n /** Enable localized path detection (e.g., /en-us/, /fr-ca/) */\n hasLocalizedPaths?: boolean;\n /** Custom CloudFlare Worker URL */\n workerUrl?: string;\n /** Custom orders worker URL */\n ordersWorkerUrl?: string;\n}\n\n/**\n * Internal props for ElevateAnalytics (requires useAnalytics hook)\n */\ninterface ElevateAnalyticsProps extends ElevateHydrogenAnalyticsProps {\n /** The useAnalytics hook from @shopify/hydrogen (required) */\n useAnalytics: UseAnalyticsHook;\n}\nimport {\n parseAddViewData,\n extractProductId,\n extractProductVariantId,\n extractCartToken,\n cleanCartToken,\n getPageTypeFromPathname,\n sanitizeString,\n roundToTwo,\n getUserAgentNoBrowser,\n} from \"../utils/analytics\";\nimport {\n getVisitorId,\n getSessionId,\n getCookie,\n getJsonCookie,\n setReferrerData,\n getReferrerData,\n} from \"../utils/storage\";\nimport { uuidv4 } from \"../utils/storage\";\nimport { updateCartAttributes } from \"../utils/cartAttributes\";\n\n// Default CloudFlare Worker endpoints\nconst DEFAULT_WORKER_URL = \"https://bitter-river-9c62.support-67d.workers.dev\";\nconst DEFAULT_ORDERS_WORKER_URL =\n \"https://d339co84ntxcme.cloudfront.net/Prod/orders\";\n\n// Generate pixel event ID\nfunction generatePixelEventId(): string {\n return `sh-${uuidv4()}`;\n}\n\n// Transform test list format to event format\nfunction transformTestFormat(\n testObject: Record<string, string>,\n): TestAssignment[] {\n return Object.entries(testObject)\n .filter(([, variationId]) => typeof variationId === \"string\")\n .map(([testId, variationId]) => ({\n test_id: testId,\n variant_id: variationId,\n }));\n}\n\n// Transform viewed tests format\nfunction transformViewedTests(\n viewedObject: Record<string, boolean>,\n assignmentObject: Record<string, string>,\n): TestAssignment[] {\n return Object.entries(viewedObject)\n .filter(([testId]) => typeof assignmentObject[testId] === \"string\")\n .map(([testId]) => ({\n test_id: testId,\n variant_id: assignmentObject[testId],\n }));\n}\n\n/**\n * ElevateAnalytics - Subscribes to Hydrogen analytics events\n *\n * @internal Used by ElevateHydrogenAnalytics. For Hydrogen stores, use ElevateHydrogenAnalytics instead!\n */\nexport function ElevateAnalytics({\n storeId: storeIdProp,\n storefrontAccessToken: tokenProp,\n hasLocalizedPaths,\n workerUrl = DEFAULT_WORKER_URL,\n ordersWorkerUrl = DEFAULT_ORDERS_WORKER_URL,\n useAnalytics,\n}: ElevateAnalyticsProps) {\n // Get values from context, allow props to override\n const context = useContext(ElevateContext);\n const storeId = storeIdProp || context?.storeId || \"\";\n const storefrontAccessToken = tokenProp || context?.storefrontAccessToken;\n\n // Track if we've warned about missing context (warn only once)\n const hasWarnedContextRef = useRef(false);\n\n // Warn once if not inside ElevateProvider\n useEffect(() => {\n if (!context && !storeIdProp && !hasWarnedContextRef.current) {\n hasWarnedContextRef.current = true;\n console.error(\n \"[ElevateAB] ElevateAnalytics must be used inside ElevateProvider, \" +\n \"or you must pass storeId as a prop.\",\n );\n }\n }, [context, storeIdProp]);\n const { subscribe, register } = useAnalytics();\n const { ready } = register(\"Elevate Analytics\");\n\n useEffect(() => {\n // Skip in non-browser environments\n if (typeof window === \"undefined\") return;\n\n // Initialize visitor ID and session ID\n getVisitorId();\n getSessionId();\n\n // Initialize referrer data if not already set\n if (typeof document !== \"undefined\") {\n const currentReferrer = document.referrer || \"\";\n const currentUrl = window.location.href;\n setReferrerData(currentReferrer, currentUrl);\n }\n\n const setupAnalytics = () => {\n // Initialize state\n const initializeState = (event: any) => {\n const productPageId = extractProductId(event.products?.[0]?.id);\n if (productPageId && typeof localStorage !== \"undefined\") {\n localStorage.setItem(\"eabProductPageId\", productPageId);\n } else if (\n typeof window !== \"undefined\" &&\n !window.location.pathname.includes(\"/products/\")\n ) {\n localStorage?.removeItem(\"eabProductPageId\");\n }\n\n const cartToken = extractCartToken(\n typeof localStorage !== \"undefined\"\n ? localStorage.getItem(\"shopifyCartId\")\n : null,\n );\n\n const { referrer, entryPage } = getReferrerData();\n\n return {\n visitorId: getVisitorId(),\n sessionId: getSessionId(),\n cartToken: cartToken || getCookie(\"cart\") || \"\",\n referrer,\n entryPage,\n clientId: getCookie(\"_shopify_y\"),\n rootRoute:\n typeof localStorage !== \"undefined\"\n ? localStorage.getItem(\"eabRootRoute\") || \"\"\n : \"\",\n productPageId:\n typeof localStorage !== \"undefined\"\n ? localStorage.getItem(\"eabProductPageId\") || \"\"\n : \"\",\n };\n };\n\n // Create base event data\n const createBaseEventData = (\n eventName: string,\n pixelEventId: string,\n event: any,\n state: any,\n ): EventPayload => {\n const userAgent =\n typeof navigator !== \"undefined\" ? navigator.userAgent : \"\";\n const pathname = event?.url\n ? new URL(event.url).pathname\n : typeof window !== \"undefined\"\n ? window.location.pathname\n : \"\";\n const pageType = getPageTypeFromPathname(pathname, hasLocalizedPaths);\n\n const parsedData = parseAddViewData({\n referrer: state.referrer,\n entryPage: state.entryPage,\n userAgent,\n });\n\n const abtlObject = getJsonCookie<Record<string, string>>(\"ABTL\") || {};\n const abauObject = getJsonCookie<Record<string, boolean>>(\"ABAU\") || {};\n\n const testAssignments = transformTestFormat(abtlObject);\n const viewedTests = transformViewedTests(abauObject, abtlObject);\n\n const currentTimestamp = new Date().toISOString();\n\n // Get additional state from cookies/storage\n const isFirstVisit =\n typeof sessionStorage !== \"undefined\"\n ? sessionStorage.getItem(\"eabIsFirstVisit\") === \"true\"\n : false;\n const shopifyCountry = getCookie(\"localization\") || \"\";\n\n return {\n pixel_event_id: pixelEventId,\n shop_name: storeId,\n timestamp: currentTimestamp,\n event_type: eventName,\n client_id: state.clientId,\n visitor_id: state.visitorId,\n session_id: state.sessionId,\n cart_token: cleanCartToken(state.cartToken),\n\n page_url:\n event.context?.document?.location?.href ||\n (typeof window !== \"undefined\" ? window.location.href : \"\"),\n page_pathname: pathname,\n page_search:\n event.context?.document?.location?.search ||\n (typeof window !== \"undefined\" ? window.location.search : \"\"),\n referrer_url: state.referrer,\n referrer_source: parsedData?.referrer_source,\n previous_page:\n typeof document !== \"undefined\" ? document.referrer : \"\",\n page_entry: state.entryPage,\n page_entry_path: parsedData?.page_entry_path,\n page_type: pageType,\n\n utm_medium: parsedData?.utm_medium,\n utm_source: parsedData?.utm_source,\n utm_campaign: parsedData?.utm_campaign,\n utm_content: parsedData?.utm_content,\n utm_term: parsedData?.utm_term,\n\n gclid: parsedData?.gclid,\n fbclid: parsedData?.fbclid,\n pins_campaign_id: parsedData?.pins_campaign_id,\n epik: parsedData?.epik,\n\n browser_info: parsedData?.browser_info,\n os_info: parsedData?.os_info,\n device_type: parsedData?.device_type,\n language:\n event.context?.navigator?.language ||\n (typeof navigator !== \"undefined\" ? navigator.language : \"\"),\n root_route: state.rootRoute,\n user_agent: userAgent,\n user_agent_no_browser: getUserAgentNoBrowser(userAgent),\n\n is_first_visit: isFirstVisit,\n shopify_country: shopifyCountry,\n\n cart_currency: event.shop?.currency,\n\n ab_test_assignments: testAssignments,\n ab_test_views: viewedTests,\n is_first_order: null,\n };\n };\n\n // Send event to CloudFlare Worker\n const sendEvent = async (data: EventPayload) => {\n if (data.exclude) return;\n\n try {\n const response = await fetch(workerUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n keepalive: true,\n });\n\n if (!response.ok) {\n throw new Error(`Worker error: ${response.status}`);\n }\n\n return response;\n } catch (error) {\n console.error(\"[ElevateAB] Error sending analytics:\", error);\n }\n };\n\n // Event handlers\n const handlePageViewed = async (event: any) => {\n try {\n const state = initializeState(event);\n const pixelEventId = generatePixelEventId();\n const eventData = createBaseEventData(\n \"page_viewed\",\n pixelEventId,\n event,\n state,\n );\n\n await sendEvent(eventData);\n } catch (error) {\n console.error(\"[ElevateAB] Error handling page_viewed:\", error);\n }\n };\n\n const handleProductViewed = async (event: any) => {\n try {\n const state = initializeState(event);\n const pixelEventId = generatePixelEventId();\n const baseData = createBaseEventData(\n \"product_viewed\",\n pixelEventId,\n event,\n state,\n );\n\n const eventData: EventPayload = {\n ...baseData,\n product_id: extractProductId(event?.products?.[0]?.id) || \"\",\n product_vendor: sanitizeString(event?.products?.[0]?.vendor) ?? \"\",\n product_price: roundToTwo(event?.products?.[0]?.price) ?? null,\n product_sku: sanitizeString(event?.products?.[0]?.sku) ?? \"\",\n };\n\n await sendEvent(eventData);\n } catch (error) {\n console.error(\"[ElevateAB] Error handling product_viewed:\", error);\n }\n };\n\n const handleProductAddedToCart = async (event: any) => {\n try {\n const state = initializeState(event);\n const pixelEventId = generatePixelEventId();\n const baseData = createBaseEventData(\n \"product_added_to_cart\",\n pixelEventId,\n event,\n state,\n );\n\n const eventData: EventPayload = {\n ...baseData,\n product_id:\n extractProductId(event?.currentLine?.merchandise?.product?.id) ??\n \"\",\n variant_id:\n extractProductVariantId(event?.currentLine?.merchandise?.id) ??\n \"\",\n product_vendor:\n sanitizeString(\n event?.currentLine?.merchandise?.product?.vendor,\n ) ?? \"\",\n product_price:\n roundToTwo(event?.currentLine?.cost?.totalAmount?.amount) ?? null,\n product_quantity: event?.currentLine?.quantity ?? null,\n product_sku:\n sanitizeString(event?.currentLine?.merchandise?.sku) ?? \"\",\n };\n\n await sendEvent(eventData);\n\n // Update cart attributes with A/B test data (for order attribution)\n const cartId = event?.cart?.id;\n if (cartId && storefrontAccessToken && storeId) {\n updateCartAttributes(cartId, {\n storefrontAccessToken,\n storefrontApiUrl: `https://${storeId}/api/2025-01/graphql.json`,\n }).catch((err) => {\n console.error(\n \"[ElevateAB] Failed to update cart attributes:\",\n err,\n );\n });\n }\n } catch (error) {\n console.error(\n \"[ElevateAB] Error handling product_added_to_cart:\",\n error,\n );\n }\n };\n\n const handleProductRemovedFromCart = async (event: any) => {\n try {\n const state = initializeState(event);\n const pixelEventId = generatePixelEventId();\n const baseData = createBaseEventData(\n \"product_removed_from_cart\",\n pixelEventId,\n event,\n state,\n );\n\n const eventData: EventPayload = {\n ...baseData,\n product_id:\n extractProductId(event?.prevLine?.merchandise?.product?.id) ?? \"\",\n variant_id:\n extractProductVariantId(event?.prevLine?.merchandise?.id) ?? \"\",\n product_vendor:\n sanitizeString(event?.prevLine?.merchandise?.product?.vendor) ??\n \"\",\n product_price:\n roundToTwo(event?.prevLine?.cost?.totalAmount?.amount) ?? null,\n product_quantity: event?.prevLine?.quantity ?? null,\n product_sku:\n sanitizeString(event?.prevLine?.merchandise?.sku) ?? \"\",\n };\n\n await sendEvent(eventData);\n } catch (error) {\n console.error(\n \"[ElevateAB] Error handling product_removed_from_cart:\",\n error,\n );\n }\n };\n\n const handleCartViewed = async (event: any) => {\n try {\n const state = initializeState(event);\n const pixelEventId = generatePixelEventId();\n const baseData = createBaseEventData(\n \"cart_viewed\",\n pixelEventId,\n event,\n state,\n );\n\n const lines =\n event?.data?.cart?.lines?.nodes || event?.data?.cart?.lines || [];\n const cartProducts = lines.map((item: any) => ({\n product_id: extractProductId(item?.merchandise?.product?.id) ?? \"\",\n variant_id: extractProductVariantId(item?.merchandise?.id) ?? \"\",\n vendor: sanitizeString(item?.merchandise?.product?.vendor) ?? \"\",\n total_price: roundToTwo(item?.cost?.totalAmount?.amount) ?? null,\n quantity: item?.quantity ?? null,\n sku: sanitizeString(item?.merchandise?.sku) ?? \"\",\n }));\n\n const eventData: EventPayload = {\n ...baseData,\n cart_total_price:\n roundToTwo(event?.cart?.cost?.totalAmount?.amount) ?? null,\n cart_total_quantity: event?.cart?.totalQuantity ?? null,\n cart_items: cartProducts,\n };\n\n await sendEvent(eventData);\n } catch (error) {\n console.error(\"[ElevateAB] Error handling cart_viewed:\", error);\n }\n };\n\n const handleSearchSubmitted = async (event: any) => {\n try {\n const state = initializeState(event);\n const pixelEventId = generatePixelEventId();\n const baseData = createBaseEventData(\n \"search_submitted\",\n pixelEventId,\n event,\n state,\n );\n\n const eventData: EventPayload = {\n ...baseData,\n search_query:\n sanitizeString(event?.data?.searchResult?.query) ?? \"\",\n };\n\n await sendEvent(eventData);\n } catch (error) {\n console.error(\"[ElevateAB] Error handling search_submitted:\", error);\n }\n };\n\n const handleCheckoutStarted = async (event: any) => {\n try {\n const state = initializeState(event);\n const pixelEventId = generatePixelEventId();\n const baseData = createBaseEventData(\n \"checkout_started\",\n pixelEventId,\n event,\n state,\n );\n\n let totalQuantity = 0;\n const lineItems = event?.data?.checkout?.lineItems ?? [];\n const checkoutProducts = lineItems.map((item: any) => {\n const quantity = item?.quantity ?? 0;\n totalQuantity += quantity;\n\n const discountAllocations = item?.discountAllocations ?? [];\n const total_discount = discountAllocations?.reduce(\n (acc: number, discount: any) =>\n acc + (discount?.amount?.amount || 0),\n 0,\n );\n\n return {\n product_id: extractProductId(item?.variant?.product?.id) ?? \"\",\n variant_id: extractProductVariantId(item?.variant?.id) ?? \"\",\n vendor: sanitizeString(item?.variant?.product?.vendor) ?? \"\",\n total_price: roundToTwo(item?.finalLinePrice?.amount) ?? null,\n quantity: quantity,\n sku: sanitizeString(item?.variant?.sku) ?? \"\",\n total_discount: roundToTwo(total_discount) ?? null,\n };\n });\n\n const eventData: EventPayload = {\n ...baseData,\n cart_total_price:\n roundToTwo(event?.data?.checkout?.totalPrice?.amount) ?? null,\n cart_subtotal_price:\n roundToTwo(event?.data?.checkout?.subtotalPrice?.amount) ?? null,\n cart_total_quantity: totalQuantity,\n cart_shipping_price:\n roundToTwo(event?.data?.checkout?.shippingLine?.price?.amount) ??\n null,\n cart_tax_amount:\n roundToTwo(event?.data?.checkout?.totalTax?.amount) ?? null,\n cart_discount_amount:\n roundToTwo(event?.data?.checkout?.discountsAmount?.amount) ??\n null,\n cart_items: checkoutProducts,\n customer_id: event?.data?.checkout?.order?.customer?.id ?? \"\",\n };\n\n await sendEvent(eventData);\n } catch (error) {\n console.error(\"[ElevateAB] Error handling checkout_started:\", error);\n }\n };\n\n const handleCheckoutCompleted = async (event: any) => {\n try {\n const state = initializeState(event);\n const pixelEventId = generatePixelEventId();\n const baseData = createBaseEventData(\n \"checkout_completed\",\n pixelEventId,\n event,\n state,\n );\n\n let totalQuantity = 0;\n const lineItems = event?.data?.checkout?.lineItems ?? [];\n const checkoutProducts = lineItems.map((item: any) => {\n const quantity = item?.quantity ?? 0;\n totalQuantity += quantity;\n\n const discountAllocations = item?.discountAllocations ?? [];\n const total_discount = discountAllocations?.reduce(\n (acc: number, discount: any) =>\n acc + (discount?.amount?.amount || 0),\n 0,\n );\n\n return {\n product_id: extractProductId(item?.variant?.product?.id) ?? \"\",\n variant_id: extractProductVariantId(item?.variant?.id) ?? \"\",\n vendor: sanitizeString(item?.variant?.product?.vendor) ?? \"\",\n total_price: roundToTwo(item?.finalLinePrice?.amount) ?? null,\n quantity: quantity,\n sku: sanitizeString(item?.variant?.sku) ?? \"\",\n total_discount: roundToTwo(total_discount) ?? null,\n };\n });\n\n const eventData: EventPayload = {\n ...baseData,\n cart_total_price:\n roundToTwo(event?.data?.checkout?.totalPrice?.amount) ?? null,\n cart_subtotal_price:\n roundToTwo(event?.data?.checkout?.subtotalPrice?.amount) ?? null,\n cart_total_quantity: totalQuantity,\n cart_shipping_price:\n roundToTwo(event?.data?.checkout?.shippingLine?.price?.amount) ??\n null,\n cart_tax_amount:\n roundToTwo(event?.data?.checkout?.totalTax?.amount) ?? null,\n cart_discount_amount:\n roundToTwo(event?.data?.checkout?.discountsAmount?.amount) ??\n null,\n cart_items: checkoutProducts,\n order_id: event?.data?.checkout?.order?.id ?? \"\",\n customer_id: event?.data?.checkout?.order?.customer?.id ?? \"\",\n is_first_order:\n event?.data?.checkout?.order?.customer?.isFirstOrder ?? null,\n note_attributes: event?.data?.checkout?.attributes ?? [],\n };\n\n // Send to orders worker (different endpoint)\n await sendOrderEvent(eventData);\n } catch (error) {\n console.error(\n \"[ElevateAB] Error handling checkout_completed:\",\n error,\n );\n }\n };\n\n // Send event to orders CloudFlare Worker (for checkout_completed)\n const sendOrderEvent = async (data: EventPayload) => {\n if (data.exclude) return;\n\n try {\n const response = await fetch(ordersWorkerUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n keepalive: true,\n });\n\n if (!response.ok) {\n throw new Error(`Orders worker error: ${response.status}`);\n }\n\n return response;\n } catch (error) {\n console.error(\"[ElevateAB] Error sending order analytics:\", error);\n }\n };\n\n // Subscribe to events\n subscribe(\"page_viewed\", handlePageViewed);\n subscribe(\"product_viewed\", handleProductViewed);\n subscribe(\"product_added_to_cart\", handleProductAddedToCart);\n subscribe(\"product_removed_from_cart\", handleProductRemovedFromCart);\n subscribe(\"cart_viewed\", handleCartViewed);\n subscribe(\"search_submitted\", handleSearchSubmitted);\n subscribe(\"checkout_started\", handleCheckoutStarted);\n subscribe(\"checkout_completed\", handleCheckoutCompleted);\n };\n\n setupAnalytics();\n ready();\n }, [\n subscribe,\n ready,\n storeId,\n hasLocalizedPaths,\n storefrontAccessToken,\n workerUrl,\n ordersWorkerUrl,\n ]);\n\n return null;\n}\n"],"mappings":"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","names":["require_ua_parser","__commonJSMin","exports","module","window","undefined","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","EDGE","FIREFOX","GOOGLE","HONOR","HUAWEI","LENOVO","LG","MICROSOFT","MOTOROLA","NVIDIA","ONEPLUS","OPERA","OPPO","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","SUFFIX_BROWSER","extend","regexes","extensions","mergedRegexes","i","enumerize","arr","enums","has","str1","str2","lowerize","str","majorize","version","trim","len","rgxMapper","ua","arrays","j","k","p","q","matches","match","regex","props","strMapper","map","oldSafariMap","windowsVersionMap","UAParser","_navigator","_ua","_uach","_rgxmap","_isSelfNav","_browser","_cpu","_device","_engine","_os","$","parser","result","prop","React","ElevateContext","useElevateConfig","context","import_ua_parser_js","urlSources","sanitizeString","value","roundToTwo","num","extractProductId","gid","regex","match","extractProductVariantId","extractCartToken","cleanCartToken","cartToken","checkFacebookBrowser","userAgent","checkInstagramBrowser","checkFacebookInstagramBrowser","getBrowserName","browser","getQueryParams","parsedUrl","queryParams","key","isValidReferrerURI","uri","extractReferrerSource","host","parseReferrer","referrer","siteHostname","referrerObj","source","parseAddViewData","params","entryPage","data","entryObj","entryPath","entryQueryParams","userAgentObj","browserName","getPageTypeFromPathname","path","hasLocalizedPaths","hasNormalPath","isLocalizedHomepage","checkVisitorIdParams","searchParams","getUserAgentNoBrowser","os","device","result","useEffect","useContext","useRef","DEFAULT_WORKER_URL","DEFAULT_ORDERS_WORKER_URL","generatePixelEventId","uuidv4","transformTestFormat","testObject","variationId","testId","transformViewedTests","viewedObject","assignmentObject","ElevateAnalytics","storeIdProp","tokenProp","hasLocalizedPaths","workerUrl","ordersWorkerUrl","useAnalytics","context","useContext","ElevateContext","storeId","storefrontAccessToken","hasWarnedContextRef","useRef","useEffect","subscribe","register","ready","getVisitorId","getSessionId","currentReferrer","currentUrl","setReferrerData","initializeState","event","productPageId","extractProductId","cartToken","extractCartToken","referrer","entryPage","getReferrerData","getCookie","createBaseEventData","eventName","pixelEventId","state","userAgent","pathname","pageType","getPageTypeFromPathname","parsedData","parseAddViewData","abtlObject","getJsonCookie","abauObject","testAssignments","viewedTests","currentTimestamp","isFirstVisit","shopifyCountry","cleanCartToken","getUserAgentNoBrowser","sendEvent","data","response","error","handlePageViewed","eventData","handleProductViewed","sanitizeString","roundToTwo","handleProductAddedToCart","extractProductVariantId","cartId","updateCartAttributes","err","handleProductRemovedFromCart","handleCartViewed","baseData","cartProducts","item","handleSearchSubmitted","handleCheckoutStarted","totalQuantity","checkoutProducts","quantity","total_discount","acc","discount","handleCheckoutCompleted","sendOrderEvent"]}
@@ -0,0 +1,18 @@
1
+ "use strict";var at=Object.create;var me=Object.defineProperty;var st=Object.getOwnPropertyDescriptor;var ct=Object.getOwnPropertyNames;var ut=Object.getPrototypeOf,dt=Object.prototype.hasOwnProperty;var lt=(e,o)=>()=>(o||e((o={exports:{}}).exports,o),o.exports),pt=(e,o)=>{for(var c in o)me(e,c,{get:o[c],enumerable:!0})},De=(e,o,c,m)=>{if(o&&typeof o=="object"||typeof o=="function")for(let u of ct(o))!dt.call(e,u)&&u!==c&&me(e,u,{get:()=>o[u],enumerable:!(m=st(o,u))||m.enumerable});return e};var ke=(e,o,c)=>(c=e!=null?at(ut(e)):{},De(o||!e||!e.__esModule?me(c,"default",{value:e,enumerable:!0}):c,e)),ft=e=>De(me({},"__esModule",{value:!0}),e);var qe=lt((de,ge)=>{"use strict";(function(e,o){"use strict";var c="1.0.41",m="",u="?",E="function",w="undefined",P="object",I="string",ie="major",t="model",a="name",r="type",i="vendor",n="version",T="architecture",L="console",p="mobile",f="tablet",O="smarttv",R="wearable",Y="embedded",oe=500,ee="Amazon",$="Apple",pe="ASUS",s="BlackBerry",d="Browser",v="Chrome",k="Edge",A="Firefox",U="Google",D="Honor",_="Huawei",S="Lenovo",V="LG",X="Microsoft",z="Motorola",F="Nvidia",W="OnePlus",Q="Opera",he="OPPO",ne="Samsung",Ie="Sharp",ae="Sony",ye="Xiaomi",ve="Zebra",Se="Facebook",Ce="Chromium OS",Oe="Mac OS",Re=" Browser",it=function(g,h){var b={};for(var x in g)h[x]&&h[x].length%2===0?b[x]=h[x].concat(g[x]):b[x]=g[x];return b},fe=function(g){for(var h={},b=0;b<g.length;b++)h[g[b].toUpperCase()]=g[b];return h},Ue=function(g,h){return typeof g===I?se(h).indexOf(se(g))!==-1:!1},se=function(g){return g.toLowerCase()},ot=function(g){return typeof g===I?g.replace(/[^\d\.]/g,m).split(".")[0]:o},_e=function(g,h){if(typeof g===I)return g=g.replace(/^\s\s*/,m),typeof h===w?g:g.substring(0,oe)},ce=function(g,h){for(var b=0,x,H,M,y,l,q;b<h.length&&!l;){var xe=h[b],Ne=h[b+1];for(x=H=0;x<xe.length&&!l&&xe[x];)if(l=xe[x++].exec(g),l)for(M=0;M<Ne.length;M++)q=l[++H],y=Ne[M],typeof y===P&&y.length>0?y.length===2?typeof y[1]==E?this[y[0]]=y[1].call(this,q):this[y[0]]=y[1]:y.length===3?typeof y[1]===E&&!(y[1].exec&&y[1].test)?this[y[0]]=q?y[1].call(this,q,y[2]):o:this[y[0]]=q?q.replace(y[1],y[2]):o:y.length===4&&(this[y[0]]=q?y[3].call(this,q.replace(y[1],y[2])):o):this[y]=q||o;b+=2}},ue=function(g,h){for(var b in h)if(typeof h[b]===P&&h[b].length>0){for(var x=0;x<h[b].length;x++)if(Ue(h[b][x],g))return b===u?o:b}else if(Ue(h[b],g))return b===u?o:b;return h.hasOwnProperty("*")?h["*"]:g},nt={"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},Be={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Le={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[n,[a,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[n,[a,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[a,n],[/opios[\/ ]+([\w\.]+)/i],[n,[a,Q+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[n,[a,Q+" GX"]],[/\bopr\/([\w\.]+)/i],[n,[a,Q]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[n,[a,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[n,[a,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,/(heytap|ovi|115)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[a,n],[/quark(?:pc)?\/([-\w\.]+)/i],[n,[a,"Quark"]],[/\bddg\/([\w\.]+)/i],[n,[a,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[n,[a,"UC"+d]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[n,[a,"WeChat"]],[/konqueror\/([\w\.]+)/i],[n,[a,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[n,[a,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[n,[a,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[n,[a,"Smart Lenovo "+d]],[/(avast|avg)\/([\w\.]+)/i],[[a,/(.+)/,"$1 Secure "+d],n],[/\bfocus\/([\w\.]+)/i],[n,[a,A+" Focus"]],[/\bopt\/([\w\.]+)/i],[n,[a,Q+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[n,[a,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[n,[a,"Dolphin"]],[/coast\/([\w\.]+)/i],[n,[a,Q+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[n,[a,"MIUI"+Re]],[/fxios\/([\w\.-]+)/i],[n,[a,A]],[/\bqihoobrowser\/?([\w\.]*)/i],[n,[a,"360"]],[/\b(qq)\/([\w\.]+)/i],[[a,/(.+)/,"$1Browser"],n],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[a,/(.+)/,"$1"+Re],n],[/samsungbrowser\/([\w\.]+)/i],[n,[a,ne+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[n,[a,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[a,"Sogou Mobile"],n],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[a,n],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[a],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[n,a],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[a,Se],n],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[a,n],[/\bgsa\/([\w\.]+) .*safari\//i],[n,[a,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[n,[a,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[n,[a,v+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[a,v+" WebView"],n],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[n,[a,"Android "+d]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[a,n],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[n,[a,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[n,a],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[a,[n,ue,nt]],[/(webkit|khtml)\/([\w\.]+)/i],[a,n],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[a,"Netscape"],n],[/(wolvic|librewolf)\/([\w\.]+)/i],[a,n],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[n,[a,A+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[a,[n,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[a,[n,/master.|lts./,""]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[T,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[T,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[T,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[T,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[T,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[T,/ower/,m,se]],[/ sun4\w[;\)]/i],[[T,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[T,se]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[t,[i,ne],[r,f]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[t,[i,ne],[r,p]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[t,[i,$],[r,p]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[t,[i,$],[r,f]],[/(macintosh);/i],[t,[i,$]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[t,[i,Ie],[r,p]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[t,[i,D],[r,f]],[/honor([-\w ]+)[;\)]/i],[t,[i,D],[r,p]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[t,[i,_],[r,f]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[t,[i,_],[r,p]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[t,/_/g," "],[i,ye],[r,f]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i,/ ([\w ]+) miui\/v?\d/i],[[t,/_/g," "],[i,ye],[r,p]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[t,[i,he],[r,p]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[t,[i,ue,{OnePlus:["304","403","203"],"*":he}],[r,f]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[t,[i,"Vivo"],[r,p]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[t,[i,"Realme"],[r,p]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[t,[i,z],[r,p]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[t,[i,z],[r,f]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[t,[i,V],[r,f]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,/\blg-?([\d\w]+) bui/i],[t,[i,V],[r,p]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[t,[i,S],[r,f]],[/(nokia) (t[12][01])/i],[i,t,[r,f]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[t,/_/g," "],[r,p],[i,"Nokia"]],[/(pixel (c|tablet))\b/i],[t,[i,U],[r,f]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[t,[i,U],[r,p]],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[t,[i,ae],[r,p]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[t,"Xperia Tablet"],[i,ae],[r,f]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[t,[i,W],[r,p]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[t,[i,ee],[r,f]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[t,/(.+)/g,"Fire Phone $1"],[i,ee],[r,p]],[/(playbook);[-\w\),; ]+(rim)/i],[t,i,[r,f]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[t,[i,s],[r,p]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[t,[i,pe],[r,f]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[t,[i,pe],[r,p]],[/(nexus 9)/i],[t,[i,"HTC"],[r,f]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[i,[t,/_/g," "],[r,p]],[/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i],[t,[i,"TCL"],[r,f]],[/(itel) ((\w+))/i],[[i,se],t,[r,ue,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[t,[i,"Acer"],[r,f]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[t,[i,"Meizu"],[r,p]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[t,[i,"Ulefone"],[r,p]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[t,[i,"Energizer"],[r,p]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[t,[i,"Cat"],[r,p]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[t,[i,"Smartfren"],[r,p]],[/droid.+; (a(?:015|06[35]|142p?))/i],[t,[i,"Nothing"],[r,p]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[t,[i,"Archos"],[r,f]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[t,[i,"Archos"],[r,p]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[i,t,[r,f]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (hmd|imo) ([\w ]+?)(?: bui|\))/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,/(oppo) ?([\w ]+) bui/i],[i,t,[r,p]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[i,t,[r,f]],[/(surface duo)/i],[t,[i,X],[r,f]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[t,[i,"Fairphone"],[r,p]],[/(u304aa)/i],[t,[i,"AT&T"],[r,p]],[/\bsie-(\w*)/i],[t,[i,"Siemens"],[r,p]],[/\b(rct\w+) b/i],[t,[i,"RCA"],[r,f]],[/\b(venue[\d ]{2,7}) b/i],[t,[i,"Dell"],[r,f]],[/\b(q(?:mv|ta)\w+) b/i],[t,[i,"Verizon"],[r,f]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[t,[i,"Barnes & Noble"],[r,f]],[/\b(tm\d{3}\w+) b/i],[t,[i,"NuVision"],[r,f]],[/\b(k88) b/i],[t,[i,"ZTE"],[r,f]],[/\b(nx\d{3}j) b/i],[t,[i,"ZTE"],[r,p]],[/\b(gen\d{3}) b.+49h/i],[t,[i,"Swiss"],[r,p]],[/\b(zur\d{3}) b/i],[t,[i,"Swiss"],[r,f]],[/\b((zeki)?tb.*\b) b/i],[t,[i,"Zeki"],[r,f]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[i,"Dragon Touch"],t,[r,f]],[/\b(ns-?\w{0,9}) b/i],[t,[i,"Insignia"],[r,f]],[/\b((nxa|next)-?\w{0,9}) b/i],[t,[i,"NextBook"],[r,f]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[i,"Voice"],t,[r,p]],[/\b(lvtel\-)?(v1[12]) b/i],[[i,"LvTel"],t,[r,p]],[/\b(ph-1) /i],[t,[i,"Essential"],[r,p]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[t,[i,"Envizen"],[r,f]],[/\b(trio[-\w\. ]+) b/i],[t,[i,"MachSpeed"],[r,f]],[/\btu_(1491) b/i],[t,[i,"Rotor"],[r,f]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[t,[i,F],[r,f]],[/(sprint) (\w+)/i],[i,t,[r,p]],[/(kin\.[onetw]{3})/i],[[t,/\./g," "],[i,X],[r,p]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[t,[i,ve],[r,f]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[t,[i,ve],[r,p]],[/smart-tv.+(samsung)/i],[i,[r,O]],[/hbbtv.+maple;(\d+)/i],[[t,/^/,"SmartTV"],[i,ne],[r,O]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[i,V],[r,O]],[/(apple) ?tv/i],[i,[t,$+" TV"],[r,O]],[/crkey/i],[[t,v+"cast"],[i,U],[r,O]],[/droid.+aft(\w+)( bui|\))/i],[t,[i,ee],[r,O]],[/(shield \w+ tv)/i],[t,[i,F],[r,O]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[t,[i,Ie],[r,O]],[/(bravia[\w ]+)( bui|\))/i],[t,[i,ae],[r,O]],[/(mi(tv|box)-?\w+) bui/i],[t,[i,ye],[r,O]],[/Hbbtv.*(technisat) (.*);/i],[i,t,[r,O]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[i,_e],[t,_e],[r,O]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[t,[r,O]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[r,O]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[i,t,[r,L]],[/droid.+; (shield)( bui|\))/i],[t,[i,F],[r,L]],[/(playstation \w+)/i],[t,[i,ae],[r,L]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[t,[i,X],[r,L]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[t,[i,ne],[r,R]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[i,t,[r,R]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[t,[i,he],[r,R]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[t,[i,$],[r,R]],[/(opwwe\d{3})/i],[t,[i,W],[r,R]],[/(moto 360)/i],[t,[i,z],[r,R]],[/(smartwatch 3)/i],[t,[i,ae],[r,R]],[/(g watch r)/i],[t,[i,V],[r,R]],[/droid.+; (wt63?0{2,3})\)/i],[t,[i,ve],[r,R]],[/droid.+; (glass) \d/i],[t,[i,U],[r,R]],[/(pico) (4|neo3(?: link|pro)?)/i],[i,t,[r,R]],[/; (quest( \d| pro)?)/i],[t,[i,Se],[r,R]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[i,[r,Y]],[/(aeobc)\b/i],[t,[i,ee],[r,Y]],[/(homepod).+mac os/i],[t,[i,$],[r,Y]],[/windows iot/i],[[r,Y]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[t,[r,p]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[t,[r,f]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[r,f]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[r,p]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[t,[i,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[n,[a,k+"HTML"]],[/(arkweb)\/([\w\.]+)/i],[a,n],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[n,[a,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[a,n],[/ladybird\//i],[[a,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[n,a]],os:[[/microsoft (windows) (vista|xp)/i],[a,n],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[a,[n,ue,Be]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[n,ue,Be],[a,"Windows"]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[n,/_/g,"."],[a,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[a,Oe],[n,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[n,a],[/(ubuntu) ([\w\.]+) like android/i],[[a,/(.+)/,"$1 Touch"],n],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i],[a,n],[/\(bb(10);/i],[n,[a,s]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[n,[a,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[n,[a,A+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[n,[a,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[n,[a,"watchOS"]],[/crkey\/([\d\.]+)/i],[n,[a,v+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[a,Ce],n],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[a,n],[/(sunos) ?([\w\.\d]*)/i],[[a,"Solaris"],n],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[a,n]]},N=function(g,h){if(typeof g===P&&(h=g,g=o),!(this instanceof N))return new N(g,h).getResult();var b=typeof e!==w&&e.navigator?e.navigator:o,x=g||(b&&b.userAgent?b.userAgent:m),H=b&&b.userAgentData?b.userAgentData:o,M=h?it(Le,h):Le,y=b&&b.userAgent==x;return this.getBrowser=function(){var l={};return l[a]=o,l[n]=o,ce.call(l,x,M.browser),l[ie]=ot(l[n]),y&&b&&b.brave&&typeof b.brave.isBrave==E&&(l[a]="Brave"),l},this.getCPU=function(){var l={};return l[T]=o,ce.call(l,x,M.cpu),l},this.getDevice=function(){var l={};return l[i]=o,l[t]=o,l[r]=o,ce.call(l,x,M.device),y&&!l[r]&&H&&H.mobile&&(l[r]=p),y&&l[t]=="Macintosh"&&b&&typeof b.standalone!==w&&b.maxTouchPoints&&b.maxTouchPoints>2&&(l[t]="iPad",l[r]=f),l},this.getEngine=function(){var l={};return l[a]=o,l[n]=o,ce.call(l,x,M.engine),l},this.getOS=function(){var l={};return l[a]=o,l[n]=o,ce.call(l,x,M.os),y&&!l[a]&&H&&H.platform&&H.platform!="Unknown"&&(l[a]=H.platform.replace(/chrome os/i,Ce).replace(/macos/i,Oe)),l},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return x},this.setUA=function(l){return x=typeof l===I&&l.length>oe?_e(l,oe):l,this},this.setUA(x),this};N.VERSION=c,N.BROWSER=fe([a,n,ie]),N.CPU=fe([T]),N.DEVICE=fe([t,i,r,L,p,O,f,R,Y]),N.ENGINE=N.OS=fe([a,n]),typeof de!==w?(typeof ge!==w&&ge.exports&&(de=ge.exports=N),de.UAParser=N):typeof define===E&&define.amd?define(function(){return N}):typeof e!==w&&(e.UAParser=N);var te=typeof e!==w&&(e.jQuery||e.Zepto);if(te&&!te.ua){var be=new N;te.ua=be.getResult(),te.ua.get=function(){return be.getUA()},te.ua.set=function(g){be.setUA(g);var h=be.getResult();for(var b in h)te.ua[b]=h[b]}}})(typeof window=="object"?window:de)});var Pt={};pt(Pt,{ElevateHydrogenAnalytics:()=>rt});module.exports=ft(Pt);var et=ke(require("react"),1),tt=require("@shopify/hydrogen");var Z=require("react");var Ve=ke(require("react"),1),Me=Ve.default.createContext(null);var Ae=ke(qe(),1),je={"facebook.com":"Facebook","fb.me":"Facebook","m.facebook.com":"Facebook","l.facebook.com":"Facebook","lm.facebook.com":"Facebook","instagram.com":"Instagram","l.instagram.com":"Instagram","youtube.com":"Youtube","youtu.be":"Youtube","m.youtube.com":"Youtube","bing.com":"Bing","www.bing.com":"Bing","msnbc.msn.com":"Bing","dizionario.it.msn.com":"Bing","cc.bingj.com":"Bing","m.bing.com":"Bing","twitter.com":"Twitter","t.co":"Twitter"};function B(e){return typeof e!="string"?String(e):e.replace(/[\\"'`\x00-\x1F\x7F]/g,"")}function C(e){if(e==null)return null;let o=typeof e=="string"?parseFloat(e):Number(e);return isNaN(o)?null:+(Math.round(+(o+"e2"))+"e-2")}function J(e){if(!e)return null;let o=/gid:\/\/shopify\/Product\/(\d+)/,c=e.match(o);return c?c[1]:null}function re(e){if(!e)return null;let o=/gid:\/\/shopify\/ProductVariant\/(\d+)/,c=e.match(o);return c?c[1]:null}function ze(e){if(!e)return null;let o=/gid:\/\/shopify\/Cart\/([^?]+(\?.+)?)/,c=e.match(o);return c?c[1]:null}function Fe(e){try{return typeof e!="string"?null:decodeURIComponent(e).split("?")[0]}catch{return e||null}}function bt(e){if(!e)return"";switch(e){case"Mobile Safari":return"Safari";case"Chrome Mobile":case"Chrome Mobile iOS":return"Chrome";case"Firefox Mobile":case"Firefox Mobile iOS":return"Firefox";case"Opera Mobile":case"Opera Mini":case"Opera Mini iOS":return"Opera";case"Yandex Browser Lite":return"Yandex Browser";case"Chrome Webview":case"Mobile App":return"Mobile App";default:return e}}function mt(e){let o={};return e.searchParams.forEach((c,m)=>{o[m]||(o[m]=c)}),o}function gt(e){return!!e.host&&["http:","https:"].includes(e.protocol)}function wt(e){return e.replace(/^www\./,"")}function ht(e,o,c){if(o&&{Facebook:"Facebook",Instagram:"Instagram"}[o])return o;let u,E;try{if(e&&e.trim()!=="")u=new URL(e);else return"Direct";if(u?.hostname&&gt(u)){if(E=u.hostname,c&&c===E)return"Direct"}else return""}catch{}if(!E)return"";let w=wt(E);return w?je[w]?je[w]:w?.includes("google")?"Google":w:""}function He(e){let{referrer:o,entryPage:c,userAgent:m}=e,u={referrer_source:"",browser_info:"",os_info:"",device_type:"",page_entry_path:"",utm_medium:"",utm_source:"",utm_campaign:"",utm_content:"",utm_term:"",referrer_url:o||"",gclid:"",fbclid:"",pins_campaign_id:"",epik:""};try{let E;if(c&&c.trim()!==""&&c.startsWith("http"))try{let w=new URL(c),P=w?.pathname;E=w?.hostname,P&&(u.page_entry_path=P??"");let I=mt(w);u.utm_medium=I.utm_medium??"",u.utm_source=I.utm_source??"",u.utm_campaign=I.utm_campaign??"",u.utm_content=I.utm_content??"",u.utm_term=I.utm_term??"",u.gclid=I.gclid??"",u.fbclid=I.fbclid??"",u.pins_campaign_id=I.pins_campaign_id??"",u.epik=I.epik??""}catch{}if(m){let w=(0,Ae.UAParser)(m),P=w?.browser?.name,I=bt(P);u.browser_info=I??"",u.os_info=w?.os?.name??"",m&&(u.device_type=(w?.device?.type||"desktop")?.toUpperCase()??"")}return u.referrer_source=ht(o,u?.browser_info,E)??"",u}catch{return u}}function $e(e,o){let c=e==="/"||e==="",u=o&&/^\/[a-z]{2}(-[a-z]{2})?\/?$/i.test(e);return c||u?"index":/\/products\//.test(e)?"product":/\/collections\//.test(e)?"collection":/\/pages\//.test(e)?"page":/\/search/.test(e)?"search":/\/cart/.test(e)?"cart":/\/checkouts\//.test(e)?"checkout":"unknown"}function We(e){if(!e)return"";try{let o=(0,Ae.UAParser)(e),c=o?.os,m=o?.device,u="";return c?.name&&(u+=c.name,c.version&&(u+=` ${c.version}`)),m?.type&&(u+=u?` (${m.type})`:m.type),m?.vendor&&(u+=u?` ${m.vendor}`:m.vendor),m?.model&&(u+=u?` ${m.model}`:m.model),u||e}catch{return e}}function we(){try{if(typeof window<"u"&&window.crypto&&window.crypto.getRandomValues){let e=new Uint8Array(16);window.crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let o=Array.from(e).map(c=>c.toString(16).padStart(2,"0"));return[o.slice(0,4).join(""),o.slice(4,6).join(""),o.slice(6,8).join(""),o.slice(8,10).join(""),o.slice(10,16).join("")].join("-")}}catch(e){console.warn("[ElevateAB] Crypto UUID generation failed, falling back to Math.random()",e)}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let o=Math.random()*16|0;return(e==="x"?o:o&3|8).toString(16)})}function Je(e,o){if(typeof document>"u")return;let c=new Date;c.setTime(c.getTime()+365*24*60*60*1e3);let m="; expires="+c.toUTCString();document.cookie=e+"="+(o||"")+m+"; path=/"}function j(e){if(typeof document>"u")return null;let o=e+"=",c=document.cookie.split(";");for(let m=0;m<c.length;m++){let u=c[m];for(;u.charAt(0)===" ";)u=u.substring(1,u.length);if(u.indexOf(o)===0)return u.substring(o.length,u.length)}return null}function K(e){let o=j(e);if(o)try{return JSON.parse(o)}catch(c){return console.error("[ElevateAB] Error parsing JSON from cookie",c),null}return null}function Ee(e,o){typeof sessionStorage>"u"||sessionStorage.setItem(e,JSON.stringify(o))}function le(e){return typeof sessionStorage>"u"?null:sessionStorage.getItem(e)}function yt(){let e=j("eabUserId");return e||(e=we(),Je("eabUserId",e)),e}function Te(){return yt()}function vt(){let e=le("eabSessionId");return e||(e=we(),Ee("eabSessionId",e)),e}function Pe(){return vt()}function Ge(e,o){if(typeof sessionStorage>"u")return;let c=le("eabReferrer"),m=le("eabEntry");c||Ee("eabReferrer",e),m||Ee("eabEntry",o)}function Ye(){return{referrer:le("eabReferrer")||"",entryPage:le("eabEntry")||""}}function Xe(){return K("ABTL")||{}}var Qe=`#graphql
2
+ mutation cartAttributesUpdate($cartId: ID!, $attributes: [AttributeInput!]!) {
3
+ cartAttributesUpdate(cartId: $cartId, attributes: $attributes) {
4
+ cart {
5
+ id
6
+ attributes {
7
+ key
8
+ value
9
+ }
10
+ }
11
+ userErrors {
12
+ field
13
+ message
14
+ }
15
+ }
16
+ }
17
+ `;function _t(){let e=Xe(),o=K("ABAU")||{},c=j("eabUserId"),m=j("eabUserPreview")==="true",u=j("abtid"),E={};for(let P in e)o[P]&&(E[P]=e[P]);let w=[{key:"_eabTestsList",value:JSON.stringify(E)},{key:"_eabUserId",value:c||""},{key:"_eabList",value:JSON.stringify(e)}];return m&&u&&w.push({key:"_eabPreviewTest",value:u}),w}async function Ke(e,o={}){if(typeof window>"u")return{success:!1,error:"Not in browser environment"};if(!o.storefrontAccessToken&&!o.storefrontApiUrl)return console.warn("[ElevateAB] Missing storefrontAccessToken. For Next.js/non-Hydrogen stores, you must provide a Storefront Access Token. This token is SAFE to use client-side - it's a public token with limited permissions. Get it from: Shopify Admin \u2192 Settings \u2192 Apps \u2192 Develop apps"),{success:!1,error:"Missing storefrontAccessToken. Required for direct Storefront API calls."};try{let c=_t(),m=e.startsWith("gid://")?e:`gid://shopify/Cart/${e}`,u=o.storefrontApiUrl||`https://${xt()}/api/2025-01/graphql.json`,E=await fetch(u,{method:"POST",headers:{"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":o.storefrontAccessToken},body:JSON.stringify({query:Qe,variables:{cartId:m,attributes:c}})});if(!E.ok)throw new Error(`HTTP error! status: ${E.status}`);let w=await E.json();if(w.errors||w.data?.cartAttributesUpdate?.userErrors?.length>0){let P=w.errors?.[0]?.message||w.data?.cartAttributesUpdate?.userErrors?.[0]?.message||"Unknown error";return console.error("[ElevateAB] Cart attributes update failed:",P),{success:!1,error:P}}return{success:!0}}catch(c){return console.error("[ElevateAB] Error updating cart attributes:",c),{success:!1,error:c instanceof Error?c.message:"Unknown error"}}}function xt(){return typeof window>"u"?"":window.location.hostname}var kt="https://bitter-river-9c62.support-67d.workers.dev",At="https://d339co84ntxcme.cloudfront.net/Prod/orders";function G(){return`sh-${we()}`}function Et(e){return Object.entries(e).filter(([,o])=>typeof o=="string").map(([o,c])=>({test_id:o,variant_id:c}))}function Tt(e,o){return Object.entries(e).filter(([c])=>typeof o[c]=="string").map(([c])=>({test_id:c,variant_id:o[c]}))}function Ze({storeId:e,storefrontAccessToken:o,hasLocalizedPaths:c,workerUrl:m=kt,ordersWorkerUrl:u=At,useAnalytics:E}){let w=(0,Z.useContext)(Me),P=e||w?.storeId||"",I=o||w?.storefrontAccessToken,ie=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{!w&&!e&&!ie.current&&(ie.current=!0,console.error("[ElevateAB] ElevateAnalytics must be used inside ElevateProvider, or you must pass storeId as a prop."))},[w,e]);let{subscribe:t,register:a}=E(),{ready:r}=a("Elevate Analytics");return(0,Z.useEffect)(()=>{if(typeof window>"u")return;if(Te(),Pe(),typeof document<"u"){let n=document.referrer||"",T=window.location.href;Ge(n,T)}(()=>{let n=s=>{let d=J(s.products?.[0]?.id);d&&typeof localStorage<"u"?localStorage.setItem("eabProductPageId",d):typeof window<"u"&&!window.location.pathname.includes("/products/")&&localStorage?.removeItem("eabProductPageId");let v=ze(typeof localStorage<"u"?localStorage.getItem("shopifyCartId"):null),{referrer:k,entryPage:A}=Ye();return{visitorId:Te(),sessionId:Pe(),cartToken:v||j("cart")||"",referrer:k,entryPage:A,clientId:j("_shopify_y"),rootRoute:typeof localStorage<"u"&&localStorage.getItem("eabRootRoute")||"",productPageId:typeof localStorage<"u"&&localStorage.getItem("eabProductPageId")||""}},T=(s,d,v,k)=>{let A=typeof navigator<"u"?navigator.userAgent:"",U=v?.url?new URL(v.url).pathname:typeof window<"u"?window.location.pathname:"",D=$e(U,c),_=He({referrer:k.referrer,entryPage:k.entryPage,userAgent:A}),S=K("ABTL")||{},V=K("ABAU")||{},X=Et(S),z=Tt(V,S),F=new Date().toISOString(),W=typeof sessionStorage<"u"?sessionStorage.getItem("eabIsFirstVisit")==="true":!1,Q=j("localization")||"";return{pixel_event_id:d,shop_name:P,timestamp:F,event_type:s,client_id:k.clientId,visitor_id:k.visitorId,session_id:k.sessionId,cart_token:Fe(k.cartToken),page_url:v.context?.document?.location?.href||(typeof window<"u"?window.location.href:""),page_pathname:U,page_search:v.context?.document?.location?.search||(typeof window<"u"?window.location.search:""),referrer_url:k.referrer,referrer_source:_?.referrer_source,previous_page:typeof document<"u"?document.referrer:"",page_entry:k.entryPage,page_entry_path:_?.page_entry_path,page_type:D,utm_medium:_?.utm_medium,utm_source:_?.utm_source,utm_campaign:_?.utm_campaign,utm_content:_?.utm_content,utm_term:_?.utm_term,gclid:_?.gclid,fbclid:_?.fbclid,pins_campaign_id:_?.pins_campaign_id,epik:_?.epik,browser_info:_?.browser_info,os_info:_?.os_info,device_type:_?.device_type,language:v.context?.navigator?.language||(typeof navigator<"u"?navigator.language:""),root_route:k.rootRoute,user_agent:A,user_agent_no_browser:We(A),is_first_visit:W,shopify_country:Q,cart_currency:v.shop?.currency,ab_test_assignments:X,ab_test_views:z,is_first_order:null}},L=async s=>{if(!s.exclude)try{let d=await fetch(m,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s),keepalive:!0});if(!d.ok)throw new Error(`Worker error: ${d.status}`);return d}catch(d){console.error("[ElevateAB] Error sending analytics:",d)}},p=async s=>{try{let d=n(s),v=G(),k=T("page_viewed",v,s,d);await L(k)}catch(d){console.error("[ElevateAB] Error handling page_viewed:",d)}},f=async s=>{try{let d=n(s),v=G(),A={...T("product_viewed",v,s,d),product_id:J(s?.products?.[0]?.id)||"",product_vendor:B(s?.products?.[0]?.vendor)??"",product_price:C(s?.products?.[0]?.price)??null,product_sku:B(s?.products?.[0]?.sku)??""};await L(A)}catch(d){console.error("[ElevateAB] Error handling product_viewed:",d)}},O=async s=>{try{let d=n(s),v=G(),A={...T("product_added_to_cart",v,s,d),product_id:J(s?.currentLine?.merchandise?.product?.id)??"",variant_id:re(s?.currentLine?.merchandise?.id)??"",product_vendor:B(s?.currentLine?.merchandise?.product?.vendor)??"",product_price:C(s?.currentLine?.cost?.totalAmount?.amount)??null,product_quantity:s?.currentLine?.quantity??null,product_sku:B(s?.currentLine?.merchandise?.sku)??""};await L(A);let U=s?.cart?.id;U&&I&&P&&Ke(U,{storefrontAccessToken:I,storefrontApiUrl:`https://${P}/api/2025-01/graphql.json`}).catch(D=>{console.error("[ElevateAB] Failed to update cart attributes:",D)})}catch(d){console.error("[ElevateAB] Error handling product_added_to_cart:",d)}},R=async s=>{try{let d=n(s),v=G(),A={...T("product_removed_from_cart",v,s,d),product_id:J(s?.prevLine?.merchandise?.product?.id)??"",variant_id:re(s?.prevLine?.merchandise?.id)??"",product_vendor:B(s?.prevLine?.merchandise?.product?.vendor)??"",product_price:C(s?.prevLine?.cost?.totalAmount?.amount)??null,product_quantity:s?.prevLine?.quantity??null,product_sku:B(s?.prevLine?.merchandise?.sku)??""};await L(A)}catch(d){console.error("[ElevateAB] Error handling product_removed_from_cart:",d)}},Y=async s=>{try{let d=n(s),v=G(),k=T("cart_viewed",v,s,d),U=(s?.data?.cart?.lines?.nodes||s?.data?.cart?.lines||[]).map(_=>({product_id:J(_?.merchandise?.product?.id)??"",variant_id:re(_?.merchandise?.id)??"",vendor:B(_?.merchandise?.product?.vendor)??"",total_price:C(_?.cost?.totalAmount?.amount)??null,quantity:_?.quantity??null,sku:B(_?.merchandise?.sku)??""})),D={...k,cart_total_price:C(s?.cart?.cost?.totalAmount?.amount)??null,cart_total_quantity:s?.cart?.totalQuantity??null,cart_items:U};await L(D)}catch(d){console.error("[ElevateAB] Error handling cart_viewed:",d)}},oe=async s=>{try{let d=n(s),v=G(),A={...T("search_submitted",v,s,d),search_query:B(s?.data?.searchResult?.query)??""};await L(A)}catch(d){console.error("[ElevateAB] Error handling search_submitted:",d)}},ee=async s=>{try{let d=n(s),v=G(),k=T("checkout_started",v,s,d),A=0,D=(s?.data?.checkout?.lineItems??[]).map(S=>{let V=S?.quantity??0;A+=V;let z=(S?.discountAllocations??[])?.reduce((F,W)=>F+(W?.amount?.amount||0),0);return{product_id:J(S?.variant?.product?.id)??"",variant_id:re(S?.variant?.id)??"",vendor:B(S?.variant?.product?.vendor)??"",total_price:C(S?.finalLinePrice?.amount)??null,quantity:V,sku:B(S?.variant?.sku)??"",total_discount:C(z)??null}}),_={...k,cart_total_price:C(s?.data?.checkout?.totalPrice?.amount)??null,cart_subtotal_price:C(s?.data?.checkout?.subtotalPrice?.amount)??null,cart_total_quantity:A,cart_shipping_price:C(s?.data?.checkout?.shippingLine?.price?.amount)??null,cart_tax_amount:C(s?.data?.checkout?.totalTax?.amount)??null,cart_discount_amount:C(s?.data?.checkout?.discountsAmount?.amount)??null,cart_items:D,customer_id:s?.data?.checkout?.order?.customer?.id??""};await L(_)}catch(d){console.error("[ElevateAB] Error handling checkout_started:",d)}},$=async s=>{try{let d=n(s),v=G(),k=T("checkout_completed",v,s,d),A=0,D=(s?.data?.checkout?.lineItems??[]).map(S=>{let V=S?.quantity??0;A+=V;let z=(S?.discountAllocations??[])?.reduce((F,W)=>F+(W?.amount?.amount||0),0);return{product_id:J(S?.variant?.product?.id)??"",variant_id:re(S?.variant?.id)??"",vendor:B(S?.variant?.product?.vendor)??"",total_price:C(S?.finalLinePrice?.amount)??null,quantity:V,sku:B(S?.variant?.sku)??"",total_discount:C(z)??null}}),_={...k,cart_total_price:C(s?.data?.checkout?.totalPrice?.amount)??null,cart_subtotal_price:C(s?.data?.checkout?.subtotalPrice?.amount)??null,cart_total_quantity:A,cart_shipping_price:C(s?.data?.checkout?.shippingLine?.price?.amount)??null,cart_tax_amount:C(s?.data?.checkout?.totalTax?.amount)??null,cart_discount_amount:C(s?.data?.checkout?.discountsAmount?.amount)??null,cart_items:D,order_id:s?.data?.checkout?.order?.id??"",customer_id:s?.data?.checkout?.order?.customer?.id??"",is_first_order:s?.data?.checkout?.order?.customer?.isFirstOrder??null,note_attributes:s?.data?.checkout?.attributes??[]};await pe(_)}catch(d){console.error("[ElevateAB] Error handling checkout_completed:",d)}},pe=async s=>{if(!s.exclude)try{let d=await fetch(u,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s),keepalive:!0});if(!d.ok)throw new Error(`Orders worker error: ${d.status}`);return d}catch(d){console.error("[ElevateAB] Error sending order analytics:",d)}};t("page_viewed",p),t("product_viewed",f),t("product_added_to_cart",O),t("product_removed_from_cart",R),t("cart_viewed",Y),t("search_submitted",oe),t("checkout_started",ee),t("checkout_completed",$)})(),r()},[t,r,P,c,I,m,u]),null}function rt(e={}){return et.default.createElement(Ze,{...e,useAnalytics:tt.useAnalytics})}0&&(module.exports={ElevateHydrogenAnalytics});
18
+ //# sourceMappingURL=hydrogen.cjs.map