{"version":3,"file":"wpm-public__premium_only.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/event_listeners_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/functions_premium.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/event_listeners_premium.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/functions_premium.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/event_listeners_premium.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/functions_premium.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/event_listeners_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/functions_premium.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/microsoft-ads/event_listeners_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/microsoft-ads/functions_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/microsoft-ads/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/pinterest/event_listeners_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/pinterest/functions_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/pinterest/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/snapchat/event_listeners_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/snapchat/functions_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/snapchat/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/tiktok/event_listeners_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/tiktok/functions_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/tiktok/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/twitter/event_listeners_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/twitter/functions_premium.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/twitter/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/event_listeners_on_ready.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/event_listeners_premium.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/functions_premium.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 * All event listeners\n * */\n\n\njQuery(document).on(\"wpmFbCapiEvent\", function (event, eventData) {\n\n\ttry {\n\t\tif (!wpmDataLayer.pixels.facebook.capi) return\n\n\t\t// Send data to pmw public API with fetch API\n\t\t// fetch(wpm.root + \"pmw/v1/facebook/capi/event/\", {\n\t\t// \tmethod : \"POST\",\n\t\t// \tcredentials: \"same-origin\",\n\t\t// \theaders : {\n\t\t// \t\t\"Content-Type\": \"application/json\",\n\t\t// \t},\n\t\t// \tbody : JSON.stringify(eventData),\n\t\t// \tkeepalive : true,\t// keep connection alive until request is finished\n\t\t// })\n\t\t// \t.then(response => response.json())\n\t\t// \t.then(message => {\n\t\t// \t\tif (!message.success) {\n\t\t// \t\t\tconsole.error(message)\n\t\t// \t\t}\n\t\t// \t})\n\t\t// \t.catch(error => {\n\t\t// \t\tconsole.error(error)\n\t\t// \t})\n\n\t\t// https://css-tricks.com/send-an-http-request-on-page-exit/\n\t\tconst blob = new Blob([JSON.stringify(eventData)], { type: 'application/json; charset=UTF-8' });\n\t\tnavigator.sendBeacon(wpm.root + \"pmw/v1/facebook/capi/event/\", blob);\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\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() && wpm.isFbAdvancedMatchingEnabled()) {\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?.raw) data.external_id = wpmDataLayer.user.id.raw\n\t\tif (wpmDataLayer?.order?.user_id) data.external_id = wpmDataLayer.order.user_id\n\n\t\t// email\n\t\tif (wpmDataLayer?.user?.email?.facebook) data.em = wpmDataLayer.user.email.facebook\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?.first_name?.facebook) data.fn = wpmDataLayer.user.first_name.facebook\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?.last_name?.facebook) data.ln = wpmDataLayer.user.last_name.facebook\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?.phone?.facebook) data.ph = wpmDataLayer.user.phone.facebook\n\t\tif (wpmDataLayer?.order?.billing_phone) data.ph = wpmDataLayer.order.billing_phone.replace(\"+\", \"\")\n\n\t\t// city\n\t\tif (wpmDataLayer?.user?.city?.facebook) data.ct = wpmDataLayer.user.city.facebook\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?.state?.facebook) data.st = wpmDataLayer.user.state.facebook\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?.postcode?.facebook) data.zp = wpmDataLayer.user.postcode.facebook\n\t\tif (wpmDataLayer?.order?.billing_postcode) data.zp = wpmDataLayer.order.billing_postcode\n\n\t\t// country\n\t\tif (wpmDataLayer?.user?.country?.facebook) data.country = wpmDataLayer.user.country.facebook\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.isFbAdvancedMatchingEnabled = () => {\n\t\tif (wpmDataLayer?.pixels?.facebook?.advanced_matching) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\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 (wpm.isFbAdvancedMatchingEnabled()) {\n\t\t\tif (wpmDataLayer?.user?.id?.raw) data.external_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\tif (navigator.userAgent) data.client_user_agent = navigator.userAgent\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\n\t\treturn content_ids\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Add functions for Facebook (pro)\n * */\n\n(function (wpm, $, undefined) {\n\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'\nrequire(\"./functions_premium\")\nrequire(\"./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?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\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?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\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?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\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?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\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?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\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?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\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?.raw) {\n\t\t\tdata_basic.user_id = wpmDataLayer.user.id.raw\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 * Load Google Universal Analytics (GA3) premium event listeners\n * */\n\n\n// view_item_list event\njQuery(document).on(\"wpmViewItemList\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item_list\", {\n\t\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t\titems : [wpm.ga3GetFullProductItemData(product)],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select_content event\njQuery(document).on(\"wpmSelectContentGaUa\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"select_content\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\titems : [wpm.ga3GetFullProductItemData(product)],\n\t\t\t})\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 (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_cart\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\t\titems : [wpm.ga3GetFullProductItemData(product)],\n\t\t\t})\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 (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t}\n\n\t\tif (product) {\n\t\t\tdata.items = [wpm.ga3GetFullProductItemData(product)]\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// add_to_wishlist event\njQuery(document).on(\"wpmAddToWishlist\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_wishlist\", {\n\t\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t\titems : [wpm.ga3GetFullProductItemData(product)],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// remove_from_cart event\njQuery(document).on(\"wpmRemoveFromCart\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"remove_from_cart\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\t\titems : [wpm.ga3GetFullProductItemData(product)],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// begin_checkout event\njQuery(document).on(\"wpmBeginCheckout\", function (event) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"begin_checkout\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\t\titems : wpm.getCartItemsGaUa(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// set_checkout_option event\njQuery(document).on(\"wpmFireCheckoutOption\", function (event, data) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"set_checkout_option\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t\tcheckout_step : data.step,\n\t\t\t\tcheckout_option: data.checkout_option,\n\t\t\t\tvalue : data.value,\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// checkout_progress event\njQuery(document).on(\"wpmFireCheckoutProgress\", function (event, data) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"checkout_progress\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t\tcheckout_step: data.step,\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tlet products = []\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\t\t\t// console.log(`${key}: ${value}`);\n\n\t\t\tproducts.push(wpm.ga3GetFullProductItemData(product))\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_search_results\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t\tsearch_term: wpm.getSearchTermFromUrl(),\n\t\t\t\titems : products,\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// User login event\njQuery(document).on(\"wpmLogin\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"login\", {\n\t\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n/**\n * Scroll tracking event\n */\n\njQuery(document).on(\"pmwScrollDepth\", (event, scrollEvent) => {\n\n\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\twpm.gtagLoaded().then(function () {\n\t\tgtag(\"event\", \"scroll\", {\n\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.universal.property_id,\n\t\t\tvalue: scrollEvent.threshold\n\t\t})\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 * Load Google Universal Analytics (GA3) premium functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getCartItemsGaUa = function () {\n\n\t\tlet data = []\n\n\t\tfor (const [productId, product] of Object.entries(wpmDataLayer.cart)) {\n\n\t\t\tdata.push(wpm.ga3GetFullProductItemData(product))\n\t\t}\n\n\t\treturn data\n\t}\n\n\twpm.ga3GetBasicProductItemData = function (product) {\n\n\t\treturn {\n\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type],\n\t\t\tname : product.name,\n\t\t\tbrand : product.brand,\n\t\t\tcategory: product.category.join(\"/\"),\n\t\t\t// coupon : \"\",\n\t\t\t// list_name : wpmDataLayer.shop.list_name,\n\t\t\t// list_position: product.list_position, // doesn't make sense on mini_cart\n\t\t\tprice : product.price,\n\t\t\tquantity: product.quantity,\n\t\t\tvariant : product.variant,\n\t\t}\n\t}\n\n\n\n\twpm.ga3CanProductListBeSet = function (productId) {\n\n\t\tif (window.sessionStorage) {\n\n\t\t\t// Check if the wpm_product_list_store_ga3 already exists,\n\t\t\t// and if not, create it\n\t\t\tif (window.sessionStorage.getItem(\"wpm_product_list_store_ga3\") === null) {\n\t\t\t\twindow.sessionStorage.setItem(\"wpm_product_list_store_ga3\", JSON.stringify([]))\n\t\t\t}\n\n\t\t\tlet wpmProductListStore = JSON.parse(window.sessionStorage.getItem(\"wpm_product_list_store_ga3\"))\n\n\t\t\tif (wpmProductListStore.includes(productId)) {\n\n\t\t\t\treturn false\n\t\t\t} else {\n\n\t\t\t\twpmProductListStore.push(productId)\n\t\t\t\twindow.sessionStorage.setItem(\"wpm_product_list_store_ga3\", JSON.stringify(wpmProductListStore))\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.ga3GetFullProductItemData = function (product) {\n\n\t\tlet item_data\n\n\t\titem_data = wpm.ga3GetBasicProductItemData(product)\n\t\titem_data = wpm.ga3AddListNameToProduct(item_data, product.position)\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'\nrequire(\"./functions_premium\")\nrequire(\"./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 premium event listeners\n * */\n\n// view_item_list event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#view_item_list\njQuery(document).on(\"wpmViewItemList\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item_list\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t\titems : [wpm.ga4GetFullProductItemData(product)],\n\t\t\t\titem_list_name: wpmDataLayer.shop.list_name, // doesn't make sense on mini_cart\n\t\t\t\titem_list_id : wpmDataLayer.shop.list_id, // doesn't make sense on mini_cart\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select_item event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#select_item\njQuery(document).on(\"wpmSelectItem\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"select_item\", {\n\t\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t\titems : [wpm.ga4GetFullProductItemData(product)],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#add_to_cart\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_cart\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\t\t// value: 0,\n\t\t\t\titems: [wpm.ga4GetFullProductItemData(product)],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#view_item\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t}\n\n\t\tif (product) {\n\t\t\tdata.currency = wpmDataLayer.shop.currency\n\t\t\t// data.value = 0\n\t\t\tdata.items = [wpm.ga4GetFullProductItemData(product)]\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// add_to_wishlist event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#add_to_wishlist\njQuery(document).on(\"wpmAddToWishlist\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_wishlist\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\t\t// value: 0,\n\t\t\t\titems: [wpm.ga4GetFullProductItemData(product)],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// remove_from_cart event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#remove_from_cart\njQuery(document).on(\"wpmRemoveFromCart\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"remove_from_cart\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\t\t// value: 0,\n\t\t\t\titems: [wpm.ga4GetFullProductItemData(product)],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// begin_checkout event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#begin_checkout\njQuery(document).on(\"wpmBeginCheckout\", function (event) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"begin_checkout\", {\n\t\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t\t// coupon: \"\",\n\t\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\t\t// value: 0,\n\t\t\t\titems: wpm.getCartItemsGa4(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_cart event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#view_cart\njQuery(document).on(\"wpmViewCart\", function (event) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tif (jQuery.isEmptyObject(wpmDataLayer.cart)) return\n\n\t\tlet products = []\n\t\tlet cartValue = null\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.cart)) {\n\n\t\t\tproducts.push(wpm.ga4GetFullProductItemData(product))\n\n\t\t\tcartValue = cartValue + product.quantity * product.price\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_cart\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\t\tvalue : cartValue.toFixed(2),\n\t\t\t\titems : products,\n\t\t\t})\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 (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tlet products = []\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\t\t\t// console.log(`${key}: ${value}`);\n\n\t\t\tproducts.push(wpm.ga4GetFullProductItemData(product))\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_search_results\", {\n\t\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t\tsearch_term: wpm.getSearchTermFromUrl(),\n\t\t\t\titems : products,\n\t\t\t})\n\n\t\t})\n\n\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 (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"login\", {\n\t\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * Scroll tracking event\n */\n\njQuery(document).on(\"pmwScrollDepth\", (event, scrollEvent) => {\n\n\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\twpm.gtagLoaded().then(function () {\n\t\tgtag(\"event\", \"scroll\", {\n\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\tvalue: scrollEvent.threshold\n\t\t})\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 * Load GA4 premium functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.ga4AddFormattedCategories = function (item_data, categories) {\n\n\t\tlet maxCategories = 5\n\n\t\t// remove categories with equal names from array\n\t\tcategories = Array.from(new Set(categories))\n\n\t\tif (Array.isArray(categories) && categories.length) {\n\n\t\t\titem_data[\"item_category\"] = categories[0]\n\n\t\t\tlet max = categories.length > maxCategories ? maxCategories : categories.length\n\n\t\t\tfor (let i = 1; i < max; i++) {\n\t\t\t\titem_data[\"item_category\" + (i + 1)] = categories[i]\n\t\t\t}\n\t\t}\n\n\t\treturn item_data\n\t}\n\n\twpm.getCartItemsGa4 = function () {\n\n\t\tlet data = []\n\n\t\tfor (const [productId, product] of Object.entries(wpmDataLayer.cart)) {\n\n\t\t\tdata.push(wpm.ga4GetFullProductItemData(product))\n\t\t}\n\n\t\treturn data\n\t}\n\n\twpm.ga4GetBasicProductItemData = function (product) {\n\n\t\treturn {\n\t\t\titem_id : product.dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type],\n\t\t\titem_name: product.name,\n\t\t\t// coupon : \"\",\n\t\t\t// discount: 0,\n\t\t\t// affiliation: \"\",\n\t\t\titem_brand : product.brand,\n\t\t\titem_variant: product.variant,\n\t\t\tprice : product.price,\n\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\tquantity : product.quantity,\n\t\t}\n\t}\n\n\twpm.ga4AddListNameToProduct = function (item_data, productPosition = null) {\n\n\t\titem_data.item_list_name = wpmDataLayer.shop.list_name\n\t\titem_data.item_list_id = wpmDataLayer.shop.list_id\n\n\t\tif (productPosition) {\n\t\t\titem_data.index = productPosition\n\t\t}\n\n\t\treturn item_data\n\t}\n\n\twpm.ga4GetFullProductItemData = function (product) {\n\n\t\tlet item_data\n\n\t\titem_data = wpm.ga4GetBasicProductItemData(product)\n\t\titem_data = wpm.ga4AddListNameToProduct(item_data, product.position)\n\t\titem_data = wpm.ga4AddFormattedCategories(item_data, product.category)\n\n\t\treturn item_data\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'\nrequire(\"./functions_premium\")\nrequire(\"./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 * Run the following on every page load\n */\n\njQuery(document).on(\"wpmLoadAlways\", function () {\n\n\ttry {\n\n\t} catch (e) {\n\t\tconsole.error(e)\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 premium functions\n */\n\n(function (wpm, $, undefined) {\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'\nrequire(\"./functions_premium\")\nrequire(\"./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 * Load Microsoft Ads event listeners\n *\n * https://help.ads.microsoft.com/#apex/ads/en/56684/2\n *\n * add_payment_info, add_to_cart, add_to_wishlist, begin_checkout, checkout_progress, exception, generate_lead, login, page_view, purchase, refund, remove_from_cart, screen_view, search, select_content, set_checkout_option, share, sign_up, timing_complete, view_item, view_item_list, view_promotion, view_search_results\n *\n * */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.bing?.uet_tag_id && !wpmDataLayer?.pixels?.bing?.loaded) {\n\t\tif (wpm.canIFire(\"ads\", \"microsoft-ads\")) wpm.load_bing_pixel()\n\t}\n})\n\n// https://help.ads.microsoft.com/#apex/ads/en/60118/-1\n// add-to-cart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.bing?.loaded) return\n\n\t\twindow.uetq.push(\"event\", \"add_to_cart\", {\n\t\t\tecomm_pagetype: \"cart\",\n\t\t\tecomm_prodid : product.dyn_r_ids[wpmDataLayer.pixels.bing.dynamic_remarketing.id_type],\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// https://help.ads.microsoft.com/#apex/ads/en/60118/-1\n// view product event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.bing?.loaded) return\n\n\t\tlet data = {}\n\n\t\tif (product) {\n\t\t\tdata.ecomm_pagetype = \"product\"\n\t\t\tdata.ecomm_prodid = product.dyn_r_ids[wpmDataLayer.pixels.bing.dynamic_remarketing.id_type]\n\t\t}\n\n\t\twindow.uetq.push(\"event\", \"view_item\", data)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// https://help.ads.microsoft.com/#apex/ads/en/60118/-1\n// view category event\njQuery(document).on(\"wpmCategory\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.bing?.loaded) return\n\n\t\twindow.uetq.push(\"event\", \"\", {\n\t\t\tecomm_pagetype: \"category\",\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// https://help.ads.microsoft.com/#apex/ads/en/60118/-1\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.bing?.loaded) return\n\n\t\twindow.uetq.push(\"event\", \"search\", {\n\t\t\tecomm_pagetype: \"searchresults\",\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// https://help.ads.microsoft.com/#apex/ads/en/60118/-1\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.bing?.loaded) return\n\n\t\twindow.uetq.push(\"event\", \"purchase\", {\n\t\t\tecomm_pagetype: \"purchase\",\n\t\t\tecomm_prodid : wpm.bing_purchase_ecomm_prodids(),\n\t\t\trevenue_value : wpmDataLayer.order.value_filtered,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\titems : wpm.bing_purchase_items(),\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n","/**\n * Load Microsoft Ads premium functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.load_bing_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.bing.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\twindow.uetq = window.uetq || [];\n\n\t\t\t(function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[],f=function(){var o={ti:wpmDataLayer.pixels.bing.uet_tag_id};o.q=w[u],w[u]=new UET(o),w[u].push(\"pageLoad\")},n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){var s=this.readyState;s&&s!==\"loaded\"&&s!==\"complete\"||(f(),n.onload=n.onreadystatechange=null)},i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)})(window,document,\"script\",\"//bat.bing.com/bat.js\",\"uetq\");\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\twpm.bing_purchase_ecomm_prodids = function () {\n\n\t\tlet prodIds = []\n\n\t\tfor (const [key, orderItem] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== orderItem.variation_id) {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[orderItem.variation_id].dyn_r_ids[wpmDataLayer.pixels.bing.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[orderItem.id].dyn_r_ids[wpmDataLayer.pixels.bing.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn prodIds\n\t}\n\n\twpm.bing_purchase_items = 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.bing.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.bing.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 * Microsoft Ads loader\n */\n\n// #if process.env.TIER === 'premium'\nrequire(\"./functions_premium\")\nrequire(\"./event_listeners_premium\")\n// #endif\n\n","/**\n * Load Pinterest event listeners\n * */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.pinterest?.pixel_id && !wpmDataLayer?.pixels?.pinterest?.loaded) {\n\t\tif (wpm.canIFire(\"ads\", \"pinterest-ads\")) wpm.loadPinterestPixel()\n\t}\n})\n\n\n// https://help.pinterest.com/en/business/article/add-event-codes\n// AddToCart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.pinterest?.loaded) return\n\n\t\tpintrk(\"track\", \"addtocart\", {\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t\tline_items: [wpm.getPinterestProductData(product)],\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// https://help.pinterest.com/en/business/article/add-event-codes\n// pageview event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.pinterest?.loaded) return\n\n\t\tlet data = {}\n\n\t\tif (product) {\n\t\t\tdata.currency = product.currency\n\t\t\tdata.line_items = [wpm.getPinterestProductData(product)]\n\t\t}\n\n\t\tpintrk(\"track\", \"pagevisit\", data)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.pinterest?.loaded) return\n\n\t\tlet urlParams = new URLSearchParams(window.location.search)\n\n\t\tpintrk(\"track\", \"search\", {\n\t\t\tsearch_query: urlParams.get(\"s\"),\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view category event\njQuery(document).on(\"wpmCategory\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.pinterest?.loaded) return\n\n\t\tpintrk(\"track\", \"viewcategory\")\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\n// https://developers.pinterest.com/docs/tag/conversion/\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.pinterest?.loaded) return\n\n\t\tpintrk(\"track\", \"checkout\", {\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\torder_quantity: wpmDataLayer.order.quantity,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\torder_id : wpmDataLayer.order.id,\n\t\t\tline_items : wpm.pinterestFormattedOrderItems(),\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","// TODO add enhanced match email hash to uncached pages like cart and purchase confirmation page\n// TODO check if more values can be passed to product and category pages\n// TODO look into how Pinterest handles variants separately https://developers.pinterest.com/docs/tag/conversion/\n\n/**\n * Load Pinterest premium functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getPinterestProductData = function (product) {\n\n\t\tif (product.isVariation) {\n\t\t\treturn {\n\t\t\t\tproduct_name : product.name,\n\t\t\t\tproduct_variant_id: product.dyn_r_ids[wpmDataLayer.pixels.pinterest.dynamic_remarketing.id_type],\n\t\t\t\t// product_id : wpmDataLayer.products[product.parentId].dyn_r_ids[wpmDataLayer.pixels.pinterest.dynamic_remarketing.id_type],\n\t\t\t\tproduct_id : product.parentId_dyn_r_ids[wpmDataLayer.pixels.pinterest.dynamic_remarketing.id_type],\n\t\t\t\tproduct_category: product.category,\n\t\t\t\tproduct_variant : product.variant,\n\t\t\t\tproduct_price : product.price,\n\t\t\t\tproduct_quantity: product.quantity,\n\t\t\t\tproduct_brand : product.brand,\n\t\t\t}\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tproduct_name : product.name,\n\t\t\t\tproduct_id : product.dyn_r_ids[wpmDataLayer.pixels.pinterest.dynamic_remarketing.id_type],\n\t\t\t\tproduct_category: product.category,\n\t\t\t\tproduct_price : product.price,\n\t\t\t\tproduct_quantity: product.quantity,\n\t\t\t\tproduct_brand : product.brand,\n\t\t\t}\n\t\t}\n\t}\n\n\twpm.pinterestFormattedOrderItems = 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\tproduct_category: wpmDataLayer.products[key].category.join(\",\"),\n\t\t\t\t// product_brand : wpmDataLayer.products[key].brand,\n\t\t\t\tproduct_quantity: item.quantity,\n\t\t\t\tproduct_price : item.price,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.product_id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.pinterest.dynamic_remarketing.id_type])\n\t\t\t\torderItem.product_name = wpmDataLayer.products[item.variation_id].name\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.product_id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.pinterest.dynamic_remarketing.id_type])\n\t\t\t\torderItem.product_name = wpmDataLayer.products[item.id].name\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\t// https://developers.pinterest.com/docs/tag/conversion/\n\twpm.loadPinterestPixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.pinterest.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(e){if(!window.pintrk){window.pintrk=function(){window.pintrk.queue.push(\n\t\t\t\tArray.prototype.slice.call(arguments))};var\n\t\t\t\tn=window.pintrk;n.queue=[],n.version=\"3.0\";var\n\t\t\t\tt=document.createElement(\"script\");t.async=!0,t.src=e;var\n\t\t\t\tr=document.getElementsByTagName(\"script\")[0];r.parentNode.insertBefore(t,r)}}(\"https://s.pinimg.com/ct/core.js\");\n\n\t\t\twpm.pinterestLoadEvent();\n\t\t\tpintrk('page');\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\twpm.pinterestLoadEvent = function () {\n\t\ttry {\n\t\t\tif (\n\t\t\t\t(\n\t\t\t\t\twpmDataLayer.general.userLoggedIn ||\n\t\t\t\t\t\"order_received_page\" === wpmDataLayer.shop.page_type\n\t\t\t\t)\n\t\t\t\t&& wpmDataLayer?.pixels?.pinterest?.enhanced_match\n\t\t\t) {\n\t\t\t\tpintrk(\"load\", wpmDataLayer.pixels.pinterest.pixel_id, {em: wpmDataLayer.pixels.pinterest.enhanced_match_email})\n\t\t\t} else {\n\t\t\t\tpintrk(\"load\", wpmDataLayer.pixels.pinterest.pixel_id)\n\t\t\t}\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 * Pinterest Ads loader\n */\n\n// #if process.env.TIER === 'premium'\nrequire(\"./functions_premium\")\nrequire(\"./event_listeners_premium\")\n// #endif\n\n","// TODO check all events and add more if there are any\n\n/**\n * All event listeners\n * */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.snapchat?.pixel_id && !wpmDataLayer?.pixels?.snapchat?.loaded) {\n\t\tif (wpm.canIFire(\"ads\", \"snapchat-ads\")) wpm.loadSnapchatPixel()\n\t}\n})\n\n// AddToCart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.snapchat?.loaded) return\n\n\t\tsnaptr(\"track\", \"ADD_CART\", {\n\t\t\titem_ids: [product.dyn_r_ids[wpmDataLayer.pixels.snapchat.dynamic_remarketing.id_type]],\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// VIEW_CONTENT event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.snapchat?.loaded) return\n\n\t\tlet data = {}\n\n\t\tif (product) {\n\t\t\tdata.item_ids = [product.dyn_r_ids[wpmDataLayer.pixels.snapchat.dynamic_remarketing.id_type]]\n\t\t}\n\n\t\tsnaptr(\"track\", \"VIEW_CONTENT\", data)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.snapchat?.loaded) return\n\n\t\tsnaptr(\"track\", \"PURCHASE\", {\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tprice : wpmDataLayer.order.value_filtered,\n\t\t\ttransaction_id: wpmDataLayer.order.id,\n\t\t\titem_ids : wpm.getSnapchatOrderItemIds(),\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load Snapchat Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.snapchatGetEmail = function () {\n\n\t\tlet userInfo = {}\n\n\t\tif (wpmDataLayer?.user?.email?.sha256) {\n\t\t\tuserInfo.user_hashed_email = wpmDataLayer.user.email.sha256\n\t\t}\n\n\t\treturn userInfo\n\t}\n\n\twpm.loadSnapchatPixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.snapchat.loaded = true;\n\n\t\t\t// @formatter:off\n\t\t\t(function(e,t,n){if(e.snaptr)return;var a=e.snaptr=function()\n\t\t\t{a.handleRequest?a.handleRequest.apply(a,arguments):a.queue.push(arguments)};\n\t\t\t\ta.queue=[];var s='script';r=t.createElement(s);r.async=!0;\n\t\t\t\tr.src=n;var u=t.getElementsByTagName(s)[0];\n\t\t\t\tu.parentNode.insertBefore(r,u);})(window,document,\n\t\t\t\t'https://sc-static.net/scevent.min.js');\n\n\t\t\tsnaptr(\"init\", wpmDataLayer.pixels.snapchat.pixel_id, wpm.snapchatGetEmail())\n\n\t\t\tsnaptr(\"track\", \"PAGE_VIEW\")\n\t\t\t// @formatter:on\n\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getSnapchatOrderItemIds = function () {\n\t\tlet contentIds = []\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\tcontentIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.snapchat.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tcontentIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.snapchat.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn contentIds\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Snapchat Ads loader\n */\n\n// #if process.env.TIER === 'premium'\nrequire(\"./functions_premium\")\nrequire(\"./event_listeners_premium\")\n// #endif\n\n","// https://ads.tiktok.com/help/article?aid=10028\n// Deduplication: https://ads.tiktok.com/marketing_api/docs?id=1723170195197953\n// TODO check all events and add more if there are any\n\n/**\n * Load TikTok Ads event listeners\n * */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", () => {\n\n\tif (wpmDataLayer?.pixels?.tiktok?.pixel_id && !wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tif (wpm.canIFire(\"ads\", \"tiktok-ads\")) wpm.loadTikTokPixel()\n\t}\n})\n\n// AddToCart event\njQuery(document).on(\"wpmClientSideAddToCart\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.tiktok?.loaded) return\n\n\t\tttq.track(\n\t\t\tpayload.tiktok.event,\n\t\t\tpayload.tiktok.properties,\n\t\t\t{event_id: payload.tiktok.event_id},\n\t\t)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// InitiateCheckout event\njQuery(document).on(\"wpmClientSideBeginCheckout\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.tiktok?.loaded) return\n\n\t\tttq.track(\n\t\t\tpayload.tiktok.event,\n\t\t\t{},\n\t\t\t{event_id: payload.tiktok.event_id},\n\t\t)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// ViewContent event\njQuery(document).on(\"wpmClientSideViewItem\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.tiktok?.loaded) return\n\n\t\tttq.track(\n\t\t\tpayload.tiktok.event,\n\t\t\tpayload.tiktok.properties,\n\t\t\t{event_id: payload.tiktok.event_id},\n\t\t)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// AddToWishlist event\njQuery(document).on(\"wpmClientSideAddToWishlist\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.tiktok?.loaded) return\n\n\t\tttq.track(\n\t\t\tpayload.tiktok.event,\n\t\t\tpayload.tiktok.properties,\n\t\t\t{event_id: payload.tiktok.event_id},\n\t\t)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// search event\njQuery(document).on(\"wpmClientSideSearch\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.tiktok?.loaded) return\n\n\t\tttq.track(\n\t\t\tpayload.tiktok.event,\n\t\t\tpayload.tiktok.properties,\n\t\t\t{event_id: payload.tiktok.event_id},\n\t\t)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n\n})\n\n// PlaceAnOrder event\njQuery(document).on(\"wpmClientPlaceOrder\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.tiktok?.loaded) return\n\n\t\tttq.track(\n\t\t\tpayload.tiktok.event,\n\t\t\t{},\n\t\t\t{event_id: payload.tiktok.event_id},\n\t\t)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n\n})\n\n// view order received page event\njQuery(document).on(\"wpmClientSideOrderReceivedPage\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.tiktok?.loaded) return\n\n\t\tttq.track(\n\t\t\tpayload.tiktok.event,\n\t\t\tpayload.tiktok.properties,\n\t\t\t{event_id: payload.tiktok.event_id},\n\t\t)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load TikTok Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.loadTikTokPixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.tiktok.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function (w, d, t) {\n\t\t\t\tw.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=[\"page\",\"track\",\"identify\",\"instances\",\"debug\",\"on\",\"off\",\"once\",\"ready\",\"alias\",\"group\",\"enableCookie\",\"disableCookie\"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i {\n\n\t\tlet\n\t\t\tdata = {\n\t\t\t\tuser: {},\n\t\t\t\tpage: {},\n\n\t\t\t}\n\n\t\tif (wpm.getCookie(\"_ttp\") && wpm.isValidTtp(wpm.getCookie(\"_ttp\"))) {\n\t\t\tdata.user.ttp = wpm.getCookie(\"_ttp\")\n\t\t}\n\n\t\tif (wpm.getCookie(\"_ttclid\") && wpm.isValidTtclid(wpm.getCookie(\"_ttclid\"))) {\n\t\t\tdata.ad = {\n\t\t\t\t\"callback\": wpm.getCookie(\"_ttclid\"),\n\t\t\t}\n\t\t}\n\n\t\tif (window.location.href) {\n\n\t\t\t// Remove the parameters from the URL and save it to data.page.url\n\t\t\tdata.page.url = window.location.href.split(\"?\")[0]\n\t\t}\n\n\t\tif (wpm.getCookie(\"wpmReferrer\")) {\n\t\t\tdata.page.referrer = wpm.getCookie(\"wpmReferrer\")\n\n\t\t\t// If http is missing, add it\n\t\t\tif (!data.page.referrer.startsWith(\"http\")) data.page.referrer = \"https://\" + data.page.referrer\n\t\t}\n\n\t\tif (wpmDataLayer?.pixels?.tiktok?.advanced_matching) {\n\t\t\tif (wpmDataLayer?.user?.id?.sha256) data.user.external_id = wpmDataLayer.user.id.sha256\n\t\t\tif (wpmDataLayer?.user?.email?.sha256) data.user.sha256_email = wpmDataLayer.user.email.sha256\n\t\t\tif (wpmDataLayer?.user?.phone?.sha256?.e164) data.user.sha256_phone_number = wpmDataLayer.user.phone.sha256.e164\n\t\t\tif (navigator.userAgent) data.user_agent = navigator.userAgent\n\t\t}\n\n\t\t// If data.user is empty, remove it\n\t\tif (Object.keys(data.user).length === 0) delete data.user\n\n\t\treturn data\n\t}\n\n\twpm.isValidTtp = ttp => {\n\n\t\tlet re = new RegExp(/^[\\da-zA-Z-]{20,50}$/)\n\n\t\treturn re.test(ttp)\n\t}\n\n\twpm.isValidTtclid = ttclid => {\n\n\t\tlet re = new RegExp(/^[\\da-zA-z-]{5,600}$/)\n\n\t\treturn re.test(ttclid)\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * TikTok Ads loader\n */\n\n// #if process.env.TIER === 'premium'\nrequire(\"./functions_premium\")\nrequire(\"./event_listeners_premium\")\n// #endif\n\n","// TODO implement AddPaymentInfo event\n// TODO check if more values can be passed to product and cart pages\n\n// https://business.twitter.com/en/help/campaign-measurement-and-analytics/conversion-tracking-for-websites.html\n\n/**\n * Load Twitter Ads event listeners\n * */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.twitter?.pixel_id && !wpmDataLayer?.pixels?.twitter?.loaded) {\n\t\tif (wpm.canIFire(\"ads\", \"twitter-ads\")) wpm.loadTwitterPixel()\n\t}\n})\n\n// add-to-cart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.twitter?.loaded) return\n\n\t\ttwq(\"track\", \"AddToCart\")\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view product event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.twitter?.loaded) return\n\n\t\ttwq(\"track\", \"ViewContent\")\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// // view category event\n// jQuery(document).on('wpmCategory', function () {\n//\n// \tif (!wpmDataLayer?.pixels?.twitter?.loaded) return;\n//\n// \t// twq('track', 'AddToWishlist');\n// });\n\n// add-to-wishlist event\njQuery(document).on(\"wpmAddToWishlist\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.twitter?.loaded) return\n\n\t\ttwq(\"track\", \"AddToWishlist\")\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// start checkout event\njQuery(document).on(\"wpmBeginCheckout\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.twitter?.loaded) return\n\n\t\ttwq(\"track\", \"InitiateCheckout\")\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.twitter?.loaded) return\n\n\t\ttwq(\"track\", \"Search\")\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\n// TODO find out under which circumstances to use different values in content_type\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.twitter?.loaded) return\n\n\t\ttwq(\"track\", \"Purchase\", {\n\t\t\torder_id: wpmDataLayer.order.id,\n\t\t\t// content_type: 'product',\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tnum_items : wpmDataLayer.order.quantity,\n\t\t\tcontent_ids: wpm.twitterGetOrderContentIds(),\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n","/**\n * Load Twitter Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.loadTwitterPixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.twitter.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments);\n\t\t\t},s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='//static.ads-twitter.com/uwt.js',\n\t\t\t\ta=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script');\n\n\t\t\ttwq('init', wpmDataLayer.pixels.twitter.pixel_id);\n\t\t\t// @formatter:on\n\n\t\t\ttwq(\"track\", \"PageView\")\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.twitterGetOrderContentIds = function () {\n\t\tlet contentIds = []\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\tcontentIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.twitter.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tcontentIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.twitter.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn contentIds\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Twitter Ads loader\n */\n\n// #if process.env.TIER === 'premium'\nrequire(\"./functions_premium\")\nrequire(\"./event_listeners_premium\")\n// #endif\n\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 * remove_from_cart event\n *\n * Cannot be attached directly because the mini cart doesn't necessarily contain the remove button on page load.\n */\njQuery(document).on(\"click\", \".remove_from_cart_button, .remove\", (event) => {\n\n\t// console.log(\"remove_from_cart event\" + new Date().getTime())\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\n/**\n * begin_checkout event\n *\n * Cannot be attached directly because the mini cart doesn't necessarily contain the remove button on page load.\n */\nlet checkoutButtonClasses = [\n\t// \".checkout\",\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).on(\"click init_checkout\", checkoutButtonClasses, () => {\n\n\t// console.log(\"init_checkout at: \" + new Date().getTime())\n\n\tjQuery(document).trigger(\"wpmBeginCheckout\")\n})\n\njQuery(document).on(\"updated_cart_totals\", () => {\n\tjQuery(document).trigger(\"wpmViewCart\")\n})\n\n/**\n * Set up PWM events\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// 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 */\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, wpmDataLayer.order.key)\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// Facebook\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// TikTok\n\t// https://ads.tiktok.com/gateway/docs/index?identify_key=c0138ffadd90a955c1f0670a56fe348d1d40680b3c89461e09f78ed26785164b&language=ENGLISH&doc_id=1739585702922241#item-link-Adding%20parameters%20to%20event%20code\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"AddToCart\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\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(\"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\t// Facebook\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// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"InitiateCheckout\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\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\t// Facebook\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// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\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(\"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\t// Facebook\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// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"ViewContent\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.tiktok.properties = {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\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(\"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\t// Facebook\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// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"Search\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tquery: 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(\"wpmPlaceOrder\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"placeOrder\",\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"PlaceAnOrder\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientPlaceOrder\", 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\t// Facebook\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// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"CompletePayment\",\n\t\t\tevent_id : wpmDataLayer.order.id.toString(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcontents: wpm.getTikTokOrderItemIds(),\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 * Register event listeners\n */\n\n\n/**\n * add_to_cart event\n *\n * WC is inconsistent with events that emit add-to-cart events.\n * adding_to_cart and added_to_are legacy events. Also, they only work\n * on Ajax buttons on shop pages.\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\njQuery(addToCartSelectors).on(\"click adding_to_cart\", (event) => {\n\t// console log current time\n\t// console.log(\"add_to_cart event fired at: \" + new Date().getTime())\n\n\ttry {\n\n\t\t// console.log(\"add_to_cart event detected\")\n\n\t\tlet quantity = 1,\n\t\t\tproductId\n\n\t\t// Only process on product pages\n\t\tif (wpmDataLayer.shop.page_type === \"product\") {\n\n\t\t\t// First process related and upsell products\n\t\t\tif (typeof jQuery(event.currentTarget).attr(\"href\") !== \"undefined\" && jQuery(event.currentTarget).attr(\"href\").includes(\"add-to-cart\")) {\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\")\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t\t// If is simple product\n\t\t\tif (wpmDataLayer.shop.product_type === \"simple\") {\n\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\tproductId = jQuery(event.currentTarget).val()\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t\t// If is variable product or variable-subscription\n\t\t\tif ([\"variable\", \"variable-subscription\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\tproductId = jQuery(\"[name='variation_id']\").val()\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t\t// If is grouped product\n\t\t\tif (wpmDataLayer.shop.product_type === \"grouped\") {\n\n\t\t\t\tjQuery(\".woocommerce-grouped-product-list-item\").each((index, element) => {\n\n\t\t\t\t\tquantity = Number(jQuery(element).find(\".input-text.qty\").val())\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\t\tlet classes = jQuery(element).attr(\"class\")\n\t\t\t\t\tproductId = wpm.getPostIdFromString(classes)\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// If is bundle product\n\t\t\tif (wpmDataLayer.shop.product_type === \"bundle\") {\n\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\tproductId = jQuery(\"input[name=add-to-cart]\").val()\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\")\n\t\t\twpm.addProductToCart(productId, quantity)\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\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\n// jQuery(document).one(\"click\", \"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\", (event) => {\njQuery(\"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\").one(\"click\", (event) => {\n\n\ttry {\n\t\tif (jQuery(event.target).closest(\"a\").attr(\"href\")) {\n\n\t\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"), window.location.origin)\n\n\t\t\tif (url.searchParams.has(\"add-to-cart\")) {\n\n\t\t\t\tlet productId = url.searchParams.get(\"add-to-cart\")\n\t\t\t\twpm.addProductToCart(productId, 1)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select item event\n// jQuery(document).on(\"click\", \".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\", (event) => {\njQuery(\".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\").on(\"click\", (event) => {\n\n\ttry {\n\n\t\t/**\n\t\t * On some pages the event fires multiple times, and on product pages\n\t\t * even on page load. Using e.stopPropagation helps to prevent this,\n\t\t * but I don't know why. We don't even have to use this, since only a real\n\t\t * product click yields a valid productId. So we filter the invalid click\n\t\t * events out later down in the code. I'll keep it that way because this is\n\t\t * the most compatible way across shops.\n\t\t *\n\t\t * e.stopPropagation();\n\t\t * */\n\n\t\tlet productId = jQuery(event.currentTarget).nextAll(\".wpmProductId:first\").data(\"id\")\n\n\t\t/**\n\t\t * On product pages, for some reason, the click event is triggered on the main product on page load.\n\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 * related products, which are found below.\n\t\t */\n\n\t\tif (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 && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmSelectContentGaUa\", product)\n\t\t\t\tjQuery(document).trigger(\"wpmSelectItem\", product)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// checkout_progress event\n// track checkout option event: entered valid billing email\n// jQuery(document).on(\"input\", \"#billing_email\", (event) => {\njQuery(\"#billing_email\").on(\"input\", (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\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 *\n * Has to be hooked after document ready !\n */\njQuery(\"form.checkout\").on(\"checkout_place_order_success\", () => {\n\n\t// console log current time\n\t// console.log(\"checkout_place_order_success event fired at: \" + new Date().getTime())\n\n\tif (false === wpm.emailSelected) {\n\t\twpm.fireCheckoutProgress(2)\n\t}\n\n\tif (false === wpm.paymentMethodSelected) {\n\t\twpm.fireCheckoutProgress(3)\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t}\n\n\twpm.fireCheckoutProgress(4)\n\n\tjQuery(document).trigger(\"wpmPlaceOrder\", {})\n})\n\n/**\n * Update cart event\n *\n * Has to be hooked after document ready !\n */\njQuery(\"[name='update_cart']\").on(\"click\", () => {\n\n\ttry {\n\t\tjQuery(\".cart_item\").each((index, element) => {\n\n\t\t\tlet url = new URL(jQuery(element).find(\".product-remove\").find(\"a\").attr(\"href\"))\n\t\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\t\tlet quantity = jQuery(element).find(\".qty\").val()\n\n\t\t\tif (quantity === 0) {\n\t\t\t\twpm.removeProductFromCart(productId)\n\t\t\t} else if (quantity < wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.removeProductFromCart(productId, wpmDataLayer.cart[productId].quantity - quantity)\n\t\t\t} else if (quantity > wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.addProductToCart(productId, quantity - wpmDataLayer.cart[productId].quantity)\n\t\t\t}\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t\twpm.getCartItemsFromBackend()\n\t}\n})\n\n// add_to_wishlist\njQuery(\".add_to_wishlist,.wl-add-to\").on(\"click\", event => {\n\n\ttry {\n\n\t\tlet productId\n\n\t\tif (jQuery(event.currentTarget).data(\"productid\")) { // for the WooCommerce wishlist plugin\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"productid\")\n\t\t} else if (jQuery(event.currentTarget).data(\"product-id\")) { // for the YITH wishlist plugin\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"product-id\")\n\t\t}\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\n\t\tjQuery(document).trigger(\"wpmAddToWishlist\", product)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\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(\".single_variation_wrap\").on(\"show_variation\", (event, variation) => {\n\n\ttry {\n\t\tlet productId = wpm.getIdBasedOndVariationsOutputSetting(variation.variation_id)\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\twpm.triggerViewItemEventPrep(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\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 * Automatic Conversion Recovery (ACR)\n */\njQuery(document).on(\"wpmLoadAlways\", async () => {\n\n\ttry {\n\t\t// Return if on purchase confirmation page\n\t\tif (wpmDataLayer?.shop?.page_type === \"order_received_page\") return\n\n\t\t// console.log(\"ACR running\")\n\n\t\t// Return if ACR cookie has not been set\n\t\tif (!wpm.getCookie(\"pmw_automatic_conversion_recovery\")) return\n\n\t\t// console.log(\"ACR cookie found\")\n\n\t\t// Return if window.sessionStorage is not supported\n\t\tif (!window.sessionStorage) return\n\n\t\t// console.log(\"window.sessionStorage available\")\n\n\t\t// Return if the check has already run in the current session\n\t\tif (window.sessionStorage.getItem(\"_pmw_acr_attempted\")) return\n\n\t\t// console.log(\"ACR check not run in this session\")\n\n\t\t// Get the order details from the server\n\t\tawait wpm.getAcrOrderDetails()\n\n\t\tif(!wpmDataLayer?.order) {\n\t\t\tconsole.error(\"ACR order details not retrieved\")\n\t\t\treturn\n\t\t}\n\n\t\t// console.log(\"ACR order details retrieved\")\n\n\t\t// console.log(\"wpmDataLayer.order\", wpmDataLayer.order)\n\n\t\t// Fire the conversion pixels\n\t\tjQuery(document).trigger(\"wpmOrderReceivedPage\")\n\n\t\t// Save the order ID on the server to prevent duplicate conversions\n\t\twpm.writeOrderIdToStorage(wpmDataLayer.order.id, wpmDataLayer.order.key, \"acr_full_auto\")\n\n\t\t// Delete the ACR cookie\n\t\twpm.deleteCookie(\"pmw_automatic_conversion_recovery\")\n\n\t} catch (error) {\n\t\tif (window.sessionStorage) window.sessionStorage.setItem(\"_pmw_acr_attempted\", JSON.stringify(true))\n\t\tconsole.error(error)\n\t}\n})\n\n/**\n * Scroll Tracker\n */\n\n// We only can load it once the pmwDataLayer is available\njQuery(document).on(\"wpmLoad\", function () {\n\n\t// Only initialize if the scroll tracker is enabled\n\tif (!wpmDataLayer?.general?.scrollTrackingThresholds || !wpmDataLayer.general.scrollTrackingThresholds.length > 0) return\n\n\t(function (wpm, $, undefined) {\n\n\t\twpm.scrollVisibilityThreshold = wpmDataLayer.general.scrollTrackingThresholds\n\n\t\t// Create an object that contains each key from visibilityBreakPoints and sets each value to false\n\t\twpm.scrollVisibilityThresholdStatus = wpm.scrollVisibilityThreshold.reduce((obj, item) => {\n\t\t\tobj[item] = false\n\t\t\treturn obj\n\t\t}, {})\n\n\t}(window.wpm = window.wpm || {}, jQuery));\n\n\tjQuery(window).on(\"scroll\", (event) => {\n\n\t\tconst scrollPosition = jQuery(window).scrollTop()\n\n\t\t// If the scroll reaches a visibility threshold for each threshold in visibilityThresholdStatus that is set to false, trigger an event\n\t\tfor (const [threshold, value] of Object.entries(wpm.scrollVisibilityThresholdStatus)) {\n\t\t\tif (value === false) {\n\t\t\t\tconst visibilityBreakPoint = (jQuery(document).height() - jQuery(window).height()) * (threshold / 100)\n\t\t\t\tif (scrollPosition >= visibilityBreakPoint) {\n\t\t\t\t\tjQuery(document).trigger(\"pmwScrollDepth\", {\n\t\t\t\t\t\tdirection : \"vertical\",\n\t\t\t\t\t\tthreshold : threshold,\n\t\t\t\t\t\tposition : scrollPosition,\n\t\t\t\t\t\tpositionUnit: \"pixels\",\n\t\t\t\t\t})\n\t\t\t\t\twpm.scrollVisibilityThresholdStatus[threshold] = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\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, orderKey, 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( orderKey, 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 ( orderKey, 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\t\"X-WP-Nonce\" : wpm.nonce_wp_rest,\n\t\t\t\t\t},\n\t\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\t\t// order_id: orderId,\n\t\t\t\t\t\torder_key: orderKey,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t\t// nonce : wpm.pmw_nonce,\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\t// order_id: orderId,\n\t\t\t\t\t\torder_key: orderKey,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t\tnonce_ajax : wpm.nonce_ajax,\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\tconst responseJson = await response.json()\n\n\t\t\tif (responseJson.success) {\n\t\t\t\tconsole.log(\"wpm.storeOrderIdOnServer success\")\n\t\t\t} else {\n\t\t\t\tconsole.error(\"wpm.storeOrderIdOnServer error\", responseJson)\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\tlet excludeDomains = [\n\t\t\t\"appspot.com\",\n\t\t\t\"translate.google.com\",\n\t\t]\n\n\t\tif (wpmDataLayer?.general?.excludeDomains) {\n\t\t\texcludeDomains = [...excludeDomains, ...wpmDataLayer.general.excludeDomains]\n\t\t}\n\n\t\t// Abort if URL contains excluded domains\n\t\tif (excludeDomains.some(domain => window.location.href.includes(domain))) {\n\t\t\tconsole.debug(\"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\twpm.getRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\tlet jQueryReadyFired = false\n\n\tconst triggerDomReadyEvent = () => {\n\t\tif (jQueryReadyFired === false) jQuery(document).trigger(\"pmw:ready\")\n\t\tjQueryReadyFired = true\n\t}\n\n\tjQuery(document).on(\"ready\", () => {\n\t\ttriggerDomReadyEvent()\n\t})\n\n\tdocument.addEventListener(\"DOMContentLoaded\", () => {\n\t\ttriggerDomReadyEvent()\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'\nrequire(\"./functions_premium\")\n// #endif\n","(function (wpm, $, undefined) {\n\n\twpm.sendEventPayloadToServer = async payload => {\n\n\t\tconst isServerToServerEnabled = () => {\n\n\t\t\tif (\n\t\t\t\twpmDataLayer?.pixels?.facebook?.capi\n\t\t\t\t|| wpmDataLayer?.pixels?.tiktok?.eapi\n\t\t\t) return true\n\n\t\t\treturn false\n\t\t}\n\n\t\tconst isServerToServerDisabled = () => {\n\t\t\treturn !isServerToServerEnabled()\n\t\t}\n\n\t\tconst sendPayloadUsingFetch = payload => {\n\n\t\t\t// Send data to pmw public API with fetch API\n\t\t\tfetch(wpm.root + \"pmw/v1/sse/\", {\n\t\t\t\tmethod : \"POST\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\theaders : {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t},\n\t\t\t\tbody : JSON.stringify(payload),\n\t\t\t\tkeepalive : true,\t// keep connection alive until request is finished\n\t\t\t})\n\t\t\t\t.then(response => response.json())\n\t\t\t\t.then(message => {\n\t\t\t\t\tif (!message.success) {\n\t\t\t\t\t\tconsole.error(message)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t})\n\n\t\t}\n\n\t\tconst sendPayloadUsingNavigatorSendBeacon = data => {\n\t\t\t// https://css-tricks.com/send-an-http-request-on-page-exit/\n\t\t\tnavigator.sendBeacon(wpm.root + \"pmw/v1/sse/\", data)\n\t\t}\n\n\t\ttry {\n\t\t\tif (isServerToServerDisabled()) return\n\n\t\t\tif (await wpm.isRestEndpointAvailable()) { // Send data using REST API\n\n\t\t\t\tconst blob = new Blob([JSON.stringify(payload)], {type: \"application/json; charset=UTF-8\"})\n\n\t\t\t\t// navigator.sendBeacon has a limit of 64kb. Fall back to fetch if the blob is too large.\n\t\t\t\tif (blob.size < 60000) {\n\t\t\t\t\tsendPayloadUsingNavigatorSendBeacon(blob)\n\t\t\t\t} else {\n\t\t\t\t\tsendPayloadUsingFetch(payload)\n\t\t\t\t}\n\t\t\t} else { // Send data using wp-ajax\n\n\t\t\t\tjQuery.ajax(\n\t\t\t\t\t{\n\t\t\t\t\t\ttype : \"post\",\n\t\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\t\turl : wpm.ajax_url,\n\t\t\t\t\t\tdata : {\n\t\t\t\t\t\t\taction: \"pmw_server_to_server_event\",\n\t\t\t\t\t\t\tdata : payload,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess : message => {\n\t\t\t\t\t\t\t// console.log(message)\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror : message => {\n\t\t\t\t\t\t\tconsole.error(message)\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.acrRemoveCookie = () => {\n\n\t\t// Delete the pmw_checkout_order_created cookie\n\t\t// This cookie is used to verify that the purchase confirmation page has been reached\n\n\t\twpm.deleteCookie(\"pmw_automatic_conversion_recovery\")\n\t}\n\n\twpm.getAcrOrderDetails = async () => {\n\n\t\t// Get the order details from the pmw_automatic_conversion_recovery cookie\n\t\tconst acrOrderDetails = JSON.parse(wpm.getCookie(\"pmw_automatic_conversion_recovery\"))\n\n\t\tlet response\n\n\t\t// Get order details from the server using the REST API if the REST API is available\n\t\tif (await wpm.isRestEndpointAvailable()) {\n\t\t\tresponse = await fetch(wpm.root + \"pmw/v1/acr/order/\", {\n\t\t\t\tmethod : \"POST\",\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t\tcache : \"no-cache\",\n\t\t\t\theaders : {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t},\n\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\torder_id : acrOrderDetails.order_id,\n\t\t\t\t\torder_key: acrOrderDetails.order_key,\n\t\t\t\t}),\n\t\t\t})\n\n\t\t} else {\n\t\t\t// Get order details from the server using the wp-ajax API if the REST API is not available using jQuery\n\t\t\tresponse = await jQuery.ajax({\n\t\t\t\ttype : \"POST\",\n\t\t\t\tdataType: \"json\",\n\t\t\t\turl : wpm.ajax_url,\n\t\t\t\tdata : {\n\t\t\t\t\taction: \"get_acr_order_data_ajax\",\n\t\t\t\t\tdata : {\n\t\t\t\t\t\torder_id : acrOrderDetails.order_id,\n\t\t\t\t\t\torder_key: acrOrderDetails.order_key,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\n\t\t}\n\n\t\tconst responseJson = await response.json()\n\n\t\tif (responseJson.success) {\n\t\t\tconsole.log(\"ACR order details retrieved successfully\")\n\t\t} else {\n\t\t\tconsole.error(\"ACR order details could not be retrieved\", responseJson)\n\t\t}\n\n\t\twpmDataLayer.products = {...wpmDataLayer.products, ...responseJson.data.products}\n\t\twpmDataLayer.order = responseJson.data.order\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\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\tif (wpm.excludeDomainFromTracking()) return\n\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t})\n\t.then(() => {\n\t\twpm.pageLoaded().then(() => {\n\t\t\tdocument.dispatchEvent(new Event(\"wpmLoad\"))\n\t\t})\n\t})\n\n\n/**\n * Run when page is ready\n */\n\n// wpm.pageReady().then(() => {\njQuery(document).on(\"pmw:ready\", () => {\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\tjQuery(document).on(\"pmw:ready\", () => {\n\t\trequire(\"./wpm/event_listeners_on_ready\")\n\t})\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","eventData","capi","blob","Blob","JSON","stringify","type","navigator","sendBeacon","root","e","$","undefined","fbUserData","f","window","b","n","callMethod","apply","arguments","queue","push","_fbq","version","t","createElement","async","src","s","getElementsByTagName","parentNode","insertBefore","data","isFbpSet","isFbAdvancedMatchingEnabled","getUserIdentifiersForFb","user","id","raw","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","advanced_matching","getCookie","isValidFbp","fbp","isValidFbc","fbc","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","eec","ga3GetFullProductItemData","shop","getCartItemsGaUa","checkout_step","step","checkout_option","search_term","getSearchTermFromUrl","scrollEvent","threshold","category","join","variant","variant_name","brand","ga3AddListNameToProduct","item_data","productPosition","list_name","list_position","productId","ga3GetBasicProductItemData","ga3CanProductListBeSet","sessionStorage","getItem","setItem","wpmProductListStore","parse","includes","position","ga4","measurement_id","getGA4OrderItems","ga4GetFullProductItemData","item_list_name","item_list_id","list_id","getCartItemsGa4","cartValue","toFixed","item_name","item_category","item_id","item_variant","item_brand","ga4AddFormattedCategories","categories","Array","from","Set","isArray","length","max","i","ga4GetBasicProductItemData","ga4AddListNameToProduct","index","canGoogleLoad","loadGoogle","logPreventedPixelLoading","consent_mode","active","getConsentValues","mode","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","j","a","r","hj","q","_hjSettings","hjid","hjsv","appendChild","bing","uet_tag_id","load_bing_pixel","uetq","ecomm_pagetype","ecomm_prodid","bing_purchase_ecomm_prodids","revenue_value","bing_purchase_items","w","d","u","ti","UET","onload","onreadystatechange","this","readyState","pinterest","loadPinterestPixel","pintrk","line_items","getPinterestProductData","urlParams","URLSearchParams","search","search_query","get","order_quantity","order_id","pinterestFormattedOrderItems","isVariation","product_name","product_variant_id","product_id","parentId_dyn_r_ids","product_category","product_variant","product_price","product_quantity","product_brand","prototype","slice","call","pinterestLoadEvent","userLoggedIn","enhanced_match","enhanced_match_email","snapchat","loadSnapchatPixel","snaptr","item_ids","getSnapchatOrderItemIds","snapchatGetEmail","userInfo","sha256","user_hashed_email","handleRequest","contentIds","tiktok","loadTikTokPixel","ttq","track","properties","TiktokAnalyticsObject","methods","setAndDefer","concat","instance","_i","load","_u","_t","_o","page","e164","identity","sha256_email","sha256_phone_number","identify","getTikTokOrderItemIds","content_id","getTikTokUserDataFromBrowser","isValidTtp","ttp","isValidTtclid","ad","url","split","referrer","startsWith","user_agent","ttclid","twitter","loadTwitterPixel","twq","num_items","twitterGetOrderContentIds","exe","getComplianzCookies","cmplz_statistics","cmplz_marketing","visitorHasChosen","getCookieLawInfoCookies","analyticsCookie","adsCookie","wpmConsentValues","setConsentValueCategories","updateConsentCookieValues","cookie","explicitConsent","decodeURI","indexOf","action","consents","statistics","marketing","thirdparty","advanced","localStorage","log","UC_UI","addEventListener","ucUiProcessConsent","areAllConsentsAccepted","groups","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","URL","currentTarget","getProductIdByCartItemKeyUrl","removeProductFromCart","checkoutButtonClasses","paymentMethodSelected","fireCheckoutProgress","fireCheckoutOption","val","doesWooCommerceCartExist","getCartItems","productIds","getAddToCartLinkProductIds","getProductsFromBackend","referrerHostname","hostname","host","wpmLoadFired","product_type","getMainProductIdFromProductPage","getProductDataForViewItemEvent","isOrderIdStored","writeOrderIdToStorage","acrRemoveCookie","hasLoginEventFired","setLoginEventFired","getRandomEventId","context","contents","sendEventPayloadToServer","getCartValue","search_string","query","addToCartSelectors","addProductToCart","Number","each","find","classes","getPostIdFromString","one","target","closest","origin","searchParams","has","nextAll","getIdBasedOndVariationsOutputSetting","Error","getProductDetailsFormattedForEvent","isEmail","emailSelected","getCartItemsFromBackend","variation","triggerViewItemEventPrep","getAcrOrderDetails","deleteCookie","scrollTrackingThresholds","scrollVisibilityThreshold","scrollVisibilityThresholdStatus","reduce","obj","scrollPosition","scrollTop","height","direction","positionUnit","wpmDeduper","wpmRestSettings","checkCookie","useRestEndpoint","isSessionStorageAvailable","isRestEndpointAvailable","isBelowRestErrorThreshold","testEndpoint","cookieName","response","fetch","method","cache","keepalive","isWpmRestEndpointAvailable","orderId","orderKey","source","Storage","ids","expiresDate","setDate","getDate","toUTCString","storeOrderIdOnServer","orderDeduplication","quantityToRemove","parentId","saveCartObjectToDataLayer","ajax_url","ok","json","success","headers","pageId","responseData","assign","cartObject","triggerViewItemEvent","triggerViewItemEventNoProduct","string","match","triggerViewItemList","viewItemListTriggerTestMode","css","append","viewItemListTrigger","opacity","backgroundColor","io","ioTimeouts","observerCallback","observer","entry","elementId","next","isIntersecting","testMode","repeat","unobserve","timeout","clearTimeout","allIoElementsToWatch","ioid","getAllElementsToWatch","map","elem","parent","hasClass","prev","startIntersectionObserverToWatch","urlHasParameter","IntersectionObserver","startProductsMutationObserverToWatch","productsNode","parents","first","productsMutationObserver","attributes","characterData","mutation","newNodes","hasWpmProductIdElement","siblings","cookieValue","expiryDays","setTime","getTime","expires","ca","decodeURIComponent","c","charAt","getWpmSessionData","setWpmSessionData","nonce_wp_rest","order_key","nonce_ajax","responseJson","cartItemKey","cartItemKeys","matches","setReferrerToCookie","getReferrerFromCookie","getClidFromBrowser","clidCookieId","clidId","gclid","dclid","getUserAgent","getViewPort","width","clientWidth","innerWidth","clientHeight","innerHeight","options","dataType","ajax","getOrderItemPrice","total","total_tax","loginEventFired","wpmDataLayerExists","waitForVar","jQueryExists","waitForjQuery","pageLoaded","pageReady","isMiniCartActive","parameter","hashAsync","algo","str","crypto","subtle","digest","TextEncoder","encode","buf","Uint8Array","x","patterns","pattern","excludeDomainFromTracking","excludeDomains","domain","debug","jQueryReadyFired","triggerDomReadyEvent","eapi","size","credentials","message","catch","sendPayloadUsingFetch","acrOrderDetails","pro","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""}