var GHEClient = /** @class */ (function () { function GHEClient(APIKey) { this.loadEmbed = function (target, url) { var targetDOM = document.getElementById(target); if (targetDOM == null) { console.error('Unable to locate DOM Target: ', target); return; } //if (this._pixelId && this._pixelId.trim() !== '') { // GHEClient.ensureMetaPixel(this._pixelId); //} //GHEClient.installBridge(); var iframeDOM = document.createElement('iframe'); //Populate the attributes for (var i = 0; i < targetDOM.attributes.length; i++) { //Check for src if (targetDOM.attributes[i].name.toLowerCase() != 'src' && targetDOM.attributes[i].name.toLowerCase() != 'allow') { //Append the attribute iframeDOM.setAttribute(targetDOM.attributes[i].name, targetDOM.attributes[i].value); } } if (this._campaignToken && this._campaignToken.trim() !== '') { url += '&ctc=' + encodeURIComponent(this._campaignToken); } else { //Get the campaign token var campaignToken = (new URLSearchParams(document.location.search)).get('ctc'); //Check for value if (campaignToken != null) { //Add the Token to the URL url += '&ctc=' + encodeURIComponent(campaignToken); } } url += '&parentOrigin=' + encodeURIComponent(window.location.origin); if (this._purchaseCode !== null) { //Add the Token to the URL url += '&purchaseCode=' + encodeURIComponent(this._purchaseCode); } else { //Check for purchase code var purchaseCode = (new URLSearchParams(document.location.search)).get('purchaseCode'); //Check for value if (purchaseCode != null) { //Add the Token to the URL url += '&purchaseCode=' + encodeURIComponent(purchaseCode); } } //Create the URL //iframeDOM.setAttribute('src', 'https://localhost:44301/Embed/API?APIKey=' + this._apiKey + '&' + url); //iframeDOM.setAttribute('src', 'https://demo.gearheadevents.com/Embed/API?APIKey=' + this._apiKey + '&' + url); iframeDOM.setAttribute('src', 'https://gearheadevents.com/Embed/API?APIKey=' + this._apiKey + '&' + url); //Set the allow Attribute iframeDOM.setAttribute('allow', 'payment *'); //Remove old DOM object and replace with new targetDOM.replaceWith(iframeDOM); }; this.Version = '2.0'; this._apiKey = APIKey; this._purchaseCode = ''; this._campaignToken = ''; this._pixelId = ''; var qs = new URLSearchParams(window.location.search); this._campaignToken = qs.get('CTC') || qs.get('ctc') || ''; this._purchaseCode = qs.get('PurchaseCode') || qs.get('purchaseCode') || ''; } GHEClient.normalizeOrigin = function (origin) { return typeof origin === 'string' ? origin.trim().toLowerCase() : ''; }; GHEClient.isAllowedOrigin = function (origin) { var normalized = GHEClient.normalizeOrigin(origin); for (var i = 0; i < GHEClient._allowedOrigins.length; i++) { if (GHEClient.normalizeOrigin(GHEClient._allowedOrigins[i]) === normalized) { return true; } } return false; }; GHEClient.nowMs = function () { return new Date().getTime(); }; GHEClient.cleanupDedupeCache = function () { var current = GHEClient.nowMs(); var keys = Object.keys(GHEClient._dedupeCache); for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (GHEClient._dedupeCache[key] <= current) { delete GHEClient._dedupeCache[key]; } } }; GHEClient.buildDedupeKey = function (msg) { var d = (msg && msg.data) ? msg.data : {}; if (msg && msg.eventType === 'page_view') { return ''; } return [ msg && msg.eventType ? msg.eventType : '', d.eventId || '', d.transactionId || '', d.orderId || '', d.contentId || '', d.contentName || '', d.value || 0, d.currency || '', d.quantity || 0, d.itemCount || 0 ].join('|'); }; GHEClient.isDuplicateMessage = function (msg) { if (msg && msg.eventType === 'page_view') { return false; } GHEClient.cleanupDedupeCache(); var key = GHEClient.buildDedupeKey(msg); if (!key.replace(/\|/g, '').length) { return false; } var current = GHEClient.nowMs(); var ttlMs = 30 * 60 * 1000; if (GHEClient._dedupeCache[key] && GHEClient._dedupeCache[key] > current) { return true; } GHEClient._dedupeCache[key] = current + ttlMs; return false; }; GHEClient.hasMeta = function () { return typeof window.fbq === 'function'; }; GHEClient.hasGA4 = function () { return typeof window.gtag === 'function'; }; GHEClient.hasDataLayer = function () { return Array.isArray(window.dataLayer); }; //static ensureMetaPixel(pixelId: string): void { // if (!pixelId || !pixelId.trim()) { // return; // } // var w: any = window; // var normalizedPixelId = pixelId.trim(); // if (!GHEClient._pixelInstalled) { // if (!w.fbq) { // var fbqFunc: any = function () { // if (fbqFunc.callMethod) { // fbqFunc.callMethod.apply(fbqFunc, arguments); // } else { // fbqFunc.queue.push(arguments); // } // }; // w.fbq = fbqFunc; // if (!w._fbq) { // w._fbq = fbqFunc; // } // fbqFunc.push = fbqFunc; // fbqFunc.loaded = true; // fbqFunc.version = '2.0'; // fbqFunc.queue = []; // var script = document.createElement('script'); // script.async = true; // script.src = 'https://connect.facebook.net/en_US/fbevents.js'; // var firstScript = document.getElementsByTagName('script')[0]; // if (firstScript && firstScript.parentNode) { // firstScript.parentNode.insertBefore(script, firstScript); // } else if (document.head) { // document.head.appendChild(script); // } // } // GHEClient._pixelInstalled = true; // } // if (!GHEClient._pixelInitIds[normalizedPixelId]) { // w.fbq('init', normalizedPixelId); // GHEClient._pixelInitIds[normalizedPixelId] = true; // } //} GHEClient.installBridge = function () { if (GHEClient._bridgeInstalled) { return; } window.addEventListener('message', function (event) { if (!GHEClient.isAllowedOrigin(event.origin)) { return; } var msg = event.data; if (!msg || msg.source !== 'GHE_EMBED') { return; } if (GHEClient.isDuplicateMessage(msg)) { return; } var data = msg.data || {}; var w = window; switch (msg.eventType) { case 'page_view': { if (GHEClient.hasMeta()) { w.fbq('track', 'PageView'); } if (GHEClient.hasGA4()) { w.gtag('event', 'page_view', { page_title: data.pageTitle || undefined, page_location: data.pageUrl || undefined, page_path: data.pagePath || undefined }); } if (GHEClient.hasDataLayer()) { w.dataLayer.push({ event: 'ghe_page_view', page_title: data.pageTitle || '', page_location: data.pageUrl || '', page_path: data.pagePath || '' }); } break; } case 'view_content': { if (GHEClient.hasMeta()) { w.fbq('track', 'ViewContent', { content_name: data.contentName || '', content_type: data.contentType || 'product', content_category: data.category || '', content_ids: data.contentId ? [data.contentId] : [], value: Number(data.value || 0), currency: data.currency || 'USD' }); } if (GHEClient.hasGA4()) { w.gtag('event', 'view_item', { currency: data.currency || 'USD', value: Number(data.value || 0), items: [{ item_id: data.contentId || '', item_name: data.contentName || '', item_category: data.category || '', item_category2: data.contentType || 'product' }] }); } if (GHEClient.hasDataLayer()) { w.dataLayer.push({ event: 'ghe_view_content', content_id: data.contentId || '', content_name: data.contentName || '', content_type: data.contentType || 'product', category: data.category || '', value: Number(data.value || 0), currency: data.currency || 'USD' }); } break; } case 'add_to_cart': { if (GHEClient.hasMeta()) { w.fbq('track', 'AddToCart', { content_name: data.contentName || '', content_type: data.contentType || 'product', content_ids: data.contentId ? [data.contentId] : [], value: Number(data.value || 0), currency: data.currency || 'USD', num_items: Number(data.quantity || 1) }); } if (GHEClient.hasGA4()) { w.gtag('event', 'add_to_cart', { currency: data.currency || 'USD', value: Number(data.value || 0), items: [{ item_id: data.contentId || '', item_name: data.contentName || '', quantity: Number(data.quantity || 1), price: Number(data.value || 0) }] }); } if (GHEClient.hasDataLayer()) { w.dataLayer.push({ event: 'ghe_add_to_cart', content_id: data.contentId || '', content_name: data.contentName || '', quantity: Number(data.quantity || 1), value: Number(data.value || 0), currency: data.currency || 'USD' }); } break; } case 'begin_checkout': { if (GHEClient.hasMeta()) { w.fbq('track', 'InitiateCheckout', { value: Number(data.value || 0), currency: data.currency || 'USD', num_items: Number(data.itemCount || 0) }); } if (GHEClient.hasGA4()) { w.gtag('event', 'begin_checkout', { currency: data.currency || 'USD', value: Number(data.value || 0) }); } if (GHEClient.hasDataLayer()) { w.dataLayer.push({ event: 'ghe_begin_checkout', order_id: data.orderId || '', item_count: Number(data.itemCount || 0), value: Number(data.value || 0), currency: data.currency || 'USD' }); } break; } case 'purchase': { var eventId = data.eventId || data.transactionId || data.orderId || ''; if (GHEClient.hasMeta()) { if (eventId) { w.fbq('track', 'Purchase', { value: Number(data.value || 0), currency: data.currency || 'USD', num_items: Number(data.itemCount || 0), order_id: data.orderId || '', event_name: data.eventName || '', content_type: 'product', contents: Array.isArray(data.contents) ? data.contents : [] }, { eventID: eventId }); } else { w.fbq('track', 'Purchase', { value: Number(data.value || 0), currency: data.currency || 'USD', num_items: Number(data.itemCount || 0), order_id: data.orderId || '', event_name: data.eventName || '', content_type: 'product', contents: Array.isArray(data.contents) ? data.contents : [] }); } } if (GHEClient.hasGA4()) { w.gtag('event', 'purchase', { transaction_id: data.transactionId || data.orderId || '', currency: data.currency || 'USD', value: Number(data.value || 0), tax: Number(data.tax || 0), shipping: Number(data.shipping || 0) }); } if (GHEClient.hasDataLayer()) { w.dataLayer.push({ event: 'ghe_purchase', event_id: eventId, order_id: data.orderId || '', transaction_id: data.transactionId || '', event_name: data.eventName || '', value: Number(data.value || 0), currency: data.currency || 'USD', tax: Number(data.tax || 0), shipping: Number(data.shipping || 0), item_count: Number(data.itemCount || 0), contents: Array.isArray(data.contents) ? data.contents : [] }); } break; } case 'custom': { var payload = data.payload || {}; var eventName = data.eventName || payload.eventName || ''; var customEventId = data.eventId || data.transactionId || data.orderId || ''; if (!eventName) { return; } if (GHEClient.hasMeta()) { if (customEventId) { w.fbq('trackCustom', eventName, payload, { eventID: customEventId }); } else { w.fbq('trackCustom', eventName, payload); } } if (GHEClient.hasGA4()) { w.gtag('event', eventName, payload); } if (GHEClient.hasDataLayer()) { w.dataLayer.push({ event: 'ghe_custom', ghe_custom_event_name: eventName, payload: payload }); } break; } default: break; } }, false); GHEClient._bridgeInstalled = true; }; GHEClient.prototype.SetPurchaseCode = function (code) { this._purchaseCode = code; return this; }; GHEClient.prototype.SetCampaignCode = function (code) { this._campaignToken = code; return this; }; GHEClient.prototype.SetMetaPixelId = function (pixelId) { this._pixelId = pixelId; return this; }; GHEClient.prototype.EmbedEvents = function (target) { this.loadEmbed(target, ''); }; GHEClient.prototype.EmbedEvent = function (target, eventId) { this.loadEmbed(target, 'EventId=' + encodeURIComponent(eventId)); }; GHEClient.prototype.EmbedItem = function (target, itemId) { this.loadEmbed(target, 'ItemId=' + encodeURIComponent(itemId)); }; GHEClient._bridgeInstalled = false; GHEClient._pixelInstalled = false; GHEClient._pixelInitIds = {}; GHEClient._dedupeCache = {}; GHEClient._allowedOrigins = [ 'https://demo.gearheadevents.com', 'https://www.demo.gearheadevents.com', 'https://gearheadevents.com', 'https://www.gearheadevents.com', 'https://localhost:44301' ]; return GHEClient; }()); //# sourceMappingURL=GHEClient.js.map