{"version":3,"file":"wpm-public.p1.min.js","mappings":"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","sources":["webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/cookie_consent.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions_loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/init.js","webpack://Pixel-Manager-for-WooCommerce/webpack/bootstrap","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/main.js"],"sourcesContent":["/**\n * All event listeners\n *\n * https://developers.facebook.com/docs/meta-pixel/reference\n * */\n\n// Load pixel event\njQuery(document).on(\"wpmLoadPixels\", () => {\n\n\tif (\n\t\twpmDataLayer?.pixels?.facebook?.pixel_id\n\t\t&& !wpmDataLayer?.pixels?.facebook?.loaded\n\t\t&& !wpm.doesUrlContainPatterns(wpmDataLayer?.pixels?.facebook?.exclusion_patterns)\n\t) {\n\t\tif (wpm.canIFire(\"ads\", \"facebook-ads\")) wpm.loadFacebookPixel()\n\t}\n})\n\n// AddToCart event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToCart\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToCart\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// InitiateCheckout event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideBeginCheckout\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"InitiateCheckout\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// AddToWishlist event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToWishlist\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToWishlist\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// ViewContent event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideViewItem\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"ViewContent\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n\n// view search event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideSearch\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Search\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// load always event\njQuery(document).on(\"wpmLoadAlways\", () => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.setFbUserData()\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// view order received page event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideOrderReceivedPage\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Purchase\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n","/**\n * Add functions for Facebook\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet fbUserData\n\n\twpm.loadFacebookPixel = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.facebook.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(f,b,e,v,n,t,s)\n\t\t\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\t\t\t\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\t\t\t\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\t\t\t\tn.queue=[];t=b.createElement(e);t.async=!0;\n\t\t\t\tt.src=v;s=b.getElementsByTagName(e)[0];\n\t\t\t\ts.parentNode.insertBefore(t,s)}(window, document,'script',\n\t\t\t\t'https://connect.facebook.net/en_US/fbevents.js');\n\t\t\t// @formatter:on\n\n\t\t\tlet data = {}\n\n\t\t\t// Add user identifiers to data,\n\t\t\t// and only if fbp was set\n\t\t\tif (wpm.isFbpSet()) {\n\t\t\t\tdata = {...wpm.getUserIdentifiersForFb()}\n\t\t\t}\n\n\t\t\tfbq(\"init\", wpmDataLayer.pixels.facebook.pixel_id, data)\n\t\t\tfbq(\"track\", \"PageView\")\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// https://developers.facebook.com/docs/meta-pixel/advanced/advanced-matching\n\twpm.getUserIdentifiersForFb = () => {\n\n\t\tlet data = {}\n\n\t\t// external ID\n\t\tif (wpmDataLayer?.user?.id) data.external_id = wpmDataLayer.user.id\n\t\tif (wpmDataLayer?.order?.user_id) data.external_id = wpmDataLayer.order.user_id\n\n\t\t// email\n\t\tif (wpmDataLayer?.user?.facebook?.email) data.em = wpmDataLayer.user.facebook.email\n\t\tif (wpmDataLayer?.order?.billing_email_hashed) data.em = wpmDataLayer.order.billing_email_hashed\n\n\t\t// first name\n\t\tif (wpmDataLayer?.user?.facebook?.first_name) data.fn = wpmDataLayer.user.facebook.first_name\n\t\tif (wpmDataLayer?.order?.billing_first_name) data.fn = wpmDataLayer.order.billing_first_name.toLowerCase()\n\n\t\t// last name\n\t\tif (wpmDataLayer?.user?.facebook?.last_name) data.ln = wpmDataLayer.user.facebook.last_name\n\t\tif (wpmDataLayer?.order?.billing_last_name) data.ln = wpmDataLayer.order.billing_last_name.toLowerCase()\n\n\t\t// phone\n\t\tif (wpmDataLayer?.user?.facebook?.phone) data.ph = wpmDataLayer.user.facebook.phone\n\t\tif (wpmDataLayer?.order?.billing_phone) data.ph = wpmDataLayer.order.billing_phone.replace(\"+\", \"\")\n\n\t\t// city\n\t\tif (wpmDataLayer?.user?.facebook?.city) data.ct = wpmDataLayer.user.facebook.city\n\t\tif (wpmDataLayer?.order?.billing_city) data.ct = wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g, \"\")\n\n\t\t// state\n\t\tif (wpmDataLayer?.user?.facebook?.state) data.st = wpmDataLayer.user.facebook.state\n\t\tif (wpmDataLayer?.order?.billing_state) data.st = wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/, \"\")\n\n\t\t// postcode\n\t\tif (wpmDataLayer?.user?.facebook?.postcode) data.zp = wpmDataLayer.user.facebook.postcode\n\t\tif (wpmDataLayer?.order?.billing_postcode) data.zp = wpmDataLayer.order.billing_postcode\n\n\t\t// country\n\t\tif (wpmDataLayer?.user?.facebook?.country) data.country = wpmDataLayer.user.facebook.country\n\t\tif (wpmDataLayer?.order?.billing_country) data.country = wpmDataLayer.order.billing_country.toLowerCase()\n\n\t\treturn data\n\t}\n\n\twpm.getFbRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\twpm.getFbUserData = () => {\n\n\t\t/**\n\t\t * We need to cache the FB user data for InitiateCheckout\n\t\t * where getting the user data from the browser is too slow\n\t\t * using wpm.getCookie().\n\t\t *\n\t\t * And we need the object merge because the ViewContent hit happens too fast\n\t\t * after adding a variation to the cart because the function to cache\n\t\t * the user data is too slow.\n\t\t *\n\t\t * But we can get the user_data using wpm.getCookie()\n\t\t * because we don't move away from the page and can wait for the browser\n\t\t * to get it.\n\t\t *\n\t\t * Also, the merge ensures that new data will be added to fbUserData if new\n\t\t * data is being added later, like user ID, or fbc.\n\t\t */\n\n\t\tfbUserData = {...fbUserData, ...wpm.getFbUserDataFromBrowser()}\n\n\t\treturn fbUserData\n\t}\n\n\twpm.setFbUserData = () => {\n\t\tfbUserData = wpm.getFbUserDataFromBrowser()\n\t}\n\n\twpm.getFbUserDataFromBrowser = () => {\n\n\t\tlet\n\t\t\tdata = {}\n\n\t\tif (wpm.getCookie(\"_fbp\") && wpm.isValidFbp(wpm.getCookie(\"_fbp\"))) {\n\t\t\tdata.fbp = wpm.getCookie(\"_fbp\")\n\t\t}\n\n\t\tif (wpm.getCookie(\"_fbc\") && wpm.isValidFbc(wpm.getCookie(\"_fbc\"))) {\n\t\t\tdata.fbc = wpm.getCookie(\"_fbc\")\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.external_id = wpmDataLayer.user.id\n\t\t}\n\n\t\tif (navigator.userAgent) {\n\t\t\tdata.client_user_agent = navigator.userAgent\n\t\t}\n\n\t\treturn data\n\t}\n\n\twpm.isFbpSet = () => {\n\t\treturn !!wpm.getCookie(\"_fbp\")\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbp = fbp => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.\\d{8,20}$/)\n\n\t\treturn re.test(fbp)\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbc = fbc => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.[\\da-zA-Z_-]{8,}/)\n\n\t\treturn re.test(fbc)\n\t}\n\n\t// wpm.fbViewContent = (product = null) => {\n\t//\n\t// \ttry {\n\t// \t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\t//\n\t// \t\tlet eventId = wpm.getFbRandomEventId()\n\t//\n\t// \t\tlet data = {}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tdata.content_type = \"product\"\n\t// \t\t\tdata.content_name = product.name\n\t// \t\t\t// data.content_category = product.category\n\t// \t\t\tdata.content_ids = product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]\n\t// \t\t\tdata.currency = wpmDataLayer.shop.currency\n\t// \t\t\tdata.value = product.price\n\t// \t\t}\n\t//\n\t// \t\tfbq(\"track\", \"ViewContent\", data, {\n\t// \t\t\teventID: eventId,\n\t// \t\t})\n\t//\n\t// \t\tlet capiData = {\n\t// \t\t\tevent_name : \"ViewContent\",\n\t// \t\t\tevent_id : eventId,\n\t// \t\t\tuser_data : wpm.getFbUserData(),\n\t// \t\t\tevent_source_url: window.location.href,\n\t// \t\t}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\t// \t\t\tcapiData.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t// \t\t}\n\t//\n\t// \t\tjQuery(document).trigger(\"wpmFbCapiEvent\", capiData)\n\t// \t} catch (e) {\n\t// \t\tconsole.error(e)\n\t// \t}\n\t// }\n\n\twpm.fbGetProductDataForCapiEvent = product => {\n\t\treturn {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : [\n\t\t\t\tproduct.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}\n\t}\n\n\twpm.facebookContentIds = () => {\n\t\tlet prodIds = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn prodIds\n\t}\n\n\twpm.trackCustomFacebookEvent = (eventName, customData = {}) => {\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getFbRandomEventId()\n\n\t\t\tfbq(\"trackCustom\", eventName, customData, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : eventName,\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t\tcustom_data : customData,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fbGetContentIdsFromCart = () => {\n\n\t\tlet content_ids = []\n\n\t\tfor(const key in wpmDataLayer.cart){\n\t\t\tcontent_ids.push(wpmDataLayer.products[key].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])\n\t\t}\n\t\t\n\t\treturn content_ids\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Facebook loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n\n","/**\n * Load Google Ads event listeners\n * */\n\n// view_item_list event\njQuery(document).on(\"wpmViewItemList\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tif (\n\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\tproduct.isVariable &&\n\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t) return\n\n\t\t// try to prevent that WC sends cached hits to Google\n\t\tif (!product) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item_list\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : product.quantity * product.price,\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : product.quantity,\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_cart\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tdata.value = (product.quantity ? product.quantity : 1) * product.price\n\t\t\tdata.items = [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : (product.quantity ? product.quantity : 1),\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}]\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tlet products = []\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\n\t\t\tif (\n\t\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\t\tproduct.isVariable &&\n\t\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t\t) return\n\n\t\t\tproducts.push({\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t})\n\t\t}\n\n\t\t// console.log(products);\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t// value : 1 * product.price,\n\t\t\titems: products,\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_search_results\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\n// TODO distinguish with or without cart data active\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\titems : wpm.getGoogleAdsDynamicRemarketingOrderItems(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", data)\n\t\t})\n\n\t\t// console.log(wpm.getGoogleAdsDynamicRemarketingOrderItems())\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// user log in event\njQuery(document).on(\"wpmLogin\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"login\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// conversion event\n// new_customer parameter: https://support.google.com/google-ads/answer/9917012\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel())) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data_basic = {}\n\t\tlet data_with_cart = {}\n\n\t\tdata_basic = {\n\t\t\tsend_to : wpm.getGoogleAdsConversionIdentifiersWithLabel(),\n\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tnew_customer : wpmDataLayer.order.new_customer,\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.clv_order_value_filtered) {\n\t\t\tdata_basic.customer_lifetime_value = wpmDataLayer.order.clv_order_value_filtered\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata_basic.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.aw_merchant_id) {\n\t\t\tdata_with_cart = {\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\taw_merchant_id : wpmDataLayer.order.aw_merchant_id,\n\t\t\t\taw_feed_country : wpmDataLayer.order.aw_feed_country,\n\t\t\t\taw_feed_language: wpmDataLayer.order.aw_feed_language,\n\t\t\t\titems : wpm.getGoogleAdsRegularOrderItems(),\n\t\t\t}\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"conversion\", {...data_basic, ...data_with_cart})\n\t\t})\n\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load Google Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\n\twpm.getGoogleAdsConversionIdentifiersWithLabel = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds) {\n\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\tif (item) {\n\t\t\t\t\tconversionIdentifiers.push(key + \"/\" + item)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsConversionIdentifiers = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\tconversionIdentifiers.push(key)\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsRegularOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.getGoogleAdsDynamicRemarketingOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google Ads\n */\n\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Google Universal Analytics (GA3) event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.universal.property_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGAUAOrderItems(),\n\t\t\t})\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Add functions for Google Analytics Universal\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGAUAOrderItems = function () {\n\n\t\t// \"id\" : \"34\",\n\t\t// \"name\" : \"Hoodie\",\n\t\t// \"brand\" : \"\",\n\t\t// \"category\" : \"Hoodies\",\n\t\t// \"list_position\": 1,\n\t\t// \"price\" : 45,\n\t\t// \"quantity\" : 1,\n\t\t// \"variant\" : \"Color: blue | Logo: yes\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tname : item.name,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcategory: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItem = wpm.ga3AddListNameToProduct(orderItem)\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.ga3AddListNameToProduct = function (item_data, productPosition = null) {\n\n\t\t// if (wpm.ga3CanProductListBeSet(item_data.id)) {\n\t\t// \titem_data.listname = wpmDataLayer.shop.list_name\n\t\t//\n\t\t// \tif (productPosition) {\n\t\t// \t\titem_data.list_position = productPosition\n\t\t// \t}\n\t\t// }\n\n\t\titem_data.list_name = wpmDataLayer.shop.list_name\n\n\t\tif (productPosition) {\n\t\t\titem_data.list_position = productPosition\n\t\t}\n\n\t\treturn item_data\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Google Universal Analytics (GA3) loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load GA4 event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.ga4.measurement_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGA4OrderItems(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load GA4 functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGA4OrderItems = function () {\n\n\t\t// \"item_id\" : \"34\",\n\t\t// \"item_name\" : \"Hoodie\",\n\t\t// \"quantity\" : 1,\n\t\t// \"item_brand\" : \"\",\n\t\t// \"item_variant\" : \"Color: blue | Logo: yes\",\n\t\t// \"price\" : 45,\n\t\t// \"currency\" : \"CHF\",\n\t\t// \"item_category\": \"Hoodies\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\titem_name : item.name,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\titem_category: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * GA4 loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Google Analytics loader\n */\n\nrequire(\"./ga3/loader\")\nrequire(\"./ga4/loader\")\n","/**\n * Load Google base event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") {\n\t\tif (wpm.canGoogleLoad()) {\n\t\t\twpm.loadGoogle()\n\t\t} else {\n\t\t\twpm.logPreventedPixelLoading(\"google\", \"analytics / ads\")\n\t\t}\n\t}\n})\n","/**\n * Load Google base functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.googleConfigConditionsMet = function (type) {\n\n\t\t// always returns true if Google Consent Mode is active\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (wpm.getConsentValues().mode === \"category\") {\n\t\t\treturn wpm.getConsentValues().categories[type] === true\n\t\t} else if (wpm.getConsentValues().mode === \"pixel\") {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-\" + type)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings = function (google_consent_settings) {\n\n\t\tif (wpm.getConsentValues().mode === \"category\") {\n\n\t\t\tif (wpm.getConsentValues().categories.analytics) google_consent_settings.analytics_storage = \"granted\"\n\t\t\tif (wpm.getConsentValues().categories.ads) google_consent_settings.ad_storage = \"granted\"\n\t\t} else if ((wpm.getConsentValues().mode === \"pixel\")) {\n\n\t\t\tgoogle_consent_settings.analytics_storage = wpm.getConsentValues().pixels.includes(\"google-analytics\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_storage = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t}\n\n\t\treturn google_consent_settings\n\t}\n\n\twpm.updateGoogleConsentMode = function (analytics = true, ads = true) {\n\n\t\ttry {\n\t\t\tif (\n\t\t\t\t!window.gtag ||\n\t\t\t\t!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent\n\t\t\t) return\n\n\t\t\tgtag(\"consent\", \"update\", {\n\t\t\t\tanalytics_storage: analytics ? \"granted\" : \"denied\",\n\t\t\t\tad_storage : ads ? \"granted\" : \"denied\",\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAds = function () {\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.ads.state = \"loading\"\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.enhanced_conversions?.active) {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key, {\"allow_enhanced_conversions\": true})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_label && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_number) {\n\t\t\t\tgtag(\"config\", Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0] + \"/\" + wpmDataLayer.pixels.google.ads.phone_conversion_label, {\n\t\t\t\t\tphone_conversion_number: wpmDataLayer.pixels.google.ads.phone_conversion_number,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// ! enhanced_conversion_data needs to set on the window object\n\t\t\t// https://support.google.com/google-ads/answer/9888145#zippy=%2Cvalidate-your-implementation-using-chrome-developer-tools\n\t\t\tif (wpmDataLayer?.shop?.page_type && \"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer?.order?.google?.ads?.enhanced_conversion_data) {\n\t\t\t\t// window.enhanced_conversion_data = wpmDataLayer.order.google.ads.enhanced_conversion_data\n\n\t\t\t\tgtag(\"set\", \"user_data\", wpmDataLayer.order.google.ads.enhanced_conversion_data)\n\t\t\t}\n\n\t\t\twpmDataLayer.pixels.google.ads.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsUA = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"loading\"\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.universal.property_id, wpmDataLayer.pixels.google.analytics.universal.parameters)\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsGA4 = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"loading\"\n\n\t\t\tlet parameters = wpmDataLayer.pixels.google.analytics.ga4.parameters\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.debug_mode) {\n\t\t\t\tparameters.debug_mode = true\n\t\t\t}\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.ga4.measurement_id, parameters)\n\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.isGoogleActive = function () {\n\n\t\tif (\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.universal?.property_id ||\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id ||\n\t\t\t!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)\n\t\t) {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getGoogleGtagId = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.universal.property_id\n\t\t} else if (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.ga4.measurement_id\n\t\t} else {\n\t\t\treturn Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]\n\t\t}\n\t}\n\n\n\twpm.loadGoogle = function () {\n\n\t\tif (wpm.isGoogleActive()) {\n\n\t\t\twpmDataLayer.pixels.google.state = \"loading\"\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googletagmanager.com/gtag/js?id=\" + wpm.getGoogleGtagId())\n\t\t\t\t.then(function (script, textStatus) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\t// Initiate Google dataLayer and gtag\n\t\t\t\t\t\twindow.dataLayer = window.dataLayer || []\n\t\t\t\t\t\twindow.gtag = function gtag() {\n\t\t\t\t\t\t\tdataLayer.push(arguments)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Consent Mode\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\n\t\t\t\t\t\t\tlet google_consent_settings = {\n\t\t\t\t\t\t\t\t\"ad_storage\" : wpmDataLayer.pixels.google.consent_mode.ad_storage,\n\t\t\t\t\t\t\t\t\"analytics_storage\": wpmDataLayer.pixels.google.consent_mode.analytics_storage,\n\t\t\t\t\t\t\t\t\"wait_for_update\" : wpmDataLayer.pixels.google.consent_mode.wait_for_update,\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.region) {\n\t\t\t\t\t\t\t\tgoogle_consent_settings.region = wpmDataLayer.pixels.google.consent_mode.region\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgoogle_consent_settings = wpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings(google_consent_settings)\n\n\t\t\t\t\t\t\tgtag(\"consent\", \"default\", google_consent_settings)\n\t\t\t\t\t\t\tgtag(\"set\", \"ads_data_redaction\", wpmDataLayer.pixels.google.consent_mode.ads_data_redaction)\n\t\t\t\t\t\t\tgtag(\"set\", \"url_passthrough\", wpmDataLayer.pixels.google.consent_mode.url_passthrough)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Linker\n\t\t\t\t\t\t// https://developers.google.com/gtagjs/devguide/linker\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.linker?.settings) {\n\t\t\t\t\t\t\tgtag(\"set\", \"linker\", wpmDataLayer.pixels.google.linker.settings)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgtag(\"js\", new Date())\n\n\t\t\t\t\t\t// Google Ads loader\n\t\t\t\t\t\tif (!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) { // Only run if the pixel has set up\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"ads\")) { \t\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAds()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-ads\", \"ads\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Universal Analytics loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) { \t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsUA()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-universal-analytics\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// GA4 loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) { \t\t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsGA4()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"ga4\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twpmDataLayer.pixels.google.state = \"ready\"\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\twpm.canGoogleLoad = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (\"category\" === wpm.getConsentValues().mode) {\n\t\t\treturn !!(wpm.getConsentValues().categories[\"ads\"] || wpm.getConsentValues().categories[\"analytics\"])\n\t\t} else if (\"pixel\" === wpm.getConsentValues().mode) {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-ads\") || wpm.getConsentValues().pixels.includes(\"google-analytics\")\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid load condition for Google mode in wpmConsentValues\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.gtagLoaded = function () {\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") reject()\n\n\t\t\tlet startTime = 0\n\t\t\tlet timeout = 5000\n\t\t\tlet frequency = 200;\n\n\t\t\t(function wait() {\n\t\t\t\tif (wpmDataLayer?.pixels?.google?.state === \"ready\") return resolve()\n\t\t\t\tif (startTime >= timeout) return reject()\n\t\t\t\tstartTime += frequency\n\t\t\t\tsetTimeout(wait, frequency)\n\t\t\t})()\n\t\t})\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google base\n */\n\n// Load base\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load Google\n */\n\n// Load base\nrequire(\"./base/loader\")\n\n//Load additional Google libraries\nrequire(\"./ads/loader\")\nrequire(\"./analytics/loader\")\nrequire(\"./optimize/loader\")\n\n\n","/**\n * Load Google Optimize event listeners\n */\n\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.google?.optimize?.container_id && !wpmDataLayer?.pixels?.google?.optimize?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"google-optimize\")) wpm.load_google_optimize_pixel()\n\t}\n})\n","/**\n * Load Google Optimize functions\n */\n\n\n(function (wpm, $, undefined) {\n\n\twpm.load_google_optimize_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.optimize.loaded = true\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googleoptimize.com/optimize.js?id=\" + wpmDataLayer.pixels.google.optimize.container_id)\n\t\t\t// .then(function (script, textStatus) {\n\t\t\t// \t\tconsole.log('Google Optimize loaded')\n\t\t\t// });\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Load Google Optimize\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Hotjar event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.hotjar?.site_id && !wpmDataLayer?.pixels?.hotjar?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"hotjar\") && !wpmDataLayer?.pixels?.hotjar?.loaded) wpm.load_hotjar_pixel()\n\t}\n})\n","/**\n * Load Hotjar functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.load_hotjar_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.hotjar.loaded = true;\n\n\t\t\t// @formatter:off\n\t\t\t(function(h,o,t,j,a,r){\n\t\t\t\th.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n\t\t\t\th._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6};\n\t\t\t\ta=o.getElementsByTagName('head')[0];\n\t\t\t\tr=o.createElement('script');r.async=1;\n\t\t\t\tr.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n\t\t\t\ta.appendChild(r);\n\t\t\t})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\n\t\t\t// @formatter:on\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Hotjar loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Consent Mode functions\n */\n\n(function (wpm, $, undefined) {\n\n\t/**\n\t * Handle Cookie Management Platforms\n\t */\n\n\tlet getComplianzCookies = () => {\n\n\t\tlet cmplz_statistics = wpm.getCookie(\"cmplz_statistics\")\n\t\tlet cmplz_marketing = wpm.getCookie(\"cmplz_marketing\")\n\t\tlet cmplz_consent_status = wpm.getCookie(\"cmplz_consent_status\") || wpm.getCookie(\"cmplz_banner-status\")\n\n\t\tif (cmplz_consent_status) {\n\t\t\treturn {\n\t\t\t\tanalytics : cmplz_statistics === \"allow\",\n\t\t\t\tads : cmplz_marketing === \"allow\",\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tlet getCookieLawInfoCookies = () => {\n\n\t\tlet analyticsCookie = wpm.getCookie(\"cookielawinfo-checkbox-analytics\") || wpm.getCookie(\"cookielawinfo-checkbox-analytiques\")\n\t\tlet adsCookie = wpm.getCookie(\"cookielawinfo-checkbox-advertisement\") || wpm.getCookie(\"cookielawinfo-checkbox-performance\") || wpm.getCookie(\"cookielawinfo-checkbox-publicite\")\n\t\tlet visitorHasChosen = wpm.getCookie(\"CookieLawInfoConsent\")\n\n\t\tif (analyticsCookie || adsCookie) {\n\n\t\t\treturn {\n\t\t\t\tanalytics : analyticsCookie === \"yes\",\n\t\t\t\tads : adsCookie === \"yes\",\n\t\t\t\tvisitorHasChosen: !!visitorHasChosen,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Initialize and set default values\n\t */\n\n\tlet\n\t\twpmConsentValues = {}\n\twpmConsentValues.categories = {}\n\twpmConsentValues.pixels = []\n\twpmConsentValues.mode = \"category\"\n\twpmConsentValues.visitorHasChosen = false\n\n\t// Return current consent values\n\twpm.getConsentValues = () => wpmConsentValues\n\n\twpm.setConsentValueCategories = (analytics = false, ads = false) => {\n\t\twpmConsentValues.categories.analytics = analytics\n\t\twpmConsentValues.categories.ads = ads\n\t}\n\n\t// Update the PMW consent values with values coming from a CMP\n\twpm.updateConsentCookieValues = (analytics = null, ads = null, explicitConsent = false) => {\n\n\t\t// ad_storage\n\t\t// analytics_storage\n\t\t// functionality_storage\n\t\t// personalization_storage\n\t\t// security_storage\n\n\t\tlet cookie\n\n\t\t/**\n\t\t * Setup defaults\n\t\t */\n\n\t\t// consentValues.categories.analytics = true\n\t\t// consentValues.categories.ads = true\n\n\t\twpmConsentValues.categories.analytics = !explicitConsent\n\t\twpmConsentValues.categories.ads = !explicitConsent\n\n\n\t\tif (analytics || ads) {\n\n\t\t\tif (analytics) {\n\t\t\t\twpmConsentValues.categories.analytics = !!analytics\n\t\t\t}\n\n\t\t\tif (ads) {\n\t\t\t\twpmConsentValues.categories.ads = !!ads\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * PMW Cookie Consent\n\t\t *\n\t\t * Must be before every other CMP for the case that one of the included CMPs\n\t\t * decides to implement the PMW cookie consent API. In that case\n\t\t * the PMW consent cookie must take precedence.\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"pmw_cookie_consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookiebot\n\t\t * https://wordpress.org/plugins/cookiebot/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieConsent\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.indexOf(\"statistics:true\") >= 0\n\t\t\twpmConsentValues.categories.ads = cookie.indexOf(\"marketing:true\") >= 0\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Script\n\t\t * https://wordpress.org/plugins/cookie-script-com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieScriptConsent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\tif (cookie.action === \"reject\") {\n\t\t\t\twpmConsentValues.categories.analytics = false\n\t\t\t\twpmConsentValues.categories.ads = false\n\t\t\t} else if (cookie.categories.length === 2) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t} else {\n\t\t\t\twpmConsentValues.categories.analytics = cookie.categories.indexOf(\"performance\") >= 0\n\t\t\t\twpmConsentValues.categories.ads = cookie.categories.indexOf(\"targeting\") >= 0\n\t\t\t}\n\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Borlabs Cookie\n\t\t * https://borlabs.io/borlabs-cookie/\n\t\t */\n\t\tif (cookie = wpm.getCookie(\"borlabs-cookie\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie?.consents?.statistics\n\t\t\twpmConsentValues.categories.ads = !!cookie?.consents?.marketing\n\t\t\twpmConsentValues.visitorHasChosen = true\n\t\t\twpmConsentValues.pixels = [...cookie?.consents?.statistics || [], ...cookie?.consents?.marketing || []]\n\t\t\twpmConsentValues.mode = \"pixel\"\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Complianz Cookie\n\t\t * https://wordpress.org/plugins/complianz-gdpr/\n\t\t */\n\n\t\tif (cookie = getComplianzCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (free version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"cookie_notice_accepted\")) {\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (pro version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"hu-consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie.categories[\"3\"]\n\t\t\twpmConsentValues.categories.ads = !!cookie.categories[\"4\"]\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * CookieYes, GDPR Cookie Consent (Cookie Law Info)\n\t\t * https://wordpress.org/plugins/cookie-law-info/\n\t\t */\n\n\t\tif (cookie = getCookieLawInfoCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen === true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * GDPR Cookie Compliance Plugin by Moove Agency\n\t\t * https://wordpress.org/plugins/gdpr-cookie-compliance/\n\t\t *\n\t\t * TODO write documentation on how to set up the plugin in order for this to work properly\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"moove_gdpr_popup\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.thirdparty === \"1\"\n\t\t\twpmConsentValues.categories.ads = cookie.advanced === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * WP AutoTerms\n\t\t * https://wordpress.org/plugins/auto-terms-of-service-and-privacy-policy/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"wpautoterms-cookies-notice\")) {\n\n\t\t\tif (cookie !== \"1\") return\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Usercentrics\n\t\t *\n\t\t * https://usercentrics.com/\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api?id=getservicesbaseinfo\n\t\t */\n\n\t\tif (window.localStorage && window.localStorage.getItem(\"uc_settings\")) {\n\n\t\t\tconsole.log(\"Usercentrics settings detected\")\n\n\t\t\tif (typeof UC_UI === \"undefined\") {\n\n\t\t\t\t// register event to block unblock after UC_UI library is loaded\n\t\t\t\twindow.addEventListener(\"UC_UI_INITIALIZED\", function (event) {\n\t\t\t\t\twpm.ucUiProcessConsent()\n\t\t\t\t})\n\n\t\t\t\t// Don't continue because in here the UC_UI library is not loaded yet\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\twpm.ucUiProcessConsent()\n\t\t}\n\n\t\t/**\n\t\t * OneTrust\n\t\t *\n\t\t * https://www.onetrust.com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"OptanonConsent\")) {\n\n\t\t\t// console.log(\"OneTrust settings detected\")\n\n\t\t\tlet params = new URLSearchParams(cookie)\n\t\t\tlet groups = params.get(\"groups\").split(\",\")\n\n\t\t\t// Groups is an array like this ['1:1', '2:0', '3:1', '4:1']. Make it an object with key value pairs\n\t\t\tlet groupsObject = {}\n\t\t\tgroups.forEach((group) => {\n\n\t\t\t\tlet groupArray = group.split(\":\")\n\t\t\t\tgroupsObject[groupArray[0]] = groupArray[1]\n\t\t\t})\n\n\t\t\t// group mapping\n\t\t\t// 1 = necessary\n\t\t\t// 2 = analytics\n\t\t\t// 3 = functional\n\t\t\t// 4 = ads\n\n\t\t\twpmConsentValues.categories.analytics = groubsObject[\"2\"] === \"1\"\n\t\t\twpmConsentValues.categories.ads = groupsObject[\"4\"] === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Only run after having made sure that the UC_UI library is loaded\n\twpm.ucUiProcessConsent = function () {\n\n\t\tif (typeof UC_UI === \"undefined\") return\n\n\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tconst ucStatisticsSlug = UC_UI.getSettingsLabels().categories.filter(data => data.label === \"Statistics\")[0].slug\n\n\t\tpmw.consentAdjustSelectively(\n\t\t\t{\n\t\t\t\tanalytics: !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === ucStatisticsSlug && data.consent.status === false).length > 0,\n\t\t\t\tads : !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === \"marketing\" && data.consent.status === false).length > 0,\n\t\t\t},\n\t\t)\n\t}\n\n\twpm.updateConsentCookieValues()\n\n\twpm.setConsentDefaultValuesToExplicit = () => {\n\t\twpmConsentValues.categories = {\n\t\t\tanalytics: false,\n\t\t\tads : false,\n\t\t}\n\t}\n\n\twpm.canIFire = (category, pixelName) => {\n\n\t\tlet canIFireMode\n\n\t\tif (\"category\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = !!wpmConsentValues.categories[category]\n\t\t} else if (\"pixel\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(pixelName)\n\n\t\t\t// If a user sets \"bing-ads\" in Borlabs Cookie instead of\n\t\t\t// \"microsoft-ads\" in the Borlabs settings, we need to check\n\t\t\t// for that too.\n\t\t\tif (false === canIFireMode && \"microsoft-ads\" === pixelName) {\n\t\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(\"bing-ads\")\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid consent mode in wpmConsentValues\")\n\t\t\tcanIFireMode = false\n\t\t}\n\n\t\tif (canIFireMode) {\n\t\t\treturn true\n\t\t} else {\n\t\t\tif (true || wpm.urlHasParameter(\"debugConsentMode\")) {\n\t\t\t\twpm.logPreventedPixelLoading(pixelName, category)\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.logPreventedPixelLoading = (pixelName, category) => {\n\n\t\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent) {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)\")\n\t\t} else {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)\")\n\t\t}\n\t}\n\n\t/**\n\t * Runs through each script in
and blocks / unblocks it according to the plugin settings\n\t * and user consent.\n\t */\n\n\t// https://stackoverflow.com/q/65453565/4688612\n\twpm.scriptTagObserver = new MutationObserver((mutations) => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif ($(node).data(\"wpm-cookie-category\")) {\n\n\t\t\t\t\t\t// If the pixel category has been approved > unblock\n\t\t\t\t\t\t// If the pixel belongs to more than one category, then unblock if one of the categories has been approved\n\t\t\t\t\t\t// If no category has been approved, but the Google Consent Mode is active, then only unblock the Google scripts\n\n\t\t\t\t\t\tif (wpm.shouldScriptBeActive(node)) {\n\t\t\t\t\t\t\twpm.unblockScript(node)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.blockScript(node)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\twpm.scriptTagObserver.observe(document.head, {childList: true, subtree: true})\n\t// jQuery(document).on(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\tdocument.addEventListener(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\n\twpm.shouldScriptBeActive = node => {\n\n\t\tif (\n\t\t\twpmDataLayer.shop.cookie_consent_mgmt.explicit_consent ||\n\t\t\twpmConsentValues.visitorHasChosen\n\t\t) {\n\n\t\t\tif (wpmConsentValues.mode === \"category\" && $(node).data(\"wpm-cookie-category\").split(\",\").some(element => wpmConsentValues.categories[element])) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && wpmConsentValues.pixels.includes($(node).data(\"wpm-pixel-name\"))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && $(node).data(\"wpm-pixel-name\") === \"google\" && [\"google-analytics\", \"google-ads\"].some(element => wpmConsentValues.pixels.includes(element))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmDataLayer?.pixels?.google?.consent_mode?.active && $(node).data(\"wpm-pixel-name\") === \"google\") {\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\n\twpm.unblockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tlet wpmSrc = $(scriptNode).data(\"wpm-src\")\n\t\tif (wpmSrc) $(scriptNode).attr(\"src\", wpmSrc)\n\n\t\tscriptNode.type = \"text/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.blockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tif ($(scriptNode).attr(\"src\")) $(scriptNode).removeAttr(\"src\")\n\t\tscriptNode.type = \"blocked/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\t}\n\n\twpm.unblockAllScripts = (analytics = true, ads = true) => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\twpm.setConsentValueCategories(analytics, ads)\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.unblockSelectedPixels = () => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.explicitConsentStateAlreadySet = () => {\n\n\t\tif (wpmConsentValues.explicitConsentStateAlreadySet) {\n\t\t\treturn true\n\t\t} else {\n\t\t\twpmConsentValues.explicitConsentStateAlreadySet = true\n\t\t}\n\t}\n\n\n\t/**\n\t * Block or unblock scripts for each CMP immediately after cookie consent has been updated\n\t * by the visitor.\n\t */\n\n\t/**\n\t * Borlabs Cookie\n\t * If visitor accepts cookies in Borlabs Cookie unblock the scripts\n\t */\n\tdocument.addEventListener(\"borlabs-cookie-consent-saved\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\tif (wpmConsentValues.mode === \"pixel\") {\n\n\t\t\twpm.unblockSelectedPixels()\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.pixels.includes(\"google-analytics\"), wpmConsentValues.pixels.includes(\"google-ads\"))\n\t\t} else {\n\n\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t}\n\t})\n\n\t/**\n\t * Cookiebot\n\t * \tIf visitor accepts cookies in Cookiebot unblock the scripts\n\t * \thttps://www.cookiebot.com/en/developer/\n\t */\n\tdocument.addEventListener(\"CookiebotOnAccept\", () => {\n\t\tif (Cookiebot.consent.statistics) wpmConsentValues.categories.analytics = true\n\t\tif (Cookiebot.consent.marketing) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\n\t}, false)\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/article/20-custom-events\n\t */\n\t// jQuery(document).on(\"CookieScriptAccept\", e => {\n\tdocument.addEventListener(\"CookieScriptAccept\", e => {\n\n\t\tif (e.detail.categories.includes(\"performance\")) wpmConsentValues.categories.analytics = true\n\t\tif (e.detail.categories.includes(\"targeting\")) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/\n\t */\n\t// jQuery(document).on(\"CookieScriptAcceptAll\", () => {\n\tdocument.addEventListener(\"CookieScriptAcceptAll\", () => {\n\n\t\twpm.setConsentValueCategories(true, true)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t})\n\n\t/**\n\t * Complianz Cookie\n\t *\n\t * If visitor accepts cookies in Complianz unblock the scripts\n\t */\n\n\twpm.cmplzStatusChange = (cmplzConsentData) => {\n\n\t\tif (cmplzConsentData.detail.categories.includes(\"statistics\")) wpm.updateConsentCookieValues(true, null)\n\t\tif (cmplzConsentData.detail.categories.includes(\"marketing\")) wpm.updateConsentCookieValues(null, true)\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t}\n\n\t// jQuery(document).on(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\t// jQuery(document).on(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\n\t// Cookie Compliance by hu-manity.co (free and pro)\n\t// If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (free version)\n\t// https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t// jQuery(document).on(\"setCookieNotice\", () => {\n\tdocument.addEventListener(\"setCookieNotice\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Compliance by hu-manity.co (free and pro)\n\t * If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (pro version)\n\t * https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t * Because Cookie Notice has no documented API or event that is being triggered on consent save or update\n\t * we have to solve this by using a mutation observer.\n\t *\n\t * @type {MutationObserver}\n\t */\n\n\twpm.huObserver = new MutationObserver(mutations => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif (node.id === \"hu\") {\n\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\").on(\"click\", function () {\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\") in pure JavaScript\n\t\t\t\t\t\tdocument.querySelector(\".hu-cookies-save\").addEventListener(\"click\", () => {\n\t\t\t\t\t\t\twpm.updateConsentCookieValues()\n\t\t\t\t\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\tif (window.hu) {\n\t\twpm.huObserver.observe(document.documentElement || document.body, {childList: true, subtree: true})\n\t}\n\n\t/**\n\t * Usercentrics Event Listeners\n\t *\n\t * https://docs.usercentrics.com/#/v2-events?id=usage-as-window-event\n\t */\n\n\twindow.addEventListener(\"ucEvent\", function (e) {\n\t\tif (e.detail && e.detail.event == \"consent_status\") {\n\t\t\t// check for consent status of service \"Google Ads Remarketing\"\n\t\t\tif (e.detail[\"Google Ads Remarketing\"] === true) {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has consent\")\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has no consent\")\n\t\t\t}\n\t\t}\n\t})\n\n\t// https://docs.usercentrics.com/#/v2-events?id=uc_ui_cmp_event\n\twindow.addEventListener(\"UC_UI_CMP_EVENT\", function (event) {\n\n\t\tif (event.detail.type === \"ACCEPT_ALL\") {\n\t\t\t// console.log('accept all');\n\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tif (event.detail.type === \"DENY_ALL\") {\n\t\t\tpmw.consentRevokeAll()\n\t\t}\n\n\t\tif (event.detail.type === \"SAVE\") {\n\t\t\tconsole.log(\"event.detail\", event.detail)\n\t\t}\n\t})\n\n\n\t/**\n\t * OneTrust Event Listeners\n\t *\n\t * CookiePro by OneTrust doesn't emit any events when the user accepts or declines cookies.\n\t */\n\n\t// There are two accept all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\"#accept-recommended-btn-handler, #onetrust-accept-btn-handler\").on(\"click\", function () {\n\n\t\t// If OneTrust is not loaded, return\n\t\tif (typeof window.OneTrust === \"undefined\") return\n\n\t\tpmw.consentAcceptAll()\n\t})\n\n\t// There are two revoke all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\".ot-pc-refuse-all-handler, #onetrust-reject-all-handler\").on(\"click\", function () {\n\t\tpmw.consentRevokeAll()\n\t})\n\n\t// There is one save button that saves mixed consent. It is in the settings window. We reload the page after saving to reflect the changes.\n\tjQuery(\".save-preference-btn-handler.onetrust-close-btn-handler\").on(\"click\", function () {\n\t\tlocation.reload()\n\n\t\t// OneTrust.OnConsentChanged(function (e) {\n\t\t// \tpmw.consentAdjustSelectively({\n\t\t// \t\tanalytics: e.detail.includes(\"2\"),\n\t\t// \t\tads : e.detail.includes(\"4\"),\n\t\t// \t})\n\t\t// })\n\t})\n\n\n}(window.wpm = window.wpm || {}, jQuery));\n\n\n(function (pmw, $, undefined) {\n\n\t/**\n\t * Pixel Manager Cookie Consent API\n\t */\n\n\t// Accept consent for all cookies\n\tpmw.consentAcceptAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(true, true, settings.duration)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t}\n\n\t// Accept consent selectively\n\tpmw.consentAdjustSelectively = (settings) => {\n\n\t\t// If settings.analytics is set, keep it, otherwise set it to wpm.getConsentValues().categories.analytics\n\t\tsettings.analytics = settings.analytics !== undefined ? settings.analytics : wpm.getConsentValues().categories.analytics\n\t\tsettings.ads = settings.ads !== undefined ? settings.ads : wpm.getConsentValues().categories.ads\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(settings.analytics, settings.ads, settings.duration)\n\t\twpm.unblockAllScripts(settings.analytics, settings.ads)\n\t\twpm.updateGoogleConsentMode(settings.analytics, settings.ads)\n\t}\n\n\t// Remove consent for all cookies\n\tpmw.consentRevokeAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\twpm.setConsentValueCategories(false, false)\n\t\tpmw.consentSetCookie(false, false, settings.duration)\n\t\twpm.updateGoogleConsentMode(false, false)\n\t}\n\n\t// Set a cookie called pmw_cookie_consent with the value of pmw_cookie_consent\n\t// and set the default expiration date to 1 year from now\n\tpmw.consentSetCookie = (analytics, ads, duration = 365) => {\n\t\twpm.setCookie(\"pmw_cookie_consent\", JSON.stringify({analytics, ads}), duration)\n\t}\n\n\t// Trigger an event once the PMW consent management has been loaded\n\tjQuery(document).trigger(\"pmw_cookie_consent_management_loaded\")\n\n}(window.pmw = window.pmw || {}, jQuery))\n","/**\n * Register event listeners\n */\n\n// remove_from_cart event\n// jQuery('.remove_from_cart_button, .remove').on('click', function (e) {\njQuery(document).on(\"click\", \".remove_from_cart_button, .remove\", (event) => {\n\n\ttry {\n\n\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"))\n\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\twpm.removeProductFromCart(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\nconst addToCartSelectors = [\n\t\".add_to_cart_button:not(.product_type_variable)\",\n\t\".ajax_add_to_cart\",\n\t\".single_add_to_cart_button\",\n].join(\",\")\n\n\n// add_to_cart event\n// When DOM is ready, register event listeners\njQuery(document).on(\"ready\", () => {\n\n\tjQuery(addToCartSelectors).on(\"click\", (event) => {\n\n\t\ttry {\n\n\t\t\t// console.log(\"add_to_cart event detected\")\n\n\t\t\tlet quantity = 1,\n\t\t\t\tproductId\n\n\t\t\t// Only process on product pages\n\t\t\tif (wpmDataLayer.shop.page_type === \"product\") {\n\n\t\t\t\t// First process related and upsell products\n\t\t\t\tif (typeof jQuery(event.currentTarget).attr(\"href\") !== \"undefined\" && jQuery(event.currentTarget).attr(\"href\").includes(\"add-to-cart\")) {\n\n\t\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\")\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t}\n\n\t\t\t\t// If is simple product\n\t\t\t\tif (wpmDataLayer.shop.product_type === \"simple\") {\n\n\t\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\t\tproductId = jQuery(event.currentTarget).val()\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t}\n\n\t\t\t\t// If is variable product or variable-subscription\n\t\t\t\tif ([\"variable\", \"variable-subscription\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\n\t\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\t\tproductId = jQuery(\"[name='variation_id']\").val()\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t}\n\n\t\t\t\t// If is grouped product\n\t\t\t\tif (wpmDataLayer.shop.product_type === \"grouped\") {\n\n\t\t\t\t\tjQuery(\".woocommerce-grouped-product-list-item\").each((index, element) => {\n\n\t\t\t\t\t\tquantity = Number(jQuery(element).find(\".input-text.qty\").val())\n\t\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\t\t\tlet classes = jQuery(element).attr(\"class\")\n\t\t\t\t\t\tproductId = wpm.getPostIdFromString(classes)\n\n\t\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// If is bundle product\n\t\t\t\tif (wpmDataLayer.shop.product_type === \"bundle\") {\n\n\t\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\t\tproductId = jQuery(\"input[name=add-to-cart]\").val()\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\")\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n\n/**\n * If someone clicks anywhere on a custom /?add-to-cart=123 link\n * trigger the add to cart event\n */\n\njQuery(document).on(\"ready\", () => {\n\tjQuery(\"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\").one(\"click\", function (event) {\n// jQuery(document).one(\"click\", \"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\", (event) => {\n\n\t\ttry {\n\t\t\tif (jQuery(event.target).closest(\"a\").attr(\"href\")) {\n\n\t\t\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"), window.location.origin)\n\n\t\t\t\tif (url.searchParams.has(\"add-to-cart\")) {\n\n\t\t\t\t\tlet productId = url.searchParams.get(\"add-to-cart\")\n\t\t\t\t\twpm.addProductToCart(productId, 1)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n// select item event\njQuery(document).on(\"ready\", () => {\n\n\tjQuery(\".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\").on(\"click\", (event) => {\n\n\t\ttry {\n\n\t\t\t/**\n\t\t\t * On some pages the event fires multiple times, and on product pages\n\t\t\t * even on page load. Using e.stopPropagation helps to prevent this,\n\t\t\t * but I don't know why. We don't even have to use this, since only a real\n\t\t\t * product click yields a valid productId. So we filter the invalid click\n\t\t\t * events out later down in the code. I'll keep it that way because this is\n\t\t\t * the most compatible way across shops.\n\t\t\t *\n\t\t\t * e.stopPropagation();\n\t\t\t * */\n\n\t\t\tlet productId = jQuery(event.currentTarget).nextAll(\".wpmProductId:first\").data(\"id\")\n\n\t\t\t/**\n\t\t\t * On product pages, for some reason, the click event is triggered on the main product on page load.\n\t\t\t * In that case no ID is found. But we can discard it, since we only want to trigger the event on\n\t\t\t * related products, which are found below.\n\t\t\t */\n\n\t\t\tif (productId) {\n\n\t\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\t\tjQuery(document).trigger(\"wpmSelectContentGaUa\", product)\n\t\t\t\t\tjQuery(document).trigger(\"wpmSelectItem\", product)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n// begin_checkout event\nlet checkoutButtonClasses = [\n\t\".checkout-button\",\n\t\".cart-checkout-button\",\n\t\".button.checkout\",\n\t\".xoo-wsc-ft-btn-checkout\", // https://xootix.com/side-cart-for-woocommerce/\n\t\".elementor-button--checkout\",\n].join(\",\")\n\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).one(\"click init_checkout\", checkoutButtonClasses, () => {\n\tjQuery(document).trigger(\"wpmBeginCheckout\")\n})\n\n\n// checkout_progress event\n// track checkout option event: entered valid billing email\njQuery(document).on(\"input\", \"#billing_email\", (event) => {\n\n\tif (wpm.isEmail(jQuery(event.currentTarget).val())) {\n\t\t// wpm.fireCheckoutOption(2);\n\t\twpm.fireCheckoutProgress(2)\n\t\twpm.emailSelected = true\n\t}\n})\n\n// track checkout option event: purchase click\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).on(\"wpmLoad\", (event) => {\n\tjQuery(document).on(\"payment_method_selected\", () => {\n\n\t\tif (false === wpm.paymentMethodSelected) {\n\t\t\twpm.fireCheckoutProgress(3)\n\t\t}\n\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t\twpm.paymentMethodSelected = true\n\t})\n})\n\n/**\n * Place order button\n *\n * Track checkout option event: purchase click\n * https://stackoverflow.com/a/34112407/4688612\n * jQuery(document).one(\"click\", \"#place_order\", () => {\n */\njQuery(document).on(\"ready\", () => {\n\tjQuery(\"form.checkout\").on(\"checkout_place_order_success\", () => {\n\n\t\tif (false === wpm.emailSelected) {\n\t\t\twpm.fireCheckoutProgress(2)\n\t\t}\n\n\t\tif (false === wpm.paymentMethodSelected) {\n\t\t\twpm.fireCheckoutProgress(3)\n\t\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t\t}\n\n\t\twpm.fireCheckoutProgress(4)\n\n\t\tjQuery(document).trigger(\"wpmPlaceOrder\", {})\n\t})\n})\n\n// update cart event\njQuery(document).on(\"ready\", () => {\n\tjQuery(\"[name='update_cart']\").on(\"click\", () => {\n\n\t\ttry {\n\t\t\tjQuery(\".cart_item\").each((index, element) => {\n\n\t\t\t\tlet url = new URL(jQuery(element).find(\".product-remove\").find(\"a\").attr(\"href\"))\n\t\t\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\n\t\t\t\tlet quantity = jQuery(element).find(\".qty\").val()\n\n\t\t\t\tif (quantity === 0) {\n\t\t\t\t\twpm.removeProductFromCart(productId)\n\t\t\t\t} else if (quantity < wpmDataLayer.cart[productId].quantity) {\n\t\t\t\t\twpm.removeProductFromCart(productId, wpmDataLayer.cart[productId].quantity - quantity)\n\t\t\t\t} else if (quantity > wpmDataLayer.cart[productId].quantity) {\n\t\t\t\t\twpm.addProductToCart(productId, quantity - wpmDataLayer.cart[productId].quantity)\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t})\n})\n\n// add_to_wishlist\njQuery(document).on(\"ready\", () => {\n\n\tjQuery(\".add_to_wishlist,.wl-add-to\").on(\"click\", event => {\n\n\t\ttry {\n\n\t\t\tlet productId\n\n\t\t\tif (jQuery(event.currentTarget).data(\"productid\")) { // for the WooCommerce wishlist plugin\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"productid\")\n\t\t\t} else if (jQuery(event.currentTarget).data(\"product-id\")) { // for the YITH wishlist plugin\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product-id\")\n\t\t\t}\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\n\t\t\tjQuery(document).trigger(\"wpmAddToWishlist\", product)\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\njQuery(document).on(\"updated_cart_totals\", () => {\n\tjQuery(document).trigger(\"wpmViewCart\")\n})\n\n\n/**\n * Called when the user selects all the required dropdowns / attributes\n *\n * Has to be hooked after document ready !\n *\n * https://stackoverflow.com/a/27849208/4688612\n * https://stackoverflow.com/a/65065335/4688612\n */\n\njQuery(document).on(\"ready\", () => {\n\n\tjQuery(\".single_variation_wrap\").on(\"show_variation\", (event, variation) => {\n\n\t\ttry {\n\t\t\tlet productId = wpm.getIdBasedOndVariationsOutputSetting(variation.variation_id)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\twpm.triggerViewItemEventPrep(productId)\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n\n/**\n * Called on variable products when no selection has been done yet\n * or when the visitor deselects his choice.\n *\n * Has to be hooked after document ready !\n */\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n//\n// \t\ttry {\n// \t\t\tlet classes = jQuery(\"body\").attr(\"class\")\n// \t\t\tlet productId = classes.match(/(postid-)(\\d+)/)[2]\n//\n// \t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n//\n// \t\t\t/**\n// \t\t\t * If we have a variable product with no preset,\n// \t\t\t * and variations output is enabled,\n// \t\t\t * then we send a viewItem event with the first\n// \t\t\t * variation we find for the parent.\n// \t\t\t * If variations output is disabled,\n// \t\t\t * we just send the parent ID.\n// \t\t\t *\n// \t\t\t * And if Facebook microdata is active, use the\n// \t\t\t * microdata product ID.\n// \t\t\t */\n//\n// \t\t\tif (\n// \t\t\t\t\"variable\" === wpmDataLayer.shop.product_type &&\n// \t\t\t\twpmDataLayer?.general?.variationsOutput\n// \t\t\t) {\n// \t\t\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n// \t\t\t\t\tif (\"parentId\" in product) {\n//\n// \t\t\t\t\t\tproductId = product.id\n// \t\t\t\t\t\tbreak\n// \t\t\t\t\t}\n// \t\t\t\t}\n//\n// \t\t\t\tif (wpmDataLayer?.pixels?.facebook?.microdata_product_id) {\n// \t\t\t\t\tproductId = wpmDataLayer.pixels.facebook.microdata_product_id\n// \t\t\t\t}\n// \t\t\t}\n//\n// \t\t\t// console.log(\"hmm\")\n// \t\t\twpm.triggerViewItemEventPrep(productId)\n//\n// \t\t} catch (e) {\n// \t\t\tconsole.error(e)\n// \t\t}\n// \t})\n// })\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n// \t\tjQuery(document).trigger(\"wpmviewitem\")\n// \t})\n// })\n\n\n/**\n * Set up wpm events\n */\n\n// populate the wpmDataLayer with the cart items\njQuery(document).on(\"wpmLoad\", () => {\n\n\ttry {\n\t\t// When a new session is initiated there are no items in the cart,\n\t\t// so we can save the call to get the cart items\n\t\tif (wpm.doesWooCommerceCartExist()) wpm.getCartItems()\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// get all add-to-cart= products from backend\njQuery(document).on(\"wpmLoad\", () => {\n\n\twpmDataLayer.products = wpmDataLayer.products || {}\n\n\t// scan page for add-to-cart= links\n\tlet productIds = wpm.getAddToCartLinkProductIds()\n\n\twpm.getProductsFromBackend(productIds)\n})\n\n/**\n * Save the referrer into a cookie\n */\n\njQuery(document).on(\"wpmLoad\", () => {\n\n\t// can't use session storage as we can't read it from the server\n\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\n\t\tif (document.referrer) {\n\t\t\tlet referrerUrl = new URL(document.referrer)\n\t\t\tlet referrerHostname = referrerUrl.hostname\n\n\t\t\tif (referrerHostname !== window.location.host) {\n\t\t\t\twpm.setCookie(\"wpmReferrer\", referrerHostname)\n\t\t\t}\n\t\t}\n\t}\n})\n\n\n/**\n * Create our own load event in order to better handle script flow execution when JS \"optimizers\" shuffle the code.\n */\n\njQuery(document).on(\"wpmLoad\", () => {\n\t// document.addEventListener(\"wpmLoad\", function () {\n\ttry {\n\t\tif (typeof wpmDataLayer != \"undefined\" && !wpmDataLayer?.wpmLoadFired) {\n\n\t\t\tjQuery(document).trigger(\"wpmLoadAlways\")\n\n\t\t\tif (wpmDataLayer?.shop) {\n\t\t\t\tif (\n\t\t\t\t\t\"product\" === wpmDataLayer.shop.page_type &&\n\t\t\t\t\t\"variable\" !== wpmDataLayer.shop.product_type &&\n\t\t\t\t\twpm.getMainProductIdFromProductPage()\n\t\t\t\t) {\n\t\t\t\t\tlet product = wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage())\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t\t} else if (\"product_category\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmCategory\")\n\t\t\t\t} else if (\"search\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmSearch\")\n\t\t\t\t} else if (\"cart\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewCart\")\n\t\t\t\t} else if (\"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer.order) {\n\t\t\t\t\tif (!wpm.isOrderIdStored(wpmDataLayer.order.id)) {\n\t\t\t\t\t\tjQuery(document).trigger(\"wpmOrderReceivedPage\")\n\t\t\t\t\t\twpm.writeOrderIdToStorage(wpmDataLayer.order.id)\n\t\t\t\t\t\tif (typeof wpm.acrRemoveCookie === \"function\") wpm.acrRemoveCookie()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.user?.id && !wpm.hasLoginEventFired()) {\n\t\t\t\tjQuery(document).trigger(\"wpmLogin\")\n\t\t\t\twpm.setLoginEventFired()\n\t\t\t}\n\n\t\t\t// /**\n\t\t\t// * Load mini cart fragments into a wpm session storage key,\n\t\t\t// * after the document load event.\n\t\t\t// */\n\t\t\t// jQuery(document).ajaxSend(function (event, jqxhr, settings) {\n\t\t\t// \t// console.log('settings.url: ' + settings.url);\n\t\t\t//\n\t\t\t// \tif (settings.url.includes(\"get_refreshed_fragments\") && sessionStorage) {\n\t\t\t// \t\tif (!sessionStorage.getItem(\"wpmMiniCartActive\")) {\n\t\t\t// \t\t\tsessionStorage.setItem(\"wpmMiniCartActive\", JSON.stringify(true))\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// })\n\n\t\t\twpmDataLayer.wpmLoadFired = true\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\njQuery(document).on(\"wpmLoad\", async () => {\n\n\tif (\n\t\twindow.sessionStorage &&\n\t\twindow.sessionStorage.getItem(\"_pmw_endpoint_available\") &&\n\t\t!JSON.parse(window.sessionStorage.getItem(\"_pmw_endpoint_available\"))\n\t) {\n\t\tconsole.error(\"Pixel Manager for WooCommerce: REST endpoint is not available. Using admin-ajax.php instead.\")\n\t}\n})\n\n\n/**\n * Load all pixels\n */\njQuery(document).on(\"wpmPreLoadPixels\", () => {\n\n\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent && !wpm.explicitConsentStateAlreadySet()) {\n\t\twpm.updateConsentCookieValues(null, null, true)\n\t}\n\n\tjQuery(document).trigger(\"wpmLoadPixels\", {})\n})\n\n\n/**\n * All ecommerce events\n */\n\njQuery(document).on(\"wpmAddToCart\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToCart\",\n\t\tproduct: product,\n\t}\n\n\t// If Facebook pixel is loaded, add Facebook server to server event data to the payload\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToCart\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToCart\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmBeginCheckout\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"beginCheckout\",\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"InitiateCheckout\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (wpmDataLayer?.cart && !jQuery.isEmptyObject(wpmDataLayer.cart)) {\n\t\t\tpayload.facebook.custom_data = {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tcontent_ids : wpm.fbGetContentIdsFromCart(),\n\t\t\t\tvalue : wpm.getCartValue(),\n\t\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideBeginCheckout\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmAddToWishlist\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToWishlist\",\n\t\tproduct: product,\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToWishlist\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"viewItem\",\n\t\tproduct: product,\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"ViewContent\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.facebook.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideViewItem\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmSearch\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"search\",\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Search\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tsearch_string: wpm.getSearchTermFromUrl(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideSearch\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmOrderReceivedPage\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"orderReceived\",\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Purchase\",\n\t\t\tevent_id : wpmDataLayer.order.id,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tcontent_ids : wpm.facebookContentIds(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideOrderReceivedPage\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// ! No server-to-server event is sent for this event because it is compiled and sent from the server directly\n})\n\n\n\n\n\n","/**\n * Create a wpm namespace under which all functions are declared\n */\n\n// https://stackoverflow.com/a/5947280/4688612\n\n(function (wpm, $, undefined) {\n\n\tconst wpmDeduper = {\n\t\tkeyName : \"_wpm_order_ids\",\n\t\tcookieExpiresDays: 365,\n\t}\n\n\tconst wpmRestSettings = {\n\t\t// cookiesAvailable : '_wpm_cookies_are_available',\n\t\tcookiePmwRestEndpointAvailable: \"_pmw_endpoint_available\",\n\t\trestEndpointPost : \"pmw/v1/test/\",\n\t\trestFails : 0,\n\t\trestFailsThreshold : 10,\n\t}\n\n\twpm.emailSelected = false\n\twpm.paymentMethodSelected = false\n\n\t// wpm.checkIfCookiesAvailable = function () {\n\t//\n\t// // read the cookie if previously set, if it is return true, otherwise continue\n\t// if (wpm.getCookie(wpmRestSettings.cookiesAvailable)) {\n\t// return true;\n\t// }\n\t//\n\t// // set the cookie for the session\n\t// Cookies.set(wpmRestSettings.cookiesAvailable, true);\n\t//\n\t// // read cookie, true if ok, false if not ok\n\t// return !!wpm.getCookie(wpmRestSettings.cookiesAvailable);\n\t// }\n\n\twpm.useRestEndpoint = () => {\n\n\t\t// only if sessionStorage is available\n\n\t\t// only if REST API endpoint is generally accessible\n\t\t// check in sessionStorage if we checked before and return answer\n\t\t// otherwise check if the endpoint is available, save answer in sessionStorage and return answer\n\n\t\t// only if not too many REST API errors happened\n\n\t\treturn wpm.isSessionStorageAvailable() &&\n\t\t\twpm.isRestEndpointAvailable() &&\n\t\t\twpm.isBelowRestErrorThreshold()\n\t}\n\n\twpm.isBelowRestErrorThreshold = () => window.sessionStorage.getItem(wpmRestSettings.restFails) <= wpmRestSettings.restFailsThreshold\n\n\twpm.isRestEndpointAvailable = async () => {\n\n\t\tif (window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable)) {\n\t\t\treturn JSON.parse(window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable))\n\t\t} else {\n\t\t\treturn await wpm.testEndpoint()\n\t\t}\n\t}\n\n\twpm.isSessionStorageAvailable = () => !!window.sessionStorage\n\n\t// Test the endpoint by sending a POST request\n\twpm.testEndpoint = async (\n\t\turl = wpm.root + wpmRestSettings.restEndpointPost,\n\t\tcookieName = wpmRestSettings.cookiePmwRestEndpointAvailable,\n\t) => {\n\n\t\tlet response = await fetch(url, {\n\t\t\tmethod : \"POST\",\n\t\t\tmode : \"cors\",\n\t\t\tcache : \"no-cache\",\n\t\t\tkeepalive: true,\n\t\t})\n\n\t\tif (response.status === 200) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(true))\n\t\t\treturn true\n\t\t} else if (response.status === 404) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t} else if (response.status === 0) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isWpmRestEndpointAvailable = (cookieName = wpmRestSettings.cookiePmwRestEndpointAvailable) => !!wpm.getCookie(cookieName)\n\n\twpm.writeOrderIdToStorage = (orderId, source = \"thankyou_page\", expireDays = 365) => {\n\n\t\t// save the order ID in the browser storage\n\n\t\tif (!window.Storage) {\n\t\t\tlet expiresDate = new Date()\n\t\t\texpiresDate.setDate(expiresDate.getDate() + wpmDeduper.cookieExpiresDays)\n\n\t\t\tlet ids = []\n\t\t\tif (checkCookie()) {\n\t\t\t\tids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t}\n\n\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\tids.push(orderId)\n\t\t\t\tdocument.cookie = wpmDeduper.keyName + \"=\" + JSON.stringify(ids) + \";expires=\" + expiresDate.toUTCString()\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (localStorage.getItem(wpmDeduper.keyName) === null) {\n\t\t\t\tlet ids = []\n\t\t\t\tids.push(orderId)\n\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\n\t\t\t} else {\n\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\t\tids.push(orderId)\n\t\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof wpm.storeOrderIdOnServer === \"function\" && wpmDataLayer.orderDeduplication) {\n\t\t\twpm.storeOrderIdOnServer(orderId, source)\n\t\t}\n\t}\n\n\tfunction checkCookie() {\n\t\tlet key = wpm.getCookie(wpmDeduper.keyName)\n\t\treturn key !== \"\"\n\t}\n\n\twpm.isOrderIdStored = orderId => {\n\n\t\tif (wpmDataLayer.orderDeduplication) {\n\n\t\t\tif (!window.Storage) {\n\n\t\t\t\tif (checkCookie()) {\n\t\t\t\t\tlet ids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (localStorage.getItem(wpmDeduper.keyName) !== null) {\n\t\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\"order duplication prevention: off\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isEmail = email => {\n\n\t\t// https://emailregex.com/\n\n\t\tlet regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n\t\treturn regex.test(email)\n\t}\n\n\twpm.removeProductFromCart = (productId, quantityToRemove = null) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet quantity\n\n\t\t\tif (quantityToRemove == null) {\n\t\t\t\tquantity = wpmDataLayer.cart[productId].quantity\n\t\t\t} else {\n\t\t\t\tquantity = quantityToRemove\n\t\t\t}\n\n\t\t\tif (wpmDataLayer.cart[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmRemoveFromCart\", product)\n\n\t\t\t\tif (quantityToRemove == null || wpmDataLayer.cart[productId].quantity === quantityToRemove) {\n\n\t\t\t\t\tdelete wpmDataLayer.cart[productId]\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t} else {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity - quantity\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\t// console.log('getting cart from back end');\n\t\t\t// wpm.getCartItemsFromBackend();\n\t\t\t// console.log('getting cart from back end done');\n\t\t}\n\t}\n\n\twpm.getIdBasedOndVariationsOutputSetting = productId => {\n\n\t\ttry {\n\t\t\tif (wpmDataLayer?.general?.variationsOutput) {\n\n\t\t\t\treturn productId\n\t\t\t} else {\n\t\t\t\tif (wpmDataLayer.products[productId].isVariation) {\n\n\t\t\t\t\treturn wpmDataLayer.products[productId].parentId\n\t\t\t\t} else {\n\n\t\t\t\t\treturn productId\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// add_to_cart\n\twpm.addProductToCart = (productId, quantity) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer?.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmAddToCart\", product)\n\n\t\t\t\t// add product to cart wpmDataLayer['cart']\n\n\t\t\t\t// if the product already exists in the object, only add the additional quantity\n\t\t\t\t// otherwise create that product object in the wpmDataLayer['cart']\n\t\t\t\tif (wpmDataLayer?.cart[productId]) {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity + quantity\n\t\t\t\t} else {\n\n\t\t\t\t\tif (!(\"cart\" in wpmDataLayer)) wpmDataLayer.cart = {}\n\n\t\t\t\t\twpmDataLayer.cart[productId] = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\t\t\t\t}\n\n\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\n\t\t\t// fallback if wpmDataLayer.cart and wpmDataLayer.products got out of sync in case cart caching has an issue\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\twpm.getCartItems = () => {\n\n\t\tif (sessionStorage) {\n\t\t\tif (!sessionStorage.getItem(\"wpmDataLayerCart\") || wpmDataLayer.shop.page_type === \"order_received_page\") {\n\t\t\t\tsessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify({}))\n\t\t\t} else {\n\t\t\t\twpm.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem(\"wpmDataLayerCart\")))\n\t\t\t}\n\t\t} else {\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\t// get all cart items from the backend\n\twpm.getCartItemsFromBackend = () => {\n\t\ttry {\n\n\t\t\t/**\n\t\t\t * Can't use a REST API endpoint, as the cart session will not be loaded if the\n\t\t\t * endpoint is called.\n\t\t\t *\n\t\t\t * https://wordpress.org/support/topic/wc-cart-is-null-in-custom-rest-api/#post-11442843\n\t\t\t */\n\n\t\t\t/**\n\t\t\t * Get the cart items from the backend the data object using fetch API\n\t\t\t * and log success or error messages\n\t\t\t * and url encoded data\n\t\t\t */\n\t\t\tfetch(wpm.ajax_url, {\n\t\t\t\tmethod : \"POST\",\n\t\t\t\tcache : \"no-cache\",\n\t\t\t\tbody : new URLSearchParams({action: \"pmw_get_cart_items\"}),\n\t\t\t\tkeepalive: true,\n\t\t\t})\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(data => {\n\n\t\t\t\t\tif (data.success) {\n\n\t\t\t\t\t\tif (!data.data[\"cart\"]) data.data[\"cart\"] = {}\n\n\t\t\t\t\t\twpm.saveCartObjectToDataLayer(data.data[\"cart\"])\n\n\t\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(data.data[\"cart\"]))\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// get productIds from the backend\n\twpm.getProductsFromBackend = async productIds => {\n\n\t\tif (wpmDataLayer?.products) {\n\t\t\t// If productIds already exists as key in wpmDataLayer.products, remove it from the array\n\t\t\tproductIds = productIds.filter(productId => !(productId in wpmDataLayer.products))\n\t\t}\n\n\t\t// if no products IDs are in the object, don't try to get anything from the server\n\t\tif (!productIds || productIds.length === 0) return\n\n\t\ttry {\n\n\t\t\tlet response\n\n\t\t\tif (await wpm.isRestEndpointAvailable()) {\n\t\t\t\tresponse = await fetch(wpm.root + \"pmw/v1/products/\", {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\tcache : \"no-cache\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t},\n\t\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\t\tpageId : wpmDataLayer.general.pageId,\n\t\t\t\t\t\tproductIds: productIds,\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t} else {\n\n\t\t\t\t// Get the product details from the backend the data object using fetch API\n\t\t\t\t// and log success or error messages\n\t\t\t\t// and url encoded data\n\t\t\t\tresponse = await fetch(wpm.ajax_url, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tcache : \"no-cache\",\n\t\t\t\t\tbody : new URLSearchParams({\n\t\t\t\t\t\taction : \"pmw_get_product_ids\",\n\t\t\t\t\t\tproductIds: productIds,\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (response.ok) {\n\t\t\t\tlet responseData = await response.json()\n\t\t\t\tif (responseData.success) {\n\t\t\t\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, responseData.data)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.error(\"Error getting products from backend\")\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\n\t\treturn true\n\t}\n\n\twpm.saveCartObjectToDataLayer = cartObject => {\n\n\t\twpmDataLayer.cart = cartObject\n\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, cartObject)\n\t}\n\n\twpm.triggerViewItemEventPrep = async productId => {\n\n\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\twpm.triggerViewItemEvent(productId)\n\t\t} else {\n\t\t\tawait wpm.getProductsFromBackend([productId])\n\t\t\twpm.triggerViewItemEvent(productId)\n\t\t}\n\t}\n\n\twpm.triggerViewItemEvent = productId => {\n\n\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t}\n\n\twpm.triggerViewItemEventNoProduct = () => {\n\t\tjQuery(document).trigger(\"wpmViewItem\")\n\t}\n\n\twpm.fireCheckoutOption = (step, checkout_option = null, value = null) => {\n\n\t\tlet data = {\n\t\t\tstep : step,\n\t\t\tcheckout_option: checkout_option,\n\t\t\tvalue : value,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutOption\", data)\n\t}\n\n\twpm.fireCheckoutProgress = step => {\n\n\t\tlet data = {\n\t\t\tstep: step,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutProgress\", data)\n\t}\n\n\twpm.getPostIdFromString = string => {\n\n\t\ttry {\n\t\t\treturn string.match(/(post-)(\\d+)/)[2]\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.triggerViewItemList = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tjQuery(document).trigger(\"wpmViewItemList\", wpm.getProductDataForViewItemEvent(productId))\n\t}\n\n\twpm.getProductDataForViewItemEvent = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\ttry {\n\t\t\tif (wpmDataLayer.products[productId]) {\n\n\t\t\t\treturn wpm.getProductDetailsFormattedForEvent(productId)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getMainProductIdFromProductPage = () => {\n\n\t\ttry {\n\t\t\tif ([\"simple\", \"variable\", \"grouped\", \"composite\", \"bundle\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\t\t\t\treturn jQuery(\".wpmProductId:first\").data(\"id\")\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.viewItemListTriggerTestMode = target => {\n\n\t\tjQuery(target).css({\"position\": \"relative\"})\n\t\tjQuery(target).append(\"\")\n\t\tjQuery(target).find(\"#viewItemListTriggerOverlay\").css({\n\t\t\t\"z-index\" : \"10\",\n\t\t\t\"display\" : \"block\",\n\t\t\t\"position\" : \"absolute\",\n\t\t\t\"height\" : \"100%\",\n\t\t\t\"top\" : \"0\",\n\t\t\t\"left\" : \"0\",\n\t\t\t\"right\" : \"0\",\n\t\t\t\"opacity\" : wpmDataLayer.viewItemListTrigger.opacity,\n\t\t\t\"background-color\": wpmDataLayer.viewItemListTrigger.backgroundColor,\n\t\t})\n\t}\n\n\twpm.getSearchTermFromUrl = () => {\n\n\t\ttry {\n\t\t\tlet urlParameters = new URLSearchParams(window.location.search)\n\t\t\treturn urlParameters.get(\"s\")\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// we need this to track timeouts for intersection observers\n\tlet ioTimeouts = {}\n\n\twpm.observerCallback = (entries, observer) => {\n\n\t\tentries.forEach((entry) => {\n\n\t\t\ttry {\n\t\t\t\tlet productId\n\n\t\t\t\tlet elementId = jQuery(entry.target).data(\"ioid\")\n\n\t\t\t\t// Get the productId from next element, if wpmProductId is a sibling, like in Gutenberg blocks\n\t\t\t\t// otherwise go search in children, like in regular WC loop items\n\t\t\t\tif (jQuery(entry.target).next(\".wpmProductId\").length) {\n\t\t\t\t\t// console.log('test 1');\n\t\t\t\t\tproductId = jQuery(entry.target).next(\".wpmProductId\").data(\"id\")\n\t\t\t\t} else {\n\t\t\t\t\tproductId = jQuery(entry.target).find(\".wpmProductId\").data(\"id\")\n\t\t\t\t}\n\n\n\t\t\t\tif (!productId) throw Error(\"wpmProductId element not found\")\n\n\t\t\t\tif (entry.isIntersecting) {\n\n\t\t\t\t\tioTimeouts[elementId] = setTimeout(() => {\n\n\t\t\t\t\t\twpm.triggerViewItemList(productId)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) wpm.viewItemListTriggerTestMode(entry.target)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.repeat === false) observer.unobserve(entry.target)\n\t\t\t\t\t}, wpmDataLayer.viewItemListTrigger.timeout)\n\n\t\t\t\t} else {\n\n\t\t\t\t\tclearTimeout(ioTimeouts[elementId])\n\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) jQuery(entry.target).find(\"#viewItemListTriggerOverlay\").remove()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t})\n\t}\n\n\t// fire view_item_list only on products that have become visible\n\tlet io\n\tlet ioid = 0\n\tlet allIoElementsToWatch\n\n\tlet getAllElementsToWatch = () => {\n\n\t\tallIoElementsToWatch = jQuery(\".wpmProductId\")\n\t\t\t.map(function (i, elem) {\n\n\t\t\t\tif (\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"type-product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product-item-inner\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(elem).parent()\n\t\t\t\t} else if (\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"wc-block-grid__product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product-small\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"woocommerce-LoopProduct-link\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(this).prev()\n\t\t\t\t} else if (jQuery(elem).closest(\".product\").length) {\n\t\t\t\t\treturn jQuery(elem).closest(\".product\")\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\twpm.startIntersectionObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// enable view_item_list test mode from browser\n\t\t\tif (wpm.urlHasParameter(\"vildemomode\")) wpmDataLayer.viewItemListTrigger.testMode = true\n\n\t\t\t// set up intersection observer\n\t\t\tio = new IntersectionObserver(wpm.observerCallback, {\n\t\t\t\tthreshold: wpmDataLayer.viewItemListTrigger.threshold,\n\t\t\t})\n\n\t\t\tgetAllElementsToWatch()\n\n\t\t\tallIoElementsToWatch.each((i, elem) => {\n\n\t\t\t\tjQuery(elem[0]).data(\"ioid\", ioid++)\n\n\t\t\t\tio.observe(elem[0])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// watch DOM for new lazy loaded products and add them to the intersection observer\n\twpm.startProductsMutationObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// Pass in the target node, as well as the observer options\n\n\t\t\t// selects the most common parent node\n\t\t\t// https://stackoverflow.com/a/7648323/4688612\n\t\t\tlet productsNode = jQuery(\".wpmProductId:eq(0)\").parents().has(jQuery(\".wpmProductId:eq(1)\").parents()).first()\n\n\t\t\tif (productsNode.length) {\n\t\t\t\tproductsMutationObserver.observe(productsNode[0], {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// Create an observer instance\n\tlet productsMutationObserver = new MutationObserver(mutations => {\n\n\t\tmutations.forEach(mutation => {\n\t\t\tlet newNodes = mutation.addedNodes // DOM NodeList\n\t\t\tif (newNodes !== null) { // If there are new nodes added\n\t\t\t\tlet nodes = jQuery(newNodes) // jQuery set\n\t\t\t\tnodes.each(function () {\n\t\t\t\t\tif (\n\t\t\t\t\t\tjQuery(this).hasClass(\"type-product\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"product-small\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"wc-block-grid__product\")\n\t\t\t\t\t) {\n\t\t\t\t\t\t// check if the node has a child or sibling wpmProductId\n\t\t\t\t\t\t// if yes add it to the intersectionObserver\n\t\t\t\t\t\tif (hasWpmProductIdElement(this)) {\n\t\t\t\t\t\t\tjQuery(this).data(\"ioid\", ioid++)\n\t\t\t\t\t\t\tio.observe(this)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t})\n\n\tlet hasWpmProductIdElement = elem =>\n\t\t!!(jQuery(elem).find(\".wpmProductId\").length ||\n\t\t\tjQuery(elem).siblings(\".wpmProductId\").length)\n\n\twpm.setCookie = (cookieName, cookieValue = \"\", expiryDays = null) => {\n\n\t\tif (expiryDays) {\n\n\t\t\tlet d = new Date()\n\t\t\td.setTime(d.getTime() + (expiryDays * 24 * 60 * 60 * 1000))\n\t\t\tlet expires = \"expires=\" + d.toUTCString()\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";\" + expires + \";path=/\"\n\t\t} else {\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";path=/\"\n\t\t}\n\t}\n\n\twpm.getCookie = cookieName => {\n\n\t\tlet name = cookieName + \"=\"\n\t\tlet decodedCookie = decodeURIComponent(document.cookie)\n\t\tlet ca = decodedCookie.split(\";\")\n\n\t\tfor (let i = 0; i < ca.length; i++) {\n\n\t\t\tlet c = ca[i]\n\n\t\t\twhile (c.charAt(0) == \" \") {\n\t\t\t\tc = c.substring(1)\n\t\t\t}\n\n\t\t\tif (c.indexOf(name) == 0) {\n\t\t\t\treturn c.substring(name.length, c.length)\n\t\t\t}\n\t\t}\n\n\t\treturn \"\"\n\t}\n\n\twpm.deleteCookie = cookieName => {\n\t\twpm.setCookie(cookieName, \"\", -1)\n\t}\n\n\twpm.getWpmSessionData = () => {\n\n\t\tif (window.sessionStorage) {\n\n\t\t\tlet data = window.sessionStorage.getItem(\"_wpm\")\n\n\t\t\tif (data !== null) {\n\t\t\t\treturn JSON.parse(data)\n\t\t\t} else {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t} else {\n\t\t\treturn {}\n\t\t}\n\t}\n\n\twpm.setWpmSessionData = data => {\n\t\tif (window.sessionStorage) {\n\t\t\twindow.sessionStorage.setItem(\"_wpm\", JSON.stringify(data))\n\t\t}\n\t}\n\n\twpm.storeOrderIdOnServer = async (orderId, source) => {\n\n\t\ttry {\n\n\t\t\tlet response\n\n\t\t\tif (await wpm.isRestEndpointAvailable()) {\n\n\t\t\t\tresponse = await fetch(wpm.root + \"pmw/v1/pixels-fired/\", {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\theaders : {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t},\n\t\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\t\torder_id: orderId,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t\tcache : \"no-cache\",\n\t\t\t\t})\n\n\t\t\t} else {\n\t\t\t\t// save the state in the database\n\n\t\t\t\t// Send the data object with ajax request\n\t\t\t\t// and log success or error using fetch API and url encoded\n\t\t\t\tresponse = await fetch(wpm.ajax_url, {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\tbody : new URLSearchParams({\n\t\t\t\t\t\taction : \"pmw_purchase_pixels_fired\",\n\t\t\t\t\t\torder_id: orderId,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (response.ok) {\n\t\t\t\tconsole.log(\"wpm.storeOrderIdOnServer success\")\n\t\t\t} else {\n\t\t\t\tconsole.error(\"wpm.storeOrderIdOnServer error\")\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getProductIdByCartItemKeyUrl = url => {\n\n\t\tlet searchParams = new URLSearchParams(url.search)\n\t\tlet cartItemKey = searchParams.get(\"remove_item\")\n\n\t\tlet productId\n\n\t\tif (wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"] === 0) {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"product_id\"]\n\t\t} else {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"]\n\t\t}\n\n\t\treturn productId\n\t}\n\n\twpm.getAddToCartLinkProductIds = () =>\n\t\tjQuery(\"a\").map(function () {\n\t\t\tlet href = jQuery(this).attr(\"href\")\n\n\t\t\tif (href && href.includes(\"?add-to-cart=\")) {\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) return matches[2]\n\t\t\t}\n\t\t}).get()\n\n\twpm.getProductDetailsFormattedForEvent = (productId, quantity = 1) => {\n\n\t\tlet product = {\n\t\t\tid : productId.toString(),\n\t\t\tdyn_r_ids : wpmDataLayer.products[productId].dyn_r_ids,\n\t\t\tname : wpmDataLayer.products[productId].name,\n\t\t\tlist_name : wpmDataLayer.shop.list_name,\n\t\t\tbrand : wpmDataLayer.products[productId].brand,\n\t\t\tcategory : wpmDataLayer.products[productId].category,\n\t\t\tvariant : wpmDataLayer.products[productId].variant,\n\t\t\tlist_position: wpmDataLayer.products[productId].position,\n\t\t\tquantity : quantity,\n\t\t\tprice : wpmDataLayer.products[productId].price,\n\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\tisVariable : wpmDataLayer.products[productId].isVariable,\n\t\t\tisVariation : wpmDataLayer.products[productId].isVariation,\n\t\t\tparentId : wpmDataLayer.products[productId].parentId,\n\t\t}\n\n\t\tif (product.isVariation) product[\"parentId_dyn_r_ids\"] = wpmDataLayer.products[productId].parentId_dyn_r_ids\n\n\t\treturn product\n\t}\n\n\twpm.setReferrerToCookie = () => {\n\n\t\t// can't use session storage as we can't read it from the server\n\t\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\t\t\twpm.setCookie(\"wpmReferrer\", document.referrer)\n\t\t}\n\t}\n\n\twpm.getReferrerFromCookie = () => {\n\n\t\tif (wpm.getCookie(\"wpmReferrer\")) {\n\t\t\treturn wpm.getCookie(\"wpmReferrer\")\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t}\n\n\twpm.getClidFromBrowser = (clidId = \"gclid\") => {\n\n\t\tlet clidCookieId\n\n\t\tclidCookieId = {\n\t\t\tgclid: \"_gcl_aw\",\n\t\t\tdclid: \"_gcl_dc\",\n\t\t}\n\n\t\tif (wpm.getCookie(clidCookieId[clidId])) {\n\n\t\t\tlet clidCookie = wpm.getCookie(clidCookieId[clidId])\n\t\t\tlet matches = clidCookie.match(/(GCL.[\\d]*.)(.*)/)\n\t\t\treturn matches[2]\n\t\t} else {\n\t\t\treturn \"\"\n\t\t}\n\t}\n\n\twpm.getUserAgent = () => navigator.userAgent\n\n\twpm.getViewPort = () => ({\n\t\twidth : Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n\t\theight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0),\n\t})\n\n\n\twpm.version = () => {\n\t\tconsole.log(wpmDataLayer.version)\n\t}\n\n\t/**\n\t * https://api.jquery.com/jquery.getscript/\n\t *\n\t * Switched back to jQuery.ajax as the fetch method on some sites returned a type error\n\t * Possible reasons are:\n\t * * CORS mismatch\n\t * * The user is using an ad blocker\n\t */\n\n\twpm.loadScriptAndCacheIt = url => {\n\n\t\t// Get and load the script using fetch API, if possible from cache, and return it without using eval\n\t\t// return fetch(url, {\n\t\t// \tmethod : \"GET\",\n\t\t// \tcache : \"default\",\n\t\t// \tkeepalive: true,\n\t\t// })\n\t\t// \t.then(response => {\n\t\t// \t\tif (response.ok) {\n\t\t// \t\t\t// console.log(\"response\", response)\n\t\t// \t\t\treturn response.text()\n\t\t// \t\t\t// console.log(\"wpm.loadScriptAndCacheIt success: \" + url)\n\t\t// \t\t} else {\n\t\t// \t\t\tthrow new Error(\"Network response was not ok: \" + url)\n\t\t// \t\t}\n\t\t// \t})\n\t\t// \t.then(script => {\n\t\t// \t\t// Execute the script\n\t\t// \t\t// console.error(\"executing script: \" + script)\n\t\t// \t\teval(script)\n\t\t// \t\t// console.log(\"executed script: \" + script)\n\t\t// \t})\n\t\t// \t.catch(e => {\n\t\t// \t\tconsole.error(e)\n\t\t// \t})\n\n\t\tlet options = {\n\t\t\tdataType: \"script\",\n\t\t\tcache : true,\n\t\t\turl : url,\n\t\t}\n\n\t\treturn jQuery.ajax(options)\n\t}\n\n\twpm.getOrderItemPrice = orderItem => (orderItem.total + orderItem.total_tax) / orderItem.quantity\n\n\twpm.hasLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\treturn data?.loginEventFired\n\t}\n\n\twpm.setLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\tdata[\"loginEventFired\"] = true\n\t\twpm.setWpmSessionData(data)\n\t}\n\n\twpm.wpmDataLayerExists = () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (typeof wpmDataLayer !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\twpm.jQueryExists = () => new Promise(resolve => {\n\t\t(function waitForjQuery() {\n\t\t\tif (typeof jQuery !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForjQuery, 100)\n\t\t})()\n\t})\n\n\twpm.pageLoaded = () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (\"complete\" === document.readyState) return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\twpm.pageReady = () => {\n\t\treturn new Promise(resolve => {\n\t\t\t(function waitForVar() {\n\t\t\t\tif (\"interactive\" === document.readyState || \"complete\" === document.readyState) return resolve()\n\t\t\t\tsetTimeout(waitForVar, 50)\n\t\t\t})()\n\t\t})\n\t}\n\n\twpm.isMiniCartActive = () => {\n\t\tif (window.sessionStorage) {\n\t\t\tfor (const [key, value] of Object.entries(window.sessionStorage)) {\n\t\t\t\tif (key.includes(\"wc_fragments\")) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.doesWooCommerceCartExist = () => document.cookie.includes(\"woocommerce_items_in_cart\")\n\n\twpm.urlHasParameter = parameter => {\n\t\tlet urlParams = new URLSearchParams(window.location.search)\n\t\treturn urlParams.has(parameter)\n\t}\n\n\t// https://stackoverflow.com/a/60606893/4688612\n\twpm.hashAsync = (algo, str) => {\n\t\treturn crypto.subtle.digest(algo, new TextEncoder(\"utf-8\").encode(str)).then(buf => {\n\t\t\treturn Array.prototype.map.call(new Uint8Array(buf), x => ((\"00\" + x.toString(16)).slice(-2))).join(\"\")\n\t\t})\n\t}\n\n\twpm.getCartValue = () => {\n\n\t\tlet value = 0\n\n\t\tif (wpmDataLayer?.cart) {\n\n\t\t\tfor (const key in wpmDataLayer.cart) {\n\t\t\t\t// content_ids.push(wpmDataLayer.products[key].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])\n\n\t\t\t\tlet product = wpmDataLayer.cart[key]\n\n\t\t\t\tvalue += product.quantity * product.price\n\t\t\t}\n\t\t}\n\n\t\treturn value\n\t}\n\n\t/**\n\t * Detect if the current URL contains at least one pattern\n\t *\n\t * @param patterns\n\t * @returns {boolean}\n\t */\n\twpm.doesUrlContainPatterns = patterns => {\n\n\t\tfor (const pattern of patterns) {\n\t\t\tif (new RegExp(pattern).test(window.location.href)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\t/**\n\t * Detect if the current URL contains at least one pattern that is on the tracking exclusion list\n\t *\n\t * https://www.linkedin.com/pulse/how-remove-google-robot-problem-via-gtm-facebook-pixel-hjelpdahl/\n\t * https://www.youtube.com/watch?v=b4I1ePZt8Z0\n\t *\n\t * @returns {boolean}\n\t */\n\twpm.excludeDomainFromTracking = () => {\n\n\t\tconst excludedDomains = [\n\t\t\t\"appspot.com\",\n\t\t\t\"tranlsate.google.com\",\n\t\t]\n\n\t\t// Abort if URL contains excluded domains\n\t\tif (excludedDomains.some(domain => window.location.href.includes(domain))) {\n\t\t\t// console.log(\"Pixel Manager for WooCommerce: Aborted due to excluded domain\")\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load all WPM functions\n *\n * Ignore event listeners. They need to be loaded after\n * we made sure that jQuery has been loaded.\n */\n\nrequire(\"./functions\")\nrequire(\"./cookie_consent\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// #endif\n","/**\n * After WPM is loaded\n * we first check if wpmDataLayer is loaded,\n * and as soon as it is, we load the pixels,\n * and as soon as the page load is complete,\n * we fire the wpmLoad event.\n *\n * @param {{pro:bool}} wpmDataLayer.version\n *\n * https://stackoverflow.com/a/25868457/4688612\n * https://stackoverflow.com/a/44093516/4688612\n */\n\nwpm.wpmDataLayerExists()\n\t.then(() => {\n\t\tconsole.log(\"Pixel Manager for WooCommerce: \" + (wpmDataLayer.version.pro ? \"Pro\" : \"Free\") + \" Version \" + wpmDataLayer.version.number + \" loaded\")\n\n\t if(wpm.excludeDomainFromTracking()) return\n\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t})\n\t.then(() => {\n\t\twpm.pageLoaded().then(function () {\n\t\t\tdocument.dispatchEvent(new Event(\"wpmLoad\"))\n\t\t})\n\t})\n\n\n/**\n * Run when page is ready\n */\n\nwpm.pageReady().then(function () {\n\n\t/**\n\t * Run as soon as wpm namespace is loaded\n\t */\n\n\twpm.wpmDataLayerExists()\n\t\t.then(() => {\n\t\t\t// watch for products visible in viewport\n\t\t\twpm.startIntersectionObserverToWatch()\n\n\t\t\t// watch for lazy loaded products\n\t\t\twpm.startProductsMutationObserverToWatch()\n\t\t})\n})\n\n","// 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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\n * Load all essential scripts first\n */\n\nrequire(\"./wpm/functions_loader\")\n\n// Only load the event listeners after jQuery has been loaded for sure\nwpm.jQueryExists().then(function () {\n\n\trequire(\"./wpm/event_listeners\")\n\n\t// require(\"./wpm/wc_hooks\")\n\n\trequire(\"./google/loader\")\n\trequire(\"./facebook/loader\")\n\trequire(\"./hotjar/loader\")\n\n\t/**\n\t * Load all premium scripts\n\t */\n\n\t// #if process.env.TIER === 'premium'\n// \trequire(\"./wpm/event_listeners_premium\")\n// \trequire(\"./microsoft-ads/loader\")\n// \trequire(\"./pinterest/loader\")\n// \trequire(\"./snapchat/loader\")\n// \trequire(\"./tiktok/loader\")\n// \trequire(\"./twitter/loader\")\n\t// #endif\n\n\n\t/**\n\t * Initiate WPM.\n\t *\n\t * It makes sure that the script flow gets executed correctly,\n\t * no matter how JS \"optimizers\" shuffle the code.\n\t */\n\n\trequire(\"./wpm/init\")\n})\n\n"],"names":["jQuery","document","on","wpmDataLayer","pixels","facebook","pixel_id","loaded","wpm","doesUrlContainPatterns","exclusion_patterns","canIFire","loadFacebookPixel","event","payload","fbq","custom_data","eventID","event_id","error","console","setFbUserData","$","undefined","fbUserData","f","window","b","e","n","callMethod","apply","arguments","queue","push","_fbq","version","t","createElement","async","src","s","getElementsByTagName","parentNode","insertBefore","data","isFbpSet","getUserIdentifiersForFb","user","id","external_id","order","user_id","email","em","billing_email_hashed","first_name","fn","billing_first_name","toLowerCase","last_name","ln","billing_last_name","phone","ph","billing_phone","replace","city","ct","billing_city","state","st","billing_state","postcode","zp","billing_postcode","country","billing_country","getFbRandomEventId","Math","random","toString","substring","getFbUserData","getFbUserDataFromBrowser","getCookie","isValidFbp","fbp","isValidFbc","fbc","navigator","userAgent","client_user_agent","RegExp","test","fbGetProductDataForCapiEvent","product","content_type","content_name","name","content_ids","dyn_r_ids","dynamic_remarketing","id_type","value","parseFloat","quantity","price","currency","facebookContentIds","prodIds","key","item","Object","entries","items","general","variationsOutput","variation_id","String","products","trackCustomFacebookEvent","eventName","customData","eventId","trigger","event_name","user_data","event_source_url","location","href","fbGetContentIdsFromCart","cart","require","isEmptyObject","google","ads","conversionIds","status","googleConfigConditionsMet","isVariable","send_events_with_parent_ids","send_to","getGoogleAdsConversionIdentifiers","google_business_vertical","gtagLoaded","then","gtag","value_filtered","getGoogleAdsDynamicRemarketingOrderItems","getGoogleAdsConversionIdentifiersWithLabel","data_basic","data_with_cart","transaction_id","number","new_customer","clv_order_value_filtered","customer_lifetime_value","aw_merchant_id","discount","aw_feed_country","aw_feed_language","getGoogleAdsRegularOrderItems","conversionIdentifiers","orderItems","orderItem","analytics","universal","property_id","mp_active","affiliation","value_regular","tax","shipping","coupon","getGAUAOrderItems","category","join","variant","variant_name","brand","ga3AddListNameToProduct","item_data","productPosition","list_name","shop","list_position","ga4","measurement_id","getGA4OrderItems","item_name","item_category","item_id","item_variant","item_brand","canGoogleLoad","loadGoogle","logPreventedPixelLoading","type","consent_mode","active","getConsentValues","mode","categories","includes","getVisitorConsentStatusAndUpdateGoogleConsentSettings","google_consent_settings","analytics_storage","ad_storage","updateGoogleConsentMode","cookie_consent_mgmt","explicit_consent","fireGtagGoogleAds","enhanced_conversions","phone_conversion_label","phone_conversion_number","keys","page_type","enhanced_conversion_data","fireGtagGoogleAnalyticsUA","parameters","fireGtagGoogleAnalyticsGA4","debug_mode","isGoogleActive","getGoogleGtagId","loadScriptAndCacheIt","script","textStatus","dataLayer","wait_for_update","region","ads_data_redaction","url_passthrough","linker","settings","Date","Promise","resolve","reject","startTime","wait","setTimeout","optimize","container_id","load_google_optimize_pixel","hotjar","site_id","load_hotjar_pixel","h","o","hj","q","_hjSettings","hjid","hjsv","a","r","appendChild","getComplianzCookies","cmplz_statistics","cmplz_marketing","visitorHasChosen","getCookieLawInfoCookies","analyticsCookie","adsCookie","wpmConsentValues","setConsentValueCategories","updateConsentCookieValues","cookie","explicitConsent","JSON","parse","decodeURI","indexOf","action","length","consents","statistics","marketing","thirdparty","advanced","localStorage","getItem","log","UC_UI","addEventListener","ucUiProcessConsent","areAllConsentsAccepted","groups","URLSearchParams","get","split","groupsObject","forEach","group","groupArray","groubsObject","pmw","consentAcceptAll","ucStatisticsSlug","getSettingsLabels","filter","label","slug","consentAdjustSelectively","getServicesBaseInfo","categorySlug","consent","setConsentDefaultValuesToExplicit","pixelName","canIFireMode","scriptTagObserver","MutationObserver","mutations","addedNodes","node","shouldScriptBeActive","unblockScript","blockScript","observe","head","childList","subtree","disconnect","some","element","scriptNode","removeAttach","remove","wpmSrc","attr","appendTo","dispatchEvent","Event","removeAttr","unblockAllScripts","unblockSelectedPixels","explicitConsentStateAlreadySet","Cookiebot","detail","cmplzStatusChange","cmplzConsentData","huObserver","querySelector","hu","documentElement","body","consentRevokeAll","OneTrust","reload","duration","consentSetCookie","setCookie","stringify","url","URL","currentTarget","productId","getProductIdByCartItemKeyUrl","removeProductFromCart","addToCartSelectors","addProductToCart","product_type","Number","val","each","index","find","classes","getPostIdFromString","one","target","closest","origin","searchParams","has","nextAll","getIdBasedOndVariationsOutputSetting","Error","getProductDetailsFormattedForEvent","checkoutButtonClasses","isEmail","fireCheckoutProgress","emailSelected","paymentMethodSelected","fireCheckoutOption","getCartItemsFromBackend","variation","triggerViewItemEventPrep","doesWooCommerceCartExist","getCartItems","productIds","getAddToCartLinkProductIds","getProductsFromBackend","referrer","referrerHostname","hostname","host","wpmLoadFired","getMainProductIdFromProductPage","getProductDataForViewItemEvent","isOrderIdStored","writeOrderIdToStorage","acrRemoveCookie","hasLoginEventFired","setLoginEventFired","sessionStorage","sendEventPayloadToServer","getCartValue","search_string","getSearchTermFromUrl","wpmDeduper","wpmRestSettings","checkCookie","useRestEndpoint","isSessionStorageAvailable","isRestEndpointAvailable","isBelowRestErrorThreshold","testEndpoint","root","cookieName","response","fetch","method","cache","keepalive","setItem","isWpmRestEndpointAvailable","orderId","source","Storage","ids","expiresDate","setDate","getDate","toUTCString","storeOrderIdOnServer","orderDeduplication","quantityToRemove","isVariation","parentId","saveCartObjectToDataLayer","ajax_url","ok","json","success","headers","pageId","responseData","assign","cartObject","triggerViewItemEvent","triggerViewItemEventNoProduct","step","checkout_option","string","match","triggerViewItemList","viewItemListTriggerTestMode","css","append","viewItemListTrigger","opacity","backgroundColor","search","io","ioTimeouts","observerCallback","observer","entry","elementId","next","isIntersecting","testMode","repeat","unobserve","timeout","clearTimeout","allIoElementsToWatch","ioid","getAllElementsToWatch","map","i","elem","parent","hasClass","prev","this","startIntersectionObserverToWatch","urlHasParameter","IntersectionObserver","threshold","startProductsMutationObserverToWatch","productsNode","parents","first","productsMutationObserver","attributes","characterData","mutation","newNodes","hasWpmProductIdElement","siblings","cookieValue","expiryDays","d","setTime","getTime","expires","ca","decodeURIComponent","c","charAt","deleteCookie","getWpmSessionData","setWpmSessionData","order_id","cartItemKey","cartItemKeys","matches","position","parentId_dyn_r_ids","setReferrerToCookie","getReferrerFromCookie","getClidFromBrowser","clidCookieId","clidId","gclid","dclid","getUserAgent","getViewPort","width","max","clientWidth","innerWidth","height","clientHeight","innerHeight","options","dataType","ajax","getOrderItemPrice","total","total_tax","loginEventFired","wpmDataLayerExists","waitForVar","jQueryExists","waitForjQuery","pageLoaded","readyState","pageReady","isMiniCartActive","parameter","hashAsync","algo","str","crypto","subtle","digest","TextEncoder","encode","buf","Array","prototype","call","Uint8Array","x","slice","patterns","pattern","excludeDomainFromTracking","domain","pro","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""}