{"version":3,"file":"register.min.js","mappings":"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","sources":["webpack://ecommerce/webpack/runtime/chunk loaded","webpack://ecommerce/./src/config/config.inwild.js","webpack://ecommerce/./src/config/config.js","webpack://ecommerce/./src/config/config.production.inwild.js","webpack://ecommerce/./src/config/config.production.js","webpack://ecommerce/./src/config/config.production.runkd.js","webpack://ecommerce/./src/config/config.runkd.js","webpack://ecommerce/./src/config/config.staging.inwild.js","webpack://ecommerce/./src/config/config.staging.js","webpack://ecommerce/./src/config/config.staging.runkd.js","webpack://ecommerce/./src/config/index.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://ecommerce/./src/common/common.js","webpack://ecommerce/./src/tracing.js","webpack://ecommerce/./src/services/cookieService.js","webpack://ecommerce/./src/services/data/dataPageService.js","webpack://ecommerce/./src/services/marketingAndAnalytics/ga4Service.js","webpack://ecommerce/./src/services/marketingAndAnalytics/adsService.js","webpack://ecommerce/./src/services/marketingAndAnalytics/facebookService.js","webpack://ecommerce/./src/services/marketingAndAnalytics/marketingAndAnalyticsService.js","webpack://ecommerce/./src/common/httpService.js","webpack://ecommerce/./src/views/account/register.js","webpack://ecommerce/./src/services/captchaService.js","webpack://ecommerce/./wwwroot/js/modernizr-custom-mq.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/typeof.js","webpack://ecommerce/./node_modules/@babel/runtime/regenerator/index.js","webpack://ecommerce/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://ecommerce/webpack/bootstrap","webpack://ecommerce/webpack/runtime/compat get default export","webpack://ecommerce/webpack/runtime/define property getters","webpack://ecommerce/webpack/runtime/global","webpack://ecommerce/webpack/runtime/harmony module decorator","webpack://ecommerce/webpack/runtime/hasOwnProperty shorthand","webpack://ecommerce/webpack/runtime/make namespace object","webpack://ecommerce/webpack/runtime/node module decorator","webpack://ecommerce/webpack/runtime/runtimeId","webpack://ecommerce/webpack/runtime/jsonp chunk loading","webpack://ecommerce/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'http://localhost/JSport.RealtimeServiceWeb/api/Token',\r\n paymentHubUrl: 'http://localhost/JSport.RealtimeServiceWeb/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://d26ztvr3v93474.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.inwild.com:4433',\r\n cdnCmsAssetsUrl: 'https://d19sv9e4y8qwzh.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'http://localhost:1339',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'http://localhost/JSport.RealtimeServiceWeb/api/Token',\r\n paymentHubUrl: 'http://localhost/JSport.RealtimeServiceWeb/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://d3n8mmvj9ns1ml.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.lordgunbicycles.com:4433',\r\n cdnCmsAssetsUrl: 'https://d2umopxfu128sk.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n 'en-AU',\r\n 'ko-KR',\r\n ],\r\n cms: {\r\n cmsUrl: 'http://localhost:1337',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: false,\r\n realtime: {\r\n tokenUrl: 'https://api.inwild.com/realtime/api/Token',\r\n paymentHubUrl: 'https://api.inwild.com/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: true,\r\n cdnImagesUrl: 'https://d26ztvr3v93474.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.inwild.com:4433',\r\n cdnCmsAssetsUrl: 'https://d19sv9e4y8qwzh.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://news.inwild.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: false,\r\n realtime: {\r\n tokenUrl: 'https://api.lordgunbicycles.com/realtime/api/Token',\r\n paymentHubUrl: 'https://api.lordgunbicycles.com/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: true,\r\n cdnImagesUrl: 'https://d3n8mmvj9ns1ml.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.lordgunbicycles.com:4433',\r\n cdnCmsAssetsUrl: 'https://d2umopxfu128sk.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n 'en-AU',\r\n 'ko-KR',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://news.lordgun.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: false,\r\n realtime: {\r\n tokenUrl: 'https://api.runkd.com/realtime/api/Token',\r\n paymentHubUrl: 'https://api.runkd.com/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: true,\r\n cdnImagesUrl: 'https://dufrl78eaxiu3.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.runkd.com:4433',\r\n cdnCmsAssetsUrl: 'https://d218t1pkbrmetd.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://news.runkd.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'http://localhost/JSport.RealtimeServiceWeb/api/Token',\r\n paymentHubUrl: 'http://localhost/JSport.RealtimeServiceWeb/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://dufrl78eaxiu3.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.runkd.com:4433',\r\n cdnCmsAssetsUrl: 'https://d218t1pkbrmetd.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'http://localhost:1338',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'https://staging.lordgunbicycles.com/inwild/webapi/realtime/api/Token',\r\n paymentHubUrl: 'https://staging.lordgunbicycles.com/inwild/webapi/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://d26ztvr3v93474.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.inwild.com:4433',\r\n cdnCmsAssetsUrl: 'https://d19sv9e4y8qwzh.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://lnxtest.lordgunbicycles.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'https://staging.lordgunbicycles.com/webapi/realtime/api/Token',\r\n paymentHubUrl: 'https://staging.lordgunbicycles.com/webapi/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://d3n8mmvj9ns1ml.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.lordgunbicycles.com:4433',\r\n cdnCmsAssetsUrl: 'https://d2umopxfu128sk.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n 'en-AU',\r\n 'ko-KR',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://lnxtest.lordgunbicycles.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","module.exports = {\r\n debug: true,\r\n realtime: {\r\n tokenUrl: 'https://staging.lordgunbicycles.com/runkd/webapi/realtime/api/Token',\r\n paymentHubUrl: 'https://staging.lordgunbicycles.com/runkd/webapi/realtime/paymenthub',\r\n username: 'Admin',\r\n password: 'SignalR2020',\r\n },\r\n useCdn: false,\r\n cdnImagesUrl: 'https://dufrl78eaxiu3.cloudfront.net',\r\n cdnImagesFallbackUrl: 'https://sync.runkd.com:4433',\r\n cdnCmsAssetsUrl: 'https://d218t1pkbrmetd.cloudfront.net',\r\n supportedCultures: () => [\r\n 'it-IT',\r\n 'es-ES',\r\n 'fr-FR',\r\n 'en-GB',\r\n 'en-US',\r\n 'de-DE',\r\n ],\r\n cms: {\r\n cmsUrl: 'https://lnxtest.lordgunbicycles.com',\r\n },\r\n tracingUrl:\r\n 'https://6f569c242a3a4173b354adf56020c011@o245932.ingest.sentry.io/5905368',\r\n};\r\n","const config_lordgun = require('./config');\r\nconst config_staging_lordgun = require('./config.staging');\r\nconst config_production_lordgun = require('./config.production');\r\n// RUNKD\r\nconst config_runkd = require('./config.runkd');\r\nconst config_staging_runkd = require('./config.staging.runkd');\r\nconst config_production_runkd = require('./config.production.runkd');\r\n// INWILD\r\nconst config_inwild = require('./config.inwild');\r\nconst config_staging_inwild = require('./config.staging.inwild');\r\nconst config_production_inwild = require('./config.production.inwild');\r\n\r\nconst config = {\r\n lordgun: {\r\n development: config_lordgun,\r\n staging: config_staging_lordgun,\r\n production: config_production_lordgun,\r\n },\r\n runkd: {\r\n development: config_runkd,\r\n staging: config_staging_runkd,\r\n production: config_production_runkd,\r\n },\r\n inwild: {\r\n development: config_inwild,\r\n staging: config_staging_inwild,\r\n production: config_production_inwild,\r\n },\r\n};\r\n\r\nconst isEnvironmentSet =\r\n NODE_ENV !== null && NODE_ENV !== undefined && NODE_ENV !== '';\r\n\r\nlet environment = isEnvironmentSet\r\n ? NODE_ENV.toLowerCase().trim()\r\n : 'production';\r\n\r\nlet configObj = {\r\n getConfig: () => config[SITE.toLowerCase()][environment],\r\n};\r\n\r\nmodule.exports = configObj;\r\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","const configHelper = require('../config/index');\r\nimport { reduce, replace, isNil, some, startsWith, isEmpty } from 'lodash';\r\n\r\nrequire('../../wwwroot/js/modernizr-custom-mq.js');\r\nconst trimTrailingSlash = (virtualdir = '') => {\r\n return virtualdir.length > 0 && virtualdir[virtualdir.length - 1] === '/'\r\n ? virtualdir.slice(0, virtualdir.length - 1)\r\n : virtualdir;\r\n};\r\nconst getSiteUrl = (virtualdir = window.$pathBase) => {\r\n if (virtualdir === undefined) {\r\n throw new Error(\r\n 'common.getSiteUrl: virtualdir undefined. Should be emtpy or set.'\r\n );\r\n }\r\n if (window.location.port === '') {\r\n return trimTrailingSlash(\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n virtualdir\r\n );\r\n }\r\n return trimTrailingSlash(\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n ':' +\r\n window.location.port +\r\n virtualdir\r\n );\r\n};\r\nconst getSiteCommercialName = () => {\r\n const siteName = {\r\n lordgun: 'LordGun',\r\n runkd: 'RUNKD',\r\n inwild: 'INWILD',\r\n };\r\n return siteName[SITE.toLowerCase()];\r\n};\r\nconst contentFromCdn = ({ path, keepUrlAsIs }) => {\r\n try {\r\n if (keepUrlAsIs === true) {\r\n return path;\r\n }\r\n const config = configHelper.getConfig();\r\n const { useCdn, cdnImagesUrl, cdnImagesFallbackUrl, cms } = config;\r\n\r\n if (cms && cms.cmsUrl && !isNil(cms.cmsUrl) && !isEmpty(cms.cmsUrl)) {\r\n if (startsWith(path, cms.cmsUrl)) {\r\n return path;\r\n }\r\n }\r\n\r\n if (some([useCdn, cdnImagesUrl, cdnImagesFallbackUrl], isNil)) {\r\n throw new Error('Some config for contentFromCdn is missing');\r\n }\r\n let transformedPath = replace(path.toLowerCase(), '~', '');\r\n transformedPath = replace(\r\n transformedPath,\r\n '/content/products',\r\n '/products'\r\n );\r\n transformedPath = replace(transformedPath, '/content/kits', '/kits');\r\n transformedPath = replace(transformedPath, '/content/img/', '/img/');\r\n transformedPath = replace(transformedPath, '/content/img', '/img');\r\n transformedPath = replace(transformedPath, 'content/img/', '/img/');\r\n transformedPath = replace(transformedPath, 'content/', '');\r\n transformedPath = replace(transformedPath, cdnImagesUrl, '');\r\n transformedPath = replace(transformedPath, cdnImagesFallbackUrl, '');\r\n let siteUrl = getSiteUrl().toLowerCase();\r\n transformedPath = transformedPath.replace(siteUrl, '');\r\n transformedPath = replace(\r\n transformedPath,\r\n window.$pathBase.toLowerCase(),\r\n ''\r\n );\r\n transformedPath = transformedPath.startsWith('/')\r\n ? transformedPath.slice(1, transformedPath.length)\r\n : transformedPath;\r\n if (useCdn && startsWith(transformedPath, cdnImagesUrl.toLowerCase())) {\r\n transformedPath = replace(\r\n transformedPath,\r\n cdnImagesUrl.toLowerCase(),\r\n ''\r\n );\r\n }\r\n if (\r\n useCdn === false &&\r\n startsWith(transformedPath, cdnImagesFallbackUrl.toLowerCase())\r\n ) {\r\n transformedPath = replace(\r\n transformedPath,\r\n cdnImagesFallbackUrl.toLowerCase(),\r\n ''\r\n );\r\n }\r\n\r\n let finalPath = useCdn\r\n ? `${cdnImagesUrl}/${transformedPath}`\r\n : `${cdnImagesFallbackUrl}/${transformedPath}`;\r\n return finalPath;\r\n } catch (error) {\r\n console.error('contentFromCdn. Set content from Cdn', error);\r\n }\r\n};\r\nconst getPartnersByCulture = ({ culture, partners }) => {\r\n const items = reduce(\r\n partners,\r\n (acc, el) => {\r\n return el.Culture === culture ? acc.concat(el) : acc;\r\n },\r\n []\r\n );\r\n return reduce(\r\n items,\r\n (acc, p) => {\r\n acc.push({\r\n title: p.Name,\r\n url: p.Url,\r\n culture: p.Culture,\r\n logo: contentFromCdn({\r\n path: `/Content/img/${p.Logo}`,\r\n keepUrlAsIs: false,\r\n }),\r\n });\r\n return acc;\r\n },\r\n []\r\n );\r\n};\r\nconst getParameterByName = function (name, url = window.location.href) {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n};\r\nexport default {\r\n getSiteUrl,\r\n getLang: () => document.documentElement.lang,\r\n isTouch: () => Modernizr.touch || window.innerWidth <= 768,\r\n isDesktop: () => Modernizr.mq('(min-width: 64em)'),\r\n getSite: () => SITE.trim().toLowerCase(),\r\n getSiteCommercialName,\r\n contentFromCdn,\r\n getPartnersByCulture,\r\n getParameterByName,\r\n};\r\n","import * as Sentry from '@sentry/browser';\r\nimport { JL } from 'jsnlog';\r\nimport { Integrations } from '@sentry/tracing';\r\nimport common from './common/common';\r\nconst configHelper = require('./config/index');\r\n\r\nconst initTracing = () => {\r\n const site = common.getSite();\r\n if (configHelper.getConfig().debug === false) {\r\n Sentry.init({\r\n dsn: configHelper.getConfig().tracingUrl,\r\n integrations: [new Integrations.BrowserTracing()],\r\n\r\n // Set tracesSampleRate to 1.0 to capture 100%\r\n // of transactions for performance monitoring.\r\n // We recommend adjusting this value in production\r\n tracesSampleRate: NODE_ENV.toLowerCase() === 'development' ? 1.0 : 0.5,\r\n environment: NODE_ENV,\r\n });\r\n Sentry.setTag('SITE', site);\r\n Sentry.setTag('getSiteUrl', common.getSiteUrl());\r\n Sentry.setTag('lang', common.getLang());\r\n Sentry.setTag('isTouch', common.isTouch());\r\n Sentry.setTag('isDesktop', common.isDesktop());\r\n }\r\n};\r\nlet initializedLoggers = [];\r\nconst _initJsNlog = ({ loggerName }) => {\r\n if (initializedLoggers.indexOf(loggerName) === -1) {\r\n const defaultLoggingUrl = window.$pathBase + 'jsnlog.logger';\r\n var appender = JL.createAjaxAppender('mycustomappender.' + loggerName);\r\n var consoleAppender = JL.createConsoleAppender(\r\n 'consoleAppender.' + loggerName\r\n );\r\n appender.setOptions({\r\n bufferSize: 80,\r\n maxBatchSize: 80,\r\n url: defaultLoggingUrl,\r\n });\r\n JL.setOptions({\r\n defaultAjaxUrl: defaultLoggingUrl,\r\n });\r\n JL(loggerName).setOptions({\r\n appenders: [appender, consoleAppender],\r\n });\r\n if (typeof window !== 'undefined') {\r\n let _oldOnErrorHandler = window.onerror || null;\r\n window.onerror = function (msg, url, line, column, error) {\r\n let sourceUrl =\r\n window && window.location && window.location.href\r\n ? `${url} window.location.href: ${window.location.href}`\r\n : url;\r\n JL('onerrorLogger').fatalException(\r\n {\r\n msg: 'Uncaught Exception',\r\n errorMsg: `onerror: ${msg}`,\r\n url: sourceUrl,\r\n 'line number': line,\r\n column: column,\r\n },\r\n error\r\n );\r\n if (_oldOnErrorHandler) {\r\n // eslint-disable-next-line prefer-rest-params\r\n return _oldOnErrorHandler.apply(this, arguments);\r\n }\r\n return false;\r\n };\r\n let _oldOnUnhandledRejectionHandler =\r\n window.onunhandledrejection || null;\r\n window.onunhandledrejection = function (event) {\r\n // How to test this handler: window.setTimeout(function() {throw new Error('abc')}, 0);\r\n let sourceUrl =\r\n window && window.location && window.location.href\r\n ? ` window.location.href: ${window.location.href}`\r\n : '';\r\n let reasonMessage =\r\n event.reason && event.reason.message\r\n ? event.reason.message\r\n : '';\r\n JL('onerrorLogger').fatal(\r\n `Reason message: ${reasonMessage} SourceUrl: ${sourceUrl}`\r\n );\r\n JL('onerrorLogger').fatalException(\r\n {\r\n msg: 'unhandledrejection',\r\n errorMsg: `onunhandledrejection: ${reasonMessage} SourceUrl: ${sourceUrl}`,\r\n },\r\n event.reason\r\n );\r\n if (_oldOnUnhandledRejectionHandler) {\r\n // eslint-disable-next-line prefer-rest-params\r\n return _oldOnUnhandledRejectionHandler.apply(\r\n this,\r\n arguments\r\n );\r\n }\r\n return false;\r\n };\r\n }\r\n initializedLoggers.push(loggerName);\r\n }\r\n};\r\nconst logDebug = function (...args) {\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n JL('jsnlogfile').debug(args);\r\n};\r\nconst logInfo = function (...args) {\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n JL('jsnlogfile').info(args);\r\n};\r\nconst logEvent = function (...args) {\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n _initJsNlog({ loggerName: 'jsnlogeventfile' });\r\n JL('jsnlogeventfile').debug(args);\r\n JL('jsnlogfile').debug(args);\r\n};\r\nconst logWarn = function (...args) {\r\n console.warn(args);\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n JL('jsnlogfile').warn(args);\r\n};\r\nconst logError = function (...args) {\r\n console.error(args);\r\n _initJsNlog({ loggerName: 'jsnlogfile' });\r\n JL('jsnlogfile').error(args);\r\n};\r\nexport { initTracing, logDebug, logInfo, logWarn, logError, logEvent };\r\n","import { logError } from '../tracing';\r\nconst _defaultCookieConsent = {\r\n name: 'cookiesConsent',\r\n exists: false,\r\n firstParty: false,\r\n thirdParty: false,\r\n marketingParty: false,\r\n showBanner: true,\r\n expirationDays: 180, // 6 mesi\r\n};\r\n\r\nconst getDefaultCookieConsentValues = () => _defaultCookieConsent;\r\n\r\nconst _getCookieConsent = () => {\r\n const name = _defaultCookieConsent.name;\r\n return decodeURIComponent(\r\n document.cookie.replace(\r\n new RegExp(\r\n '(?:(?:^|.*;)\\\\s*' +\r\n encodeURIComponent(name).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') +\r\n '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'\r\n ),\r\n '$1'\r\n )\r\n );\r\n};\r\n\r\nconst existsCookieConsent = () => _getCookieConsent() || null;\r\n\r\nconst _removeCookies = (cookieNames) => {\r\n //Works only for cookie without \"httponly\" attribute\r\n if (!cookieNames || cookieNames.length === 0) return;\r\n for (var i = 0; i < cookieNames.length; i++) {\r\n var cookie = cookieNames[i];\r\n if (existsCookieConsent(cookie.name))\r\n document.cookie = btoa(\r\n `${encodeURIComponent(\r\n cookie.name\r\n )}=; expires=Thu, 01 Jan 1970 00:00:00 GMT${\r\n cookie.domain ? '; domain=' + cookie.domain : ''\r\n }; path=/`\r\n );\r\n }\r\n};\r\n\r\nconst removeCookieConsent = () =>\r\n _removeCookies([{ name: _defaultCookieConsent.name }]);\r\n\r\nconst cookiesEnabled = () => {\r\n //navigator.cookieEnabled proved to be not reliable at all\r\n return (\r\n 'cookie' in document &&\r\n (document.cookie.length > 0 ||\r\n (document.cookie = 'test').indexOf.call(document.cookie, 'test') >\r\n -1)\r\n );\r\n};\r\n\r\nconst _setCookieConsent = ({\r\n name,\r\n showBanner,\r\n firstParty,\r\n thirdParty,\r\n marketingParty,\r\n}) => {\r\n /*jshint validthis:true */\r\n const cookieName =\r\n !name || /^(?:expires|max\\-age|path|domain|secure)$/i.test(name)\r\n ? _defaultCookieConsent.name\r\n : name;\r\n\r\n var expires = '';\r\n var date = new Date();\r\n date.setTime(\r\n date.getTime() +\r\n _defaultCookieConsent.expirationDays * 24 * 60 * 60 * 1000\r\n );\r\n expires = '; expires=' + date.toUTCString();\r\n\r\n // NOTA: properties pascalCase per deserializzazione lato server!!\r\n var value = JSON.stringify({\r\n FirstParty: firstParty, // NOTA: properties pascalCase per deserializzazione lato server!!\r\n ThirdParty: thirdParty, // NOTA: properties pascalCase per deserializzazione lato server!!\r\n MarketingParty: marketingParty, // NOTA: properties pascalCase per deserializzazione lato server!!\r\n ShowBanner: showBanner, // NOTA: properties pascalCase per deserializzazione lato server!!\r\n });\r\n document.cookie =\r\n `${encodeURIComponent(cookieName)}=` +\r\n btoa(`${value}`) +\r\n `${expires}; path=/`;\r\n return true;\r\n};\r\n\r\nconst acceptAllAndDontShowBanner = () =>\r\n _setCookieConsent({\r\n showBanner: false,\r\n firstParty: true,\r\n thirdParty: true,\r\n marketingParty: true,\r\n });\r\n\r\nconst getDecodedCookieConsentValues = () => {\r\n try {\r\n const cookie = _getCookieConsent();\r\n var asciiVal = atob(cookie);\r\n let values = JSON.parse(asciiVal);\r\n return values;\r\n } catch (error) {\r\n console.error(\r\n 'getDecodedCookieValues: Cannot decode or parse cookie ',\r\n error\r\n );\r\n return null;\r\n }\r\n};\r\n\r\nconst setCookieConsent = ({\r\n showBanner,\r\n firstParty,\r\n thirdParty,\r\n marketingParty,\r\n}) => _setCookieConsent({ showBanner, firstParty, thirdParty, marketingParty });\r\n\r\nconst getMarketingParty = () => {\r\n const cookieConsentValues = getDecodedCookieConsentValues();\r\n let partyConsent =\r\n cookieConsentValues === null ||\r\n cookieConsentValues === undefined ||\r\n cookieConsentValues.MarketingParty === null ||\r\n cookieConsentValues.MarketingParty === undefined\r\n ? false\r\n : cookieConsentValues.MarketingParty === true;\r\n return partyConsent;\r\n};\r\n\r\nconst getThirdParty = () => {\r\n const cookieConsentValues = getDecodedCookieConsentValues();\r\n let partyConsent =\r\n cookieConsentValues === null ||\r\n cookieConsentValues === undefined ||\r\n cookieConsentValues.ThirdParty === null ||\r\n cookieConsentValues.ThirdParty === undefined\r\n ? false\r\n : cookieConsentValues.ThirdParty === true;\r\n return partyConsent;\r\n};\r\n\r\nconst _getCookie = function (cname) {\r\n let name = cname + '=';\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n};\r\n\r\nconst getUserProfileOptions = () => {\r\n const userProfileCookieKey = 'userProfile';\r\n try {\r\n const cookie = _getCookie(userProfileCookieKey);\r\n if (cookie) {\r\n const parsedCookie = JSON.parse(atob(cookie));\r\n return {\r\n countryCode: parsedCookie.CountryCode,\r\n currencyCode: parsedCookie.CurrencyCode,\r\n name: parsedCookie.Name,\r\n };\r\n }\r\n throw new Error(\r\n `Cookie ${userProfileCookieKey} not found, falling back to defaults`\r\n );\r\n } catch (error) {\r\n logError(`Error decoding cookie ${userProfileCookieKey}`, error);\r\n return {\r\n countryCode: 'ITA',\r\n currencyCode: 'EUR',\r\n name: userProfileCookieKey,\r\n };\r\n }\r\n};\r\n\r\nexport default {\r\n getDefaultCookieConsentValues,\r\n removeCookieConsent,\r\n existsCookieConsent,\r\n cookiesEnabled,\r\n acceptAllAndDontShowBanner,\r\n getDecodedCookieConsentValues,\r\n setCookieConsent,\r\n getMarketingParty,\r\n getThirdParty,\r\n getUserProfileOptions,\r\n};\r\n","import {\r\n logDebug,\r\n logInfo,\r\n logWarn,\r\n logError,\r\n logEvent,\r\n} from '../../tracing.js';\r\n\r\nconst validateGoogleData = (prop, defaultValue) => {\r\n if (!window.googleData) {\r\n throw new Error('window.googleData is not defined');\r\n }\r\n if (\r\n window.googleData[prop] === null ||\r\n window.googleData[prop] === undefined\r\n ) {\r\n if (defaultValue !== undefined) {\r\n logWarn(\r\n `${prop} is not defined on window.googleData. Falling back ${defaultValue}`\r\n );\r\n return defaultValue;\r\n } else {\r\n throw new Error(`${prop} is not defined on window.googleData`);\r\n }\r\n }\r\n logDebug(\r\n `Google data prop found. Retrieving prop ${prop} with value ${window.googleData[prop]}`\r\n );\r\n return window.googleData[prop];\r\n};\r\nconst validateEcommerceData = (prop, defaultValue) => {\r\n if (!window.ecommerceData) {\r\n throw new Error('window.ecommerceData is not defined');\r\n }\r\n if (\r\n window.ecommerceData[prop] === null ||\r\n window.ecommerceData[prop] === undefined\r\n ) {\r\n if (defaultValue !== undefined) {\r\n logWarn(\r\n `${prop} is not defined on window.ecommerceData. Falling back ${defaultValue}`\r\n );\r\n return defaultValue;\r\n } else {\r\n throw new Error(`${prop} is not defined on window.ecommerceData`);\r\n }\r\n }\r\n logDebug(\r\n `Ecommerce data prop found. Retrieving prop ${prop} with value ${window.ecommerceData[prop]}`\r\n );\r\n return window.ecommerceData[prop];\r\n};\r\n\r\nconst extractAdwordsConfiguration = () => {\r\n const adwordsConfiguration = validateGoogleData('adwordsConfiguration');\r\n const ads = JSON.parse(adwordsConfiguration.replace(/"/g, '\"'));\r\n return ads;\r\n};\r\nexport {\r\n validateGoogleData,\r\n extractAdwordsConfiguration,\r\n validateEcommerceData,\r\n};\r\n","// https://developers.google.com/analytics/devguides/collection/ga4/reference/events\r\nimport { logDebug, logWarn, logError, logEvent } from '../../tracing.js';\r\n\r\nimport {\r\n map,\r\n isArray,\r\n find,\r\n some,\r\n includes,\r\n forEach,\r\n isNil,\r\n isEmpty,\r\n} from 'lodash';\r\n\r\nimport { validateGoogleData } from '../data/dataPageService.js';\r\n\r\nconst _prefix = 'GA4';\r\nconst _validateGtag = () => {\r\n if (!window.gtag) {\r\n throw new Error('window.gtag is null or undefined');\r\n }\r\n};\r\n\r\nconst _setCategories = ({ itemObj, categories }) => {\r\n forEach(categories, (category, index) => {\r\n itemObj[`item_category${index === 0 ? '' : index}`] = category;\r\n });\r\n return itemObj;\r\n};\r\n\r\nconst _mapItems = (items) =>\r\n map(items, (item) => {\r\n const itemObj = {\r\n item_id: item.googleId,\r\n item_name: item.slug,\r\n };\r\n if (!isNil(item.quantity)) {\r\n itemObj.quantity = item.quantity;\r\n }\r\n if (!isNil(item.currency)) {\r\n itemObj.currency = item.currency;\r\n }\r\n if (!isNil(item.price)) {\r\n itemObj.price = item.price;\r\n }\r\n if (!isNil(item.disciplines)) {\r\n itemObj.disciplines = item.disciplines;\r\n }\r\n if (!isNil(item.brandName)) {\r\n itemObj.item_brand = item.brandName;\r\n }\r\n if (\r\n !isNil(item.categories) &&\r\n item.categories &&\r\n item.categories.length > 0\r\n ) {\r\n return _setCategories({ itemObj, categories: item.categories });\r\n }\r\n return itemObj;\r\n });\r\n\r\nconst beginCheckout = ({ currency, totaleuro, items }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n // transaction_id: cartId, // CREDO NON sia passabile, non รจ documentato e non mi pare registrare l'evento se lo aggiungo.\r\n currency,\r\n value: totaleuro,\r\n items: _mapItems(items),\r\n };\r\n logEvent(`${_prefix} begin_checkout`, obj);\r\n gtag('event', 'begin_checkout', obj);\r\n};\r\n\r\nconst purchase = ({ transaction_id, currency, value, shipping, items }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n let obj = {\r\n transaction_id,\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n currency,\r\n value,\r\n shipping,\r\n items: items.map((li) => ({\r\n item_id: li.googleId,\r\n item_name: li.slug,\r\n item_category:\r\n li.categories &&\r\n isArray(li.categories) &&\r\n li.categories.length > 0\r\n ? li.categories[0]\r\n : '',\r\n item_brand:\r\n isNil(li.brandName) || isEmpty(li.brandName)\r\n ? ''\r\n : li.brandName,\r\n price: li.price,\r\n quantity: li.quantity,\r\n })),\r\n };\r\n logEvent(`${_prefix} purchase`, obj);\r\n gtag('event', 'purchase', obj);\r\n};\r\n\r\nconst newsletterRegistration = ({ url, email }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n let obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n url: url === undefined ? window.location.href : url,\r\n email,\r\n };\r\n logEvent(`${_prefix} CompleteRegistration`, obj);\r\n gtag('event', 'CompleteRegistration', obj);\r\n};\r\n\r\nconst viewItem = ({ currency, value, items }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n\r\n currency,\r\n value,\r\n items: _mapItems(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_item`, obj);\r\n gtag('event', 'view_item', obj);\r\n};\r\n\r\nconst searchItemsResults = ({ searchterm }) => {\r\n // NOTA: abbiamo disabilitato l'enhancement measure su GA4 (stream web)\r\n // al fine di evitare duplicazione di questi eventi.\r\n // Disabilitandolo, nei report ne risulta uno,\r\n // anche se comunque ne vengono sparati due (uno dal nostro codice e uno by default da Google)\r\n _validateGtag();\r\n const obj = {\r\n search_term: searchterm,\r\n };\r\n\r\n logEvent(`${_prefix} search`, obj);\r\n gtag('event', 'search', obj);\r\n};\r\n\r\nconst viewItemList = ({ items }) => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n items: _mapItems(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_item_list`, obj);\r\n gtag('event', 'view_item_list', obj);\r\n};\r\n\r\nconst viewCart = ({ cartId, currency, totaleuro, items }) => {\r\n _validateGtag();\r\n const obj = {\r\n // transaction_id: cartId,\r\n currency,\r\n value: parseFloat(totaleuro),\r\n items: _mapItems(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_cart`, obj);\r\n gtag('event', 'view_cart', obj);\r\n};\r\n\r\nconst addShippingInfo = ({ cartId, currency, value, items, shipping_tier }) => {\r\n _validateGtag();\r\n const obj = {\r\n // transaction_id: cartId, // NON SI PUO' METTERE o NON REGISTRA L'EVENTO\r\n currency,\r\n value: parseFloat(value),\r\n items: _mapItems(items),\r\n shipping_tier: shipping_tier,\r\n };\r\n logEvent(`${_prefix} add_shipping_info`, obj);\r\n gtag('event', 'add_shipping_info', obj);\r\n};\r\n\r\nconst addToCart = ({\r\n id,\r\n quantity,\r\n currency,\r\n price,\r\n items,\r\n disciplines,\r\n categories,\r\n brandName,\r\n}) => {\r\n _validateGtag();\r\n\r\n if (!some(items, (item) => item.googleId === id)) {\r\n logWarn(\r\n `Mismatch between serverside ids and current clientside id ${id} on add_to_cart. Serverside ids: ${map(\r\n items,\r\n (i) => i.googleId\r\n )}`\r\n );\r\n }\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n currency,\r\n value: find(items, (item) => item.googleId === id).price,\r\n items: _mapItems([\r\n {\r\n googleId: id,\r\n slug: find(items, (item) => item.googleId === id).slug,\r\n quantity,\r\n currency,\r\n price: find(items, (item) => item.googleId === id).price,\r\n disciplines,\r\n brandName,\r\n categories,\r\n },\r\n ]),\r\n };\r\n\r\n logEvent(`${_prefix} add_to_cart`, obj);\r\n gtag('event', 'add_to_cart', obj);\r\n};\r\n\r\nconst addPaymentInfo = ({ currency, value, items, payment }) => {\r\n _validateGtag();\r\n const obj = {\r\n currency,\r\n value,\r\n payment_type: payment,\r\n items: _mapItems(items),\r\n };\r\n logEvent(`${_prefix} add_payment_info`, obj);\r\n gtag('event', 'add_payment_info', obj);\r\n};\r\n\r\nconst closePopUp = () => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n content_type: 'close pop up',\r\n };\r\n\r\n logEvent(`${_prefix} select_content`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst popUpButtonClick = () => {\r\n _validateGtag();\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const obj = {\r\n send_to: [analytics4MeasurementId, analytics4MeasurementGlobalId],\r\n content_type: 'pop up button click',\r\n };\r\n\r\n logEvent(`${_prefix} select_content`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst init = ({ debug }) => {\r\n // Analytics 4\r\n if (!window.dataLayer) {\r\n logDebug('window.dataLayer does not exist. Creating it as empty array');\r\n }\r\n window.dataLayer = window.dataLayer || [];\r\n logDebug('window.dataLayer set...');\r\n function gtag() {\r\n dataLayer.push(arguments);\r\n }\r\n window.gtag = gtag;\r\n _validateGtag();\r\n logDebug('window.gtag set...');\r\n gtag('js', new Date());\r\n};\r\nconst setConfigGoogleAnalytics4 = ({ debug }) => {\r\n _validateGtag();\r\n // Questo config in automatico, per default, setta send_page_view a true per GA4 (con dei parametri di default).\r\n const analytics4MeasurementId = validateGoogleData(\r\n 'analytics4MeasurementId'\r\n );\r\n\r\n const configAlreadySetAnalytics4MeasurementId = some(\r\n dataLayer,\r\n (d) => includes(d, 'config') && includes(d, analytics4MeasurementId)\r\n );\r\n if (!configAlreadySetAnalytics4MeasurementId) {\r\n if (debug === true) {\r\n gtag('config', analytics4MeasurementId, {\r\n debug_mode: debug,\r\n });\r\n } else {\r\n gtag('config', analytics4MeasurementId);\r\n }\r\n logEvent(\r\n `GA4 pageview via \\'config\\' for measurement id ${analytics4MeasurementId}`\r\n );\r\n }\r\n\r\n const analytics4MeasurementGlobalId = validateGoogleData(\r\n 'analytics4MeasurementGlobalId'\r\n );\r\n\r\n const configAlreadySetAnalytics4MeasurementGlobalId = some(\r\n dataLayer,\r\n (d) =>\r\n includes(d, 'config') && includes(d, analytics4MeasurementGlobalId)\r\n );\r\n if (!configAlreadySetAnalytics4MeasurementGlobalId) {\r\n if (debug === true) {\r\n gtag('config', configAlreadySetAnalytics4MeasurementGlobalId, {\r\n debug_mode: debug,\r\n });\r\n } else {\r\n gtag('config', configAlreadySetAnalytics4MeasurementGlobalId);\r\n }\r\n logEvent(\r\n `GA4 pageview via \\'config\\' for Global measurement id ${analytics4MeasurementGlobalId}`\r\n );\r\n }\r\n};\r\n\r\nconst recordGA4BannerClick = ({ linkUrl, title, index }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'banner',\r\n item_id: linkUrl,\r\n title,\r\n index,\r\n };\r\n logEvent(\r\n `GA4 custom event BANNER CLICK: ${linkUrl} ${title} ${index}`,\r\n obj\r\n );\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4PromoImagesClick = ({\r\n linkUrl,\r\n promoMessage,\r\n index,\r\n imageSrc,\r\n}) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'promoImages',\r\n item_id: linkUrl,\r\n promoMessage,\r\n index,\r\n imageSrc,\r\n };\r\n logEvent(\r\n `GA4 custom event PROMO IMAGES CLICK: ${linkUrl} ${promoMessage.message} ${index}`,\r\n obj\r\n );\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4InfoboxClick = ({ linkUrl }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'infobox',\r\n item_id: linkUrl,\r\n };\r\n logEvent(`GA4 custom event INFOBOX CLICK: ${linkUrl}`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4NewsHomepageClick = () => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'news',\r\n };\r\n logEvent(`GA4 custom event NEWS HOMEPAGE`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4HelpClick = () => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'help',\r\n };\r\n logEvent(`GA4 custom event HELP PAGE`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4CategoryClick = ({ linkUrl }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'category',\r\n item_id: linkUrl,\r\n };\r\n logEvent(`GA4 custom event CATEGORY CLICK: ${linkUrl}`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4LogonClick = ({ linkUrl }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'logon',\r\n item_id: linkUrl,\r\n };\r\n logEvent(`GA4 custom event LOGON CLICK: ${linkUrl}`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nconst recordGA4RegisterClick = ({ linkUrl }) => {\r\n _validateGtag();\r\n const obj = {\r\n content_type: 'register',\r\n item_id: linkUrl,\r\n };\r\n logEvent(`GA4 custom event REGISTER CLICK: ${linkUrl}`, obj);\r\n gtag('event', 'select_content', obj);\r\n};\r\n\r\nexport {\r\n beginCheckout,\r\n purchase,\r\n newsletterRegistration,\r\n viewItem,\r\n searchItemsResults,\r\n viewItemList,\r\n viewCart,\r\n addShippingInfo,\r\n addToCart,\r\n addPaymentInfo,\r\n closePopUp,\r\n popUpButtonClick,\r\n init,\r\n setConfigGoogleAnalytics4,\r\n recordGA4BannerClick,\r\n recordGA4PromoImagesClick,\r\n recordGA4InfoboxClick,\r\n recordGA4NewsHomepageClick,\r\n recordGA4HelpClick,\r\n recordGA4CategoryClick,\r\n recordGA4LogonClick,\r\n recordGA4RegisterClick,\r\n};\r\n","// https://developers.google.com/analytics/devguides/collection/ga4/reference/events\r\nimport {\r\n logDebug,\r\n logInfo,\r\n logWarn,\r\n logError,\r\n logEvent,\r\n} from '../../tracing.js';\r\nimport {\r\n map,\r\n reduce,\r\n isArray,\r\n uniq,\r\n intersection,\r\n find,\r\n some,\r\n isNil,\r\n isEmpty,\r\n includes,\r\n hasIn,\r\n result,\r\n} from 'lodash';\r\nimport { validateGoogleData } from '../data/dataPageService.js';\r\n\r\nimport cookieService from '../cookieService.js';\r\n\r\nimport {\r\n extractAdwordsConfiguration,\r\n validateEcommerceData,\r\n} from '../data/dataPageService.js';\r\n\r\nconst _prefix = 'ADS';\r\n\r\nconst _getDestinationId = (property) => {\r\n try {\r\n const adwordsConfiguration = extractAdwordsConfiguration();\r\n const countryCode = cookieService.getUserProfileOptions().countryCode;\r\n const defaultCountryCode = validateEcommerceData('defaultCountryCode');\r\n if (!adwordsConfiguration[property]) {\r\n logError(`${_prefix} ${property} is not defined`);\r\n throw new Error(` ${property} is not defined`);\r\n }\r\n\r\n const valueForSelectedCountry =\r\n adwordsConfiguration[property][countryCode];\r\n if (\r\n isNil(valueForSelectedCountry) ||\r\n isEmpty(valueForSelectedCountry)\r\n ) {\r\n logInfo(\r\n `${_prefix} ${property} for ${countryCode} is not defined...falling back to default.`\r\n );\r\n const valueForDefaultCountry =\r\n adwordsConfiguration[property][defaultCountryCode];\r\n\r\n if (\r\n isNil(valueForDefaultCountry) ||\r\n isEmpty(valueForDefaultCountry)\r\n ) {\r\n throw new Error(\r\n `${property} for defaultCountryCode ${defaultCountryCode} is not defined`\r\n );\r\n }\r\n return valueForDefaultCountry;\r\n }\r\n return valueForSelectedCountry;\r\n } catch (error) {\r\n logError(`${_prefix} ${error.message}`);\r\n throw new Error(error.message);\r\n }\r\n};\r\n\r\nconst _getConversionId = () => _getDestinationId('conversionId');\r\nconst _getConversionLabel = () => _getDestinationId('conversionLabel');\r\nconst _getInitiateCheckoutLabel = () =>\r\n _getDestinationId('initiateCheckoutLabel');\r\nconst _getAddToCartLabel = () => _getDestinationId('addToCartLabel');\r\nconst _getNewsletterLabel = () => _getDestinationId('newsletterLabel');\r\nconst _getValuePropertyForCountryWithFallback = ({\r\n property,\r\n fallbackValue,\r\n}) => {\r\n const adwordsConfiguration = extractAdwordsConfiguration();\r\n const countryCode = cookieService.getUserProfileOptions().countryCode;\r\n const defaultCountryCode = validateEcommerceData('defaultCountryCode');\r\n if (!hasIn(adwordsConfiguration, property)) {\r\n logError(`${_prefix} ${property} is not defined`);\r\n return fallbackValue;\r\n }\r\n\r\n if (!hasIn(adwordsConfiguration, property + '.' + countryCode)) {\r\n logWarn(\r\n `${property} not found for countryCode ${countryCode}. Falling back to ${defaultCountryCode}`\r\n );\r\n const resultFromDefaultCountryCode =\r\n result(adwordsConfiguration, property + '.' + defaultCountryCode) ||\r\n fallbackValue;\r\n logDebug(\r\n `Using value ${resultFromDefaultCountryCode} for property ${property}`\r\n );\r\n return resultFromDefaultCountryCode;\r\n }\r\n const resultFromMatchedCountryCode =\r\n result(adwordsConfiguration, property + '.' + countryCode) ||\r\n fallbackValue;\r\n return resultFromMatchedCountryCode;\r\n};\r\n\r\nconst _getCategoriesConversionLabel = (conversionLabel) => {\r\n let fallbackValue = conversionLabel;\r\n try {\r\n const property = 'categoriesConversionLabel';\r\n return _getValuePropertyForCountryWithFallback({\r\n property,\r\n fallbackValue,\r\n });\r\n } catch (error) {\r\n logDebug(\r\n `${_prefix} no retrieval of categories conversion label. Maybe there is none? I will return empty string.`\r\n );\r\n return fallbackValue;\r\n }\r\n};\r\nconst _getTrackedCategories = () => {\r\n let fallbackValue = [];\r\n try {\r\n const property = 'trackedCategories';\r\n return _getValuePropertyForCountryWithFallback({\r\n property,\r\n fallbackValue,\r\n });\r\n } catch (error) {\r\n logDebug(\r\n `${_prefix} no retrieval of tracked categories. Maybe there are none? I will return empty tracked categories.`\r\n );\r\n return fallbackValue;\r\n }\r\n};\r\n\r\nconst _validateGtag = () => {\r\n if (!window.gtag) {\r\n throw new Error('window.gtag is null or undefined');\r\n }\r\n};\r\n\r\nconst _mapItemsForDynamicRemarketing = (items) =>\r\n map(items, (item) => ({\r\n id: item.googleId,\r\n google_business_vertical: 'retail',\r\n }));\r\n\r\nconst beginCheckout = ({ cartId, currency, totaleuro, items }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const initiateCheckoutLabel = _getInitiateCheckoutLabel();\r\n if (!isNil(initiateCheckoutLabel) && !isEmpty(initiateCheckoutLabel)) {\r\n const beginCheckoutObj = {\r\n transaction_id: cartId, // transaction_id รจ documentato solo per purchase...?\r\n send_to: `${conversionId}/${initiateCheckoutLabel}`,\r\n currency,\r\n value: totaleuro,\r\n items: map(items, (item) => ({\r\n item_id: item.googleId,\r\n item_name: item.slug,\r\n })),\r\n };\r\n logEvent(`${_prefix} begin_checkout`, beginCheckoutObj);\r\n gtag('event', 'begin_checkout', beginCheckoutObj);\r\n }\r\n};\r\n\r\nconst purchaseDynamicRemarketing = ({ value, items }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const obj = {\r\n send_to: conversionId,\r\n value,\r\n items: _mapItemsForDynamicRemarketing(items),\r\n };\r\n logEvent(`${_prefix} purchase dynamic remarketing`, obj);\r\n gtag('event', 'purchase', obj);\r\n};\r\n\r\nconst purchaseConversion = ({ orderId, currency, totalEuro, items }) => {\r\n try {\r\n _validateGtag();\r\n // O quella della country o quella di default\r\n const conversionId = _getConversionId();\r\n // O quella della country o quella di default\r\n const conversionLabel = _getConversionLabel();\r\n logDebug(\r\n `conversionId ${conversionId} and conversionLabel ${conversionLabel}`\r\n );\r\n // O quella della country o quella di default\r\n const categoriesConversionLabel =\r\n _getCategoriesConversionLabel(conversionLabel);\r\n // Quelle della country o quelle di default\r\n const trackedCategories = _getTrackedCategories();\r\n\r\n logDebug(\r\n `categoriesConversionLabel and trackedCategories`,\r\n categoriesConversionLabel,\r\n trackedCategories\r\n );\r\n\r\n const orderCategories = uniq(\r\n reduce(\r\n items,\r\n (acc, item) => {\r\n const itms = map(\r\n item.categories,\r\n (category) => category.slug\r\n );\r\n acc = acc.concat(itms);\r\n return acc;\r\n },\r\n []\r\n )\r\n );\r\n let send_to_address_label = conversionLabel || '';\r\n const foundMatchingCategories =\r\n intersection(orderCategories, trackedCategories).length > 0;\r\n if (foundMatchingCategories) {\r\n logDebug(\r\n `Tracked category found. TrackedCategories: ${trackedCategories}, Order categories: ${orderCategories}`\r\n );\r\n send_to_address_label = categoriesConversionLabel;\r\n }\r\n\r\n let conversionData = {\r\n transaction_id: orderId,\r\n send_to: `${conversionId}/${send_to_address_label}`,\r\n value: totalEuro,\r\n currency,\r\n items: map(items, (item) => {\r\n return {\r\n id: item.googleId,\r\n quantity: item.quantity,\r\n price: item.price,\r\n };\r\n }),\r\n };\r\n logEvent('conversion', conversionData);\r\n if (window.enhanced_conversion_data) {\r\n console.log(\r\n 'Enhanced conversion data',\r\n window.enhanced_conversion_data\r\n );\r\n\r\n logEvent('EnhancedConversionData', window.enhanced_conversion_data);\r\n }\r\n return window.gtag('event', 'conversion', conversionData);\r\n } catch (error) {\r\n logError(`purchaseConversion: ${error.message}`);\r\n throw new Error(`purchaseConversion: ${error.message}`);\r\n }\r\n};\r\n\r\nconst newsletterRegistration = ({ url, email }) => {\r\n try {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const newsletterLabel = _getNewsletterLabel();\r\n\r\n if (!isNil(newsletterLabel) && !isEmpty(newsletterLabel)) {\r\n let obj = {\r\n send_to: `${conversionId}/${newsletterLabel}`,\r\n url: url === undefined ? window.location.href : url,\r\n email,\r\n value: 1,\r\n };\r\n logEvent(`${_prefix} CompleteRegistration`, obj);\r\n gtag('event', 'CompleteRegistration', obj);\r\n }\r\n } catch (error) {\r\n logError(`${_prefix} ${error.message}`);\r\n throw new Error(error.message);\r\n }\r\n};\r\n\r\nconst adsSearchItemResultsDynamicRemarketing = ({ searchterm, items }) => {\r\n _validateGtag();\r\n const viewItemObject = {\r\n search_term: searchterm,\r\n items: _mapItemsForDynamicRemarketing(items),\r\n };\r\n\r\n logEvent(\r\n `${_prefix} view_search_results dynamic remarketing`,\r\n viewItemObject\r\n );\r\n gtag('event', 'view_search_results', viewItemObject);\r\n};\r\n\r\nconst adsViewItemListDynamicRemarketing = ({ items }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n\r\n const obj = {\r\n send_to: conversionId,\r\n items: _mapItemsForDynamicRemarketing(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_item_list dynamic remarketing`, obj);\r\n gtag('event', 'view_item_list', obj);\r\n};\r\n\r\nconst adsViewItemDynamicRemarketing = ({ value, items }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const obj = {\r\n send_to: conversionId,\r\n value,\r\n items: _mapItemsForDynamicRemarketing(items),\r\n };\r\n\r\n logEvent(`${_prefix} view_item dynamic remarketing`, obj);\r\n gtag('event', 'view_item', obj);\r\n};\r\n\r\nconst adsAddToCartDynamicRemarketing = ({ id, price }) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const obj = {\r\n send_to: conversionId,\r\n value: price,\r\n items: [\r\n {\r\n id,\r\n google_business_vertical: 'retail',\r\n },\r\n ],\r\n };\r\n\r\n logEvent(`${_prefix} add_to_cart dynamic remarketing`, obj);\r\n gtag('event', 'add_to_cart', obj);\r\n};\r\n\r\nconst adsAddToCartConversion = ({\r\n id,\r\n currency,\r\n price,\r\n items,\r\n transactionId,\r\n}) => {\r\n _validateGtag();\r\n const conversionId = _getConversionId();\r\n const addToCartLabel = _getAddToCartLabel();\r\n if (!isNil(addToCartLabel) && !isEmpty(addToCartLabel)) {\r\n if (!some(items, (item) => item.googleId === id)) {\r\n logWarn(\r\n `Mismatch between serverside ids and current clientside id ${id} on add_to_cart. Serverside ids: ${map(\r\n items,\r\n (i) => i.googleId\r\n )}`\r\n );\r\n }\r\n\r\n let obj = {\r\n send_to: `${conversionId}/${addToCartLabel}`,\r\n currency,\r\n value: price,\r\n };\r\n if (!isNil(transactionId) && !isEmpty(transactionId)) {\r\n obj.transaction_id = transactionId;\r\n }\r\n\r\n logEvent(`${_prefix} add_to_cart conversion`, obj);\r\n gtag('event', 'add_to_cart', obj);\r\n }\r\n};\r\n\r\nconst initConversions = () => {\r\n const conversionId = _getConversionId();\r\n const analytics4EnableDebug = validateGoogleData(\r\n 'analytics4EnableDebug',\r\n false\r\n );\r\n\r\n const configAlreadySetConversionId = some(\r\n dataLayer,\r\n (d) => includes(d, 'config') && includes(d, conversionId)\r\n );\r\n if (!configAlreadySetConversionId) {\r\n if (analytics4EnableDebug === true) {\r\n gtag('config', conversionId, {\r\n debug_mode: analytics4EnableDebug, // Per ora uso lo stesso config\r\n });\r\n } else {\r\n gtag('config', conversionId);\r\n }\r\n logEvent(`Setting \\'config\\' with conversionId ${conversionId}`);\r\n }\r\n};\r\n\r\nexport {\r\n beginCheckout,\r\n purchaseDynamicRemarketing,\r\n purchaseConversion,\r\n newsletterRegistration,\r\n adsSearchItemResultsDynamicRemarketing,\r\n adsViewItemListDynamicRemarketing,\r\n adsViewItemDynamicRemarketing,\r\n adsAddToCartDynamicRemarketing,\r\n adsAddToCartConversion,\r\n initConversions,\r\n};\r\n","import {\r\n logDebug,\r\n logInfo,\r\n logWarn,\r\n logError,\r\n logEvent,\r\n} from '../../tracing.js';\r\n\r\nimport { map } from 'lodash';\r\nconst _prefix = 'FBQ';\r\n\r\nconst _validateFbq = () => {\r\n if (!fbq) {\r\n throw new Error('fbq is null or undefined');\r\n }\r\n};\r\n\r\nconst _validateFbqData = (prop) => {\r\n if (!window.facebookData) {\r\n throw new Error(`${_prefix} window.facebookData is not defined`);\r\n }\r\n if (!window.facebookData[prop]) {\r\n throw new Error(\r\n `${_prefix} ${prop} is not defined on window.facebookData`\r\n );\r\n }\r\n};\r\n\r\nconst fbqPixelId = () => {\r\n _validateFbqData('pixelId');\r\n _validateFbqData('fbCulture');\r\n _validateFbq();\r\n logDebug(\r\n `PixelId: ${window.facebookData.pixelId} fbCulture: ${window.facebookData.fbCulture} `\r\n );\r\n logDebug('Firing pixelId', window.facebookData.pixelId);\r\n fbq('init', window.facebookData.pixelId);\r\n};\r\n\r\nconst init = () => {\r\n //Facebook pixelId\r\n !(function (f, b, e, v, n, t, s) {\r\n if (f.fbq) return;\r\n n = f.fbq = function () {\r\n n.callMethod\r\n ? n.callMethod.apply(n, arguments)\r\n : n.queue.push(arguments);\r\n };\r\n if (!f._fbq) f._fbq = n;\r\n n.push = n;\r\n n.loaded = !0;\r\n n.version = '2.0';\r\n n.queue = [];\r\n t = b.createElement(e);\r\n t.async = !0;\r\n t.src = v;\r\n s = b.getElementsByTagName(e)[0];\r\n s.parentNode.insertBefore(t, s);\r\n })(\r\n window,\r\n document,\r\n 'script',\r\n 'https://connect.facebook.net/en_US/fbevents.js'\r\n );\r\n};\r\n\r\nconst addToCart = ({ isKit, id, quantity, currency, price, eventId }) => {\r\n _validateFbq();\r\n const addToCartObject = {\r\n content_name: isKit\r\n ? `${window.$pathBase}Cart/AddKitToCartNew`\r\n : `${window.$pathBase}Cart/AddProductToCartNew`,\r\n content_type: 'product',\r\n contents: [\r\n {\r\n id,\r\n quantity: Number(quantity),\r\n },\r\n ],\r\n currency: currency,\r\n value: price,\r\n };\r\n\r\n logEvent(`${_prefix} AddToCart Facebook`, addToCartObject);\r\n fbq('track', 'AddToCart', addToCartObject, { eventID: eventId });\r\n};\r\n\r\nconst pageView = () => {\r\n _validateFbq();\r\n logEvent(`${_prefix} PageView Facebook`);\r\n fbq('track', 'PageView');\r\n};\r\n\r\nconst beginCheckout = ({ currency, value, items, eventId }) => {\r\n logDebug('_sendFbqInitiateCheckout');\r\n _validateFbq();\r\n const initiateCheckoutData = {\r\n currency,\r\n value,\r\n num_items: items.length,\r\n contents: map(items, (item) => ({\r\n id: item.facebookId,\r\n quantity: item.quantity,\r\n })),\r\n };\r\n logEvent(`${_prefix} InitiateCheckout Facebook`, initiateCheckoutData);\r\n fbq('track', 'InitiateCheckout', initiateCheckoutData, {\r\n eventID: eventId,\r\n });\r\n};\r\n\r\nconst newsletterRegistration = ({ url, email }) => {\r\n logDebug('_sendFbqRegistration');\r\n _validateFbq();\r\n const completeRegistrationObj = {\r\n status: true,\r\n content_name: url === undefined ? window.location.href : url,\r\n value: email,\r\n };\r\n logEvent(\r\n `${_prefix} CompleteRegistration Facebook`,\r\n completeRegistrationObj\r\n );\r\n fbq('track', 'CompleteRegistration', completeRegistrationObj);\r\n};\r\n\r\nconst contact = () => {\r\n _validateFbq();\r\n\r\n logEvent(`${_prefix} Contact Facebook`);\r\n fbq('track', 'Contact');\r\n};\r\n\r\nconst search = ({ searchterm }) => {\r\n _validateFbq();\r\n logEvent(`${_prefix} Search Facebook`, searchterm);\r\n fbq('track', 'Search', {\r\n search_string: searchterm,\r\n });\r\n};\r\n\r\nconst addPaymentInfo = ({ currency, value, items, eventId }) => {\r\n _validateFbq();\r\n const paymentObj = {\r\n currency,\r\n value,\r\n contents: map(items, (item) => ({\r\n id: item.googleId,\r\n quantity: item.quantity,\r\n })),\r\n };\r\n logEvent(`${_prefix} AddPaymentInfo Facebook`, paymentObj);\r\n fbq('track', 'AddPaymentInfo', paymentObj, { eventID: eventId });\r\n};\r\n\r\nconst viewItem = ({ slug, guid, options, currencyCode, isKit }) => {\r\n _validateFbq();\r\n fbqPixelId();\r\n const viewItemObject = {\r\n content_name: `${window.$pathBase}${slug}`,\r\n content_ids: isKit\r\n ? [`${guid}`]\r\n : map(options, (o) => `${guid}-${o.sourceId}`),\r\n currency: currencyCode,\r\n };\r\n logEvent(`${_prefix} ViewContent Facebook`, viewItemObject);\r\n fbq('track', 'ViewContent', viewItemObject);\r\n};\r\n\r\nconst purchase = ({ currency, value, items, eventId }) => {\r\n _validateFbq();\r\n let purchaseData = {\r\n contents: items.map((li) => ({\r\n id: li.facebookId,\r\n quantity: li.quantity,\r\n })),\r\n content_type: 'product',\r\n value,\r\n currency,\r\n };\r\n logEvent(`${_prefix} Purchase Facebook`, purchaseData);\r\n fbq('track', 'Purchase', purchaseData, { eventID: eventId });\r\n};\r\n\r\nexport {\r\n init,\r\n addToCart,\r\n fbqPixelId,\r\n pageView,\r\n beginCheckout,\r\n newsletterRegistration,\r\n contact,\r\n search,\r\n addPaymentInfo,\r\n viewItem,\r\n purchase,\r\n};\r\n","import cookieService from '../cookieService.js';\r\nimport {\r\n beginCheckout as ga4BeginCheckout,\r\n purchase as ga4Purchase,\r\n newsletterRegistration as ga4NewsletterRegistration,\r\n viewItem as ga4ViewItem,\r\n searchItemsResults as ga4SearchItemsResults,\r\n viewItemList as ga4ViewItemList,\r\n viewCart as ga4ViewCart,\r\n addShippingInfo as ga4AddShippingInfo,\r\n addToCart as ga4AddToCart,\r\n addPaymentInfo as ga4AddPaymentInfo,\r\n closePopUp as ga4ClosePopUp,\r\n popUpButtonClick as ga4PopUpButtonClick,\r\n init as initGoogleAnalytics4,\r\n setConfigGoogleAnalytics4,\r\n recordGA4BannerClick,\r\n recordGA4PromoImagesClick,\r\n recordGA4InfoboxClick,\r\n recordGA4NewsHomepageClick,\r\n recordGA4HelpClick,\r\n recordGA4CategoryClick,\r\n recordGA4LogonClick,\r\n recordGA4RegisterClick,\r\n} from './ga4Service.js';\r\nimport {\r\n beginCheckout as adsBeginCheckoutSendConversion,\r\n purchaseDynamicRemarketing,\r\n purchaseConversion,\r\n adsSearchItemResultsDynamicRemarketing,\r\n adsViewItemListDynamicRemarketing,\r\n adsViewItemDynamicRemarketing,\r\n adsAddToCartDynamicRemarketing,\r\n adsAddToCartConversion,\r\n newsletterRegistration as adsNewsletterRegistrationSendConversion,\r\n initConversions,\r\n} from './adsService.js';\r\nimport {\r\n init as initFbq,\r\n addToCart as fbqAddToCart,\r\n fbqPixelId,\r\n pageView as fbqPageView,\r\n beginCheckout as fbqBeginCheckout,\r\n newsletterRegistration as fbqNewsletterRegistration,\r\n contact as fbqContact,\r\n search as fbqSearch,\r\n addPaymentInfo as fbqAddPaymentInfo,\r\n viewItem as fbqViewItem,\r\n purchase as fbqPurchase,\r\n} from './facebookService.js';\r\n\r\nimport { logDebug, logWarn, logError, logEvent } from '../../tracing.js';\r\nimport { isArray } from 'lodash';\r\nimport { validateGoogleData } from '../data/dataPageService.js';\r\n\r\nconst pageTypes = {\r\n view_item: 'view_item',\r\n view_item_list: 'view_item_list',\r\n cart: 'cart',\r\n view_search_results: 'view_search_results',\r\n registration: 'registration',\r\n contact: 'contact',\r\n view_cart: 'view_cart',\r\n add_shipping_info: 'add_shipping_info',\r\n add_payment_info: 'add_payment_info',\r\n purchase: 'purchase',\r\n};\r\n\r\nconst _validateEcommPageType = () => {\r\n if (!window.ecomm_pagetype) {\r\n throw new Error('window.ecomm_pagetype is not defined');\r\n }\r\n return window.ecomm_pagetype;\r\n};\r\nconst _validateEcommTransactionId = () => {\r\n if (!window.ecomm_transactionid) {\r\n logError('window.ecomm_transactionid is not defined');\r\n throw new Error('window.ecomm_transactionid is not defined');\r\n }\r\n\r\n if (window.ecomm_transactionid === '00000000-0000-0000-0000-000000000000') {\r\n logError(\r\n 'Skipping because orderId happens to be 00000000-0000-0000-0000-000000000000'\r\n );\r\n throw new Error(\r\n 'Skipping because orderId happens to be 00000000-0000-0000-0000-000000000000'\r\n );\r\n }\r\n return window.ecomm_transactionid;\r\n};\r\nconst _validateEcommTotalValue = () => {\r\n if (!window.ecomm_totalvalue) {\r\n logError('window.ecomm_totalvalue is not defined');\r\n throw new Error('window.ecomm_totalvalue is not defined');\r\n }\r\n return window.ecomm_totalvalue;\r\n};\r\nconst _validateEcommTotalValueEuro = () => {\r\n if (!window.ecomm_totalvalueeuro) {\r\n logError('window.ecomm_totalvalueeuro is not defined');\r\n throw new Error('window.ecomm_totalvalueeuro is not defined');\r\n }\r\n return window.ecomm_totalvalueeuro;\r\n};\r\n\r\nconst _validateEcommCurrency = () => {\r\n if (!window.ecomm_currency) {\r\n logError('window.ecomm_currency is undefined');\r\n throw new Error('window.ecomm_currency is undefined');\r\n }\r\n return window.ecomm_currency;\r\n};\r\n\r\nconst _validateEcommSearchTerm = () => {\r\n if (!window.ecomm_searchterm) {\r\n logError('window.ecomm_searchterm is undefined');\r\n throw new Error('window.ecomm_searchterm is undefined');\r\n }\r\n if (window.ecomm_searchterm === '') {\r\n logWarn('window.ecomm_searchterm is empty');\r\n }\r\n return window.ecomm_searchterm;\r\n};\r\nconst _validateEcommItems = () => {\r\n if (!window.ecomm_items) {\r\n logError('window.ecomm_items is undefined');\r\n throw new Error('window.ecomm_items is undefined');\r\n }\r\n if (isArray(window.ecomm_items) && window.ecomm_items.length === 0) {\r\n logWarn('window.ecomm_items is empty');\r\n }\r\n return window.ecomm_items;\r\n};\r\nconst _validateEcommShippingOptionName = () => {\r\n if (!window.ecomm_shippingoptionname) {\r\n logError('window.ecomm_shippingoptionname is undefined');\r\n throw new Error('window.ecomm_shippingoptionname is undefined');\r\n }\r\n if (window.ecomm_shippingoptionname === '') {\r\n logWarn('window.ecomm_shippingoptionname is empty');\r\n }\r\n return window.ecomm_shippingoptionname;\r\n};\r\nconst _validateEcommShippingFeesEuro = () => {\r\n if (!window.ecomm_shippingfeeseuro) {\r\n logError('window.ecomm_shippingfeeseuro is undefined');\r\n throw new Error('window.ecomm_shippingfeeseuro is undefined');\r\n }\r\n if (window.ecomm_shippingfeeseuro === '') {\r\n logWarn('window.ecomm_shippingfeeseuro is empty');\r\n }\r\n return window.ecomm_shippingfeeseuro;\r\n};\r\nconst _validateEcommEmail = () => {\r\n if (!window.ecomm_email) {\r\n logError('window.ecomm_email is undefined');\r\n throw new Error('window.ecomm_email is undefined');\r\n }\r\n return window.ecomm_email;\r\n};\r\n\r\nconst _sendInitiateCheckout = () => {\r\n if (window.ecomm_pagetype && window.ecomm_pagetype === pageTypes.cart) {\r\n const cartId = _validateEcommTransactionId();\r\n const totaleuro = _validateEcommTotalValueEuro();\r\n const currency = _validateEcommCurrency();\r\n const items = _validateEcommItems();\r\n fbqBeginCheckout({\r\n currency,\r\n value: totaleuro,\r\n items,\r\n eventId: cartId,\r\n });\r\n\r\n ga4BeginCheckout({\r\n currency,\r\n totaleuro,\r\n items,\r\n });\r\n adsBeginCheckoutSendConversion({\r\n cartId,\r\n currency,\r\n totaleuro,\r\n items,\r\n });\r\n }\r\n};\r\n\r\nconst _sendNewsletterRegistration = ({ url, email }) => {\r\n logDebug('_sendRegistration');\r\n fbqNewsletterRegistration({ url, email });\r\n ga4NewsletterRegistration({\r\n url,\r\n email,\r\n });\r\n adsNewsletterRegistrationSendConversion({\r\n email,\r\n });\r\n};\r\n\r\nconst sendRegistration = ({ url, email }) => {\r\n return initLibs()\r\n .then(() => {\r\n try {\r\n _sendNewsletterRegistration({ url, email });\r\n } catch (error) {\r\n throw new Error(error.message);\r\n }\r\n })\r\n .catch((err) => {\r\n logError('sendRegistration from form ', err.message, url, email);\r\n return err;\r\n });\r\n};\r\n\r\nconst _sendRegistration = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.registration\r\n ) {\r\n const email = _validateEcommEmail();\r\n _sendNewsletterRegistration({ url: window.location.href, email });\r\n }\r\n};\r\n\r\nconst _sendFbqContact = () => {\r\n if (window.ecomm_pagetype && window.ecomm_pagetype === pageTypes.contact) {\r\n logDebug('_sendFbqContact');\r\n fbqContact();\r\n }\r\n};\r\n\r\nconst _sendViewItem = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_item\r\n ) {\r\n logDebug('_sendGoogleAnalyticsFourViewItem');\r\n const currency = _validateEcommCurrency();\r\n const value = _validateEcommTotalValue();\r\n const items = _validateEcommItems();\r\n\r\n // Commentato per evitare eventi duplicati, essendoci dynamic remarketing\r\n ga4ViewItem({\r\n currency,\r\n value,\r\n items,\r\n });\r\n adsViewItemDynamicRemarketing({ value, items });\r\n }\r\n};\r\n\r\nconst _sendSearchItemResults = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_search_results\r\n ) {\r\n logDebug('_sendSearchItemResults');\r\n const searchterm = _validateEcommSearchTerm();\r\n const items = _validateEcommItems();\r\n\r\n fbqSearch({ searchterm });\r\n ga4SearchItemsResults({ searchterm });\r\n adsSearchItemResultsDynamicRemarketing({ searchterm, items });\r\n }\r\n};\r\n\r\nconst _sendViewItemList = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_item_list\r\n ) {\r\n logDebug('_sendViewItemList');\r\n const items = _validateEcommItems();\r\n ga4ViewItemList({\r\n items,\r\n });\r\n adsViewItemListDynamicRemarketing({ items });\r\n }\r\n};\r\n\r\nconst _sendViewCart = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_cart\r\n ) {\r\n logDebug('_sendViewCart');\r\n const cartId = _validateEcommTransactionId();\r\n const currency = _validateEcommCurrency();\r\n const totaleuro = _validateEcommTotalValueEuro();\r\n const items = _validateEcommItems();\r\n ga4ViewCart({ cartId, currency, totaleuro, items });\r\n }\r\n};\r\n\r\nconst _sendShippingInfo = () => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.add_shipping_info\r\n ) {\r\n logDebug('_sendGoogleAnalyticsFourShippingInfo');\r\n const cartId = _validateEcommTransactionId();\r\n const currency = _validateEcommCurrency();\r\n const value = _validateEcommTotalValue();\r\n const items = _validateEcommItems();\r\n const shipping_tier = _validateEcommShippingOptionName();\r\n ga4AddShippingInfo({ cartId, currency, value, items, shipping_tier });\r\n }\r\n};\r\n\r\nconst addPaymentInfo = ({ payment, value }) => {\r\n logDebug('addPaymentInfo');\r\n return initLibs().then(() => {\r\n const cartId = _validateEcommTransactionId();\r\n const currency = _validateEcommCurrency();\r\n const items = _validateEcommItems();\r\n fbqAddPaymentInfo({ currency, value, items, eventId: cartId });\r\n ga4AddPaymentInfo({ currency, value, items, payment });\r\n return payment;\r\n });\r\n};\r\n\r\nconst closePopUp = () => {\r\n logDebug('closePopUp');\r\n return initLibs().then(() => {\r\n ga4ClosePopUp();\r\n return;\r\n });\r\n};\r\n\r\nconst popUpButtonClick = () => {\r\n logDebug('popUpButtonClick');\r\n return initLibs().then(() => {\r\n ga4PopUpButtonClick();\r\n return;\r\n });\r\n};\r\n\r\nconst initLibs = () => {\r\n // https://support.google.com/analytics/answer/7201382?hl=en\r\n\r\n return new Promise((resolve, reject) => {\r\n if (window.gtag && window.fbq) {\r\n logDebug('window.gtag && window.fbq ALL INITIALIZED!');\r\n \r\n const analytics4EnableDebug = validateGoogleData(\r\n 'analytics4EnableDebug',\r\n false\r\n );\r\n return resolve({\r\n gtag: window.gtag,\r\n fbq: window.fbq,\r\n analytics4EnableDebug,\r\n });\r\n }\r\n let retryCount = 4;\r\n const interval = setInterval(function () {\r\n try {\r\n logDebug('--> Run analytics script');\r\n\r\n const analytics4EnableDebug = validateGoogleData(\r\n 'analytics4EnableDebug',\r\n false\r\n );\r\n\r\n if (!window.gtag) {\r\n initGoogleAnalytics4({ debug: analytics4EnableDebug });\r\n }\r\n // FACEBOOK\r\n if (!window.fbq) {\r\n initFbq();\r\n }\r\n\r\n if (window.gtag && window.fbq) {\r\n logDebug('--> ga gtag and fbq ALL DEFINED');\r\n\r\n clearInterval(interval);\r\n return resolve({\r\n gtag: window.gtag,\r\n fbq: window.fbq,\r\n analytics4EnableDebug,\r\n });\r\n }\r\n if (retryCount === 0) {\r\n clearInterval(interval);\r\n return reject('Some function is not defined');\r\n }\r\n\r\n retryCount = retryCount - 1;\r\n } catch (error) {\r\n reject(error);\r\n }\r\n }, 1000);\r\n });\r\n};\r\n\r\nconst addToCart = ({\r\n isKit,\r\n guid,\r\n quantity,\r\n options,\r\n currency,\r\n price,\r\n disciplines,\r\n categories,\r\n brandName,\r\n transactionId,\r\n}) => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_item\r\n ) {\r\n initLibs().then(() => {\r\n const id = isKit ? guid : `${guid}-${options[0].optionId}`;\r\n fbqAddToCart({\r\n isKit,\r\n id,\r\n quantity,\r\n currency,\r\n price,\r\n eventId: transactionId,\r\n });\r\n const items = _validateEcommItems();\r\n\r\n // Commentato per evitare eventi duplicati, essendoci dynamic remarketing\r\n ga4AddToCart({\r\n id,\r\n quantity,\r\n currency,\r\n price,\r\n items,\r\n disciplines,\r\n categories,\r\n brandName,\r\n });\r\n\r\n adsAddToCartDynamicRemarketing({\r\n id,\r\n price,\r\n });\r\n adsAddToCartConversion({\r\n id,\r\n currency,\r\n price,\r\n items,\r\n transactionId,\r\n });\r\n });\r\n }\r\n};\r\n\r\nconst viewItemFbq = async ({ slug, guid, options, currencyCode, isKit }) => {\r\n if (\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.view_item\r\n ) {\r\n await initLibs();\r\n\r\n fbqViewItem({ slug, guid, options, currencyCode, isKit });\r\n }\r\n};\r\n\r\nconst _sendPurchase = () => {\r\n if (window.ecomm_pagetype && window.ecomm_pagetype === pageTypes.purchase) {\r\n const transaction_id = _validateEcommTransactionId();\r\n const currency = _validateEcommCurrency();\r\n const value = _validateEcommTotalValue();\r\n const items = _validateEcommItems();\r\n const shipping = _validateEcommShippingFeesEuro();\r\n const valueDecimal = parseFloat(value);\r\n const shippingDecimal = parseFloat(shipping);\r\n fbqPurchase({ currency, value, items, eventId: transaction_id });\r\n ga4Purchase({\r\n transaction_id,\r\n currency,\r\n value: valueDecimal,\r\n shipping: shippingDecimal,\r\n items,\r\n });\r\n purchaseDynamicRemarketing({\r\n value: valueDecimal,\r\n items,\r\n });\r\n\r\n logDebug(`Preparing purchaseConversion data...`);\r\n logDebug(`transaction_id ${transaction_id}`);\r\n const totalEuro = parseFloat(_validateEcommTotalValueEuro());\r\n logDebug(`totalEuro ${totalEuro}`);\r\n purchaseConversion({\r\n orderId: transaction_id,\r\n currency,\r\n totalEuro,\r\n items,\r\n });\r\n }\r\n};\r\n\r\nconst sendGoogleSurvey = ({\r\n enableGoogleSurvey,\r\n merchantId,\r\n orderId,\r\n userEmail,\r\n deliveryCountry,\r\n estimatedDeliveryDate,\r\n surveyoptin,\r\n}) => {\r\n const handleSurvey =\r\n window.ecomm_pagetype &&\r\n window.ecomm_pagetype === pageTypes.purchase &&\r\n enableGoogleSurvey;\r\n console.log('handleSurvey', handleSurvey);\r\n if (handleSurvey) {\r\n console.log('handle');\r\n\r\n const surveyObj = {\r\n merchant_id: merchantId,\r\n order_id: orderId,\r\n email: userEmail,\r\n delivery_country: deliveryCountry,\r\n estimated_delivery_date: estimatedDeliveryDate,\r\n };\r\n logEvent('gooogle survey', surveyObj);\r\n if (!surveyoptin) {\r\n logError('window.gapi.surveyoptin is not defined');\r\n return;\r\n }\r\n console.log('surveyoptin');\r\n surveyoptin.render(surveyObj);\r\n } else {\r\n logDebug(\r\n `Google survey script is disabled for merchantId ${merchantId}. Delivery country: ${deliveryCountry} Order id: ${orderId}`\r\n );\r\n }\r\n};\r\n\r\nconst run = () => {\r\n try {\r\n logDebug('Starting marketing and analytics service...');\r\n initLibs()\r\n .then(({ gtag, fbq, analytics4EnableDebug }) => {\r\n try {\r\n logDebug('window.googleData', window.googleData);\r\n logDebug('window.facebookData', window.facebookData);\r\n\r\n setConfigGoogleAnalytics4({ debug: analytics4EnableDebug });\r\n initConversions();\r\n let thirdPartyConsent = cookieService.getThirdParty();\r\n let marketingPartyConsent =\r\n cookieService.getMarketingParty();\r\n\r\n if (thirdPartyConsent) {\r\n logDebug('Executing actions for thirdPartyConsent...');\r\n fbqPixelId();\r\n fbqPageView();\r\n } else {\r\n logDebug(`No third party consent given`);\r\n }\r\n if (marketingPartyConsent) {\r\n logDebug(\r\n 'Executing actions for marketingPartyConsent...'\r\n );\r\n\r\n _sendInitiateCheckout();\r\n _sendPurchase();\r\n\r\n _sendRegistration();\r\n _sendFbqContact();\r\n _sendViewItem();\r\n _sendSearchItemResults();\r\n _sendViewItemList();\r\n _sendViewCart();\r\n _sendShippingInfo();\r\n } else {\r\n logDebug(`No marketing consent given`);\r\n }\r\n } catch (error) {\r\n logError(`Error on run. ${error}`);\r\n }\r\n })\r\n .catch((err) => {\r\n logError(`Error on run after initializing libs. ${err}`);\r\n });\r\n } catch (error) {\r\n logError(`Error on run() : ${error}`);\r\n }\r\n};\r\n\r\nconst recordBannerClick = async ({ linkUrl, title, index }) => {\r\n try {\r\n await initLibs();\r\n recordGA4BannerClick({ linkUrl, title, index });\r\n } catch (error) {\r\n logError(\r\n `Error recording banner click for url: ${linkUrl} - title: ${title} - index: ${index}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nconst recordPromoImagesClick = async ({\r\n linkUrl,\r\n promoMessage,\r\n index,\r\n imageSrc,\r\n}) => {\r\n try {\r\n await initLibs();\r\n recordGA4PromoImagesClick({\r\n linkUrl,\r\n promoMessage,\r\n index,\r\n imageSrc,\r\n });\r\n } catch (error) {\r\n logError(\r\n `Error recording promo images click for url: ${linkUrl} - promoMessage: ${promoMessage} - index: ${index} - imageSrc: ${imageSrc}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nconst recordInfoboxClick = async ({ linkUrl }) => {\r\n try {\r\n await initLibs();\r\n recordGA4InfoboxClick({\r\n linkUrl,\r\n });\r\n } catch (error) {\r\n logError(\r\n `Error recording infoboxes click for url: ${linkUrl}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nconst recordNewsHomepageClick = async () => {\r\n try {\r\n await initLibs();\r\n recordGA4NewsHomepageClick();\r\n } catch (error) {\r\n logError(`Error recording news homepage click.`, error.message);\r\n }\r\n};\r\n\r\nconst recordHelpClick = async () => {\r\n try {\r\n await initLibs();\r\n recordGA4HelpClick();\r\n } catch (error) {\r\n logError(`Error recording news homepage click.`, error.message);\r\n }\r\n};\r\nconst recordCategoryClick = async ({ linkUrl }) => {\r\n try {\r\n await initLibs();\r\n recordGA4CategoryClick({ linkUrl });\r\n } catch (error) {\r\n logError(\r\n `Error recording category click for ${linkUrl}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nconst recordLogonClick = async ({ linkUrl }) => {\r\n try {\r\n await initLibs();\r\n recordGA4LogonClick({ linkUrl });\r\n } catch (error) {\r\n logError(`Error recording logon click for ${linkUrl}`, error.message);\r\n }\r\n};\r\n\r\nconst recordRegisterClick = async ({ linkUrl }) => {\r\n try {\r\n await initLibs();\r\n recordGA4RegisterClick({ linkUrl });\r\n } catch (error) {\r\n logError(\r\n `Error recording register click for ${linkUrl}`,\r\n error.message\r\n );\r\n }\r\n};\r\n\r\nexport default {\r\n run,\r\n initLibs,\r\n addToCart,\r\n viewItemFbq,\r\n addPaymentInfo,\r\n closePopUp,\r\n popUpButtonClick,\r\n sendGoogleSurvey,\r\n sendRegistration,\r\n recordBannerClick,\r\n recordPromoImagesClick,\r\n recordInfoboxClick,\r\n recordNewsHomepageClick,\r\n recordHelpClick,\r\n recordCategoryClick,\r\n recordLogonClick,\r\n recordRegisterClick,\r\n};\r\n","import { hasIn, includes, split } from 'lodash';\r\n// import \"whatwg-fetch\"; // Polyfill per fetch su IE11\r\n\r\nconst _normalizeUrl = (url) => {\r\n if (!window.location.origin) {\r\n window.location.origin =\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n (window.location.port ? ':' + window.location.port : '');\r\n }\r\n return window.location.origin + $pathBase + url;\r\n};\r\n\r\nconst get = async function ({ url, headers = {} }) {\r\n const mergedHeaders = {\r\n ...{\r\n method: 'GET', // *GET, POST, PUT, DELETE, etc.\r\n // mode: 'no-cors', // no-cors, cors, *same-origin\r\n // cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\r\n // credentials: 'same-origin', // include, *same-origin, omit\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'max-age=15',\r\n // 'Content-Type': 'application/x-www-form-urlencoded',\r\n },\r\n // redirect: 'follow', // manual, *follow, error\r\n // referrer: 'no-referrer', // no-referrer, *client\r\n // body: JSON.stringify(data), // body data type must match \"Content-Type\" header\r\n },\r\n ...headers,\r\n };\r\n url = _normalizeUrl(url);\r\n return fetch(url, mergedHeaders)\r\n .then((response) => {\r\n if (response.status >= 400 && response.status < 600) {\r\n const errorMessage = hasIn(response, 'statusText')\r\n ? response.statusText\r\n : 'Bad response from server';\r\n // throw new Error( errorMessage );\r\n throw { status: response.status, errorMessage };\r\n } else if (response.redirected) {\r\n if (includes(response.url.toLowerCase(), 'logon?returnurl')) {\r\n const returnUrl = encodeURIComponent(\r\n split(\r\n window.location.toString(),\r\n window.location.origin\r\n )[1]\r\n );\r\n window.location = `${\r\n split(response.url, '?')[0]\r\n }?returnUrl=${returnUrl}`;\r\n return;\r\n }\r\n window.location = response.url;\r\n return;\r\n }\r\n return response;\r\n })\r\n .then((returnedResponse) => {\r\n // Your response to manipulate\r\n return includes(\r\n returnedResponse.headers.get('Content-Type'),\r\n 'application/json'\r\n )\r\n ? returnedResponse.json()\r\n : returnedResponse;\r\n })\r\n .catch((error) => {\r\n // Your error is here!\r\n if (error.status && error.status === 500) {\r\n console.error(error);\r\n }\r\n throw error;\r\n });\r\n};\r\n\r\nconst postFormData = async function ({ url, body }) {\r\n url = _normalizeUrl(url);\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n body: body,\r\n });\r\n return response;\r\n};\r\n\r\nconst post = async function ({ url, body = {} }) {\r\n url = _normalizeUrl(url);\r\n const rawResponse = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n });\r\n\r\n if (rawResponse.redirected) {\r\n if (includes(rawResponse.url.toLowerCase(), 'logon?returnurl')) {\r\n const returnUrl = encodeURIComponent(\r\n split(window.location.toString(), window.location.origin)[1]\r\n );\r\n window.location = `${\r\n split(rawResponse.url, '?')[0]\r\n }?returnUrl=${returnUrl}`;\r\n return {};\r\n }\r\n window.location = rawResponse.url;\r\n return {};\r\n }\r\n\r\n const content = await rawResponse.json();\r\n return content;\r\n};\r\n\r\nconst remove = async function ({ url, headers = {} }) {\r\n url = _normalizeUrl(url);\r\n return fetch(url, {\r\n ...{\r\n method: 'DELETE', // *GET, POST, PUT, DELETE, etc.\r\n cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n },\r\n ...headers,\r\n })\r\n .then((returnedResponse) => {\r\n return includes(\r\n returnedResponse.headers.get('Content-Type'),\r\n 'application/json'\r\n )\r\n ? returnedResponse.json()\r\n : returnedResponse;\r\n })\r\n .catch((error) => {\r\n if (error.status && error.status === 500) {\r\n console.error(error);\r\n }\r\n throw error;\r\n });\r\n};\r\n\r\nexport { get, postFormData, post, remove };\r\n","import marketingAndAnalyticsService from '../../services/marketingAndAnalytics/marketingAndAnalyticsService';\r\nimport { setInitialRecaptcha } from '../../services/captchaService.js';\r\nimport { postFormData } from '../../common/httpService';\r\n\r\nconst _sendRegisterEventForAnalytics = () => {\r\n const newsletterCheckbox = document.getElementById('Newsletter');\r\n if (newsletterCheckbox && newsletterCheckbox.checked) {\r\n const email = document.getElementById('Email');\r\n if (email) {\r\n return marketingAndAnalyticsService.sendRegistration({\r\n url: window.location.href,\r\n email: email.value,\r\n });\r\n }\r\n return Promise.resolve();\r\n }\r\n return Promise.resolve();\r\n};\r\nconst postRegisterRequest = async ({\r\n postFormData,\r\n registerData,\r\n stopRetry,\r\n}) => {\r\n const response = await postFormData({\r\n url: 'Account/Register',\r\n body: registerData,\r\n });\r\n let stop = stopRetry === undefined ? false : stopRetry;\r\n if (response.status !== 200 && postFormData !== undefined && !stop) {\r\n return postRegisterRequest({\r\n postFormData,\r\n registerData,\r\n stopRetry: true,\r\n });\r\n }\r\n if (response.status !== 200) {\r\n throw new Error(response.message);\r\n }\r\n return response.json();\r\n};\r\n\r\nconst submitRegister = document.getElementById('submitRegister');\r\nif (submitRegister !== null) {\r\n submitRegister.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n setInitialRecaptcha(window.recaptchaSiteKey).then(async (token) => {\r\n var placeholderForRecaptcha =\r\n document.getElementById('recaptchaRegister');\r\n\r\n placeholderForRecaptcha.value = token;\r\n try {\r\n const formId = document.getElementById('registerForm');\r\n if (formId) {\r\n const registerData = new FormData(formId);\r\n const response = await postRegisterRequest({\r\n postFormData,\r\n registerData,\r\n });\r\n if (response.isSuccess === true) {\r\n _sendRegisterEventForAnalytics().then(() => {\r\n window.location.href =\r\n window.location.origin + response.url;\r\n });\r\n } else {\r\n const validationSummary = document.querySelector(\r\n '.validation-summary'\r\n );\r\n if (validationSummary) {\r\n let errors = '';\r\n for (let i = 0; i < response.message.length; i++) {\r\n errors += `
  • ${response.message[i]}
  • `;\r\n }\r\n\r\n validationSummary.children[0].innerHTML = errors;\r\n } else {\r\n throw new Error('Validation errors');\r\n }\r\n }\r\n } else {\r\n console.error('registerForm id not found');\r\n }\r\n } catch (error) {\r\n console.error(`Error in form `, error);\r\n alert(\r\n 'Oh no :( something went wrong. Please contact customer support.'\r\n );\r\n }\r\n const buttonsWait =\r\n document.getElementsByClassName('js-button-wait');\r\n for (let index = 0; index < buttonsWait.length; index++) {\r\n const buttonWait = buttonsWait[index];\r\n buttonWait.classList.remove('button--wait');\r\n }\r\n });\r\n });\r\n}\r\n","var setInitialRecaptcha = (recaptchaSiteKey) => {\r\n var promise = new Promise((resolve, reject) => {\r\n try {\r\n var id = 'recaptchaRegister';\r\n\r\n var placeholderForRecaptcha = document.getElementById(id);\r\n if (placeholderForRecaptcha && grecaptcha) {\r\n grecaptcha.ready(function () {\r\n var id = 'recaptchaRegister';\r\n var action =\r\n document\r\n .getElementById(id)\r\n .getAttribute('data-action') ||\r\n 'action-not-defined';\r\n grecaptcha\r\n .execute(recaptchaSiteKey, {\r\n action: action,\r\n })\r\n .then(function (token) {\r\n resolve(token);\r\n })\r\n .catch((err) => {\r\n console.error('Error in recaptcha management', err);\r\n reject('Error in recaptcha management');\r\n });\r\n });\r\n }\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n return promise;\r\n};\r\n\r\nexport { setInitialRecaptcha };\r\n","/*!\r\n * modernizr v3.6.0\r\n * Build https://modernizr.com/download?-mq-dontmin\r\n *\r\n * Copyright (c)\r\n * Faruk Ates\r\n * Paul Irish\r\n * Alex Sexton\r\n * Ryan Seddon\r\n * Patrick Kettner\r\n * Stu Cox\r\n * Richard Herrera\r\n\r\n * MIT License\r\n */\r\n\r\n/*\r\n * Modernizr tests which native CSS3 and HTML5 features are available in the\r\n * current UA and makes the results available to you in two ways: as properties on\r\n * a global `Modernizr` object, and as classes on the `` element. This\r\n * information allows you to progressively enhance your pages with a granular level\r\n * of control over the experience.\r\n*/\r\n\r\n;(function(window, document, undefined){\r\n var tests = [];\r\n \r\n\r\n /**\r\n *\r\n * ModernizrProto is the constructor for Modernizr\r\n *\r\n * @class\r\n * @access public\r\n */\r\n\r\n var ModernizrProto = {\r\n // The current version, dummy\r\n _version: '3.6.0',\r\n\r\n // Any settings that don't work as separate modules\r\n // can go in here as configuration.\r\n _config: {\r\n 'classPrefix': '',\r\n 'enableClasses': true,\r\n 'enableJSClass': true,\r\n 'usePrefixes': true\r\n },\r\n\r\n // Queue of tests\r\n _q: [],\r\n\r\n // Stub these for people who are listening\r\n on: function(test, cb) {\r\n // I don't really think people should do this, but we can\r\n // safe guard it a bit.\r\n // -- NOTE:: this gets WAY overridden in src/addTest for actual async tests.\r\n // This is in case people listen to synchronous tests. I would leave it out,\r\n // but the code to *disallow* sync tests in the real version of this\r\n // function is actually larger than this.\r\n var self = this;\r\n setTimeout(function() {\r\n cb(self[test]);\r\n }, 0);\r\n },\r\n\r\n addTest: function(name, fn, options) {\r\n tests.push({name: name, fn: fn, options: options});\r\n },\r\n\r\n addAsyncTest: function(fn) {\r\n tests.push({name: null, fn: fn});\r\n }\r\n };\r\n\r\n \r\n\r\n // Fake some of Object.create so we can force non test results to be non \"own\" properties.\r\n var Modernizr = function() {};\r\n Modernizr.prototype = ModernizrProto;\r\n\r\n // Leak modernizr globally when you `require` it rather than force it here.\r\n // Overwrite name so constructor name is nicer :D\r\n Modernizr = new Modernizr();\r\n\r\n \r\n\r\n var classes = [];\r\n \r\n\r\n /**\r\n * is returns a boolean if the typeof an obj is exactly type.\r\n *\r\n * @access private\r\n * @function is\r\n * @param {*} obj - A thing we want to check the type of\r\n * @param {string} type - A string to compare the typeof against\r\n * @returns {boolean}\r\n */\r\n\r\n function is(obj, type) {\r\n return typeof obj === type;\r\n }\r\n ;\r\n\r\n /**\r\n * Run through all tests and detect their support in the current UA.\r\n *\r\n * @access private\r\n */\r\n\r\n function testRunner() {\r\n var featureNames;\r\n var feature;\r\n var aliasIdx;\r\n var result;\r\n var nameIdx;\r\n var featureName;\r\n var featureNameSplit;\r\n\r\n for (var featureIdx in tests) {\r\n if (tests.hasOwnProperty(featureIdx)) {\r\n featureNames = [];\r\n feature = tests[featureIdx];\r\n // run the test, throw the return value into the Modernizr,\r\n // then based on that boolean, define an appropriate className\r\n // and push it into an array of classes we'll join later.\r\n //\r\n // If there is no name, it's an 'async' test that is run,\r\n // but not directly added to the object. That should\r\n // be done with a post-run addTest call.\r\n if (feature.name) {\r\n featureNames.push(feature.name.toLowerCase());\r\n\r\n if (feature.options && feature.options.aliases && feature.options.aliases.length) {\r\n // Add all the aliases into the names list\r\n for (aliasIdx = 0; aliasIdx < feature.options.aliases.length; aliasIdx++) {\r\n featureNames.push(feature.options.aliases[aliasIdx].toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n // Run the test, or use the raw value if it's not a function\r\n result = is(feature.fn, 'function') ? feature.fn() : feature.fn;\r\n\r\n\r\n // Set each of the names on the Modernizr object\r\n for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) {\r\n featureName = featureNames[nameIdx];\r\n // Support dot properties as sub tests. We don't do checking to make sure\r\n // that the implied parent tests have been added. You must call them in\r\n // order (either in the test, or make the parent test a dependency).\r\n //\r\n // Cap it to TWO to make the logic simple and because who needs that kind of subtesting\r\n // hashtag famous last words\r\n featureNameSplit = featureName.split('.');\r\n\r\n if (featureNameSplit.length === 1) {\r\n Modernizr[featureNameSplit[0]] = result;\r\n } else {\r\n // cast to a Boolean, if not one already\r\n if (Modernizr[featureNameSplit[0]] && !(Modernizr[featureNameSplit[0]] instanceof Boolean)) {\r\n Modernizr[featureNameSplit[0]] = new Boolean(Modernizr[featureNameSplit[0]]);\r\n }\r\n\r\n Modernizr[featureNameSplit[0]][featureNameSplit[1]] = result;\r\n }\r\n\r\n classes.push((result ? '' : 'no-') + featureNameSplit.join('-'));\r\n }\r\n }\r\n }\r\n }\r\n ;\r\n\r\n /**\r\n * docElement is a convenience wrapper to grab the root element of the document\r\n *\r\n * @access private\r\n * @returns {HTMLElement|SVGElement} The root element of the document\r\n */\r\n\r\n var docElement = document.documentElement;\r\n \r\n\r\n /**\r\n * A convenience helper to check if the document we are running in is an SVG document\r\n *\r\n * @access private\r\n * @returns {boolean}\r\n */\r\n\r\n var isSVG = docElement.nodeName.toLowerCase() === 'svg';\r\n \r\n\r\n /**\r\n * createElement is a convenience wrapper around document.createElement. Since we\r\n * use createElement all over the place, this allows for (slightly) smaller code\r\n * as well as abstracting away issues with creating elements in contexts other than\r\n * HTML documents (e.g. SVG documents).\r\n *\r\n * @access private\r\n * @function createElement\r\n * @returns {HTMLElement|SVGElement} An HTML or SVG element\r\n */\r\n\r\n function createElement() {\r\n if (typeof document.createElement !== 'function') {\r\n // This is the case in IE7, where the type of createElement is \"object\".\r\n // For this reason, we cannot call apply() as Object is not a Function.\r\n return document.createElement(arguments[0]);\r\n } else if (isSVG) {\r\n return document.createElementNS.call(document, 'http://www.w3.org/2000/svg', arguments[0]);\r\n } else {\r\n return document.createElement.apply(document, arguments);\r\n }\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * getBody returns the body of a document, or an element that can stand in for\r\n * the body if a real body does not exist\r\n *\r\n * @access private\r\n * @function getBody\r\n * @returns {HTMLElement|SVGElement} Returns the real body of a document, or an\r\n * artificially created element that stands in for the body\r\n */\r\n\r\n function getBody() {\r\n // After page load injecting a fake body doesn't work so check if body exists\r\n var body = document.body;\r\n\r\n if (!body) {\r\n // Can't use the real body create a fake one.\r\n body = createElement(isSVG ? 'svg' : 'body');\r\n body.fake = true;\r\n }\r\n\r\n return body;\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * injectElementWithStyles injects an element with style element and some CSS rules\r\n *\r\n * @access private\r\n * @function injectElementWithStyles\r\n * @param {string} rule - String representing a css rule\r\n * @param {function} callback - A function that is used to test the injected element\r\n * @param {number} [nodes] - An integer representing the number of additional nodes you want injected\r\n * @param {string[]} [testnames] - An array of strings that are used as ids for the additional nodes\r\n * @returns {boolean}\r\n */\r\n\r\n function injectElementWithStyles(rule, callback, nodes, testnames) {\r\n var mod = 'modernizr';\r\n var style;\r\n var ret;\r\n var node;\r\n var docOverflow;\r\n var div = createElement('div');\r\n var body = getBody();\r\n\r\n if (parseInt(nodes, 10)) {\r\n // In order not to give false positives we create a node for each test\r\n // This also allows the method to scale for unspecified uses\r\n while (nodes--) {\r\n node = createElement('div');\r\n node.id = testnames ? testnames[nodes] : mod + (nodes + 1);\r\n div.appendChild(node);\r\n }\r\n }\r\n\r\n style = createElement('style');\r\n style.type = 'text/css';\r\n style.id = 's' + mod;\r\n\r\n // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.\r\n // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270\r\n (!body.fake ? div : body).appendChild(style);\r\n body.appendChild(div);\r\n\r\n if (style.styleSheet) {\r\n style.styleSheet.cssText = rule;\r\n } else {\r\n style.appendChild(document.createTextNode(rule));\r\n }\r\n div.id = mod;\r\n\r\n if (body.fake) {\r\n //avoid crashing IE8, if background image is used\r\n body.style.background = '';\r\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\r\n body.style.overflow = 'hidden';\r\n docOverflow = docElement.style.overflow;\r\n docElement.style.overflow = 'hidden';\r\n docElement.appendChild(body);\r\n }\r\n\r\n ret = callback(div, rule);\r\n // If this is done after page load we don't want to remove the body so check if body exists\r\n if (body.fake) {\r\n body.parentNode.removeChild(body);\r\n docElement.style.overflow = docOverflow;\r\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\r\n // eslint-disable-next-line\r\n docElement.offsetHeight;\r\n } else {\r\n div.parentNode.removeChild(div);\r\n }\r\n\r\n return !!ret;\r\n\r\n }\r\n\r\n ;\r\n\r\n /**\r\n * Modernizr.mq tests a given media query, live against the current state of the window\r\n * adapted from matchMedia polyfill by Scott Jehl and Paul Irish\r\n * gist.github.com/786768\r\n *\r\n * @memberof Modernizr\r\n * @name Modernizr.mq\r\n * @optionName Modernizr.mq()\r\n * @optionProp mq\r\n * @access public\r\n * @function mq\r\n * @param {string} mq - String of the media query we want to test\r\n * @returns {boolean}\r\n * @example\r\n * Modernizr.mq allows for you to programmatically check if the current browser\r\n * window state matches a media query.\r\n *\r\n * ```js\r\n * var query = Modernizr.mq('(min-width: 900px)');\r\n *\r\n * if (query) {\r\n * // the browser window is larger than 900px\r\n * }\r\n * ```\r\n *\r\n * Only valid media queries are supported, therefore you must always include values\r\n * with your media query\r\n *\r\n * ```js\r\n * // good\r\n * Modernizr.mq('(min-width: 900px)');\r\n *\r\n * // bad\r\n * Modernizr.mq('min-width');\r\n * ```\r\n *\r\n * If you would just like to test that media queries are supported in general, use\r\n *\r\n * ```js\r\n * Modernizr.mq('only all'); // true if MQ are supported, false if not\r\n * ```\r\n *\r\n *\r\n * Note that if the browser does not support media queries (e.g. old IE) mq will\r\n * always return false.\r\n */\r\n\r\n var mq = (function() {\r\n var matchMedia = window.matchMedia || window.msMatchMedia;\r\n if (matchMedia) {\r\n return function(mq) {\r\n var mql = matchMedia(mq);\r\n return mql && mql.matches || false;\r\n };\r\n }\r\n\r\n return function(mq) {\r\n var bool = false;\r\n\r\n injectElementWithStyles('@media ' + mq + ' { #modernizr { position: absolute; } }', function(node) {\r\n bool = (window.getComputedStyle ?\r\n window.getComputedStyle(node, null) :\r\n node.currentStyle).position == 'absolute';\r\n });\r\n\r\n return bool;\r\n };\r\n })();\r\n\r\n\r\n ModernizrProto.mq = mq;\r\n\r\n \r\n\r\n // Run each test\r\n testRunner();\r\n\r\n delete ModernizrProto.addTest;\r\n delete ModernizrProto.addAsyncTest;\r\n\r\n // Run the things that are supposed to run after the tests\r\n for (var i = 0; i < Modernizr._q.length; i++) {\r\n Modernizr._q[i]();\r\n }\r\n\r\n // Leak Modernizr namespace\r\n window.Modernizr = Modernizr;\r\n\r\n\r\n;\r\n\r\n})(window, document);","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = \"register\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"modernizr\": 0,\n\t\"register\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkecommerce\"] = self[\"webpackChunkecommerce\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [\"lodash\",\"tracing\"], function() { return __webpack_require__(39590); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","module","exports","debug","realtime","tokenUrl","paymentHubUrl","username","password","useCdn","cdnImagesUrl","cdnImagesFallbackUrl","cdnCmsAssetsUrl","supportedCultures","cms","cmsUrl","tracingUrl","config","lordgun","development","require","staging","production","runkd","inwild","environment","NODE_ENV","toLowerCase","trim","configObj","getConfig","SITE","asyncGeneratorStep","n","t","e","r","o","a","c","i","u","value","done","Promise","resolve","then","this","arguments","apply","_next","_throw","initializedLoggers","_initJsNlog","_ref","loggerName","indexOf","defaultLoggingUrl","window","$pathBase","appender","JL","createAjaxAppender","consoleAppender","createConsoleAppender","setOptions","bufferSize","maxBatchSize","url","defaultAjaxUrl","appenders","_oldOnErrorHandler","onerror","msg","line","column","error","sourceUrl","location","href","concat","fatalException","errorMsg","_oldOnUnhandledRejectionHandler","onunhandledrejection","event","reasonMessage","reason","message","fatal","push","logDebug","_len","length","args","Array","_key","logEvent","_len3","_key3","logWarn","_len4","_key4","console","warn","logError","_len5","_key5","userProfileCookieKey","cookie","cname","name","ca","decodeURIComponent","document","split","charAt","substring","_getCookie","parsedCookie","JSON","parse","atob","countryCode","CountryCode","currencyCode","CurrencyCode","Name","Error","validateGoogleData","prop","defaultValue","googleData","undefined","validateEcommerceData","ecommerceData","extractAdwordsConfiguration","adwordsConfiguration","replace","_prefix","_validateGtag","gtag","_getDestinationId","property","cookieService","defaultCountryCode","valueForSelectedCountry","isNil","isEmpty","_len2","_key2","info","logInfo","valueForDefaultCountry","_getConversionId","newsletterRegistration","_ref5","email","conversionId","newsletterLabel","obj","send_to","_validateFbq","fbq","_sendNewsletterRegistration","_ref3","completeRegistrationObj","status","content_name","fbqNewsletterRegistration","_ref4","ga4NewsletterRegistration","adsNewsletterRegistrationSendConversion","initLibs","reject","analytics4EnableDebug","retryCount","interval","setInterval","_ref12","dataLayer","Date","initGoogleAnalytics4","f","b","callMethod","queue","_fbq","loaded","version","createElement","async","src","s","getElementsByTagName","parentNode","insertBefore","clearInterval","_ref2","err","_normalizeUrl","origin","protocol","hostname","port","postFormData","_asyncToGenerator","_regeneratorRuntime","_callee2","body","response","_context2","prev","next","fetch","method","sent","abrupt","stop","_x2","_sendRegisterEventForAnalytics","newsletterCheckbox","getElementById","checked","marketingAndAnalyticsService","postRegisterRequest","_callee","registerData","stopRetry","_context","json","_x","submitRegister","addEventListener","recaptchaSiteKey","preventDefault","grecaptcha","ready","action","getAttribute","execute","token","formId","validationSummary","errors","buttonsWait","index","FormData","isSuccess","querySelector","children","innerHTML","t0","alert","getElementsByClassName","classList","remove","tests","ModernizrProto","_version","_config","_q","on","test","cb","self","setTimeout","addTest","fn","options","addAsyncTest","Modernizr","prototype","classes","docElement","documentElement","isSVG","nodeName","createElementNS","call","injectElementWithStyles","rule","callback","nodes","testnames","style","ret","node","docOverflow","mod","div","fake","getBody","parseInt","id","appendChild","type","styleSheet","cssText","createTextNode","background","overflow","removeChild","offsetHeight","matchMedia","mq","msMatchMedia","mql","matches","bool","getComputedStyle","currentStyle","position","featureNames","feature","aliasIdx","result","nameIdx","featureNameSplit","featureIdx","hasOwnProperty","aliases","_typeof","Boolean","join","testRunner","__esModule","Object","defineProperty","Symbol","iterator","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","_sent","dispatchException","TypeError","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","keys","reverse","pop","slice","rval","handle","complete","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","key","splice","getter","definition","get","hmd","set","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","some","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""}