(function(){
'use strict';
if(typeof wc_facebook_pixel_data==='undefined'){
return;
}
var data=wc_facebook_pixel_data;
var firedEvents={};
function buildEventData(event){
return {
method: event.method||'track',
name: event.name,
params: event.params||{},
eventId: event.eventId||null
};}
function shouldSkipEvent(eventId){
return eventId&&firedEvents[eventId];
}
function markEventFired(eventId){
if(eventId){
firedEvents[eventId]=true;
}}
function logWarning(message, data){
if(typeof console!=='undefined'&&console.warn){
console.warn('[FB Pixel]', message, data);
}}
function fireEvent(event){
var eventData=buildEventData(event);
if(shouldSkipEvent(eventData.eventId)){
return;
}
if(typeof fbq!=='function'){
logWarning('fbq not available, skipping event:', eventData.name);
return;
}
try {
var params=eventData.params;
if(eventData.eventId){
fbq(eventData.method, eventData.name, params, {eventID: eventData.eventId});
}else{
fbq(eventData.method, eventData.name, params);
}
markEventFired(eventData.eventId);
} catch (e){
logWarning('Event error: ' + eventData.name, e);
}}
function fireQueuedEvents(){
var events=data.eventQueue;
if(!events||!Array.isArray(events)){
return;
}
for (var i=0; i < events.length; i++){
try {
fireEvent(events[i]);
} catch (e){
logWarning('fireQueuedEvents loop error:', e);
}}
data.eventQueue=[];
}
function init(){
if(typeof fbq==='function'){
fireQueuedEvents();
return;
}
var _fbq=window.fbq;
Object.defineProperty(window, 'fbq', {
configurable: true,
enumerable: true,
get: function(){ return _fbq; },
set: function(value){
_fbq=value;
if(typeof value==='function'){
Object.defineProperty(window, 'fbq', {
configurable: true,
enumerable: true,
writable: true,
value: value
});
setTimeout(fireQueuedEvents, 0);
}}
});
}
if(document.readyState==='complete'){
init();
}else{
window.addEventListener('load', init);
}})();