Version Description
25.10.2022
- Tweak: Switched getting tracking scripts from fetch back to jQuery.ajax() as fetch on some sites returned type errors.
Download this release
Release Info
Developer | alekv |
Plugin | Pixel Manager for WooCommerce – Track Google Analytics, Google Ads, Facebook and more |
Version | 1.25.1 |
Comparing to | |
See all releases |
Code changes from version 1.25.0 to 1.25.1
- classes/admin/class-admin.php +243 -12
- classes/admin/class-validations.php +10 -0
- classes/class-default-options.php +12 -7
- classes/class-helpers.php +19 -0
- classes/pixels/class-pixel-manager.php +7 -1
- css/admin.css +4 -0
- js/public/wpm-public.p1.min.js +1 -1
- js/public/wpm-public.p1.min.js.br +0 -0
- js/public/wpm-public.p1.min.js.gz +0 -0
- js/public/wpm-public.p1.min.js.map +1 -1
- languages/woocommerce-google-adwords-conversion-tracking-tag.pot +232 -219
- readme.txt +8 -2
- wgact.php +2 -2
classes/admin/class-admin.php
CHANGED
@@ -6,6 +6,7 @@ namespace WCPM\Classes\Admin;
|
|
6 |
use WCPM\Classes\Helpers ;
|
7 |
use WCPM\Classes\Pixels\Google\Google ;
|
8 |
use WCPM\Classes\Pixels\Trait_Shop ;
|
|
|
9 |
|
10 |
if ( !defined( 'ABSPATH' ) ) {
|
11 |
exit;
|
@@ -47,6 +48,63 @@ class Admin
|
|
47 |
wpm_fs()->add_filter( 'templates/checkout.php', [ $this, 'fs_inject_additional_scripts' ] );
|
48 |
wpm_fs()->add_filter( 'checkout/purchaseCompleted', [ $this, 'fs_after_purchase_js' ] );
|
49 |
// end __construct
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
}
|
51 |
|
52 |
protected function if_is_wpm_admin_page()
|
@@ -91,7 +149,7 @@ class Admin
|
|
91 |
public function wpm_admin_css( $hook_suffix )
|
92 |
{
|
93 |
// Only output the css on PMW pages and the order page
|
94 |
-
if ( !(strpos( $hook_suffix, 'page_wpm' ) || Helpers::is_orders_page()) ) {
|
95 |
return;
|
96 |
}
|
97 |
wp_enqueue_style(
|
@@ -342,7 +400,7 @@ class Admin
|
|
342 |
// add the field for the TikTok pixel
|
343 |
add_settings_field(
|
344 |
'wpm_plugin_tiktok_pixel_id',
|
345 |
-
esc_html__( 'TikTok pixel ID', 'woocommerce-google-adwords-conversion-tracking-tag' ),
|
346 |
[ $this, 'wpm_option_html_tiktok_pixel_id' ],
|
347 |
'wpm_plugin_options_page',
|
348 |
$section_ids['settings_name']
|
@@ -495,14 +553,36 @@ class Admin
|
|
495 |
'wpm_plugin_options_page',
|
496 |
$section_ids['settings_name']
|
497 |
);
|
498 |
-
// add fields for the Google
|
499 |
add_settings_field(
|
500 |
'wpm_setting_google_analytics_4_api_secret',
|
501 |
-
esc_html__( '
|
502 |
[ $this, 'wpm_setting_html_google_analytics_4_api_secret' ],
|
503 |
'wpm_plugin_options_page',
|
504 |
$section_ids['settings_name']
|
505 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
506 |
}
|
507 |
|
508 |
// add fields for the Google Analytics link attribution
|
@@ -705,6 +785,14 @@ class Admin
|
|
705 |
'wpm_plugin_options_page',
|
706 |
$section_ids['settings_name']
|
707 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
708 |
// add field for the Facebook CAPI user transparency process anonymous hits
|
709 |
add_settings_field(
|
710 |
'wpm_setting_facebook_capi_user_transparency_process_anonymous_hits',
|
@@ -721,14 +809,18 @@ class Admin
|
|
721 |
'wpm_plugin_options_page',
|
722 |
$section_ids['settings_name']
|
723 |
);
|
724 |
-
//
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
|
|
|
|
|
|
|
|
732 |
}
|
733 |
|
734 |
public function add_section_beta()
|
@@ -2024,6 +2116,103 @@ class Admin
|
|
2024 |
esc_html_e( 'If enabled, purchase and refund events will be sent to Google through the measurement protocol for increased accuracy.', 'woocommerce-google-adwords-conversion-tracking-tag' );
|
2025 |
}
|
2026 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2027 |
public function wpm_setting_html_google_analytics_link_attribution()
|
2028 |
{
|
2029 |
// adding the hidden input is a hack to make WordPress save the option with the value zero,
|
@@ -2399,6 +2588,39 @@ class Admin
|
|
2399 |
// echo ' <i>123456789</i>';
|
2400 |
}
|
2401 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2402 |
public function wpm_setting_facebook_capi_user_transparency_process_anonymous_hits()
|
2403 |
{
|
2404 |
// adding the hidden input is a hack to make WordPress save the option with the value zero,
|
@@ -3154,6 +3376,15 @@ class Admin
|
|
3154 |
add_settings_error( 'wgact_plugin_options', 'invalid-facebook-pixel-id', esc_html__( 'You have entered an invalid Meta (Facebook) CAPI token.', 'woocommerce-google-adwords-conversion-tracking-tag' ) );
|
3155 |
}
|
3156 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3157 |
}
|
3158 |
// validate Bing Ads UET tag ID
|
3159 |
if ( isset( $input['bing']['uet_tag_id'] ) ) {
|
6 |
use WCPM\Classes\Helpers ;
|
7 |
use WCPM\Classes\Pixels\Google\Google ;
|
8 |
use WCPM\Classes\Pixels\Trait_Shop ;
|
9 |
+
use WP_Post ;
|
10 |
|
11 |
if ( !defined( 'ABSPATH' ) ) {
|
12 |
exit;
|
48 |
wpm_fs()->add_filter( 'templates/checkout.php', [ $this, 'fs_inject_additional_scripts' ] );
|
49 |
wpm_fs()->add_filter( 'checkout/purchaseCompleted', [ $this, 'fs_after_purchase_js' ] );
|
50 |
// end __construct
|
51 |
+
// https://stackoverflow.com/a/45617265/4688612
|
52 |
+
// https://stackoverflow.com/a/37780501/4688612
|
53 |
+
// add_action('add_meta_boxes', function () {
|
54 |
+
//
|
55 |
+
// $screen = Helpers::is_wc_hpos_enabled() && wc_get_container()->get(\Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController::class)->custom_orders_table_usage_is_enabled()
|
56 |
+
// ? wc_get_page_screen_id('shop-order')
|
57 |
+
// : 'shop_order';
|
58 |
+
//
|
59 |
+
// add_meta_box(
|
60 |
+
// 'ga4-attribution-modal',
|
61 |
+
// esc_html__('GA4 Attribution', 'woocommerce-google-adwords-conversion-tracking-tag'),
|
62 |
+
// [$this, 'ga4_attribution_modal'],
|
63 |
+
// $screen,
|
64 |
+
// 'side',
|
65 |
+
// 'core'
|
66 |
+
// );
|
67 |
+
// });
|
68 |
+
}
|
69 |
+
|
70 |
+
public function ga4_attribution_modal( $post_or_order_object )
|
71 |
+
{
|
72 |
+
$order = ( $post_or_order_object instanceof WP_Post ? wc_get_order( $post_or_order_object->ID ) : $post_or_order_object );
|
73 |
+
// echo 'order ID: ' . $post->ID . '<br>';
|
74 |
+
// echo 'order key: ' . $order->get_order_key() . '<br>';
|
75 |
+
// echo 'order number: ' . $order->get_order_number() . '<br>';
|
76 |
+
// Table with heading channel, attribution value and attribution value percentage
|
77 |
+
// last row shows total
|
78 |
+
?>
|
79 |
+
<table>
|
80 |
+
<tr>
|
81 |
+
<th>Channel</th>
|
82 |
+
<th class="pmw-ga4-attr-values">Attr. Val.</th>
|
83 |
+
<th class="pmw-ga4-attr-values">Attr. %</th>
|
84 |
+
</tr>
|
85 |
+
<tr>
|
86 |
+
<td>Organic</td>
|
87 |
+
<td class="pmw-ga4-attr-values">0</td>
|
88 |
+
<td class="pmw-ga4-attr-values">0%</td>
|
89 |
+
</tr>
|
90 |
+
<tr>
|
91 |
+
<td>Direct</td>
|
92 |
+
<td class="pmw-ga4-attr-values">0</td>
|
93 |
+
<td class="pmw-ga4-attr-values">0%</td>
|
94 |
+
</tr>
|
95 |
+
<tr>
|
96 |
+
<td>Referral</td>
|
97 |
+
<td class="pmw-ga4-attr-values">0</td>
|
98 |
+
<td class="pmw-ga4-attr-values">0%</td>
|
99 |
+
</tr>
|
100 |
+
<tr>
|
101 |
+
<td><b>Total</b></td>
|
102 |
+
<td class="pmw-ga4-attr-values"><b>0</b></td>
|
103 |
+
<td class="pmw-ga4-attr-values"><b>0%</b></td>
|
104 |
+
</tr>
|
105 |
+
|
106 |
+
</table>
|
107 |
+
<?php
|
108 |
}
|
109 |
|
110 |
protected function if_is_wpm_admin_page()
|
149 |
public function wpm_admin_css( $hook_suffix )
|
150 |
{
|
151 |
// Only output the css on PMW pages and the order page
|
152 |
+
if ( !(strpos( $hook_suffix, 'page_wpm' ) || Helpers::is_orders_page() || Helpers::is_edit_order_page()) ) {
|
153 |
return;
|
154 |
}
|
155 |
wp_enqueue_style(
|
400 |
// add the field for the TikTok pixel
|
401 |
add_settings_field(
|
402 |
'wpm_plugin_tiktok_pixel_id',
|
403 |
+
esc_html__( 'TikTok pixel ID', 'woocommerce-google-adwords-conversion-tracking-tag' ) . $this->html_beta(),
|
404 |
[ $this, 'wpm_option_html_tiktok_pixel_id' ],
|
405 |
'wpm_plugin_options_page',
|
406 |
$section_ids['settings_name']
|
553 |
'wpm_plugin_options_page',
|
554 |
$section_ids['settings_name']
|
555 |
);
|
556 |
+
// add fields for the Google GA4 API secret
|
557 |
add_settings_field(
|
558 |
'wpm_setting_google_analytics_4_api_secret',
|
559 |
+
esc_html__( 'GA4 API secret', 'woocommerce-google-adwords-conversion-tracking-tag' ),
|
560 |
[ $this, 'wpm_setting_html_google_analytics_4_api_secret' ],
|
561 |
'wpm_plugin_options_page',
|
562 |
$section_ids['settings_name']
|
563 |
);
|
564 |
+
// Add fields for the GA4 Data API credentials upload
|
565 |
+
// add_settings_field(
|
566 |
+
// 'pmw_setting_ga4_data_api_credentials',
|
567 |
+
// esc_html__(
|
568 |
+
// 'GA4 Data API Credentials',
|
569 |
+
// 'woocommerce-google-adwords-conversion-tracking-tag'
|
570 |
+
// ) . $this->html_beta(),
|
571 |
+
// [$this, 'pmw_setting_html_g4_data_api_credentials'],
|
572 |
+
// 'wpm_plugin_options_page',
|
573 |
+
// $section_ids['settings_name']
|
574 |
+
// );
|
575 |
+
// Add fields for the GA4 Data API property ID
|
576 |
+
// add_settings_field(
|
577 |
+
// 'pmw_setting_ga4_property_id',
|
578 |
+
// esc_html__(
|
579 |
+
// 'GA4 Property ID',
|
580 |
+
// 'woocommerce-google-adwords-conversion-tracking-tag'
|
581 |
+
// ) . $this->html_beta(),
|
582 |
+
// [$this, 'pmw_setting_html_ga4_property_id'],
|
583 |
+
// 'wpm_plugin_options_page',
|
584 |
+
// $section_ids['settings_name']
|
585 |
+
// );
|
586 |
}
|
587 |
|
588 |
// add fields for the Google Analytics link attribution
|
785 |
'wpm_plugin_options_page',
|
786 |
$section_ids['settings_name']
|
787 |
);
|
788 |
+
// add field for the Facebook CAPI test event code
|
789 |
+
add_settings_field(
|
790 |
+
'pmw_setting_facebook_capi_test_event_code',
|
791 |
+
esc_html__( 'Meta (Facebook) CAPI: test event code', 'woocommerce-google-adwords-conversion-tracking-tag' ),
|
792 |
+
[ $this, 'pmw_setting_html_facebook_capi_test_event_code' ],
|
793 |
+
'wpm_plugin_options_page',
|
794 |
+
$section_ids['settings_name']
|
795 |
+
);
|
796 |
// add field for the Facebook CAPI user transparency process anonymous hits
|
797 |
add_settings_field(
|
798 |
'wpm_setting_facebook_capi_user_transparency_process_anonymous_hits',
|
809 |
'wpm_plugin_options_page',
|
810 |
$section_ids['settings_name']
|
811 |
);
|
812 |
+
// This feature is deprecated since 1.25.1
|
813 |
+
// We keep it active for users who are currently using it.
|
814 |
+
if ( $this->options['facebook']['microdata'] ) {
|
815 |
+
// add fields for Facebook microdata
|
816 |
+
add_settings_field(
|
817 |
+
'wpm_setting_facebook_microdata_active',
|
818 |
+
esc_html__( 'Meta (Facebook) Microdata Tags for Catalogues', 'woocommerce-google-adwords-conversion-tracking-tag' ),
|
819 |
+
[ $this, 'wpm_setting_html_facebook_microdata' ],
|
820 |
+
'wpm_plugin_options_page',
|
821 |
+
$section_ids['settings_name']
|
822 |
+
);
|
823 |
+
}
|
824 |
}
|
825 |
|
826 |
public function add_section_beta()
|
2116 |
esc_html_e( 'If enabled, purchase and refund events will be sent to Google through the measurement protocol for increased accuracy.', 'woocommerce-google-adwords-conversion-tracking-tag' );
|
2117 |
}
|
2118 |
|
2119 |
+
public function pmw_setting_html_g4_data_api_credentials()
|
2120 |
+
{
|
2121 |
+
$feed_url = get_site_url() . '/wp-json/pmw/v1/google-ads/conversion-adjustments.csv';
|
2122 |
+
$feed_url_length = strlen( $feed_url );
|
2123 |
+
?>
|
2124 |
+
<div style="margin-top: 5px">
|
2125 |
+
|
2126 |
+
<input
|
2127 |
+
id='pmw_plugin_google_ads_conversion_adjustments_feed'
|
2128 |
+
name='pmw_plugin_google_ads_conversion_adjustments_feed'
|
2129 |
+
size='<?php
|
2130 |
+
esc_html_e( $feed_url_length );
|
2131 |
+
?>'
|
2132 |
+
type='text'
|
2133 |
+
value='<?php
|
2134 |
+
echo esc_url( get_site_url() . '/wp-json/pmw/v1/google-ads/conversion-adjustments.csv' ) ;
|
2135 |
+
?>'
|
2136 |
+
disabled
|
2137 |
+
style="font-family: monospace; color:#505050"
|
2138 |
+
/>
|
2139 |
+
<script>
|
2140 |
+
const pmwCopyToClipboardCA = () => {
|
2141 |
+
|
2142 |
+
// const feedUrlElement = document.getElementById("pmw_plugin_google_ads_conversion_adjustments_feed")
|
2143 |
+
// feedUrlElement.select()
|
2144 |
+
// feedUrlElement.setSelectionRange(0, 99999)
|
2145 |
+
navigator.clipboard.writeText(document.getElementById("pmw_plugin_google_ads_conversion_adjustments_feed").value)
|
2146 |
+
|
2147 |
+
const pmwCaFeedTooltip = document.getElementById("myPmwCaTooltip")
|
2148 |
+
pmwCaFeedTooltip.innerHTML = "Copied feed URL to clipboard"
|
2149 |
+
}
|
2150 |
+
|
2151 |
+
const resetCaCopyButton = () => {
|
2152 |
+
const pmwCaFeedTooltip = document.getElementById("myPmwCaTooltip")
|
2153 |
+
pmwCaFeedTooltip.innerHTML = "Copy to clipboard"
|
2154 |
+
}
|
2155 |
+
</script>
|
2156 |
+
<div class="pmwCaTooltip">
|
2157 |
+
<a href="javascript:void(0)" class="pmw-copy-icon pmwCaTooltip"
|
2158 |
+
onclick="pmwCopyToClipboardCA()" onmouseout="resetCaCopyButton()"></a>
|
2159 |
+
<span class="pmwCaTooltiptext" id="myPmwCaTooltip">Copy to clipboard</span>
|
2160 |
+
</div>
|
2161 |
+
<?php
|
2162 |
+
$this->get_status_icon( $this->options['google']['ads']['conversion_adjustments']['conversion_name'], $this->google->is_google_ads_active() );
|
2163 |
+
?>
|
2164 |
+
<?php
|
2165 |
+
$this->get_documentation_html_by_key( 'google_ads_conversion_adjustments' );
|
2166 |
+
?>
|
2167 |
+
<?php
|
2168 |
+
$this->html_pro_feature();
|
2169 |
+
?>
|
2170 |
+
<div style="margin-top: 20px">
|
2171 |
+
<?php
|
2172 |
+
|
2173 |
+
if ( !$this->options['google']['ads']['conversion_adjustments']['conversion_name'] ) {
|
2174 |
+
?>
|
2175 |
+
<span class="dashicons dashicons-info" style="padding-right: 10px"></span>
|
2176 |
+
<?php
|
2177 |
+
esc_html_e( 'The Conversion Name must be set.', 'woocommerce-google-adwords-conversion-tracking-tag' );
|
2178 |
+
?>
|
2179 |
+
<?php
|
2180 |
+
}
|
2181 |
+
|
2182 |
+
?>
|
2183 |
+
</div>
|
2184 |
+
</div>
|
2185 |
+
<?php
|
2186 |
+
}
|
2187 |
+
|
2188 |
+
public function pmw_setting_html_ga4_property_id()
|
2189 |
+
{
|
2190 |
+
?>
|
2191 |
+
<input
|
2192 |
+
id='pmw_setting_ga4_property_id'
|
2193 |
+
name='wgact_plugin_options[google][analytics][ga4][data_api][property_id]'
|
2194 |
+
size='40'
|
2195 |
+
type='text'
|
2196 |
+
value='<?php
|
2197 |
+
esc_html_e( $this->options['google']['analytics']['ga4']['data_api']['property_id'] );
|
2198 |
+
?>'
|
2199 |
+
<?php
|
2200 |
+
esc_html_e( $this->disable_if_demo() );
|
2201 |
+
?>
|
2202 |
+
/>
|
2203 |
+
<?php
|
2204 |
+
$this->get_status_icon( $this->options['google']['analytics']['ga4']['data_api']['property_id'] );
|
2205 |
+
$this->get_documentation_html_by_key( 'ga4_data_api_property_id' );
|
2206 |
+
$this->html_pro_feature();
|
2207 |
+
// echo '<br><br>';
|
2208 |
+
// if (!$this->options['google']['analytics']['ga4']['measurement_id']) {
|
2209 |
+
// echo '<p></p><span class="dashicons dashicons-info" style="margin-right: 10px"></span>';
|
2210 |
+
// esc_html_e('Google Analytics 4 activation required', 'woocommerce-google-adwords-conversion-tracking-tag');
|
2211 |
+
// echo '</p>';
|
2212 |
+
// }
|
2213 |
+
// esc_html_e('If enabled, purchase and refund events will be sent to Google through the measurement protocol for increased accuracy.', 'woocommerce-google-adwords-conversion-tracking-tag');
|
2214 |
+
}
|
2215 |
+
|
2216 |
public function wpm_setting_html_google_analytics_link_attribution()
|
2217 |
{
|
2218 |
// adding the hidden input is a hack to make WordPress save the option with the value zero,
|
2588 |
// echo ' <i>123456789</i>';
|
2589 |
}
|
2590 |
|
2591 |
+
public function pmw_setting_html_facebook_capi_test_event_code()
|
2592 |
+
{
|
2593 |
+
?>
|
2594 |
+
<input
|
2595 |
+
id='pmw_setting_facebook_capi_test_event_code'
|
2596 |
+
name='wgact_plugin_options[facebook][capi][test_event_code]'
|
2597 |
+
size='40'
|
2598 |
+
type='text'
|
2599 |
+
value='<?php
|
2600 |
+
esc_html_e( $this->options['facebook']['capi']['test_event_code'] );
|
2601 |
+
?>'
|
2602 |
+
<?php
|
2603 |
+
esc_html_e( $this->disable_if_demo() );
|
2604 |
+
?>
|
2605 |
+
/>
|
2606 |
+
<?php
|
2607 |
+
$this->get_status_icon( $this->options['facebook']['capi']['test_event_code'], $this->options['facebook']['capi']['token'] && $this->options['facebook']['capi']['test_event_code'], true );
|
2608 |
+
?>
|
2609 |
+
<?php
|
2610 |
+
// $this->get_documentation_html_by_key('facebook_capi_test_event_code');
|
2611 |
+
?>
|
2612 |
+
<?php
|
2613 |
+
$this->html_pro_feature();
|
2614 |
+
?>
|
2615 |
+
<div style="margin-top: 20px">
|
2616 |
+
<span class="dashicons dashicons-info" style="margin-right: 10px"></span>
|
2617 |
+
<?php
|
2618 |
+
esc_html_e( "The test event code automatically rotates frequently within Facebook. If you don't see the server events flowing in, first make sure that you've set the latest test event code.", 'woocommerce-google-adwords-conversion-tracking-tag' );
|
2619 |
+
?>
|
2620 |
+
</div>
|
2621 |
+
<?php
|
2622 |
+
}
|
2623 |
+
|
2624 |
public function wpm_setting_facebook_capi_user_transparency_process_anonymous_hits()
|
2625 |
{
|
2626 |
// adding the hidden input is a hack to make WordPress save the option with the value zero,
|
3376 |
add_settings_error( 'wgact_plugin_options', 'invalid-facebook-pixel-id', esc_html__( 'You have entered an invalid Meta (Facebook) CAPI token.', 'woocommerce-google-adwords-conversion-tracking-tag' ) );
|
3377 |
}
|
3378 |
|
3379 |
+
}
|
3380 |
+
// validate ['facebook']['capi']['test_event_code']
|
3381 |
+
if ( isset( $input['facebook']['capi']['test_event_code'] ) ) {
|
3382 |
+
|
3383 |
+
if ( !Validations::is_facebook_capi_test_event_code( $input['facebook']['capi']['test_event_code'] ) ) {
|
3384 |
+
$input['facebook']['capi']['test_event_code'] = ( isset( $this->options['facebook']['capi']['test_event_code'] ) ? $this->options['facebook']['capi']['test_event_code'] : '' );
|
3385 |
+
add_settings_error( 'wgact_plugin_options', 'invalid-facebook-capi-test-event-code', esc_html__( 'You have entered an invalid Meta (Facebook) CAPI test_event_code.', 'woocommerce-google-adwords-conversion-tracking-tag' ) );
|
3386 |
+
}
|
3387 |
+
|
3388 |
}
|
3389 |
// validate Bing Ads UET tag ID
|
3390 |
if ( isset( $input['bing']['uet_tag_id'] ) ) {
|
classes/admin/class-validations.php
CHANGED
@@ -55,6 +55,16 @@ class Validations {
|
|
55 |
return self::validate_with_regex($re, $string);
|
56 |
}
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
public static function is_gads_conversion_label( $string ) {
|
59 |
if (empty($string)) {
|
60 |
return true;
|
55 |
return self::validate_with_regex($re, $string);
|
56 |
}
|
57 |
|
58 |
+
public static function is_facebook_capi_test_event_code( $string ) {
|
59 |
+
if (empty($string)) {
|
60 |
+
return true;
|
61 |
+
}
|
62 |
+
|
63 |
+
$re = '/^TEST\d{3,7}$/m';
|
64 |
+
|
65 |
+
return self::validate_with_regex($re, $string);
|
66 |
+
}
|
67 |
+
|
68 |
public static function is_gads_conversion_label( $string ) {
|
69 |
if (empty($string)) {
|
70 |
return true;
|
classes/class-default-options.php
CHANGED
@@ -35,6 +35,10 @@ class Default_Options {
|
|
35 |
'ga4' => [
|
36 |
'measurement_id' => '',
|
37 |
'api_secret' => '',
|
|
|
|
|
|
|
|
|
38 |
],
|
39 |
'link_attribution' => false,
|
40 |
],
|
@@ -52,6 +56,7 @@ class Default_Options {
|
|
52 |
'microdata' => false,
|
53 |
'capi' => [
|
54 |
'token' => '',
|
|
|
55 |
'user_transparency' => [
|
56 |
'process_anonymous_hits' => false,
|
57 |
'send_additional_client_identifiers' => false,
|
@@ -65,7 +70,7 @@ class Default_Options {
|
|
65 |
'pixel_id' => ''
|
66 |
],
|
67 |
'pinterest' => [
|
68 |
-
'pixel_id'
|
69 |
'enhanced_match' => false,
|
70 |
],
|
71 |
'snapchat' => [
|
@@ -78,19 +83,19 @@ class Default_Options {
|
|
78 |
'site_id' => ''
|
79 |
],
|
80 |
'shop' => [
|
81 |
-
'order_total_logic'
|
82 |
-
'cookie_consent_mgmt'
|
83 |
'explicit_consent' => false,
|
84 |
],
|
85 |
-
'order_deduplication'
|
86 |
-
'disable_tracking_for'
|
87 |
-
'order_list_info'
|
88 |
],
|
89 |
'general' => [
|
90 |
'variations_output' => true,
|
91 |
'maximum_compatibility_mode' => false,
|
92 |
'pro_version_demo' => false,
|
93 |
-
'scroll_tracker_thresholds'
|
94 |
],
|
95 |
'db_version' => WPM_DB_VERSION,
|
96 |
];
|
35 |
'ga4' => [
|
36 |
'measurement_id' => '',
|
37 |
'api_secret' => '',
|
38 |
+
'data_api' => [
|
39 |
+
'property_id' => '',
|
40 |
+
'credentials' => [],
|
41 |
+
],
|
42 |
],
|
43 |
'link_attribution' => false,
|
44 |
],
|
56 |
'microdata' => false,
|
57 |
'capi' => [
|
58 |
'token' => '',
|
59 |
+
'test_event_code' => '',
|
60 |
'user_transparency' => [
|
61 |
'process_anonymous_hits' => false,
|
62 |
'send_additional_client_identifiers' => false,
|
70 |
'pixel_id' => ''
|
71 |
],
|
72 |
'pinterest' => [
|
73 |
+
'pixel_id' => '',
|
74 |
'enhanced_match' => false,
|
75 |
],
|
76 |
'snapchat' => [
|
83 |
'site_id' => ''
|
84 |
],
|
85 |
'shop' => [
|
86 |
+
'order_total_logic' => 0,
|
87 |
+
'cookie_consent_mgmt' => [
|
88 |
'explicit_consent' => false,
|
89 |
],
|
90 |
+
'order_deduplication' => true,
|
91 |
+
'disable_tracking_for' => [],
|
92 |
+
'order_list_info' => true,
|
93 |
],
|
94 |
'general' => [
|
95 |
'variations_output' => true,
|
96 |
'maximum_compatibility_mode' => false,
|
97 |
'pro_version_demo' => false,
|
98 |
+
'scroll_tracker_thresholds' => [],
|
99 |
],
|
100 |
'db_version' => WPM_DB_VERSION,
|
101 |
];
|
classes/class-helpers.php
CHANGED
@@ -53,6 +53,25 @@ class Helpers {
|
|
53 |
return ( 'edit.php' === $pagenow && isset($_get['post_type']) && 'shop_order' === $_get['post_type'] ) || ( isset($_get['page']) && 'wc-orders' === $_get['page'] );
|
54 |
}
|
55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
public static function get_input_vars( $type ) {
|
57 |
|
58 |
$input_vars = filter_input_array($type, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
|
53 |
return ( 'edit.php' === $pagenow && isset($_get['post_type']) && 'shop_order' === $_get['post_type'] ) || ( isset($_get['page']) && 'wc-orders' === $_get['page'] );
|
54 |
}
|
55 |
|
56 |
+
// If is single order page return true
|
57 |
+
// TODO Check if it works with HPOS enabled
|
58 |
+
public static function is_edit_order_page() {
|
59 |
+
// global $pagenow;
|
60 |
+
//
|
61 |
+
// $_get = self::get_input_vars(INPUT_GET);
|
62 |
+
//
|
63 |
+
// error_log('current screen id: ' . get_current_screen()->id);
|
64 |
+
|
65 |
+
return 'shop_order' === get_current_screen()->id;
|
66 |
+
|
67 |
+
// return
|
68 |
+
// 'post.php' === $pagenow
|
69 |
+
// && isset($_get['post'])
|
70 |
+
// && 'shop_order' === get_post_type($_get['post'])
|
71 |
+
// && isset($_get['action'])
|
72 |
+
// && 'edit' === $_get['action'];
|
73 |
+
}
|
74 |
+
|
75 |
public static function get_input_vars( $type ) {
|
76 |
|
77 |
$input_vars = filter_input_array($type, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
|
classes/pixels/class-pixel-manager.php
CHANGED
@@ -827,7 +827,13 @@ class Pixel_Manager
|
|
827 |
'dynamic_remarketing' => [
|
828 |
'id_type' => $this->get_dyn_r_id_type( 'tiktok' ),
|
829 |
],
|
830 |
-
'purchase_event_name' =>
|
|
|
|
|
|
|
|
|
|
|
|
|
831 |
];
|
832 |
}
|
833 |
|
827 |
'dynamic_remarketing' => [
|
828 |
'id_type' => $this->get_dyn_r_id_type( 'tiktok' ),
|
829 |
],
|
830 |
+
'purchase_event_name' => apply_filters_deprecated(
|
831 |
+
'wpm_tiktok_purchase_event_name',
|
832 |
+
[ 'Purchase' ],
|
833 |
+
'1.25.1',
|
834 |
+
null,
|
835 |
+
'This filter has been deprecated without replacement'
|
836 |
+
),
|
837 |
];
|
838 |
}
|
839 |
|
css/admin.css
CHANGED
@@ -294,3 +294,7 @@ a.pmw-copy-icon.pmwCaTooltip:focus,
|
|
294 |
a.pmw-documentation-icon:focus{
|
295 |
box-shadow: none;
|
296 |
}
|
|
|
|
|
|
|
|
294 |
a.pmw-documentation-icon:focus{
|
295 |
box-shadow: none;
|
296 |
}
|
297 |
+
|
298 |
+
.pmw-ga4-attr-values{
|
299 |
+
text-align: right;
|
300 |
+
}
|
js/public/wpm-public.p1.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
(()=>{var __webpack_modules__={164:()=>{jQuery(document).on("wpmLoadPixels",(()=>{var e,t,a,o,r,i;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.pixel_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.facebook)&&void 0!==i&&i.loaded||wpm.canIFire("ads","facebook-ads")&&wpm.loadFacebookPixel()})),jQuery(document).on("wpmClientSideAddToCart",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","AddToCart",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideBeginCheckout",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","InitiateCheckout",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideAddToWishlist",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","AddToWishlist",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideViewItem",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","ViewContent",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideSearch",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","Search",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmLoadAlways",(()=>{try{var e,t,a;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.loaded)return;wpm.setFbUserData()}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideOrderReceivedPage",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","Purchase",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}}))},1:()=>{!function(e,t,a){let o;e.loadFacebookPixel=()=>{try{wpmDataLayer.pixels.facebook.loaded=!0,t=window,a=document,o="script",t.fbq||(r=t.fbq=function(){r.callMethod?r.callMethod.apply(r,arguments):r.queue.push(arguments)},t._fbq||(t._fbq=r),r.push=r,r.loaded=!0,r.version="2.0",r.queue=[],(i=a.createElement(o)).async=!0,i.src="https://connect.facebook.net/en_US/fbevents.js",(n=a.getElementsByTagName(o)[0]).parentNode.insertBefore(i,n));let l={};e.isFbpSet()&&(l={...e.getUserIdentifiersForFb()}),fbq("init",wpmDataLayer.pixels.facebook.pixel_id,l),fbq("track","PageView")}catch(o){console.error(o)}var t,a,o,r,i,n},e.getUserIdentifiersForFb=()=>{var e,t,a,o,r,i,n,l,d,s,c,u,p,m,g,w,y,v,_,f,h,L,D,b,C,k,x,j,S,I,P,Q,E,O,A,T,F,V,R,G,U,q,M,N;let W={};return null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.user)&&void 0!==t&&t.id&&(W.external_id=wpmDataLayer.user.id),null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.order)&&void 0!==o&&o.user_id&&(W.external_id=wpmDataLayer.order.user_id),null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.user)&&void 0!==i&&null!==(n=i.facebook)&&void 0!==n&&n.email&&(W.em=wpmDataLayer.user.facebook.email),null!==(l=wpmDataLayer)&&void 0!==l&&null!==(d=l.order)&&void 0!==d&&d.billing_email_hashed&&(W.em=wpmDataLayer.order.billing_email_hashed),null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&null!==(u=c.facebook)&&void 0!==u&&u.first_name&&(W.fn=wpmDataLayer.user.facebook.first_name),null!==(p=wpmDataLayer)&&void 0!==p&&null!==(m=p.order)&&void 0!==m&&m.billing_first_name&&(W.fn=wpmDataLayer.order.billing_first_name.toLowerCase()),null!==(g=wpmDataLayer)&&void 0!==g&&null!==(w=g.user)&&void 0!==w&&null!==(y=w.facebook)&&void 0!==y&&y.last_name&&(W.ln=wpmDataLayer.user.facebook.last_name),null!==(v=wpmDataLayer)&&void 0!==v&&null!==(_=v.order)&&void 0!==_&&_.billing_last_name&&(W.ln=wpmDataLayer.order.billing_last_name.toLowerCase()),null!==(f=wpmDataLayer)&&void 0!==f&&null!==(h=f.user)&&void 0!==h&&null!==(L=h.facebook)&&void 0!==L&&L.phone&&(W.ph=wpmDataLayer.user.facebook.phone),null!==(D=wpmDataLayer)&&void 0!==D&&null!==(b=D.order)&&void 0!==b&&b.billing_phone&&(W.ph=wpmDataLayer.order.billing_phone.replace("+","")),null!==(C=wpmDataLayer)&&void 0!==C&&null!==(k=C.user)&&void 0!==k&&null!==(x=k.facebook)&&void 0!==x&&x.city&&(W.ct=wpmDataLayer.user.facebook.city),null!==(j=wpmDataLayer)&&void 0!==j&&null!==(S=j.order)&&void 0!==S&&S.billing_city&&(W.ct=wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g,"")),null!==(I=wpmDataLayer)&&void 0!==I&&null!==(P=I.user)&&void 0!==P&&null!==(Q=P.facebook)&&void 0!==Q&&Q.state&&(W.st=wpmDataLayer.user.facebook.state),null!==(E=wpmDataLayer)&&void 0!==E&&null!==(O=E.order)&&void 0!==O&&O.billing_state&&(W.st=wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/,"")),null!==(A=wpmDataLayer)&&void 0!==A&&null!==(T=A.user)&&void 0!==T&&null!==(F=T.facebook)&&void 0!==F&&F.postcode&&(W.zp=wpmDataLayer.user.facebook.postcode),null!==(V=wpmDataLayer)&&void 0!==V&&null!==(R=V.order)&&void 0!==R&&R.billing_postcode&&(W.zp=wpmDataLayer.order.billing_postcode),null!==(G=wpmDataLayer)&&void 0!==G&&null!==(U=G.user)&&void 0!==U&&null!==(q=U.facebook)&&void 0!==q&&q.country&&(W.country=wpmDataLayer.user.facebook.country),null!==(M=wpmDataLayer)&&void 0!==M&&null!==(N=M.order)&&void 0!==N&&N.billing_country&&(W.country=wpmDataLayer.order.billing_country.toLowerCase()),W},e.getFbRandomEventId=()=>(Math.random()+1).toString(36).substring(2),e.getFbUserData=()=>(o={...o,...e.getFbUserDataFromBrowser()},o),e.setFbUserData=()=>{o=e.getFbUserDataFromBrowser()},e.getFbUserDataFromBrowser=()=>{var t,a;let o={};return e.getCookie("_fbp")&&e.isValidFbp(e.getCookie("_fbp"))&&(o.fbp=e.getCookie("_fbp")),e.getCookie("_fbc")&&e.isValidFbc(e.getCookie("_fbc"))&&(o.fbc=e.getCookie("_fbc")),null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.user)&&void 0!==a&&a.id&&(o.external_id=wpmDataLayer.user.id),navigator.userAgent&&(o.client_user_agent=navigator.userAgent),o},e.isFbpSet=()=>!!e.getCookie("_fbp"),e.isValidFbp=e=>new RegExp(/^fb\.[0-2]\.\d{13}\.\d{8,20}$/).test(e),e.isValidFbc=e=>new RegExp(/^fb\.[0-2]\.\d{13}\.[\da-zA-Z_-]{8,}/).test(e),e.fbGetProductDataForCapiEvent=e=>({content_type:"product",content_name:e.name,content_ids:[e.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]],value:parseFloat(e.quantity*e.price),currency:e.currency}),e.facebookContentIds=()=>{let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?e.push(String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])):e.push(String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))}return e},e.trackCustomFacebookEvent=function(t){let o=arguments.length>1&&arguments[1]!==a?arguments[1]:{};try{var r,i,n;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.facebook)||void 0===n||!n.loaded)return;let a=e.getFbRandomEventId();fbq("trackCustom",t,o,{eventID:a}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:t,event_id:a,user_data:e.getFbUserData(),event_source_url:window.location.href,custom_data:o})}catch(e){console.error(e)}},e.fbGetContentIdsFromCart=()=>{let e=[];for(const t in wpmDataLayer.cart)e.push(wpmDataLayer.products[t].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]);return e}}(window.wpm=window.wpm||{},jQuery)},12:(e,t,a)=>{a(1),a(164)},165:()=>{jQuery(document).on("wpmViewItemList",(function(e,t){try{var a,o,r,i,n,l,d,s,c,u,p,m,g;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(l=n.pixels)||void 0===l||null===(d=l.google)||void 0===d||null===(s=d.ads)||void 0===s||null===(c=s.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;if(null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.general)&&void 0!==p&&p.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;if(!t)return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers(),items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]};null!==(m=wpmDataLayer)&&void 0!==m&&null!==(g=m.user)&&void 0!==g&&g.id&&(e.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","view_item_list",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmAddToCart",(function(e,t){try{var a,o,r,i,n,l,d,s,c,u,p;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(l=n.pixels)||void 0===l||null===(d=l.google)||void 0===d||null===(s=d.ads)||void 0===s||null===(c=s.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers(),value:t.quantity*t.price,items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]};null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.user)&&void 0!==p&&p.id&&(e.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","add_to_cart",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmViewItem",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;try{var a,o,r,i,n,l,d,s,c,u,p;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(l=n.pixels)||void 0===l||null===(d=l.google)||void 0===d||null===(s=d.ads)||void 0===s||null===(c=s.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers()};t&&(e.value=(t.quantity?t.quantity:1)*t.price,e.items=[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity?t.quantity:1,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]),null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.user)&&void 0!==p&&p.id&&(e.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","view_item",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmSearch",(function(){try{var e,t,a,o,r,i,n,l,d,s,c;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(l=n.ads)||void 0===l||null===(d=l.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let m=[];for(const[e,t]of Object.entries(wpmDataLayer.products)){var u,p;if(null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.general)&&void 0!==p&&p.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;m.push({id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical})}let g={send_to:wpm.getGoogleAdsConversionIdentifiers(),items:m};null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&c.id&&(g.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","view_search_results",g)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,l,d,s,c;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(l=n.ads)||void 0===l||null===(d=l.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let u={send_to:wpm.getGoogleAdsConversionIdentifiers(),value:wpmDataLayer.order.value_filtered,items:wpm.getGoogleAdsDynamicRemarketingOrderItems()};null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&c.id&&(u.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","purchase",u)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmLogin",(function(){try{var e,t,a,o,r,i,n,l,d,s,c;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(l=n.ads)||void 0===l||null===(d=l.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let u={send_to:wpm.getGoogleAdsConversionIdentifiers()};null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&c.id&&(u.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","login",u)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i;if(jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel()))return;if(!wpm.googleConfigConditionsMet("ads"))return;let n={},l={};n={send_to:wpm.getGoogleAdsConversionIdentifiersWithLabel(),transaction_id:wpmDataLayer.order.number,value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,new_customer:wpmDataLayer.order.new_customer},null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.order)&&void 0!==t&&t.clv_order_value_filtered&&(n.customer_lifetime_value=wpmDataLayer.order.clv_order_value_filtered),null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.user)&&void 0!==o&&o.id&&(n.user_id=wpmDataLayer.user.id),null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.order)&&void 0!==i&&i.aw_merchant_id&&(l={discount:wpmDataLayer.order.discount,aw_merchant_id:wpmDataLayer.order.aw_merchant_id,aw_feed_country:wpmDataLayer.order.aw_feed_country,aw_feed_language:wpmDataLayer.order.aw_feed_language,items:wpm.getGoogleAdsRegularOrderItems()}),wpm.gtagLoaded().then((function(){gtag("event","conversion",{...n,...l})}))}catch(e){console.error(e)}}))},42:()=>{!function(e,t,a){e.getGoogleAdsConversionIdentifiersWithLabel=function(){var e,t,a,o;let r=[];if(null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.ads)&&void 0!==o&&o.conversionIds)for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))t&&r.push(e+"/"+t);return r},e.getGoogleAdsConversionIdentifiers=function(){let e=[];for(const[t,a]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))e.push(t);return e},e.getGoogleAdsRegularOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e},e.getGoogleAdsDynamicRemarketingOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e}}(window.wpm=window.wpm||{},jQuery)},190:(e,t,a)=>{a(42),a(165)},625:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,l,d,s;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.universal)||void 0===r||!r.property_id)return;if(null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.universal)&&void 0!==s&&s.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.universal.property_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGAUAOrderItems()})}))}catch(e){console.error(e)}}))},19:()=>{!function(e,t,a){e.getGAUAOrderItems=function(){let t=[];for(const[r,i]of Object.entries(wpmDataLayer.order.items)){var a,o;let r;r={quantity:i.quantity,price:i.price,name:i.name,currency:wpmDataLayer.order.currency,category:wpmDataLayer.products[i.id].category.join("/")},null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.general)&&void 0!==o&&o.variationsOutput&&0!==i.variation_id?(r.id=String(wpmDataLayer.products[i.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.variant=wpmDataLayer.products[i.variation_id].variant_name,r.brand=wpmDataLayer.products[i.variation_id].brand):(r.id=String(wpmDataLayer.products[i.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.brand=wpmDataLayer.products[i.id].brand),r=e.ga3AddListNameToProduct(r),t.push(r)}return t},e.ga3AddListNameToProduct=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null;return e.list_name=wpmDataLayer.shop.list_name,t&&(e.list_position=t),e}}(window.wpm=window.wpm||{},jQuery)},562:(e,t,a)=>{a(19),a(625)},572:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,l,d,s;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.ga4)||void 0===r||!r.measurement_id)return;if(null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.ga4)&&void 0!==s&&s.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.ga4.measurement_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGA4OrderItems()})}))}catch(e){console.error(e)}}))},228:()=>{!function(e,t,a){e.getGA4OrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,item_name:r.name,currency:wpmDataLayer.order.currency,item_category:wpmDataLayer.products[r.id].category.join("/")},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.item_id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_variant=wpmDataLayer.products[r.variation_id].variant_name,o.item_brand=wpmDataLayer.products[r.variation_id].brand):(o.item_id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_brand=wpmDataLayer.products[r.id].brand),e.push(o)}return e}}(window.wpm=window.wpm||{},jQuery)},522:(e,t,a)=>{a(228),a(572)},774:(e,t,a)=>{a(562),a(522)},294:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a;void 0===(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a?void 0:a.state)&&(wpm.canGoogleLoad()?wpm.loadGoogle():wpm.logPreventedPixelLoading("google","analytics / ads"))}))},860:()=>{!function(e,t,a){e.googleConfigConditionsMet=function(t){var a,o,r,i;return!(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.consent_mode)||void 0===i||!i.active)||("category"===e.getConsentValues().mode?!0===e.getConsentValues().categories[t]:"pixel"===e.getConsentValues().mode&&e.getConsentValues().pixels.includes("google-"+t))},e.getVisitorConsentStatusAndUpdateGoogleConsentSettings=function(t){return"category"===e.getConsentValues().mode?(e.getConsentValues().categories.analytics&&(t.analytics_storage="granted"),e.getConsentValues().categories.ads&&(t.ad_storage="granted")):"pixel"===e.getConsentValues().mode&&(t.analytics_storage=e.getConsentValues().pixels.includes("google-analytics")?"granted":"denied",t.ad_storage=e.getConsentValues().pixels.includes("google-ads")?"granted":"denied"),t},e.updateGoogleConsentMode=function(){let e=!(arguments.length>0&&arguments[0]!==a)||arguments[0],t=!(arguments.length>1&&arguments[1]!==a)||arguments[1];try{if(!window.gtag||!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent)return;gtag("consent","update",{analytics_storage:e?"granted":"denied",ad_storage:t?"granted":"denied"})}catch(e){console.error(e)}},e.fireGtagGoogleAds=function(){try{var e,t,a,o,r,i,n,l,d,s,c,u,p,m,g,w,y,v,_,f,h,L,D;if(wpmDataLayer.pixels.google.ads.state="loading",null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.ads)&&void 0!==o&&null!==(r=o.enhanced_conversions)&&void 0!==r&&r.active)for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e,{allow_enhanced_conversions:!0});else for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e);null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.ads)&&void 0!==d&&d.conversionIds&&null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.pixels)&&void 0!==c&&null!==(u=c.google)&&void 0!==u&&null!==(p=u.ads)&&void 0!==p&&p.phone_conversion_label&&null!==(m=wpmDataLayer)&&void 0!==m&&null!==(g=m.pixels)&&void 0!==g&&null!==(w=g.google)&&void 0!==w&&null!==(y=w.ads)&&void 0!==y&&y.phone_conversion_number&>ag("config",Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]+"/"+wpmDataLayer.pixels.google.ads.phone_conversion_label,{phone_conversion_number:wpmDataLayer.pixels.google.ads.phone_conversion_number}),null!==(v=wpmDataLayer)&&void 0!==v&&null!==(_=v.shop)&&void 0!==_&&_.page_type&&"order_received_page"===wpmDataLayer.shop.page_type&&null!==(f=wpmDataLayer)&&void 0!==f&&null!==(h=f.order)&&void 0!==h&&null!==(L=h.google)&&void 0!==L&&null!==(D=L.ads)&&void 0!==D&&D.enhanced_conversion_data&>ag("set","user_data",wpmDataLayer.order.google.ads.enhanced_conversion_data),wpmDataLayer.pixels.google.ads.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsUA=function(){try{wpmDataLayer.pixels.google.analytics.universal.state="loading",gtag("config",wpmDataLayer.pixels.google.analytics.universal.property_id,wpmDataLayer.pixels.google.analytics.universal.parameters),wpmDataLayer.pixels.google.analytics.universal.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsGA4=function(){try{var e,t,a,o,r;wpmDataLayer.pixels.google.analytics.ga4.state="loading";let i=wpmDataLayer.pixels.google.analytics.ga4.parameters;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.ga4)&&void 0!==r&&r.debug_mode&&(i.debug_mode=!0),gtag("config",wpmDataLayer.pixels.google.analytics.ga4.measurement_id,i),wpmDataLayer.pixels.google.analytics.ga4.state="ready"}catch(e){console.error(e)}},e.isGoogleActive=function(){var e,t,a,o,r,i,n,l,d,s,c,u,p,m;return!(!(null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id||null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.ga4)&&void 0!==s&&s.measurement_id)&&jQuery.isEmptyObject(null===(c=wpmDataLayer)||void 0===c||null===(u=c.pixels)||void 0===u||null===(p=u.google)||void 0===p||null===(m=p.ads)||void 0===m?void 0:m.conversionIds))},e.getGoogleGtagId=function(){var e,t,a,o,r,i,n,l,d,s;return null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id?wpmDataLayer.pixels.google.analytics.universal.property_id:null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.ga4)&&void 0!==s&&s.measurement_id?wpmDataLayer.pixels.google.analytics.ga4.measurement_id:Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]},e.loadGoogle=function(){e.isGoogleActive()&&(wpmDataLayer.pixels.google.state="loading",e.loadScriptAndCacheIt("https://www.googletagmanager.com/gtag/js?id="+e.getGoogleGtagId()).then((function(t,a){try{var o,r,i,n,l,d,s,c,u,p,m,g,w,y,v,_,f,h,L,D,b,C;if(window.dataLayer=window.dataLayer||[],window.gtag=function(){dataLayer.push(arguments)},null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.google)&&void 0!==i&&null!==(n=i.consent_mode)&&void 0!==n&&n.active){var k,x,j,S;let t={ad_storage:wpmDataLayer.pixels.google.consent_mode.ad_storage,analytics_storage:wpmDataLayer.pixels.google.consent_mode.analytics_storage,wait_for_update:wpmDataLayer.pixels.google.consent_mode.wait_for_update};null!==(k=wpmDataLayer)&&void 0!==k&&null!==(x=k.pixels)&&void 0!==x&&null!==(j=x.google)&&void 0!==j&&null!==(S=j.consent_mode)&&void 0!==S&&S.region&&(t.region=wpmDataLayer.pixels.google.consent_mode.region),t=e.getVisitorConsentStatusAndUpdateGoogleConsentSettings(t),gtag("consent","default",t),gtag("set","ads_data_redaction",wpmDataLayer.pixels.google.consent_mode.ads_data_redaction),gtag("set","url_passthrough",wpmDataLayer.pixels.google.consent_mode.url_passthrough)}null!==(l=wpmDataLayer)&&void 0!==l&&null!==(d=l.pixels)&&void 0!==d&&null!==(s=d.google)&&void 0!==s&&null!==(c=s.linker)&&void 0!==c&&c.settings&>ag("set","linker",wpmDataLayer.pixels.google.linker.settings),gtag("js",new Date),jQuery.isEmptyObject(null===(u=wpmDataLayer)||void 0===u||null===(p=u.pixels)||void 0===p||null===(m=p.google)||void 0===m||null===(g=m.ads)||void 0===g?void 0:g.conversionIds)||(e.googleConfigConditionsMet("ads")?e.fireGtagGoogleAds():e.logPreventedPixelLoading("google-ads","ads")),null!==(w=wpmDataLayer)&&void 0!==w&&null!==(y=w.pixels)&&void 0!==y&&null!==(v=y.google)&&void 0!==v&&null!==(_=v.analytics)&&void 0!==_&&null!==(f=_.universal)&&void 0!==f&&f.property_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsUA():e.logPreventedPixelLoading("google-universal-analytics","analytics")),null!==(h=wpmDataLayer)&&void 0!==h&&null!==(L=h.pixels)&&void 0!==L&&null!==(D=L.google)&&void 0!==D&&null!==(b=D.analytics)&&void 0!==b&&null!==(C=b.ga4)&&void 0!==C&&C.measurement_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsGA4():e.logPreventedPixelLoading("ga4","analytics")),wpmDataLayer.pixels.google.state="ready"}catch(e){console.error(e)}})))},e.canGoogleLoad=function(){var t,a,o,r;return!(null===(t=wpmDataLayer)||void 0===t||null===(a=t.pixels)||void 0===a||null===(o=a.google)||void 0===o||null===(r=o.consent_mode)||void 0===r||!r.active)||("category"===e.getConsentValues().mode?!(!e.getConsentValues().categories.ads&&!e.getConsentValues().categories.analytics):"pixel"===e.getConsentValues().mode?e.getConsentValues().pixels.includes("google-ads")||e.getConsentValues().pixels.includes("google-analytics"):(console.error("Couldn't find a valid load condition for Google mode in wpmConsentValues"),!1))},e.gtagLoaded=function(){return new Promise((function(e,t){var a,o,r;void 0===(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r?void 0:r.state)&&t();let i=0;!function a(){var o,r,n;return"ready"===(null===(o=wpmDataLayer)||void 0===o||null===(r=o.pixels)||void 0===r||null===(n=r.google)||void 0===n?void 0:n.state)?e():i>=5e3?t():(i+=200,void setTimeout(a,200))}()}))}}(window.wpm=window.wpm||{},jQuery)},580:(e,t,a)=>{a(860),a(294)},69:(e,t,a)=>{a(580),a(190),a(774),a(463)},945:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i,n,l;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.optimize)||void 0===o||!o.container_id||null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.pixels)&&void 0!==i&&null!==(n=i.google)&&void 0!==n&&null!==(l=n.optimize)&&void 0!==l&&l.loaded||wpm.canIFire("analytics","google-optimize")&&wpm.load_google_optimize_pixel()}))},962:()=>{!function(e,t,a){e.load_google_optimize_pixel=function(){try{wpmDataLayer.pixels.google.optimize.loaded=!0,e.loadScriptAndCacheIt("https://www.googleoptimize.com/optimize.js?id="+wpmDataLayer.pixels.google.optimize.container_id)}catch(e){console.error(e)}}}(window.wpm=window.wpm||{},jQuery)},463:(e,t,a)=>{a(962),a(945)},300:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i,n,l,d;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.hotjar)||void 0===a||!a.site_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.hotjar)&&void 0!==i&&i.loaded||!wpm.canIFire("analytics","hotjar")||null!==(n=wpmDataLayer)&&void 0!==n&&null!==(l=n.pixels)&&void 0!==l&&null!==(d=l.hotjar)&&void 0!==d&&d.loaded||wpm.load_hotjar_pixel()}))},376:()=>{!function(e,t,a){e.load_hotjar_pixel=function(){try{wpmDataLayer.pixels.hotjar.loaded=!0,e=window,t=document,e.hj=e.hj||function(){(e.hj.q=e.hj.q||[]).push(arguments)},e._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6},a=t.getElementsByTagName("head")[0],(o=t.createElement("script")).async=1,o.src="https://static.hotjar.com/c/hotjar-"+e._hjSettings.hjid+".js?sv="+e._hjSettings.hjsv,a.appendChild(o)}catch(e){console.error(e)}var e,t,a,o}}(window.wpm=window.wpm||{},jQuery)},787:(e,t,a)=>{a(376),a(300)},473:()=>{!function(e,t,a){let o=()=>{let t=e.getCookie("cmplz_statistics"),a=e.getCookie("cmplz_marketing");return!(!e.getCookie("cmplz_consent_status")&&!e.getCookie("cmplz_banner-status"))&&{analytics:"allow"===t,ads:"allow"===a,visitorHasChosen:!0}},r=()=>{let t=e.getCookie("cookielawinfo-checkbox-analytics")||e.getCookie("cookielawinfo-checkbox-analytiques"),a=e.getCookie("cookielawinfo-checkbox-advertisement")||e.getCookie("cookielawinfo-checkbox-performance")||e.getCookie("cookielawinfo-checkbox-publicite"),o=e.getCookie("CookieLawInfoConsent");return!(!t&&!a)&&{analytics:"yes"===t,ads:"yes"===a,visitorHasChosen:!!o}},i={categories:{},pixels:[],mode:"category",visitorHasChosen:!1};e.getConsentValues=()=>i,e.setConsentValueCategories=function(){let e=arguments.length>0&&arguments[0]!==a&&arguments[0],t=arguments.length>1&&arguments[1]!==a&&arguments[1];i.categories.analytics=e,i.categories.ads=t},e.updateConsentCookieValues=function(){let t,n=arguments.length>0&&arguments[0]!==a?arguments[0]:null,l=arguments.length>1&&arguments[1]!==a?arguments[1]:null,d=arguments.length>2&&arguments[2]!==a&&arguments[2];if(i.categories.analytics=!d,i.categories.ads=!d,n||l)return n&&(i.categories.analytics=!!n),void(l&&(i.categories.ads=!!l));if(t=e.getCookie("pmw_cookie_consent"))return t=JSON.parse(t),i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,void(i.visitorHasChosen=!0);if(t=e.getCookie("CookieConsent"))return t=decodeURI(t),i.categories.analytics=t.indexOf("statistics:true")>=0,i.categories.ads=t.indexOf("marketing:true")>=0,void(i.visitorHasChosen=!0);if(t=e.getCookie("CookieScriptConsent"))return t=JSON.parse(t),"reject"===t.action?(i.categories.analytics=!1,i.categories.ads=!1):2===t.categories.length?(i.categories.analytics=!0,i.categories.ads=!0):(i.categories.analytics=t.categories.indexOf("performance")>=0,i.categories.ads=t.categories.indexOf("targeting")>=0),void(i.visitorHasChosen=!0);var s,c,u,p,m,g,w,y;if(t=e.getCookie("borlabs-cookie"))return t=decodeURI(t),t=JSON.parse(t),i.categories.analytics=!(null===(s=t)||void 0===s||null===(c=s.consents)||void 0===c||!c.statistics),i.categories.ads=!(null===(u=t)||void 0===u||null===(p=u.consents)||void 0===p||!p.marketing),i.visitorHasChosen=!0,i.pixels=[...(null===(m=t)||void 0===m||null===(g=m.consents)||void 0===g?void 0:g.statistics)||[],...(null===(w=t)||void 0===w||null===(y=w.consents)||void 0===y?void 0:y.marketing)||[]],void(i.mode="pixel");if(t=o())return i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,void(i.visitorHasChosen=t.visitorHasChosen);if(t=e.getCookie("cookie_notice_accepted"))return i.categories.analytics=!0,i.categories.ads=!0,void(i.visitorHasChosen=!0);if(t=e.getCookie("hu-consent"))return t=JSON.parse(t),i.categories.analytics=!!t.categories[3],i.categories.ads=!!t.categories[4],void(i.visitorHasChosen=!0);if(t=r())return i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,void(i.visitorHasChosen=!0===t.visitorHasChosen);if(t=e.getCookie("moove_gdpr_popup"))return t=JSON.parse(t),i.categories.analytics="1"===t.thirdparty,i.categories.ads="1"===t.advanced,void(i.visitorHasChosen=!0);if(t=e.getCookie("wpautoterms-cookies-notice")){if("1"!==t)return;return i.categories.analytics=!0,i.categories.ads=!0,void(i.visitorHasChosen=!0)}if(window.localStorage&&window.localStorage.getItem("uc_settings")){if(console.log("Usercentrics settings detected"),"undefined"==typeof UC_UI)return void window.addEventListener("UC_UI_INITIALIZED",(function(t){e.ucUiProcessConsent()}));if(UC_UI.areAllConsentsAccepted())return i.categories.analytics=!0,i.categories.ads=!0,void(i.visitorHasChosen=!0);e.ucUiProcessConsent()}if(t=e.getCookie("OptanonConsent")){let e=new URLSearchParams(t).get("groups").split(","),a={};return e.forEach((e=>{let t=e.split(":");a[t[0]]=t[1]})),i.categories.analytics="1"===groubsObject[2],i.categories.ads="1"===a[4],void(i.visitorHasChosen=!0)}},e.ucUiProcessConsent=function(){if("undefined"==typeof UC_UI)return;UC_UI.areAllConsentsAccepted()&&pmw.consentAcceptAll();const e=UC_UI.getSettingsLabels().categories.filter((e=>"Statistics"===e.label))[0].slug;pmw.consentAdjustSelectively({analytics:!UC_UI.getServicesBaseInfo().filter((t=>t.categorySlug===e&&!1===t.consent.status)).length>0,ads:!UC_UI.getServicesBaseInfo().filter((e=>"marketing"===e.categorySlug&&!1===e.consent.status)).length>0})},e.updateConsentCookieValues(),e.setConsentDefaultValuesToExplicit=()=>{i.categories={analytics:!1,ads:!1}},e.canIFire=(t,a)=>{let o;return"category"===i.mode?o=!!i.categories[t]:"pixel"===i.mode?(o=i.pixels.includes(a),!1===o&&"microsoft-ads"===a&&(o=i.pixels.includes("bing-ads"))):(console.error("Couldn't find a valid consent mode in wpmConsentValues"),o=!1),!!o||(e.logPreventedPixelLoading(a,t),!1)},e.logPreventedPixelLoading=(e,t)=>{var a,o,r;null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.shop)&&void 0!==o&&null!==(r=o.cookie_consent_mgmt)&&void 0!==r&&r.explicit_consent?console.log('Pixel Manager for WooCommerce: The "'+e+" (category: "+t+')" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)'):console.log('Pixel Manager for WooCommerce: The "'+e+" (category: "+t+')" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)')},e.scriptTagObserver=new MutationObserver((a=>{a.forEach((a=>{let{addedNodes:o}=a;[...o].forEach((a=>{t(a).data("wpm-cookie-category")&&(e.shouldScriptBeActive(a)?e.unblockScript(a):e.blockScript(a))}))}))})),e.scriptTagObserver.observe(document.head,{childList:!0,subtree:!0}),document.addEventListener("DOMContentLoaded",(()=>e.scriptTagObserver.disconnect())),e.shouldScriptBeActive=e=>{var a,o,r,n;return!((wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent||i.visitorHasChosen)&&("category"!==i.mode||!t(e).data("wpm-cookie-category").split(",").some((e=>i.categories[e])))&&("pixel"!==i.mode||!i.pixels.includes(t(e).data("wpm-pixel-name")))&&("pixel"!==i.mode||"google"!==t(e).data("wpm-pixel-name")||!["google-analytics","google-ads"].some((e=>i.pixels.includes(e))))&&(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(n=r.consent_mode)||void 0===n||!n.active||"google"!==t(e).data("wpm-pixel-name")))},e.unblockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove();let r=t(e).data("wpm-src");r&&t(e).attr("src",r),e.type="text/javascript",o&&t(e).appendTo("head"),document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.blockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove(),t(e).attr("src")&&t(e).removeAttr("src"),e.type="blocked/javascript",o&&t(e).appendTo("head")},e.unblockAllScripts=function(){let t=!(arguments.length>0&&arguments[0]!==a)||arguments[0],o=!(arguments.length>1&&arguments[1]!==a)||arguments[1];e.setConsentValueCategories(t,o),document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.unblockSelectedPixels=()=>{document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.explicitConsentStateAlreadySet=()=>{if(i.explicitConsentStateAlreadySet)return!0;i.explicitConsentStateAlreadySet=!0},document.addEventListener("borlabs-cookie-consent-saved",(()=>{e.updateConsentCookieValues(),"pixel"===i.mode?(e.unblockSelectedPixels(),e.updateGoogleConsentMode(i.pixels.includes("google-analytics"),i.pixels.includes("google-ads"))):(e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads))})),document.addEventListener("CookiebotOnAccept",(()=>{Cookiebot.consent.statistics&&(i.categories.analytics=!0),Cookiebot.consent.marketing&&(i.categories.ads=!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)}),!1),document.addEventListener("CookieScriptAccept",(t=>{t.detail.categories.includes("performance")&&(i.categories.analytics=!0),t.detail.categories.includes("targeting")&&(i.categories.ads=!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)})),document.addEventListener("CookieScriptAcceptAll",(()=>{e.setConsentValueCategories(!0,!0),e.unblockAllScripts(!0,!0),e.updateGoogleConsentMode(!0,!0)})),e.cmplzStatusChange=t=>{t.detail.categories.includes("statistics")&&e.updateConsentCookieValues(!0,null),t.detail.categories.includes("marketing")&&e.updateConsentCookieValues(null,!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)},document.addEventListener("cmplzStatusChange",e.cmplzStatusChange),document.addEventListener("cmplz_status_change",e.cmplzStatusChange),document.addEventListener("setCookieNotice",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)})),e.huObserver=new MutationObserver((t=>{t.forEach((t=>{let{addedNodes:a}=t;[...a].forEach((t=>{"hu"===t.id&&document.querySelector(".hu-cookies-save").addEventListener("click",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)}))}))}))})),window.hu&&e.huObserver.observe(document.documentElement||document.body,{childList:!0,subtree:!0}),window.addEventListener("ucEvent",(function(e){e.detail&&"consent_status"==e.detail.event&&(!0===e.detail["Google Ads Remarketing"]?console.log("Google Ads Remarketing has consent"):console.log("Google Ads Remarketing has no consent"))})),window.addEventListener("UC_UI_CMP_EVENT",(function(e){"ACCEPT_ALL"===e.detail.type&&pmw.consentAcceptAll(),"DENY_ALL"===e.detail.type&&pmw.consentRevokeAll(),"SAVE"===e.detail.type&&console.log("event.detail",e.detail)})),jQuery("#accept-recommended-btn-handler, #onetrust-accept-btn-handler").on("click",(function(){void 0!==window.OneTrust&&pmw.consentAcceptAll()})),jQuery(".ot-pc-refuse-all-handler, #onetrust-reject-all-handler").on("click",(function(){pmw.consentRevokeAll()})),jQuery(".save-preference-btn-handler.onetrust-close-btn-handler").on("click",(function(){location.reload()}))}(window.wpm=window.wpm||{},jQuery),function(e,t,a){e.consentAcceptAll=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:{};t.duration=t.duration||365,e.consentSetCookie(!0,!0,t.duration),wpm.unblockAllScripts(!0,!0),wpm.updateGoogleConsentMode(!0,!0)},e.consentAdjustSelectively=t=>{t.analytics=t.analytics!==a?t.analytics:wpm.getConsentValues().categories.analytics,t.ads=t.ads!==a?t.ads:wpm.getConsentValues().categories.ads,t.duration=t.duration||365,e.consentSetCookie(t.analytics,t.ads,t.duration),wpm.unblockAllScripts(t.analytics,t.ads),wpm.updateGoogleConsentMode(t.analytics,t.ads)},e.consentRevokeAll=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:{};t.duration=t.duration||365,wpm.setConsentValueCategories(!1,!1),e.consentSetCookie(!1,!1,t.duration),wpm.updateGoogleConsentMode(!1,!1)},e.consentSetCookie=function(e,t){let o=arguments.length>2&&arguments[2]!==a?arguments[2]:365;wpm.setCookie("pmw_cookie_consent",JSON.stringify({analytics:e,ads:t}),o)},jQuery(document).trigger("pmw_cookie_consent_management_loaded")}(window.pmw=window.pmw||{},jQuery)},299:()=>{jQuery(document).on("click",".remove_from_cart_button, .remove",(e=>{try{let t=new URL(jQuery(e.currentTarget).attr("href")),a=wpm.getProductIdByCartItemKeyUrl(t);wpm.removeProductFromCart(a)}catch(e){console.error(e)}})),jQuery(document).on("click",".add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .single_add_to_cart_button",(e=>{try{let t,a=1;"product"===wpmDataLayer.shop.page_type?(void 0!==jQuery(e.currentTarget).attr("href")&&jQuery(e.currentTarget).attr("href").includes("add-to-cart")&&(t=jQuery(e.currentTarget).data("product_id"),wpm.addProductToCart(t,a)),"simple"===wpmDataLayer.shop.product_type&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery(e.currentTarget).val(),wpm.addProductToCart(t,a)),["variable","variable-subscription"].indexOf(wpmDataLayer.shop.product_type)>=0&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery("[name='variation_id']").val(),wpm.addProductToCart(t,a)),"grouped"===wpmDataLayer.shop.product_type&&jQuery(".woocommerce-grouped-product-list-item").each(((e,o)=>{a=Number(jQuery(o).find(".input-text.qty").val()),a||0===a||(a=1);let r=jQuery(o).attr("class");t=wpm.getPostIdFromString(r),wpm.addProductToCart(t,a)})),"bundle"===wpmDataLayer.shop.product_type&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery("input[name=add-to-cart]").val(),wpm.addProductToCart(t,a))):(t=jQuery(e.currentTarget).data("product_id"),wpm.addProductToCart(t,a))}catch(e){console.error(e)}})),jQuery(document).one("click","a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)",(e=>{try{if(jQuery(e.target).closest("a").attr("href")){let t=jQuery(e.target).closest("a").attr("href");if(t.includes("add-to-cart=")){let e=t.match(/(add-to-cart=)(\d+)/);e&&wpm.addProductToCart(e[2],1)}}}catch(e){console.error(e)}})),jQuery(document).on("click",".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product",(e=>{try{let t=jQuery(e.currentTarget).nextAll(".wpmProductId:first").data("id");if(t){if(t=wpm.getIdBasedOndVariationsOutputSetting(t),!t)throw Error("Wasn't able to retrieve a productId");if(wpmDataLayer.products&&wpmDataLayer.products[t]){let e=wpm.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmSelectContentGaUa",e),jQuery(document).trigger("wpmSelectItem",e)}}}catch(e){console.error(e)}})),jQuery(document).one("click init_checkout",[".checkout-button",".cart-checkout-button",".button.checkout",".xoo-wsc-ft-btn-checkout",".elementor-button--checkout"].join(","),(()=>{jQuery(document).trigger("wpmBeginCheckout")})),jQuery(document).on("input","#billing_email",(e=>{wpm.isEmail(jQuery(e.currentTarget).val())&&(wpm.fireCheckoutProgress(2),wpm.emailSelected=!0)})),jQuery(document).on("wpmLoad",(e=>{jQuery(document).on("payment_method_selected",(()=>{!1===wpm.paymentMethodSelected&&wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val()),wpm.paymentMethodSelected=!0}))})),jQuery((()=>{jQuery("form.checkout").on("checkout_place_order_success",(()=>{!1===wpm.emailSelected&&wpm.fireCheckoutProgress(2),!1===wpm.paymentMethodSelected&&(wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val())),wpm.fireCheckoutProgress(4)}))})),jQuery(document).on("click","[name='update_cart']",(e=>{try{jQuery(".cart_item").each(((e,t)=>{let a=new URL(jQuery(t).find(".product-remove").find("a").attr("href")),o=wpm.getProductIdByCartItemKeyUrl(a),r=jQuery(t).find(".qty").val();0===r?wpm.removeProductFromCart(o):r<wpmDataLayer.cart[o].quantity?wpm.removeProductFromCart(o,wpmDataLayer.cart[o].quantity-r):r>wpmDataLayer.cart[o].quantity&&wpm.addProductToCart(o,r-wpmDataLayer.cart[o].quantity)}))}catch(e){console.error(e),wpm.getCartItemsFromBackend()}})),jQuery((function(){jQuery(".add_to_wishlist,.wl-add-to").on("click",(e=>{try{let t;if(jQuery(e.currentTarget).data("productid")?t=jQuery(e.currentTarget).data("productid"):jQuery(e.currentTarget).data("product-id")&&(t=jQuery(e.currentTarget).data("product-id")),!t)throw Error("Wasn't able to retrieve a productId");let a=wpm.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmAddToWishlist",a)}catch(e){console.error(e)}}))})),jQuery(document).on("updated_cart_totals",(()=>{jQuery(document).trigger("wpmViewCart")})),jQuery((()=>{jQuery(".single_variation_wrap").on("show_variation",((e,t)=>{try{let e=wpm.getIdBasedOndVariationsOutputSetting(t.variation_id);if(!e)throw Error("Wasn't able to retrieve a productId");wpm.triggerViewItemEventPrep(e)}catch(e){console.error(e)}}))})),jQuery(document).on("wpmLoad",(()=>{try{wpm.doesWooCommerceCartExist()&&wpm.getCartItems()}catch(e){console.error(e)}})),jQuery(document).on("wpmLoad",(()=>{wpmDataLayer.products=wpmDataLayer.products||{};let e=wpm.getAddToCartLinkProductIds();wpm.getProductsFromBackend(e)})),jQuery(document).on("wpmLoad",(()=>{if(!wpm.getCookie("wpmReferrer")&&document.referrer){let e=new URL(document.referrer).hostname;e!==window.location.host&&wpm.setCookie("wpmReferrer",e)}})),jQuery(document).on("wpmLoad",(()=>{try{var e;if("undefined"!=typeof wpmDataLayer&&(null===(e=wpmDataLayer)||void 0===e||!e.wpmLoadFired)){var t,a,o;if(jQuery(document).trigger("wpmLoadAlways"),null!==(t=wpmDataLayer)&&void 0!==t&&t.shop)if("product"===wpmDataLayer.shop.page_type&&"variable"!==wpmDataLayer.shop.product_type&&wpm.getMainProductIdFromProductPage()){let e=wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage());jQuery(document).trigger("wpmViewItem",e)}else"product_category"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmCategory"):"search"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmSearch"):"cart"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmViewCart"):"order_received_page"===wpmDataLayer.shop.page_type&&wpmDataLayer.order?wpm.isOrderIdStored(wpmDataLayer.order.id)||(jQuery(document).trigger("wpmOrderReceivedPage"),wpm.writeOrderIdToStorage(wpmDataLayer.order.id),"function"==typeof wpm.acrRemoveCookie&&wpm.acrRemoveCookie()):jQuery(document).trigger("wpmEverywhereElse");else jQuery(document).trigger("wpmEverywhereElse");null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.user)&&void 0!==o&&o.id&&!wpm.hasLoginEventFired()&&(jQuery(document).trigger("wpmLogin"),wpm.setLoginEventFired()),wpmDataLayer.wpmLoadFired=!0}}catch(e){console.error(e)}})),jQuery(document).on("wpmLoad",(async()=>{window.sessionStorage&&window.sessionStorage.getItem("_pmw_endpoint_available")&&!JSON.parse(window.sessionStorage.getItem("_pmw_endpoint_available"))&&console.error("Pixel Manager for WooCommerce: REST endpoint is not available. Using admin-ajax.php instead.")})),jQuery(document).on("wpmPreLoadPixels",(()=>{var e,t,a;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.shop)&&void 0!==t&&null!==(a=t.cookie_consent_mgmt)&&void 0!==a&&a.explicit_consent&&!wpm.explicitConsentStateAlreadySet()&&wpm.updateConsentCookieValues(null,null,!0),jQuery(document).trigger("wpmLoadPixels",{})})),jQuery(document).on("wpmAddToCart",((e,t)=>{var a,o,r;let i={event:"addToCart",product:t};null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.pixels)&&void 0!==o&&null!==(r=o.facebook)&&void 0!==r&&r.loaded&&(i.facebook={event_name:"AddToCart",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:wpm.fbGetProductDataForCapiEvent(t)}),jQuery(document).trigger("wpmClientSideAddToCart",i),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(i)})),jQuery(document).on("wpmBeginCheckout",(()=>{var e,t,a;let o={event:"beginCheckout"};var r;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.facebook)&&void 0!==a&&a.loaded&&(o.facebook={event_name:"InitiateCheckout",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{}},null!==(r=wpmDataLayer)&&void 0!==r&&r.cart&&!jQuery.isEmptyObject(wpmDataLayer.cart)&&(o.facebook.custom_data={content_type:"product",content_ids:wpm.fbGetContentIdsFromCart(),value:wpm.getCartValue(),currency:wpmDataLayer.shop.currency})),jQuery(document).trigger("wpmClientSideBeginCheckout",o),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(o)})),jQuery(document).on("wpmAddToWishlist",((e,t)=>{var a,o,r;let i={event:"addToWishlist",product:t};null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.pixels)&&void 0!==o&&null!==(r=o.facebook)&&void 0!==r&&r.loaded&&(i.facebook={event_name:"AddToWishlist",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:wpm.fbGetProductDataForCapiEvent(t)}),jQuery(document).trigger("wpmClientSideAddToWishlist",i),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(i)})),jQuery(document).on("wpmViewItem",(function(e){var t,a,o;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i={event:"viewItem",product:r};null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.pixels)&&void 0!==a&&null!==(o=a.facebook)&&void 0!==o&&o.loaded&&(i.facebook={event_name:"ViewContent",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{}},r&&(i.facebook.custom_data=wpm.fbGetProductDataForCapiEvent(r))),jQuery(document).trigger("wpmClientSideViewItem",i),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(i)})),jQuery(document).on("wpmSearch",(()=>{var e,t,a;let o={event:"search"};null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.facebook)&&void 0!==a&&a.loaded&&(o.facebook={event_name:"Search",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{search_string:wpm.getSearchTermFromUrl()}}),jQuery(document).trigger("wpmClientSideSearch",o),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(o)})),jQuery(document).on("wpmOrderReceivedPage",(()=>{var e,t,a;let o={event:"orderReceived"};null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.facebook)&&void 0!==a&&a.loaded&&(o.facebook={event_name:"Purchase",event_id:wpmDataLayer.order.id,user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{content_type:"product",value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,content_ids:wpm.facebookContentIds()}}),jQuery(document).trigger("wpmClientSideOrderReceivedPage",o)}))},584:()=>{(function(wpm,$,undefined){const wpmDeduper={keyName:"_wpm_order_ids",cookieExpiresDays:365},wpmRestSettings={cookiePmwRestEndpointAvailable:"_pmw_endpoint_available",restEndpointPost:"pmw/v1/test/",restFails:0,restFailsThreshold:10};function checkCookie(){return""!==wpm.getCookie(wpmDeduper.keyName)}wpm.emailSelected=!1,wpm.paymentMethodSelected=!1,wpm.useRestEndpoint=()=>wpm.isSessionStorageAvailable()&&wpm.isRestEndpointAvailable()&&wpm.isBelowRestErrorThreshold(),wpm.isBelowRestErrorThreshold=()=>window.sessionStorage.getItem(wpmRestSettings.restFails)<=wpmRestSettings.restFailsThreshold,wpm.isRestEndpointAvailable=async()=>window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable)?JSON.parse(window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable)):await wpm.testEndpoint(),wpm.isSessionStorageAvailable=()=>!!window.sessionStorage,wpm.testEndpoint=async function(){let e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:wpm.root+wpmRestSettings.restEndpointPost,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:wpmRestSettings.cookiePmwRestEndpointAvailable,a=await fetch(e,{method:"POST",mode:"cors",cache:"no-cache",keepalive:!0});return 200===a.status?(window.sessionStorage.setItem(t,JSON.stringify(!0)),!0):404===a.status||0===a.status?(window.sessionStorage.setItem(t,JSON.stringify(!1)),!1):void 0},wpm.isWpmRestEndpointAvailable=function(){let e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:wpmRestSettings.cookiePmwRestEndpointAvailable;return!!wpm.getCookie(e)},wpm.writeOrderIdToStorage=function(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"thankyou_page";if(window.Storage)if(null===localStorage.getItem(wpmDeduper.keyName)){let t=[];t.push(e),window.localStorage.setItem(wpmDeduper.keyName,JSON.stringify(t))}else{let t=JSON.parse(localStorage.getItem(wpmDeduper.keyName));t.includes(e)||(t.push(e),window.localStorage.setItem(wpmDeduper.keyName,JSON.stringify(t)))}else{let t=new Date;t.setDate(t.getDate()+wpmDeduper.cookieExpiresDays);let a=[];checkCookie()&&(a=JSON.parse(wpm.getCookie(wpmDeduper.keyName))),a.includes(e)||(a.push(e),document.cookie=wpmDeduper.keyName+"="+JSON.stringify(a)+";expires="+t.toUTCString())}"function"==typeof wpm.storeOrderIdOnServer&&wpmDataLayer.orderDeduplication&&wpm.storeOrderIdOnServer(e,t)},wpm.isOrderIdStored=e=>wpmDataLayer.orderDeduplication?window.Storage?null!==localStorage.getItem(wpmDeduper.keyName)&&JSON.parse(localStorage.getItem(wpmDeduper.keyName)).includes(e):!!checkCookie()&&JSON.parse(wpm.getCookie(wpmDeduper.keyName)).includes(e):(console.log("order duplication prevention: off"),!1),wpm.isEmail=e=>/^(([^<>()\[\]\\.,;:\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,}))$/.test(e),wpm.removeProductFromCart=function(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;try{if(!e)throw Error("Wasn't able to retrieve a productId");if(!(e=wpm.getIdBasedOndVariationsOutputSetting(e)))throw Error("Wasn't able to retrieve a productId");let a;if(a=null==t?wpmDataLayer.cart[e].quantity:t,wpmDataLayer.cart[e]){let o=wpm.getProductDetailsFormattedForEvent(e,a);jQuery(document).trigger("wpmRemoveFromCart",o),null==t||wpmDataLayer.cart[e].quantity===t?(delete wpmDataLayer.cart[e],sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))):(wpmDataLayer.cart[e].quantity=wpmDataLayer.cart[e].quantity-a,sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart)))}}catch(e){console.error(e)}},wpm.getIdBasedOndVariationsOutputSetting=e=>{try{var t,a;return null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput?e:wpmDataLayer.products[e].isVariation?wpmDataLayer.products[e].parentId:e}catch(e){console.error(e)}},wpm.addProductToCart=(e,t)=>{try{var a;if(!e)throw Error("Wasn't able to retrieve a productId");if(!(e=wpm.getIdBasedOndVariationsOutputSetting(e)))throw Error("Wasn't able to retrieve a productId");if(null!==(a=wpmDataLayer)&&void 0!==a&&a.products[e]){var o;let a=wpm.getProductDetailsFormattedForEvent(e,t);jQuery(document).trigger("wpmAddToCart",a),null!==(o=wpmDataLayer)&&void 0!==o&&o.cart[e]?wpmDataLayer.cart[e].quantity=wpmDataLayer.cart[e].quantity+t:("cart"in wpmDataLayer||(wpmDataLayer.cart={}),wpmDataLayer.cart[e]=wpm.getProductDetailsFormattedForEvent(e,t)),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))}}catch(e){console.error(e),wpm.getCartItemsFromBackend()}},wpm.getCartItems=()=>{sessionStorage?sessionStorage.getItem("wpmDataLayerCart")&&"order_received_page"!==wpmDataLayer.shop.page_type?wpm.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem("wpmDataLayerCart"))):sessionStorage.setItem("wpmDataLayerCart",JSON.stringify({})):wpm.getCartItemsFromBackend()},wpm.getCartItemsFromBackend=()=>{try{fetch(wpm.ajax_url,{method:"POST",cache:"no-cache",body:new URLSearchParams({action:"pmw_get_cart_items"}),keepalive:!0}).then((e=>{if(e.ok)return e.json();throw Error("Error getting cart items from backend")})).then((e=>{if(!e.success)throw Error("Error getting cart items from backend");e.data.cart||(e.data.cart={}),wpm.saveCartObjectToDataLayer(e.data.cart),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(e.data.cart))}))}catch(e){console.error(e)}},wpm.getProductsFromBackend=async e=>{var t;if(null!==(t=wpmDataLayer)&&void 0!==t&&t.products&&(e=e.filter((e=>!wpmDataLayer.products.hasOwnProperty(e)))),e&&0!==e.length){try{let t;if(t=await wpm.isRestEndpointAvailable()?await fetch(wpm.root+"pmw/v1/products/",{method:"POST",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}):await fetch(wpm.ajax_url,{method:"POST",cache:"no-cache",body:new URLSearchParams({action:"pmw_get_product_ids",productIds:e})}),t.ok){let e=await t.json();e.success&&(wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e.data))}else console.error("Error getting products from backend")}catch(e){console.error(e)}return!0}},wpm.saveCartObjectToDataLayer=e=>{wpmDataLayer.cart=e,wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e)},wpm.triggerViewItemEventPrep=async e=>{wpmDataLayer.products&&wpmDataLayer.products[e]||await wpm.getProductsFromBackend([e]),wpm.triggerViewItemEvent(e)},wpm.triggerViewItemEvent=e=>{let t=wpm.getProductDetailsFormattedForEvent(e);jQuery(document).trigger("wpmViewItem",t)},wpm.triggerViewItemEventNoProduct=()=>{jQuery(document).trigger("wpmViewItem")},wpm.fireCheckoutOption=function(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null,a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null,o={step:e,checkout_option:t,value:a};jQuery(document).trigger("wpmFireCheckoutOption",o)},wpm.fireCheckoutProgress=e=>{let t={step:e};jQuery(document).trigger("wpmFireCheckoutProgress",t)},wpm.getPostIdFromString=e=>{try{return e.match(/(post-)(\d+)/)[2]}catch(e){console.error(e)}},wpm.triggerViewItemList=e=>{if(!e)throw Error("Wasn't able to retrieve a productId");if(!(e=wpm.getIdBasedOndVariationsOutputSetting(e)))throw Error("Wasn't able to retrieve a productId");jQuery(document).trigger("wpmViewItemList",wpm.getProductDataForViewItemEvent(e))},wpm.getProductDataForViewItemEvent=e=>{if(!e)throw Error("Wasn't able to retrieve a productId");try{if(wpmDataLayer.products[e])return wpm.getProductDetailsFormattedForEvent(e)}catch(e){console.error(e)}},wpm.getMainProductIdFromProductPage=()=>{try{return["simple","variable","grouped","composite","bundle"].indexOf(wpmDataLayer.shop.product_type)>=0&&jQuery(".wpmProductId:first").data("id")}catch(e){console.error(e)}},wpm.viewItemListTriggerTestMode=e=>{jQuery(e).css({position:"relative"}),jQuery(e).append('<div id="viewItemListTriggerOverlay"></div>'),jQuery(e).find("#viewItemListTriggerOverlay").css({"z-index":"10",display:"block",position:"absolute",height:"100%",top:"0",left:"0",right:"0",opacity:wpmDataLayer.viewItemListTrigger.opacity,"background-color":wpmDataLayer.viewItemListTrigger.backgroundColor})},wpm.getSearchTermFromUrl=()=>{try{return new URLSearchParams(window.location.search).get("s")}catch(e){console.error(e)}};let ioTimeouts={},io;wpm.observerCallback=(e,t)=>{e.forEach((e=>{try{let a,o=jQuery(e.target).data("ioid");if(a=jQuery(e.target).next(".wpmProductId").length?jQuery(e.target).next(".wpmProductId").data("id"):jQuery(e.target).find(".wpmProductId").data("id"),!a)throw Error("wpmProductId element not found");e.isIntersecting?ioTimeouts[o]=setTimeout((()=>{wpm.triggerViewItemList(a),wpmDataLayer.viewItemListTrigger.testMode&&wpm.viewItemListTriggerTestMode(e.target),!1===wpmDataLayer.viewItemListTrigger.repeat&&t.unobserve(e.target)}),wpmDataLayer.viewItemListTrigger.timeout):(clearTimeout(ioTimeouts[o]),wpmDataLayer.viewItemListTrigger.testMode&&jQuery(e.target).find("#viewItemListTriggerOverlay").remove())}catch(e){console.error(e)}}))};let ioid=0,allIoElementsToWatch,getAllElementsToWatch=()=>{allIoElementsToWatch=jQuery(".wpmProductId").map((function(e,t){return jQuery(t).parent().hasClass("type-product")||jQuery(t).parent().hasClass("product")||jQuery(t).parent().hasClass("product-item-inner")?jQuery(t).parent():jQuery(t).prev().hasClass("wc-block-grid__product")||jQuery(t).prev().hasClass("product")||jQuery(t).prev().hasClass("product-small")||jQuery(t).prev().hasClass("woocommerce-LoopProduct-link")?jQuery(this).prev():jQuery(t).closest(".product").length?jQuery(t).closest(".product"):void 0}))};wpm.startIntersectionObserverToWatch=()=>{try{wpm.urlHasParameter("vildemomode")&&(wpmDataLayer.viewItemListTrigger.testMode=!0),io=new IntersectionObserver(wpm.observerCallback,{threshold:wpmDataLayer.viewItemListTrigger.threshold}),getAllElementsToWatch(),allIoElementsToWatch.each(((e,t)=>{jQuery(t[0]).data("ioid",ioid++),io.observe(t[0])}))}catch(e){console.error(e)}},wpm.startProductsMutationObserverToWatch=()=>{try{let e=jQuery(".wpmProductId:eq(0)").parents().has(jQuery(".wpmProductId:eq(1)").parents()).first();e.length&&productsMutationObserver.observe(e[0],{attributes:!0,childList:!0,characterData:!0})}catch(e){console.error(e)}};let productsMutationObserver=new MutationObserver((e=>{e.forEach((e=>{let t=e.addedNodes;null!==t&&jQuery(t).each((function(){(jQuery(this).hasClass("type-product")||jQuery(this).hasClass("product-small")||jQuery(this).hasClass("wc-block-grid__product"))&&hasWpmProductIdElement(this)&&(jQuery(this).data("ioid",ioid++),io.observe(this))}))}))})),hasWpmProductIdElement=e=>!(!jQuery(e).find(".wpmProductId").length&&!jQuery(e).siblings(".wpmProductId").length);wpm.setCookie=function(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"",a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(a){let o=new Date;o.setTime(o.getTime()+24*a*60*60*1e3);let r="expires="+o.toUTCString();document.cookie=e+"="+t+";"+r+";path=/"}else document.cookie=e+"="+t+";path=/"},wpm.getCookie=e=>{let t=e+"=",a=decodeURIComponent(document.cookie).split(";");for(let e=0;e<a.length;e++){let o=a[e];for(;" "==o.charAt(0);)o=o.substring(1);if(0==o.indexOf(t))return o.substring(t.length,o.length)}return""},wpm.deleteCookie=e=>{wpm.setCookie(e,"",-1)},wpm.getWpmSessionData=()=>{if(window.sessionStorage){let e=window.sessionStorage.getItem("_wpm");return null!==e?JSON.parse(e):{}}return{}},wpm.setWpmSessionData=e=>{window.sessionStorage&&window.sessionStorage.setItem("_wpm",JSON.stringify(e))},wpm.storeOrderIdOnServer=async(e,t)=>{try{let a;a=await wpm.isRestEndpointAvailable()?await fetch(wpm.root+"pmw/v1/pixels-fired/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:e,source:t}),keepalive:!0,cache:"no-cache"}):await fetch(wpm.ajax_url,{method:"POST",body:new URLSearchParams({action:"pmw_purchase_pixels_fired",order_id:e,source:t}),keepalive:!0}),a.ok?console.log("wpm.storeOrderIdOnServer success"):console.error("wpm.storeOrderIdOnServer error")}catch(e){console.error(e)}},wpm.getProductIdByCartItemKeyUrl=e=>{let t,a=new URLSearchParams(e.search).get("remove_item");return t=0===wpmDataLayer.cartItemKeys[a].variation_id?wpmDataLayer.cartItemKeys[a].product_id:wpmDataLayer.cartItemKeys[a].variation_id,t},wpm.getAddToCartLinkProductIds=()=>jQuery("a").map((function(){let e=jQuery(this).attr("href");if(e&&e.includes("?add-to-cart=")){let t=e.match(/(add-to-cart=)(\d+)/);if(t)return t[2]}})).get(),wpm.getProductDetailsFormattedForEvent=function(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1,a={id:e.toString(),dyn_r_ids:wpmDataLayer.products[e].dyn_r_ids,name:wpmDataLayer.products[e].name,list_name:wpmDataLayer.shop.list_name,brand:wpmDataLayer.products[e].brand,category:wpmDataLayer.products[e].category,variant:wpmDataLayer.products[e].variant,list_position:wpmDataLayer.products[e].position,quantity:t,price:wpmDataLayer.products[e].price,currency:wpmDataLayer.shop.currency,isVariable:wpmDataLayer.products[e].isVariable,isVariation:wpmDataLayer.products[e].isVariation,parentId:wpmDataLayer.products[e].parentId};return a.isVariation&&(a.parentId_dyn_r_ids=wpmDataLayer.products[e].parentId_dyn_r_ids),a},wpm.setReferrerToCookie=()=>{wpm.getCookie("wpmReferrer")||wpm.setCookie("wpmReferrer",document.referrer)},wpm.getReferrerFromCookie=()=>wpm.getCookie("wpmReferrer")?wpm.getCookie("wpmReferrer"):null,wpm.getClidFromBrowser=function(){let e,t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"gclid";return e={gclid:"_gcl_aw",dclid:"_gcl_dc"},wpm.getCookie(e[t])?wpm.getCookie(e[t]).match(/(GCL.[\d]*.)(.*)/)[2]:""},wpm.getUserAgent=()=>navigator.userAgent,wpm.getViewPort=()=>({width:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),height:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}),wpm.version=()=>{console.log(wpmDataLayer.version)},wpm.loadScriptAndCacheIt=url=>fetch(url,{method:"GET",cache:"default",keepalive:!0}).then((e=>{if(e.ok)return e.text();throw new Error("Network response was not ok: "+url)})).then((script=>{eval(script)})).catch((e=>{console.error(e)})),wpm.getOrderItemPrice=e=>(e.total+e.total_tax)/e.quantity,wpm.hasLoginEventFired=()=>{let e=wpm.getWpmSessionData();return null==e?void 0:e.loginEventFired},wpm.setLoginEventFired=()=>{let e=wpm.getWpmSessionData();e.loginEventFired=!0,wpm.setWpmSessionData(e)},wpm.wpmDataLayerExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof wpmDataLayer)return e();setTimeout(t,50)}()})),wpm.jQueryExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof jQuery)return e();setTimeout(t,100)}()})),wpm.pageLoaded=()=>new Promise((e=>{!function t(){if("complete"===document.readyState)return e();setTimeout(t,50)}()})),wpm.pageReady=()=>new Promise((e=>{!function t(){if("interactive"===document.readyState||"complete"===document.readyState)return e();setTimeout(t,50)}()})),wpm.isMiniCartActive=()=>{if(window.sessionStorage){for(const[e,t]of Object.entries(window.sessionStorage))if(e.includes("wc_fragments"))return!0;return!1}return!1},wpm.doesWooCommerceCartExist=()=>document.cookie.includes("woocommerce_items_in_cart"),wpm.urlHasParameter=e=>new URLSearchParams(window.location.search).has(e),wpm.hashAsync=(e,t)=>crypto.subtle.digest(e,new TextEncoder("utf-8").encode(t)).then((e=>Array.prototype.map.call(new Uint8Array(e),(e=>("00"+e.toString(16)).slice(-2))).join(""))),wpm.getCartValue=()=>{var e;let t=0;if(null!==(e=wpmDataLayer)&&void 0!==e&&e.cart)for(const e in wpmDataLayer.cart){let a=wpmDataLayer.cart[e];t+=a.quantity*a.price}return t}})(window.wpm=window.wpm||{},jQuery)},534:(e,t,a)=>{a(584),a(473)},207:()=>{wpm.wpmDataLayerExists().then((function(){console.log("Pixel Manager for WooCommerce: "+(wpmDataLayer.version.pro?"Pro":"Free")+" Version "+wpmDataLayer.version.number+" loaded"),document.dispatchEvent(new Event("wpmPreLoadPixels"))})).then((function(){wpm.pageLoaded().then((function(){document.dispatchEvent(new Event("wpmLoad"))}))})),wpm.pageReady().then((function(){wpm.wpmDataLayerExists().then((function(){wpm.startIntersectionObserverToWatch(),wpm.startProductsMutationObserverToWatch()}))}))}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var a=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](a,a.exports,__webpack_require__),a.exports}var __webpack_exports__={};__webpack_require__(534),wpm.jQueryExists().then((function(){__webpack_require__(299),__webpack_require__(69),__webpack_require__(12),__webpack_require__(787),__webpack_require__(207)}))})();
|
2 |
//# sourceMappingURL=wpm-public.p1.min.js.map
|
1 |
+
(()=>{var e={164:()=>{jQuery(document).on("wpmLoadPixels",(()=>{var e,t,a,o,r,i;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.pixel_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.facebook)&&void 0!==i&&i.loaded||wpm.canIFire("ads","facebook-ads")&&wpm.loadFacebookPixel()})),jQuery(document).on("wpmClientSideAddToCart",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","AddToCart",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideBeginCheckout",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","InitiateCheckout",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideAddToWishlist",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","AddToWishlist",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideViewItem",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","ViewContent",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideSearch",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","Search",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmLoadAlways",(()=>{try{var e,t,a;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.loaded)return;wpm.setFbUserData()}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideOrderReceivedPage",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","Purchase",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}}))},1:()=>{!function(e,t,a){let o;e.loadFacebookPixel=()=>{try{wpmDataLayer.pixels.facebook.loaded=!0,t=window,a=document,o="script",t.fbq||(r=t.fbq=function(){r.callMethod?r.callMethod.apply(r,arguments):r.queue.push(arguments)},t._fbq||(t._fbq=r),r.push=r,r.loaded=!0,r.version="2.0",r.queue=[],(i=a.createElement(o)).async=!0,i.src="https://connect.facebook.net/en_US/fbevents.js",(n=a.getElementsByTagName(o)[0]).parentNode.insertBefore(i,n));let l={};e.isFbpSet()&&(l={...e.getUserIdentifiersForFb()}),fbq("init",wpmDataLayer.pixels.facebook.pixel_id,l),fbq("track","PageView")}catch(o){console.error(o)}var t,a,o,r,i,n},e.getUserIdentifiersForFb=()=>{var e,t,a,o,r,i,n,l,d,s,c,u,p,m,g,y,w,v,_,f,h,L,D,b,C,k,x,j,S,I,Q,P,O,E,A,T,F,V,G,U,R,q,M,N;let W={};return null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.user)&&void 0!==t&&t.id&&(W.external_id=wpmDataLayer.user.id),null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.order)&&void 0!==o&&o.user_id&&(W.external_id=wpmDataLayer.order.user_id),null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.user)&&void 0!==i&&null!==(n=i.facebook)&&void 0!==n&&n.email&&(W.em=wpmDataLayer.user.facebook.email),null!==(l=wpmDataLayer)&&void 0!==l&&null!==(d=l.order)&&void 0!==d&&d.billing_email_hashed&&(W.em=wpmDataLayer.order.billing_email_hashed),null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&null!==(u=c.facebook)&&void 0!==u&&u.first_name&&(W.fn=wpmDataLayer.user.facebook.first_name),null!==(p=wpmDataLayer)&&void 0!==p&&null!==(m=p.order)&&void 0!==m&&m.billing_first_name&&(W.fn=wpmDataLayer.order.billing_first_name.toLowerCase()),null!==(g=wpmDataLayer)&&void 0!==g&&null!==(y=g.user)&&void 0!==y&&null!==(w=y.facebook)&&void 0!==w&&w.last_name&&(W.ln=wpmDataLayer.user.facebook.last_name),null!==(v=wpmDataLayer)&&void 0!==v&&null!==(_=v.order)&&void 0!==_&&_.billing_last_name&&(W.ln=wpmDataLayer.order.billing_last_name.toLowerCase()),null!==(f=wpmDataLayer)&&void 0!==f&&null!==(h=f.user)&&void 0!==h&&null!==(L=h.facebook)&&void 0!==L&&L.phone&&(W.ph=wpmDataLayer.user.facebook.phone),null!==(D=wpmDataLayer)&&void 0!==D&&null!==(b=D.order)&&void 0!==b&&b.billing_phone&&(W.ph=wpmDataLayer.order.billing_phone.replace("+","")),null!==(C=wpmDataLayer)&&void 0!==C&&null!==(k=C.user)&&void 0!==k&&null!==(x=k.facebook)&&void 0!==x&&x.city&&(W.ct=wpmDataLayer.user.facebook.city),null!==(j=wpmDataLayer)&&void 0!==j&&null!==(S=j.order)&&void 0!==S&&S.billing_city&&(W.ct=wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g,"")),null!==(I=wpmDataLayer)&&void 0!==I&&null!==(Q=I.user)&&void 0!==Q&&null!==(P=Q.facebook)&&void 0!==P&&P.state&&(W.st=wpmDataLayer.user.facebook.state),null!==(O=wpmDataLayer)&&void 0!==O&&null!==(E=O.order)&&void 0!==E&&E.billing_state&&(W.st=wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/,"")),null!==(A=wpmDataLayer)&&void 0!==A&&null!==(T=A.user)&&void 0!==T&&null!==(F=T.facebook)&&void 0!==F&&F.postcode&&(W.zp=wpmDataLayer.user.facebook.postcode),null!==(V=wpmDataLayer)&&void 0!==V&&null!==(G=V.order)&&void 0!==G&&G.billing_postcode&&(W.zp=wpmDataLayer.order.billing_postcode),null!==(U=wpmDataLayer)&&void 0!==U&&null!==(R=U.user)&&void 0!==R&&null!==(q=R.facebook)&&void 0!==q&&q.country&&(W.country=wpmDataLayer.user.facebook.country),null!==(M=wpmDataLayer)&&void 0!==M&&null!==(N=M.order)&&void 0!==N&&N.billing_country&&(W.country=wpmDataLayer.order.billing_country.toLowerCase()),W},e.getFbRandomEventId=()=>(Math.random()+1).toString(36).substring(2),e.getFbUserData=()=>(o={...o,...e.getFbUserDataFromBrowser()},o),e.setFbUserData=()=>{o=e.getFbUserDataFromBrowser()},e.getFbUserDataFromBrowser=()=>{var t,a;let o={};return e.getCookie("_fbp")&&e.isValidFbp(e.getCookie("_fbp"))&&(o.fbp=e.getCookie("_fbp")),e.getCookie("_fbc")&&e.isValidFbc(e.getCookie("_fbc"))&&(o.fbc=e.getCookie("_fbc")),null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.user)&&void 0!==a&&a.id&&(o.external_id=wpmDataLayer.user.id),navigator.userAgent&&(o.client_user_agent=navigator.userAgent),o},e.isFbpSet=()=>!!e.getCookie("_fbp"),e.isValidFbp=e=>new RegExp(/^fb\.[0-2]\.\d{13}\.\d{8,20}$/).test(e),e.isValidFbc=e=>new RegExp(/^fb\.[0-2]\.\d{13}\.[\da-zA-Z_-]{8,}/).test(e),e.fbGetProductDataForCapiEvent=e=>({content_type:"product",content_name:e.name,content_ids:[e.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]],value:parseFloat(e.quantity*e.price),currency:e.currency}),e.facebookContentIds=()=>{let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?e.push(String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])):e.push(String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))}return e},e.trackCustomFacebookEvent=function(t){let o=arguments.length>1&&arguments[1]!==a?arguments[1]:{};try{var r,i,n;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.facebook)||void 0===n||!n.loaded)return;let a=e.getFbRandomEventId();fbq("trackCustom",t,o,{eventID:a}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:t,event_id:a,user_data:e.getFbUserData(),event_source_url:window.location.href,custom_data:o})}catch(e){console.error(e)}},e.fbGetContentIdsFromCart=()=>{let e=[];for(const t in wpmDataLayer.cart)e.push(wpmDataLayer.products[t].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]);return e}}(window.wpm=window.wpm||{},jQuery)},12:(e,t,a)=>{a(1),a(164)},165:()=>{jQuery(document).on("wpmViewItemList",(function(e,t){try{var a,o,r,i,n,l,d,s,c,u,p,m,g;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(l=n.pixels)||void 0===l||null===(d=l.google)||void 0===d||null===(s=d.ads)||void 0===s||null===(c=s.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;if(null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.general)&&void 0!==p&&p.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;if(!t)return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers(),items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]};null!==(m=wpmDataLayer)&&void 0!==m&&null!==(g=m.user)&&void 0!==g&&g.id&&(e.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","view_item_list",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmAddToCart",(function(e,t){try{var a,o,r,i,n,l,d,s,c,u,p;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(l=n.pixels)||void 0===l||null===(d=l.google)||void 0===d||null===(s=d.ads)||void 0===s||null===(c=s.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers(),value:t.quantity*t.price,items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]};null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.user)&&void 0!==p&&p.id&&(e.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","add_to_cart",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmViewItem",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;try{var a,o,r,i,n,l,d,s,c,u,p;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(l=n.pixels)||void 0===l||null===(d=l.google)||void 0===d||null===(s=d.ads)||void 0===s||null===(c=s.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers()};t&&(e.value=(t.quantity?t.quantity:1)*t.price,e.items=[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity?t.quantity:1,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]),null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.user)&&void 0!==p&&p.id&&(e.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","view_item",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmSearch",(function(){try{var e,t,a,o,r,i,n,l,d,s,c;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(l=n.ads)||void 0===l||null===(d=l.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let m=[];for(const[e,t]of Object.entries(wpmDataLayer.products)){var u,p;if(null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.general)&&void 0!==p&&p.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;m.push({id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical})}let g={send_to:wpm.getGoogleAdsConversionIdentifiers(),items:m};null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&c.id&&(g.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","view_search_results",g)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,l,d,s,c;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(l=n.ads)||void 0===l||null===(d=l.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let u={send_to:wpm.getGoogleAdsConversionIdentifiers(),value:wpmDataLayer.order.value_filtered,items:wpm.getGoogleAdsDynamicRemarketingOrderItems()};null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&c.id&&(u.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","purchase",u)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmLogin",(function(){try{var e,t,a,o,r,i,n,l,d,s,c;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(l=n.ads)||void 0===l||null===(d=l.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let u={send_to:wpm.getGoogleAdsConversionIdentifiers()};null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&c.id&&(u.user_id=wpmDataLayer.user.id),wpm.gtagLoaded().then((function(){gtag("event","login",u)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i;if(jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel()))return;if(!wpm.googleConfigConditionsMet("ads"))return;let n={},l={};n={send_to:wpm.getGoogleAdsConversionIdentifiersWithLabel(),transaction_id:wpmDataLayer.order.number,value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,new_customer:wpmDataLayer.order.new_customer},null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.order)&&void 0!==t&&t.clv_order_value_filtered&&(n.customer_lifetime_value=wpmDataLayer.order.clv_order_value_filtered),null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.user)&&void 0!==o&&o.id&&(n.user_id=wpmDataLayer.user.id),null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.order)&&void 0!==i&&i.aw_merchant_id&&(l={discount:wpmDataLayer.order.discount,aw_merchant_id:wpmDataLayer.order.aw_merchant_id,aw_feed_country:wpmDataLayer.order.aw_feed_country,aw_feed_language:wpmDataLayer.order.aw_feed_language,items:wpm.getGoogleAdsRegularOrderItems()}),wpm.gtagLoaded().then((function(){gtag("event","conversion",{...n,...l})}))}catch(e){console.error(e)}}))},42:()=>{!function(e,t,a){e.getGoogleAdsConversionIdentifiersWithLabel=function(){var e,t,a,o;let r=[];if(null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.ads)&&void 0!==o&&o.conversionIds)for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))t&&r.push(e+"/"+t);return r},e.getGoogleAdsConversionIdentifiers=function(){let e=[];for(const[t,a]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))e.push(t);return e},e.getGoogleAdsRegularOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e},e.getGoogleAdsDynamicRemarketingOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e}}(window.wpm=window.wpm||{},jQuery)},190:(e,t,a)=>{a(42),a(165)},625:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,l,d,s;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.universal)||void 0===r||!r.property_id)return;if(null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.universal)&&void 0!==s&&s.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.universal.property_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGAUAOrderItems()})}))}catch(e){console.error(e)}}))},19:()=>{!function(e,t,a){e.getGAUAOrderItems=function(){let t=[];for(const[r,i]of Object.entries(wpmDataLayer.order.items)){var a,o;let r;r={quantity:i.quantity,price:i.price,name:i.name,currency:wpmDataLayer.order.currency,category:wpmDataLayer.products[i.id].category.join("/")},null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.general)&&void 0!==o&&o.variationsOutput&&0!==i.variation_id?(r.id=String(wpmDataLayer.products[i.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.variant=wpmDataLayer.products[i.variation_id].variant_name,r.brand=wpmDataLayer.products[i.variation_id].brand):(r.id=String(wpmDataLayer.products[i.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.brand=wpmDataLayer.products[i.id].brand),r=e.ga3AddListNameToProduct(r),t.push(r)}return t},e.ga3AddListNameToProduct=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null;return e.list_name=wpmDataLayer.shop.list_name,t&&(e.list_position=t),e}}(window.wpm=window.wpm||{},jQuery)},562:(e,t,a)=>{a(19),a(625)},572:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,l,d,s;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.ga4)||void 0===r||!r.measurement_id)return;if(null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.ga4)&&void 0!==s&&s.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.ga4.measurement_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGA4OrderItems()})}))}catch(e){console.error(e)}}))},228:()=>{!function(e,t,a){e.getGA4OrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,item_name:r.name,currency:wpmDataLayer.order.currency,item_category:wpmDataLayer.products[r.id].category.join("/")},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.item_id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_variant=wpmDataLayer.products[r.variation_id].variant_name,o.item_brand=wpmDataLayer.products[r.variation_id].brand):(o.item_id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_brand=wpmDataLayer.products[r.id].brand),e.push(o)}return e}}(window.wpm=window.wpm||{},jQuery)},522:(e,t,a)=>{a(228),a(572)},774:(e,t,a)=>{a(562),a(522)},294:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a;void 0===(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a?void 0:a.state)&&(wpm.canGoogleLoad()?wpm.loadGoogle():wpm.logPreventedPixelLoading("google","analytics / ads"))}))},860:()=>{!function(e,t,a){e.googleConfigConditionsMet=function(t){var a,o,r,i;return!(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.consent_mode)||void 0===i||!i.active)||("category"===e.getConsentValues().mode?!0===e.getConsentValues().categories[t]:"pixel"===e.getConsentValues().mode&&e.getConsentValues().pixels.includes("google-"+t))},e.getVisitorConsentStatusAndUpdateGoogleConsentSettings=function(t){return"category"===e.getConsentValues().mode?(e.getConsentValues().categories.analytics&&(t.analytics_storage="granted"),e.getConsentValues().categories.ads&&(t.ad_storage="granted")):"pixel"===e.getConsentValues().mode&&(t.analytics_storage=e.getConsentValues().pixels.includes("google-analytics")?"granted":"denied",t.ad_storage=e.getConsentValues().pixels.includes("google-ads")?"granted":"denied"),t},e.updateGoogleConsentMode=function(){let e=!(arguments.length>0&&arguments[0]!==a)||arguments[0],t=!(arguments.length>1&&arguments[1]!==a)||arguments[1];try{if(!window.gtag||!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent)return;gtag("consent","update",{analytics_storage:e?"granted":"denied",ad_storage:t?"granted":"denied"})}catch(e){console.error(e)}},e.fireGtagGoogleAds=function(){try{var e,t,a,o,r,i,n,l,d,s,c,u,p,m,g,y,w,v,_,f,h,L,D;if(wpmDataLayer.pixels.google.ads.state="loading",null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.ads)&&void 0!==o&&null!==(r=o.enhanced_conversions)&&void 0!==r&&r.active)for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e,{allow_enhanced_conversions:!0});else for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e);null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.ads)&&void 0!==d&&d.conversionIds&&null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.pixels)&&void 0!==c&&null!==(u=c.google)&&void 0!==u&&null!==(p=u.ads)&&void 0!==p&&p.phone_conversion_label&&null!==(m=wpmDataLayer)&&void 0!==m&&null!==(g=m.pixels)&&void 0!==g&&null!==(y=g.google)&&void 0!==y&&null!==(w=y.ads)&&void 0!==w&&w.phone_conversion_number&>ag("config",Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]+"/"+wpmDataLayer.pixels.google.ads.phone_conversion_label,{phone_conversion_number:wpmDataLayer.pixels.google.ads.phone_conversion_number}),null!==(v=wpmDataLayer)&&void 0!==v&&null!==(_=v.shop)&&void 0!==_&&_.page_type&&"order_received_page"===wpmDataLayer.shop.page_type&&null!==(f=wpmDataLayer)&&void 0!==f&&null!==(h=f.order)&&void 0!==h&&null!==(L=h.google)&&void 0!==L&&null!==(D=L.ads)&&void 0!==D&&D.enhanced_conversion_data&>ag("set","user_data",wpmDataLayer.order.google.ads.enhanced_conversion_data),wpmDataLayer.pixels.google.ads.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsUA=function(){try{wpmDataLayer.pixels.google.analytics.universal.state="loading",gtag("config",wpmDataLayer.pixels.google.analytics.universal.property_id,wpmDataLayer.pixels.google.analytics.universal.parameters),wpmDataLayer.pixels.google.analytics.universal.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsGA4=function(){try{var e,t,a,o,r;wpmDataLayer.pixels.google.analytics.ga4.state="loading";let i=wpmDataLayer.pixels.google.analytics.ga4.parameters;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.ga4)&&void 0!==r&&r.debug_mode&&(i.debug_mode=!0),gtag("config",wpmDataLayer.pixels.google.analytics.ga4.measurement_id,i),wpmDataLayer.pixels.google.analytics.ga4.state="ready"}catch(e){console.error(e)}},e.isGoogleActive=function(){var e,t,a,o,r,i,n,l,d,s,c,u,p,m;return!(!(null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id||null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.ga4)&&void 0!==s&&s.measurement_id)&&jQuery.isEmptyObject(null===(c=wpmDataLayer)||void 0===c||null===(u=c.pixels)||void 0===u||null===(p=u.google)||void 0===p||null===(m=p.ads)||void 0===m?void 0:m.conversionIds))},e.getGoogleGtagId=function(){var e,t,a,o,r,i,n,l,d,s;return null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id?wpmDataLayer.pixels.google.analytics.universal.property_id:null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(l=n.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.ga4)&&void 0!==s&&s.measurement_id?wpmDataLayer.pixels.google.analytics.ga4.measurement_id:Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]},e.loadGoogle=function(){e.isGoogleActive()&&(wpmDataLayer.pixels.google.state="loading",e.loadScriptAndCacheIt("https://www.googletagmanager.com/gtag/js?id="+e.getGoogleGtagId()).then((function(t,a){try{var o,r,i,n,l,d,s,c,u,p,m,g,y,w,v,_,f,h,L,D,b,C;if(window.dataLayer=window.dataLayer||[],window.gtag=function(){dataLayer.push(arguments)},null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.google)&&void 0!==i&&null!==(n=i.consent_mode)&&void 0!==n&&n.active){var k,x,j,S;let t={ad_storage:wpmDataLayer.pixels.google.consent_mode.ad_storage,analytics_storage:wpmDataLayer.pixels.google.consent_mode.analytics_storage,wait_for_update:wpmDataLayer.pixels.google.consent_mode.wait_for_update};null!==(k=wpmDataLayer)&&void 0!==k&&null!==(x=k.pixels)&&void 0!==x&&null!==(j=x.google)&&void 0!==j&&null!==(S=j.consent_mode)&&void 0!==S&&S.region&&(t.region=wpmDataLayer.pixels.google.consent_mode.region),t=e.getVisitorConsentStatusAndUpdateGoogleConsentSettings(t),gtag("consent","default",t),gtag("set","ads_data_redaction",wpmDataLayer.pixels.google.consent_mode.ads_data_redaction),gtag("set","url_passthrough",wpmDataLayer.pixels.google.consent_mode.url_passthrough)}null!==(l=wpmDataLayer)&&void 0!==l&&null!==(d=l.pixels)&&void 0!==d&&null!==(s=d.google)&&void 0!==s&&null!==(c=s.linker)&&void 0!==c&&c.settings&>ag("set","linker",wpmDataLayer.pixels.google.linker.settings),gtag("js",new Date),jQuery.isEmptyObject(null===(u=wpmDataLayer)||void 0===u||null===(p=u.pixels)||void 0===p||null===(m=p.google)||void 0===m||null===(g=m.ads)||void 0===g?void 0:g.conversionIds)||(e.googleConfigConditionsMet("ads")?e.fireGtagGoogleAds():e.logPreventedPixelLoading("google-ads","ads")),null!==(y=wpmDataLayer)&&void 0!==y&&null!==(w=y.pixels)&&void 0!==w&&null!==(v=w.google)&&void 0!==v&&null!==(_=v.analytics)&&void 0!==_&&null!==(f=_.universal)&&void 0!==f&&f.property_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsUA():e.logPreventedPixelLoading("google-universal-analytics","analytics")),null!==(h=wpmDataLayer)&&void 0!==h&&null!==(L=h.pixels)&&void 0!==L&&null!==(D=L.google)&&void 0!==D&&null!==(b=D.analytics)&&void 0!==b&&null!==(C=b.ga4)&&void 0!==C&&C.measurement_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsGA4():e.logPreventedPixelLoading("ga4","analytics")),wpmDataLayer.pixels.google.state="ready"}catch(e){console.error(e)}})))},e.canGoogleLoad=function(){var t,a,o,r;return!(null===(t=wpmDataLayer)||void 0===t||null===(a=t.pixels)||void 0===a||null===(o=a.google)||void 0===o||null===(r=o.consent_mode)||void 0===r||!r.active)||("category"===e.getConsentValues().mode?!(!e.getConsentValues().categories.ads&&!e.getConsentValues().categories.analytics):"pixel"===e.getConsentValues().mode?e.getConsentValues().pixels.includes("google-ads")||e.getConsentValues().pixels.includes("google-analytics"):(console.error("Couldn't find a valid load condition for Google mode in wpmConsentValues"),!1))},e.gtagLoaded=function(){return new Promise((function(e,t){var a,o,r;void 0===(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r?void 0:r.state)&&t();let i=0;!function a(){var o,r,n;return"ready"===(null===(o=wpmDataLayer)||void 0===o||null===(r=o.pixels)||void 0===r||null===(n=r.google)||void 0===n?void 0:n.state)?e():i>=5e3?t():(i+=200,void setTimeout(a,200))}()}))}}(window.wpm=window.wpm||{},jQuery)},580:(e,t,a)=>{a(860),a(294)},69:(e,t,a)=>{a(580),a(190),a(774),a(463)},945:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i,n,l;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.optimize)||void 0===o||!o.container_id||null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.pixels)&&void 0!==i&&null!==(n=i.google)&&void 0!==n&&null!==(l=n.optimize)&&void 0!==l&&l.loaded||wpm.canIFire("analytics","google-optimize")&&wpm.load_google_optimize_pixel()}))},962:()=>{!function(e,t,a){e.load_google_optimize_pixel=function(){try{wpmDataLayer.pixels.google.optimize.loaded=!0,e.loadScriptAndCacheIt("https://www.googleoptimize.com/optimize.js?id="+wpmDataLayer.pixels.google.optimize.container_id)}catch(e){console.error(e)}}}(window.wpm=window.wpm||{},jQuery)},463:(e,t,a)=>{a(962),a(945)},300:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i,n,l,d;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.hotjar)||void 0===a||!a.site_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.hotjar)&&void 0!==i&&i.loaded||!wpm.canIFire("analytics","hotjar")||null!==(n=wpmDataLayer)&&void 0!==n&&null!==(l=n.pixels)&&void 0!==l&&null!==(d=l.hotjar)&&void 0!==d&&d.loaded||wpm.load_hotjar_pixel()}))},376:()=>{!function(e,t,a){e.load_hotjar_pixel=function(){try{wpmDataLayer.pixels.hotjar.loaded=!0,e=window,t=document,e.hj=e.hj||function(){(e.hj.q=e.hj.q||[]).push(arguments)},e._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6},a=t.getElementsByTagName("head")[0],(o=t.createElement("script")).async=1,o.src="https://static.hotjar.com/c/hotjar-"+e._hjSettings.hjid+".js?sv="+e._hjSettings.hjsv,a.appendChild(o)}catch(e){console.error(e)}var e,t,a,o}}(window.wpm=window.wpm||{},jQuery)},787:(e,t,a)=>{a(376),a(300)},473:()=>{!function(e,t,a){let o=()=>{let t=e.getCookie("cmplz_statistics"),a=e.getCookie("cmplz_marketing");return!(!e.getCookie("cmplz_consent_status")&&!e.getCookie("cmplz_banner-status"))&&{analytics:"allow"===t,ads:"allow"===a,visitorHasChosen:!0}},r=()=>{let t=e.getCookie("cookielawinfo-checkbox-analytics")||e.getCookie("cookielawinfo-checkbox-analytiques"),a=e.getCookie("cookielawinfo-checkbox-advertisement")||e.getCookie("cookielawinfo-checkbox-performance")||e.getCookie("cookielawinfo-checkbox-publicite"),o=e.getCookie("CookieLawInfoConsent");return!(!t&&!a)&&{analytics:"yes"===t,ads:"yes"===a,visitorHasChosen:!!o}},i={categories:{},pixels:[],mode:"category",visitorHasChosen:!1};e.getConsentValues=()=>i,e.setConsentValueCategories=function(){let e=arguments.length>0&&arguments[0]!==a&&arguments[0],t=arguments.length>1&&arguments[1]!==a&&arguments[1];i.categories.analytics=e,i.categories.ads=t},e.updateConsentCookieValues=function(){let t,n=arguments.length>0&&arguments[0]!==a?arguments[0]:null,l=arguments.length>1&&arguments[1]!==a?arguments[1]:null,d=arguments.length>2&&arguments[2]!==a&&arguments[2];if(i.categories.analytics=!d,i.categories.ads=!d,n||l)return n&&(i.categories.analytics=!!n),void(l&&(i.categories.ads=!!l));if(t=e.getCookie("pmw_cookie_consent"))return t=JSON.parse(t),i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,void(i.visitorHasChosen=!0);if(t=e.getCookie("CookieConsent"))return t=decodeURI(t),i.categories.analytics=t.indexOf("statistics:true")>=0,i.categories.ads=t.indexOf("marketing:true")>=0,void(i.visitorHasChosen=!0);if(t=e.getCookie("CookieScriptConsent"))return t=JSON.parse(t),"reject"===t.action?(i.categories.analytics=!1,i.categories.ads=!1):2===t.categories.length?(i.categories.analytics=!0,i.categories.ads=!0):(i.categories.analytics=t.categories.indexOf("performance")>=0,i.categories.ads=t.categories.indexOf("targeting")>=0),void(i.visitorHasChosen=!0);var s,c,u,p,m,g,y,w;if(t=e.getCookie("borlabs-cookie"))return t=decodeURI(t),t=JSON.parse(t),i.categories.analytics=!(null===(s=t)||void 0===s||null===(c=s.consents)||void 0===c||!c.statistics),i.categories.ads=!(null===(u=t)||void 0===u||null===(p=u.consents)||void 0===p||!p.marketing),i.visitorHasChosen=!0,i.pixels=[...(null===(m=t)||void 0===m||null===(g=m.consents)||void 0===g?void 0:g.statistics)||[],...(null===(y=t)||void 0===y||null===(w=y.consents)||void 0===w?void 0:w.marketing)||[]],void(i.mode="pixel");if(t=o())return i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,void(i.visitorHasChosen=t.visitorHasChosen);if(t=e.getCookie("cookie_notice_accepted"))return i.categories.analytics=!0,i.categories.ads=!0,void(i.visitorHasChosen=!0);if(t=e.getCookie("hu-consent"))return t=JSON.parse(t),i.categories.analytics=!!t.categories[3],i.categories.ads=!!t.categories[4],void(i.visitorHasChosen=!0);if(t=r())return i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,void(i.visitorHasChosen=!0===t.visitorHasChosen);if(t=e.getCookie("moove_gdpr_popup"))return t=JSON.parse(t),i.categories.analytics="1"===t.thirdparty,i.categories.ads="1"===t.advanced,void(i.visitorHasChosen=!0);if(t=e.getCookie("wpautoterms-cookies-notice")){if("1"!==t)return;return i.categories.analytics=!0,i.categories.ads=!0,void(i.visitorHasChosen=!0)}if(window.localStorage&&window.localStorage.getItem("uc_settings")){if(console.log("Usercentrics settings detected"),"undefined"==typeof UC_UI)return void window.addEventListener("UC_UI_INITIALIZED",(function(t){e.ucUiProcessConsent()}));if(UC_UI.areAllConsentsAccepted())return i.categories.analytics=!0,i.categories.ads=!0,void(i.visitorHasChosen=!0);e.ucUiProcessConsent()}if(t=e.getCookie("OptanonConsent")){let e=new URLSearchParams(t).get("groups").split(","),a={};return e.forEach((e=>{let t=e.split(":");a[t[0]]=t[1]})),i.categories.analytics="1"===groubsObject[2],i.categories.ads="1"===a[4],void(i.visitorHasChosen=!0)}},e.ucUiProcessConsent=function(){if("undefined"==typeof UC_UI)return;UC_UI.areAllConsentsAccepted()&&pmw.consentAcceptAll();const e=UC_UI.getSettingsLabels().categories.filter((e=>"Statistics"===e.label))[0].slug;pmw.consentAdjustSelectively({analytics:!UC_UI.getServicesBaseInfo().filter((t=>t.categorySlug===e&&!1===t.consent.status)).length>0,ads:!UC_UI.getServicesBaseInfo().filter((e=>"marketing"===e.categorySlug&&!1===e.consent.status)).length>0})},e.updateConsentCookieValues(),e.setConsentDefaultValuesToExplicit=()=>{i.categories={analytics:!1,ads:!1}},e.canIFire=(t,a)=>{let o;return"category"===i.mode?o=!!i.categories[t]:"pixel"===i.mode?(o=i.pixels.includes(a),!1===o&&"microsoft-ads"===a&&(o=i.pixels.includes("bing-ads"))):(console.error("Couldn't find a valid consent mode in wpmConsentValues"),o=!1),!!o||(e.logPreventedPixelLoading(a,t),!1)},e.logPreventedPixelLoading=(e,t)=>{var a,o,r;null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.shop)&&void 0!==o&&null!==(r=o.cookie_consent_mgmt)&&void 0!==r&&r.explicit_consent?console.log('Pixel Manager for WooCommerce: The "'+e+" (category: "+t+')" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)'):console.log('Pixel Manager for WooCommerce: The "'+e+" (category: "+t+')" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)')},e.scriptTagObserver=new MutationObserver((a=>{a.forEach((a=>{let{addedNodes:o}=a;[...o].forEach((a=>{t(a).data("wpm-cookie-category")&&(e.shouldScriptBeActive(a)?e.unblockScript(a):e.blockScript(a))}))}))})),e.scriptTagObserver.observe(document.head,{childList:!0,subtree:!0}),document.addEventListener("DOMContentLoaded",(()=>e.scriptTagObserver.disconnect())),e.shouldScriptBeActive=e=>{var a,o,r,n;return!((wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent||i.visitorHasChosen)&&("category"!==i.mode||!t(e).data("wpm-cookie-category").split(",").some((e=>i.categories[e])))&&("pixel"!==i.mode||!i.pixels.includes(t(e).data("wpm-pixel-name")))&&("pixel"!==i.mode||"google"!==t(e).data("wpm-pixel-name")||!["google-analytics","google-ads"].some((e=>i.pixels.includes(e))))&&(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(n=r.consent_mode)||void 0===n||!n.active||"google"!==t(e).data("wpm-pixel-name")))},e.unblockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove();let r=t(e).data("wpm-src");r&&t(e).attr("src",r),e.type="text/javascript",o&&t(e).appendTo("head"),document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.blockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove(),t(e).attr("src")&&t(e).removeAttr("src"),e.type="blocked/javascript",o&&t(e).appendTo("head")},e.unblockAllScripts=function(){let t=!(arguments.length>0&&arguments[0]!==a)||arguments[0],o=!(arguments.length>1&&arguments[1]!==a)||arguments[1];e.setConsentValueCategories(t,o),document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.unblockSelectedPixels=()=>{document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.explicitConsentStateAlreadySet=()=>{if(i.explicitConsentStateAlreadySet)return!0;i.explicitConsentStateAlreadySet=!0},document.addEventListener("borlabs-cookie-consent-saved",(()=>{e.updateConsentCookieValues(),"pixel"===i.mode?(e.unblockSelectedPixels(),e.updateGoogleConsentMode(i.pixels.includes("google-analytics"),i.pixels.includes("google-ads"))):(e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads))})),document.addEventListener("CookiebotOnAccept",(()=>{Cookiebot.consent.statistics&&(i.categories.analytics=!0),Cookiebot.consent.marketing&&(i.categories.ads=!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)}),!1),document.addEventListener("CookieScriptAccept",(t=>{t.detail.categories.includes("performance")&&(i.categories.analytics=!0),t.detail.categories.includes("targeting")&&(i.categories.ads=!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)})),document.addEventListener("CookieScriptAcceptAll",(()=>{e.setConsentValueCategories(!0,!0),e.unblockAllScripts(!0,!0),e.updateGoogleConsentMode(!0,!0)})),e.cmplzStatusChange=t=>{t.detail.categories.includes("statistics")&&e.updateConsentCookieValues(!0,null),t.detail.categories.includes("marketing")&&e.updateConsentCookieValues(null,!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)},document.addEventListener("cmplzStatusChange",e.cmplzStatusChange),document.addEventListener("cmplz_status_change",e.cmplzStatusChange),document.addEventListener("setCookieNotice",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)})),e.huObserver=new MutationObserver((t=>{t.forEach((t=>{let{addedNodes:a}=t;[...a].forEach((t=>{"hu"===t.id&&document.querySelector(".hu-cookies-save").addEventListener("click",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)}))}))}))})),window.hu&&e.huObserver.observe(document.documentElement||document.body,{childList:!0,subtree:!0}),window.addEventListener("ucEvent",(function(e){e.detail&&"consent_status"==e.detail.event&&(!0===e.detail["Google Ads Remarketing"]?console.log("Google Ads Remarketing has consent"):console.log("Google Ads Remarketing has no consent"))})),window.addEventListener("UC_UI_CMP_EVENT",(function(e){"ACCEPT_ALL"===e.detail.type&&pmw.consentAcceptAll(),"DENY_ALL"===e.detail.type&&pmw.consentRevokeAll(),"SAVE"===e.detail.type&&console.log("event.detail",e.detail)})),jQuery("#accept-recommended-btn-handler, #onetrust-accept-btn-handler").on("click",(function(){void 0!==window.OneTrust&&pmw.consentAcceptAll()})),jQuery(".ot-pc-refuse-all-handler, #onetrust-reject-all-handler").on("click",(function(){pmw.consentRevokeAll()})),jQuery(".save-preference-btn-handler.onetrust-close-btn-handler").on("click",(function(){location.reload()}))}(window.wpm=window.wpm||{},jQuery),function(e,t,a){e.consentAcceptAll=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:{};t.duration=t.duration||365,e.consentSetCookie(!0,!0,t.duration),wpm.unblockAllScripts(!0,!0),wpm.updateGoogleConsentMode(!0,!0)},e.consentAdjustSelectively=t=>{t.analytics=t.analytics!==a?t.analytics:wpm.getConsentValues().categories.analytics,t.ads=t.ads!==a?t.ads:wpm.getConsentValues().categories.ads,t.duration=t.duration||365,e.consentSetCookie(t.analytics,t.ads,t.duration),wpm.unblockAllScripts(t.analytics,t.ads),wpm.updateGoogleConsentMode(t.analytics,t.ads)},e.consentRevokeAll=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:{};t.duration=t.duration||365,wpm.setConsentValueCategories(!1,!1),e.consentSetCookie(!1,!1,t.duration),wpm.updateGoogleConsentMode(!1,!1)},e.consentSetCookie=function(e,t){let o=arguments.length>2&&arguments[2]!==a?arguments[2]:365;wpm.setCookie("pmw_cookie_consent",JSON.stringify({analytics:e,ads:t}),o)},jQuery(document).trigger("pmw_cookie_consent_management_loaded")}(window.pmw=window.pmw||{},jQuery)},299:()=>{jQuery(document).on("click",".remove_from_cart_button, .remove",(e=>{try{let t=new URL(jQuery(e.currentTarget).attr("href")),a=wpm.getProductIdByCartItemKeyUrl(t);wpm.removeProductFromCart(a)}catch(e){console.error(e)}})),jQuery(document).on("click",".add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .single_add_to_cart_button",(e=>{try{let t,a=1;"product"===wpmDataLayer.shop.page_type?(void 0!==jQuery(e.currentTarget).attr("href")&&jQuery(e.currentTarget).attr("href").includes("add-to-cart")&&(t=jQuery(e.currentTarget).data("product_id"),wpm.addProductToCart(t,a)),"simple"===wpmDataLayer.shop.product_type&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery(e.currentTarget).val(),wpm.addProductToCart(t,a)),["variable","variable-subscription"].indexOf(wpmDataLayer.shop.product_type)>=0&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery("[name='variation_id']").val(),wpm.addProductToCart(t,a)),"grouped"===wpmDataLayer.shop.product_type&&jQuery(".woocommerce-grouped-product-list-item").each(((e,o)=>{a=Number(jQuery(o).find(".input-text.qty").val()),a||0===a||(a=1);let r=jQuery(o).attr("class");t=wpm.getPostIdFromString(r),wpm.addProductToCart(t,a)})),"bundle"===wpmDataLayer.shop.product_type&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery("input[name=add-to-cart]").val(),wpm.addProductToCart(t,a))):(t=jQuery(e.currentTarget).data("product_id"),wpm.addProductToCart(t,a))}catch(e){console.error(e)}})),jQuery(document).one("click","a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)",(e=>{try{if(jQuery(e.target).closest("a").attr("href")){let t=jQuery(e.target).closest("a").attr("href");if(t.includes("add-to-cart=")){let e=t.match(/(add-to-cart=)(\d+)/);e&&wpm.addProductToCart(e[2],1)}}}catch(e){console.error(e)}})),jQuery(document).on("click",".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product",(e=>{try{let t=jQuery(e.currentTarget).nextAll(".wpmProductId:first").data("id");if(t){if(t=wpm.getIdBasedOndVariationsOutputSetting(t),!t)throw Error("Wasn't able to retrieve a productId");if(wpmDataLayer.products&&wpmDataLayer.products[t]){let e=wpm.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmSelectContentGaUa",e),jQuery(document).trigger("wpmSelectItem",e)}}}catch(e){console.error(e)}})),jQuery(document).one("click init_checkout",[".checkout-button",".cart-checkout-button",".button.checkout",".xoo-wsc-ft-btn-checkout",".elementor-button--checkout"].join(","),(()=>{jQuery(document).trigger("wpmBeginCheckout")})),jQuery(document).on("input","#billing_email",(e=>{wpm.isEmail(jQuery(e.currentTarget).val())&&(wpm.fireCheckoutProgress(2),wpm.emailSelected=!0)})),jQuery(document).on("wpmLoad",(e=>{jQuery(document).on("payment_method_selected",(()=>{!1===wpm.paymentMethodSelected&&wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val()),wpm.paymentMethodSelected=!0}))})),jQuery((()=>{jQuery("form.checkout").on("checkout_place_order_success",(()=>{!1===wpm.emailSelected&&wpm.fireCheckoutProgress(2),!1===wpm.paymentMethodSelected&&(wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val())),wpm.fireCheckoutProgress(4),jQuery(document).trigger("wpmPlaceOrder",{})}))})),jQuery(document).on("click","[name='update_cart']",(e=>{try{jQuery(".cart_item").each(((e,t)=>{let a=new URL(jQuery(t).find(".product-remove").find("a").attr("href")),o=wpm.getProductIdByCartItemKeyUrl(a),r=jQuery(t).find(".qty").val();0===r?wpm.removeProductFromCart(o):r<wpmDataLayer.cart[o].quantity?wpm.removeProductFromCart(o,wpmDataLayer.cart[o].quantity-r):r>wpmDataLayer.cart[o].quantity&&wpm.addProductToCart(o,r-wpmDataLayer.cart[o].quantity)}))}catch(e){console.error(e),wpm.getCartItemsFromBackend()}})),jQuery((function(){jQuery(".add_to_wishlist,.wl-add-to").on("click",(e=>{try{let t;if(jQuery(e.currentTarget).data("productid")?t=jQuery(e.currentTarget).data("productid"):jQuery(e.currentTarget).data("product-id")&&(t=jQuery(e.currentTarget).data("product-id")),!t)throw Error("Wasn't able to retrieve a productId");let a=wpm.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmAddToWishlist",a)}catch(e){console.error(e)}}))})),jQuery(document).on("updated_cart_totals",(()=>{jQuery(document).trigger("wpmViewCart")})),jQuery((()=>{jQuery(".single_variation_wrap").on("show_variation",((e,t)=>{try{let e=wpm.getIdBasedOndVariationsOutputSetting(t.variation_id);if(!e)throw Error("Wasn't able to retrieve a productId");wpm.triggerViewItemEventPrep(e)}catch(e){console.error(e)}}))})),jQuery(document).on("wpmLoad",(()=>{try{wpm.doesWooCommerceCartExist()&&wpm.getCartItems()}catch(e){console.error(e)}})),jQuery(document).on("wpmLoad",(()=>{wpmDataLayer.products=wpmDataLayer.products||{};let e=wpm.getAddToCartLinkProductIds();wpm.getProductsFromBackend(e)})),jQuery(document).on("wpmLoad",(()=>{if(!wpm.getCookie("wpmReferrer")&&document.referrer){let e=new URL(document.referrer).hostname;e!==window.location.host&&wpm.setCookie("wpmReferrer",e)}})),jQuery(document).on("wpmLoad",(()=>{try{var e;if("undefined"!=typeof wpmDataLayer&&(null===(e=wpmDataLayer)||void 0===e||!e.wpmLoadFired)){var t,a,o;if(jQuery(document).trigger("wpmLoadAlways"),null!==(t=wpmDataLayer)&&void 0!==t&&t.shop)if("product"===wpmDataLayer.shop.page_type&&"variable"!==wpmDataLayer.shop.product_type&&wpm.getMainProductIdFromProductPage()){let e=wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage());jQuery(document).trigger("wpmViewItem",e)}else"product_category"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmCategory"):"search"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmSearch"):"cart"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmViewCart"):"order_received_page"===wpmDataLayer.shop.page_type&&wpmDataLayer.order?wpm.isOrderIdStored(wpmDataLayer.order.id)||(jQuery(document).trigger("wpmOrderReceivedPage"),wpm.writeOrderIdToStorage(wpmDataLayer.order.id),"function"==typeof wpm.acrRemoveCookie&&wpm.acrRemoveCookie()):jQuery(document).trigger("wpmEverywhereElse");else jQuery(document).trigger("wpmEverywhereElse");null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.user)&&void 0!==o&&o.id&&!wpm.hasLoginEventFired()&&(jQuery(document).trigger("wpmLogin"),wpm.setLoginEventFired()),wpmDataLayer.wpmLoadFired=!0}}catch(e){console.error(e)}})),jQuery(document).on("wpmLoad",(async()=>{window.sessionStorage&&window.sessionStorage.getItem("_pmw_endpoint_available")&&!JSON.parse(window.sessionStorage.getItem("_pmw_endpoint_available"))&&console.error("Pixel Manager for WooCommerce: REST endpoint is not available. Using admin-ajax.php instead.")})),jQuery(document).on("wpmPreLoadPixels",(()=>{var e,t,a;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.shop)&&void 0!==t&&null!==(a=t.cookie_consent_mgmt)&&void 0!==a&&a.explicit_consent&&!wpm.explicitConsentStateAlreadySet()&&wpm.updateConsentCookieValues(null,null,!0),jQuery(document).trigger("wpmLoadPixels",{})})),jQuery(document).on("wpmAddToCart",((e,t)=>{var a,o,r;let i={event:"addToCart",product:t};null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.pixels)&&void 0!==o&&null!==(r=o.facebook)&&void 0!==r&&r.loaded&&(i.facebook={event_name:"AddToCart",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:wpm.fbGetProductDataForCapiEvent(t)}),jQuery(document).trigger("wpmClientSideAddToCart",i),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(i)})),jQuery(document).on("wpmBeginCheckout",(()=>{var e,t,a;let o={event:"beginCheckout"};var r;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.facebook)&&void 0!==a&&a.loaded&&(o.facebook={event_name:"InitiateCheckout",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{}},null!==(r=wpmDataLayer)&&void 0!==r&&r.cart&&!jQuery.isEmptyObject(wpmDataLayer.cart)&&(o.facebook.custom_data={content_type:"product",content_ids:wpm.fbGetContentIdsFromCart(),value:wpm.getCartValue(),currency:wpmDataLayer.shop.currency})),jQuery(document).trigger("wpmClientSideBeginCheckout",o),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(o)})),jQuery(document).on("wpmAddToWishlist",((e,t)=>{var a,o,r;let i={event:"addToWishlist",product:t};null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.pixels)&&void 0!==o&&null!==(r=o.facebook)&&void 0!==r&&r.loaded&&(i.facebook={event_name:"AddToWishlist",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:wpm.fbGetProductDataForCapiEvent(t)}),jQuery(document).trigger("wpmClientSideAddToWishlist",i),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(i)})),jQuery(document).on("wpmViewItem",(function(e){var t,a,o;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i={event:"viewItem",product:r};null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.pixels)&&void 0!==a&&null!==(o=a.facebook)&&void 0!==o&&o.loaded&&(i.facebook={event_name:"ViewContent",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{}},r&&(i.facebook.custom_data=wpm.fbGetProductDataForCapiEvent(r))),jQuery(document).trigger("wpmClientSideViewItem",i),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(i)})),jQuery(document).on("wpmSearch",(()=>{var e,t,a;let o={event:"search"};null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.facebook)&&void 0!==a&&a.loaded&&(o.facebook={event_name:"Search",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{search_string:wpm.getSearchTermFromUrl()}}),jQuery(document).trigger("wpmClientSideSearch",o),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(o)})),jQuery(document).on("wpmOrderReceivedPage",(()=>{var e,t,a;let o={event:"orderReceived"};null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.facebook)&&void 0!==a&&a.loaded&&(o.facebook={event_name:"Purchase",event_id:wpmDataLayer.order.id,user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{content_type:"product",value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,content_ids:wpm.facebookContentIds()}}),jQuery(document).trigger("wpmClientSideOrderReceivedPage",o)}))},584:()=>{!function(e,t,a){const o="_wpm_order_ids",r="_pmw_endpoint_available",i="pmw/v1/test/";function n(){return""!==e.getCookie(o)}e.emailSelected=!1,e.paymentMethodSelected=!1,e.useRestEndpoint=()=>e.isSessionStorageAvailable()&&e.isRestEndpointAvailable()&&e.isBelowRestErrorThreshold(),e.isBelowRestErrorThreshold=()=>window.sessionStorage.getItem(0)<=10,e.isRestEndpointAvailable=async()=>window.sessionStorage.getItem(r)?JSON.parse(window.sessionStorage.getItem(r)):await e.testEndpoint(),e.isSessionStorageAvailable=()=>!!window.sessionStorage,e.testEndpoint=async function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:e.root+i,o=arguments.length>1&&arguments[1]!==a?arguments[1]:r,n=await fetch(t,{method:"POST",mode:"cors",cache:"no-cache",keepalive:!0});return 200===n.status?(window.sessionStorage.setItem(o,JSON.stringify(!0)),!0):404===n.status||0===n.status?(window.sessionStorage.setItem(o,JSON.stringify(!1)),!1):void 0},e.isWpmRestEndpointAvailable=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:r;return!!e.getCookie(t)},e.writeOrderIdToStorage=function(t){let r=arguments.length>1&&arguments[1]!==a?arguments[1]:"thankyou_page";if(window.Storage)if(null===localStorage.getItem(o)){let e=[];e.push(t),window.localStorage.setItem(o,JSON.stringify(e))}else{let e=JSON.parse(localStorage.getItem(o));e.includes(t)||(e.push(t),window.localStorage.setItem(o,JSON.stringify(e)))}else{let a=new Date;a.setDate(a.getDate()+365);let r=[];n()&&(r=JSON.parse(e.getCookie(o))),r.includes(t)||(r.push(t),document.cookie="_wpm_order_ids="+JSON.stringify(r)+";expires="+a.toUTCString())}"function"==typeof e.storeOrderIdOnServer&&wpmDataLayer.orderDeduplication&&e.storeOrderIdOnServer(t,r)},e.isOrderIdStored=t=>wpmDataLayer.orderDeduplication?window.Storage?null!==localStorage.getItem(o)&&JSON.parse(localStorage.getItem(o)).includes(t):!!n()&&JSON.parse(e.getCookie(o)).includes(t):(console.log("order duplication prevention: off"),!1),e.isEmail=e=>/^(([^<>()\[\]\\.,;:\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,}))$/.test(e),e.removeProductFromCart=function(t){let o=arguments.length>1&&arguments[1]!==a?arguments[1]:null;try{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");let a;if(a=null==o?wpmDataLayer.cart[t].quantity:o,wpmDataLayer.cart[t]){let r=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmRemoveFromCart",r),null==o||wpmDataLayer.cart[t].quantity===o?(delete wpmDataLayer.cart[t],sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))):(wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity-a,sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart)))}}catch(e){console.error(e)}},e.getIdBasedOndVariationsOutputSetting=e=>{try{var t,a;return null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput?e:wpmDataLayer.products[e].isVariation?wpmDataLayer.products[e].parentId:e}catch(e){console.error(e)}},e.addProductToCart=(t,a)=>{try{var o;if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");if(null!==(o=wpmDataLayer)&&void 0!==o&&o.products[t]){var r;let o=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmAddToCart",o),null!==(r=wpmDataLayer)&&void 0!==r&&r.cart[t]?wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity+a:("cart"in wpmDataLayer||(wpmDataLayer.cart={}),wpmDataLayer.cart[t]=e.getProductDetailsFormattedForEvent(t,a)),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))}}catch(t){console.error(t),e.getCartItemsFromBackend()}},e.getCartItems=()=>{sessionStorage?sessionStorage.getItem("wpmDataLayerCart")&&"order_received_page"!==wpmDataLayer.shop.page_type?e.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem("wpmDataLayerCart"))):sessionStorage.setItem("wpmDataLayerCart",JSON.stringify({})):e.getCartItemsFromBackend()},e.getCartItemsFromBackend=()=>{try{fetch(e.ajax_url,{method:"POST",cache:"no-cache",body:new URLSearchParams({action:"pmw_get_cart_items"}),keepalive:!0}).then((e=>{if(e.ok)return e.json();throw Error("Error getting cart items from backend")})).then((t=>{if(!t.success)throw Error("Error getting cart items from backend");t.data.cart||(t.data.cart={}),e.saveCartObjectToDataLayer(t.data.cart),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(t.data.cart))}))}catch(e){console.error(e)}},e.getProductsFromBackend=async t=>{var a;if(null!==(a=wpmDataLayer)&&void 0!==a&&a.products&&(t=t.filter((e=>!wpmDataLayer.products.hasOwnProperty(e)))),t&&0!==t.length){try{let a;if(a=await e.isRestEndpointAvailable()?await fetch(e.root+"pmw/v1/products/",{method:"POST",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}):await fetch(e.ajax_url,{method:"POST",cache:"no-cache",body:new URLSearchParams({action:"pmw_get_product_ids",productIds:t})}),a.ok){let e=await a.json();e.success&&(wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e.data))}else console.error("Error getting products from backend")}catch(e){console.error(e)}return!0}},e.saveCartObjectToDataLayer=e=>{wpmDataLayer.cart=e,wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e)},e.triggerViewItemEventPrep=async t=>{wpmDataLayer.products&&wpmDataLayer.products[t]||await e.getProductsFromBackend([t]),e.triggerViewItemEvent(t)},e.triggerViewItemEvent=t=>{let a=e.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmViewItem",a)},e.triggerViewItemEventNoProduct=()=>{jQuery(document).trigger("wpmViewItem")},e.fireCheckoutOption=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null,o=arguments.length>2&&arguments[2]!==a?arguments[2]:null,r={step:e,checkout_option:t,value:o};jQuery(document).trigger("wpmFireCheckoutOption",r)},e.fireCheckoutProgress=e=>{let t={step:e};jQuery(document).trigger("wpmFireCheckoutProgress",t)},e.getPostIdFromString=e=>{try{return e.match(/(post-)(\d+)/)[2]}catch(e){console.error(e)}},e.triggerViewItemList=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");jQuery(document).trigger("wpmViewItemList",e.getProductDataForViewItemEvent(t))},e.getProductDataForViewItemEvent=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");try{if(wpmDataLayer.products[t])return e.getProductDetailsFormattedForEvent(t)}catch(e){console.error(e)}},e.getMainProductIdFromProductPage=()=>{try{return["simple","variable","grouped","composite","bundle"].indexOf(wpmDataLayer.shop.product_type)>=0&&jQuery(".wpmProductId:first").data("id")}catch(e){console.error(e)}},e.viewItemListTriggerTestMode=e=>{jQuery(e).css({position:"relative"}),jQuery(e).append('<div id="viewItemListTriggerOverlay"></div>'),jQuery(e).find("#viewItemListTriggerOverlay").css({"z-index":"10",display:"block",position:"absolute",height:"100%",top:"0",left:"0",right:"0",opacity:wpmDataLayer.viewItemListTrigger.opacity,"background-color":wpmDataLayer.viewItemListTrigger.backgroundColor})},e.getSearchTermFromUrl=()=>{try{return new URLSearchParams(window.location.search).get("s")}catch(e){console.error(e)}};let l,d={};e.observerCallback=(t,a)=>{t.forEach((t=>{try{let o,r=jQuery(t.target).data("ioid");if(o=jQuery(t.target).next(".wpmProductId").length?jQuery(t.target).next(".wpmProductId").data("id"):jQuery(t.target).find(".wpmProductId").data("id"),!o)throw Error("wpmProductId element not found");t.isIntersecting?d[r]=setTimeout((()=>{e.triggerViewItemList(o),wpmDataLayer.viewItemListTrigger.testMode&&e.viewItemListTriggerTestMode(t.target),!1===wpmDataLayer.viewItemListTrigger.repeat&&a.unobserve(t.target)}),wpmDataLayer.viewItemListTrigger.timeout):(clearTimeout(d[r]),wpmDataLayer.viewItemListTrigger.testMode&&jQuery(t.target).find("#viewItemListTriggerOverlay").remove())}catch(e){console.error(e)}}))};let s,c=0,u=()=>{s=jQuery(".wpmProductId").map((function(e,t){return jQuery(t).parent().hasClass("type-product")||jQuery(t).parent().hasClass("product")||jQuery(t).parent().hasClass("product-item-inner")?jQuery(t).parent():jQuery(t).prev().hasClass("wc-block-grid__product")||jQuery(t).prev().hasClass("product")||jQuery(t).prev().hasClass("product-small")||jQuery(t).prev().hasClass("woocommerce-LoopProduct-link")?jQuery(this).prev():jQuery(t).closest(".product").length?jQuery(t).closest(".product"):void 0}))};e.startIntersectionObserverToWatch=()=>{try{e.urlHasParameter("vildemomode")&&(wpmDataLayer.viewItemListTrigger.testMode=!0),l=new IntersectionObserver(e.observerCallback,{threshold:wpmDataLayer.viewItemListTrigger.threshold}),u(),s.each(((e,t)=>{jQuery(t[0]).data("ioid",c++),l.observe(t[0])}))}catch(e){console.error(e)}},e.startProductsMutationObserverToWatch=()=>{try{let e=jQuery(".wpmProductId:eq(0)").parents().has(jQuery(".wpmProductId:eq(1)").parents()).first();e.length&&p.observe(e[0],{attributes:!0,childList:!0,characterData:!0})}catch(e){console.error(e)}};let p=new MutationObserver((e=>{e.forEach((e=>{let t=e.addedNodes;null!==t&&jQuery(t).each((function(){(jQuery(this).hasClass("type-product")||jQuery(this).hasClass("product-small")||jQuery(this).hasClass("wc-block-grid__product"))&&m(this)&&(jQuery(this).data("ioid",c++),l.observe(this))}))}))})),m=e=>!(!jQuery(e).find(".wpmProductId").length&&!jQuery(e).siblings(".wpmProductId").length);e.setCookie=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:"",o=arguments.length>2&&arguments[2]!==a?arguments[2]:null;if(o){let a=new Date;a.setTime(a.getTime()+24*o*60*60*1e3);let r="expires="+a.toUTCString();document.cookie=e+"="+t+";"+r+";path=/"}else document.cookie=e+"="+t+";path=/"},e.getCookie=e=>{let t=e+"=",a=decodeURIComponent(document.cookie).split(";");for(let e=0;e<a.length;e++){let o=a[e];for(;" "==o.charAt(0);)o=o.substring(1);if(0==o.indexOf(t))return o.substring(t.length,o.length)}return""},e.deleteCookie=t=>{e.setCookie(t,"",-1)},e.getWpmSessionData=()=>{if(window.sessionStorage){let e=window.sessionStorage.getItem("_wpm");return null!==e?JSON.parse(e):{}}return{}},e.setWpmSessionData=e=>{window.sessionStorage&&window.sessionStorage.setItem("_wpm",JSON.stringify(e))},e.storeOrderIdOnServer=async(t,a)=>{try{let o;o=await e.isRestEndpointAvailable()?await fetch(e.root+"pmw/v1/pixels-fired/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:t,source:a}),keepalive:!0,cache:"no-cache"}):await fetch(e.ajax_url,{method:"POST",body:new URLSearchParams({action:"pmw_purchase_pixels_fired",order_id:t,source:a}),keepalive:!0}),o.ok?console.log("wpm.storeOrderIdOnServer success"):console.error("wpm.storeOrderIdOnServer error")}catch(e){console.error(e)}},e.getProductIdByCartItemKeyUrl=e=>{let t,a=new URLSearchParams(e.search).get("remove_item");return t=0===wpmDataLayer.cartItemKeys[a].variation_id?wpmDataLayer.cartItemKeys[a].product_id:wpmDataLayer.cartItemKeys[a].variation_id,t},e.getAddToCartLinkProductIds=()=>jQuery("a").map((function(){let e=jQuery(this).attr("href");if(e&&e.includes("?add-to-cart=")){let t=e.match(/(add-to-cart=)(\d+)/);if(t)return t[2]}})).get(),e.getProductDetailsFormattedForEvent=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:1,o={id:e.toString(),dyn_r_ids:wpmDataLayer.products[e].dyn_r_ids,name:wpmDataLayer.products[e].name,list_name:wpmDataLayer.shop.list_name,brand:wpmDataLayer.products[e].brand,category:wpmDataLayer.products[e].category,variant:wpmDataLayer.products[e].variant,list_position:wpmDataLayer.products[e].position,quantity:t,price:wpmDataLayer.products[e].price,currency:wpmDataLayer.shop.currency,isVariable:wpmDataLayer.products[e].isVariable,isVariation:wpmDataLayer.products[e].isVariation,parentId:wpmDataLayer.products[e].parentId};return o.isVariation&&(o.parentId_dyn_r_ids=wpmDataLayer.products[e].parentId_dyn_r_ids),o},e.setReferrerToCookie=()=>{e.getCookie("wpmReferrer")||e.setCookie("wpmReferrer",document.referrer)},e.getReferrerFromCookie=()=>e.getCookie("wpmReferrer")?e.getCookie("wpmReferrer"):null,e.getClidFromBrowser=function(){let t,o=arguments.length>0&&arguments[0]!==a?arguments[0]:"gclid";return t={gclid:"_gcl_aw",dclid:"_gcl_dc"},e.getCookie(t[o])?e.getCookie(t[o]).match(/(GCL.[\d]*.)(.*)/)[2]:""},e.getUserAgent=()=>navigator.userAgent,e.getViewPort=()=>({width:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),height:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}),e.version=()=>{console.log(wpmDataLayer.version)},e.loadScriptAndCacheIt=e=>{let t={dataType:"script",cache:!0,url:e};return jQuery.ajax(t)},e.getOrderItemPrice=e=>(e.total+e.total_tax)/e.quantity,e.hasLoginEventFired=()=>{let t=e.getWpmSessionData();return null==t?void 0:t.loginEventFired},e.setLoginEventFired=()=>{let t=e.getWpmSessionData();t.loginEventFired=!0,e.setWpmSessionData(t)},e.wpmDataLayerExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof wpmDataLayer)return e();setTimeout(t,50)}()})),e.jQueryExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof jQuery)return e();setTimeout(t,100)}()})),e.pageLoaded=()=>new Promise((e=>{!function t(){if("complete"===document.readyState)return e();setTimeout(t,50)}()})),e.pageReady=()=>new Promise((e=>{!function t(){if("interactive"===document.readyState||"complete"===document.readyState)return e();setTimeout(t,50)}()})),e.isMiniCartActive=()=>{if(window.sessionStorage){for(const[e,t]of Object.entries(window.sessionStorage))if(e.includes("wc_fragments"))return!0;return!1}return!1},e.doesWooCommerceCartExist=()=>document.cookie.includes("woocommerce_items_in_cart"),e.urlHasParameter=e=>new URLSearchParams(window.location.search).has(e),e.hashAsync=(e,t)=>crypto.subtle.digest(e,new TextEncoder("utf-8").encode(t)).then((e=>Array.prototype.map.call(new Uint8Array(e),(e=>("00"+e.toString(16)).slice(-2))).join(""))),e.getCartValue=()=>{var e;let t=0;if(null!==(e=wpmDataLayer)&&void 0!==e&&e.cart)for(const e in wpmDataLayer.cart){let a=wpmDataLayer.cart[e];t+=a.quantity*a.price}return t}}(window.wpm=window.wpm||{},jQuery)},534:(e,t,a)=>{a(584),a(473)},207:()=>{wpm.wpmDataLayerExists().then((()=>{console.log("Pixel Manager for WooCommerce: "+(wpmDataLayer.version.pro?"Pro":"Free")+" Version "+wpmDataLayer.version.number+" loaded"),document.dispatchEvent(new Event("wpmPreLoadPixels"))})).then((()=>{wpm.pageLoaded().then((function(){document.dispatchEvent(new Event("wpmLoad"))}))})),wpm.pageReady().then((function(){wpm.wpmDataLayerExists().then((()=>{wpm.startIntersectionObserverToWatch(),wpm.startProductsMutationObserverToWatch()}))}))}},t={};function a(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,a),i.exports}a(534),wpm.jQueryExists().then((function(){a(299),a(69),a(12),a(787),a(207)}))})();
|
2 |
//# sourceMappingURL=wpm-public.p1.min.js.map
|
js/public/wpm-public.p1.min.js.br
CHANGED
Binary file
|
js/public/wpm-public.p1.min.js.gz
CHANGED
Binary file
|
js/public/wpm-public.p1.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"file":"wpm-public.p1.min.js","mappings":"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","sources":["webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/cookie_consent.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions_loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/init.js","webpack://Pixel-Manager-for-WooCommerce/webpack/bootstrap","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/main.js"],"sourcesContent":["/**\n * All event listeners\n *\n * https://developers.facebook.com/docs/meta-pixel/reference\n * */\n\n// Load pixel event\njQuery(document).on(\"wpmLoadPixels\", () => {\n\n\tif (wpmDataLayer?.pixels?.facebook?.pixel_id && !wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tif (wpm.canIFire(\"ads\", \"facebook-ads\")) wpm.loadFacebookPixel()\n\t}\n})\n\n// AddToCart event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToCart\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToCart\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// InitiateCheckout event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideBeginCheckout\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"InitiateCheckout\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// AddToWishlist event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToWishlist\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToWishlist\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// ViewContent event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideViewItem\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"ViewContent\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n\n// view search event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideSearch\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Search\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// load always event\njQuery(document).on(\"wpmLoadAlways\", () => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.setFbUserData()\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// view order received page event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideOrderReceivedPage\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Purchase\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n","/**\n * Add functions for Facebook\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet fbUserData\n\n\twpm.loadFacebookPixel = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.facebook.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(f,b,e,v,n,t,s)\n\t\t\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\t\t\t\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\t\t\t\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\t\t\t\tn.queue=[];t=b.createElement(e);t.async=!0;\n\t\t\t\tt.src=v;s=b.getElementsByTagName(e)[0];\n\t\t\t\ts.parentNode.insertBefore(t,s)}(window, document,'script',\n\t\t\t\t'https://connect.facebook.net/en_US/fbevents.js');\n\t\t\t// @formatter:on\n\n\t\t\tlet data = {}\n\n\t\t\t// Add user identifiers to data,\n\t\t\t// and only if fbp was set\n\t\t\tif (wpm.isFbpSet()) {\n\t\t\t\tdata = {...wpm.getUserIdentifiersForFb()}\n\t\t\t}\n\n\t\t\tfbq(\"init\", wpmDataLayer.pixels.facebook.pixel_id, data)\n\t\t\tfbq(\"track\", \"PageView\")\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// https://developers.facebook.com/docs/meta-pixel/advanced/advanced-matching\n\twpm.getUserIdentifiersForFb = () => {\n\n\t\tlet data = {}\n\n\t\t// external ID\n\t\tif (wpmDataLayer?.user?.id) data.external_id = wpmDataLayer.user.id\n\t\tif (wpmDataLayer?.order?.user_id) data.external_id = wpmDataLayer.order.user_id\n\n\t\t// email\n\t\tif (wpmDataLayer?.user?.facebook?.email) data.em = wpmDataLayer.user.facebook.email\n\t\tif (wpmDataLayer?.order?.billing_email_hashed) data.em = wpmDataLayer.order.billing_email_hashed\n\n\t\t// first name\n\t\tif (wpmDataLayer?.user?.facebook?.first_name) data.fn = wpmDataLayer.user.facebook.first_name\n\t\tif (wpmDataLayer?.order?.billing_first_name) data.fn = wpmDataLayer.order.billing_first_name.toLowerCase()\n\n\t\t// last name\n\t\tif (wpmDataLayer?.user?.facebook?.last_name) data.ln = wpmDataLayer.user.facebook.last_name\n\t\tif (wpmDataLayer?.order?.billing_last_name) data.ln = wpmDataLayer.order.billing_last_name.toLowerCase()\n\n\t\t// phone\n\t\tif (wpmDataLayer?.user?.facebook?.phone) data.ph = wpmDataLayer.user.facebook.phone\n\t\tif (wpmDataLayer?.order?.billing_phone) data.ph = wpmDataLayer.order.billing_phone.replace(\"+\", \"\")\n\n\t\t// city\n\t\tif (wpmDataLayer?.user?.facebook?.city) data.ct = wpmDataLayer.user.facebook.city\n\t\tif (wpmDataLayer?.order?.billing_city) data.ct = wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g, \"\")\n\n\t\t// state\n\t\tif (wpmDataLayer?.user?.facebook?.state) data.st = wpmDataLayer.user.facebook.state\n\t\tif (wpmDataLayer?.order?.billing_state) data.st = wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/, \"\")\n\n\t\t// postcode\n\t\tif (wpmDataLayer?.user?.facebook?.postcode) data.zp = wpmDataLayer.user.facebook.postcode\n\t\tif (wpmDataLayer?.order?.billing_postcode) data.zp = wpmDataLayer.order.billing_postcode\n\n\t\t// country\n\t\tif (wpmDataLayer?.user?.facebook?.country) data.country = wpmDataLayer.user.facebook.country\n\t\tif (wpmDataLayer?.order?.billing_country) data.country = wpmDataLayer.order.billing_country.toLowerCase()\n\n\t\treturn data\n\t}\n\n\twpm.getFbRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\twpm.getFbUserData = () => {\n\n\t\t/**\n\t\t * We need to cache the FB user data for InitiateCheckout\n\t\t * where getting the user data from the browser is too slow\n\t\t * using wpm.getCookie().\n\t\t *\n\t\t * And we need the object merge because the ViewContent hit happens too fast\n\t\t * after adding a variation to the cart because the function to cache\n\t\t * the user data is too slow.\n\t\t *\n\t\t * But we can get the user_data using wpm.getCookie()\n\t\t * because we don't move away from the page and can wait for the browser\n\t\t * to get it.\n\t\t *\n\t\t * Also, the merge ensures that new data will be added to fbUserData if new\n\t\t * data is being added later, like user ID, or fbc.\n\t\t */\n\n\t\tfbUserData = {...fbUserData, ...wpm.getFbUserDataFromBrowser()}\n\n\t\treturn fbUserData\n\t}\n\n\twpm.setFbUserData = () => {\n\t\tfbUserData = wpm.getFbUserDataFromBrowser()\n\t}\n\n\twpm.getFbUserDataFromBrowser = () => {\n\n\t\tlet\n\t\t\tdata = {}\n\n\t\tif (wpm.getCookie(\"_fbp\") && wpm.isValidFbp(wpm.getCookie(\"_fbp\"))) {\n\t\t\tdata.fbp = wpm.getCookie(\"_fbp\")\n\t\t}\n\n\t\tif (wpm.getCookie(\"_fbc\") && wpm.isValidFbc(wpm.getCookie(\"_fbc\"))) {\n\t\t\tdata.fbc = wpm.getCookie(\"_fbc\")\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.external_id = wpmDataLayer.user.id\n\t\t}\n\n\t\tif (navigator.userAgent) {\n\t\t\tdata.client_user_agent = navigator.userAgent\n\t\t}\n\n\t\treturn data\n\t}\n\n\twpm.isFbpSet = () => {\n\t\treturn !!wpm.getCookie(\"_fbp\")\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbp = fbp => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.\\d{8,20}$/)\n\n\t\treturn re.test(fbp)\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbc = fbc => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.[\\da-zA-Z_-]{8,}/)\n\n\t\treturn re.test(fbc)\n\t}\n\n\t// wpm.fbViewContent = (product = null) => {\n\t//\n\t// \ttry {\n\t// \t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\t//\n\t// \t\tlet eventId = wpm.getFbRandomEventId()\n\t//\n\t// \t\tlet data = {}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tdata.content_type = \"product\"\n\t// \t\t\tdata.content_name = product.name\n\t// \t\t\t// data.content_category = product.category\n\t// \t\t\tdata.content_ids = product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]\n\t// \t\t\tdata.currency = wpmDataLayer.shop.currency\n\t// \t\t\tdata.value = product.price\n\t// \t\t}\n\t//\n\t// \t\tfbq(\"track\", \"ViewContent\", data, {\n\t// \t\t\teventID: eventId,\n\t// \t\t})\n\t//\n\t// \t\tlet capiData = {\n\t// \t\t\tevent_name : \"ViewContent\",\n\t// \t\t\tevent_id : eventId,\n\t// \t\t\tuser_data : wpm.getFbUserData(),\n\t// \t\t\tevent_source_url: window.location.href,\n\t// \t\t}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\t// \t\t\tcapiData.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t// \t\t}\n\t//\n\t// \t\tjQuery(document).trigger(\"wpmFbCapiEvent\", capiData)\n\t// \t} catch (e) {\n\t// \t\tconsole.error(e)\n\t// \t}\n\t// }\n\n\twpm.fbGetProductDataForCapiEvent = product => {\n\t\treturn {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : [\n\t\t\t\tproduct.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}\n\t}\n\n\twpm.facebookContentIds = () => {\n\t\tlet prodIds = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn prodIds\n\t}\n\n\twpm.trackCustomFacebookEvent = (eventName, customData = {}) => {\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getFbRandomEventId()\n\n\t\t\tfbq(\"trackCustom\", eventName, customData, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : eventName,\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t\tcustom_data : customData,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fbGetContentIdsFromCart = () => {\n\n\t\tlet content_ids = []\n\n\t\tfor(const key in wpmDataLayer.cart){\n\t\t\tcontent_ids.push(wpmDataLayer.products[key].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])\n\t\t}\n\t\t\n\t\treturn content_ids\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Facebook loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n\n","/**\n * Load Google Ads event listeners\n * */\n\n// view_item_list event\njQuery(document).on(\"wpmViewItemList\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tif (\n\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\tproduct.isVariable &&\n\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t) return\n\n\t\t// try to prevent that WC sends cached hits to Google\n\t\tif (!product) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item_list\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : product.quantity * product.price,\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : product.quantity,\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_cart\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tdata.value = (product.quantity ? product.quantity : 1) * product.price\n\t\t\tdata.items = [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : (product.quantity ? product.quantity : 1),\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}]\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tlet products = []\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\n\t\t\tif (\n\t\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\t\tproduct.isVariable &&\n\t\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t\t) return\n\n\t\t\tproducts.push({\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t})\n\t\t}\n\n\t\t// console.log(products);\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t// value : 1 * product.price,\n\t\t\titems: products,\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_search_results\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\n// TODO distinguish with or without cart data active\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\titems : wpm.getGoogleAdsDynamicRemarketingOrderItems(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", data)\n\t\t})\n\n\t\t// console.log(wpm.getGoogleAdsDynamicRemarketingOrderItems())\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// user log in event\njQuery(document).on(\"wpmLogin\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"login\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// conversion event\n// new_customer parameter: https://support.google.com/google-ads/answer/9917012\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel())) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data_basic = {}\n\t\tlet data_with_cart = {}\n\n\t\tdata_basic = {\n\t\t\tsend_to : wpm.getGoogleAdsConversionIdentifiersWithLabel(),\n\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tnew_customer : wpmDataLayer.order.new_customer,\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.clv_order_value_filtered) {\n\t\t\tdata_basic.customer_lifetime_value = wpmDataLayer.order.clv_order_value_filtered\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata_basic.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.aw_merchant_id) {\n\t\t\tdata_with_cart = {\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\taw_merchant_id : wpmDataLayer.order.aw_merchant_id,\n\t\t\t\taw_feed_country : wpmDataLayer.order.aw_feed_country,\n\t\t\t\taw_feed_language: wpmDataLayer.order.aw_feed_language,\n\t\t\t\titems : wpm.getGoogleAdsRegularOrderItems(),\n\t\t\t}\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"conversion\", {...data_basic, ...data_with_cart})\n\t\t})\n\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load Google Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\n\twpm.getGoogleAdsConversionIdentifiersWithLabel = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds) {\n\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\tif (item) {\n\t\t\t\t\tconversionIdentifiers.push(key + \"/\" + item)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsConversionIdentifiers = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\tconversionIdentifiers.push(key)\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsRegularOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.getGoogleAdsDynamicRemarketingOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google Ads\n */\n\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Google Universal Analytics (GA3) event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.universal.property_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGAUAOrderItems(),\n\t\t\t})\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Add functions for Google Analytics Universal\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGAUAOrderItems = function () {\n\n\t\t// \"id\" : \"34\",\n\t\t// \"name\" : \"Hoodie\",\n\t\t// \"brand\" : \"\",\n\t\t// \"category\" : \"Hoodies\",\n\t\t// \"list_position\": 1,\n\t\t// \"price\" : 45,\n\t\t// \"quantity\" : 1,\n\t\t// \"variant\" : \"Color: blue | Logo: yes\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tname : item.name,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcategory: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItem = wpm.ga3AddListNameToProduct(orderItem)\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.ga3AddListNameToProduct = function (item_data, productPosition = null) {\n\n\t\t// if (wpm.ga3CanProductListBeSet(item_data.id)) {\n\t\t// \titem_data.listname = wpmDataLayer.shop.list_name\n\t\t//\n\t\t// \tif (productPosition) {\n\t\t// \t\titem_data.list_position = productPosition\n\t\t// \t}\n\t\t// }\n\n\t\titem_data.list_name = wpmDataLayer.shop.list_name\n\n\t\tif (productPosition) {\n\t\t\titem_data.list_position = productPosition\n\t\t}\n\n\t\treturn item_data\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Google Universal Analytics (GA3) loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load GA4 event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.ga4.measurement_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGA4OrderItems(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load GA4 functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGA4OrderItems = function () {\n\n\t\t// \"item_id\" : \"34\",\n\t\t// \"item_name\" : \"Hoodie\",\n\t\t// \"quantity\" : 1,\n\t\t// \"item_brand\" : \"\",\n\t\t// \"item_variant\" : \"Color: blue | Logo: yes\",\n\t\t// \"price\" : 45,\n\t\t// \"currency\" : \"CHF\",\n\t\t// \"item_category\": \"Hoodies\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\titem_name : item.name,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\titem_category: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * GA4 loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Google Analytics loader\n */\n\nrequire(\"./ga3/loader\")\nrequire(\"./ga4/loader\")\n","/**\n * Load Google base event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") {\n\t\tif (wpm.canGoogleLoad()) {\n\t\t\twpm.loadGoogle()\n\t\t} else {\n\t\t\twpm.logPreventedPixelLoading(\"google\", \"analytics / ads\")\n\t\t}\n\t}\n})\n","/**\n * Load Google base functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.googleConfigConditionsMet = function (type) {\n\n\t\t// always returns true if Google Consent Mode is active\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (wpm.getConsentValues().mode === \"category\") {\n\t\t\treturn wpm.getConsentValues().categories[type] === true\n\t\t} else if (wpm.getConsentValues().mode === \"pixel\") {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-\" + type)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings = function (google_consent_settings) {\n\n\t\tif (wpm.getConsentValues().mode === \"category\") {\n\n\t\t\tif (wpm.getConsentValues().categories.analytics) google_consent_settings.analytics_storage = \"granted\"\n\t\t\tif (wpm.getConsentValues().categories.ads) google_consent_settings.ad_storage = \"granted\"\n\t\t} else if ((wpm.getConsentValues().mode === \"pixel\")) {\n\n\t\t\tgoogle_consent_settings.analytics_storage = wpm.getConsentValues().pixels.includes(\"google-analytics\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_storage = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t}\n\n\t\treturn google_consent_settings\n\t}\n\n\twpm.updateGoogleConsentMode = function (analytics = true, ads = true) {\n\n\t\ttry {\n\t\t\tif (\n\t\t\t\t!window.gtag ||\n\t\t\t\t!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent\n\t\t\t) return\n\n\t\t\tgtag(\"consent\", \"update\", {\n\t\t\t\tanalytics_storage: analytics ? \"granted\" : \"denied\",\n\t\t\t\tad_storage : ads ? \"granted\" : \"denied\",\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAds = function () {\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.ads.state = \"loading\"\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.enhanced_conversions?.active) {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key, {\"allow_enhanced_conversions\": true})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_label && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_number) {\n\t\t\t\tgtag(\"config\", Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0] + \"/\" + wpmDataLayer.pixels.google.ads.phone_conversion_label, {\n\t\t\t\t\tphone_conversion_number: wpmDataLayer.pixels.google.ads.phone_conversion_number,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// ! enhanced_conversion_data needs to set on the window object\n\t\t\t// https://support.google.com/google-ads/answer/9888145#zippy=%2Cvalidate-your-implementation-using-chrome-developer-tools\n\t\t\tif (wpmDataLayer?.shop?.page_type && \"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer?.order?.google?.ads?.enhanced_conversion_data) {\n\t\t\t\t// window.enhanced_conversion_data = wpmDataLayer.order.google.ads.enhanced_conversion_data\n\n\t\t\t\tgtag(\"set\", \"user_data\", wpmDataLayer.order.google.ads.enhanced_conversion_data)\n\t\t\t}\n\n\t\t\twpmDataLayer.pixels.google.ads.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsUA = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"loading\"\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.universal.property_id, wpmDataLayer.pixels.google.analytics.universal.parameters)\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsGA4 = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"loading\"\n\n\t\t\tlet parameters = wpmDataLayer.pixels.google.analytics.ga4.parameters\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.debug_mode) {\n\t\t\t\tparameters.debug_mode = true\n\t\t\t}\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.ga4.measurement_id, parameters)\n\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.isGoogleActive = function () {\n\n\t\tif (\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.universal?.property_id ||\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id ||\n\t\t\t!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)\n\t\t) {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getGoogleGtagId = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.universal.property_id\n\t\t} else if (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.ga4.measurement_id\n\t\t} else {\n\t\t\treturn Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]\n\t\t}\n\t}\n\n\n\twpm.loadGoogle = function () {\n\n\t\tif (wpm.isGoogleActive()) {\n\n\t\t\twpmDataLayer.pixels.google.state = \"loading\"\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googletagmanager.com/gtag/js?id=\" + wpm.getGoogleGtagId())\n\t\t\t\t.then(function (script, textStatus) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\t// Initiate Google dataLayer and gtag\n\t\t\t\t\t\twindow.dataLayer = window.dataLayer || []\n\t\t\t\t\t\twindow.gtag = function gtag() {\n\t\t\t\t\t\t\tdataLayer.push(arguments)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Consent Mode\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\n\t\t\t\t\t\t\tlet google_consent_settings = {\n\t\t\t\t\t\t\t\t\"ad_storage\" : wpmDataLayer.pixels.google.consent_mode.ad_storage,\n\t\t\t\t\t\t\t\t\"analytics_storage\": wpmDataLayer.pixels.google.consent_mode.analytics_storage,\n\t\t\t\t\t\t\t\t\"wait_for_update\" : wpmDataLayer.pixels.google.consent_mode.wait_for_update,\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.region) {\n\t\t\t\t\t\t\t\tgoogle_consent_settings.region = wpmDataLayer.pixels.google.consent_mode.region\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgoogle_consent_settings = wpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings(google_consent_settings)\n\n\t\t\t\t\t\t\tgtag(\"consent\", \"default\", google_consent_settings)\n\t\t\t\t\t\t\tgtag(\"set\", \"ads_data_redaction\", wpmDataLayer.pixels.google.consent_mode.ads_data_redaction)\n\t\t\t\t\t\t\tgtag(\"set\", \"url_passthrough\", wpmDataLayer.pixels.google.consent_mode.url_passthrough)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Linker\n\t\t\t\t\t\t// https://developers.google.com/gtagjs/devguide/linker\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.linker?.settings) {\n\t\t\t\t\t\t\tgtag(\"set\", \"linker\", wpmDataLayer.pixels.google.linker.settings)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgtag(\"js\", new Date())\n\n\t\t\t\t\t\t// Google Ads loader\n\t\t\t\t\t\tif (!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) { // Only run if the pixel has set up\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"ads\")) { \t\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAds()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-ads\", \"ads\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Universal Analytics loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) { \t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsUA()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-universal-analytics\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// GA4 loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) { \t\t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsGA4()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"ga4\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twpmDataLayer.pixels.google.state = \"ready\"\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\twpm.canGoogleLoad = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (\"category\" === wpm.getConsentValues().mode) {\n\t\t\treturn !!(wpm.getConsentValues().categories[\"ads\"] || wpm.getConsentValues().categories[\"analytics\"])\n\t\t} else if (\"pixel\" === wpm.getConsentValues().mode) {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-ads\") || wpm.getConsentValues().pixels.includes(\"google-analytics\")\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid load condition for Google mode in wpmConsentValues\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.gtagLoaded = function () {\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") reject()\n\n\t\t\tlet startTime = 0\n\t\t\tlet timeout = 5000\n\t\t\tlet frequency = 200;\n\n\t\t\t(function wait() {\n\t\t\t\tif (wpmDataLayer?.pixels?.google?.state === \"ready\") return resolve()\n\t\t\t\tif (startTime >= timeout) return reject()\n\t\t\t\tstartTime += frequency\n\t\t\t\tsetTimeout(wait, frequency)\n\t\t\t})()\n\t\t})\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google base\n */\n\n// Load base\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load Google\n */\n\n// Load base\nrequire(\"./base/loader\")\n\n//Load additional Google libraries\nrequire(\"./ads/loader\")\nrequire(\"./analytics/loader\")\nrequire(\"./optimize/loader\")\n\n\n","/**\n * Load Google Optimize event listeners\n */\n\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.google?.optimize?.container_id && !wpmDataLayer?.pixels?.google?.optimize?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"google-optimize\")) wpm.load_google_optimize_pixel()\n\t}\n})\n","/**\n * Load Google Optimize functions\n */\n\n\n(function (wpm, $, undefined) {\n\n\twpm.load_google_optimize_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.optimize.loaded = true\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googleoptimize.com/optimize.js?id=\" + wpmDataLayer.pixels.google.optimize.container_id)\n\t\t\t// .then(function (script, textStatus) {\n\t\t\t// \t\tconsole.log('Google Optimize loaded')\n\t\t\t// });\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Load Google Optimize\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Hotjar event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.hotjar?.site_id && !wpmDataLayer?.pixels?.hotjar?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"hotjar\") && !wpmDataLayer?.pixels?.hotjar?.loaded) wpm.load_hotjar_pixel()\n\t}\n})\n","/**\n * Load Hotjar functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.load_hotjar_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.hotjar.loaded = true;\n\n\t\t\t// @formatter:off\n\t\t\t(function(h,o,t,j,a,r){\n\t\t\t\th.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n\t\t\t\th._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6};\n\t\t\t\ta=o.getElementsByTagName('head')[0];\n\t\t\t\tr=o.createElement('script');r.async=1;\n\t\t\t\tr.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n\t\t\t\ta.appendChild(r);\n\t\t\t})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\n\t\t\t// @formatter:on\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Hotjar loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Consent Mode functions\n */\n\n(function (wpm, $, undefined) {\n\n\t/**\n\t * Handle Cookie Management Platforms\n\t */\n\n\tlet getComplianzCookies = () => {\n\n\t\tlet cmplz_statistics = wpm.getCookie(\"cmplz_statistics\")\n\t\tlet cmplz_marketing = wpm.getCookie(\"cmplz_marketing\")\n\t\tlet cmplz_consent_status = wpm.getCookie(\"cmplz_consent_status\") || wpm.getCookie(\"cmplz_banner-status\")\n\n\t\tif (cmplz_consent_status) {\n\t\t\treturn {\n\t\t\t\tanalytics : cmplz_statistics === \"allow\",\n\t\t\t\tads : cmplz_marketing === \"allow\",\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tlet getCookieLawInfoCookies = () => {\n\n\t\tlet analyticsCookie = wpm.getCookie(\"cookielawinfo-checkbox-analytics\") || wpm.getCookie(\"cookielawinfo-checkbox-analytiques\")\n\t\tlet adsCookie = wpm.getCookie(\"cookielawinfo-checkbox-advertisement\") || wpm.getCookie(\"cookielawinfo-checkbox-performance\") || wpm.getCookie(\"cookielawinfo-checkbox-publicite\")\n\t\tlet visitorHasChosen = wpm.getCookie(\"CookieLawInfoConsent\")\n\n\t\tif (analyticsCookie || adsCookie) {\n\n\t\t\treturn {\n\t\t\t\tanalytics : analyticsCookie === \"yes\",\n\t\t\t\tads : adsCookie === \"yes\",\n\t\t\t\tvisitorHasChosen: !!visitorHasChosen,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Initialize and set default values\n\t */\n\n\tlet\n\t\twpmConsentValues = {}\n\twpmConsentValues.categories = {}\n\twpmConsentValues.pixels = []\n\twpmConsentValues.mode = \"category\"\n\twpmConsentValues.visitorHasChosen = false\n\n\t// Return current consent values\n\twpm.getConsentValues = () => wpmConsentValues\n\n\twpm.setConsentValueCategories = (analytics = false, ads = false) => {\n\t\twpmConsentValues.categories.analytics = analytics\n\t\twpmConsentValues.categories.ads = ads\n\t}\n\n\t// Update the PMW consent values with values coming from a CMP\n\twpm.updateConsentCookieValues = (analytics = null, ads = null, explicitConsent = false) => {\n\n\t\t// ad_storage\n\t\t// analytics_storage\n\t\t// functionality_storage\n\t\t// personalization_storage\n\t\t// security_storage\n\n\t\tlet cookie\n\n\t\t/**\n\t\t * Setup defaults\n\t\t */\n\n\t\t// consentValues.categories.analytics = true\n\t\t// consentValues.categories.ads = true\n\n\t\twpmConsentValues.categories.analytics = !explicitConsent\n\t\twpmConsentValues.categories.ads = !explicitConsent\n\n\n\t\tif (analytics || ads) {\n\n\t\t\tif (analytics) {\n\t\t\t\twpmConsentValues.categories.analytics = !!analytics\n\t\t\t}\n\n\t\t\tif (ads) {\n\t\t\t\twpmConsentValues.categories.ads = !!ads\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * PMW Cookie Consent\n\t\t *\n\t\t * Must be before every other CMP for the case that one of the included CMPs\n\t\t * decides to implement the PMW cookie consent API. In that case\n\t\t * the PMW consent cookie must take precedence.\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"pmw_cookie_consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookiebot\n\t\t * https://wordpress.org/plugins/cookiebot/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieConsent\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.indexOf(\"statistics:true\") >= 0\n\t\t\twpmConsentValues.categories.ads = cookie.indexOf(\"marketing:true\") >= 0\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Script\n\t\t * https://wordpress.org/plugins/cookie-script-com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieScriptConsent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\tif (cookie.action === \"reject\") {\n\t\t\t\twpmConsentValues.categories.analytics = false\n\t\t\t\twpmConsentValues.categories.ads = false\n\t\t\t} else if (cookie.categories.length === 2) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t} else {\n\t\t\t\twpmConsentValues.categories.analytics = cookie.categories.indexOf(\"performance\") >= 0\n\t\t\t\twpmConsentValues.categories.ads = cookie.categories.indexOf(\"targeting\") >= 0\n\t\t\t}\n\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Borlabs Cookie\n\t\t * https://borlabs.io/borlabs-cookie/\n\t\t */\n\t\tif (cookie = wpm.getCookie(\"borlabs-cookie\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie?.consents?.statistics\n\t\t\twpmConsentValues.categories.ads = !!cookie?.consents?.marketing\n\t\t\twpmConsentValues.visitorHasChosen = true\n\t\t\twpmConsentValues.pixels = [...cookie?.consents?.statistics || [], ...cookie?.consents?.marketing || []]\n\t\t\twpmConsentValues.mode = \"pixel\"\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Complianz Cookie\n\t\t * https://wordpress.org/plugins/complianz-gdpr/\n\t\t */\n\n\t\tif (cookie = getComplianzCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (free version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"cookie_notice_accepted\")) {\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (pro version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"hu-consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie.categories[\"3\"]\n\t\t\twpmConsentValues.categories.ads = !!cookie.categories[\"4\"]\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * CookieYes, GDPR Cookie Consent (Cookie Law Info)\n\t\t * https://wordpress.org/plugins/cookie-law-info/\n\t\t */\n\n\t\tif (cookie = getCookieLawInfoCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen === true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * GDPR Cookie Compliance Plugin by Moove Agency\n\t\t * https://wordpress.org/plugins/gdpr-cookie-compliance/\n\t\t *\n\t\t * TODO write documentation on how to set up the plugin in order for this to work properly\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"moove_gdpr_popup\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.thirdparty === \"1\"\n\t\t\twpmConsentValues.categories.ads = cookie.advanced === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * WP AutoTerms\n\t\t * https://wordpress.org/plugins/auto-terms-of-service-and-privacy-policy/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"wpautoterms-cookies-notice\")) {\n\n\t\t\tif (cookie !== \"1\") return\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Usercentrics\n\t\t *\n\t\t * https://usercentrics.com/\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api?id=getservicesbaseinfo\n\t\t */\n\n\t\tif (window.localStorage && window.localStorage.getItem(\"uc_settings\")) {\n\n\t\t\tconsole.log(\"Usercentrics settings detected\")\n\n\t\t\tif (typeof UC_UI === \"undefined\") {\n\n\t\t\t\t// register event to block unblock after UC_UI library is loaded\n\t\t\t\twindow.addEventListener(\"UC_UI_INITIALIZED\", function (event) {\n\t\t\t\t\twpm.ucUiProcessConsent()\n\t\t\t\t})\n\n\t\t\t\t// Don't continue because in here the UC_UI library is not loaded yet\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\twpm.ucUiProcessConsent()\n\t\t}\n\n\t\t/**\n\t\t * OneTrust\n\t\t *\n\t\t * https://www.onetrust.com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"OptanonConsent\")) {\n\n\t\t\t// console.log(\"OneTrust settings detected\")\n\n\t\t\tlet params = new URLSearchParams(cookie)\n\t\t\tlet groups = params.get(\"groups\").split(\",\")\n\n\t\t\t// Groups is an array like this ['1:1', '2:0', '3:1', '4:1']. Make it an object with key value pairs\n\t\t\tlet groupsObject = {}\n\t\t\tgroups.forEach((group) => {\n\n\t\t\t\tlet groupArray = group.split(\":\")\n\t\t\t\tgroupsObject[groupArray[0]] = groupArray[1]\n\t\t\t})\n\n\t\t\t// group mapping\n\t\t\t// 1 = necessary\n\t\t\t// 2 = analytics\n\t\t\t// 3 = functional\n\t\t\t// 4 = ads\n\n\t\t\twpmConsentValues.categories.analytics = groubsObject[\"2\"] === \"1\"\n\t\t\twpmConsentValues.categories.ads = groupsObject[\"4\"] === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Only run after having made sure that the UC_UI library is loaded\n\twpm.ucUiProcessConsent = function () {\n\n\t\tif (typeof UC_UI === \"undefined\") return\n\n\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tconst ucStatisticsSlug = UC_UI.getSettingsLabels().categories.filter(data => data.label === \"Statistics\")[0].slug\n\n\t\tpmw.consentAdjustSelectively(\n\t\t\t{\n\t\t\t\tanalytics: !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === ucStatisticsSlug && data.consent.status === false).length > 0,\n\t\t\t\tads : !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === \"marketing\" && data.consent.status === false).length > 0,\n\t\t\t},\n\t\t)\n\t}\n\n\twpm.updateConsentCookieValues()\n\n\twpm.setConsentDefaultValuesToExplicit = () => {\n\t\twpmConsentValues.categories = {\n\t\t\tanalytics: false,\n\t\t\tads : false,\n\t\t}\n\t}\n\n\twpm.canIFire = (category, pixelName) => {\n\n\t\tlet canIFireMode\n\n\t\tif (\"category\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = !!wpmConsentValues.categories[category]\n\t\t} else if (\"pixel\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(pixelName)\n\n\t\t\t// If a user sets \"bing-ads\" in Borlabs Cookie instead of\n\t\t\t// \"microsoft-ads\" in the Borlabs settings, we need to check\n\t\t\t// for that too.\n\t\t\tif (false === canIFireMode && \"microsoft-ads\" === pixelName) {\n\t\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(\"bing-ads\")\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid consent mode in wpmConsentValues\")\n\t\t\tcanIFireMode = false\n\t\t}\n\n\t\tif (canIFireMode) {\n\t\t\treturn true\n\t\t} else {\n\t\t\tif (true || wpm.urlHasParameter(\"debugConsentMode\")) {\n\t\t\t\twpm.logPreventedPixelLoading(pixelName, category)\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.logPreventedPixelLoading = (pixelName, category) => {\n\n\t\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent) {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)\")\n\t\t} else {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)\")\n\t\t}\n\t}\n\n\t/**\n\t * Runs through each script in <head> and blocks / unblocks it according to the plugin settings\n\t * and user consent.\n\t */\n\n\t// https://stackoverflow.com/q/65453565/4688612\n\twpm.scriptTagObserver = new MutationObserver((mutations) => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif ($(node).data(\"wpm-cookie-category\")) {\n\n\t\t\t\t\t\t// If the pixel category has been approved > unblock\n\t\t\t\t\t\t// If the pixel belongs to more than one category, then unblock if one of the categories has been approved\n\t\t\t\t\t\t// If no category has been approved, but the Google Consent Mode is active, then only unblock the Google scripts\n\n\t\t\t\t\t\tif (wpm.shouldScriptBeActive(node)) {\n\t\t\t\t\t\t\twpm.unblockScript(node)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.blockScript(node)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\twpm.scriptTagObserver.observe(document.head, {childList: true, subtree: true})\n\t// jQuery(document).on(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\tdocument.addEventListener(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\n\twpm.shouldScriptBeActive = node => {\n\n\t\tif (\n\t\t\twpmDataLayer.shop.cookie_consent_mgmt.explicit_consent ||\n\t\t\twpmConsentValues.visitorHasChosen\n\t\t) {\n\n\t\t\tif (wpmConsentValues.mode === \"category\" && $(node).data(\"wpm-cookie-category\").split(\",\").some(element => wpmConsentValues.categories[element])) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && wpmConsentValues.pixels.includes($(node).data(\"wpm-pixel-name\"))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && $(node).data(\"wpm-pixel-name\") === \"google\" && [\"google-analytics\", \"google-ads\"].some(element => wpmConsentValues.pixels.includes(element))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmDataLayer?.pixels?.google?.consent_mode?.active && $(node).data(\"wpm-pixel-name\") === \"google\") {\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\n\twpm.unblockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tlet wpmSrc = $(scriptNode).data(\"wpm-src\")\n\t\tif (wpmSrc) $(scriptNode).attr(\"src\", wpmSrc)\n\n\t\tscriptNode.type = \"text/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.blockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tif ($(scriptNode).attr(\"src\")) $(scriptNode).removeAttr(\"src\")\n\t\tscriptNode.type = \"blocked/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\t}\n\n\twpm.unblockAllScripts = (analytics = true, ads = true) => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\twpm.setConsentValueCategories(analytics, ads)\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.unblockSelectedPixels = () => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.explicitConsentStateAlreadySet = () => {\n\n\t\tif (wpmConsentValues.explicitConsentStateAlreadySet) {\n\t\t\treturn true\n\t\t} else {\n\t\t\twpmConsentValues.explicitConsentStateAlreadySet = true\n\t\t}\n\t}\n\n\n\t/**\n\t * Block or unblock scripts for each CMP immediately after cookie consent has been updated\n\t * by the visitor.\n\t */\n\n\t/**\n\t * Borlabs Cookie\n\t * If visitor accepts cookies in Borlabs Cookie unblock the scripts\n\t */\n\tdocument.addEventListener(\"borlabs-cookie-consent-saved\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\tif (wpmConsentValues.mode === \"pixel\") {\n\n\t\t\twpm.unblockSelectedPixels()\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.pixels.includes(\"google-analytics\"), wpmConsentValues.pixels.includes(\"google-ads\"))\n\t\t} else {\n\n\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t}\n\t})\n\n\t/**\n\t * Cookiebot\n\t * \tIf visitor accepts cookies in Cookiebot unblock the scripts\n\t * \thttps://www.cookiebot.com/en/developer/\n\t */\n\tdocument.addEventListener(\"CookiebotOnAccept\", () => {\n\t\tif (Cookiebot.consent.statistics) wpmConsentValues.categories.analytics = true\n\t\tif (Cookiebot.consent.marketing) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\n\t}, false)\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/article/20-custom-events\n\t */\n\t// jQuery(document).on(\"CookieScriptAccept\", e => {\n\tdocument.addEventListener(\"CookieScriptAccept\", e => {\n\n\t\tif (e.detail.categories.includes(\"performance\")) wpmConsentValues.categories.analytics = true\n\t\tif (e.detail.categories.includes(\"targeting\")) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/\n\t */\n\t// jQuery(document).on(\"CookieScriptAcceptAll\", () => {\n\tdocument.addEventListener(\"CookieScriptAcceptAll\", () => {\n\n\t\twpm.setConsentValueCategories(true, true)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t})\n\n\t/**\n\t * Complianz Cookie\n\t *\n\t * If visitor accepts cookies in Complianz unblock the scripts\n\t */\n\n\twpm.cmplzStatusChange = (cmplzConsentData) => {\n\n\t\tif (cmplzConsentData.detail.categories.includes(\"statistics\")) wpm.updateConsentCookieValues(true, null)\n\t\tif (cmplzConsentData.detail.categories.includes(\"marketing\")) wpm.updateConsentCookieValues(null, true)\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t}\n\n\t// jQuery(document).on(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\t// jQuery(document).on(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\n\t// Cookie Compliance by hu-manity.co (free and pro)\n\t// If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (free version)\n\t// https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t// jQuery(document).on(\"setCookieNotice\", () => {\n\tdocument.addEventListener(\"setCookieNotice\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Compliance by hu-manity.co (free and pro)\n\t * If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (pro version)\n\t * https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t * Because Cookie Notice has no documented API or event that is being triggered on consent save or update\n\t * we have to solve this by using a mutation observer.\n\t *\n\t * @type {MutationObserver}\n\t */\n\n\twpm.huObserver = new MutationObserver(mutations => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif (node.id === \"hu\") {\n\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\").on(\"click\", function () {\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\") in pure JavaScript\n\t\t\t\t\t\tdocument.querySelector(\".hu-cookies-save\").addEventListener(\"click\", () => {\n\t\t\t\t\t\t\twpm.updateConsentCookieValues()\n\t\t\t\t\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\tif (window.hu) {\n\t\twpm.huObserver.observe(document.documentElement || document.body, {childList: true, subtree: true})\n\t}\n\n\t/**\n\t * Usercentrics Event Listeners\n\t *\n\t * https://docs.usercentrics.com/#/v2-events?id=usage-as-window-event\n\t */\n\n\twindow.addEventListener(\"ucEvent\", function (e) {\n\t\tif (e.detail && e.detail.event == \"consent_status\") {\n\t\t\t// check for consent status of service \"Google Ads Remarketing\"\n\t\t\tif (e.detail[\"Google Ads Remarketing\"] === true) {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has consent\")\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has no consent\")\n\t\t\t}\n\t\t}\n\t})\n\n\t// https://docs.usercentrics.com/#/v2-events?id=uc_ui_cmp_event\n\twindow.addEventListener(\"UC_UI_CMP_EVENT\", function (event) {\n\n\t\tif (event.detail.type === \"ACCEPT_ALL\") {\n\t\t\t// console.log('accept all');\n\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tif (event.detail.type === \"DENY_ALL\") {\n\t\t\tpmw.consentRevokeAll()\n\t\t}\n\n\t\tif (event.detail.type === \"SAVE\") {\n\t\t\tconsole.log(\"event.detail\", event.detail)\n\t\t}\n\t})\n\n\n\t/**\n\t * OneTrust Event Listeners\n\t *\n\t * CookiePro by OneTrust doesn't emit any events when the user accepts or declines cookies.\n\t */\n\n\t// There are two accept all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\"#accept-recommended-btn-handler, #onetrust-accept-btn-handler\").on(\"click\", function () {\n\n\t\t// If OneTrust is not loaded, return\n\t\tif (typeof window.OneTrust === \"undefined\") return\n\n\t\tpmw.consentAcceptAll()\n\t})\n\n\t// There are two revoke all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\".ot-pc-refuse-all-handler, #onetrust-reject-all-handler\").on(\"click\", function () {\n\t\tpmw.consentRevokeAll()\n\t})\n\n\t// There is one save button that saves mixed consent. It is in the settings window. We reload the page after saving to reflect the changes.\n\tjQuery(\".save-preference-btn-handler.onetrust-close-btn-handler\").on(\"click\", function () {\n\t\tlocation.reload()\n\n\t\t// OneTrust.OnConsentChanged(function (e) {\n\t\t// \tpmw.consentAdjustSelectively({\n\t\t// \t\tanalytics: e.detail.includes(\"2\"),\n\t\t// \t\tads : e.detail.includes(\"4\"),\n\t\t// \t})\n\t\t// })\n\t})\n\n\n}(window.wpm = window.wpm || {}, jQuery));\n\n\n(function (pmw, $, undefined) {\n\n\t/**\n\t * Pixel Manager Cookie Consent API\n\t */\n\n\t// Accept consent for all cookies\n\tpmw.consentAcceptAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(true, true, settings.duration)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t}\n\n\t// Accept consent selectively\n\tpmw.consentAdjustSelectively = (settings) => {\n\n\t\t// If settings.analytics is set, keep it, otherwise set it to wpm.getConsentValues().categories.analytics\n\t\tsettings.analytics = settings.analytics !== undefined ? settings.analytics : wpm.getConsentValues().categories.analytics\n\t\tsettings.ads = settings.ads !== undefined ? settings.ads : wpm.getConsentValues().categories.ads\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(settings.analytics, settings.ads, settings.duration)\n\t\twpm.unblockAllScripts(settings.analytics, settings.ads)\n\t\twpm.updateGoogleConsentMode(settings.analytics, settings.ads)\n\t}\n\n\t// Remove consent for all cookies\n\tpmw.consentRevokeAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\twpm.setConsentValueCategories(false, false)\n\t\tpmw.consentSetCookie(false, false, settings.duration)\n\t\twpm.updateGoogleConsentMode(false, false)\n\t}\n\n\t// Set a cookie called pmw_cookie_consent with the value of pmw_cookie_consent\n\t// and set the default expiration date to 1 year from now\n\tpmw.consentSetCookie = (analytics, ads, duration = 365) => {\n\t\twpm.setCookie(\"pmw_cookie_consent\", JSON.stringify({analytics, ads}), duration)\n\t}\n\n\t// Trigger an event once the PMW consent management has been loaded\n\tjQuery(document).trigger(\"pmw_cookie_consent_management_loaded\")\n\n}(window.pmw = window.pmw || {}, jQuery))\n","/**\n * Register event listeners\n */\n\n// remove_from_cart event\n// jQuery('.remove_from_cart_button, .remove').on('click', function (e) {\njQuery(document).on(\"click\", \".remove_from_cart_button, .remove\", (event) => {\n\n\ttry {\n\n\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"))\n\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\twpm.removeProductFromCart(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// add_to_cart event\njQuery(document).on(\"click\", \".add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .single_add_to_cart_button\", (event) => {\n\n\ttry {\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\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// jQuery('a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)').one('click', function (event) {\njQuery(document).one(\"click\", \"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\", (event) => {\n\n\ttry {\n\t\tif (jQuery(event.target).closest(\"a\").attr(\"href\")) {\n\n\t\t\tlet href = jQuery(event.target).closest(\"a\").attr(\"href\")\n\n\t\t\tif (href.includes(\"add-to-cart=\")) {\n\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) wpm.addProductToCart(matches[2], 1)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select_content GA UA event\n// select_item GA 4 event\n// jQuery(document).on('click', '.woocommerce-LoopProduct-link, .wc-block-grid__product, .product-small.box', function (e) {\n// jQuery('.woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product').on('click', function (e) {\njQuery(document).on(\"click\", \".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\", (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// begin_checkout event\nlet checkoutButtonClasses = [\n\t\".checkout-button\",\n\t\".cart-checkout-button\",\n\t\".button.checkout\",\n\t\".xoo-wsc-ft-btn-checkout\", // https://xootix.com/side-cart-for-woocommerce/\n\t\".elementor-button--checkout\",\n]\n\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).one(\"click init_checkout\", checkoutButtonClasses.join(\",\"), () => {\n\t// console.log(\"begin_checkout\", new Date().getTime())\n\n\tjQuery(document).trigger(\"wpmBeginCheckout\")\n})\n\n\n// checkout_progress event\n// track checkout option event: entered valid billing email\njQuery(document).on(\"input\", \"#billing_email\", (event) => {\n\n\tif (wpm.isEmail(jQuery(event.currentTarget).val())) {\n\t\t// wpm.fireCheckoutOption(2);\n\t\twpm.fireCheckoutProgress(2)\n\t\twpm.emailSelected = true\n\t}\n})\n\n// track checkout option event: purchase click\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).on(\"wpmLoad\", (event) => {\n\tjQuery(document).on(\"payment_method_selected\", () => {\n\n\t\tif (false === wpm.paymentMethodSelected) {\n\t\t\twpm.fireCheckoutProgress(3)\n\t\t}\n\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t\twpm.paymentMethodSelected = true\n\t})\n})\n\n// track checkout option event: purchase click\n// jQuery(document).one(\"click\", \"#place_order\", () => {\n// https://stackoverflow.com/a/34112407/4688612\njQuery(() => {\n\tjQuery(\"form.checkout\").on(\"checkout_place_order_success\", () => {\n\n\t\tif (false === wpm.emailSelected) {\n\t\t\twpm.fireCheckoutProgress(2)\n\t\t}\n\n\t\tif (false === wpm.paymentMethodSelected) {\n\t\t\twpm.fireCheckoutProgress(3)\n\t\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t\t}\n\n\t\twpm.fireCheckoutProgress(4)\n\t})\n})\n\n// update cart event\n// jQuery(\"[name='update_cart']\").on('click', function (e) {\njQuery(document).on(\"click\", \"[name='update_cart']\", (event) => {\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\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\n// add_to_wishlist\njQuery(function () {\n\n\tjQuery(\".add_to_wishlist,.wl-add-to\").on(\"click\", event => {\n\n\t\ttry {\n\n\t\t\tlet productId\n\n\t\t\tif (jQuery(event.currentTarget).data(\"productid\")) { // for the WooCommerce wishlist plugin\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"productid\")\n\t\t\t} else if (jQuery(event.currentTarget).data(\"product-id\")) { // for the YITH wishlist plugin\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product-id\")\n\t\t\t}\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\n\t\t\tjQuery(document).trigger(\"wpmAddToWishlist\", product)\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\njQuery(document).on(\"updated_cart_totals\", () => {\n\tjQuery(document).trigger(\"wpmViewCart\")\n})\n\n\n/**\n * Called when the user selects all the required dropdowns / attributes\n *\n * Has to be hooked after document ready !\n *\n * https://stackoverflow.com/a/27849208/4688612\n * https://stackoverflow.com/a/65065335/4688612\n */\n\njQuery(() => {\n\n\tjQuery(\".single_variation_wrap\").on(\"show_variation\", (event, variation) => {\n\n\t\ttry {\n\t\t\tlet productId = wpm.getIdBasedOndVariationsOutputSetting(variation.variation_id)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\twpm.triggerViewItemEventPrep(productId)\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n\n/**\n * Called on variable products when no selection has been done yet\n * or when the visitor deselects his choice.\n *\n * Has to be hooked after document ready !\n */\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n//\n// \t\ttry {\n// \t\t\tlet classes = jQuery(\"body\").attr(\"class\")\n// \t\t\tlet productId = classes.match(/(postid-)(\\d+)/)[2]\n//\n// \t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n//\n// \t\t\t/**\n// \t\t\t * If we have a variable product with no preset,\n// \t\t\t * and variations output is enabled,\n// \t\t\t * then we send a viewItem event with the first\n// \t\t\t * variation we find for the parent.\n// \t\t\t * If variations output is disabled,\n// \t\t\t * we just send the parent ID.\n// \t\t\t *\n// \t\t\t * And if Facebook microdata is active, use the\n// \t\t\t * microdata product ID.\n// \t\t\t */\n//\n// \t\t\tif (\n// \t\t\t\t\"variable\" === wpmDataLayer.shop.product_type &&\n// \t\t\t\twpmDataLayer?.general?.variationsOutput\n// \t\t\t) {\n// \t\t\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n// \t\t\t\t\tif (\"parentId\" in product) {\n//\n// \t\t\t\t\t\tproductId = product.id\n// \t\t\t\t\t\tbreak\n// \t\t\t\t\t}\n// \t\t\t\t}\n//\n// \t\t\t\tif (wpmDataLayer?.pixels?.facebook?.microdata_product_id) {\n// \t\t\t\t\tproductId = wpmDataLayer.pixels.facebook.microdata_product_id\n// \t\t\t\t}\n// \t\t\t}\n//\n// \t\t\t// console.log(\"hmm\")\n// \t\t\twpm.triggerViewItemEventPrep(productId)\n//\n// \t\t} catch (e) {\n// \t\t\tconsole.error(e)\n// \t\t}\n// \t})\n// })\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n// \t\tjQuery(document).trigger(\"wpmviewitem\")\n// \t})\n// })\n\n\n/**\n * Set up wpm events\n */\n\n// populate the wpmDataLayer with the cart items\njQuery(document).on(\"wpmLoad\", () => {\n\n\ttry {\n\t\t// When a new session is initiated there are no items in the cart,\n\t\t// so we can save the call to get the cart items\n\t\tif (wpm.doesWooCommerceCartExist()) wpm.getCartItems()\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// get all add-to-cart= products from backend\njQuery(document).on(\"wpmLoad\", () => {\n\n\twpmDataLayer.products = wpmDataLayer.products || {}\n\n\t// scan page for add-to-cart= links\n\tlet productIds = wpm.getAddToCartLinkProductIds()\n\n\twpm.getProductsFromBackend(productIds)\n})\n\n/**\n * Save the referrer into a cookie\n */\n\njQuery(document).on(\"wpmLoad\", () => {\n\n\t// can't use session storage as we can't read it from the server\n\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\n\t\tif (document.referrer) {\n\t\t\tlet referrerUrl = new URL(document.referrer)\n\t\t\tlet referrerHostname = referrerUrl.hostname\n\n\t\t\tif (referrerHostname !== window.location.host) {\n\t\t\t\twpm.setCookie(\"wpmReferrer\", referrerHostname)\n\t\t\t}\n\t\t}\n\t}\n})\n\n\n/**\n * Create our own load event in order to better handle script flow execution when JS \"optimizers\" shuffle the code.\n */\n\njQuery(document).on(\"wpmLoad\", () => {\n\t// document.addEventListener(\"wpmLoad\", function () {\n\ttry {\n\t\tif (typeof wpmDataLayer != \"undefined\" && !wpmDataLayer?.wpmLoadFired) {\n\n\t\t\tjQuery(document).trigger(\"wpmLoadAlways\")\n\n\t\t\tif (wpmDataLayer?.shop) {\n\t\t\t\tif (\n\t\t\t\t\t\"product\" === wpmDataLayer.shop.page_type &&\n\t\t\t\t\t\"variable\" !== wpmDataLayer.shop.product_type &&\n\t\t\t\t\twpm.getMainProductIdFromProductPage()\n\t\t\t\t) {\n\t\t\t\t\tlet product = wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage())\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t\t} else if (\"product_category\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmCategory\")\n\t\t\t\t} else if (\"search\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmSearch\")\n\t\t\t\t} else if (\"cart\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewCart\")\n\t\t\t\t} else if (\"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer.order) {\n\t\t\t\t\tif (!wpm.isOrderIdStored(wpmDataLayer.order.id)) {\n\t\t\t\t\t\tjQuery(document).trigger(\"wpmOrderReceivedPage\")\n\t\t\t\t\t\twpm.writeOrderIdToStorage(wpmDataLayer.order.id)\n\t\t\t\t\t\tif (typeof wpm.acrRemoveCookie === \"function\") wpm.acrRemoveCookie()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.user?.id && !wpm.hasLoginEventFired()) {\n\t\t\t\tjQuery(document).trigger(\"wpmLogin\")\n\t\t\t\twpm.setLoginEventFired()\n\t\t\t}\n\n\t\t\t// /**\n\t\t\t// * Load mini cart fragments into a wpm session storage key,\n\t\t\t// * after the document load event.\n\t\t\t// */\n\t\t\t// jQuery(document).ajaxSend(function (event, jqxhr, settings) {\n\t\t\t// \t// console.log('settings.url: ' + settings.url);\n\t\t\t//\n\t\t\t// \tif (settings.url.includes(\"get_refreshed_fragments\") && sessionStorage) {\n\t\t\t// \t\tif (!sessionStorage.getItem(\"wpmMiniCartActive\")) {\n\t\t\t// \t\t\tsessionStorage.setItem(\"wpmMiniCartActive\", JSON.stringify(true))\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// })\n\n\t\t\twpmDataLayer.wpmLoadFired = true\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\njQuery(document).on(\"wpmLoad\", async () => {\n\n\tif (\n\t\twindow.sessionStorage &&\n\t\twindow.sessionStorage.getItem(\"_pmw_endpoint_available\") &&\n\t\t!JSON.parse(window.sessionStorage.getItem(\"_pmw_endpoint_available\"))\n\t) {\n\t\tconsole.error(\"Pixel Manager for WooCommerce: REST endpoint is not available. Using admin-ajax.php instead.\")\n\t}\n})\n\n\n/**\n * Load all pixels\n */\njQuery(document).on(\"wpmPreLoadPixels\", () => {\n\n\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent && !wpm.explicitConsentStateAlreadySet()) {\n\t\twpm.updateConsentCookieValues(null, null, true)\n\t}\n\n\tjQuery(document).trigger(\"wpmLoadPixels\", {})\n})\n\n\n/**\n * All ecommerce events\n */\n\njQuery(document).on(\"wpmAddToCart\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToCart\",\n\t\tproduct: product,\n\t}\n\n\t// If Facebook pixel is loaded, add Facebook server to server event data to the payload\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToCart\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToCart\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmBeginCheckout\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"beginCheckout\",\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"InitiateCheckout\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (wpmDataLayer?.cart && !jQuery.isEmptyObject(wpmDataLayer.cart)) {\n\t\t\tpayload.facebook.custom_data = {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tcontent_ids : wpm.fbGetContentIdsFromCart(),\n\t\t\t\tvalue : wpm.getCartValue(),\n\t\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideBeginCheckout\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmAddToWishlist\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToWishlist\",\n\t\tproduct: product,\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToWishlist\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"viewItem\",\n\t\tproduct: product,\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"ViewContent\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.facebook.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideViewItem\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmSearch\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"search\",\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Search\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tsearch_string: wpm.getSearchTermFromUrl(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideSearch\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmOrderReceivedPage\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"orderReceived\",\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Purchase\",\n\t\t\tevent_id : wpmDataLayer.order.id,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tcontent_ids : wpm.facebookContentIds(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideOrderReceivedPage\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// ! No server-to-server event is sent for this event because it is compiled and sent from the server directly\n})\n\n\n\n\n\n","/**\n * Create a wpm namespace under which all functions are declared\n */\n\n// https://stackoverflow.com/a/5947280/4688612\n\n(function (wpm, $, undefined) {\n\n\tconst wpmDeduper = {\n\t\tkeyName : \"_wpm_order_ids\",\n\t\tcookieExpiresDays: 365,\n\t}\n\n\tconst wpmRestSettings = {\n\t\t// cookiesAvailable : '_wpm_cookies_are_available',\n\t\tcookiePmwRestEndpointAvailable: \"_pmw_endpoint_available\",\n\t\trestEndpointPost : \"pmw/v1/test/\",\n\t\trestFails : 0,\n\t\trestFailsThreshold : 10,\n\t}\n\n\twpm.emailSelected = false\n\twpm.paymentMethodSelected = false\n\n\t// wpm.checkIfCookiesAvailable = function () {\n\t//\n\t// // read the cookie if previously set, if it is return true, otherwise continue\n\t// if (wpm.getCookie(wpmRestSettings.cookiesAvailable)) {\n\t// return true;\n\t// }\n\t//\n\t// // set the cookie for the session\n\t// Cookies.set(wpmRestSettings.cookiesAvailable, true);\n\t//\n\t// // read cookie, true if ok, false if not ok\n\t// return !!wpm.getCookie(wpmRestSettings.cookiesAvailable);\n\t// }\n\n\twpm.useRestEndpoint = () => {\n\n\t\t// only if sessionStorage is available\n\n\t\t// only if REST API endpoint is generally accessible\n\t\t// check in sessionStorage if we checked before and return answer\n\t\t// otherwise check if the endpoint is available, save answer in sessionStorage and return answer\n\n\t\t// only if not too many REST API errors happened\n\n\t\treturn wpm.isSessionStorageAvailable() &&\n\t\t\twpm.isRestEndpointAvailable() &&\n\t\t\twpm.isBelowRestErrorThreshold()\n\t}\n\n\twpm.isBelowRestErrorThreshold = () => window.sessionStorage.getItem(wpmRestSettings.restFails) <= wpmRestSettings.restFailsThreshold\n\n\twpm.isRestEndpointAvailable = async () => {\n\n\t\tif (window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable)) {\n\t\t\treturn JSON.parse(window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable))\n\t\t} else {\n\t\t\treturn await wpm.testEndpoint()\n\t\t}\n\t}\n\n\twpm.isSessionStorageAvailable = () => !!window.sessionStorage\n\n\t// Test the endpoint by sending a POST request\n\twpm.testEndpoint = async (\n\t\turl = wpm.root + wpmRestSettings.restEndpointPost,\n\t\tcookieName = wpmRestSettings.cookiePmwRestEndpointAvailable,\n\t) => {\n\n\t\tlet response = await fetch(url, {\n\t\t\tmethod : \"POST\",\n\t\t\tmode : \"cors\",\n\t\t\tcache : \"no-cache\",\n\t\t\tkeepalive: true,\n\t\t})\n\n\t\tif (response.status === 200) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(true))\n\t\t\treturn true\n\t\t} else if (response.status === 404) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t} else if (response.status === 0) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isWpmRestEndpointAvailable = (cookieName = wpmRestSettings.cookiePmwRestEndpointAvailable) => !!wpm.getCookie(cookieName)\n\n\twpm.writeOrderIdToStorage = (orderId, source = \"thankyou_page\", expireDays = 365) => {\n\n\t\t// save the order ID in the browser storage\n\n\t\tif (!window.Storage) {\n\t\t\tlet expiresDate = new Date()\n\t\t\texpiresDate.setDate(expiresDate.getDate() + wpmDeduper.cookieExpiresDays)\n\n\t\t\tlet ids = []\n\t\t\tif (checkCookie()) {\n\t\t\t\tids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t}\n\n\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\tids.push(orderId)\n\t\t\t\tdocument.cookie = wpmDeduper.keyName + \"=\" + JSON.stringify(ids) + \";expires=\" + expiresDate.toUTCString()\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (localStorage.getItem(wpmDeduper.keyName) === null) {\n\t\t\t\tlet ids = []\n\t\t\t\tids.push(orderId)\n\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\n\t\t\t} else {\n\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\t\tids.push(orderId)\n\t\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof wpm.storeOrderIdOnServer === \"function\" && wpmDataLayer.orderDeduplication) {\n\t\t\twpm.storeOrderIdOnServer(orderId, source)\n\t\t}\n\t}\n\n\tfunction checkCookie() {\n\t\tlet key = wpm.getCookie(wpmDeduper.keyName)\n\t\treturn key !== \"\"\n\t}\n\n\twpm.isOrderIdStored = orderId => {\n\n\t\tif (wpmDataLayer.orderDeduplication) {\n\n\t\t\tif (!window.Storage) {\n\n\t\t\t\tif (checkCookie()) {\n\t\t\t\t\tlet ids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (localStorage.getItem(wpmDeduper.keyName) !== null) {\n\t\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\"order duplication prevention: off\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isEmail = email => {\n\n\t\t// https://emailregex.com/\n\n\t\tlet regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n\t\treturn regex.test(email)\n\t}\n\n\twpm.removeProductFromCart = (productId, quantityToRemove = null) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet quantity\n\n\t\t\tif (quantityToRemove == null) {\n\t\t\t\tquantity = wpmDataLayer.cart[productId].quantity\n\t\t\t} else {\n\t\t\t\tquantity = quantityToRemove\n\t\t\t}\n\n\t\t\tif (wpmDataLayer.cart[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmRemoveFromCart\", product)\n\n\t\t\t\tif (quantityToRemove == null || wpmDataLayer.cart[productId].quantity === quantityToRemove) {\n\n\t\t\t\t\tdelete wpmDataLayer.cart[productId]\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t} else {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity - quantity\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\t// console.log('getting cart from back end');\n\t\t\t// wpm.getCartItemsFromBackend();\n\t\t\t// console.log('getting cart from back end done');\n\t\t}\n\t}\n\n\twpm.getIdBasedOndVariationsOutputSetting = productId => {\n\n\t\ttry {\n\t\t\tif (wpmDataLayer?.general?.variationsOutput) {\n\n\t\t\t\treturn productId\n\t\t\t} else {\n\t\t\t\tif (wpmDataLayer.products[productId].isVariation) {\n\n\t\t\t\t\treturn wpmDataLayer.products[productId].parentId\n\t\t\t\t} else {\n\n\t\t\t\t\treturn productId\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// add_to_cart\n\twpm.addProductToCart = (productId, quantity) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer?.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmAddToCart\", product)\n\n\t\t\t\t// add product to cart wpmDataLayer['cart']\n\n\t\t\t\t// if the product already exists in the object, only add the additional quantity\n\t\t\t\t// otherwise create that product object in the wpmDataLayer['cart']\n\t\t\t\tif (wpmDataLayer?.cart[productId]) {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity + quantity\n\t\t\t\t} else {\n\n\t\t\t\t\tif (!(\"cart\" in wpmDataLayer)) wpmDataLayer.cart = {}\n\n\t\t\t\t\twpmDataLayer.cart[productId] = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\t\t\t\t}\n\n\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\n\t\t\t// fallback if wpmDataLayer.cart and wpmDataLayer.products got out of sync in case cart caching has an issue\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\twpm.getCartItems = () => {\n\n\t\tif (sessionStorage) {\n\t\t\tif (!sessionStorage.getItem(\"wpmDataLayerCart\") || wpmDataLayer.shop.page_type === \"order_received_page\") {\n\t\t\t\tsessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify({}))\n\t\t\t} else {\n\t\t\t\twpm.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem(\"wpmDataLayerCart\")))\n\t\t\t}\n\t\t} else {\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\t// get all cart items from the backend\n\twpm.getCartItemsFromBackend = () => {\n\t\ttry {\n\n\t\t\t/**\n\t\t\t * Can't use a REST API endpoint, as the cart session will not be loaded if the\n\t\t\t * endpoint is called.\n\t\t\t *\n\t\t\t * https://wordpress.org/support/topic/wc-cart-is-null-in-custom-rest-api/#post-11442843\n\t\t\t */\n\n\t\t\t/**\n\t\t\t * Get the cart items from the backend the data object using fetch API\n\t\t\t * and log success or error messages\n\t\t\t * and url encoded data\n\t\t\t */\n\t\t\tfetch(wpm.ajax_url, {\n\t\t\t\tmethod : \"POST\",\n\t\t\t\tcache : \"no-cache\",\n\t\t\t\tbody : new URLSearchParams({action: \"pmw_get_cart_items\"}),\n\t\t\t\tkeepalive: true,\n\t\t\t})\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(data => {\n\n\t\t\t\t\tif (data.success) {\n\n\t\t\t\t\t\tif (!data.data[\"cart\"]) data.data[\"cart\"] = {}\n\n\t\t\t\t\t\twpm.saveCartObjectToDataLayer(data.data[\"cart\"])\n\n\t\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(data.data[\"cart\"]))\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// get productIds from the backend\n\twpm.getProductsFromBackend = async productIds => {\n\n\t\tif (wpmDataLayer?.products) {\n\t\t\t// reduce productIds by products already in the dataLayer\n\t\t\tproductIds = productIds.filter(item => !wpmDataLayer.products.hasOwnProperty(item))\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(productIds),\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(\"<div id=\\\"viewItemListTriggerOverlay\\\"></div>\")\n\t\tjQuery(target).find(\"#viewItemListTriggerOverlay\").css({\n\t\t\t\"z-index\" : \"10\",\n\t\t\t\"display\" : \"block\",\n\t\t\t\"position\" : \"absolute\",\n\t\t\t\"height\" : \"100%\",\n\t\t\t\"top\" : \"0\",\n\t\t\t\"left\" : \"0\",\n\t\t\t\"right\" : \"0\",\n\t\t\t\"opacity\" : wpmDataLayer.viewItemListTrigger.opacity,\n\t\t\t\"background-color\": wpmDataLayer.viewItemListTrigger.backgroundColor,\n\t\t})\n\t}\n\n\twpm.getSearchTermFromUrl = () => {\n\n\t\ttry {\n\t\t\tlet urlParameters = new URLSearchParams(window.location.search)\n\t\t\treturn urlParameters.get(\"s\")\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// we need this to track timeouts for intersection observers\n\tlet ioTimeouts = {}\n\n\twpm.observerCallback = (entries, observer) => {\n\n\t\tentries.forEach((entry) => {\n\n\t\t\ttry {\n\t\t\t\tlet productId\n\n\t\t\t\tlet elementId = jQuery(entry.target).data(\"ioid\")\n\n\t\t\t\t// Get the productId from next element, if wpmProductId is a sibling, like in Gutenberg blocks\n\t\t\t\t// otherwise go search in children, like in regular WC loop items\n\t\t\t\tif (jQuery(entry.target).next(\".wpmProductId\").length) {\n\t\t\t\t\t// console.log('test 1');\n\t\t\t\t\tproductId = jQuery(entry.target).next(\".wpmProductId\").data(\"id\")\n\t\t\t\t} else {\n\t\t\t\t\tproductId = jQuery(entry.target).find(\".wpmProductId\").data(\"id\")\n\t\t\t\t}\n\n\n\t\t\t\tif (!productId) throw Error(\"wpmProductId element not found\")\n\n\t\t\t\tif (entry.isIntersecting) {\n\n\t\t\t\t\tioTimeouts[elementId] = setTimeout(() => {\n\n\t\t\t\t\t\twpm.triggerViewItemList(productId)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) wpm.viewItemListTriggerTestMode(entry.target)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.repeat === false) observer.unobserve(entry.target)\n\t\t\t\t\t}, wpmDataLayer.viewItemListTrigger.timeout)\n\n\t\t\t\t} else {\n\n\t\t\t\t\tclearTimeout(ioTimeouts[elementId])\n\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) jQuery(entry.target).find(\"#viewItemListTriggerOverlay\").remove()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t})\n\t}\n\n\t// fire view_item_list only on products that have become visible\n\tlet io\n\tlet ioid = 0\n\tlet allIoElementsToWatch\n\n\tlet getAllElementsToWatch = () => {\n\n\t\tallIoElementsToWatch = jQuery(\".wpmProductId\")\n\t\t\t.map(function (i, elem) {\n\n\t\t\t\tif (\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"type-product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product-item-inner\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(elem).parent()\n\t\t\t\t} else if (\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"wc-block-grid__product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product-small\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"woocommerce-LoopProduct-link\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(this).prev()\n\t\t\t\t} else if (jQuery(elem).closest(\".product\").length) {\n\t\t\t\t\treturn jQuery(elem).closest(\".product\")\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\twpm.startIntersectionObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// enable view_item_list test mode from browser\n\t\t\tif (wpm.urlHasParameter(\"vildemomode\")) wpmDataLayer.viewItemListTrigger.testMode = true\n\n\t\t\t// set up intersection observer\n\t\t\tio = new IntersectionObserver(wpm.observerCallback, {\n\t\t\t\tthreshold: wpmDataLayer.viewItemListTrigger.threshold,\n\t\t\t})\n\n\t\t\tgetAllElementsToWatch()\n\n\t\t\tallIoElementsToWatch.each((i, elem) => {\n\n\t\t\t\tjQuery(elem[0]).data(\"ioid\", ioid++)\n\n\t\t\t\tio.observe(elem[0])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// watch DOM for new lazy loaded products and add them to the intersection observer\n\twpm.startProductsMutationObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// Pass in the target node, as well as the observer options\n\n\t\t\t// selects the most common parent node\n\t\t\t// https://stackoverflow.com/a/7648323/4688612\n\t\t\tlet productsNode = jQuery(\".wpmProductId:eq(0)\").parents().has(jQuery(\".wpmProductId:eq(1)\").parents()).first()\n\n\t\t\tif (productsNode.length) {\n\t\t\t\tproductsMutationObserver.observe(productsNode[0], {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// Create an observer instance\n\tlet productsMutationObserver = new MutationObserver(mutations => {\n\n\t\tmutations.forEach(mutation => {\n\t\t\tlet newNodes = mutation.addedNodes // DOM NodeList\n\t\t\tif (newNodes !== null) { // If there are new nodes added\n\t\t\t\tlet nodes = jQuery(newNodes) // jQuery set\n\t\t\t\tnodes.each(function () {\n\t\t\t\t\tif (\n\t\t\t\t\t\tjQuery(this).hasClass(\"type-product\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"product-small\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"wc-block-grid__product\")\n\t\t\t\t\t) {\n\t\t\t\t\t\t// check if the node has a child or sibling wpmProductId\n\t\t\t\t\t\t// if yes add it to the intersectionObserver\n\t\t\t\t\t\tif (hasWpmProductIdElement(this)) {\n\t\t\t\t\t\t\tjQuery(this).data(\"ioid\", ioid++)\n\t\t\t\t\t\t\tio.observe(this)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t})\n\n\tlet hasWpmProductIdElement = elem =>\n\t\t!!(jQuery(elem).find(\".wpmProductId\").length ||\n\t\t\tjQuery(elem).siblings(\".wpmProductId\").length)\n\n\twpm.setCookie = (cookieName, cookieValue = \"\", expiryDays = null) => {\n\n\t\tif (expiryDays) {\n\n\t\t\tlet d = new Date()\n\t\t\td.setTime(d.getTime() + (expiryDays * 24 * 60 * 60 * 1000))\n\t\t\tlet expires = \"expires=\" + d.toUTCString()\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";\" + expires + \";path=/\"\n\t\t} else {\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";path=/\"\n\t\t}\n\t}\n\n\twpm.getCookie = cookieName => {\n\n\t\tlet name = cookieName + \"=\"\n\t\tlet decodedCookie = decodeURIComponent(document.cookie)\n\t\tlet ca = decodedCookie.split(\";\")\n\n\t\tfor (let i = 0; i < ca.length; i++) {\n\n\t\t\tlet c = ca[i]\n\n\t\t\twhile (c.charAt(0) == \" \") {\n\t\t\t\tc = c.substring(1)\n\t\t\t}\n\n\t\t\tif (c.indexOf(name) == 0) {\n\t\t\t\treturn c.substring(name.length, c.length)\n\t\t\t}\n\t\t}\n\n\t\treturn \"\"\n\t}\n\n\twpm.deleteCookie = cookieName => {\n\t\twpm.setCookie(cookieName, \"\", -1)\n\t}\n\n\twpm.getWpmSessionData = () => {\n\n\t\tif (window.sessionStorage) {\n\n\t\t\tlet data = window.sessionStorage.getItem(\"_wpm\")\n\n\t\t\tif (data !== null) {\n\t\t\t\treturn JSON.parse(data)\n\t\t\t} else {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t} else {\n\t\t\treturn {}\n\t\t}\n\t}\n\n\twpm.setWpmSessionData = data => {\n\t\tif (window.sessionStorage) {\n\t\t\twindow.sessionStorage.setItem(\"_wpm\", JSON.stringify(data))\n\t\t}\n\t}\n\n\twpm.storeOrderIdOnServer = async (orderId, source) => {\n\n\t\ttry {\n\n\t\t\tlet response\n\n\t\t\tif (await wpm.isRestEndpointAvailable()) {\n\n\t\t\t\tresponse = await fetch(wpm.root + \"pmw/v1/pixels-fired/\", {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t},\n\t\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\t\torder_id: orderId,\n\t\t\t\t\t\tsource: source\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t\tcache\t: \"no-cache\",\n\t\t\t\t})\n\n\t\t\t} else {\n\t\t\t\t// save the state in the database\n\n\t\t\t\t// Send the data object with ajax request\n\t\t\t\t// and log success or error using fetch API and url encoded\n\t\t\t\tresponse = await fetch(wpm.ajax_url, {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\tbody : new URLSearchParams({\n\t\t\t\t\t\taction : \"pmw_purchase_pixels_fired\",\n\t\t\t\t\t\torder_id: orderId,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (response.ok) {\n\t\t\t\tconsole.log(\"wpm.storeOrderIdOnServer success\")\n\t\t\t} else {\n\t\t\t\tconsole.error(\"wpm.storeOrderIdOnServer error\")\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getProductIdByCartItemKeyUrl = url => {\n\n\t\tlet searchParams = new URLSearchParams(url.search)\n\t\tlet cartItemKey = searchParams.get(\"remove_item\")\n\n\t\tlet productId\n\n\t\tif (wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"] === 0) {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"product_id\"]\n\t\t} else {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"]\n\t\t}\n\n\t\treturn productId\n\t}\n\n\twpm.getAddToCartLinkProductIds = () =>\n\t\tjQuery(\"a\").map(function () {\n\t\t\tlet href = jQuery(this).attr(\"href\")\n\n\t\t\tif (href && href.includes(\"?add-to-cart=\")) {\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) return matches[2]\n\t\t\t}\n\t\t}).get()\n\n\twpm.getProductDetailsFormattedForEvent = (productId, quantity = 1) => {\n\n\t\tlet product = {\n\t\t\tid : productId.toString(),\n\t\t\tdyn_r_ids : wpmDataLayer.products[productId].dyn_r_ids,\n\t\t\tname : wpmDataLayer.products[productId].name,\n\t\t\tlist_name : wpmDataLayer.shop.list_name,\n\t\t\tbrand : wpmDataLayer.products[productId].brand,\n\t\t\tcategory : wpmDataLayer.products[productId].category,\n\t\t\tvariant : wpmDataLayer.products[productId].variant,\n\t\t\tlist_position: wpmDataLayer.products[productId].position,\n\t\t\tquantity : quantity,\n\t\t\tprice : wpmDataLayer.products[productId].price,\n\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\tisVariable : wpmDataLayer.products[productId].isVariable,\n\t\t\tisVariation : wpmDataLayer.products[productId].isVariation,\n\t\t\tparentId : wpmDataLayer.products[productId].parentId,\n\t\t}\n\n\t\tif (product.isVariation) product[\"parentId_dyn_r_ids\"] = wpmDataLayer.products[productId].parentId_dyn_r_ids\n\n\t\treturn product\n\t}\n\n\twpm.setReferrerToCookie = () => {\n\n\t\t// can't use session storage as we can't read it from the server\n\t\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\t\t\twpm.setCookie(\"wpmReferrer\", document.referrer)\n\t\t}\n\t}\n\n\twpm.getReferrerFromCookie = () => {\n\n\t\tif (wpm.getCookie(\"wpmReferrer\")) {\n\t\t\treturn wpm.getCookie(\"wpmReferrer\")\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t}\n\n\twpm.getClidFromBrowser = (clidId = \"gclid\") => {\n\n\t\tlet clidCookieId\n\n\t\tclidCookieId = {\n\t\t\tgclid: \"_gcl_aw\",\n\t\t\tdclid: \"_gcl_dc\",\n\t\t}\n\n\t\tif (wpm.getCookie(clidCookieId[clidId])) {\n\n\t\t\tlet clidCookie = wpm.getCookie(clidCookieId[clidId])\n\t\t\tlet matches = clidCookie.match(/(GCL.[\\d]*.)(.*)/)\n\t\t\treturn matches[2]\n\t\t} else {\n\t\t\treturn \"\"\n\t\t}\n\t}\n\n\twpm.getUserAgent = () => navigator.userAgent\n\n\twpm.getViewPort = () => ({\n\t\twidth : Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n\t\theight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0),\n\t})\n\n\n\twpm.version = () => {\n\t\tconsole.log(wpmDataLayer.version)\n\t}\n\n\t// https://api.jquery.com/jquery.getscript/\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\treturn 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\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}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load all WPM functions\n *\n * Ignore event listeners. They need to be loaded after\n * we made sure that jQuery has been loaded.\n */\n\nrequire(\"./functions\")\nrequire(\"./cookie_consent\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// #endif\n","/**\n * After WPM is loaded\n * we first check if wpmDataLayer is loaded,\n * and as soon as it is, we load the pixels,\n * and as soon as the page load is complete,\n * we fire the wpmLoad event.\n *\n * @param {{pro:bool}} wpmDataLayer.version\n *\n * https://stackoverflow.com/a/25868457/4688612\n * https://stackoverflow.com/a/44093516/4688612\n */\n\nwpm.wpmDataLayerExists()\n\t.then(function () {\n\t\tconsole.log(\"Pixel Manager for WooCommerce: \" + (wpmDataLayer.version.pro ? \"Pro\" : \"Free\") +\" Version \" + wpmDataLayer.version.number + \" loaded\")\n\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t})\n\t.then(function () {\n\t\twpm.pageLoaded().then(function () {\n\t\t\tdocument.dispatchEvent(new Event(\"wpmLoad\"))\n\t\t})\n\t})\n\n\n\n/**\n * Run when page is ready\n */\n\nwpm.pageReady().then(function () {\n\n\t/**\n\t * Run as soon as wpm namespace is loaded\n\t */\n\n\twpm.wpmDataLayerExists()\n\t\t.then(function () {\n\t\t\t// watch for products visible in viewport\n\t\t\twpm.startIntersectionObserverToWatch()\n\n\t\t\t// watch for lazy loaded products\n\t\t\twpm.startProductsMutationObserverToWatch()\n\t\t})\n})\n\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\n * Load all essential scripts first\n */\n\nrequire(\"./wpm/functions_loader\")\n\n// Only load the event listeners after jQuery has been loaded for sure\nwpm.jQueryExists().then(function () {\n\n\trequire(\"./wpm/event_listeners\")\n\n\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","canIFire","loadFacebookPixel","event","payload","fbq","custom_data","eventID","event_id","error","console","setFbUserData","$","undefined","fbUserData","f","window","b","e","n","callMethod","apply","arguments","queue","push","_fbq","version","t","createElement","async","src","s","getElementsByTagName","parentNode","insertBefore","data","isFbpSet","getUserIdentifiersForFb","user","id","external_id","order","user_id","email","em","billing_email_hashed","first_name","fn","billing_first_name","toLowerCase","last_name","ln","billing_last_name","phone","ph","billing_phone","replace","city","ct","billing_city","state","st","billing_state","postcode","zp","billing_postcode","country","billing_country","getFbRandomEventId","Math","random","toString","substring","getFbUserData","getFbUserDataFromBrowser","getCookie","isValidFbp","fbp","isValidFbc","fbc","navigator","userAgent","client_user_agent","RegExp","test","fbGetProductDataForCapiEvent","product","content_type","content_name","name","content_ids","dyn_r_ids","dynamic_remarketing","id_type","value","parseFloat","quantity","price","currency","facebookContentIds","prodIds","key","item","Object","entries","items","general","variationsOutput","variation_id","String","products","trackCustomFacebookEvent","eventName","customData","eventId","trigger","event_name","user_data","event_source_url","location","href","fbGetContentIdsFromCart","cart","require","isEmptyObject","google","ads","conversionIds","status","googleConfigConditionsMet","isVariable","send_events_with_parent_ids","send_to","getGoogleAdsConversionIdentifiers","google_business_vertical","gtagLoaded","then","gtag","value_filtered","getGoogleAdsDynamicRemarketingOrderItems","getGoogleAdsConversionIdentifiersWithLabel","data_basic","data_with_cart","transaction_id","number","new_customer","clv_order_value_filtered","customer_lifetime_value","aw_merchant_id","discount","aw_feed_country","aw_feed_language","getGoogleAdsRegularOrderItems","conversionIdentifiers","orderItems","orderItem","analytics","universal","property_id","mp_active","affiliation","value_regular","tax","shipping","coupon","getGAUAOrderItems","category","join","variant","variant_name","brand","ga3AddListNameToProduct","item_data","productPosition","list_name","shop","list_position","ga4","measurement_id","getGA4OrderItems","item_name","item_category","item_id","item_variant","item_brand","canGoogleLoad","loadGoogle","logPreventedPixelLoading","type","consent_mode","active","getConsentValues","mode","categories","includes","getVisitorConsentStatusAndUpdateGoogleConsentSettings","google_consent_settings","analytics_storage","ad_storage","updateGoogleConsentMode","cookie_consent_mgmt","explicit_consent","fireGtagGoogleAds","enhanced_conversions","phone_conversion_label","phone_conversion_number","keys","page_type","enhanced_conversion_data","fireGtagGoogleAnalyticsUA","parameters","fireGtagGoogleAnalyticsGA4","debug_mode","isGoogleActive","getGoogleGtagId","loadScriptAndCacheIt","script","textStatus","dataLayer","wait_for_update","region","ads_data_redaction","url_passthrough","linker","settings","Date","Promise","resolve","reject","startTime","wait","setTimeout","optimize","container_id","load_google_optimize_pixel","hotjar","site_id","load_hotjar_pixel","h","o","hj","q","_hjSettings","hjid","hjsv","a","r","appendChild","getComplianzCookies","cmplz_statistics","cmplz_marketing","visitorHasChosen","getCookieLawInfoCookies","analyticsCookie","adsCookie","wpmConsentValues","setConsentValueCategories","updateConsentCookieValues","cookie","explicitConsent","JSON","parse","decodeURI","indexOf","action","length","consents","statistics","marketing","thirdparty","advanced","localStorage","getItem","log","UC_UI","addEventListener","ucUiProcessConsent","areAllConsentsAccepted","groups","URLSearchParams","get","split","groupsObject","forEach","group","groupArray","groubsObject","pmw","consentAcceptAll","ucStatisticsSlug","getSettingsLabels","filter","label","slug","consentAdjustSelectively","getServicesBaseInfo","categorySlug","consent","setConsentDefaultValuesToExplicit","pixelName","canIFireMode","scriptTagObserver","MutationObserver","mutations","addedNodes","node","shouldScriptBeActive","unblockScript","blockScript","observe","head","childList","subtree","disconnect","some","element","scriptNode","removeAttach","remove","wpmSrc","attr","appendTo","dispatchEvent","Event","removeAttr","unblockAllScripts","unblockSelectedPixels","explicitConsentStateAlreadySet","Cookiebot","detail","cmplzStatusChange","cmplzConsentData","huObserver","querySelector","hu","documentElement","body","consentRevokeAll","OneTrust","reload","duration","consentSetCookie","setCookie","stringify","url","URL","currentTarget","productId","getProductIdByCartItemKeyUrl","removeProductFromCart","addProductToCart","product_type","Number","val","each","index","find","classes","getPostIdFromString","one","target","closest","matches","match","nextAll","getIdBasedOndVariationsOutputSetting","Error","getProductDetailsFormattedForEvent","isEmail","fireCheckoutProgress","emailSelected","paymentMethodSelected","fireCheckoutOption","getCartItemsFromBackend","variation","triggerViewItemEventPrep","doesWooCommerceCartExist","getCartItems","productIds","getAddToCartLinkProductIds","getProductsFromBackend","referrer","referrerHostname","hostname","host","wpmLoadFired","getMainProductIdFromProductPage","getProductDataForViewItemEvent","isOrderIdStored","writeOrderIdToStorage","acrRemoveCookie","hasLoginEventFired","setLoginEventFired","sessionStorage","sendEventPayloadToServer","getCartValue","search_string","getSearchTermFromUrl","wpmDeduper","keyName","cookieExpiresDays","wpmRestSettings","cookiePmwRestEndpointAvailable","restEndpointPost","restFails","restFailsThreshold","checkCookie","useRestEndpoint","isSessionStorageAvailable","isRestEndpointAvailable","isBelowRestErrorThreshold","testEndpoint","root","cookieName","response","fetch","method","cache","keepalive","setItem","isWpmRestEndpointAvailable","orderId","source","Storage","ids","expiresDate","setDate","getDate","toUTCString","storeOrderIdOnServer","orderDeduplication","quantityToRemove","isVariation","parentId","saveCartObjectToDataLayer","ajax_url","ok","json","success","hasOwnProperty","headers","responseData","assign","cartObject","triggerViewItemEvent","triggerViewItemEventNoProduct","step","checkout_option","string","triggerViewItemList","viewItemListTriggerTestMode","css","append","viewItemListTrigger","opacity","backgroundColor","search","ioTimeouts","io","observerCallback","observer","entry","elementId","next","isIntersecting","testMode","repeat","unobserve","timeout","clearTimeout","ioid","allIoElementsToWatch","getAllElementsToWatch","map","i","elem","parent","hasClass","prev","this","startIntersectionObserverToWatch","urlHasParameter","IntersectionObserver","threshold","startProductsMutationObserverToWatch","productsNode","parents","has","first","productsMutationObserver","attributes","characterData","mutation","newNodes","hasWpmProductIdElement","siblings","cookieValue","expiryDays","d","setTime","getTime","expires","ca","decodeURIComponent","c","charAt","deleteCookie","getWpmSessionData","setWpmSessionData","order_id","cartItemKey","cartItemKeys","position","parentId_dyn_r_ids","setReferrerToCookie","getReferrerFromCookie","getClidFromBrowser","clidCookieId","clidId","gclid","dclid","getUserAgent","getViewPort","width","max","clientWidth","innerWidth","height","clientHeight","innerHeight","text","eval","catch","getOrderItemPrice","total","total_tax","loginEventFired","wpmDataLayerExists","waitForVar","jQueryExists","waitForjQuery","pageLoaded","readyState","pageReady","isMiniCartActive","parameter","hashAsync","algo","str","crypto","subtle","digest","TextEncoder","encode","buf","Array","prototype","call","Uint8Array","x","slice","pro","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""}
|
1 |
+
{"version":3,"file":"wpm-public.p1.min.js","mappings":"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","sources":["webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/cookie_consent.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions_loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/init.js","webpack://Pixel-Manager-for-WooCommerce/webpack/bootstrap","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/main.js"],"sourcesContent":["/**\n * All event listeners\n *\n * https://developers.facebook.com/docs/meta-pixel/reference\n * */\n\n// Load pixel event\njQuery(document).on(\"wpmLoadPixels\", () => {\n\n\tif (wpmDataLayer?.pixels?.facebook?.pixel_id && !wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tif (wpm.canIFire(\"ads\", \"facebook-ads\")) wpm.loadFacebookPixel()\n\t}\n})\n\n// AddToCart event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToCart\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToCart\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// InitiateCheckout event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideBeginCheckout\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"InitiateCheckout\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// AddToWishlist event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToWishlist\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToWishlist\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// ViewContent event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideViewItem\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"ViewContent\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n\n// view search event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideSearch\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Search\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// load always event\njQuery(document).on(\"wpmLoadAlways\", () => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.setFbUserData()\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// view order received page event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideOrderReceivedPage\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Purchase\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n","/**\n * Add functions for Facebook\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet fbUserData\n\n\twpm.loadFacebookPixel = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.facebook.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(f,b,e,v,n,t,s)\n\t\t\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\t\t\t\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\t\t\t\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\t\t\t\tn.queue=[];t=b.createElement(e);t.async=!0;\n\t\t\t\tt.src=v;s=b.getElementsByTagName(e)[0];\n\t\t\t\ts.parentNode.insertBefore(t,s)}(window, document,'script',\n\t\t\t\t'https://connect.facebook.net/en_US/fbevents.js');\n\t\t\t// @formatter:on\n\n\t\t\tlet data = {}\n\n\t\t\t// Add user identifiers to data,\n\t\t\t// and only if fbp was set\n\t\t\tif (wpm.isFbpSet()) {\n\t\t\t\tdata = {...wpm.getUserIdentifiersForFb()}\n\t\t\t}\n\n\t\t\tfbq(\"init\", wpmDataLayer.pixels.facebook.pixel_id, data)\n\t\t\tfbq(\"track\", \"PageView\")\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// https://developers.facebook.com/docs/meta-pixel/advanced/advanced-matching\n\twpm.getUserIdentifiersForFb = () => {\n\n\t\tlet data = {}\n\n\t\t// external ID\n\t\tif (wpmDataLayer?.user?.id) data.external_id = wpmDataLayer.user.id\n\t\tif (wpmDataLayer?.order?.user_id) data.external_id = wpmDataLayer.order.user_id\n\n\t\t// email\n\t\tif (wpmDataLayer?.user?.facebook?.email) data.em = wpmDataLayer.user.facebook.email\n\t\tif (wpmDataLayer?.order?.billing_email_hashed) data.em = wpmDataLayer.order.billing_email_hashed\n\n\t\t// first name\n\t\tif (wpmDataLayer?.user?.facebook?.first_name) data.fn = wpmDataLayer.user.facebook.first_name\n\t\tif (wpmDataLayer?.order?.billing_first_name) data.fn = wpmDataLayer.order.billing_first_name.toLowerCase()\n\n\t\t// last name\n\t\tif (wpmDataLayer?.user?.facebook?.last_name) data.ln = wpmDataLayer.user.facebook.last_name\n\t\tif (wpmDataLayer?.order?.billing_last_name) data.ln = wpmDataLayer.order.billing_last_name.toLowerCase()\n\n\t\t// phone\n\t\tif (wpmDataLayer?.user?.facebook?.phone) data.ph = wpmDataLayer.user.facebook.phone\n\t\tif (wpmDataLayer?.order?.billing_phone) data.ph = wpmDataLayer.order.billing_phone.replace(\"+\", \"\")\n\n\t\t// city\n\t\tif (wpmDataLayer?.user?.facebook?.city) data.ct = wpmDataLayer.user.facebook.city\n\t\tif (wpmDataLayer?.order?.billing_city) data.ct = wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g, \"\")\n\n\t\t// state\n\t\tif (wpmDataLayer?.user?.facebook?.state) data.st = wpmDataLayer.user.facebook.state\n\t\tif (wpmDataLayer?.order?.billing_state) data.st = wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/, \"\")\n\n\t\t// postcode\n\t\tif (wpmDataLayer?.user?.facebook?.postcode) data.zp = wpmDataLayer.user.facebook.postcode\n\t\tif (wpmDataLayer?.order?.billing_postcode) data.zp = wpmDataLayer.order.billing_postcode\n\n\t\t// country\n\t\tif (wpmDataLayer?.user?.facebook?.country) data.country = wpmDataLayer.user.facebook.country\n\t\tif (wpmDataLayer?.order?.billing_country) data.country = wpmDataLayer.order.billing_country.toLowerCase()\n\n\t\treturn data\n\t}\n\n\twpm.getFbRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\twpm.getFbUserData = () => {\n\n\t\t/**\n\t\t * We need to cache the FB user data for InitiateCheckout\n\t\t * where getting the user data from the browser is too slow\n\t\t * using wpm.getCookie().\n\t\t *\n\t\t * And we need the object merge because the ViewContent hit happens too fast\n\t\t * after adding a variation to the cart because the function to cache\n\t\t * the user data is too slow.\n\t\t *\n\t\t * But we can get the user_data using wpm.getCookie()\n\t\t * because we don't move away from the page and can wait for the browser\n\t\t * to get it.\n\t\t *\n\t\t * Also, the merge ensures that new data will be added to fbUserData if new\n\t\t * data is being added later, like user ID, or fbc.\n\t\t */\n\n\t\tfbUserData = {...fbUserData, ...wpm.getFbUserDataFromBrowser()}\n\n\t\treturn fbUserData\n\t}\n\n\twpm.setFbUserData = () => {\n\t\tfbUserData = wpm.getFbUserDataFromBrowser()\n\t}\n\n\twpm.getFbUserDataFromBrowser = () => {\n\n\t\tlet\n\t\t\tdata = {}\n\n\t\tif (wpm.getCookie(\"_fbp\") && wpm.isValidFbp(wpm.getCookie(\"_fbp\"))) {\n\t\t\tdata.fbp = wpm.getCookie(\"_fbp\")\n\t\t}\n\n\t\tif (wpm.getCookie(\"_fbc\") && wpm.isValidFbc(wpm.getCookie(\"_fbc\"))) {\n\t\t\tdata.fbc = wpm.getCookie(\"_fbc\")\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.external_id = wpmDataLayer.user.id\n\t\t}\n\n\t\tif (navigator.userAgent) {\n\t\t\tdata.client_user_agent = navigator.userAgent\n\t\t}\n\n\t\treturn data\n\t}\n\n\twpm.isFbpSet = () => {\n\t\treturn !!wpm.getCookie(\"_fbp\")\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbp = fbp => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.\\d{8,20}$/)\n\n\t\treturn re.test(fbp)\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbc = fbc => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.[\\da-zA-Z_-]{8,}/)\n\n\t\treturn re.test(fbc)\n\t}\n\n\t// wpm.fbViewContent = (product = null) => {\n\t//\n\t// \ttry {\n\t// \t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\t//\n\t// \t\tlet eventId = wpm.getFbRandomEventId()\n\t//\n\t// \t\tlet data = {}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tdata.content_type = \"product\"\n\t// \t\t\tdata.content_name = product.name\n\t// \t\t\t// data.content_category = product.category\n\t// \t\t\tdata.content_ids = product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]\n\t// \t\t\tdata.currency = wpmDataLayer.shop.currency\n\t// \t\t\tdata.value = product.price\n\t// \t\t}\n\t//\n\t// \t\tfbq(\"track\", \"ViewContent\", data, {\n\t// \t\t\teventID: eventId,\n\t// \t\t})\n\t//\n\t// \t\tlet capiData = {\n\t// \t\t\tevent_name : \"ViewContent\",\n\t// \t\t\tevent_id : eventId,\n\t// \t\t\tuser_data : wpm.getFbUserData(),\n\t// \t\t\tevent_source_url: window.location.href,\n\t// \t\t}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\t// \t\t\tcapiData.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t// \t\t}\n\t//\n\t// \t\tjQuery(document).trigger(\"wpmFbCapiEvent\", capiData)\n\t// \t} catch (e) {\n\t// \t\tconsole.error(e)\n\t// \t}\n\t// }\n\n\twpm.fbGetProductDataForCapiEvent = product => {\n\t\treturn {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : [\n\t\t\t\tproduct.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}\n\t}\n\n\twpm.facebookContentIds = () => {\n\t\tlet prodIds = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn prodIds\n\t}\n\n\twpm.trackCustomFacebookEvent = (eventName, customData = {}) => {\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getFbRandomEventId()\n\n\t\t\tfbq(\"trackCustom\", eventName, customData, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : eventName,\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t\tcustom_data : customData,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fbGetContentIdsFromCart = () => {\n\n\t\tlet content_ids = []\n\n\t\tfor(const key in wpmDataLayer.cart){\n\t\t\tcontent_ids.push(wpmDataLayer.products[key].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])\n\t\t}\n\t\t\n\t\treturn content_ids\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Facebook loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n\n","/**\n * Load Google Ads event listeners\n * */\n\n// view_item_list event\njQuery(document).on(\"wpmViewItemList\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tif (\n\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\tproduct.isVariable &&\n\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t) return\n\n\t\t// try to prevent that WC sends cached hits to Google\n\t\tif (!product) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item_list\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : product.quantity * product.price,\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : product.quantity,\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_cart\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tdata.value = (product.quantity ? product.quantity : 1) * product.price\n\t\t\tdata.items = [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : (product.quantity ? product.quantity : 1),\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}]\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tlet products = []\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\n\t\t\tif (\n\t\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\t\tproduct.isVariable &&\n\t\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t\t) return\n\n\t\t\tproducts.push({\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t})\n\t\t}\n\n\t\t// console.log(products);\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t// value : 1 * product.price,\n\t\t\titems: products,\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_search_results\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\n// TODO distinguish with or without cart data active\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\titems : wpm.getGoogleAdsDynamicRemarketingOrderItems(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", data)\n\t\t})\n\n\t\t// console.log(wpm.getGoogleAdsDynamicRemarketingOrderItems())\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// user log in event\njQuery(document).on(\"wpmLogin\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"login\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// conversion event\n// new_customer parameter: https://support.google.com/google-ads/answer/9917012\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel())) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data_basic = {}\n\t\tlet data_with_cart = {}\n\n\t\tdata_basic = {\n\t\t\tsend_to : wpm.getGoogleAdsConversionIdentifiersWithLabel(),\n\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tnew_customer : wpmDataLayer.order.new_customer,\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.clv_order_value_filtered) {\n\t\t\tdata_basic.customer_lifetime_value = wpmDataLayer.order.clv_order_value_filtered\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id) {\n\t\t\tdata_basic.user_id = wpmDataLayer.user.id\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.aw_merchant_id) {\n\t\t\tdata_with_cart = {\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\taw_merchant_id : wpmDataLayer.order.aw_merchant_id,\n\t\t\t\taw_feed_country : wpmDataLayer.order.aw_feed_country,\n\t\t\t\taw_feed_language: wpmDataLayer.order.aw_feed_language,\n\t\t\t\titems : wpm.getGoogleAdsRegularOrderItems(),\n\t\t\t}\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"conversion\", {...data_basic, ...data_with_cart})\n\t\t})\n\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load Google Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\n\twpm.getGoogleAdsConversionIdentifiersWithLabel = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds) {\n\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\tif (item) {\n\t\t\t\t\tconversionIdentifiers.push(key + \"/\" + item)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsConversionIdentifiers = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\tconversionIdentifiers.push(key)\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsRegularOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.getGoogleAdsDynamicRemarketingOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google Ads\n */\n\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Google Universal Analytics (GA3) event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.universal.property_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGAUAOrderItems(),\n\t\t\t})\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Add functions for Google Analytics Universal\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGAUAOrderItems = function () {\n\n\t\t// \"id\" : \"34\",\n\t\t// \"name\" : \"Hoodie\",\n\t\t// \"brand\" : \"\",\n\t\t// \"category\" : \"Hoodies\",\n\t\t// \"list_position\": 1,\n\t\t// \"price\" : 45,\n\t\t// \"quantity\" : 1,\n\t\t// \"variant\" : \"Color: blue | Logo: yes\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tname : item.name,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcategory: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItem = wpm.ga3AddListNameToProduct(orderItem)\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.ga3AddListNameToProduct = function (item_data, productPosition = null) {\n\n\t\t// if (wpm.ga3CanProductListBeSet(item_data.id)) {\n\t\t// \titem_data.listname = wpmDataLayer.shop.list_name\n\t\t//\n\t\t// \tif (productPosition) {\n\t\t// \t\titem_data.list_position = productPosition\n\t\t// \t}\n\t\t// }\n\n\t\titem_data.list_name = wpmDataLayer.shop.list_name\n\n\t\tif (productPosition) {\n\t\t\titem_data.list_position = productPosition\n\t\t}\n\n\t\treturn item_data\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Google Universal Analytics (GA3) loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load GA4 event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.ga4.measurement_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGA4OrderItems(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load GA4 functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGA4OrderItems = function () {\n\n\t\t// \"item_id\" : \"34\",\n\t\t// \"item_name\" : \"Hoodie\",\n\t\t// \"quantity\" : 1,\n\t\t// \"item_brand\" : \"\",\n\t\t// \"item_variant\" : \"Color: blue | Logo: yes\",\n\t\t// \"price\" : 45,\n\t\t// \"currency\" : \"CHF\",\n\t\t// \"item_category\": \"Hoodies\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\titem_name : item.name,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\titem_category: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * GA4 loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Google Analytics loader\n */\n\nrequire(\"./ga3/loader\")\nrequire(\"./ga4/loader\")\n","/**\n * Load Google base event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") {\n\t\tif (wpm.canGoogleLoad()) {\n\t\t\twpm.loadGoogle()\n\t\t} else {\n\t\t\twpm.logPreventedPixelLoading(\"google\", \"analytics / ads\")\n\t\t}\n\t}\n})\n","/**\n * Load Google base functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.googleConfigConditionsMet = function (type) {\n\n\t\t// always returns true if Google Consent Mode is active\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (wpm.getConsentValues().mode === \"category\") {\n\t\t\treturn wpm.getConsentValues().categories[type] === true\n\t\t} else if (wpm.getConsentValues().mode === \"pixel\") {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-\" + type)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings = function (google_consent_settings) {\n\n\t\tif (wpm.getConsentValues().mode === \"category\") {\n\n\t\t\tif (wpm.getConsentValues().categories.analytics) google_consent_settings.analytics_storage = \"granted\"\n\t\t\tif (wpm.getConsentValues().categories.ads) google_consent_settings.ad_storage = \"granted\"\n\t\t} else if ((wpm.getConsentValues().mode === \"pixel\")) {\n\n\t\t\tgoogle_consent_settings.analytics_storage = wpm.getConsentValues().pixels.includes(\"google-analytics\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_storage = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t}\n\n\t\treturn google_consent_settings\n\t}\n\n\twpm.updateGoogleConsentMode = function (analytics = true, ads = true) {\n\n\t\ttry {\n\t\t\tif (\n\t\t\t\t!window.gtag ||\n\t\t\t\t!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent\n\t\t\t) return\n\n\t\t\tgtag(\"consent\", \"update\", {\n\t\t\t\tanalytics_storage: analytics ? \"granted\" : \"denied\",\n\t\t\t\tad_storage : ads ? \"granted\" : \"denied\",\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAds = function () {\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.ads.state = \"loading\"\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.enhanced_conversions?.active) {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key, {\"allow_enhanced_conversions\": true})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_label && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_number) {\n\t\t\t\tgtag(\"config\", Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0] + \"/\" + wpmDataLayer.pixels.google.ads.phone_conversion_label, {\n\t\t\t\t\tphone_conversion_number: wpmDataLayer.pixels.google.ads.phone_conversion_number,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// ! enhanced_conversion_data needs to set on the window object\n\t\t\t// https://support.google.com/google-ads/answer/9888145#zippy=%2Cvalidate-your-implementation-using-chrome-developer-tools\n\t\t\tif (wpmDataLayer?.shop?.page_type && \"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer?.order?.google?.ads?.enhanced_conversion_data) {\n\t\t\t\t// window.enhanced_conversion_data = wpmDataLayer.order.google.ads.enhanced_conversion_data\n\n\t\t\t\tgtag(\"set\", \"user_data\", wpmDataLayer.order.google.ads.enhanced_conversion_data)\n\t\t\t}\n\n\t\t\twpmDataLayer.pixels.google.ads.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsUA = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"loading\"\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.universal.property_id, wpmDataLayer.pixels.google.analytics.universal.parameters)\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsGA4 = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"loading\"\n\n\t\t\tlet parameters = wpmDataLayer.pixels.google.analytics.ga4.parameters\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.debug_mode) {\n\t\t\t\tparameters.debug_mode = true\n\t\t\t}\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.ga4.measurement_id, parameters)\n\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.isGoogleActive = function () {\n\n\t\tif (\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.universal?.property_id ||\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id ||\n\t\t\t!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)\n\t\t) {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getGoogleGtagId = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.universal.property_id\n\t\t} else if (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.ga4.measurement_id\n\t\t} else {\n\t\t\treturn Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]\n\t\t}\n\t}\n\n\n\twpm.loadGoogle = function () {\n\n\t\tif (wpm.isGoogleActive()) {\n\n\t\t\twpmDataLayer.pixels.google.state = \"loading\"\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googletagmanager.com/gtag/js?id=\" + wpm.getGoogleGtagId())\n\t\t\t\t.then(function (script, textStatus) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\t// Initiate Google dataLayer and gtag\n\t\t\t\t\t\twindow.dataLayer = window.dataLayer || []\n\t\t\t\t\t\twindow.gtag = function gtag() {\n\t\t\t\t\t\t\tdataLayer.push(arguments)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Consent Mode\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\n\t\t\t\t\t\t\tlet google_consent_settings = {\n\t\t\t\t\t\t\t\t\"ad_storage\" : wpmDataLayer.pixels.google.consent_mode.ad_storage,\n\t\t\t\t\t\t\t\t\"analytics_storage\": wpmDataLayer.pixels.google.consent_mode.analytics_storage,\n\t\t\t\t\t\t\t\t\"wait_for_update\" : wpmDataLayer.pixels.google.consent_mode.wait_for_update,\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.region) {\n\t\t\t\t\t\t\t\tgoogle_consent_settings.region = wpmDataLayer.pixels.google.consent_mode.region\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgoogle_consent_settings = wpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings(google_consent_settings)\n\n\t\t\t\t\t\t\tgtag(\"consent\", \"default\", google_consent_settings)\n\t\t\t\t\t\t\tgtag(\"set\", \"ads_data_redaction\", wpmDataLayer.pixels.google.consent_mode.ads_data_redaction)\n\t\t\t\t\t\t\tgtag(\"set\", \"url_passthrough\", wpmDataLayer.pixels.google.consent_mode.url_passthrough)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Linker\n\t\t\t\t\t\t// https://developers.google.com/gtagjs/devguide/linker\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.linker?.settings) {\n\t\t\t\t\t\t\tgtag(\"set\", \"linker\", wpmDataLayer.pixels.google.linker.settings)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgtag(\"js\", new Date())\n\n\t\t\t\t\t\t// Google Ads loader\n\t\t\t\t\t\tif (!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) { // Only run if the pixel has set up\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"ads\")) { \t\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAds()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-ads\", \"ads\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Universal Analytics loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) { \t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsUA()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-universal-analytics\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// GA4 loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) { \t\t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsGA4()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"ga4\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twpmDataLayer.pixels.google.state = \"ready\"\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\twpm.canGoogleLoad = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (\"category\" === wpm.getConsentValues().mode) {\n\t\t\treturn !!(wpm.getConsentValues().categories[\"ads\"] || wpm.getConsentValues().categories[\"analytics\"])\n\t\t} else if (\"pixel\" === wpm.getConsentValues().mode) {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-ads\") || wpm.getConsentValues().pixels.includes(\"google-analytics\")\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid load condition for Google mode in wpmConsentValues\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.gtagLoaded = function () {\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") reject()\n\n\t\t\tlet startTime = 0\n\t\t\tlet timeout = 5000\n\t\t\tlet frequency = 200;\n\n\t\t\t(function wait() {\n\t\t\t\tif (wpmDataLayer?.pixels?.google?.state === \"ready\") return resolve()\n\t\t\t\tif (startTime >= timeout) return reject()\n\t\t\t\tstartTime += frequency\n\t\t\t\tsetTimeout(wait, frequency)\n\t\t\t})()\n\t\t})\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google base\n */\n\n// Load base\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load Google\n */\n\n// Load base\nrequire(\"./base/loader\")\n\n//Load additional Google libraries\nrequire(\"./ads/loader\")\nrequire(\"./analytics/loader\")\nrequire(\"./optimize/loader\")\n\n\n","/**\n * Load Google Optimize event listeners\n */\n\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.google?.optimize?.container_id && !wpmDataLayer?.pixels?.google?.optimize?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"google-optimize\")) wpm.load_google_optimize_pixel()\n\t}\n})\n","/**\n * Load Google Optimize functions\n */\n\n\n(function (wpm, $, undefined) {\n\n\twpm.load_google_optimize_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.optimize.loaded = true\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googleoptimize.com/optimize.js?id=\" + wpmDataLayer.pixels.google.optimize.container_id)\n\t\t\t// .then(function (script, textStatus) {\n\t\t\t// \t\tconsole.log('Google Optimize loaded')\n\t\t\t// });\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Load Google Optimize\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Hotjar event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.hotjar?.site_id && !wpmDataLayer?.pixels?.hotjar?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"hotjar\") && !wpmDataLayer?.pixels?.hotjar?.loaded) wpm.load_hotjar_pixel()\n\t}\n})\n","/**\n * Load Hotjar functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.load_hotjar_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.hotjar.loaded = true;\n\n\t\t\t// @formatter:off\n\t\t\t(function(h,o,t,j,a,r){\n\t\t\t\th.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n\t\t\t\th._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6};\n\t\t\t\ta=o.getElementsByTagName('head')[0];\n\t\t\t\tr=o.createElement('script');r.async=1;\n\t\t\t\tr.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n\t\t\t\ta.appendChild(r);\n\t\t\t})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\n\t\t\t// @formatter:on\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Hotjar loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Consent Mode functions\n */\n\n(function (wpm, $, undefined) {\n\n\t/**\n\t * Handle Cookie Management Platforms\n\t */\n\n\tlet getComplianzCookies = () => {\n\n\t\tlet cmplz_statistics = wpm.getCookie(\"cmplz_statistics\")\n\t\tlet cmplz_marketing = wpm.getCookie(\"cmplz_marketing\")\n\t\tlet cmplz_consent_status = wpm.getCookie(\"cmplz_consent_status\") || wpm.getCookie(\"cmplz_banner-status\")\n\n\t\tif (cmplz_consent_status) {\n\t\t\treturn {\n\t\t\t\tanalytics : cmplz_statistics === \"allow\",\n\t\t\t\tads : cmplz_marketing === \"allow\",\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tlet getCookieLawInfoCookies = () => {\n\n\t\tlet analyticsCookie = wpm.getCookie(\"cookielawinfo-checkbox-analytics\") || wpm.getCookie(\"cookielawinfo-checkbox-analytiques\")\n\t\tlet adsCookie = wpm.getCookie(\"cookielawinfo-checkbox-advertisement\") || wpm.getCookie(\"cookielawinfo-checkbox-performance\") || wpm.getCookie(\"cookielawinfo-checkbox-publicite\")\n\t\tlet visitorHasChosen = wpm.getCookie(\"CookieLawInfoConsent\")\n\n\t\tif (analyticsCookie || adsCookie) {\n\n\t\t\treturn {\n\t\t\t\tanalytics : analyticsCookie === \"yes\",\n\t\t\t\tads : adsCookie === \"yes\",\n\t\t\t\tvisitorHasChosen: !!visitorHasChosen,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Initialize and set default values\n\t */\n\n\tlet\n\t\twpmConsentValues = {}\n\twpmConsentValues.categories = {}\n\twpmConsentValues.pixels = []\n\twpmConsentValues.mode = \"category\"\n\twpmConsentValues.visitorHasChosen = false\n\n\t// Return current consent values\n\twpm.getConsentValues = () => wpmConsentValues\n\n\twpm.setConsentValueCategories = (analytics = false, ads = false) => {\n\t\twpmConsentValues.categories.analytics = analytics\n\t\twpmConsentValues.categories.ads = ads\n\t}\n\n\t// Update the PMW consent values with values coming from a CMP\n\twpm.updateConsentCookieValues = (analytics = null, ads = null, explicitConsent = false) => {\n\n\t\t// ad_storage\n\t\t// analytics_storage\n\t\t// functionality_storage\n\t\t// personalization_storage\n\t\t// security_storage\n\n\t\tlet cookie\n\n\t\t/**\n\t\t * Setup defaults\n\t\t */\n\n\t\t// consentValues.categories.analytics = true\n\t\t// consentValues.categories.ads = true\n\n\t\twpmConsentValues.categories.analytics = !explicitConsent\n\t\twpmConsentValues.categories.ads = !explicitConsent\n\n\n\t\tif (analytics || ads) {\n\n\t\t\tif (analytics) {\n\t\t\t\twpmConsentValues.categories.analytics = !!analytics\n\t\t\t}\n\n\t\t\tif (ads) {\n\t\t\t\twpmConsentValues.categories.ads = !!ads\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * PMW Cookie Consent\n\t\t *\n\t\t * Must be before every other CMP for the case that one of the included CMPs\n\t\t * decides to implement the PMW cookie consent API. In that case\n\t\t * the PMW consent cookie must take precedence.\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"pmw_cookie_consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookiebot\n\t\t * https://wordpress.org/plugins/cookiebot/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieConsent\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.indexOf(\"statistics:true\") >= 0\n\t\t\twpmConsentValues.categories.ads = cookie.indexOf(\"marketing:true\") >= 0\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Script\n\t\t * https://wordpress.org/plugins/cookie-script-com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieScriptConsent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\tif (cookie.action === \"reject\") {\n\t\t\t\twpmConsentValues.categories.analytics = false\n\t\t\t\twpmConsentValues.categories.ads = false\n\t\t\t} else if (cookie.categories.length === 2) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t} else {\n\t\t\t\twpmConsentValues.categories.analytics = cookie.categories.indexOf(\"performance\") >= 0\n\t\t\t\twpmConsentValues.categories.ads = cookie.categories.indexOf(\"targeting\") >= 0\n\t\t\t}\n\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Borlabs Cookie\n\t\t * https://borlabs.io/borlabs-cookie/\n\t\t */\n\t\tif (cookie = wpm.getCookie(\"borlabs-cookie\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie?.consents?.statistics\n\t\t\twpmConsentValues.categories.ads = !!cookie?.consents?.marketing\n\t\t\twpmConsentValues.visitorHasChosen = true\n\t\t\twpmConsentValues.pixels = [...cookie?.consents?.statistics || [], ...cookie?.consents?.marketing || []]\n\t\t\twpmConsentValues.mode = \"pixel\"\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Complianz Cookie\n\t\t * https://wordpress.org/plugins/complianz-gdpr/\n\t\t */\n\n\t\tif (cookie = getComplianzCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (free version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"cookie_notice_accepted\")) {\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (pro version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"hu-consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie.categories[\"3\"]\n\t\t\twpmConsentValues.categories.ads = !!cookie.categories[\"4\"]\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * CookieYes, GDPR Cookie Consent (Cookie Law Info)\n\t\t * https://wordpress.org/plugins/cookie-law-info/\n\t\t */\n\n\t\tif (cookie = getCookieLawInfoCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen === true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * GDPR Cookie Compliance Plugin by Moove Agency\n\t\t * https://wordpress.org/plugins/gdpr-cookie-compliance/\n\t\t *\n\t\t * TODO write documentation on how to set up the plugin in order for this to work properly\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"moove_gdpr_popup\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.thirdparty === \"1\"\n\t\t\twpmConsentValues.categories.ads = cookie.advanced === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * WP AutoTerms\n\t\t * https://wordpress.org/plugins/auto-terms-of-service-and-privacy-policy/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"wpautoterms-cookies-notice\")) {\n\n\t\t\tif (cookie !== \"1\") return\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Usercentrics\n\t\t *\n\t\t * https://usercentrics.com/\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api?id=getservicesbaseinfo\n\t\t */\n\n\t\tif (window.localStorage && window.localStorage.getItem(\"uc_settings\")) {\n\n\t\t\tconsole.log(\"Usercentrics settings detected\")\n\n\t\t\tif (typeof UC_UI === \"undefined\") {\n\n\t\t\t\t// register event to block unblock after UC_UI library is loaded\n\t\t\t\twindow.addEventListener(\"UC_UI_INITIALIZED\", function (event) {\n\t\t\t\t\twpm.ucUiProcessConsent()\n\t\t\t\t})\n\n\t\t\t\t// Don't continue because in here the UC_UI library is not loaded yet\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\twpm.ucUiProcessConsent()\n\t\t}\n\n\t\t/**\n\t\t * OneTrust\n\t\t *\n\t\t * https://www.onetrust.com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"OptanonConsent\")) {\n\n\t\t\t// console.log(\"OneTrust settings detected\")\n\n\t\t\tlet params = new URLSearchParams(cookie)\n\t\t\tlet groups = params.get(\"groups\").split(\",\")\n\n\t\t\t// Groups is an array like this ['1:1', '2:0', '3:1', '4:1']. Make it an object with key value pairs\n\t\t\tlet groupsObject = {}\n\t\t\tgroups.forEach((group) => {\n\n\t\t\t\tlet groupArray = group.split(\":\")\n\t\t\t\tgroupsObject[groupArray[0]] = groupArray[1]\n\t\t\t})\n\n\t\t\t// group mapping\n\t\t\t// 1 = necessary\n\t\t\t// 2 = analytics\n\t\t\t// 3 = functional\n\t\t\t// 4 = ads\n\n\t\t\twpmConsentValues.categories.analytics = groubsObject[\"2\"] === \"1\"\n\t\t\twpmConsentValues.categories.ads = groupsObject[\"4\"] === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Only run after having made sure that the UC_UI library is loaded\n\twpm.ucUiProcessConsent = function () {\n\n\t\tif (typeof UC_UI === \"undefined\") return\n\n\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tconst ucStatisticsSlug = UC_UI.getSettingsLabels().categories.filter(data => data.label === \"Statistics\")[0].slug\n\n\t\tpmw.consentAdjustSelectively(\n\t\t\t{\n\t\t\t\tanalytics: !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === ucStatisticsSlug && data.consent.status === false).length > 0,\n\t\t\t\tads : !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === \"marketing\" && data.consent.status === false).length > 0,\n\t\t\t},\n\t\t)\n\t}\n\n\twpm.updateConsentCookieValues()\n\n\twpm.setConsentDefaultValuesToExplicit = () => {\n\t\twpmConsentValues.categories = {\n\t\t\tanalytics: false,\n\t\t\tads : false,\n\t\t}\n\t}\n\n\twpm.canIFire = (category, pixelName) => {\n\n\t\tlet canIFireMode\n\n\t\tif (\"category\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = !!wpmConsentValues.categories[category]\n\t\t} else if (\"pixel\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(pixelName)\n\n\t\t\t// If a user sets \"bing-ads\" in Borlabs Cookie instead of\n\t\t\t// \"microsoft-ads\" in the Borlabs settings, we need to check\n\t\t\t// for that too.\n\t\t\tif (false === canIFireMode && \"microsoft-ads\" === pixelName) {\n\t\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(\"bing-ads\")\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid consent mode in wpmConsentValues\")\n\t\t\tcanIFireMode = false\n\t\t}\n\n\t\tif (canIFireMode) {\n\t\t\treturn true\n\t\t} else {\n\t\t\tif (true || wpm.urlHasParameter(\"debugConsentMode\")) {\n\t\t\t\twpm.logPreventedPixelLoading(pixelName, category)\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.logPreventedPixelLoading = (pixelName, category) => {\n\n\t\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent) {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)\")\n\t\t} else {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)\")\n\t\t}\n\t}\n\n\t/**\n\t * Runs through each script in <head> and blocks / unblocks it according to the plugin settings\n\t * and user consent.\n\t */\n\n\t// https://stackoverflow.com/q/65453565/4688612\n\twpm.scriptTagObserver = new MutationObserver((mutations) => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif ($(node).data(\"wpm-cookie-category\")) {\n\n\t\t\t\t\t\t// If the pixel category has been approved > unblock\n\t\t\t\t\t\t// If the pixel belongs to more than one category, then unblock if one of the categories has been approved\n\t\t\t\t\t\t// If no category has been approved, but the Google Consent Mode is active, then only unblock the Google scripts\n\n\t\t\t\t\t\tif (wpm.shouldScriptBeActive(node)) {\n\t\t\t\t\t\t\twpm.unblockScript(node)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.blockScript(node)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\twpm.scriptTagObserver.observe(document.head, {childList: true, subtree: true})\n\t// jQuery(document).on(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\tdocument.addEventListener(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\n\twpm.shouldScriptBeActive = node => {\n\n\t\tif (\n\t\t\twpmDataLayer.shop.cookie_consent_mgmt.explicit_consent ||\n\t\t\twpmConsentValues.visitorHasChosen\n\t\t) {\n\n\t\t\tif (wpmConsentValues.mode === \"category\" && $(node).data(\"wpm-cookie-category\").split(\",\").some(element => wpmConsentValues.categories[element])) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && wpmConsentValues.pixels.includes($(node).data(\"wpm-pixel-name\"))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && $(node).data(\"wpm-pixel-name\") === \"google\" && [\"google-analytics\", \"google-ads\"].some(element => wpmConsentValues.pixels.includes(element))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmDataLayer?.pixels?.google?.consent_mode?.active && $(node).data(\"wpm-pixel-name\") === \"google\") {\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\n\twpm.unblockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tlet wpmSrc = $(scriptNode).data(\"wpm-src\")\n\t\tif (wpmSrc) $(scriptNode).attr(\"src\", wpmSrc)\n\n\t\tscriptNode.type = \"text/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.blockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tif ($(scriptNode).attr(\"src\")) $(scriptNode).removeAttr(\"src\")\n\t\tscriptNode.type = \"blocked/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\t}\n\n\twpm.unblockAllScripts = (analytics = true, ads = true) => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\twpm.setConsentValueCategories(analytics, ads)\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.unblockSelectedPixels = () => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.explicitConsentStateAlreadySet = () => {\n\n\t\tif (wpmConsentValues.explicitConsentStateAlreadySet) {\n\t\t\treturn true\n\t\t} else {\n\t\t\twpmConsentValues.explicitConsentStateAlreadySet = true\n\t\t}\n\t}\n\n\n\t/**\n\t * Block or unblock scripts for each CMP immediately after cookie consent has been updated\n\t * by the visitor.\n\t */\n\n\t/**\n\t * Borlabs Cookie\n\t * If visitor accepts cookies in Borlabs Cookie unblock the scripts\n\t */\n\tdocument.addEventListener(\"borlabs-cookie-consent-saved\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\tif (wpmConsentValues.mode === \"pixel\") {\n\n\t\t\twpm.unblockSelectedPixels()\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.pixels.includes(\"google-analytics\"), wpmConsentValues.pixels.includes(\"google-ads\"))\n\t\t} else {\n\n\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t}\n\t})\n\n\t/**\n\t * Cookiebot\n\t * \tIf visitor accepts cookies in Cookiebot unblock the scripts\n\t * \thttps://www.cookiebot.com/en/developer/\n\t */\n\tdocument.addEventListener(\"CookiebotOnAccept\", () => {\n\t\tif (Cookiebot.consent.statistics) wpmConsentValues.categories.analytics = true\n\t\tif (Cookiebot.consent.marketing) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\n\t}, false)\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/article/20-custom-events\n\t */\n\t// jQuery(document).on(\"CookieScriptAccept\", e => {\n\tdocument.addEventListener(\"CookieScriptAccept\", e => {\n\n\t\tif (e.detail.categories.includes(\"performance\")) wpmConsentValues.categories.analytics = true\n\t\tif (e.detail.categories.includes(\"targeting\")) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/\n\t */\n\t// jQuery(document).on(\"CookieScriptAcceptAll\", () => {\n\tdocument.addEventListener(\"CookieScriptAcceptAll\", () => {\n\n\t\twpm.setConsentValueCategories(true, true)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t})\n\n\t/**\n\t * Complianz Cookie\n\t *\n\t * If visitor accepts cookies in Complianz unblock the scripts\n\t */\n\n\twpm.cmplzStatusChange = (cmplzConsentData) => {\n\n\t\tif (cmplzConsentData.detail.categories.includes(\"statistics\")) wpm.updateConsentCookieValues(true, null)\n\t\tif (cmplzConsentData.detail.categories.includes(\"marketing\")) wpm.updateConsentCookieValues(null, true)\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t}\n\n\t// jQuery(document).on(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\t// jQuery(document).on(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\n\t// Cookie Compliance by hu-manity.co (free and pro)\n\t// If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (free version)\n\t// https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t// jQuery(document).on(\"setCookieNotice\", () => {\n\tdocument.addEventListener(\"setCookieNotice\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Compliance by hu-manity.co (free and pro)\n\t * If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (pro version)\n\t * https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t * Because Cookie Notice has no documented API or event that is being triggered on consent save or update\n\t * we have to solve this by using a mutation observer.\n\t *\n\t * @type {MutationObserver}\n\t */\n\n\twpm.huObserver = new MutationObserver(mutations => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif (node.id === \"hu\") {\n\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\").on(\"click\", function () {\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\") in pure JavaScript\n\t\t\t\t\t\tdocument.querySelector(\".hu-cookies-save\").addEventListener(\"click\", () => {\n\t\t\t\t\t\t\twpm.updateConsentCookieValues()\n\t\t\t\t\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\tif (window.hu) {\n\t\twpm.huObserver.observe(document.documentElement || document.body, {childList: true, subtree: true})\n\t}\n\n\t/**\n\t * Usercentrics Event Listeners\n\t *\n\t * https://docs.usercentrics.com/#/v2-events?id=usage-as-window-event\n\t */\n\n\twindow.addEventListener(\"ucEvent\", function (e) {\n\t\tif (e.detail && e.detail.event == \"consent_status\") {\n\t\t\t// check for consent status of service \"Google Ads Remarketing\"\n\t\t\tif (e.detail[\"Google Ads Remarketing\"] === true) {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has consent\")\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has no consent\")\n\t\t\t}\n\t\t}\n\t})\n\n\t// https://docs.usercentrics.com/#/v2-events?id=uc_ui_cmp_event\n\twindow.addEventListener(\"UC_UI_CMP_EVENT\", function (event) {\n\n\t\tif (event.detail.type === \"ACCEPT_ALL\") {\n\t\t\t// console.log('accept all');\n\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tif (event.detail.type === \"DENY_ALL\") {\n\t\t\tpmw.consentRevokeAll()\n\t\t}\n\n\t\tif (event.detail.type === \"SAVE\") {\n\t\t\tconsole.log(\"event.detail\", event.detail)\n\t\t}\n\t})\n\n\n\t/**\n\t * OneTrust Event Listeners\n\t *\n\t * CookiePro by OneTrust doesn't emit any events when the user accepts or declines cookies.\n\t */\n\n\t// There are two accept all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\"#accept-recommended-btn-handler, #onetrust-accept-btn-handler\").on(\"click\", function () {\n\n\t\t// If OneTrust is not loaded, return\n\t\tif (typeof window.OneTrust === \"undefined\") return\n\n\t\tpmw.consentAcceptAll()\n\t})\n\n\t// There are two revoke all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\".ot-pc-refuse-all-handler, #onetrust-reject-all-handler\").on(\"click\", function () {\n\t\tpmw.consentRevokeAll()\n\t})\n\n\t// There is one save button that saves mixed consent. It is in the settings window. We reload the page after saving to reflect the changes.\n\tjQuery(\".save-preference-btn-handler.onetrust-close-btn-handler\").on(\"click\", function () {\n\t\tlocation.reload()\n\n\t\t// OneTrust.OnConsentChanged(function (e) {\n\t\t// \tpmw.consentAdjustSelectively({\n\t\t// \t\tanalytics: e.detail.includes(\"2\"),\n\t\t// \t\tads : e.detail.includes(\"4\"),\n\t\t// \t})\n\t\t// })\n\t})\n\n\n}(window.wpm = window.wpm || {}, jQuery));\n\n\n(function (pmw, $, undefined) {\n\n\t/**\n\t * Pixel Manager Cookie Consent API\n\t */\n\n\t// Accept consent for all cookies\n\tpmw.consentAcceptAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(true, true, settings.duration)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t}\n\n\t// Accept consent selectively\n\tpmw.consentAdjustSelectively = (settings) => {\n\n\t\t// If settings.analytics is set, keep it, otherwise set it to wpm.getConsentValues().categories.analytics\n\t\tsettings.analytics = settings.analytics !== undefined ? settings.analytics : wpm.getConsentValues().categories.analytics\n\t\tsettings.ads = settings.ads !== undefined ? settings.ads : wpm.getConsentValues().categories.ads\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(settings.analytics, settings.ads, settings.duration)\n\t\twpm.unblockAllScripts(settings.analytics, settings.ads)\n\t\twpm.updateGoogleConsentMode(settings.analytics, settings.ads)\n\t}\n\n\t// Remove consent for all cookies\n\tpmw.consentRevokeAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\twpm.setConsentValueCategories(false, false)\n\t\tpmw.consentSetCookie(false, false, settings.duration)\n\t\twpm.updateGoogleConsentMode(false, false)\n\t}\n\n\t// Set a cookie called pmw_cookie_consent with the value of pmw_cookie_consent\n\t// and set the default expiration date to 1 year from now\n\tpmw.consentSetCookie = (analytics, ads, duration = 365) => {\n\t\twpm.setCookie(\"pmw_cookie_consent\", JSON.stringify({analytics, ads}), duration)\n\t}\n\n\t// Trigger an event once the PMW consent management has been loaded\n\tjQuery(document).trigger(\"pmw_cookie_consent_management_loaded\")\n\n}(window.pmw = window.pmw || {}, jQuery))\n","/**\n * Register event listeners\n */\n\n// remove_from_cart event\n// jQuery('.remove_from_cart_button, .remove').on('click', function (e) {\njQuery(document).on(\"click\", \".remove_from_cart_button, .remove\", (event) => {\n\n\ttry {\n\n\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"))\n\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\twpm.removeProductFromCart(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// add_to_cart event\njQuery(document).on(\"click\", \".add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .single_add_to_cart_button\", (event) => {\n\n\ttry {\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\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// jQuery('a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)').one('click', function (event) {\njQuery(document).one(\"click\", \"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\", (event) => {\n\n\ttry {\n\t\tif (jQuery(event.target).closest(\"a\").attr(\"href\")) {\n\n\t\t\tlet href = jQuery(event.target).closest(\"a\").attr(\"href\")\n\n\t\t\tif (href.includes(\"add-to-cart=\")) {\n\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) wpm.addProductToCart(matches[2], 1)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select_content GA UA event\n// select_item GA4 event\n// jQuery(document).on('click', '.woocommerce-LoopProduct-link, .wc-block-grid__product, .product-small.box', function (e) {\n// jQuery('.woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product').on('click', function (e) {\njQuery(document).on(\"click\", \".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\", (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// begin_checkout event\nlet checkoutButtonClasses = [\n\t\".checkout-button\",\n\t\".cart-checkout-button\",\n\t\".button.checkout\",\n\t\".xoo-wsc-ft-btn-checkout\", // https://xootix.com/side-cart-for-woocommerce/\n\t\".elementor-button--checkout\",\n]\n\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).one(\"click init_checkout\", checkoutButtonClasses.join(\",\"), () => {\n\t// console.log(\"begin_checkout\", new Date().getTime())\n\n\tjQuery(document).trigger(\"wpmBeginCheckout\")\n})\n\n\n// checkout_progress event\n// track checkout option event: entered valid billing email\njQuery(document).on(\"input\", \"#billing_email\", (event) => {\n\n\tif (wpm.isEmail(jQuery(event.currentTarget).val())) {\n\t\t// wpm.fireCheckoutOption(2);\n\t\twpm.fireCheckoutProgress(2)\n\t\twpm.emailSelected = true\n\t}\n})\n\n// track checkout option event: purchase click\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).on(\"wpmLoad\", (event) => {\n\tjQuery(document).on(\"payment_method_selected\", () => {\n\n\t\tif (false === wpm.paymentMethodSelected) {\n\t\t\twpm.fireCheckoutProgress(3)\n\t\t}\n\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t\twpm.paymentMethodSelected = true\n\t})\n})\n\n/**\n * Place order button\n *\n * Track checkout option event: purchase click\n * https://stackoverflow.com/a/34112407/4688612\n * jQuery(document).one(\"click\", \"#place_order\", () => {\n */\njQuery(() => {\n\tjQuery(\"form.checkout\").on(\"checkout_place_order_success\", () => {\n\n\t\tif (false === wpm.emailSelected) {\n\t\t\twpm.fireCheckoutProgress(2)\n\t\t}\n\n\t\tif (false === wpm.paymentMethodSelected) {\n\t\t\twpm.fireCheckoutProgress(3)\n\t\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t\t}\n\n\t\twpm.fireCheckoutProgress(4)\n\n\t\tjQuery(document).trigger(\"wpmPlaceOrder\", {})\n\t})\n})\n\n// update cart event\n// jQuery(\"[name='update_cart']\").on('click', function (e) {\njQuery(document).on(\"click\", \"[name='update_cart']\", (event) => {\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\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\n// add_to_wishlist\njQuery(function () {\n\n\tjQuery(\".add_to_wishlist,.wl-add-to\").on(\"click\", event => {\n\n\t\ttry {\n\n\t\t\tlet productId\n\n\t\t\tif (jQuery(event.currentTarget).data(\"productid\")) { // for the WooCommerce wishlist plugin\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"productid\")\n\t\t\t} else if (jQuery(event.currentTarget).data(\"product-id\")) { // for the YITH wishlist plugin\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product-id\")\n\t\t\t}\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\n\t\t\tjQuery(document).trigger(\"wpmAddToWishlist\", product)\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\njQuery(document).on(\"updated_cart_totals\", () => {\n\tjQuery(document).trigger(\"wpmViewCart\")\n})\n\n\n/**\n * Called when the user selects all the required dropdowns / attributes\n *\n * Has to be hooked after document ready !\n *\n * https://stackoverflow.com/a/27849208/4688612\n * https://stackoverflow.com/a/65065335/4688612\n */\n\njQuery(() => {\n\n\tjQuery(\".single_variation_wrap\").on(\"show_variation\", (event, variation) => {\n\n\t\ttry {\n\t\t\tlet productId = wpm.getIdBasedOndVariationsOutputSetting(variation.variation_id)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\twpm.triggerViewItemEventPrep(productId)\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n\n/**\n * Called on variable products when no selection has been done yet\n * or when the visitor deselects his choice.\n *\n * Has to be hooked after document ready !\n */\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n//\n// \t\ttry {\n// \t\t\tlet classes = jQuery(\"body\").attr(\"class\")\n// \t\t\tlet productId = classes.match(/(postid-)(\\d+)/)[2]\n//\n// \t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n//\n// \t\t\t/**\n// \t\t\t * If we have a variable product with no preset,\n// \t\t\t * and variations output is enabled,\n// \t\t\t * then we send a viewItem event with the first\n// \t\t\t * variation we find for the parent.\n// \t\t\t * If variations output is disabled,\n// \t\t\t * we just send the parent ID.\n// \t\t\t *\n// \t\t\t * And if Facebook microdata is active, use the\n// \t\t\t * microdata product ID.\n// \t\t\t */\n//\n// \t\t\tif (\n// \t\t\t\t\"variable\" === wpmDataLayer.shop.product_type &&\n// \t\t\t\twpmDataLayer?.general?.variationsOutput\n// \t\t\t) {\n// \t\t\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n// \t\t\t\t\tif (\"parentId\" in product) {\n//\n// \t\t\t\t\t\tproductId = product.id\n// \t\t\t\t\t\tbreak\n// \t\t\t\t\t}\n// \t\t\t\t}\n//\n// \t\t\t\tif (wpmDataLayer?.pixels?.facebook?.microdata_product_id) {\n// \t\t\t\t\tproductId = wpmDataLayer.pixels.facebook.microdata_product_id\n// \t\t\t\t}\n// \t\t\t}\n//\n// \t\t\t// console.log(\"hmm\")\n// \t\t\twpm.triggerViewItemEventPrep(productId)\n//\n// \t\t} catch (e) {\n// \t\t\tconsole.error(e)\n// \t\t}\n// \t})\n// })\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n// \t\tjQuery(document).trigger(\"wpmviewitem\")\n// \t})\n// })\n\n\n/**\n * Set up wpm events\n */\n\n// populate the wpmDataLayer with the cart items\njQuery(document).on(\"wpmLoad\", () => {\n\n\ttry {\n\t\t// When a new session is initiated there are no items in the cart,\n\t\t// so we can save the call to get the cart items\n\t\tif (wpm.doesWooCommerceCartExist()) wpm.getCartItems()\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// get all add-to-cart= products from backend\njQuery(document).on(\"wpmLoad\", () => {\n\n\twpmDataLayer.products = wpmDataLayer.products || {}\n\n\t// scan page for add-to-cart= links\n\tlet productIds = wpm.getAddToCartLinkProductIds()\n\n\twpm.getProductsFromBackend(productIds)\n})\n\n/**\n * Save the referrer into a cookie\n */\n\njQuery(document).on(\"wpmLoad\", () => {\n\n\t// can't use session storage as we can't read it from the server\n\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\n\t\tif (document.referrer) {\n\t\t\tlet referrerUrl = new URL(document.referrer)\n\t\t\tlet referrerHostname = referrerUrl.hostname\n\n\t\t\tif (referrerHostname !== window.location.host) {\n\t\t\t\twpm.setCookie(\"wpmReferrer\", referrerHostname)\n\t\t\t}\n\t\t}\n\t}\n})\n\n\n/**\n * Create our own load event in order to better handle script flow execution when JS \"optimizers\" shuffle the code.\n */\n\njQuery(document).on(\"wpmLoad\", () => {\n\t// document.addEventListener(\"wpmLoad\", function () {\n\ttry {\n\t\tif (typeof wpmDataLayer != \"undefined\" && !wpmDataLayer?.wpmLoadFired) {\n\n\t\t\tjQuery(document).trigger(\"wpmLoadAlways\")\n\n\t\t\tif (wpmDataLayer?.shop) {\n\t\t\t\tif (\n\t\t\t\t\t\"product\" === wpmDataLayer.shop.page_type &&\n\t\t\t\t\t\"variable\" !== wpmDataLayer.shop.product_type &&\n\t\t\t\t\twpm.getMainProductIdFromProductPage()\n\t\t\t\t) {\n\t\t\t\t\tlet product = wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage())\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t\t} else if (\"product_category\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmCategory\")\n\t\t\t\t} else if (\"search\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmSearch\")\n\t\t\t\t} else if (\"cart\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewCart\")\n\t\t\t\t} else if (\"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer.order) {\n\t\t\t\t\tif (!wpm.isOrderIdStored(wpmDataLayer.order.id)) {\n\t\t\t\t\t\tjQuery(document).trigger(\"wpmOrderReceivedPage\")\n\t\t\t\t\t\twpm.writeOrderIdToStorage(wpmDataLayer.order.id)\n\t\t\t\t\t\tif (typeof wpm.acrRemoveCookie === \"function\") wpm.acrRemoveCookie()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.user?.id && !wpm.hasLoginEventFired()) {\n\t\t\t\tjQuery(document).trigger(\"wpmLogin\")\n\t\t\t\twpm.setLoginEventFired()\n\t\t\t}\n\n\t\t\t// /**\n\t\t\t// * Load mini cart fragments into a wpm session storage key,\n\t\t\t// * after the document load event.\n\t\t\t// */\n\t\t\t// jQuery(document).ajaxSend(function (event, jqxhr, settings) {\n\t\t\t// \t// console.log('settings.url: ' + settings.url);\n\t\t\t//\n\t\t\t// \tif (settings.url.includes(\"get_refreshed_fragments\") && sessionStorage) {\n\t\t\t// \t\tif (!sessionStorage.getItem(\"wpmMiniCartActive\")) {\n\t\t\t// \t\t\tsessionStorage.setItem(\"wpmMiniCartActive\", JSON.stringify(true))\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// })\n\n\t\t\twpmDataLayer.wpmLoadFired = true\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\njQuery(document).on(\"wpmLoad\", async () => {\n\n\tif (\n\t\twindow.sessionStorage &&\n\t\twindow.sessionStorage.getItem(\"_pmw_endpoint_available\") &&\n\t\t!JSON.parse(window.sessionStorage.getItem(\"_pmw_endpoint_available\"))\n\t) {\n\t\tconsole.error(\"Pixel Manager for WooCommerce: REST endpoint is not available. Using admin-ajax.php instead.\")\n\t}\n})\n\n\n/**\n * Load all pixels\n */\njQuery(document).on(\"wpmPreLoadPixels\", () => {\n\n\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent && !wpm.explicitConsentStateAlreadySet()) {\n\t\twpm.updateConsentCookieValues(null, null, true)\n\t}\n\n\tjQuery(document).trigger(\"wpmLoadPixels\", {})\n})\n\n\n/**\n * All ecommerce events\n */\n\njQuery(document).on(\"wpmAddToCart\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToCart\",\n\t\tproduct: product,\n\t}\n\n\t// If Facebook pixel is loaded, add Facebook server to server event data to the payload\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToCart\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToCart\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmBeginCheckout\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"beginCheckout\",\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"InitiateCheckout\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (wpmDataLayer?.cart && !jQuery.isEmptyObject(wpmDataLayer.cart)) {\n\t\t\tpayload.facebook.custom_data = {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tcontent_ids : wpm.fbGetContentIdsFromCart(),\n\t\t\t\tvalue : wpm.getCartValue(),\n\t\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideBeginCheckout\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmAddToWishlist\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToWishlist\",\n\t\tproduct: product,\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToWishlist\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"viewItem\",\n\t\tproduct: product,\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"ViewContent\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.facebook.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideViewItem\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmSearch\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"search\",\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Search\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tsearch_string: wpm.getSearchTermFromUrl(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideSearch\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmOrderReceivedPage\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"orderReceived\",\n\t}\n\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Purchase\",\n\t\t\tevent_id : wpmDataLayer.order.id,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tcontent_ids : wpm.facebookContentIds(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideOrderReceivedPage\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// ! No server-to-server event is sent for this event because it is compiled and sent from the server directly\n})\n\n\n\n\n\n","/**\n * Create a wpm namespace under which all functions are declared\n */\n\n// https://stackoverflow.com/a/5947280/4688612\n\n(function (wpm, $, undefined) {\n\n\tconst wpmDeduper = {\n\t\tkeyName : \"_wpm_order_ids\",\n\t\tcookieExpiresDays: 365,\n\t}\n\n\tconst wpmRestSettings = {\n\t\t// cookiesAvailable : '_wpm_cookies_are_available',\n\t\tcookiePmwRestEndpointAvailable: \"_pmw_endpoint_available\",\n\t\trestEndpointPost : \"pmw/v1/test/\",\n\t\trestFails : 0,\n\t\trestFailsThreshold : 10,\n\t}\n\n\twpm.emailSelected = false\n\twpm.paymentMethodSelected = false\n\n\t// wpm.checkIfCookiesAvailable = function () {\n\t//\n\t// // read the cookie if previously set, if it is return true, otherwise continue\n\t// if (wpm.getCookie(wpmRestSettings.cookiesAvailable)) {\n\t// return true;\n\t// }\n\t//\n\t// // set the cookie for the session\n\t// Cookies.set(wpmRestSettings.cookiesAvailable, true);\n\t//\n\t// // read cookie, true if ok, false if not ok\n\t// return !!wpm.getCookie(wpmRestSettings.cookiesAvailable);\n\t// }\n\n\twpm.useRestEndpoint = () => {\n\n\t\t// only if sessionStorage is available\n\n\t\t// only if REST API endpoint is generally accessible\n\t\t// check in sessionStorage if we checked before and return answer\n\t\t// otherwise check if the endpoint is available, save answer in sessionStorage and return answer\n\n\t\t// only if not too many REST API errors happened\n\n\t\treturn wpm.isSessionStorageAvailable() &&\n\t\t\twpm.isRestEndpointAvailable() &&\n\t\t\twpm.isBelowRestErrorThreshold()\n\t}\n\n\twpm.isBelowRestErrorThreshold = () => window.sessionStorage.getItem(wpmRestSettings.restFails) <= wpmRestSettings.restFailsThreshold\n\n\twpm.isRestEndpointAvailable = async () => {\n\n\t\tif (window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable)) {\n\t\t\treturn JSON.parse(window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable))\n\t\t} else {\n\t\t\treturn await wpm.testEndpoint()\n\t\t}\n\t}\n\n\twpm.isSessionStorageAvailable = () => !!window.sessionStorage\n\n\t// Test the endpoint by sending a POST request\n\twpm.testEndpoint = async (\n\t\turl = wpm.root + wpmRestSettings.restEndpointPost,\n\t\tcookieName = wpmRestSettings.cookiePmwRestEndpointAvailable,\n\t) => {\n\n\t\tlet response = await fetch(url, {\n\t\t\tmethod : \"POST\",\n\t\t\tmode : \"cors\",\n\t\t\tcache : \"no-cache\",\n\t\t\tkeepalive: true,\n\t\t})\n\n\t\tif (response.status === 200) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(true))\n\t\t\treturn true\n\t\t} else if (response.status === 404) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t} else if (response.status === 0) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isWpmRestEndpointAvailable = (cookieName = wpmRestSettings.cookiePmwRestEndpointAvailable) => !!wpm.getCookie(cookieName)\n\n\twpm.writeOrderIdToStorage = (orderId, source = \"thankyou_page\", expireDays = 365) => {\n\n\t\t// save the order ID in the browser storage\n\n\t\tif (!window.Storage) {\n\t\t\tlet expiresDate = new Date()\n\t\t\texpiresDate.setDate(expiresDate.getDate() + wpmDeduper.cookieExpiresDays)\n\n\t\t\tlet ids = []\n\t\t\tif (checkCookie()) {\n\t\t\t\tids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t}\n\n\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\tids.push(orderId)\n\t\t\t\tdocument.cookie = wpmDeduper.keyName + \"=\" + JSON.stringify(ids) + \";expires=\" + expiresDate.toUTCString()\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (localStorage.getItem(wpmDeduper.keyName) === null) {\n\t\t\t\tlet ids = []\n\t\t\t\tids.push(orderId)\n\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\n\t\t\t} else {\n\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\t\tids.push(orderId)\n\t\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof wpm.storeOrderIdOnServer === \"function\" && wpmDataLayer.orderDeduplication) {\n\t\t\twpm.storeOrderIdOnServer(orderId, source)\n\t\t}\n\t}\n\n\tfunction checkCookie() {\n\t\tlet key = wpm.getCookie(wpmDeduper.keyName)\n\t\treturn key !== \"\"\n\t}\n\n\twpm.isOrderIdStored = orderId => {\n\n\t\tif (wpmDataLayer.orderDeduplication) {\n\n\t\t\tif (!window.Storage) {\n\n\t\t\t\tif (checkCookie()) {\n\t\t\t\t\tlet ids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (localStorage.getItem(wpmDeduper.keyName) !== null) {\n\t\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\"order duplication prevention: off\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isEmail = email => {\n\n\t\t// https://emailregex.com/\n\n\t\tlet regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n\t\treturn regex.test(email)\n\t}\n\n\twpm.removeProductFromCart = (productId, quantityToRemove = null) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet quantity\n\n\t\t\tif (quantityToRemove == null) {\n\t\t\t\tquantity = wpmDataLayer.cart[productId].quantity\n\t\t\t} else {\n\t\t\t\tquantity = quantityToRemove\n\t\t\t}\n\n\t\t\tif (wpmDataLayer.cart[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmRemoveFromCart\", product)\n\n\t\t\t\tif (quantityToRemove == null || wpmDataLayer.cart[productId].quantity === quantityToRemove) {\n\n\t\t\t\t\tdelete wpmDataLayer.cart[productId]\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t} else {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity - quantity\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\t// console.log('getting cart from back end');\n\t\t\t// wpm.getCartItemsFromBackend();\n\t\t\t// console.log('getting cart from back end done');\n\t\t}\n\t}\n\n\twpm.getIdBasedOndVariationsOutputSetting = productId => {\n\n\t\ttry {\n\t\t\tif (wpmDataLayer?.general?.variationsOutput) {\n\n\t\t\t\treturn productId\n\t\t\t} else {\n\t\t\t\tif (wpmDataLayer.products[productId].isVariation) {\n\n\t\t\t\t\treturn wpmDataLayer.products[productId].parentId\n\t\t\t\t} else {\n\n\t\t\t\t\treturn productId\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// add_to_cart\n\twpm.addProductToCart = (productId, quantity) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer?.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmAddToCart\", product)\n\n\t\t\t\t// add product to cart wpmDataLayer['cart']\n\n\t\t\t\t// if the product already exists in the object, only add the additional quantity\n\t\t\t\t// otherwise create that product object in the wpmDataLayer['cart']\n\t\t\t\tif (wpmDataLayer?.cart[productId]) {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity + quantity\n\t\t\t\t} else {\n\n\t\t\t\t\tif (!(\"cart\" in wpmDataLayer)) wpmDataLayer.cart = {}\n\n\t\t\t\t\twpmDataLayer.cart[productId] = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\t\t\t\t}\n\n\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\n\t\t\t// fallback if wpmDataLayer.cart and wpmDataLayer.products got out of sync in case cart caching has an issue\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\twpm.getCartItems = () => {\n\n\t\tif (sessionStorage) {\n\t\t\tif (!sessionStorage.getItem(\"wpmDataLayerCart\") || wpmDataLayer.shop.page_type === \"order_received_page\") {\n\t\t\t\tsessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify({}))\n\t\t\t} else {\n\t\t\t\twpm.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem(\"wpmDataLayerCart\")))\n\t\t\t}\n\t\t} else {\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\t// get all cart items from the backend\n\twpm.getCartItemsFromBackend = () => {\n\t\ttry {\n\n\t\t\t/**\n\t\t\t * Can't use a REST API endpoint, as the cart session will not be loaded if the\n\t\t\t * endpoint is called.\n\t\t\t *\n\t\t\t * https://wordpress.org/support/topic/wc-cart-is-null-in-custom-rest-api/#post-11442843\n\t\t\t */\n\n\t\t\t/**\n\t\t\t * Get the cart items from the backend the data object using fetch API\n\t\t\t * and log success or error messages\n\t\t\t * and url encoded data\n\t\t\t */\n\t\t\tfetch(wpm.ajax_url, {\n\t\t\t\tmethod : \"POST\",\n\t\t\t\tcache : \"no-cache\",\n\t\t\t\tbody : new URLSearchParams({action: \"pmw_get_cart_items\"}),\n\t\t\t\tkeepalive: true,\n\t\t\t})\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(data => {\n\n\t\t\t\t\tif (data.success) {\n\n\t\t\t\t\t\tif (!data.data[\"cart\"]) data.data[\"cart\"] = {}\n\n\t\t\t\t\t\twpm.saveCartObjectToDataLayer(data.data[\"cart\"])\n\n\t\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(data.data[\"cart\"]))\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// get productIds from the backend\n\twpm.getProductsFromBackend = async productIds => {\n\n\t\tif (wpmDataLayer?.products) {\n\t\t\t// reduce productIds by products already in the dataLayer\n\t\t\tproductIds = productIds.filter(item => !wpmDataLayer.products.hasOwnProperty(item))\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(productIds),\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(\"<div id=\\\"viewItemListTriggerOverlay\\\"></div>\")\n\t\tjQuery(target).find(\"#viewItemListTriggerOverlay\").css({\n\t\t\t\"z-index\" : \"10\",\n\t\t\t\"display\" : \"block\",\n\t\t\t\"position\" : \"absolute\",\n\t\t\t\"height\" : \"100%\",\n\t\t\t\"top\" : \"0\",\n\t\t\t\"left\" : \"0\",\n\t\t\t\"right\" : \"0\",\n\t\t\t\"opacity\" : wpmDataLayer.viewItemListTrigger.opacity,\n\t\t\t\"background-color\": wpmDataLayer.viewItemListTrigger.backgroundColor,\n\t\t})\n\t}\n\n\twpm.getSearchTermFromUrl = () => {\n\n\t\ttry {\n\t\t\tlet urlParameters = new URLSearchParams(window.location.search)\n\t\t\treturn urlParameters.get(\"s\")\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// we need this to track timeouts for intersection observers\n\tlet ioTimeouts = {}\n\n\twpm.observerCallback = (entries, observer) => {\n\n\t\tentries.forEach((entry) => {\n\n\t\t\ttry {\n\t\t\t\tlet productId\n\n\t\t\t\tlet elementId = jQuery(entry.target).data(\"ioid\")\n\n\t\t\t\t// Get the productId from next element, if wpmProductId is a sibling, like in Gutenberg blocks\n\t\t\t\t// otherwise go search in children, like in regular WC loop items\n\t\t\t\tif (jQuery(entry.target).next(\".wpmProductId\").length) {\n\t\t\t\t\t// console.log('test 1');\n\t\t\t\t\tproductId = jQuery(entry.target).next(\".wpmProductId\").data(\"id\")\n\t\t\t\t} else {\n\t\t\t\t\tproductId = jQuery(entry.target).find(\".wpmProductId\").data(\"id\")\n\t\t\t\t}\n\n\n\t\t\t\tif (!productId) throw Error(\"wpmProductId element not found\")\n\n\t\t\t\tif (entry.isIntersecting) {\n\n\t\t\t\t\tioTimeouts[elementId] = setTimeout(() => {\n\n\t\t\t\t\t\twpm.triggerViewItemList(productId)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) wpm.viewItemListTriggerTestMode(entry.target)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.repeat === false) observer.unobserve(entry.target)\n\t\t\t\t\t}, wpmDataLayer.viewItemListTrigger.timeout)\n\n\t\t\t\t} else {\n\n\t\t\t\t\tclearTimeout(ioTimeouts[elementId])\n\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) jQuery(entry.target).find(\"#viewItemListTriggerOverlay\").remove()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t})\n\t}\n\n\t// fire view_item_list only on products that have become visible\n\tlet io\n\tlet ioid = 0\n\tlet allIoElementsToWatch\n\n\tlet getAllElementsToWatch = () => {\n\n\t\tallIoElementsToWatch = jQuery(\".wpmProductId\")\n\t\t\t.map(function (i, elem) {\n\n\t\t\t\tif (\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"type-product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product-item-inner\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(elem).parent()\n\t\t\t\t} else if (\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"wc-block-grid__product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product-small\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"woocommerce-LoopProduct-link\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(this).prev()\n\t\t\t\t} else if (jQuery(elem).closest(\".product\").length) {\n\t\t\t\t\treturn jQuery(elem).closest(\".product\")\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\twpm.startIntersectionObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// enable view_item_list test mode from browser\n\t\t\tif (wpm.urlHasParameter(\"vildemomode\")) wpmDataLayer.viewItemListTrigger.testMode = true\n\n\t\t\t// set up intersection observer\n\t\t\tio = new IntersectionObserver(wpm.observerCallback, {\n\t\t\t\tthreshold: wpmDataLayer.viewItemListTrigger.threshold,\n\t\t\t})\n\n\t\t\tgetAllElementsToWatch()\n\n\t\t\tallIoElementsToWatch.each((i, elem) => {\n\n\t\t\t\tjQuery(elem[0]).data(\"ioid\", ioid++)\n\n\t\t\t\tio.observe(elem[0])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// watch DOM for new lazy loaded products and add them to the intersection observer\n\twpm.startProductsMutationObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// Pass in the target node, as well as the observer options\n\n\t\t\t// selects the most common parent node\n\t\t\t// https://stackoverflow.com/a/7648323/4688612\n\t\t\tlet productsNode = jQuery(\".wpmProductId:eq(0)\").parents().has(jQuery(\".wpmProductId:eq(1)\").parents()).first()\n\n\t\t\tif (productsNode.length) {\n\t\t\t\tproductsMutationObserver.observe(productsNode[0], {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// Create an observer instance\n\tlet productsMutationObserver = new MutationObserver(mutations => {\n\n\t\tmutations.forEach(mutation => {\n\t\t\tlet newNodes = mutation.addedNodes // DOM NodeList\n\t\t\tif (newNodes !== null) { // If there are new nodes added\n\t\t\t\tlet nodes = jQuery(newNodes) // jQuery set\n\t\t\t\tnodes.each(function () {\n\t\t\t\t\tif (\n\t\t\t\t\t\tjQuery(this).hasClass(\"type-product\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"product-small\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"wc-block-grid__product\")\n\t\t\t\t\t) {\n\t\t\t\t\t\t// check if the node has a child or sibling wpmProductId\n\t\t\t\t\t\t// if yes add it to the intersectionObserver\n\t\t\t\t\t\tif (hasWpmProductIdElement(this)) {\n\t\t\t\t\t\t\tjQuery(this).data(\"ioid\", ioid++)\n\t\t\t\t\t\t\tio.observe(this)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t})\n\n\tlet hasWpmProductIdElement = elem =>\n\t\t!!(jQuery(elem).find(\".wpmProductId\").length ||\n\t\t\tjQuery(elem).siblings(\".wpmProductId\").length)\n\n\twpm.setCookie = (cookieName, cookieValue = \"\", expiryDays = null) => {\n\n\t\tif (expiryDays) {\n\n\t\t\tlet d = new Date()\n\t\t\td.setTime(d.getTime() + (expiryDays * 24 * 60 * 60 * 1000))\n\t\t\tlet expires = \"expires=\" + d.toUTCString()\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";\" + expires + \";path=/\"\n\t\t} else {\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";path=/\"\n\t\t}\n\t}\n\n\twpm.getCookie = cookieName => {\n\n\t\tlet name = cookieName + \"=\"\n\t\tlet decodedCookie = decodeURIComponent(document.cookie)\n\t\tlet ca = decodedCookie.split(\";\")\n\n\t\tfor (let i = 0; i < ca.length; i++) {\n\n\t\t\tlet c = ca[i]\n\n\t\t\twhile (c.charAt(0) == \" \") {\n\t\t\t\tc = c.substring(1)\n\t\t\t}\n\n\t\t\tif (c.indexOf(name) == 0) {\n\t\t\t\treturn c.substring(name.length, c.length)\n\t\t\t}\n\t\t}\n\n\t\treturn \"\"\n\t}\n\n\twpm.deleteCookie = cookieName => {\n\t\twpm.setCookie(cookieName, \"\", -1)\n\t}\n\n\twpm.getWpmSessionData = () => {\n\n\t\tif (window.sessionStorage) {\n\n\t\t\tlet data = window.sessionStorage.getItem(\"_wpm\")\n\n\t\t\tif (data !== null) {\n\t\t\t\treturn JSON.parse(data)\n\t\t\t} else {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t} else {\n\t\t\treturn {}\n\t\t}\n\t}\n\n\twpm.setWpmSessionData = data => {\n\t\tif (window.sessionStorage) {\n\t\t\twindow.sessionStorage.setItem(\"_wpm\", JSON.stringify(data))\n\t\t}\n\t}\n\n\twpm.storeOrderIdOnServer = async (orderId, source) => {\n\n\t\ttry {\n\n\t\t\tlet response\n\n\t\t\tif (await wpm.isRestEndpointAvailable()) {\n\n\t\t\t\tresponse = await fetch(wpm.root + \"pmw/v1/pixels-fired/\", {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t},\n\t\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\t\torder_id: orderId,\n\t\t\t\t\t\tsource: source\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t\tcache\t: \"no-cache\",\n\t\t\t\t})\n\n\t\t\t} else {\n\t\t\t\t// save the state in the database\n\n\t\t\t\t// Send the data object with ajax request\n\t\t\t\t// and log success or error using fetch API and url encoded\n\t\t\t\tresponse = await fetch(wpm.ajax_url, {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\tbody : new URLSearchParams({\n\t\t\t\t\t\taction : \"pmw_purchase_pixels_fired\",\n\t\t\t\t\t\torder_id: orderId,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (response.ok) {\n\t\t\t\tconsole.log(\"wpm.storeOrderIdOnServer success\")\n\t\t\t} else {\n\t\t\t\tconsole.error(\"wpm.storeOrderIdOnServer error\")\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getProductIdByCartItemKeyUrl = url => {\n\n\t\tlet searchParams = new URLSearchParams(url.search)\n\t\tlet cartItemKey = searchParams.get(\"remove_item\")\n\n\t\tlet productId\n\n\t\tif (wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"] === 0) {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"product_id\"]\n\t\t} else {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"]\n\t\t}\n\n\t\treturn productId\n\t}\n\n\twpm.getAddToCartLinkProductIds = () =>\n\t\tjQuery(\"a\").map(function () {\n\t\t\tlet href = jQuery(this).attr(\"href\")\n\n\t\t\tif (href && href.includes(\"?add-to-cart=\")) {\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) return matches[2]\n\t\t\t}\n\t\t}).get()\n\n\twpm.getProductDetailsFormattedForEvent = (productId, quantity = 1) => {\n\n\t\tlet product = {\n\t\t\tid : productId.toString(),\n\t\t\tdyn_r_ids : wpmDataLayer.products[productId].dyn_r_ids,\n\t\t\tname : wpmDataLayer.products[productId].name,\n\t\t\tlist_name : wpmDataLayer.shop.list_name,\n\t\t\tbrand : wpmDataLayer.products[productId].brand,\n\t\t\tcategory : wpmDataLayer.products[productId].category,\n\t\t\tvariant : wpmDataLayer.products[productId].variant,\n\t\t\tlist_position: wpmDataLayer.products[productId].position,\n\t\t\tquantity : quantity,\n\t\t\tprice : wpmDataLayer.products[productId].price,\n\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\tisVariable : wpmDataLayer.products[productId].isVariable,\n\t\t\tisVariation : wpmDataLayer.products[productId].isVariation,\n\t\t\tparentId : wpmDataLayer.products[productId].parentId,\n\t\t}\n\n\t\tif (product.isVariation) product[\"parentId_dyn_r_ids\"] = wpmDataLayer.products[productId].parentId_dyn_r_ids\n\n\t\treturn product\n\t}\n\n\twpm.setReferrerToCookie = () => {\n\n\t\t// can't use session storage as we can't read it from the server\n\t\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\t\t\twpm.setCookie(\"wpmReferrer\", document.referrer)\n\t\t}\n\t}\n\n\twpm.getReferrerFromCookie = () => {\n\n\t\tif (wpm.getCookie(\"wpmReferrer\")) {\n\t\t\treturn wpm.getCookie(\"wpmReferrer\")\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t}\n\n\twpm.getClidFromBrowser = (clidId = \"gclid\") => {\n\n\t\tlet clidCookieId\n\n\t\tclidCookieId = {\n\t\t\tgclid: \"_gcl_aw\",\n\t\t\tdclid: \"_gcl_dc\",\n\t\t}\n\n\t\tif (wpm.getCookie(clidCookieId[clidId])) {\n\n\t\t\tlet clidCookie = wpm.getCookie(clidCookieId[clidId])\n\t\t\tlet matches = clidCookie.match(/(GCL.[\\d]*.)(.*)/)\n\t\t\treturn matches[2]\n\t\t} else {\n\t\t\treturn \"\"\n\t\t}\n\t}\n\n\twpm.getUserAgent = () => navigator.userAgent\n\n\twpm.getViewPort = () => ({\n\t\twidth : Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n\t\theight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0),\n\t})\n\n\n\twpm.version = () => {\n\t\tconsole.log(wpmDataLayer.version)\n\t}\n\n\t/**\n\t * https://api.jquery.com/jquery.getscript/\n\t *\n\t * Switched back to jQuery.ajax as the fetch method on some sites returned a type error\n\t * Possible reasons are:\n\t * \t* CORS mismatch\n\t * \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}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load all WPM functions\n *\n * Ignore event listeners. They need to be loaded after\n * we made sure that jQuery has been loaded.\n */\n\nrequire(\"./functions\")\nrequire(\"./cookie_consent\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// #endif\n","/**\n * After WPM is loaded\n * we first check if wpmDataLayer is loaded,\n * and as soon as it is, we load the pixels,\n * and as soon as the page load is complete,\n * we fire the wpmLoad event.\n *\n * @param {{pro:bool}} wpmDataLayer.version\n *\n * https://stackoverflow.com/a/25868457/4688612\n * https://stackoverflow.com/a/44093516/4688612\n */\n\nwpm.wpmDataLayerExists()\n\t.then(() => {\n\t\tconsole.log(\"Pixel Manager for WooCommerce: \" + (wpmDataLayer.version.pro ? \"Pro\" : \"Free\") + \" Version \" + wpmDataLayer.version.number + \" loaded\")\n\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t})\n\t.then(() => {\n\t\twpm.pageLoaded().then(function () {\n\t\t\tdocument.dispatchEvent(new Event(\"wpmLoad\"))\n\t\t})\n\t})\n\n\n/**\n * Run when page is ready\n */\n\nwpm.pageReady().then(function () {\n\n\t/**\n\t * Run as soon as wpm namespace is loaded\n\t */\n\n\twpm.wpmDataLayerExists()\n\t\t.then(() => {\n\t\t\t// watch for products visible in viewport\n\t\t\twpm.startIntersectionObserverToWatch()\n\n\t\t\t// watch for lazy loaded products\n\t\t\twpm.startProductsMutationObserverToWatch()\n\t\t})\n})\n\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\n * Load all essential scripts first\n */\n\nrequire(\"./wpm/functions_loader\")\n\n// Only load the event listeners after jQuery has been loaded for sure\nwpm.jQueryExists().then(function () {\n\n\trequire(\"./wpm/event_listeners\")\n\n\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","canIFire","loadFacebookPixel","event","payload","fbq","custom_data","eventID","event_id","error","console","setFbUserData","$","undefined","fbUserData","f","window","b","e","n","callMethod","apply","arguments","queue","push","_fbq","version","t","createElement","async","src","s","getElementsByTagName","parentNode","insertBefore","data","isFbpSet","getUserIdentifiersForFb","user","id","external_id","order","user_id","email","em","billing_email_hashed","first_name","fn","billing_first_name","toLowerCase","last_name","ln","billing_last_name","phone","ph","billing_phone","replace","city","ct","billing_city","state","st","billing_state","postcode","zp","billing_postcode","country","billing_country","getFbRandomEventId","Math","random","toString","substring","getFbUserData","getFbUserDataFromBrowser","getCookie","isValidFbp","fbp","isValidFbc","fbc","navigator","userAgent","client_user_agent","RegExp","test","fbGetProductDataForCapiEvent","product","content_type","content_name","name","content_ids","dyn_r_ids","dynamic_remarketing","id_type","value","parseFloat","quantity","price","currency","facebookContentIds","prodIds","key","item","Object","entries","items","general","variationsOutput","variation_id","String","products","trackCustomFacebookEvent","eventName","customData","eventId","trigger","event_name","user_data","event_source_url","location","href","fbGetContentIdsFromCart","cart","require","isEmptyObject","google","ads","conversionIds","status","googleConfigConditionsMet","isVariable","send_events_with_parent_ids","send_to","getGoogleAdsConversionIdentifiers","google_business_vertical","gtagLoaded","then","gtag","value_filtered","getGoogleAdsDynamicRemarketingOrderItems","getGoogleAdsConversionIdentifiersWithLabel","data_basic","data_with_cart","transaction_id","number","new_customer","clv_order_value_filtered","customer_lifetime_value","aw_merchant_id","discount","aw_feed_country","aw_feed_language","getGoogleAdsRegularOrderItems","conversionIdentifiers","orderItems","orderItem","analytics","universal","property_id","mp_active","affiliation","value_regular","tax","shipping","coupon","getGAUAOrderItems","category","join","variant","variant_name","brand","ga3AddListNameToProduct","item_data","productPosition","list_name","shop","list_position","ga4","measurement_id","getGA4OrderItems","item_name","item_category","item_id","item_variant","item_brand","canGoogleLoad","loadGoogle","logPreventedPixelLoading","type","consent_mode","active","getConsentValues","mode","categories","includes","getVisitorConsentStatusAndUpdateGoogleConsentSettings","google_consent_settings","analytics_storage","ad_storage","updateGoogleConsentMode","cookie_consent_mgmt","explicit_consent","fireGtagGoogleAds","enhanced_conversions","phone_conversion_label","phone_conversion_number","keys","page_type","enhanced_conversion_data","fireGtagGoogleAnalyticsUA","parameters","fireGtagGoogleAnalyticsGA4","debug_mode","isGoogleActive","getGoogleGtagId","loadScriptAndCacheIt","script","textStatus","dataLayer","wait_for_update","region","ads_data_redaction","url_passthrough","linker","settings","Date","Promise","resolve","reject","startTime","wait","setTimeout","optimize","container_id","load_google_optimize_pixel","hotjar","site_id","load_hotjar_pixel","h","o","hj","q","_hjSettings","hjid","hjsv","a","r","appendChild","getComplianzCookies","cmplz_statistics","cmplz_marketing","visitorHasChosen","getCookieLawInfoCookies","analyticsCookie","adsCookie","wpmConsentValues","setConsentValueCategories","updateConsentCookieValues","cookie","explicitConsent","JSON","parse","decodeURI","indexOf","action","length","consents","statistics","marketing","thirdparty","advanced","localStorage","getItem","log","UC_UI","addEventListener","ucUiProcessConsent","areAllConsentsAccepted","groups","URLSearchParams","get","split","groupsObject","forEach","group","groupArray","groubsObject","pmw","consentAcceptAll","ucStatisticsSlug","getSettingsLabels","filter","label","slug","consentAdjustSelectively","getServicesBaseInfo","categorySlug","consent","setConsentDefaultValuesToExplicit","pixelName","canIFireMode","scriptTagObserver","MutationObserver","mutations","addedNodes","node","shouldScriptBeActive","unblockScript","blockScript","observe","head","childList","subtree","disconnect","some","element","scriptNode","removeAttach","remove","wpmSrc","attr","appendTo","dispatchEvent","Event","removeAttr","unblockAllScripts","unblockSelectedPixels","explicitConsentStateAlreadySet","Cookiebot","detail","cmplzStatusChange","cmplzConsentData","huObserver","querySelector","hu","documentElement","body","consentRevokeAll","OneTrust","reload","duration","consentSetCookie","setCookie","stringify","url","URL","currentTarget","productId","getProductIdByCartItemKeyUrl","removeProductFromCart","addProductToCart","product_type","Number","val","each","index","find","classes","getPostIdFromString","one","target","closest","matches","match","nextAll","getIdBasedOndVariationsOutputSetting","Error","getProductDetailsFormattedForEvent","isEmail","fireCheckoutProgress","emailSelected","paymentMethodSelected","fireCheckoutOption","getCartItemsFromBackend","variation","triggerViewItemEventPrep","doesWooCommerceCartExist","getCartItems","productIds","getAddToCartLinkProductIds","getProductsFromBackend","referrer","referrerHostname","hostname","host","wpmLoadFired","getMainProductIdFromProductPage","getProductDataForViewItemEvent","isOrderIdStored","writeOrderIdToStorage","acrRemoveCookie","hasLoginEventFired","setLoginEventFired","sessionStorage","sendEventPayloadToServer","getCartValue","search_string","getSearchTermFromUrl","wpmDeduper","wpmRestSettings","checkCookie","useRestEndpoint","isSessionStorageAvailable","isRestEndpointAvailable","isBelowRestErrorThreshold","testEndpoint","root","cookieName","response","fetch","method","cache","keepalive","setItem","isWpmRestEndpointAvailable","orderId","source","Storage","ids","expiresDate","setDate","getDate","toUTCString","storeOrderIdOnServer","orderDeduplication","quantityToRemove","isVariation","parentId","saveCartObjectToDataLayer","ajax_url","ok","json","success","hasOwnProperty","headers","responseData","assign","cartObject","triggerViewItemEvent","triggerViewItemEventNoProduct","step","checkout_option","string","triggerViewItemList","viewItemListTriggerTestMode","css","append","viewItemListTrigger","opacity","backgroundColor","search","io","ioTimeouts","observerCallback","observer","entry","elementId","next","isIntersecting","testMode","repeat","unobserve","timeout","clearTimeout","allIoElementsToWatch","ioid","getAllElementsToWatch","map","i","elem","parent","hasClass","prev","this","startIntersectionObserverToWatch","urlHasParameter","IntersectionObserver","threshold","startProductsMutationObserverToWatch","productsNode","parents","has","first","productsMutationObserver","attributes","characterData","mutation","newNodes","hasWpmProductIdElement","siblings","cookieValue","expiryDays","d","setTime","getTime","expires","ca","decodeURIComponent","c","charAt","deleteCookie","getWpmSessionData","setWpmSessionData","order_id","cartItemKey","cartItemKeys","position","parentId_dyn_r_ids","setReferrerToCookie","getReferrerFromCookie","getClidFromBrowser","clidCookieId","clidId","gclid","dclid","getUserAgent","getViewPort","width","max","clientWidth","innerWidth","height","clientHeight","innerHeight","options","dataType","ajax","getOrderItemPrice","total","total_tax","loginEventFired","wpmDataLayerExists","waitForVar","jQueryExists","waitForjQuery","pageLoaded","readyState","pageReady","isMiniCartActive","parameter","hashAsync","algo","str","crypto","subtle","digest","TextEncoder","encode","buf","Array","prototype","call","Uint8Array","x","slice","pro","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""}
|
languages/woocommerce-google-adwords-conversion-tracking-tag.pot
CHANGED
@@ -2,16 +2,16 @@
|
|
2 |
# This file is distributed under the GNU General Public License v3.0.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Pixel Manager for WooCommerce 1.25.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-10-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
-
"X-Generator: WP-CLI 2.
|
15 |
"X-Domain: woocommerce-google-adwords-conversion-tracking-tag\n"
|
16 |
|
17 |
#. Plugin Name of the plugin
|
@@ -34,795 +34,808 @@ msgstr ""
|
|
34 |
msgid "https://sweetcode.com"
|
35 |
msgstr ""
|
36 |
|
37 |
-
#: classes/admin/class-admin.php:
|
38 |
-
#: classes/admin/class-admin.php:
|
39 |
#: wgact.php:292
|
40 |
#: wgact.php:293
|
41 |
msgid "Pixel Manager"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: classes/admin/class-admin.php:
|
45 |
msgid "Main"
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: classes/admin/class-admin.php:
|
49 |
msgid "Google"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: classes/admin/class-admin.php:
|
53 |
msgid "Google Ads Conversion ID"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: classes/admin/class-admin.php:
|
57 |
msgid "Google Ads Purchase Conversion Label"
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: classes/admin/class-admin.php:
|
61 |
msgid "Google Analytics UA"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: classes/admin/class-admin.php:
|
65 |
msgid "Google Analytics 4"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: classes/admin/class-admin.php:
|
69 |
msgid "Google Optimize"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: classes/admin/class-admin.php:
|
73 |
msgid "Meta (Facebook)"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: classes/admin/class-admin.php:
|
77 |
msgid "Meta (Facebook) pixel ID"
|
78 |
msgstr ""
|
79 |
|
80 |
-
#: classes/admin/class-admin.php:
|
81 |
msgid "more pixels"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: classes/admin/class-admin.php:
|
85 |
msgid "Microsoft Advertising UET tag ID"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: classes/admin/class-admin.php:
|
89 |
msgid "Twitter pixel ID"
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: classes/admin/class-admin.php:
|
93 |
msgid "Pinterest pixel ID"
|
94 |
msgstr ""
|
95 |
|
96 |
-
#: classes/admin/class-admin.php:
|
97 |
msgid "Pinterest Enhanced Match"
|
98 |
msgstr ""
|
99 |
|
100 |
-
#: classes/admin/class-admin.php:
|
101 |
msgid "Snapchat pixel ID"
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: classes/admin/class-admin.php:
|
105 |
msgid "TikTok pixel ID"
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: classes/admin/class-admin.php:
|
109 |
msgid "Hotjar site ID"
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: classes/admin/class-admin.php:
|
113 |
msgid "Advanced"
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: classes/admin/class-admin.php:
|
117 |
msgid "Order Total Logic"
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: classes/admin/class-admin.php:
|
121 |
msgid "Order Duplication Prevention"
|
122 |
msgstr ""
|
123 |
|
124 |
-
#: classes/admin/class-admin.php:
|
125 |
msgid "Maximum Compatibility Mode"
|
126 |
msgstr ""
|
127 |
|
128 |
-
#: classes/admin/class-admin.php:
|
129 |
msgid "Disable Tracking for User Roles"
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: classes/admin/class-admin.php:
|
133 |
msgid "ACR"
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: classes/admin/class-admin.php:
|
137 |
msgid "Order List Info"
|
138 |
msgstr ""
|
139 |
|
140 |
-
#: classes/admin/class-admin.php:
|
141 |
msgid "Scroll Tracker"
|
142 |
msgstr ""
|
143 |
|
144 |
-
#: classes/admin/class-admin.php:
|
145 |
msgid "Conversion Cart Data"
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: classes/admin/class-admin.php:
|
149 |
msgid "Enhanced E-Commerce"
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: classes/admin/class-admin.php:
|
153 |
-
msgid "
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: classes/admin/class-admin.php:
|
157 |
msgid "Enhanced Link Attribution"
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: classes/admin/class-admin.php:
|
161 |
msgid "Google User ID"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: classes/admin/class-admin.php:
|
165 |
msgid "Google Ads Enhanced Conversions"
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: classes/admin/class-admin.php:
|
169 |
msgid "Google Ads Phone Conversion Number"
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: classes/admin/class-admin.php:
|
173 |
msgid "Google Ads Phone Conversion Label"
|
174 |
msgstr ""
|
175 |
|
176 |
-
#: classes/admin/class-admin.php:
|
177 |
msgid "Google Ads Conversion Adjustments: Conversion Name"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: classes/admin/class-admin.php:
|
181 |
msgid "Google Ads Conversion Adjustments: Feed"
|
182 |
msgstr ""
|
183 |
|
184 |
-
#: classes/admin/class-admin.php:
|
185 |
msgid "Cookie Consent Management"
|
186 |
msgstr ""
|
187 |
|
188 |
-
#: classes/admin/class-admin.php:
|
189 |
msgid "Google Consent Mode"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: classes/admin/class-admin.php:
|
193 |
msgid "Google Consent Regions"
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: classes/admin/class-admin.php:
|
197 |
msgid "Explicit Consent Mode"
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: classes/admin/class-admin.php:
|
201 |
msgid "Borlabs Cookie Support"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: classes/admin/class-admin.php:
|
205 |
msgid "Cookiebot Support"
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: classes/admin/class-admin.php:
|
209 |
msgid "Complianz GDPR Support"
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: classes/admin/class-admin.php:
|
213 |
msgid "Cookie Notice Support"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: classes/admin/class-admin.php:
|
217 |
msgid "Cookie Script Support"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: classes/admin/class-admin.php:
|
221 |
msgid "GDPR Cookie Compliance Support"
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: classes/admin/class-admin.php:
|
225 |
msgid "GDPR Cookie Consent Support"
|
226 |
msgstr ""
|
227 |
|
228 |
-
#: classes/admin/class-admin.php:
|
229 |
msgid "Meta (Facebook) CAPI: token"
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: classes/admin/class-admin.php:
|
|
|
|
|
|
|
|
|
233 |
msgid "Meta (Facebook) CAPI: process anonymous hits"
|
234 |
msgstr ""
|
235 |
|
236 |
-
#: classes/admin/class-admin.php:
|
237 |
msgid "Meta (Facebook) CAPI: send additional visitor identifiers"
|
238 |
msgstr ""
|
239 |
|
240 |
-
#: classes/admin/class-admin.php:
|
241 |
msgid "Meta (Facebook) Microdata Tags for Catalogues"
|
242 |
msgstr ""
|
243 |
|
244 |
-
#: classes/admin/class-admin.php:
|
245 |
-
#: classes/admin/class-admin.php:
|
246 |
-
#: classes/admin/class-admin.php:
|
247 |
msgid "Dynamic Remarketing"
|
248 |
msgstr ""
|
249 |
|
250 |
-
#: classes/admin/class-admin.php:
|
251 |
msgid "Product Identifier"
|
252 |
msgstr ""
|
253 |
|
254 |
-
#: classes/admin/class-admin.php:
|
255 |
msgid "Variations output"
|
256 |
msgstr ""
|
257 |
|
258 |
-
#: classes/admin/class-admin.php:
|
259 |
msgid "Google Business Vertical"
|
260 |
msgstr ""
|
261 |
|
262 |
-
#: classes/admin/class-admin.php:
|
263 |
-
#: classes/admin/class-admin.php:
|
264 |
msgid "Diagnostics"
|
265 |
msgstr ""
|
266 |
|
267 |
-
#: classes/admin/class-admin.php:
|
268 |
-
#: classes/admin/class-admin.php:
|
269 |
msgid "Support"
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: classes/admin/class-admin.php:
|
273 |
-
#: classes/admin/class-admin.php:
|
274 |
msgid "Author"
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: classes/admin/class-admin.php:
|
278 |
msgid ""
|
279 |
"It looks like you are using some sort of ad or script blocker which is blocking the script and CSS files of this plugin.\n"
|
280 |
" In order for the plugin to work properly you need to disable the script blocker."
|
281 |
msgstr ""
|
282 |
|
283 |
-
#: classes/admin/class-admin.php:
|
284 |
#: classes/admin/class-notifications.php:96
|
285 |
#: classes/admin/class-notifications.php:146
|
286 |
msgid "Learn more"
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: classes/admin/class-admin.php:
|
290 |
msgid "Profit Driven Marketing by SweetCode"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: classes/admin/class-admin.php:
|
294 |
msgid "Visit us here:"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: classes/admin/class-admin.php:
|
298 |
msgid "Payment Gateway Tracking Accuracy Report"
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: classes/admin/class-admin.php:
|
302 |
-
#: classes/admin/class-admin.php:
|
303 |
-
#: classes/admin/class-admin.php:
|
304 |
msgid "beta"
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: classes/admin/class-admin.php:
|
308 |
msgid "What's this? Follow this link to learn more"
|
309 |
msgstr ""
|
310 |
|
311 |
-
#: classes/admin/class-admin.php:
|
312 |
msgid "Available payment gateways"
|
313 |
msgstr ""
|
314 |
|
315 |
-
#: classes/admin/class-admin.php:
|
316 |
msgid "id"
|
317 |
msgstr ""
|
318 |
|
319 |
-
#: classes/admin/class-admin.php:
|
320 |
msgid "method_title"
|
321 |
msgstr ""
|
322 |
|
323 |
-
#: classes/admin/class-admin.php:
|
324 |
msgid "class"
|
325 |
msgstr ""
|
326 |
|
327 |
-
#: classes/admin/class-admin.php:
|
328 |
msgid "Purchase confirmation page reached per gateway (active and inactive)"
|
329 |
msgstr ""
|
330 |
|
331 |
-
#: classes/admin/class-admin.php:
|
332 |
-
#: classes/admin/class-admin.php:
|
333 |
-
#: classes/admin/class-admin.php:
|
334 |
msgid "The analysis is being generated. Please check back in 5 minutes."
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: classes/admin/class-admin.php:
|
338 |
msgid "Purchase confirmation page reached per gateway (only active), weighted by frequency"
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: classes/admin/class-admin.php:
|
342 |
msgid "Automatic Conversion Recovery (ACR)"
|
343 |
msgstr ""
|
344 |
|
345 |
#. translators: The number and percentage of orders that were recovered by the Automatic Conversion Recovery (ACR).
|
346 |
-
#: classes/admin/class-admin.php:
|
347 |
msgid "ACR recovered %1$s (%2$s%%) out of %3$s missing conversions."
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: classes/admin/class-admin.php:
|
351 |
msgid "This feature is only available in the pro version of the plugin. Follow the link to learn more about it:"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: classes/admin/class-admin.php:
|
355 |
msgid "Get the pro version of the Pixel Manager for WooCommerce over here"
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: classes/admin/class-admin.php:
|
359 |
msgid "Go Pro"
|
360 |
msgstr ""
|
361 |
|
362 |
-
#: classes/admin/class-admin.php:
|
363 |
msgid "Contacting Support"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: classes/admin/class-admin.php:
|
367 |
msgid "Debug Information"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: classes/admin/class-admin.php:
|
371 |
msgid "copy to clipboard"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: classes/admin/class-admin.php:
|
375 |
msgid "Export settings"
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: classes/admin/class-admin.php:
|
379 |
msgid "Export to disk"
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: classes/admin/class-admin.php:
|
383 |
msgid "Import settings"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: classes/admin/class-admin.php:
|
387 |
msgid "Settings imported successfully!"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: classes/admin/class-admin.php:
|
391 |
msgid "Reloading...(in 5 seconds)!"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: classes/admin/class-admin.php:
|
395 |
msgid "There was an error importing that file! Please try again."
|
396 |
msgstr ""
|
397 |
|
398 |
-
#: classes/admin/class-admin.php:
|
399 |
msgid "Translations"
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: classes/admin/class-admin.php:
|
403 |
msgid "If you want to participate improving the translations of this plugin into your language, please follow this link:"
|
404 |
msgstr ""
|
405 |
|
406 |
-
#: classes/admin/class-admin.php:
|
407 |
msgid "Post a support request in the WordPress support forum here: "
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: classes/admin/class-admin.php:
|
411 |
msgid "Support forum"
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: classes/admin/class-admin.php:
|
415 |
msgid "(Never post the debug or other sensitive information to the support forum. Instead send us the information by email.)"
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: classes/admin/class-admin.php:
|
419 |
msgid "Or send us an email to the following address: "
|
420 |
msgstr ""
|
421 |
|
422 |
-
#: classes/admin/class-admin.php:
|
423 |
msgid "Send us your support request through the WooCommerce.com dashboard: "
|
424 |
msgstr ""
|
425 |
|
426 |
-
#: classes/admin/class-admin.php:
|
427 |
msgid "More details about the developer of this plugin: "
|
428 |
msgstr ""
|
429 |
|
430 |
-
#: classes/admin/class-admin.php:
|
431 |
msgid "Developer: SweetCode"
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: classes/admin/class-admin.php:
|
435 |
msgid "Website: "
|
436 |
msgstr ""
|
437 |
|
438 |
-
#: classes/admin/class-admin.php:
|
439 |
msgid "The Google Analytics Universal property ID looks like this:"
|
440 |
msgstr ""
|
441 |
|
442 |
-
#: classes/admin/class-admin.php:
|
443 |
msgid "The Google Analytics 4 measurement ID looks like this:"
|
444 |
msgstr ""
|
445 |
|
446 |
-
#: classes/admin/class-admin.php:
|
447 |
msgid "The conversion ID looks similar to this:"
|
448 |
msgstr ""
|
449 |
|
450 |
-
#: classes/admin/class-admin.php:
|
451 |
msgid "The purchase conversion label looks similar to this:"
|
452 |
msgstr ""
|
453 |
|
454 |
-
#: classes/admin/class-admin.php:
|
455 |
-
#: classes/admin/class-admin.php:
|
456 |
msgid "Requires an active Google Ads Conversion ID"
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: classes/admin/class-admin.php:
|
460 |
msgid "The Google Optimize container ID looks like this:"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: classes/admin/class-admin.php:
|
464 |
-
#: classes/admin/class-admin.php:
|
465 |
msgid "or"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: classes/admin/class-admin.php:
|
469 |
msgid "The Meta (Facebook) pixel ID looks similar to this:"
|
470 |
msgstr ""
|
471 |
|
472 |
-
#: classes/admin/class-admin.php:
|
473 |
msgid "The Microsoft Advertising UET tag ID looks similar to this:"
|
474 |
msgstr ""
|
475 |
|
476 |
-
#: classes/admin/class-admin.php:
|
477 |
msgid "The Twitter pixel ID looks similar to this:"
|
478 |
msgstr ""
|
479 |
|
480 |
-
#: classes/admin/class-admin.php:
|
481 |
msgid "The Pinterest pixel ID looks similar to this:"
|
482 |
msgstr ""
|
483 |
|
484 |
-
#: classes/admin/class-admin.php:
|
485 |
msgid "Enable Pinterest enhanced match"
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: classes/admin/class-admin.php:
|
489 |
msgid "The Snapchat pixel ID looks similar to this:"
|
490 |
msgstr ""
|
491 |
|
492 |
-
#: classes/admin/class-admin.php:
|
493 |
msgid "The TikTok pixel ID looks similar to this:"
|
494 |
msgstr ""
|
495 |
|
496 |
-
#: classes/admin/class-admin.php:
|
497 |
msgid "The Hotjar site ID looks similar to this:"
|
498 |
msgstr ""
|
499 |
|
500 |
-
#: classes/admin/class-admin.php:
|
501 |
msgid "Order Subtotal: Doesn't include tax and shipping (default)"
|
502 |
msgstr ""
|
503 |
|
504 |
-
#: classes/admin/class-admin.php:
|
505 |
msgid "Order Total: Includes tax and shipping"
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: classes/admin/class-admin.php:
|
509 |
msgid "Profit Margin: Only reports the profit margin. Excludes tax, shipping, and where possible, gateway fees."
|
510 |
msgstr ""
|
511 |
|
512 |
-
#: classes/admin/class-admin.php:
|
513 |
msgid "This is the order total amount reported back to the paid ads pixels (such as Google Ads, Facebook, etc.)"
|
514 |
msgstr ""
|
515 |
|
516 |
-
#: classes/admin/class-admin.php:
|
517 |
msgid "To use the Profit Margin setting you will need to install one of the following two Cost of Goods plugins:"
|
518 |
msgstr ""
|
519 |
|
520 |
-
#: classes/admin/class-admin.php:
|
521 |
-
#: classes/admin/class-admin.php:
|
522 |
msgid "open the documentation"
|
523 |
msgstr ""
|
524 |
|
525 |
-
#: classes/admin/class-admin.php:
|
526 |
msgid "Enable Google consent mode with standard settings"
|
527 |
msgstr ""
|
528 |
|
529 |
-
#: classes/admin/class-admin.php:
|
530 |
msgid "If no region is set, then the restrictions are enabled for all regions. If you specify one or more regions, then the restrictions only apply for the specified regions."
|
531 |
msgstr ""
|
532 |
|
533 |
-
#: classes/admin/class-admin.php:
|
534 |
msgid "Google Analytics Enhanced E-Commerce is "
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: classes/admin/class-admin.php:
|
538 |
msgid "Google Analytics 4 activation required"
|
539 |
msgstr ""
|
540 |
|
541 |
-
#: classes/admin/class-admin.php:
|
542 |
msgid "If enabled, purchase and refund events will be sent to Google through the measurement protocol for increased accuracy."
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: classes/admin/class-admin.php:
|
|
|
|
|
|
|
|
|
|
|
546 |
msgid "Enable Google Analytics enhanced link attribution"
|
547 |
msgstr ""
|
548 |
|
549 |
-
#: classes/admin/class-admin.php:
|
550 |
-
#: classes/admin/class-admin.php:
|
551 |
msgid "You need to activate at least Google Analytics UA or Google Analytics 4"
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: classes/admin/class-admin.php:
|
555 |
msgid "Enable Google user ID"
|
556 |
msgstr ""
|
557 |
|
558 |
-
#: classes/admin/class-admin.php:
|
559 |
msgid "Enable Google Ads Enhanced Conversions"
|
560 |
msgstr ""
|
561 |
|
562 |
-
#: classes/admin/class-admin.php:
|
563 |
msgid "You need to activate Google Ads"
|
564 |
msgstr ""
|
565 |
|
566 |
-
#: classes/admin/class-admin.php:
|
567 |
msgid "The Google Ads phone conversion number must be in the same format as on the website."
|
568 |
msgstr ""
|
569 |
|
570 |
-
#: classes/admin/class-admin.php:
|
571 |
msgid "The conversion name must match the conversion name in Google Ads exactly."
|
572 |
msgstr ""
|
573 |
|
574 |
-
#: classes/admin/class-admin.php:
|
575 |
msgid "Requires an active Google Ads Conversion ID and Conversion Label."
|
576 |
msgstr ""
|
577 |
|
578 |
-
#: classes/admin/class-admin.php:
|
579 |
-
msgid "The Conversion Name must be set."
|
580 |
-
msgstr ""
|
581 |
-
|
582 |
-
#: classes/admin/class-admin.php:2439
|
583 |
msgid "Borlabs Cookie detected. Automatic support is:"
|
584 |
msgstr ""
|
585 |
|
586 |
-
#: classes/admin/class-admin.php:
|
587 |
msgid "Cookiebot detected. Automatic support is:"
|
588 |
msgstr ""
|
589 |
|
590 |
-
#: classes/admin/class-admin.php:
|
591 |
msgid "Complianz GDPR detected. Automatic support is:"
|
592 |
msgstr ""
|
593 |
|
594 |
-
#: classes/admin/class-admin.php:
|
595 |
msgid "Cookie Notice (by hu-manity.co) detected. Automatic support is:"
|
596 |
msgstr ""
|
597 |
|
598 |
-
#: classes/admin/class-admin.php:
|
599 |
msgid "Cookie Script (by cookie-script.com) detected. Automatic support is:"
|
600 |
msgstr ""
|
601 |
|
602 |
-
#: classes/admin/class-admin.php:
|
603 |
msgid "GDPR Cookie Compliance (by Moove Agency) detected. Automatic support is:"
|
604 |
msgstr ""
|
605 |
|
606 |
-
#: classes/admin/class-admin.php:
|
607 |
msgid "GDPR Cookie Consent (by WebToffee) detected. Automatic support is:"
|
608 |
msgstr ""
|
609 |
|
610 |
-
#: classes/admin/class-admin.php:
|
611 |
msgid "Enable Explicit Consent Mode"
|
612 |
msgstr ""
|
613 |
|
614 |
-
#: classes/admin/class-admin.php:
|
615 |
msgid "Only activate the Explicit Consent Mode if you are also using a Cookie Management Platform (a cookie banner) that is compatible with this plugin. Find a list of compatible plugins in the documentation."
|
616 |
msgstr ""
|
617 |
|
618 |
-
#: classes/admin/class-admin.php:
|
619 |
-
#: classes/admin/class-admin.php:
|
620 |
-
#: classes/admin/class-admin.php:
|
621 |
-
#: classes/admin/class-admin.php:
|
622 |
msgid "You need to activate the Meta (Facebook) pixel"
|
623 |
msgstr ""
|
624 |
|
625 |
-
#: classes/admin/class-admin.php:
|
|
|
|
|
|
|
|
|
626 |
msgid "Send CAPI hits for anonymous visitors who likely have blocked the Meta (Facebook) pixel."
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: classes/admin/class-admin.php:
|
630 |
msgid "Include additional visitor's identifiers, such as IP address, email and shop ID in the CAPI hit."
|
631 |
msgstr ""
|
632 |
|
633 |
-
#: classes/admin/class-admin.php:
|
634 |
msgid "Enable Meta (Facebook) product microdata output"
|
635 |
msgstr ""
|
636 |
|
637 |
-
#: classes/admin/class-admin.php:
|
638 |
msgid "Only disable order duplication prevention for testing. Remember to re-enable the setting once done."
|
639 |
msgstr ""
|
640 |
|
641 |
-
#: classes/admin/class-admin.php:
|
642 |
msgid "Enable the maximum compatibility mode"
|
643 |
msgstr ""
|
644 |
|
645 |
-
#: classes/admin/class-admin.php:
|
646 |
msgid "Automatic Conversion Recovery (ACR) is "
|
647 |
msgstr ""
|
648 |
|
649 |
-
#: classes/admin/class-admin.php:
|
650 |
msgid "Display PMW related information on the order list page"
|
651 |
msgstr ""
|
652 |
|
653 |
-
#: classes/admin/class-admin.php:
|
654 |
msgid "The Scroll Tracker thresholds. A comma separated list of scroll tracking thresholds in percent where the scroll tracker triggers its events."
|
655 |
msgstr ""
|
656 |
|
657 |
-
#: classes/admin/class-admin.php:
|
658 |
msgid "Advanced order duplication prevention is "
|
659 |
msgstr ""
|
660 |
|
661 |
-
#: classes/admin/class-admin.php:
|
662 |
msgid "Basic order duplication prevention is "
|
663 |
msgstr ""
|
664 |
|
665 |
-
#: classes/admin/class-admin.php:
|
666 |
msgid "Enable dynamic remarketing audience collection"
|
667 |
msgstr ""
|
668 |
|
669 |
-
#: classes/admin/class-admin.php:
|
670 |
msgid "You need to choose the correct product identifier setting in order to match the product identifiers in the product feeds."
|
671 |
msgstr ""
|
672 |
|
673 |
-
#: classes/admin/class-admin.php:
|
674 |
msgid "Enable variations output"
|
675 |
msgstr ""
|
676 |
|
677 |
-
#: classes/admin/class-admin.php:
|
678 |
msgid "In order for this to work you need to upload your product feed including product variations and the item_group_id. Disable it, if you choose only to upload the parent product for variable products."
|
679 |
msgstr ""
|
680 |
|
681 |
-
#: classes/admin/class-admin.php:
|
682 |
msgid "Retail"
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: classes/admin/class-admin.php:
|
686 |
msgid "Education"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: classes/admin/class-admin.php:
|
690 |
msgid "Hotels and rentals"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: classes/admin/class-admin.php:
|
694 |
msgid "Jobs"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: classes/admin/class-admin.php:
|
698 |
msgid "Local deals"
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: classes/admin/class-admin.php:
|
702 |
msgid "Real estate"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: classes/admin/class-admin.php:
|
706 |
msgid "Custom"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: classes/admin/class-admin.php:
|
710 |
msgid "ID of your Google Merchant Center account. It looks like this: 12345678"
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: classes/admin/class-admin.php:
|
714 |
msgid "post ID (default)"
|
715 |
msgstr ""
|
716 |
|
717 |
-
#: classes/admin/class-admin.php:
|
718 |
msgid "SKU"
|
719 |
msgstr ""
|
720 |
|
721 |
-
#: classes/admin/class-admin.php:
|
722 |
msgid "ID for the WooCommerce Google Product Feed. Outputs the post ID with woocommerce_gpf_ prefix *"
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: classes/admin/class-admin.php:
|
726 |
msgid "ID for the WooCommerce Google Listings & Ads Plugin. Outputs the post ID with gla_ prefix **"
|
727 |
msgstr ""
|
728 |
|
729 |
-
#: classes/admin/class-admin.php:
|
730 |
msgid "Choose a product identifier."
|
731 |
msgstr ""
|
732 |
|
733 |
-
#: classes/admin/class-admin.php:
|
734 |
msgid "* This is for users of the WooCommerce Google Product Feed Plugin"
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: classes/admin/class-admin.php:
|
738 |
msgid "** This is for users of the WooCommerce Google Listings & Ads Plugin"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: classes/admin/class-admin.php:
|
742 |
-
#: classes/admin/class-admin.php:
|
743 |
msgid "active"
|
744 |
msgstr ""
|
745 |
|
746 |
-
#: classes/admin/class-admin.php:
|
747 |
-
#: classes/admin/class-admin.php:
|
748 |
msgid "inactive"
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: classes/admin/class-admin.php:
|
752 |
-
#: classes/admin/class-admin.php:
|
753 |
msgid "partially active"
|
754 |
msgstr ""
|
755 |
|
756 |
-
#: classes/admin/class-admin.php:
|
757 |
msgid "Pro Feature"
|
758 |
msgstr ""
|
759 |
|
760 |
-
#: classes/admin/class-admin.php:
|
761 |
msgid "You have entered an invalid Google Analytics Universal property ID."
|
762 |
msgstr ""
|
763 |
|
764 |
-
#: classes/admin/class-admin.php:
|
765 |
msgid "You have entered an invalid Google Analytics 4 measurement ID."
|
766 |
msgstr ""
|
767 |
|
768 |
-
#: classes/admin/class-admin.php:
|
769 |
msgid "You have entered an invalid Google Analytics 4 API key."
|
770 |
msgstr ""
|
771 |
|
772 |
-
#: classes/admin/class-admin.php:
|
773 |
msgid "You have entered an invalid conversion ID. It only contains 8 to 10 digits."
|
774 |
msgstr ""
|
775 |
|
776 |
-
#: classes/admin/class-admin.php:
|
777 |
-
#: classes/admin/class-admin.php:
|
778 |
msgid "You have entered an invalid conversion label."
|
779 |
msgstr ""
|
780 |
|
781 |
-
#: classes/admin/class-admin.php:
|
782 |
msgid "You have entered an invalid merchant ID. It only contains 6 to 12 digits."
|
783 |
msgstr ""
|
784 |
|
785 |
-
#: classes/admin/class-admin.php:
|
786 |
msgid "You have entered an invalid Google Optimize container ID."
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: classes/admin/class-admin.php:
|
790 |
msgid "You have entered an invalid Meta (Facebook) pixel ID. It only contains 14 to 16 digits."
|
791 |
msgstr ""
|
792 |
|
793 |
-
#: classes/admin/class-admin.php:
|
794 |
msgid "You have entered an invalid Meta (Facebook) CAPI token."
|
795 |
msgstr ""
|
796 |
|
797 |
-
#: classes/admin/class-admin.php:
|
|
|
|
|
|
|
|
|
798 |
msgid "You have entered an invalid Bing Ads UET tag ID. It only contains 7 to 9 digits."
|
799 |
msgstr ""
|
800 |
|
801 |
-
#: classes/admin/class-admin.php:
|
802 |
msgid "You have entered an invalid Twitter pixel ID. It only contains 5 to 7 lowercase letters and numbers."
|
803 |
msgstr ""
|
804 |
|
805 |
-
#: classes/admin/class-admin.php:
|
806 |
msgid "You have entered an invalid Pinterest pixel ID. It only contains 13 digits."
|
807 |
msgstr ""
|
808 |
|
809 |
-
#: classes/admin/class-admin.php:
|
810 |
msgid "You have entered an invalid Snapchat pixel ID."
|
811 |
msgstr ""
|
812 |
|
813 |
-
#: classes/admin/class-admin.php:
|
814 |
msgid "You have entered an invalid TikTok pixel ID."
|
815 |
msgstr ""
|
816 |
|
817 |
-
#: classes/admin/class-admin.php:
|
818 |
msgid "You have entered an invalid Hotjar site ID. It only contains 6 to 9 digits."
|
819 |
msgstr ""
|
820 |
|
821 |
-
#: classes/admin/class-admin.php:
|
822 |
msgid "You have entered the Scroll Tracker thresholds in the wrong format. It must be a list of comma separated percentages, like this \"25,50,75,100\""
|
823 |
msgstr ""
|
824 |
|
825 |
-
#: classes/admin/class-admin.php:
|
826 |
msgid "You have entered an invalid conversion name. Special characters, quotes and single quotes are not allowed due to security reasons."
|
827 |
msgstr ""
|
828 |
|
2 |
# This file is distributed under the GNU General Public License v3.0.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Pixel Manager for WooCommerce 1.25.1\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-10-25T02:51:18+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
+
"X-Generator: WP-CLI 2.7.1\n"
|
15 |
"X-Domain: woocommerce-google-adwords-conversion-tracking-tag\n"
|
16 |
|
17 |
#. Plugin Name of the plugin
|
34 |
msgid "https://sweetcode.com"
|
35 |
msgstr ""
|
36 |
|
37 |
+
#: classes/admin/class-admin.php:331
|
38 |
+
#: classes/admin/class-admin.php:332
|
39 |
#: wgact.php:292
|
40 |
#: wgact.php:293
|
41 |
msgid "Pixel Manager"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: classes/admin/class-admin.php:372
|
45 |
msgid "Main"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: classes/admin/class-admin.php:393
|
49 |
msgid "Google"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: classes/admin/class-admin.php:416
|
53 |
msgid "Google Ads Conversion ID"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: classes/admin/class-admin.php:428
|
57 |
msgid "Google Ads Purchase Conversion Label"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: classes/admin/class-admin.php:439
|
61 |
msgid "Google Analytics UA"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: classes/admin/class-admin.php:450
|
65 |
msgid "Google Analytics 4"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: classes/admin/class-admin.php:461
|
69 |
msgid "Google Optimize"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: classes/admin/class-admin.php:473
|
73 |
msgid "Meta (Facebook)"
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: classes/admin/class-admin.php:496
|
77 |
msgid "Meta (Facebook) pixel ID"
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: classes/admin/class-admin.php:508
|
81 |
msgid "more pixels"
|
82 |
msgstr ""
|
83 |
|
84 |
+
#: classes/admin/class-admin.php:533
|
85 |
msgid "Microsoft Advertising UET tag ID"
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: classes/admin/class-admin.php:545
|
89 |
msgid "Twitter pixel ID"
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: classes/admin/class-admin.php:557
|
93 |
msgid "Pinterest pixel ID"
|
94 |
msgstr ""
|
95 |
|
96 |
+
#: classes/admin/class-admin.php:569
|
97 |
msgid "Pinterest Enhanced Match"
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: classes/admin/class-admin.php:581
|
101 |
msgid "Snapchat pixel ID"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: classes/admin/class-admin.php:593
|
105 |
msgid "TikTok pixel ID"
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: classes/admin/class-admin.php:606
|
109 |
msgid "Hotjar site ID"
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: classes/admin/class-admin.php:618
|
113 |
msgid "Advanced"
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: classes/admin/class-admin.php:669
|
117 |
msgid "Order Total Logic"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: classes/admin/class-admin.php:681
|
121 |
msgid "Order Duplication Prevention"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: classes/admin/class-admin.php:693
|
125 |
msgid "Maximum Compatibility Mode"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: classes/admin/class-admin.php:707
|
129 |
msgid "Disable Tracking for User Roles"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: classes/admin/class-admin.php:719
|
133 |
msgid "ACR"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: classes/admin/class-admin.php:732
|
137 |
msgid "Order List Info"
|
138 |
msgstr ""
|
139 |
|
140 |
+
#: classes/admin/class-admin.php:745
|
141 |
msgid "Scroll Tracker"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#: classes/admin/class-admin.php:779
|
145 |
msgid "Conversion Cart Data"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: classes/admin/class-admin.php:792
|
149 |
msgid "Enhanced E-Commerce"
|
150 |
msgstr ""
|
151 |
|
152 |
+
#: classes/admin/class-admin.php:804
|
153 |
+
msgid "GA4 API secret"
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: classes/admin/class-admin.php:841
|
157 |
msgid "Enhanced Link Attribution"
|
158 |
msgstr ""
|
159 |
|
160 |
+
#: classes/admin/class-admin.php:854
|
161 |
msgid "Google User ID"
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: classes/admin/class-admin.php:866
|
165 |
msgid "Google Ads Enhanced Conversions"
|
166 |
msgstr ""
|
167 |
|
168 |
+
#: classes/admin/class-admin.php:880
|
169 |
msgid "Google Ads Phone Conversion Number"
|
170 |
msgstr ""
|
171 |
|
172 |
+
#: classes/admin/class-admin.php:892
|
173 |
msgid "Google Ads Phone Conversion Label"
|
174 |
msgstr ""
|
175 |
|
176 |
+
#: classes/admin/class-admin.php:904
|
177 |
msgid "Google Ads Conversion Adjustments: Conversion Name"
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: classes/admin/class-admin.php:916
|
181 |
msgid "Google Ads Conversion Adjustments: Feed"
|
182 |
msgstr ""
|
183 |
|
184 |
+
#: classes/admin/class-admin.php:929
|
185 |
msgid "Cookie Consent Management"
|
186 |
msgstr ""
|
187 |
|
188 |
+
#: classes/admin/class-admin.php:952
|
189 |
msgid "Google Consent Mode"
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: classes/admin/class-admin.php:964
|
193 |
msgid "Google Consent Regions"
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: classes/admin/class-admin.php:976
|
197 |
msgid "Explicit Consent Mode"
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: classes/admin/class-admin.php:989
|
201 |
msgid "Borlabs Cookie Support"
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: classes/admin/class-admin.php:1003
|
205 |
msgid "Cookiebot Support"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: classes/admin/class-admin.php:1017
|
209 |
msgid "Complianz GDPR Support"
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: classes/admin/class-admin.php:1031
|
213 |
msgid "Cookie Notice Support"
|
214 |
msgstr ""
|
215 |
|
216 |
+
#: classes/admin/class-admin.php:1045
|
217 |
msgid "Cookie Script Support"
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: classes/admin/class-admin.php:1059
|
221 |
msgid "GDPR Cookie Compliance Support"
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: classes/admin/class-admin.php:1073
|
225 |
msgid "GDPR Cookie Consent Support"
|
226 |
msgstr ""
|
227 |
|
228 |
+
#: classes/admin/class-admin.php:1106
|
229 |
msgid "Meta (Facebook) CAPI: token"
|
230 |
msgstr ""
|
231 |
|
232 |
+
#: classes/admin/class-admin.php:1118
|
233 |
+
msgid "Meta (Facebook) CAPI: test event code"
|
234 |
+
msgstr ""
|
235 |
+
|
236 |
+
#: classes/admin/class-admin.php:1130
|
237 |
msgid "Meta (Facebook) CAPI: process anonymous hits"
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: classes/admin/class-admin.php:1142
|
241 |
msgid "Meta (Facebook) CAPI: send additional visitor identifiers"
|
242 |
msgstr ""
|
243 |
|
244 |
+
#: classes/admin/class-admin.php:1158
|
245 |
msgid "Meta (Facebook) Microdata Tags for Catalogues"
|
246 |
msgstr ""
|
247 |
|
248 |
+
#: classes/admin/class-admin.php:1171
|
249 |
+
#: classes/admin/class-admin.php:1184
|
250 |
+
#: classes/admin/class-admin.php:1195
|
251 |
msgid "Dynamic Remarketing"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: classes/admin/class-admin.php:1207
|
255 |
msgid "Product Identifier"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: classes/admin/class-admin.php:1219
|
259 |
msgid "Variations output"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: classes/admin/class-admin.php:1232
|
263 |
msgid "Google Business Vertical"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: classes/admin/class-admin.php:1245
|
267 |
+
#: classes/admin/class-admin.php:1254
|
268 |
msgid "Diagnostics"
|
269 |
msgstr ""
|
270 |
|
271 |
+
#: classes/admin/class-admin.php:1262
|
272 |
+
#: classes/admin/class-admin.php:1271
|
273 |
msgid "Support"
|
274 |
msgstr ""
|
275 |
|
276 |
+
#: classes/admin/class-admin.php:1279
|
277 |
+
#: classes/admin/class-admin.php:1289
|
278 |
msgid "Author"
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: classes/admin/class-admin.php:1336
|
282 |
msgid ""
|
283 |
"It looks like you are using some sort of ad or script blocker which is blocking the script and CSS files of this plugin.\n"
|
284 |
" In order for the plugin to work properly you need to disable the script blocker."
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: classes/admin/class-admin.php:1343
|
288 |
#: classes/admin/class-notifications.php:96
|
289 |
#: classes/admin/class-notifications.php:146
|
290 |
msgid "Learn more"
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: classes/admin/class-admin.php:1387
|
294 |
msgid "Profit Driven Marketing by SweetCode"
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: classes/admin/class-admin.php:1412
|
298 |
msgid "Visit us here:"
|
299 |
msgstr ""
|
300 |
|
301 |
+
#: classes/admin/class-admin.php:1458
|
302 |
msgid "Payment Gateway Tracking Accuracy Report"
|
303 |
msgstr ""
|
304 |
|
305 |
+
#: classes/admin/class-admin.php:1459
|
306 |
+
#: classes/admin/class-admin.php:3154
|
307 |
+
#: classes/admin/class-admin.php:3162
|
308 |
msgid "beta"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: classes/admin/class-admin.php:1463
|
312 |
msgid "What's this? Follow this link to learn more"
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: classes/admin/class-admin.php:1471
|
316 |
msgid "Available payment gateways"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: classes/admin/class-admin.php:1478
|
320 |
msgid "id"
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: classes/admin/class-admin.php:1479
|
324 |
msgid "method_title"
|
325 |
msgstr ""
|
326 |
|
327 |
+
#: classes/admin/class-admin.php:1480
|
328 |
msgid "class"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: classes/admin/class-admin.php:1498
|
332 |
msgid "Purchase confirmation page reached per gateway (active and inactive)"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: classes/admin/class-admin.php:1506
|
336 |
+
#: classes/admin/class-admin.php:1555
|
337 |
+
#: classes/admin/class-admin.php:1630
|
338 |
msgid "The analysis is being generated. Please check back in 5 minutes."
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: classes/admin/class-admin.php:1547
|
342 |
msgid "Purchase confirmation page reached per gateway (only active), weighted by frequency"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: classes/admin/class-admin.php:1618
|
346 |
msgid "Automatic Conversion Recovery (ACR)"
|
347 |
msgstr ""
|
348 |
|
349 |
#. translators: The number and percentage of orders that were recovered by the Automatic Conversion Recovery (ACR).
|
350 |
+
#: classes/admin/class-admin.php:1706
|
351 |
msgid "ACR recovered %1$s (%2$s%%) out of %3$s missing conversions."
|
352 |
msgstr ""
|
353 |
|
354 |
+
#: classes/admin/class-admin.php:1724
|
355 |
msgid "This feature is only available in the pro version of the plugin. Follow the link to learn more about it:"
|
356 |
msgstr ""
|
357 |
|
358 |
+
#: classes/admin/class-admin.php:1726
|
359 |
msgid "Get the pro version of the Pixel Manager for WooCommerce over here"
|
360 |
msgstr ""
|
361 |
|
362 |
+
#: classes/admin/class-admin.php:1728
|
363 |
msgid "Go Pro"
|
364 |
msgstr ""
|
365 |
|
366 |
+
#: classes/admin/class-admin.php:1757
|
367 |
msgid "Contacting Support"
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: classes/admin/class-admin.php:1779
|
371 |
msgid "Debug Information"
|
372 |
msgstr ""
|
373 |
|
374 |
+
#: classes/admin/class-admin.php:1788
|
375 |
msgid "copy to clipboard"
|
376 |
msgstr ""
|
377 |
|
378 |
+
#: classes/admin/class-admin.php:1798
|
379 |
msgid "Export settings"
|
380 |
msgstr ""
|
381 |
|
382 |
+
#: classes/admin/class-admin.php:1810
|
383 |
msgid "Export to disk"
|
384 |
msgstr ""
|
385 |
|
386 |
+
#: classes/admin/class-admin.php:1819
|
387 |
msgid "Import settings"
|
388 |
msgstr ""
|
389 |
|
390 |
+
#: classes/admin/class-admin.php:1824
|
391 |
msgid "Settings imported successfully!"
|
392 |
msgstr ""
|
393 |
|
394 |
+
#: classes/admin/class-admin.php:1827
|
395 |
msgid "Reloading...(in 5 seconds)!"
|
396 |
msgstr ""
|
397 |
|
398 |
+
#: classes/admin/class-admin.php:1833
|
399 |
msgid "There was an error importing that file! Please try again."
|
400 |
msgstr ""
|
401 |
|
402 |
+
#: classes/admin/class-admin.php:1850
|
403 |
msgid "Translations"
|
404 |
msgstr ""
|
405 |
|
406 |
+
#: classes/admin/class-admin.php:1851
|
407 |
msgid "If you want to participate improving the translations of this plugin into your language, please follow this link:"
|
408 |
msgstr ""
|
409 |
|
410 |
+
#: classes/admin/class-admin.php:1869
|
411 |
msgid "Post a support request in the WordPress support forum here: "
|
412 |
msgstr ""
|
413 |
|
414 |
+
#: classes/admin/class-admin.php:1872
|
415 |
msgid "Support forum"
|
416 |
msgstr ""
|
417 |
|
418 |
+
#: classes/admin/class-admin.php:1876
|
419 |
msgid "(Never post the debug or other sensitive information to the support forum. Instead send us the information by email.)"
|
420 |
msgstr ""
|
421 |
|
422 |
+
#: classes/admin/class-admin.php:1879
|
423 |
msgid "Or send us an email to the following address: "
|
424 |
msgstr ""
|
425 |
|
426 |
+
#: classes/admin/class-admin.php:1895
|
427 |
msgid "Send us your support request through the WooCommerce.com dashboard: "
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: classes/admin/class-admin.php:1909
|
431 |
msgid "More details about the developer of this plugin: "
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: classes/admin/class-admin.php:1912
|
435 |
msgid "Developer: SweetCode"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: classes/admin/class-admin.php:1914
|
439 |
msgid "Website: "
|
440 |
msgstr ""
|
441 |
|
442 |
+
#: classes/admin/class-admin.php:1937
|
443 |
msgid "The Google Analytics Universal property ID looks like this:"
|
444 |
msgstr ""
|
445 |
|
446 |
+
#: classes/admin/class-admin.php:1953
|
447 |
msgid "The Google Analytics 4 measurement ID looks like this:"
|
448 |
msgstr ""
|
449 |
|
450 |
+
#: classes/admin/class-admin.php:1969
|
451 |
msgid "The conversion ID looks similar to this:"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: classes/admin/class-admin.php:1985
|
455 |
msgid "The purchase conversion label looks similar to this:"
|
456 |
msgstr ""
|
457 |
|
458 |
+
#: classes/admin/class-admin.php:1989
|
459 |
+
#: classes/admin/class-admin.php:2976
|
460 |
msgid "Requires an active Google Ads Conversion ID"
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: classes/admin/class-admin.php:2007
|
464 |
msgid "The Google Optimize container ID looks like this:"
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: classes/admin/class-admin.php:2009
|
468 |
+
#: classes/admin/class-admin.php:2204
|
469 |
msgid "or"
|
470 |
msgstr ""
|
471 |
|
472 |
+
#: classes/admin/class-admin.php:2025
|
473 |
msgid "The Meta (Facebook) pixel ID looks similar to this:"
|
474 |
msgstr ""
|
475 |
|
476 |
+
#: classes/admin/class-admin.php:2043
|
477 |
msgid "The Microsoft Advertising UET tag ID looks similar to this:"
|
478 |
msgstr ""
|
479 |
|
480 |
+
#: classes/admin/class-admin.php:2062
|
481 |
msgid "The Twitter pixel ID looks similar to this:"
|
482 |
msgstr ""
|
483 |
|
484 |
+
#: classes/admin/class-admin.php:2081
|
485 |
msgid "The Pinterest pixel ID looks similar to this:"
|
486 |
msgstr ""
|
487 |
|
488 |
+
#: classes/admin/class-admin.php:2097
|
489 |
msgid "Enable Pinterest enhanced match"
|
490 |
msgstr ""
|
491 |
|
492 |
+
#: classes/admin/class-admin.php:2123
|
493 |
msgid "The Snapchat pixel ID looks similar to this:"
|
494 |
msgstr ""
|
495 |
|
496 |
+
#: classes/admin/class-admin.php:2144
|
497 |
msgid "The TikTok pixel ID looks similar to this:"
|
498 |
msgstr ""
|
499 |
|
500 |
+
#: classes/admin/class-admin.php:2156
|
501 |
msgid "The Hotjar site ID looks similar to this:"
|
502 |
msgstr ""
|
503 |
|
504 |
+
#: classes/admin/class-admin.php:2166
|
505 |
msgid "Order Subtotal: Doesn't include tax and shipping (default)"
|
506 |
msgstr ""
|
507 |
|
508 |
+
#: classes/admin/class-admin.php:2174
|
509 |
msgid "Order Total: Includes tax and shipping"
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: classes/admin/class-admin.php:2188
|
513 |
msgid "Profit Margin: Only reports the profit margin. Excludes tax, shipping, and where possible, gateway fees."
|
514 |
msgstr ""
|
515 |
|
516 |
+
#: classes/admin/class-admin.php:2196
|
517 |
msgid "This is the order total amount reported back to the paid ads pixels (such as Google Ads, Facebook, etc.)"
|
518 |
msgstr ""
|
519 |
|
520 |
+
#: classes/admin/class-admin.php:2201
|
521 |
msgid "To use the Profit Margin setting you will need to install one of the following two Cost of Goods plugins:"
|
522 |
msgstr ""
|
523 |
|
524 |
+
#: classes/admin/class-admin.php:2228
|
525 |
+
#: classes/admin/class-admin.php:2238
|
526 |
msgid "open the documentation"
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: classes/admin/class-admin.php:2258
|
530 |
msgid "Enable Google consent mode with standard settings"
|
531 |
msgstr ""
|
532 |
|
533 |
+
#: classes/admin/class-admin.php:2296
|
534 |
msgid "If no region is set, then the restrictions are enabled for all regions. If you specify one or more regions, then the restrictions only apply for the specified regions."
|
535 |
msgstr ""
|
536 |
|
537 |
+
#: classes/admin/class-admin.php:2304
|
538 |
msgid "Google Analytics Enhanced E-Commerce is "
|
539 |
msgstr ""
|
540 |
|
541 |
+
#: classes/admin/class-admin.php:2327
|
542 |
msgid "Google Analytics 4 activation required"
|
543 |
msgstr ""
|
544 |
|
545 |
+
#: classes/admin/class-admin.php:2330
|
546 |
msgid "If enabled, purchase and refund events will be sent to Google through the measurement protocol for increased accuracy."
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: classes/admin/class-admin.php:2377
|
550 |
+
#: classes/admin/class-admin.php:2608
|
551 |
+
msgid "The Conversion Name must be set."
|
552 |
+
msgstr ""
|
553 |
+
|
554 |
+
#: classes/admin/class-admin.php:2419
|
555 |
msgid "Enable Google Analytics enhanced link attribution"
|
556 |
msgstr ""
|
557 |
|
558 |
+
#: classes/admin/class-admin.php:2435
|
559 |
+
#: classes/admin/class-admin.php:2465
|
560 |
msgid "You need to activate at least Google Analytics UA or Google Analytics 4"
|
561 |
msgstr ""
|
562 |
|
563 |
+
#: classes/admin/class-admin.php:2454
|
564 |
msgid "Enable Google user ID"
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: classes/admin/class-admin.php:2484
|
568 |
msgid "Enable Google Ads Enhanced Conversions"
|
569 |
msgstr ""
|
570 |
|
571 |
+
#: classes/admin/class-admin.php:2495
|
572 |
msgid "You need to activate Google Ads"
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: classes/admin/class-admin.php:2515
|
576 |
msgid "The Google Ads phone conversion number must be in the same format as on the website."
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: classes/admin/class-admin.php:2551
|
580 |
msgid "The conversion name must match the conversion name in Google Ads exactly."
|
581 |
msgstr ""
|
582 |
|
583 |
+
#: classes/admin/class-admin.php:2559
|
584 |
msgid "Requires an active Google Ads Conversion ID and Conversion Label."
|
585 |
msgstr ""
|
586 |
|
587 |
+
#: classes/admin/class-admin.php:2616
|
|
|
|
|
|
|
|
|
588 |
msgid "Borlabs Cookie detected. Automatic support is:"
|
589 |
msgstr ""
|
590 |
|
591 |
+
#: classes/admin/class-admin.php:2622
|
592 |
msgid "Cookiebot detected. Automatic support is:"
|
593 |
msgstr ""
|
594 |
|
595 |
+
#: classes/admin/class-admin.php:2628
|
596 |
msgid "Complianz GDPR detected. Automatic support is:"
|
597 |
msgstr ""
|
598 |
|
599 |
+
#: classes/admin/class-admin.php:2634
|
600 |
msgid "Cookie Notice (by hu-manity.co) detected. Automatic support is:"
|
601 |
msgstr ""
|
602 |
|
603 |
+
#: classes/admin/class-admin.php:2640
|
604 |
msgid "Cookie Script (by cookie-script.com) detected. Automatic support is:"
|
605 |
msgstr ""
|
606 |
|
607 |
+
#: classes/admin/class-admin.php:2646
|
608 |
msgid "GDPR Cookie Compliance (by Moove Agency) detected. Automatic support is:"
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: classes/admin/class-admin.php:2652
|
612 |
msgid "GDPR Cookie Consent (by WebToffee) detected. Automatic support is:"
|
613 |
msgstr ""
|
614 |
|
615 |
+
#: classes/admin/class-admin.php:2671
|
616 |
msgid "Enable Explicit Consent Mode"
|
617 |
msgstr ""
|
618 |
|
619 |
+
#: classes/admin/class-admin.php:2680
|
620 |
msgid "Only activate the Explicit Consent Mode if you are also using a Cookie Management Platform (a cookie banner) that is compatible with this plugin. Find a list of compatible plugins in the documentation."
|
621 |
msgstr ""
|
622 |
|
623 |
+
#: classes/admin/class-admin.php:2699
|
624 |
+
#: classes/admin/class-admin.php:2752
|
625 |
+
#: classes/admin/class-admin.php:2781
|
626 |
+
#: classes/admin/class-admin.php:2809
|
627 |
msgid "You need to activate the Meta (Facebook) pixel"
|
628 |
msgstr ""
|
629 |
|
630 |
+
#: classes/admin/class-admin.php:2723
|
631 |
+
msgid "The test event code automatically rotates frequently within Facebook. If you don't see the server events flowing in, first make sure that you've set the latest test event code."
|
632 |
+
msgstr ""
|
633 |
+
|
634 |
+
#: classes/admin/class-admin.php:2743
|
635 |
msgid "Send CAPI hits for anonymous visitors who likely have blocked the Meta (Facebook) pixel."
|
636 |
msgstr ""
|
637 |
|
638 |
+
#: classes/admin/class-admin.php:2772
|
639 |
msgid "Include additional visitor's identifiers, such as IP address, email and shop ID in the CAPI hit."
|
640 |
msgstr ""
|
641 |
|
642 |
+
#: classes/admin/class-admin.php:2800
|
643 |
msgid "Enable Meta (Facebook) product microdata output"
|
644 |
msgstr ""
|
645 |
|
646 |
+
#: classes/admin/class-admin.php:2836
|
647 |
msgid "Only disable order duplication prevention for testing. Remember to re-enable the setting once done."
|
648 |
msgstr ""
|
649 |
|
650 |
+
#: classes/admin/class-admin.php:2853
|
651 |
msgid "Enable the maximum compatibility mode"
|
652 |
msgstr ""
|
653 |
|
654 |
+
#: classes/admin/class-admin.php:2888
|
655 |
msgid "Automatic Conversion Recovery (ACR) is "
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: classes/admin/class-admin.php:2906
|
659 |
msgid "Display PMW related information on the order list page"
|
660 |
msgstr ""
|
661 |
|
662 |
+
#: classes/admin/class-admin.php:2928
|
663 |
msgid "The Scroll Tracker thresholds. A comma separated list of scroll tracking thresholds in percent where the scroll tracker triggers its events."
|
664 |
msgstr ""
|
665 |
|
666 |
+
#: classes/admin/class-admin.php:2935
|
667 |
msgid "Advanced order duplication prevention is "
|
668 |
msgstr ""
|
669 |
|
670 |
+
#: classes/admin/class-admin.php:2937
|
671 |
msgid "Basic order duplication prevention is "
|
672 |
msgstr ""
|
673 |
|
674 |
+
#: classes/admin/class-admin.php:2961
|
675 |
msgid "Enable dynamic remarketing audience collection"
|
676 |
msgstr ""
|
677 |
|
678 |
+
#: classes/admin/class-admin.php:2982
|
679 |
msgid "You need to choose the correct product identifier setting in order to match the product identifiers in the product feeds."
|
680 |
msgstr ""
|
681 |
|
682 |
+
#: classes/admin/class-admin.php:3000
|
683 |
msgid "Enable variations output"
|
684 |
msgstr ""
|
685 |
|
686 |
+
#: classes/admin/class-admin.php:3011
|
687 |
msgid "In order for this to work you need to upload your product feed including product variations and the item_group_id. Disable it, if you choose only to upload the parent product for variable products."
|
688 |
msgstr ""
|
689 |
|
690 |
+
#: classes/admin/class-admin.php:3026
|
691 |
msgid "Retail"
|
692 |
msgstr ""
|
693 |
|
694 |
+
#: classes/admin/class-admin.php:3036
|
695 |
msgid "Education"
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: classes/admin/class-admin.php:3046
|
699 |
msgid "Hotels and rentals"
|
700 |
msgstr ""
|
701 |
|
702 |
+
#: classes/admin/class-admin.php:3056
|
703 |
msgid "Jobs"
|
704 |
msgstr ""
|
705 |
|
706 |
+
#: classes/admin/class-admin.php:3066
|
707 |
msgid "Local deals"
|
708 |
msgstr ""
|
709 |
|
710 |
+
#: classes/admin/class-admin.php:3076
|
711 |
msgid "Real estate"
|
712 |
msgstr ""
|
713 |
|
714 |
+
#: classes/admin/class-admin.php:3086
|
715 |
msgid "Custom"
|
716 |
msgstr ""
|
717 |
|
718 |
+
#: classes/admin/class-admin.php:3105
|
719 |
msgid "ID of your Google Merchant Center account. It looks like this: 12345678"
|
720 |
msgstr ""
|
721 |
|
722 |
+
#: classes/admin/class-admin.php:3114
|
723 |
msgid "post ID (default)"
|
724 |
msgstr ""
|
725 |
|
726 |
+
#: classes/admin/class-admin.php:3120
|
727 |
msgid "SKU"
|
728 |
msgstr ""
|
729 |
|
730 |
+
#: classes/admin/class-admin.php:3127
|
731 |
msgid "ID for the WooCommerce Google Product Feed. Outputs the post ID with woocommerce_gpf_ prefix *"
|
732 |
msgstr ""
|
733 |
|
734 |
+
#: classes/admin/class-admin.php:3134
|
735 |
msgid "ID for the WooCommerce Google Listings & Ads Plugin. Outputs the post ID with gla_ prefix **"
|
736 |
msgstr ""
|
737 |
|
738 |
+
#: classes/admin/class-admin.php:3138
|
739 |
msgid "Choose a product identifier."
|
740 |
msgstr ""
|
741 |
|
742 |
+
#: classes/admin/class-admin.php:3141
|
743 |
msgid "* This is for users of the WooCommerce Google Product Feed Plugin"
|
744 |
msgstr ""
|
745 |
|
746 |
+
#: classes/admin/class-admin.php:3145
|
747 |
msgid "** This is for users of the WooCommerce Google Listings & Ads Plugin"
|
748 |
msgstr ""
|
749 |
|
750 |
+
#: classes/admin/class-admin.php:3168
|
751 |
+
#: classes/admin/class-admin.php:3173
|
752 |
msgid "active"
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: classes/admin/class-admin.php:3178
|
756 |
+
#: classes/admin/class-admin.php:3183
|
757 |
msgid "inactive"
|
758 |
msgstr ""
|
759 |
|
760 |
+
#: classes/admin/class-admin.php:3188
|
761 |
+
#: classes/admin/class-admin.php:3193
|
762 |
msgid "partially active"
|
763 |
msgstr ""
|
764 |
|
765 |
+
#: classes/admin/class-admin.php:3204
|
766 |
msgid "Pro Feature"
|
767 |
msgstr ""
|
768 |
|
769 |
+
#: classes/admin/class-admin.php:3236
|
770 |
msgid "You have entered an invalid Google Analytics Universal property ID."
|
771 |
msgstr ""
|
772 |
|
773 |
+
#: classes/admin/class-admin.php:3244
|
774 |
msgid "You have entered an invalid Google Analytics 4 measurement ID."
|
775 |
msgstr ""
|
776 |
|
777 |
+
#: classes/admin/class-admin.php:3252
|
778 |
msgid "You have entered an invalid Google Analytics 4 API key."
|
779 |
msgstr ""
|
780 |
|
781 |
+
#: classes/admin/class-admin.php:3260
|
782 |
msgid "You have entered an invalid conversion ID. It only contains 8 to 10 digits."
|
783 |
msgstr ""
|
784 |
|
785 |
+
#: classes/admin/class-admin.php:3268
|
786 |
+
#: classes/admin/class-admin.php:3276
|
787 |
msgid "You have entered an invalid conversion label."
|
788 |
msgstr ""
|
789 |
|
790 |
+
#: classes/admin/class-admin.php:3284
|
791 |
msgid "You have entered an invalid merchant ID. It only contains 6 to 12 digits."
|
792 |
msgstr ""
|
793 |
|
794 |
+
#: classes/admin/class-admin.php:3292
|
795 |
msgid "You have entered an invalid Google Optimize container ID."
|
796 |
msgstr ""
|
797 |
|
798 |
+
#: classes/admin/class-admin.php:3300
|
799 |
msgid "You have entered an invalid Meta (Facebook) pixel ID. It only contains 14 to 16 digits."
|
800 |
msgstr ""
|
801 |
|
802 |
+
#: classes/admin/class-admin.php:3308
|
803 |
msgid "You have entered an invalid Meta (Facebook) CAPI token."
|
804 |
msgstr ""
|
805 |
|
806 |
+
#: classes/admin/class-admin.php:3316
|
807 |
+
msgid "You have entered an invalid Meta (Facebook) CAPI test_event_code."
|
808 |
+
msgstr ""
|
809 |
+
|
810 |
+
#: classes/admin/class-admin.php:3324
|
811 |
msgid "You have entered an invalid Bing Ads UET tag ID. It only contains 7 to 9 digits."
|
812 |
msgstr ""
|
813 |
|
814 |
+
#: classes/admin/class-admin.php:3332
|
815 |
msgid "You have entered an invalid Twitter pixel ID. It only contains 5 to 7 lowercase letters and numbers."
|
816 |
msgstr ""
|
817 |
|
818 |
+
#: classes/admin/class-admin.php:3340
|
819 |
msgid "You have entered an invalid Pinterest pixel ID. It only contains 13 digits."
|
820 |
msgstr ""
|
821 |
|
822 |
+
#: classes/admin/class-admin.php:3348
|
823 |
msgid "You have entered an invalid Snapchat pixel ID."
|
824 |
msgstr ""
|
825 |
|
826 |
+
#: classes/admin/class-admin.php:3356
|
827 |
msgid "You have entered an invalid TikTok pixel ID."
|
828 |
msgstr ""
|
829 |
|
830 |
+
#: classes/admin/class-admin.php:3364
|
831 |
msgid "You have entered an invalid Hotjar site ID. It only contains 6 to 9 digits."
|
832 |
msgstr ""
|
833 |
|
834 |
+
#: classes/admin/class-admin.php:3390
|
835 |
msgid "You have entered the Scroll Tracker thresholds in the wrong format. It must be a list of comma separated percentages, like this \"25,50,75,100\""
|
836 |
msgstr ""
|
837 |
|
838 |
+
#: classes/admin/class-admin.php:3409
|
839 |
msgid "You have entered an invalid conversion name. Special characters, quotes and single quotes are not allowed due to security reasons."
|
840 |
msgstr ""
|
841 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: woocommerce, google analytics, google ads, facebook, conversion tracking,
|
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 6.0
|
6 |
Requires PHP: 7.3
|
7 |
-
Stable tag: 1.25.
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -220,6 +220,12 @@ You can send the link to the front page of your shop too if you think it would b
|
|
220 |
|
221 |
== Changelog ==
|
222 |
|
|
|
|
|
|
|
|
|
|
|
|
|
223 |
= 1.25.0 = 11.10.2022
|
224 |
|
225 |
* New: Added support for the WP AutoTerms plugin
|
@@ -918,7 +924,7 @@ Fix: Deliver proper updated wpm.jsx
|
|
918 |
* Tweak: Refactored browser e-commerce events into pubsub
|
919 |
|
920 |
* Fix: Under some circumstances rating_done is not set in the wgact_ratings option. This fix adds this default option.
|
921 |
-
* Fix: Fixed the
|
922 |
|
923 |
= 1.8.21 =
|
924 |
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 6.0
|
6 |
Requires PHP: 7.3
|
7 |
+
Stable tag: 1.25.1
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
220 |
|
221 |
== Changelog ==
|
222 |
|
223 |
+
= 1.25.1 = 25.10.2022
|
224 |
+
|
225 |
+
|
226 |
+
* Tweak: Switched getting tracking scripts from fetch back to jQuery.ajax() as fetch on some sites returned type errors.
|
227 |
+
|
228 |
+
|
229 |
= 1.25.0 = 11.10.2022
|
230 |
|
231 |
* New: Added support for the WP AutoTerms plugin
|
924 |
* Tweak: Refactored browser e-commerce events into pubsub
|
925 |
|
926 |
* Fix: Under some circumstances rating_done is not set in the wgact_ratings option. This fix adds this default option.
|
927 |
+
* Fix: Fixed the GA4 config command
|
928 |
|
929 |
= 1.8.21 =
|
930 |
|
wgact.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
* Developer URI: https://sweetcode.com
|
11 |
* Text Domain: woocommerce-google-adwords-conversion-tracking-tag
|
12 |
* Domain path: /languages
|
13 |
-
* * Version: 1.25.
|
14 |
*
|
15 |
* WC requires at least: 3.7
|
16 |
* WC tested up to: 6.9
|
@@ -19,7 +19,7 @@
|
|
19 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
20 |
*
|
21 |
**/
|
22 |
-
const WPM_CURRENT_VERSION = '1.25.
|
23 |
// TODO add option checkbox on uninstall and ask if user wants to delete options from db
|
24 |
|
25 |
if ( !defined( 'ABSPATH' ) ) {
|
10 |
* Developer URI: https://sweetcode.com
|
11 |
* Text Domain: woocommerce-google-adwords-conversion-tracking-tag
|
12 |
* Domain path: /languages
|
13 |
+
* * Version: 1.25.1
|
14 |
*
|
15 |
* WC requires at least: 3.7
|
16 |
* WC tested up to: 6.9
|
19 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
20 |
*
|
21 |
**/
|
22 |
+
const WPM_CURRENT_VERSION = '1.25.1' ;
|
23 |
// TODO add option checkbox on uninstall and ask if user wants to delete options from db
|
24 |
|
25 |
if ( !defined( 'ABSPATH' ) ) {
|