{"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 += `